123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116 |
- <?php
- namespace app\common\service;
- use app\common\model\CarApprove;
- use app\common\model\CarInfo;
- use app\common\model\LeaveApprove;
- use app\common\model\LeaveInfo;
- use think\Db;
- use think\Exception;
- /**
- * 审批
- * Class ApproveService
- */
- class ApproveService
- {
- protected static $ret_val = true;
- protected static $msg = '';
- /**
- * 请假审批
- * @param $approve_id 审批记录
- * @param $user_id 审批会员
- * @param $status 审批状态
- * @param $remark 审批备注
- * @return array
- */
- public static function approveLeave($approve_id,$user_id,$status,$remark)
- {
- Db::startTrans();
- try {
- if(!in_array($status,[2,3]))throw new Exception('审批状态错误');
- $approve_info = LeaveApprove::where('id',$approve_id)->find()->toArray();
- $leave_info = LeaveInfo::where('id',$approve_info['leave_id'])->find()->toArray();
- if($approve_info['approve_user'] != $user_id) throw new Exception('没有审核权限');
- if($approve_info['status'] == 0) throw new Exception('请等待审核');
- if($approve_info['status'] != 1) throw new Exception('该请假记录已审核');
- if($leave_info['status'] != 1) throw new Exception('该请假记录已审核或已取消');
- $approve_update = [];
- $approve_update['status'] = $status;
- $approve_update['remark'] = $remark;
- $approve_update['approve_time'] = date('Y-m-d H:i:s');
- $approve_time = time() - strtotime($approve_info['start_time']);
- $approve_update['time'] = $approve_time;
- LeaveApprove::where('id',$approve_id)->update($approve_update);// 更新审批记录
- $leave_data = [];
- // 审批流程数 + 1
- $leave_data['cur_num'] = $leave_info['cur_num'] + 1;
- if($approve_info['flow'] < $leave_info['approve_num']){
- // 更新下一级审批记录状态
- 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')]);
- if($status == 3) $leave_data['status'] = 3;
- } else if($approve_info['flow'] == $leave_info['approve_num']) {
- $leave_data['status'] = $status;
- }
- LeaveInfo::where('id',$leave_info['id'])->update($leave_data);// 更新请假状态
- Db::commit();
- }catch (\Exception $e) {
- Db::rollback();
- static::$ret_val = false;
- static::$msg = $e->getMessage();
- }
- return ['ret_val'=>static::$ret_val ,'msg'=>static::$msg];
- }
- /**
- * 用车申请审批
- * @param $approve_id 审批记录
- * @param $user_id 审批会员
- * @param $status 审批状态
- * @param $remark 审批备注
- * @return array
- */
- public static function approveCar($approve_id,$user_id,$status,$remark)
- {
- Db::startTrans();
- try {
- if(!in_array($status,[2,3]))throw new Exception('审批状态错误');
- $approve_info = CarApprove::where('id',$approve_id)->find()->toArray();
- $car_info = CarInfo::where('id',$approve_info['car_id'])->find()->toArray();
- if($approve_info['approve_user'] != $user_id) throw new Exception('没有审核权限');
- if($approve_info['status'] == 0) throw new Exception('请等待审核');
- if($approve_info['status'] != 1) throw new Exception('该请假记录已审核');
- if($car_info['status'] != 1) throw new Exception('该请假记录已审核或已取消');
- $approve_update = [];
- $approve_update['status'] = $status;
- $approve_update['remark'] = $remark;
- $approve_update['approve_time'] = date('Y-m-d H:i:s');
- $approve_time = time() - strtotime($approve_info['start_time']);
- $approve_update['time'] = $approve_time;
- CarApprove::where('id',$approve_id)->update($approve_update);// 更新审批记录
- $car_data = [];
- // 审批流程数 + 1
- $car_data['cur_num'] = $car_info['cur_num'] + 1;
- if($approve_info['flow'] < $car_info['approve_num']){
- // 更新下一级审批记录状态
- 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')]);
- if($status == 3) $car_data['status'] = 3;
- } else if($approve_info['flow'] == $car_info['approve_num']) {
- $car_data['status'] = $status;
- }
- LeaveInfo::where('id',$car_info['id'])->update($car_data);// 更新用车申请状态
- Db::commit();
- }catch (\Exception $e) {
- Db::rollback();
- static::$ret_val = false;
- static::$msg = $e->getMessage();
- }
- return ['ret_val'=>static::$ret_val ,'msg'=>static::$msg];
- }
- }
|