$data['name'], 'mobile' => $data['mobile'], 'email' => $data['email'], 'password' => md5($data['password']), 'role_id' => $data['role_id'], 'department_id' => $data['department_id'], 'open_notice' => $data['open_notice'], 'duty_type' => isset($data['duty_type']) ? $data['duty_type'] : '', 'insert_time' => time(), ]; $Employee_id = $this->insertGetId($insert_data); if ($Employee_id) { $this->where('id', $Employee_id)->update(['employee_code' => $this->employee_idToCode($Employee_id)]); } return $Employee_id; } /** * 处理用户城市大区显示 * @author 唐远望 * @version 1.0 * @date 2026-03-19 * @param int $id 编码 * */ public function get_area_info($uid) { //获取用户关联大区信息 $EmployeeZoningModel = new EmployeeZoningModel(); $EmployeeProvinceModel = new EmployeeProvinceModel(); $EmployeeAreaModel = new EmployeeAreaModel(); $user_area_info = $EmployeeZoningModel->where('employee_id', $uid)->get()->toArray(); if (!$user_area_info) { return $user_area_info; } //查询用户关联省份信息 foreach ($user_area_info as $key => $value) { $province_info = $EmployeeProvinceModel->where(['employee_id' => $uid, 'zoning_id' => $value['zoning_id']])->get()->toArray(); $user_area_info[$key]['province_info'] = ''; if (empty($province_info)) continue; $user_area_info[$key]['province_info'] = $province_info; //查询用户关联城市信息 foreach ($province_info as $k => $v) { $city_info = $EmployeeAreaModel->where(['employee_id' => $uid, 'province_id' => $v['province_id']])->get()->toArray(); $user_area_info[$key]['province_info'][$k]['city_info'] = ''; if (empty($city_info)) continue; $user_area_info[$key]['province_info'][$k]['city_info'] = $city_info; } } return $user_area_info; } /** * id转编码 * @author 唐远望 * @version 1.0 * @date 2025-12-04 * @param int $id 编码 * */ public function employee_idToCode($id) { return 'RH' . str_pad($id, 9, '0', STR_PAD_LEFT); } /** * 编码转id * @author 唐远望 * @version 1.0 * @date 2025-12-04 * @param string $code 编码 * */ public function employee_codeToId($code) { return intval(str_ireplace('RH', '', $code)); } /** * 写入数据 * @author 唐远望 * @version 1.0 * @date 2025-12-04 * @param $data * @return bool */ public function addEmployee($data) { DB::beginTransaction(); try { $EmployeeAreaModel = new EmployeeAreaModel(); $EmployeeDepartmentModel = new EmployeeDepartmentModel(); $EmployeePlatformModel = new EmployeePlatformModel(); $EmployeeProvinceModel = new EmployeeProvinceModel(); $EmployeeZoningModel = new EmployeeZoningModel(); $insert_data = [ 'name' => $data['name'], 'mobile' => $data['mobile'], 'email' => $data['email'], 'password' => md5($data['password']), 'role_id' => $data['role_id'], 'department_ids' => isset($data['department_ids']) ? ',' . $data['department_ids'] . ',' : '', 'open_notice' => $data['open_notice'], 'duty_type' => isset($data['duty_type']) ? $data['duty_type'] : '', 'company_id' => $data['company_id'], 'insert_time' => time(), ]; $Employee_id = $this->insertGetId($insert_data); if ($Employee_id) { $this->where('id', $Employee_id)->update(['employee_code' => $this->employee_idToCode($Employee_id)]); } //处理省份城市大区信息 if (isset($data['area_data'])) { $area_data = $data['area_data']; foreach ($area_data as $zoning_key => $zoning_data) { $insert_zoning_data = [ 'employee_id' => $Employee_id, 'zoning_name' => $zoning_data['zoning_name'], 'is_province_all' => $zoning_data['is_province_all'], 'zoning_id' => $zoning_data['zoning_id'], ]; $EmployeeZoningModel->insert($insert_zoning_data); $province_data_list = $zoning_data['province_data']; foreach ($province_data_list as $province_key => $province_data) { $insert_province_data = [ 'employee_id' => $Employee_id, 'zoning_id' => $zoning_data['zoning_id'], 'province_id' => $province_data['province_id'], 'province_name' => $province_data['province_name'], 'is_city_all' => $province_data['is_city_all'], ]; $EmployeeProvinceModel->insert($insert_province_data); $city_ids = $province_data['city_ids']; foreach ($city_ids as $city_key => $city_info) { $insert_city_data = [ 'employee_id' => $Employee_id, 'province_id' => $province_data['province_id'], 'city_id' => $city_info['id'], 'city_name' => $city_info['name'] ]; $EmployeeAreaModel->insert($insert_city_data); } } } } if ($data['department_ids']) { $insert_department_data = []; $department_ids = explode(',', $data['department_ids']); foreach ($department_ids as $department_id) { $insert_department_data[] = [ 'employee_id' => $Employee_id, 'department_id' => $department_id, 'company_id' => $data['company_id'], ]; } $EmployeeDepartmentModel->insert($insert_department_data); } if ($data['platform_ids']) { $insert_department_data = []; $platform_ids = explode(',', $data['platform_ids']); foreach ($platform_ids as $platform_id) { $insert_flatform_data[] = [ 'employee_id' => $Employee_id, 'platform_id' => $platform_id, 'company_id' => $data['company_id'], ]; } $EmployeePlatformModel->insert($insert_flatform_data); } DB::commit(); return true; // 成功处理... } catch (\Exception $e) { DB::rollBack(); // 错误处理... return false; } } /** * 编辑内容 * @author 唐远望 * @version 1.0 * @date 2025-12-04 * @param $data * @return bool */ public function editEmployee_content($where, $data) { $Employee = $this->where($where)->first(); if (!$Employee) { return false; } $Employee->name = $data['name']; $Employee->mobile = $data['mobile']; $Employee->email = $data['email']; if (isset($data['password']) && $data['password'] != '') $Employee->password = md5($data['password']); $Employee->role_id = $data['role_id']; $Employee->department_ids = isset($data['department_ids']) ? ',' . $data['department_ids'] . ',' : ''; $Employee->open_notice = $data['open_notice']; $Employee->duty_type = isset($data['duty_type']) ? $data['duty_type'] : ''; $Employee->company_id = $data['company_id']; $Employee->update_time = time(); $Employee->save(); return true; } /** * 更新数据 * @author 唐远望 * @version 1.0 * @date 2025-12-04 * @param $data * @return bool */ public function updateEmployee($Employee, $data) { DB::beginTransaction(); try { $EmployeeAreaModel = new EmployeeAreaModel(); $EmployeeDepartmentModel = new EmployeeDepartmentModel(); $EmployeePlatformModel = new EmployeePlatformModel(); $EmployeeProvinceModel = new EmployeeProvinceModel(); $EmployeeZoningModel = new EmployeeZoningModel(); $Employee->name = $data['name']; $Employee->mobile = $data['mobile']; $Employee->email = $data['email']; if (isset($data['password']) && $data['password'] != '') $Employee->password = md5($data['password']); $Employee->role_id = $data['role_id']; $Employee->department_ids = isset($data['department_ids']) ? ',' . $data['department_ids'] . ',' : ''; $Employee->open_notice = $data['open_notice']; $Employee->duty_type = isset($data['duty_type']) ? $data['duty_type'] : ''; $Employee->company_id = $data['company_id']; $Employee->update_time = time(); $Employee->save(); $EmployeeAreaModel->where('employee_id', $Employee->id)->delete(); $EmployeeProvinceModel->where('employee_id', $Employee->id)->delete(); $EmployeeZoningModel->where('employee_id', $Employee->id)->delete(); //处理省份城市大区信息 if (isset($data['area_data'])) { $area_data = $data['area_data']; foreach ($area_data as $zoning_key => $zoning_data) { $insert_zoning_data = [ 'employee_id' => $Employee->id, 'zoning_name' => $zoning_data['zoning_name'], 'is_province_all' => $zoning_data['is_province_all'], 'zoning_id' => $zoning_data['zoning_id'], ]; $EmployeeZoningModel->insert($insert_zoning_data); $province_data_list = $zoning_data['province_data']; foreach ($province_data_list as $province_key => $province_data) { $insert_province_data = [ 'employee_id' => $Employee->id, 'zoning_id' => $zoning_data['zoning_id'], 'province_id' => $province_data['province_id'], 'province_name' => $province_data['province_name'], 'is_city_all' => $province_data['is_city_all'], ]; $EmployeeProvinceModel->insert($insert_province_data); $city_ids = $province_data['city_ids']; foreach ($city_ids as $city_key => $city_info) { $insert_city_data = [ 'employee_id' => $Employee->id, 'province_id' => $province_data['province_id'], 'city_id' => $city_info['id'], 'city_name' => $city_info['name'] ]; $EmployeeAreaModel->insert($insert_city_data); } } } } $EmployeeDepartmentModel->where('employee_id', $Employee->id)->delete(); if ($data['department_ids']) { $insert_department_data = []; $department_ids = explode(',', $data['department_ids']); foreach ($department_ids as $department_id) { $insert_department_data[] = [ 'employee_id' => $Employee->id, 'department_id' => $department_id, 'company_id' => $data['company_id'], ]; } $EmployeeDepartmentModel->insert($insert_department_data); } $EmployeePlatformModel->where('employee_id', $Employee->id)->delete(); if ($data['platform_ids']) { $insert_department_data = []; $platform_ids = explode(',', $data['platform_ids']); foreach ($platform_ids as $platform_id) { $insert_flatform_data[] = [ 'employee_id' => $Employee->id, 'platform_id' => $platform_id, 'company_id' => $data['company_id'], ]; } $EmployeePlatformModel->insert($insert_flatform_data); } DB::commit(); return true; // 成功处理... } catch (\Exception $e) { DB::rollBack(); // 错误处理... return false; } } /** * 修改状态 * @author 唐远望 * @version 1.0 * @date 2025-12-04 * @param $id * @param $status * @return bool */ public function changeStatus($where, $status) { $Employee = $this->where($where)->first(); if (!$Employee) { return false; } $Employee->status = $status; $Employee->update_time = time(); $Employee->save(); return true; } /** * 删除数据 * @author 唐远望 * @version 1.0 * @date 2025-12-04 * @param $id * @return bool */ public function deleteEmployee($where) { $Employee = $this->where($where)->first(); if (!$Employee) { return false; } $Employee->delete(); return true; } /** * 添加数据 * */ public function edit($id,$data) { // 更新时间 $data['update_time'] = time(); // 写入数据表 $result = $this->query()->where(['id'=>$id])->update($data); // 如果操作失败 if( !$result ) return 0; // 更新缓存 $this->getList(true); // 返回结果 return $id; } /** * 获取列表 * @param Bool $force 是否强制更新 * */ public function getList($force = false) { // 结果数据 $list = $force ? [] : cache('manager:admin:employee:list'); // 不存在数据 if ( !$list ) { // 从数据库获取数据 $data = $this->query()->get(['id','name','mobile','status','password','status','insert_time','update_time'])->toArray(); // 循环处理数据 $list = []; // 进行更新 foreach ($data as $value) { // 重组数据 $list[$value['id']] = $value; } // 存起来 cache(['manager:admin:employee:list'=>$list]); } // 返回结果 return $list; } /** * 获取配置平台对应的应用数据 * * @param int 用户ID * @param string 指定字段 * */ public function getOne($id,$field='') { // 获取列表数据 $list = $this->getList(); // 获取数据 $one = isset($list[$id]) ? $list[$id] : []; // 返回值 return empty($field) ? $one : ( isset($one[$field]) ? $one[$field] : null); } /** * 登录 * * @param int 用户ID * */ public function Login($uid,$company_id=0, $module = 'manager') { // 组合数据 $jwtData = ['company_id'=>$company_id, 'uid' => $uid, 'is_admin' => '0', 'type' => $module, 'expire' => time() + 3600 * 8]; // 登录成功 $token = AccessToken::encode($jwtData); // 如果异常的话 if (isset($token['error'])) return $token; // 登录成功 cache([$module . ':employee:access_token:' . $uid => md5($token)], 3600 * 8); // 返回结果 return ['access_token_' . $module => $token, 'expire' => 3600 * 8]; } /** * 退出登录 * * @param int 用户ID * */ public function LoginOut($uid, $module = 'manager') { // 删除缓存 cache([$module . ':employee:access_token:' . $uid => null]); // 返回结果 return true; } }