DictController.php 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. <?php
  2. namespace plugin\admin\app\controller;
  3. use plugin\admin\app\model\Dict;
  4. use plugin\admin\app\model\Option;
  5. use support\exception\BusinessException;
  6. use support\Request;
  7. use support\Response;
  8. use Throwable;
  9. /**
  10. * 字典管理
  11. */
  12. class DictController extends Base
  13. {
  14. /**
  15. * 不需要授权的方法
  16. */
  17. protected $noNeedAuth = ['get'];
  18. /**
  19. * 浏览
  20. * @return Response
  21. * @throws Throwable
  22. */
  23. public function index(): Response
  24. {
  25. return raw_view('dict/index');
  26. }
  27. /**
  28. * 查询
  29. * @param Request $request
  30. * @return Response
  31. */
  32. public function select(Request $request): Response
  33. {
  34. $name = $request->get('name', '');
  35. if ($name && is_string($name)) {
  36. $items = Option::where('name', 'like', "dict_$name%")->get()->toArray();
  37. } else {
  38. $items = Option::where('name', 'like', 'dict_%')->get()->toArray();
  39. }
  40. foreach ($items as &$item) {
  41. $item['name'] = Dict::optionNameTodictName($item['name']);
  42. }
  43. return $this->json(0, 'ok', $items);
  44. }
  45. /**
  46. * 插入
  47. * @param Request $request
  48. * @return Response
  49. * @throws BusinessException|Throwable
  50. */
  51. public function insert(Request $request): Response
  52. {
  53. if ($request->method() === 'POST') {
  54. $name = $request->post('name');
  55. if (Dict::get($name)) {
  56. return $this->json(1, '字典已经存在');
  57. }
  58. $values = (array)$request->post('value', []);
  59. Dict::save($name, $values);
  60. }
  61. return raw_view('dict/insert');
  62. }
  63. /**
  64. * 更新
  65. * @param Request $request
  66. * @return Response
  67. * @throws BusinessException|Throwable
  68. */
  69. public function update(Request $request): Response
  70. {
  71. if ($request->method() === 'POST') {
  72. $name = $request->post('name');
  73. if (!Dict::get($name)) {
  74. return $this->json(1, '字典不存在');
  75. }
  76. Dict::save($name, $request->post('value'));
  77. }
  78. return raw_view('dict/update');
  79. }
  80. /**
  81. * 删除
  82. * @param Request $request
  83. * @return Response
  84. */
  85. public function delete(Request $request): Response
  86. {
  87. $names = (array)$request->post('name');
  88. Dict::delete($names);
  89. return $this->json(0);
  90. }
  91. /**
  92. * 获取
  93. * @param Request $request
  94. * @param $name
  95. * @return Response
  96. */
  97. public function get(Request $request, $name): Response
  98. {
  99. return $this->json(0, 'ok', (array)Dict::get($name));
  100. }
  101. }