diff --git a/niucloud/app/api/controller/apiController/Attendance.php b/niucloud/app/api/controller/apiController/Attendance.php index a3a0a87f..0d4c999c 100644 --- a/niucloud/app/api/controller/apiController/Attendance.php +++ b/niucloud/app/api/controller/apiController/Attendance.php @@ -16,6 +16,7 @@ use app\service\admin\campus\CampusService; use app\service\api\apiService\AttendanceService; use app\service\api\apiService\CommonService; use core\base\BaseApiService; +use think\facade\Db; /** * 员工考勤控制器相关接口 @@ -115,21 +116,51 @@ class Attendance extends BaseApiService } } - //插入打卡记录 - $data = [ - 'campus_id'=>$campus_id ?? 0,// - 'staff_id'=>$staff_id,// - 'attendance_date'=>$attendance_date,// - 'check_in_time'=>$date_h,// - 'status'=>$status,// - 'coordinate'=>$coordinate,//坐标|经度,纬度 - 'remarks'=>$remarks,// - ]; - $res = $obj->addData($data); - if(!$res['code']){ - return fail($res['msg']); + //获取今天请假的数据(leave_end_time>当前时间的 && attendance_date=当前日期的)请假数据,更新leave_end_time=当前时间 + //请假的id + $leave_id_arr = new \app\model\attendance\Attendance(); + if($campus_id === '0' || $campus_id === 0 || !empty($campus_id)){ + $leave_id_arr = $leave_id_arr->where('campus_id',$campus_id); + } + $leave_id_arr = $leave_id_arr->where('staff_id',$staff_id) + ->where('status','leave') + ->where('attendance_date',$attendance_date) + ->where('leave_end_time','>=',$date_h)->column('id'); + + Db::startTrans(); + try { + if($leave_id_arr){ + $update = \app\model\attendance\Attendance::whereIn('id',$leave_id_arr)->update([ + 'leave_end_time'=>$date_h, + 'updated_at'=>$date_h, + ]); + if(!$update){ +// Db::rollback(); +// return fail('更新请假数据失败'); + } + } + + //插入打卡记录 + $data = [ + 'campus_id'=>$campus_id ?? 0,// + 'staff_id'=>$staff_id,// + 'attendance_date'=>$attendance_date,// + 'check_in_time'=>$date_h,// + 'status'=>$status,// + 'coordinate'=>$coordinate,//坐标|经度,纬度 + 'remarks'=>$remarks,// + ]; + $res = $obj->addData($data); + Db::commit(); + if(!$res['code']){ + Db::rollback(); + return fail($res['msg']); + } + return success($res['data']); + }catch (\Exception $e){ + Db::rollback(); + return fail('操作失败'); } - return success($res['data']); } //判断是签退 if($status == 'sign_out'){