ReturnWorkLogic.php 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. <?php
  2. namespace app\api\logic;
  3. use app\common\logic\BaseLogic;
  4. use app\common\model\master_worker\MasterWorker;
  5. use app\common\model\works\IssueWork;
  6. use app\common\model\works\ReturnWork;
  7. use think\db\Query;
  8. use think\facade\Db;
  9. /**
  10. * @author 林海涛
  11. * @date 2024/7/29 下午4:26
  12. */
  13. class ReturnWorkLogic extends BaseLogic
  14. {
  15. public static function lists($params)
  16. {
  17. return ReturnWork::with(['serviceWork'=>function(Query $query){
  18. $query->field('id,address,title');
  19. }])
  20. ->where('user_id',$params['user_id'])
  21. ->field(['id', 'work_sn','service_work_id','return_work_status','dispatch_time','create_time','appointment_time'])
  22. ->append(['return_work_status_text'])
  23. ->order(['id' => 'desc'])
  24. ->select()
  25. ->toArray();
  26. }
  27. public static function detail($params)
  28. {
  29. $issue_work = ReturnWork::with(['serviceWork'=>function(Query $query){
  30. $query->field('id,address,title,real_name,mobile');
  31. },'worker'=>function(Query $query){
  32. $query->field('id,avatar,real_name,worker_number,mobile');
  33. }])
  34. ->where(['id'=>$params['id'],'user_id'=>$params['user_id']])
  35. ->where(['id'=>$params['id']])
  36. ->field('id,work_sn,service_work_id,return_work_status,dispatch_time,master_worker_id,create_time,appointment_time')
  37. ->append(['return_work_status_text'])
  38. ->findOrEmpty()->toArray();
  39. return $issue_work;
  40. }
  41. public static function confirmFinish($params):bool
  42. {
  43. Db::startTrans();
  44. try{
  45. $work = ReturnWork::where('work_sn',$params['work_sn'])->findOrEmpty();
  46. if($work->isEmpty()){
  47. throw new \Exception('返修工单不存在');
  48. }
  49. if($work->user_id != $params['user_id']){
  50. throw new \Exception('用户不正确');
  51. }
  52. if($work->return_work_status != 3){
  53. throw new \Exception('等待师傅确认服务完成');
  54. }
  55. $work->return_work_status = 4;
  56. $work->save();
  57. MasterWorker::setWorktotal('inc',$work->master_worker_id);
  58. //更新投诉状态
  59. $issue = IssueWork::where('service_work_id',$work->service_work_id)->findOrEmpty();
  60. if(!$issue->isEmpty()){
  61. $issue->issue_approval = 4;
  62. $issue->complaint_status = 2;
  63. $issue->responsible = 2;
  64. $issue->finished_time = time();
  65. $issue->save();
  66. }
  67. Db::commit();
  68. return true;
  69. }catch(\Exception $e){
  70. Db::rollback();
  71. self::setError($e->getMessage());
  72. return false;
  73. }
  74. }
  75. }