From d9f0cb75aa587ba21a6703f846060cdfa1e3e52f Mon Sep 17 00:00:00 2001 From: liutong <836164388@qq.com> Date: Thu, 12 Jun 2025 17:07:23 +0800 Subject: [PATCH] =?UTF-8?q?fix(attendance):=20=E4=BF=AE=E5=A4=8D=E8=A1=A5?= =?UTF-8?q?=E5=8D=A1=E6=97=B6=E8=AF=B7=E5=81=87=E6=95=B0=E6=8D=AE=E6=9B=B4?= =?UTF-8?q?=E6=96=B0=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增逻辑处理今天有请假情况下的打卡记录更新 - 使用事务确保数据一致性 - 优化了打卡记录插入流程 --- .../controller/apiController/Attendance.php | 59 ++++++++++++++----- 1 file changed, 45 insertions(+), 14 deletions(-) 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'){