Config.php 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. <?php
  2. namespace app\admin\controller;
  3. use app\BaseController;
  4. use app\admin\model\Config as ConfigModel;
  5. use app\admin\validate\ConfigValidate;
  6. use Exception;
  7. use think\facade\Db;
  8. use think\facade\Cache;
  9. class Config extends BaseController
  10. {
  11. /**
  12. * @api {get} /config/list 系统参数列表
  13. *
  14. */
  15. public function list()
  16. {
  17. $flag = $this->request->param('flag', 1);
  18. $where['flag'] = $flag;
  19. if ($flag == 3) {
  20. $where['language_code'] = $this->request->param('language_code', $this->lang);
  21. }
  22. $list = ConfigModel::where($where)->select();
  23. $select = ConfigModel::getSelect($this->lang, true);
  24. $google_key = getEnvValue('GOOGLE_KEY'); //谷歌翻译的密钥
  25. foreach ($list as $k => &$item) {
  26. if (isset($select[$item['field']])) {
  27. $item['select'] = $select[$item['field']];
  28. }
  29. if ($item['type'] == 'rich_text') {
  30. $item['val'] = $item['val'] ? json_decode($item['val'], true) : '';
  31. }
  32. if ($item['field'] == 'translate' && empty($google_key)) {
  33. //隐藏翻译开关的数据
  34. unset($list[$k]);
  35. }
  36. }
  37. return $this->success(['count' => count($list), 'list' => $list]);
  38. }
  39. /**
  40. * @api {post} /config/update 更新系统配置
  41. */
  42. function update()
  43. {
  44. Db::startTrans();
  45. try {
  46. $id = $this->request->post('id');
  47. if ($id) {
  48. $params = (new ConfigValidate())->post()->goCheck('edit');
  49. } else {
  50. $params = (new ConfigValidate())->post()->goCheck('add');
  51. }
  52. $params['language_code'] = $this->request->post('language_code') ?? 'zh';
  53. if (!empty($id)) {
  54. $exist = ConfigModel::where('id', $id)->find();
  55. if (!$exist) {
  56. return $this->error('配置不存在');
  57. }
  58. $params['val'] = $exist['type'] == 'rich_text' ? json_encode($params['val']) : $params['val'];
  59. $params['field'] = $exist['field'];
  60. ConfigModel::where('id', $id)->update($params);
  61. } else {
  62. $params['val'] = $params['type'] == 'rich_text' ? json_encode($params['val']) : $params['val'];
  63. ConfigModel::create($params);
  64. }
  65. Db::commit();
  66. } catch (Exception $e) {
  67. Db::rollBack();
  68. return $this->error($e->getMessage());
  69. }
  70. //删除缓存
  71. Cache::delete('systemInfo_config');
  72. //删除客服接数量上限的缓存
  73. if (isset($params['field']) && $params['field'] == 'kefu_chat_max') {
  74. Cache::delete('config_kefu_chat_max');
  75. }
  76. return $this->success();
  77. }
  78. }