SmsConfig.php 9.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219
  1. <?php
  2. namespace app\admin\controller\sms;
  3. use app\admin\controller\AuthController;
  4. use think\facade\Route;
  5. use app\admin\controller\setting\SystemConfig;
  6. use app\admin\model\system\SystemConfig as ConfigModel;
  7. use crmeb\services\{FormBuilder, sms\Sms, UtilService, CacheService};
  8. /**
  9. * 短信配置
  10. * Class SmsConfig
  11. * @package app\admin\controller\sms
  12. */
  13. class SmsConfig extends AuthController
  14. {
  15. /**
  16. * @var Sms
  17. */
  18. protected $smsHandle;
  19. protected function initialize()
  20. {
  21. parent::initialize(); // TODO: Change the autogenerated stub
  22. $this->smsHandle = new Sms('yunxin', [
  23. 'sms_account' => sys_config('sms_account'),
  24. 'sms_token' => sys_config('sms_token'),
  25. 'site_url' => sys_config('site_url')
  26. ]);
  27. }
  28. /**
  29. * 展示配置
  30. * @return string
  31. * @throws \FormBuilder\exception\FormBuilderException
  32. * @throws \think\db\exception\DataNotFoundException
  33. * @throws \think\db\exception\ModelNotFoundException
  34. * @throws \think\exception\DbException
  35. */
  36. public function index()
  37. {
  38. [$type, $tab_id] = UtilService::getMore([
  39. ['type', 0],
  40. ['tab_id', 0]
  41. ], null, true);
  42. if (!$tab_id) $tab_id = 1;
  43. $this->assign('tab_id', $tab_id);
  44. $list = ConfigModel::getAll($tab_id);
  45. if ($type == 3) {//其它分类
  46. $config_tab = null;
  47. } else {
  48. $config_tab = ConfigModel::getConfigTabAll($type);
  49. foreach ($config_tab as $kk => $vv) {
  50. $arr = ConfigModel::getAll($vv['value'])->toArray();
  51. if (empty($arr)) {
  52. unset($config_tab[$kk]);
  53. }
  54. }
  55. }
  56. $formBuilder = ConfigModel::builder_config_from_data($list);
  57. // $formBuilder = [];
  58. // foreach ($list as $data) {
  59. // switch ($data['type']) {
  60. // case 'text'://文本框
  61. // switch ($data['input_type']) {
  62. // case 'input':
  63. // $data['value'] = json_decode($data['value'], true) ?: '';
  64. // $formBuilder[] = FormBuilder::input($data['menu_name'], $data['info'], $data['value'])->info($data['desc'])->placeholder($data['desc'])->col(13);
  65. // break;
  66. // case 'number':
  67. // $data['value'] = json_decode($data['value'], true) ?: 0;
  68. // $formBuilder[] = FormBuilder::number($data['menu_name'], $data['info'], $data['value'])->info($data['desc']);
  69. // break;
  70. // case 'dateTime':
  71. // $formBuilder[] = FormBuilder::dateTime($data['menu_name'], $data['info'], $data['value'])->info($data['desc']);
  72. // break;
  73. // case 'color':
  74. // $data['value'] = json_decode($data['value'], true) ?: '';
  75. // $formBuilder[] = FormBuilder::color($data['menu_name'], $data['info'], $data['value'])->info($data['desc']);
  76. // break;
  77. // }
  78. // break;
  79. // case 'textarea'://多行文本框
  80. // $data['value'] = json_decode($data['value'], true) ?: '';
  81. // $formBuilder[] = FormBuilder::textarea($data['menu_name'], $data['info'], $data['value'])->placeholder($data['desc'])->info($data['desc']);
  82. // break;
  83. // case 'radio'://单选框
  84. // $data['value'] = json_decode($data['value'], true) ?: '0';
  85. // $parameter = explode("\n", $data['parameter']);
  86. // $options = [];
  87. // if ($parameter) {
  88. // foreach ($parameter as $v) {
  89. // $pdata = explode("=>", $v);
  90. // $options[] = ['label' => $pdata[1], 'value' => $pdata[0]];
  91. // }
  92. // $formBuilder[] = FormBuilder::radio($data['menu_name'], $data['info'], $data['value'])->options($options)->info($data['desc']);
  93. // }
  94. // break;
  95. // case 'upload'://文件上传
  96. // switch ($data['upload_type']) {
  97. // case 1:
  98. // $data['value'] = json_decode($data['value'], true) ?: '';
  99. // $formBuilder[] = FormBuilder::frameImageOne($data['menu_name'], $data['info'], Url::buildUrl('admin/widget.images/index', array('fodder' => $data['menu_name'])), $data['value'])->icon('image')->width('100%')->height('500px')->info($data['desc']);
  100. // break;
  101. // case 2:
  102. // $data['value'] = json_decode($data['value'], true) ?: [];
  103. // $formBuilder[] = FormBuilder::frameImages($data['menu_name'], $data['info'], Url::buildUrl('admin/widget.images/index', array('fodder' => $data['menu_name'])), $data['value'])->maxLength(5)->icon('image')->width('100%')->height('500px')->info($data['desc']);
  104. // break;
  105. // case 3:
  106. // $data['value'] = json_decode($data['value'], true);
  107. // $formBuilder[] = FormBuilder::uploadFileOne($data['menu_name'], $data['info'], Url::buildUrl('file_upload'), $data['value'])->name('file')->info($data['desc']);
  108. // break;
  109. // }
  110. //
  111. // break;
  112. // case 'checkbox'://多选框
  113. // $data['value'] = json_decode($data['value'], true) ?: [];
  114. // $parameter = explode("\n", $data['parameter']);
  115. // $options = [];
  116. // if ($parameter) {
  117. // foreach ($parameter as $v) {
  118. // $pdata = explode("=>", $v);
  119. // $options[] = ['label' => $pdata[1], 'value' => $pdata[0]];
  120. // }
  121. // $formBuilder[] = FormBuilder::checkbox($data['menu_name'], $data['info'], $data['value'])->options($options)->info($data['desc']);
  122. // }
  123. // break;
  124. // case 'select'://多选框
  125. // $data['value'] = json_decode($data['value'], true) ?: [];
  126. // $parameter = explode("\n", $data['parameter']);
  127. // $options = [];
  128. // if ($parameter) {
  129. // foreach ($parameter as $v) {
  130. // $pdata = explode("=>", $v);
  131. // $options[] = ['label' => $pdata[1], 'value' => $pdata[0]];
  132. // }
  133. // $formBuilder[] = FormBuilder::select($data['menu_name'], $data['info'], $data['value'])->options($options)->info($data['desc']);
  134. // }
  135. // break;
  136. // }
  137. // }
  138. $form = FormBuilder::make_post_form('编辑配置', $formBuilder, Route::buildUrl('save_basics'));
  139. $this->assign(compact('form'));
  140. $this->assign('config_tab', $config_tab);
  141. $this->assign('list', $list);
  142. return $this->fetch();
  143. }
  144. /**
  145. * 保存配置
  146. */
  147. public function save_basics()
  148. {
  149. $request = app('request');
  150. if ($request->isPost()) {
  151. $post = $request->post();
  152. foreach ($post as $k => $v) {
  153. if (is_array($v)) {
  154. $res = ConfigModel::where('menu_name', $k)->column('upload_type', 'type');
  155. foreach ($res as $kk => $vv) {
  156. if ($kk == 'upload') {
  157. if ($vv == 1 || $vv == 3) {
  158. $post[$k] = $v[0];
  159. }
  160. }
  161. }
  162. }
  163. }
  164. foreach ($post as $k => $v) {
  165. ConfigModel::edit(['value' => json_encode($v)], $k, 'menu_name');
  166. }
  167. //添加公共短信模板
  168. $templateList = $this->smsHandle->publictemp([]);
  169. if ($templateList['status'] != 400){
  170. if ($templateList['data']['data'])
  171. foreach ($templateList['data']['data'] as $v) {
  172. if ($v['is_have'] == 0)
  173. $this->smsHandle->use($v['id'], $v['templateid']);
  174. }
  175. }
  176. CacheService::clear();
  177. return $this->successful('修改成功');
  178. }
  179. }
  180. /**
  181. * 退出
  182. * @return mixed
  183. * @throws \Psr\SimpleCache\InvalidArgumentException
  184. */
  185. public function logout()
  186. {
  187. $post = [
  188. 'sms_account' => '',
  189. 'sms_token' => ''
  190. ];
  191. foreach ($post as $k => $v) {
  192. if (is_array($v)) {
  193. $res = ConfigModel::where('menu_name', $k)->column('upload_type', 'type');
  194. foreach ($res as $kk => $vv) {
  195. if ($kk == 'upload') {
  196. if ($vv == 1 || $vv == 3) {
  197. $post[$k] = $v[0];
  198. }
  199. }
  200. }
  201. }
  202. }
  203. foreach ($post as $k => $v) {
  204. ConfigModel::edit(['value' => json_encode($v)], $k, 'menu_name');
  205. }
  206. CacheService::clear();
  207. return redirect(url('sms.smsConfig/index') . '?type=4&tab_id=18');
  208. }
  209. }