ApproveService.php 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. <?php
  2. namespace app\common\service;
  3. use app\common\model\CarApprove;
  4. use app\common\model\CarInfo;
  5. use app\common\model\LeaveApprove;
  6. use app\common\model\LeaveInfo;
  7. use think\Db;
  8. use think\Exception;
  9. /**
  10. * 审批
  11. * Class ApproveService
  12. */
  13. class ApproveService
  14. {
  15. protected static $ret_val = true;
  16. protected static $msg = '';
  17. /**
  18. * 请假审批
  19. * @param $approve_id 审批记录
  20. * @param $user_id 审批会员
  21. * @param $status 审批状态
  22. * @param $remark 审批备注
  23. * @return array
  24. */
  25. public static function approveLeave($approve_id,$user_id,$status,$remark)
  26. {
  27. Db::startTrans();
  28. try {
  29. if(!in_array($status,[2,3]))throw new Exception('审批状态错误');
  30. $approve_info = LeaveApprove::where('id',$approve_id)->find()->toArray();
  31. $leave_info = LeaveInfo::where('id',$approve_info['leave_id'])->find()->toArray();
  32. if($approve_info['approve_user'] != $user_id) throw new Exception('没有审核权限');
  33. if($approve_info['status'] == 0) throw new Exception('请等待审核');
  34. if($approve_info['status'] != 1) throw new Exception('该请假记录已审核');
  35. if($leave_info['status'] != 1) throw new Exception('该请假记录已审核或已取消');
  36. $approve_update = [];
  37. $approve_update['status'] = $status;
  38. $approve_update['remark'] = $remark;
  39. $approve_update['approve_time'] = date('Y-m-d H:i:s');
  40. $approve_time = time() - strtotime($approve_info['start_time']);
  41. $approve_update['time'] = $approve_time;
  42. LeaveApprove::where('id',$approve_id)->update($approve_update);// 更新审批记录
  43. $leave_data = [];
  44. // 审批流程数 + 1
  45. $leave_data['cur_num'] = $leave_info['cur_num'] + 1;
  46. if($approve_info['flow'] < $leave_info['approve_num']){
  47. // 更新下一级审批记录状态
  48. LeaveApprove::where(['leave_id'=>$approve_info['leave_id'],'flow'=>$approve_info['flow'] + 1,'approve_type'=>1])->update(['status'=>1,'start_time'=>date('Y-m-d H:i:s')]);
  49. if($status == 3) $leave_data['status'] = 3;
  50. } else if($approve_info['flow'] == $leave_info['approve_num']) {
  51. $leave_data['status'] = $status;
  52. }
  53. LeaveInfo::where('id',$leave_info['id'])->update($leave_data);// 更新请假状态
  54. Db::commit();
  55. }catch (\Exception $e) {
  56. Db::rollback();
  57. static::$ret_val = false;
  58. static::$msg = $e->getMessage();
  59. }
  60. return ['ret_val'=>static::$ret_val ,'msg'=>static::$msg];
  61. }
  62. /**
  63. * 用车申请审批
  64. * @param $approve_id 审批记录
  65. * @param $user_id 审批会员
  66. * @param $status 审批状态
  67. * @param $remark 审批备注
  68. * @return array
  69. */
  70. public static function approveCar($approve_id,$user_id,$status,$remark)
  71. {
  72. Db::startTrans();
  73. try {
  74. if(!in_array($status,[2,3]))throw new Exception('审批状态错误');
  75. $approve_info = CarApprove::where('id',$approve_id)->find()->toArray();
  76. $car_info = CarInfo::where('id',$approve_info['car_id'])->find()->toArray();
  77. if($approve_info['approve_user'] != $user_id) throw new Exception('没有审核权限');
  78. if($approve_info['status'] == 0) throw new Exception('请等待审核');
  79. if($approve_info['status'] != 1) throw new Exception('该请假记录已审核');
  80. if($car_info['status'] != 1) throw new Exception('该请假记录已审核或已取消');
  81. $approve_update = [];
  82. $approve_update['status'] = $status;
  83. $approve_update['remark'] = $remark;
  84. $approve_update['approve_time'] = date('Y-m-d H:i:s');
  85. $approve_time = time() - strtotime($approve_info['start_time']);
  86. $approve_update['time'] = $approve_time;
  87. CarApprove::where('id',$approve_id)->update($approve_update);// 更新审批记录
  88. $car_data = [];
  89. // 审批流程数 + 1
  90. $car_data['cur_num'] = $car_info['cur_num'] + 1;
  91. if($approve_info['flow'] < $car_info['approve_num']){
  92. // 更新下一级审批记录状态
  93. CarApprove::where(['car_id'=>$approve_info['car_id'],'flow'=>$approve_info['flow'] + 1,'approve_type'=>1])->update(['status'=>1,'start_time'=>date('Y-m-d H:i:s')]);
  94. if($status == 3) $car_data['status'] = 3;
  95. } else if($approve_info['flow'] == $car_info['approve_num']) {
  96. $car_data['status'] = $status;
  97. }
  98. LeaveInfo::where('id',$car_info['id'])->update($car_data);// 更新用车申请状态
  99. Db::commit();
  100. }catch (\Exception $e) {
  101. Db::rollback();
  102. static::$ret_val = false;
  103. static::$msg = $e->getMessage();
  104. }
  105. return ['ret_val'=>static::$ret_val ,'msg'=>static::$msg];
  106. }
  107. }