SystemConfigMerchant.php 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493
  1. <?php
  2. /**
  3. * @author: xaboy<365615158@qq.com>
  4. * @day: 2017/11/02
  5. */
  6. namespace app\models\system;
  7. use crmeb\basic\BaseModel;
  8. use crmeb\services\FormBuilder as Form;
  9. use crmeb\traits\ModelTrait;
  10. use app\models\system\SystemConfigTab as ConfigTabModel;
  11. class SystemConfigMerchant extends BaseModel
  12. {
  13. /**
  14. * 数据表主键
  15. * @var string
  16. */
  17. protected $pk = 'id';
  18. /**
  19. * 模型名称
  20. * @var string
  21. */
  22. protected $name = 'system_config_merchant';
  23. use ModelTrait;
  24. /**
  25. * @param $mer_id
  26. * @return SystemConfigMerchant
  27. */
  28. public static function merSet($mer_id)
  29. {
  30. return $mer_id ? self::where('mer_id', $mer_id) : new self;
  31. }
  32. // /**
  33. // * 修改单个配置
  34. // * @param $menu
  35. // * @param $value
  36. // * @return bool
  37. // */
  38. // public static function setValue($menu, $value)
  39. // {
  40. // if (empty($menu) || !($config_one = self::get(['menu_name' => $menu]))) return self::setErrorInfo('字段名称错误');
  41. // if ($config_one['type'] == 'radio' || $config_one['type'] == 'checkbox') {
  42. // $parameter = array();
  43. // $option = array();
  44. // $parameter = explode(',', $config_one['parameter']);
  45. // foreach ($parameter as $k => $v) {
  46. // if (isset($v) && !empty($v)) {
  47. // $option[$k] = explode('-', $v);
  48. // }
  49. // }
  50. // $value_arr = array();//选项的值
  51. // foreach ($option as $k => $v) {
  52. // foreach ($v as $kk => $vv)
  53. // if (!$kk) {
  54. // $value_arr[$k] = $vv;
  55. // }
  56. // }
  57. // $i = 0;//
  58. // if (is_array($value)) {
  59. // foreach ($value as $value_v) {
  60. // if (in_array($value_v, $value_arr)) {
  61. // $i++;
  62. // }
  63. // }
  64. // if (count($value) != $i) return self::setErrorInfo('输入的值不属于选项中的参数');
  65. // } else {
  66. // if (in_array($value, $value_arr)) {
  67. // $i++;
  68. // }
  69. // if (!$i) return self::setErrorInfo('输入的值不属于选项中的参数');
  70. // }
  71. // if ($config_one['type'] == 'radio' && is_array($value)) return self::setErrorInfo('单选按钮的值是字符串不是数组');
  72. // }
  73. // $bool = self::edit(['value' => json_encode($value)], $menu, 'menu_name');
  74. // return $bool;
  75. // }
  76. //
  77. // /**
  78. // * 获取单个参数配置
  79. // * @param $menu
  80. // * @return bool|mixed
  81. // * @throws \think\db\exception\DataNotFoundException
  82. // * @throws \think\db\exception\ModelNotFoundException
  83. // * @throws \think\exception\DbException
  84. // */
  85. // public static function getConfigValue($menu)
  86. // {
  87. // if (empty($menu) || !($config_one = self::where('menu_name', $menu)->find())) return false;
  88. // return json_decode($config_one['value'], true);
  89. // }
  90. //
  91. // /**
  92. // * 获得多个参数
  93. // * @param $menus
  94. // * @return array
  95. // */
  96. // public static function getMore($menus)
  97. // {
  98. // $menus = is_array($menus) ? implode(',', $menus) : $menus;
  99. // $list = self::where('menu_name', 'IN', $menus)->column('value', 'menu_name') ?: [];
  100. // foreach ($list as $menu => $value) {
  101. // $list[$menu] = json_decode($value, true);
  102. // }
  103. // return $list;
  104. // }
  105. //
  106. // /**
  107. // * @return array
  108. // */
  109. // public static function getAllConfig()
  110. // {
  111. // $list = self::column('value', 'menu_name') ?: [];
  112. // foreach ($list as $menu => $value) {
  113. // $list[$menu] = json_decode($value, true);
  114. // }
  115. // return $list;
  116. // }
  117. //
  118. // /**
  119. // * text 判断
  120. // * @param $data
  121. // * @return bool
  122. // */
  123. // public static function valiDateTextRole($data)
  124. // {
  125. // if (!$data['width']) return self::setErrorInfo('请输入文本框的宽度');
  126. // if ($data['width'] <= 0) return self::setErrorInfo('请输入正确的文本框的宽度');
  127. // return true;
  128. // }
  129. //
  130. // /**
  131. // * radio 和 checkbox规则的判断
  132. // * @param $data
  133. // * @return bool
  134. // */
  135. // public static function valiDateRadioAndCheckbox($data)
  136. // {
  137. // $parameter = array();
  138. // $option = array();
  139. // $option_new = array();
  140. // $data['parameter'] = str_replace("\r\n", "\n", $data['parameter']);//防止不兼容
  141. // $parameter = explode("\n", $data['parameter']);
  142. // if (count($parameter) < 2) return self::setErrorInfo('请输入正确格式的配置参数');
  143. // foreach ($parameter as $k => $v) {
  144. // if (isset($v) && !empty($v)) {
  145. // $option[$k] = explode('=>', $v);
  146. // }
  147. // }
  148. // if (count($option) < 2) return self::setErrorInfo('请输入正确格式的配置参数');
  149. // $bool = 1;
  150. // foreach ($option as $k => $v) {
  151. // $option_new[$k] = $option[$k][0];
  152. // foreach ($v as $kk => $vv) {
  153. // $vv_num = strlen($vv);
  154. // if (!$vv_num) {
  155. // $bool = 0;
  156. // }
  157. // }
  158. // }
  159. // if (!$bool) return self::setErrorInfo('请输入正确格式的配置参数');
  160. // $num1 = count($option_new);//提取该数组的数目
  161. // $arr2 = array_unique($option_new);//合并相同的元素
  162. // $num2 = count($arr2);//提取合并后数组个数
  163. // if ($num1 > $num2) return self::setErrorInfo('请输入正确格式的配置参数');
  164. // return true;
  165. // }
  166. //
  167. // /**
  168. // * textarea 判断
  169. // * @param $data
  170. // * @return bool
  171. // */
  172. // public static function valiDateTextareaRole($data)
  173. // {
  174. // if (!$data['width']) return self::setErrorInfo('请输入多行文本框的宽度');
  175. // if (!$data['high']) return self::setErrorInfo('请输入多行文本框的高度');
  176. // if ($data['width'] < 0) return self::setErrorInfo('请输入正确的多行文本框的宽度');
  177. // if ($data['high'] < 0) return self::setErrorInfo('请输入正确的多行文本框的宽度');
  178. // return true;
  179. // }
  180. //
  181. // /**
  182. // * 获取一数据
  183. // * @param $filed
  184. // * @param $value
  185. // * @return array|null|\think\Model
  186. // * @throws \think\db\exception\DataNotFoundException
  187. // * @throws \think\db\exception\ModelNotFoundException
  188. // * @throws \think\exception\DbException
  189. // */
  190. // public static function getOneConfig($filed, $value)
  191. // {
  192. // $where[$filed] = $value;
  193. // return self::where($where)->find();
  194. // }
  195. //
  196. // /**
  197. // * 获取配置分类
  198. // * @param $id
  199. // * @return \think\Collection
  200. // * @throws \think\db\exception\DataNotFoundException
  201. // * @throws \think\db\exception\ModelNotFoundException
  202. // * @throws \think\exception\DbException
  203. // */
  204. // public static function getAll($id, int $status = 1)
  205. // {
  206. // $where['config_tab_id'] = $id;
  207. // if ($status == 1) $where['status'] = $status;
  208. // return self::where($where)->order('sort desc,id asc')->select();
  209. // }
  210. //
  211. // /**
  212. // * 获取所有配置分类
  213. // * @param int $type
  214. // * @return array
  215. // */
  216. // public static function getConfigTabAll($type = 0)
  217. // {
  218. // $configAll = SystemConfigTab::getAll($type);
  219. // $pid = [];
  220. // if ($type == -1) $pid = array_column($configAll, 'pid');
  221. // $config_tab = array();
  222. // foreach ($configAll as $k => $v) {
  223. // if (!$v['info']) {
  224. // $config_tab[$k]['value'] = $v['id'];
  225. // $config_tab[$k]['label'] = $type == -1 ? $v['html'] . $v['title'] : $v['title'];
  226. // $config_tab[$k]['icon'] = $v['icon'];
  227. // $config_tab[$k]['type'] = $v['type'];
  228. // if (in_array($v['id'], $pid)) {
  229. // $config_tab[$k]['disabled'] = true;
  230. // }
  231. // }
  232. // }
  233. // return $config_tab;
  234. // }
  235. //
  236. // /**
  237. // * 获取所有配置分类
  238. // * @param int $type
  239. // * @return array
  240. // */
  241. // public static function getConfigChildrenTabAll($pid = 0)
  242. // {
  243. // $configAll = SystemConfigTab::getChildrenTab($pid);
  244. // $config_tab = [];
  245. // foreach ($configAll as $k => $v) {
  246. // if (!$v['info']) {
  247. // $config_tab[$k]['id'] = $v['id'];
  248. // $config_tab[$k]['label'] = $v['title'];
  249. // $config_tab[$k]['icon'] = $v['icon'];
  250. // $config_tab[$k]['type'] = $v['type'];
  251. // $config_tab[$k]['pid'] = $v['pid'];
  252. // }
  253. // }
  254. // return $config_tab;
  255. // }
  256. //
  257. // /**
  258. // * 选择类型
  259. // * @param string $type
  260. // * @return array
  261. // */
  262. // public static function radiotype($type = 'text')
  263. // {
  264. // return [
  265. // ['value' => 'text', 'label' => '文本框', 'disabled' => 1]
  266. // , ['value' => 'textarea', 'label' => '多行文本框', 'disabled' => 1]
  267. // , ['value' => 'radio', 'label' => '单选按钮', 'disabled' => 1]
  268. // , ['value' => 'upload', 'label' => '文件上传', 'disabled' => 1]
  269. // , ['value' => 'checkbox', 'label' => '多选按钮', 'disabled' => 1]
  270. // ];
  271. // }
  272. //
  273. // /**
  274. // * 选择文本框类型
  275. // * @param string $type
  276. // * @return array
  277. // */
  278. // public static function texttype($type = 'text')
  279. // {
  280. // return [
  281. // ['value' => 'input', 'label' => '文本框']
  282. // , ['value' => 'dateTime', 'label' => '时间']
  283. // , ['value' => 'color', 'label' => '颜色']
  284. // , ['value' => 'number', 'label' => '数字']
  285. // ];
  286. // }
  287. //
  288. // /**
  289. // * 选择文文件类型
  290. // * @param string $type
  291. // * @return array
  292. // */
  293. // public static function uploadtype($type = 'text')
  294. // {
  295. // return [['value' => 1, 'label' => '单图']
  296. // , ['value' => 2, 'label' => '多图']
  297. // , ['value' => 3, 'label' => '文件']];
  298. // }
  299. //
  300. // /**
  301. // * 字段状态
  302. // * @param string $type
  303. // * @return array
  304. // */
  305. // public static function formstatus($type = 'text')
  306. // {
  307. // return [['value' => 1, 'label' => '显示'], ['value' => 2, 'label' => '隐藏']];
  308. // }
  309. //
  310. // /**
  311. // * 文本框
  312. // * @param $tab_id
  313. // * @return array
  314. // * @throws \FormBuilder\exception\FormBuilderException
  315. // */
  316. // public static function createInputRule($tab_id)
  317. // {
  318. // $formbuider = array();
  319. // $formbuider[] = Form::hidden('type', 'text');
  320. // $formbuider[] = Form::select('config_tab_id', '分类', $tab_id)->setOptions(SystemConfigMerchant::getConfigTabAll(-1));
  321. // $formbuider[] = Form::select('input_type', '类型')->setOptions(self::texttype());
  322. // $formbuider[] = Form::input('info', '配置名称')->autofocus(1);
  323. // $formbuider[] = Form::input('menu_name', '字段变量')->placeholder('例如:site_url');
  324. // $formbuider[] = Form::input('desc', '配置简介');
  325. // $formbuider[] = Form::input('value', '默认值');
  326. // $formbuider[] = Form::number('width', '文本框宽(%)', 100);
  327. // $formbuider[] = Form::input('required', '验证规则')->placeholder('多个请用,隔开例如:required:true,url:true');
  328. // $formbuider[] = Form::number('sort', '排序', 0);
  329. // $formbuider[] = Form::radio('status', '状态', 1)->options(self::formstatus());
  330. // return $formbuider;
  331. // }
  332. //
  333. // /**
  334. // * TODO
  335. // * 多行文本框
  336. // * @param $tab_id
  337. // * @return array
  338. // * @throws \FormBuilder\exception\FormBuilderException
  339. // */
  340. // public static function createTextAreaRule($tab_id)
  341. // {
  342. // $formbuider = array();
  343. // $formbuider[] = Form::hidden('type', 'textarea');
  344. // $formbuider[] = Form::select('config_tab_id', '分类', $tab_id)->setOptions(SystemConfigMerchant::getConfigTabAll(-1));
  345. // $formbuider[] = Form::input('info', '配置名称')->autofocus(1);
  346. // $formbuider[] = Form::input('menu_name', '字段变量')->placeholder('例如:site_url');
  347. // $formbuider[] = Form::input('desc', '配置简介');
  348. // $formbuider[] = Form::textarea('value', '默认值');
  349. // $formbuider[] = Form::number('width', '文本框宽(%)', 100);
  350. // $formbuider[] = Form::number('high', '多行文本框高(%)', 5);
  351. // $formbuider[] = Form::number('sort', '排序', 0);
  352. // $formbuider[] = Form::radio('status', '状态', 1)->options(self::formstatus());
  353. // return $formbuider;
  354. // }
  355. //
  356. // /**
  357. // * 单选按钮
  358. // * @param $tab_id
  359. // * @return array
  360. // * @throws \FormBuilder\exception\FormBuilderException
  361. // */
  362. // public static function createRadioRule($tab_id)
  363. // {
  364. // $formbuider = array();
  365. // $formbuider[] = Form::hidden('type', 'radio');
  366. // $formbuider[] = Form::select('config_tab_id', '分类', $tab_id)->setOptions(SystemConfigMerchant::getConfigTabAll(-1));
  367. // $formbuider[] = Form::input('info', '配置名称')->autofocus(1);
  368. // $formbuider[] = Form::input('menu_name', '字段变量')->placeholder('例如:site_url');
  369. // $formbuider[] = Form::input('desc', '配置简介');
  370. // $formbuider[] = Form::textarea('parameter', '配置参数')->placeholder("参数方式例如:\n1=>男\n2=>女\n3=>保密");
  371. // $formbuider[] = Form::input('value', '默认值');
  372. // $formbuider[] = Form::number('sort', '排序', 0);
  373. // $formbuider[] = Form::radio('status', '状态', 1)->options(self::formstatus());
  374. // return $formbuider;
  375. // }
  376. //
  377. // /**
  378. // * 文件上传
  379. // * @param $tab_id
  380. // * @return array
  381. // * @throws \FormBuilder\exception\FormBuilderException
  382. // */
  383. // public static function createUploadRule($tab_id)
  384. // {
  385. // $formbuider = array();
  386. // $formbuider[] = Form::hidden('type', 'upload');
  387. // $formbuider[] = Form::select('config_tab_id', '分类', $tab_id)->setOptions(SystemConfigMerchant::getConfigTabAll(-1));
  388. // $formbuider[] = Form::input('info', '配置名称')->autofocus(1);
  389. // $formbuider[] = Form::input('menu_name', '字段变量')->placeholder('例如:site_url');
  390. // $formbuider[] = Form::input('desc', '配置简介');
  391. // $formbuider[] = Form::radio('upload_type', '上传类型', 1)->options(self::uploadtype());
  392. // $formbuider[] = Form::number('sort', '排序', 0);
  393. // $formbuider[] = Form::radio('status', '状态', 1)->options(self::formstatus());
  394. // return $formbuider;
  395. //
  396. // }
  397. //
  398. // /**
  399. // * 多选框
  400. // * @param $tab_id
  401. // * @return array
  402. // * @throws \FormBuilder\exception\FormBuilderException
  403. // */
  404. // public static function createCheckboxRule($tab_id)
  405. // {
  406. // $formbuider = array();
  407. // $formbuider[] = Form::hidden('type', 'checkbox');
  408. // $formbuider[] = Form::select('config_tab_id', '分类', $tab_id)->setOptions(SystemConfigMerchant::getConfigTabAll(-1));
  409. // $formbuider[] = Form::input('info', '配置名称')->autofocus(1);
  410. // $formbuider[] = Form::input('menu_name', '字段变量')->placeholder('例如:site_url');
  411. // $formbuider[] = Form::input('desc', '配置简介');
  412. // $formbuider[] = Form::textarea('parameter', '配置参数')->placeholder("参数方式例如:\n1=>白色\n2=>红色\n3=>黑色");
  413. //// $formbuider[] = Form::input('value','默认值');
  414. // $formbuider[] = Form::number('sort', '排序', 0);
  415. // $formbuider[] = Form::radio('status', '状态', 1)->options(self::formstatus());
  416. // return $formbuider;
  417. // }
  418. //
  419. // /**
  420. // * 下拉框
  421. // * @param $tab_id
  422. // * @return array
  423. // * @throws \FormBuilder\exception\FormBuilderException
  424. // */
  425. // public static function createSelectRule($tab_id)
  426. // {
  427. // $formbuider = array();
  428. // $formbuider[] = Form::hidden('type', 'select');
  429. // $formbuider[] = Form::select('config_tab_id', '分类', $tab_id)->setOptions(SystemConfigMerchant::getConfigTabAll(-1));
  430. // $formbuider[] = Form::input('info', '配置名称')->autofocus(1);
  431. // $formbuider[] = Form::input('menu_name', '字段变量')->placeholder('例如:site_url');
  432. // $formbuider[] = Form::input('desc', '配置简介');
  433. // $formbuider[] = Form::textarea('parameter', '配置参数')->placeholder("参数方式例如:\n1=>白色\n2=>红色\n3=>黑色");
  434. //// $formbuider[] = Form::input('value','默认值');
  435. // $formbuider[] = Form::number('sort', '排序', 0);
  436. // $formbuider[] = Form::radio('status', '状态', 1)->options(self::formstatus());
  437. // return $formbuider;
  438. // }
  439. //
  440. //
  441. // /**
  442. // * 配置短信信息
  443. // * @param $account
  444. // * @param $token
  445. // * @return bool
  446. // */
  447. // public static function setConfigSmsInfo($account, $token)
  448. // {
  449. // self::beginTrans();
  450. // $res1 = self::where('menu_name', 'sms_account')->where('value', '"' . $account . '"')->count();
  451. // if (!$res1) $res1 = self::where('menu_name', 'sms_account')->update(['value' => '"' . $account . '"']);
  452. // $res2 = self::where('menu_name', 'sms_token')->where('value', '"' . $token . '"')->count();
  453. // if (!$res2) $res2 = self::where('menu_name', 'sms_token')->update(['value' => '"' . $token . '"']);
  454. // $res = $res1 && $res2;
  455. // self::checkTrans($res);
  456. // return $res;
  457. // }
  458. //
  459. // public static function getPageList($where)
  460. // {
  461. // $model = new self;
  462. // $model = $model->where('config_tab_id', $where['tab_id'])->where('status', 1);
  463. // $list = $model->page((int)$where['page'], (int)$where['limit'])
  464. // ->order('sort desc,id asc')
  465. // ->select()
  466. // ->each(function ($item) {
  467. // $item['value'] = json_decode($item['value'], true) ?: '';
  468. // if ($item['type'] == 'radio' || $item['type'] == 'checkbox') {
  469. // $item['value'] = ConfigTabModel::getRadioOrCheckboxValueInfo($item['menu_name'], $item['value']);
  470. // }
  471. // if ($item['type'] == 'upload' && !empty($item['value'])) {
  472. // $srr = explode(',', $item['value']);
  473. // foreach ($srr as $key => $value) {
  474. // $tidy_srr[$key]['filepath'] = $value;
  475. // $tidy_srr[$key]['filename'] = basename($value);
  476. // }
  477. // $item['value'] = $tidy_srr;
  478. //// if ($item['upload_type'] == 1 || $item['upload_type'] == 3) {
  479. //// }
  480. // }
  481. // });
  482. // $count = $model->count();
  483. // return compact('count', 'list');
  484. // }
  485. }