DeptPremisesController.php 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. <?php
  2. namespace app\admin\controller\marketing;
  3. use app\admin\service\sys_manage\DeptService;
  4. use app\admin\validate\sys_manage\DeptValidate;
  5. use app\controller\Curd;
  6. use app\model\SysDept;
  7. use support\Db;
  8. use support\exception\BusinessException;
  9. use support\Request;
  10. use support\Response;
  11. class DeptPremisesController extends Curd
  12. {
  13. public function __construct()
  14. {
  15. $this->model = new SysDept();
  16. $this->validate = true;
  17. $this->validateClass = new DeptValidate();
  18. }
  19. /**
  20. * @Desc 营业场所列表
  21. * @Author Gorden
  22. * @Date 2024/3/7 13:17
  23. *
  24. * @param Request $request
  25. * @return Response
  26. * @throws BusinessException
  27. */
  28. public function select(Request $request): Response
  29. {
  30. [$where, $format, $limit, $field, $order] = $this->selectInput($request);
  31. $order = $request->get('order', 'desc');
  32. $field = $request->get('field', 'dept_addtimes');
  33. $where['dept_super_id'] = 0;
  34. $where['dept_category'] = '营业场所';
  35. $query = $this->doSelect($where, $field, $order);
  36. return $this->doFormat($query, $format, $limit);
  37. }
  38. public function afterInfoQuery($item)
  39. {
  40. if (!empty($item->dept_city)) {
  41. $item->dept_city = explode(',', $item->dept_city);
  42. }
  43. return $item;
  44. }
  45. /**
  46. * @Desc 添加营业场所
  47. * @Author Gorden
  48. * @Date 2024/3/7 11:48
  49. *
  50. * @param Request $request
  51. * @return Response
  52. */
  53. public function insert(Request $request): Response
  54. {
  55. if ($this->validate && !$this->validateClass->scene('add_premises')->check($request->post())) {
  56. return json_fail($this->validateClass->getError());
  57. }
  58. // 验证编号是否存在
  59. if (SysDept::checkExist('营业场所', 'dept_code', $request->post('dept_code'))) {
  60. return json_fail('编号重复,请重新输入');
  61. }
  62. Db::beginTransaction();
  63. try {
  64. $data = $this->insertInput($request);
  65. $data['dept_super_id'] = 0;
  66. $deptId = $this->doInsert($data);
  67. if (!$deptId) {
  68. throw new BusinessException('创建营业场所失败');
  69. }
  70. // 更新部门path
  71. $path = '/0/' . $deptId . '/';
  72. if (!SysDept::where('dept_id', $deptId)->update(['dept_super_path' => $path])) {
  73. throw new BusinessException('创建营业场所失败');
  74. }
  75. Db::commit();
  76. } catch (BusinessException $customException) {
  77. Db::rollBack();
  78. return json_fail($customException->getMessage());
  79. } catch (\Exception $exception) {
  80. Db::rollBack();
  81. return json_fail('创建营业场所失败');
  82. }
  83. return json_success('success');
  84. }
  85. /**
  86. * @Desc 更新
  87. * @Author Gorden
  88. * @Date 2024/3/7 13:14
  89. *
  90. * @param Request $request
  91. * @return Response
  92. */
  93. public function update(Request $request): Response
  94. {
  95. if ($this->validate && !$this->validateClass->scene('update_premises')->check($request->post())) {
  96. return json_fail($this->validateClass->getError());
  97. }
  98. try {
  99. [$id, $data] = $this->updateInput($request);
  100. $this->doUpdate($id, $data);
  101. } catch (BusinessException $customException) {
  102. return json_fail($customException->getMessage());
  103. } catch (\Exception $e) {
  104. return json_fail('数据更新失败');
  105. }
  106. return json_success('success');
  107. }
  108. }