MasterWorkerTeamLogic.php 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154
  1. <?php
  2. namespace app\workerapi\logic;
  3. use app\adminapi\logic\master_worker_register\MasterWorkerRegisterLogic;
  4. use app\common\enum\worker\WorkerAccountLogEnum;
  5. use app\common\enum\YesNoEnum;
  6. use app\common\logic\BaseLogic;
  7. use app\common\model\bank_account\BankAccount;
  8. use app\common\model\master_worker\MasterWorker;
  9. use app\common\model\master_worker\MasterWorkerAccountLog;
  10. use app\common\model\master_worker\MasterWorkerAgree;
  11. use app\common\model\master_worker\MasterWorkerInfo;
  12. use app\common\model\master_worker\MasterWorkerTeam;
  13. use app\common\model\works\ServiceWork;
  14. use app\common\service\FileService;
  15. use app\workerapi\lists\ServiceWorkLists;
  16. use think\Exception;
  17. use think\facade\Config;
  18. use think\facade\Db;
  19. /**
  20. * @author 林海涛
  21. * @date 2024/7/10 下午1:45
  22. */
  23. class MasterWorkerTeamLogic extends BaseLogic
  24. {
  25. public static function getDetail(int $teamId,int $masterWorkerId)
  26. {
  27. try {
  28. $team = MasterWorkerTeam::where('id',$teamId)->where('master_worker_id',$masterWorkerId)->findOrEmpty();
  29. if ($team->isEmpty()) {
  30. throw new \Exception('团队不存在');
  31. }
  32. return $team->toArray();
  33. } catch (\Exception $e) {
  34. self::setError($e->getMessage());
  35. return [];
  36. }
  37. }
  38. public static function addTeamMember(array $params,int $masterWorkerId)
  39. {
  40. try {
  41. $team = MasterWorkerTeam::where('master_worker_id',$masterWorkerId)->findOrEmpty();
  42. if ($team->isEmpty()) {
  43. throw new \Exception('团队不存在');
  44. }
  45. $masterWorker = \app\common\model\master_worker\MasterWorker::where('mobile',$params['mobile'])->findOrEmpty();
  46. if (!$masterWorker->isEmpty()) {
  47. throw new \Exception('该手机号已占用');
  48. }
  49. // 新增工程师
  50. $mwId = MasterWorkerRegisterLogic::createMasterWorker([
  51. 'mobile' => $params['mobile'],
  52. 'lon' => isset($params['lon'])?$params['lon']:0,
  53. 'lat' => isset($params['lat'])?$params['lat']:0,
  54. ]);
  55. MasterWorker::where('id',$mwId)->update(['team_id'=>$team->id,'team_role'=>2]);
  56. return true;
  57. } catch (\Exception $e) {
  58. self::setError($e->getMessage());
  59. return false;
  60. }
  61. }
  62. public static function getMemberList(int $teamId,int $masterWorkerId)
  63. {
  64. try {
  65. $team = MasterWorkerTeam::where('id',$teamId)->where('master_worker_id',$masterWorkerId)->findOrEmpty();
  66. if ($team->isEmpty()) {
  67. throw new \Exception('团队不存在');
  68. }
  69. return MasterWorker::where('team_id',$teamId)->where('team_role',2)->field(['id','nickname','avatar','mobile','real_name','team_role'])->select()->toArray();
  70. } catch (\Exception $e) {
  71. self::setError($e->getMessage());
  72. return [];
  73. }
  74. }
  75. /**
  76. * 分配给团队成员
  77. * @param int $teamId
  78. * @param int $masterWorkerId
  79. * @return array
  80. */
  81. public static function allocation($params,$userInfo){
  82. Db::startTrans();
  83. try {
  84. $work = ServiceWork::findOrEmpty($params['work_id']);
  85. if($work->isEmpty()){
  86. throw new Exception('工单不存在');
  87. }
  88. if($work->work_status != 1 ){
  89. throw new \Exception('工单已被领取,不可分配');
  90. }
  91. if($work->master_worker_id == $params['master_worker_id']){
  92. throw new \Exception('分配的工程师相同');
  93. }
  94. $worker = MasterWorker::where(['id'=>$params['master_worker_id'],'team_id' =>$userInfo['team_id'],'team_role' =>2,'is_disable' =>0])->findOrEmpty();
  95. if($worker->isEmpty()){
  96. throw new \Exception('成员工程师不存在或被禁用');
  97. }
  98. if($worker->master_worker_id){
  99. MasterWorker::setWorktotal('dec',$worker->master_worker_id);
  100. }
  101. $work->master_worker_id = $params['master_worker_id'];
  102. $work->work_status = 1;
  103. $work->dispatch_time = time();
  104. MasterWorker::setWorktotal('inc',$params['master_worker_id']);
  105. $work->save();
  106. $work_log = [
  107. 'work_id'=>$work->id,
  108. 'master_worker_id'=>$work->master_worker_id,
  109. 'opera_log'=>'团队负责人['.$userInfo['user_id'].']'.$userInfo['real_name'].'于'.date('Y-m-d H:i:s',time()).'分配了工程师成员'.'编号['.$worker->worker_number.']'.$worker->real_name
  110. ];
  111. ServiceWorkerAllocateWorkerLogic::add($work_log);
  112. Db::commit();
  113. return true;
  114. }catch(\Exception $e){
  115. Db::rollback();
  116. self::setError($e->getMessage());
  117. return false;
  118. }
  119. }
  120. /**
  121. * 团队成员工单统计
  122. * @param int $teamId
  123. * @param int $masterWorkerId
  124. * @return array
  125. */
  126. public static function MemberWorkStatistics($userInfo){
  127. return ServiceWork::whereIn('master_worker_id',
  128. MasterWorker::where('team_id', $userInfo['team_id'])->where('team_role', 2)->column('id')
  129. )->group('work_status')
  130. ->field('work_status, COUNT(id) as count_num')
  131. ->append(['work_status_text'])
  132. ->order('work_status asc')
  133. ->select()
  134. ->toArray();
  135. }
  136. public static function MemberWorkLists($userInfo){
  137. }
  138. }