$this->member_id, ]; $res = (new PersonnelService())->info($where); if(!$res['code']){ return fail($res['msg']); } return success($res['data']); } //员工修改 public function edit(Request $request){ $params = $request->all(); // 构建基础数据,使用isset检查避免undefined key错误 $data = []; // 基础信息字段 $baseFields = ['head_img', 'name', 'gender', 'birthday', 'phone', 'email', 'wx', 'address', 'native_place', 'education', 'profile', 'emergency_contact_phone', 'id_card_front', 'id_card_back']; foreach ($baseFields as $field) { if (isset($params[$field])) { $data[$field] = $params[$field]; } } // 详细信息 if (isset($params['info']) && is_array($params['info'])) { $data['info'] = $params['info']; } //获取员工信息 $where = [ 'id'=>$this->member_id, ]; $res = (new PersonnelService())->edit($where,$data); if(!$res['code']){ return fail($res['msg'] ?? '操作失败'); } return success([]); } //人力资源-人员表 public function getPersonnelAll(Request $request){ //获取员工信息 $where = [ 'account_type' => $request->param('account_type', ''),//账号类型|teacher=老师,market=销售 'personnel_id' => $request->param('personnel_id', ''),//员工id 'campus' => $request->param('campus', ''),//校区id ]; $field = 'id,name'; $res = (new PersonnelService())->getAll($where,$field); // if(!$res){ // return fail('账户信息有误'); // } return success($res); } //验证新旧密码是否正确 public function checkOldPwd(Request $request){ //获取员工信息 $old_password = $request->param('old_password',''); if(empty($old_password)){ return fail('请输入旧密码'); } $res = (new PersonnelService())->checkOldPwd($old_password); if(!$res['code']){ return fail('旧密码不正确'); } return success($res['data']); } //员工端-修改登录密码 public function edidPassword(Request $request){ $new_password = $request->param('new_password','');//新密码 $key_value = $request->param('key_value','');//修改密码的key_value $phone = $request->param('phone','');//登录账号 if(empty($new_password) || empty($key_value)){ return fail('缺少参数'); } $res = (new PersonnelService())->edidPassword($phone,$new_password,$key_value); if(!$res['code']){ return fail($res['msg']); } return success($res['data']); } public function reimbursement_list(){ return success((new PersonnelService())->reimbursement_list()); } public function reimbursement_info(Request $request){ $data = [ 'id' => $request->param('id', ''), ]; return success((new PersonnelService())->reimbursement_info($data)); } public function reimbursement_add(Request $request){ $data = [ 'id' => $request->param('id', ''), 'amount' => $request->param('amount', ''), 'description' => $request->param('description', ''), 'receipt_url' => $request->param('receipt_url', ''), ]; return success((new PersonnelService())->reimbursement_add($data)); } /** * 添加新员工信息 * @param Request $request * @return mixed */ public function add(Request $request) { $params = $request->all(); // 验证必填字段 if (empty($params['name'])) { return fail('员工姓名不能为空'); } if (!isset($params['gender']) || $params['gender'] === '') { return fail('请选择性别'); } if (empty($params['phone'])) { return fail('手机号码不能为空'); } if (empty($params['account_type'])) { return fail('请选择职位类型'); } // 验证手机号格式 if (!preg_match('/^1[3-9]\d{9}$/', $params['phone'])) { return fail('请输入正确的手机号码'); } // 验证邮箱格式(如果提供了邮箱) if (!empty($params['email']) && !filter_var($params['email'], FILTER_VALIDATE_EMAIL)) { return fail('请输入正确的邮箱地址'); } try { // 检查是否使用审批流程 if (isset($params['use_approval']) && $params['use_approval'] && isset($params['approval_config_id']) && $params['approval_config_id'] > 0) { // 使用审批流程 $approvalService = new \app\service\school_approval\SchoolApprovalProcessService(); // 获取申请人ID - 如果未登录则使用管理员ID $applicantId = $this->member_id; if (!$applicantId) { // 如果没有登录用户,查找系统管理员或HR作为申请人 $adminPersonnel = \think\facade\Db::table('school_personnel') ->where('account_type', 'admin') ->whereOr('account_type', 'teacher') ->where('status', 1) ->order('id', 'asc') ->find(); $applicantId = $adminPersonnel ? $adminPersonnel['id'] : 1; } $processId = $approvalService->createPersonnelApproval( $params, $applicantId, $params['approval_config_id'] ); return success([ 'type' => 'approval', 'process_id' => $processId, 'message' => '审批申请已提交,等待审批' ]); } else { // 直接添加人员 $res = (new PersonnelService())->addPersonnel($params); if (!$res['code']) { return fail($res['msg']); } return success([ 'type' => 'direct', 'data' => $res['data'], 'message' => '员工信息添加成功' ]); } } catch (\Exception $e) { return fail('添加员工信息失败:' . $e->getMessage()); } } /** * 获取审批配置列表 * @param Request $request * @return mixed */ public function getApprovalConfigs(Request $request) { try { $params = $request->all(); $businessType = $params['business_type'] ?? 'personnel_add'; $approvalService = new \app\service\school_approval\SchoolApprovalConfigService(); $configs = $approvalService->getActiveConfigs($businessType); return success($configs); } catch (\Exception $e) { return fail('获取审批配置失败:' . $e->getMessage()); } } /** * 获取我的服务记录列表 * @param Request $request * @return \think\Response */ public function myServiceLogs(Request $request) { try { $params = $request->all(); $res = (new ServiceService())->getMyServiceLogs($params); return success($res); } catch (\Exception $e) { return fail('获取服务记录失败:' . $e->getMessage()); } } /** * 获取服务记录详情 * @param Request $request * @return \think\Response */ public function serviceLogDetail(Request $request) { try { $params = $request->all(); $id = $params['id'] ?? 0; if (empty($id)) { return fail('服务记录ID不能为空'); } $res = (new ServiceService())->getServiceLogDetail($id); if (empty($res)) { return fail('服务记录不存在'); } return success($res); } catch (\Exception $e) { return fail('获取服务记录详情失败:' . $e->getMessage()); } } /** * 更新服务结果 * @param Request $request * @return \think\Response */ public function updateServiceRemark(Request $request) { try { $params = $request->all(); $id = $params['id'] ?? 0; $serviceRemark = $params['service_remark'] ?? ''; if (empty($id)) { return fail('服务记录ID不能为空'); } if (empty($serviceRemark)) { return fail('服务结果内容不能为空'); } $res = (new ServiceService())->updateServiceRemark($id, $serviceRemark); if (!$res['code']) { return fail($res['msg']); } return success([], '更新成功'); } catch (\Exception $e) { return fail('更新服务结果失败:' . $e->getMessage()); } } /** * 获取教练数据列表 * @param Request $request * @return \think\Response */ public function getCoachList(Request $request) { try { $res = (new PersonnelService())->getCoachList(); if (!$res['code']) { return fail($res['msg']); } return success($res['data']); } catch (\Exception $e) { return fail('获取教练列表失败:' . $e->getMessage()); } } /** * 获取教练列表(用于添加课程安排) * @param Request $request * @return \think\Response */ public function getCoachListForSchedule(Request $request) { try { $data = $this->request->params([ ["campus_id", 0], // 校区ID筛选 ["keyword", ""], // 教练姓名关键词搜索 ["status", 1] // 状态筛选,默认获取有效教练 ]); $res = (new PersonnelService())->getCoachListForSchedule($data); if (!$res['code']) { return fail($res['msg']); } return success('获取成功', $res['data']); } catch (\Exception $e) { return fail('获取教练列表失败:' . $e->getMessage()); } } }