SalesmanController.php 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. <?php
  2. namespace app\admin\controller\medical;
  3. use support\exception\BusinessException;
  4. use support\Request;
  5. use app\admin\validate\medical\SalesmanValidate;
  6. use app\controller\Curd;
  7. use app\model\MedicalSalesman;
  8. use support\Response;
  9. class SalesmanController extends Curd
  10. {
  11. public function __construct()
  12. {
  13. $this->model = new MedicalSalesman();
  14. $this->validate = true;
  15. $this->validateClass = new SalesmanValidate();
  16. }
  17. /**
  18. * @Desc insert 数据处理
  19. * @Author Gorden
  20. * @Date 2024/3/4 9:57
  21. *
  22. * @param Request $request
  23. * @return array
  24. * @throws \support\exception\BusinessException
  25. */
  26. protected function insertInput(Request $request): array
  27. {
  28. $data = $this->inputFilter($request->post());
  29. // 验证手机号是否已存在
  30. if ($this->model->phoneExist($data['salesman_phone'])) {
  31. throw new BusinessException('手机号已存在');
  32. }
  33. // 用户已存在
  34. if ($this->model->usernameExist($data['salesman_username'])) {
  35. throw new BusinessException('用户名已存在');
  36. }
  37. return $data;
  38. }
  39. /**
  40. * @Desc 执行写入数据
  41. * @Author Gorden
  42. * @Date 2024/3/4 9:39
  43. *
  44. * @param $data
  45. * @return mixed|null
  46. */
  47. protected function doInsert($data)
  48. {
  49. $data['salesman_salt'] = random_string(6);
  50. $data['salesman_password'] = md5(sha1($data['salesman_password'] . $data['salesman_salt']));
  51. $primary_key = $this->model->getKeyName();
  52. $model_class = get_class($this->model);
  53. $model = new $model_class;
  54. foreach ($data as $key => $val) {
  55. $model->{$key} = $val;
  56. }
  57. $model->save();
  58. return $primary_key ? $model->$primary_key : null;
  59. }
  60. /**
  61. * @Desc 数据处理
  62. * @Author Gorden
  63. * @Date 2024/3/4 10:17
  64. *
  65. * @param Request $request
  66. * @return array
  67. * @throws BusinessException
  68. */
  69. protected function updateInput(Request $request): array
  70. {
  71. $primary_key = $this->model->getKeyName();
  72. $id = $request->post($primary_key);
  73. $data = $this->inputFilter($request->post());
  74. $model = $this->model->find($id);
  75. if (!$model) {
  76. throw new BusinessException('记录不存在', 2);
  77. }
  78. // 其他账号下是否存在当前手机号
  79. if ($model->phoneIsInOtherAccountExist($data['salesman_phone'], $data['salesman_id'])) {
  80. throw new BusinessException('手机号已存在');
  81. }
  82. // 其他账号下是否存在当前用户名
  83. if ($model->usernameIsInOtherAccountExist($data['salesman_username'], $data['salesman_id'])) {
  84. throw new BusinessException('用户名已存在');
  85. }
  86. $passwordFiled = 'salesman_password';
  87. if (isset($data[$passwordFiled])) {
  88. // 密码为空,则不更新密码
  89. if ($data[$passwordFiled] === '') {
  90. unset($data[$passwordFiled]);
  91. } else {
  92. $data[$passwordFiled] = md5(sha1($data[$passwordFiled] . $model->salesman_slat));
  93. }
  94. }
  95. unset($data[$primary_key]);
  96. return [$id, $data];
  97. }
  98. /**
  99. * @Desc 修改状态
  100. * @Author Gorden
  101. * @Date 2024/3/4 10:20
  102. *
  103. * @param Request $request
  104. * @return \support\Response
  105. */
  106. public function updateStatus(Request $request)
  107. {
  108. return $this->updateField($request->post('salesman_id'), 'salesman_status', $request->post('salesman_status'));
  109. }
  110. /**
  111. * @Desc 软删除
  112. * @Author Gorden
  113. * @Date 2024/3/4 10:22
  114. *
  115. * @param Request $request
  116. * @return Response
  117. * @throws BusinessException
  118. */
  119. public function delete(Request $request): Response
  120. {
  121. $ids = $this->deleteInput($request);
  122. $this->doSoftDelete($ids, ['salesman_is_del' => 1]);
  123. return json_success('success');
  124. }
  125. }