SystemConfigGroupController.php 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | saiadmin [ saiadmin快速开发框架 ]
  4. // +----------------------------------------------------------------------
  5. // | Author: sai <1430792918@qq.com>
  6. // +----------------------------------------------------------------------
  7. namespace plugin\saiadmin\app\controller\system;
  8. use plugin\saiadmin\app\cache\ConfigCache;
  9. use plugin\saiadmin\basic\BaseController;
  10. use plugin\saiadmin\app\logic\system\SystemConfigGroupLogic;
  11. use plugin\saiadmin\app\validate\system\SystemConfigGroupValidate;
  12. use plugin\saiadmin\service\Permission;
  13. use plugin\saiadmin\utils\Arr;
  14. use support\Request;
  15. use support\Response;
  16. use plugin\saiadmin\service\EmailService;
  17. use plugin\saiadmin\app\model\system\SystemMail;
  18. /**
  19. * 配置控制器
  20. */
  21. class SystemConfigGroupController extends BaseController
  22. {
  23. /**
  24. * 构造
  25. */
  26. public function __construct()
  27. {
  28. $this->logic = new SystemConfigGroupLogic();
  29. $this->validate = new SystemConfigGroupValidate;
  30. parent::__construct();
  31. }
  32. /**
  33. * 数据列表
  34. * @param Request $request
  35. * @return Response
  36. */
  37. #[Permission('系统设置列表', 'core:config:index')]
  38. public function index(Request $request) : Response
  39. {
  40. $where = $request->more([
  41. ['name', ''],
  42. ['code', ''],
  43. ]);
  44. $query = $this->logic->search($where);
  45. $data = $this->logic->getAll($query);
  46. return $this->success($data);
  47. }
  48. /**
  49. * 保存数据
  50. * @param Request $request
  51. * @return Response
  52. */
  53. #[Permission('系统设置管理', 'core:config:edit')]
  54. public function save(Request $request): Response
  55. {
  56. $data = $request->post();
  57. $this->validate('save', $data);
  58. $result = $this->logic->add($data);
  59. if ($result) {
  60. return $this->success('添加成功');
  61. } else {
  62. return $this->fail('添加失败');
  63. }
  64. }
  65. /**
  66. * 更新数据
  67. * @param Request $request
  68. * @return Response
  69. */
  70. #[Permission('系统设置管理', 'core:config:edit')]
  71. public function update(Request $request): Response
  72. {
  73. $data = $request->post();
  74. $this->validate('update', $data);
  75. $result = $this->logic->edit($data['id'], $data);
  76. if ($result) {
  77. ConfigCache::clearConfig($data['code']);
  78. return $this->success('修改成功');
  79. } else {
  80. return $this->fail('修改失败');
  81. }
  82. }
  83. /**
  84. * 删除数据
  85. * @param Request $request
  86. * @return Response
  87. */
  88. #[Permission('系统设置管理', 'core:config:edit')]
  89. public function destroy(Request $request) : Response
  90. {
  91. $ids = $request->post('ids', '');
  92. if (empty($ids)) {
  93. return $this->fail('请选择要删除的数据');
  94. }
  95. $result = $this->logic->destroy($ids);
  96. if ($result) {
  97. return $this->success('删除成功');
  98. } else {
  99. return $this->fail('删除失败');
  100. }
  101. }
  102. /**
  103. * 邮件测试
  104. * @param Request $request
  105. * @return Response
  106. */
  107. #[Permission('系统设置修改', 'core:config:update')]
  108. public function email(Request $request) : Response
  109. {
  110. $email = $request->input('email', '');
  111. if (empty($email)) {
  112. return $this->fail('请输入邮箱');
  113. }
  114. $subject = "测试邮件";
  115. $code = "9527";
  116. $content = "<h1>验证码:{code}</h1><p>这是一封测试邮件,请忽略</p>";
  117. $template = [
  118. 'code' => $code
  119. ];
  120. $config = EmailService::getConfig();
  121. $model = SystemMail::create([
  122. 'gateway' => Arr::getConfigValue($config,'Host'),
  123. 'from' => Arr::getConfigValue($config,'From'),
  124. 'email' => $email,
  125. 'code' => $code,
  126. ]);
  127. try {
  128. $result = EmailService::sendByTemplate($email, $subject, $content, $template);
  129. if (!empty($result)) {
  130. $model->status = 'failure';
  131. $model->response = $result;
  132. $model->save();
  133. return $this->fail('发送失败,请查看日志');
  134. } else {
  135. $model->status = 'success';
  136. $model->save();
  137. return $this->success([], '发送成功');
  138. }
  139. } catch (\Exception $e) {
  140. $model->status = 'failure';
  141. $model->response = $e->getMessage();
  142. $model->save();
  143. return $this->fail($e->getMessage());
  144. }
  145. }
  146. }