$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'] : '', 'company_id' => $data['company_id'], 'insert_time' => time(), ]; $User_id = $this->insertGetId($insert_data); if ($User_id) { $this->where('id', $User_id)->update(['User_code' => $this->User_id_rule($data['company_id'], $User_id)]); } return $User_id; } /** * id转编码 * @author 唐远望 * @version 1.0 * @date 2025-12-04 * @param int $id 编码 * */ public function User_idToCode($id) { return 'RH' . str_pad($id, 9, '0', STR_PAD_LEFT); } /** * 用户ID生成规则 * @author 唐远望 * @version 1.0 * @date 2026-03-31 * @param int $company_id 公司ID * @param int $id 用户ID * */ public function User_id_rule($company_id,$id) { $new_id =rand(100000000, 999999999); //查询最新一条记录用户ID $latest_User = $this->where('company_id', $company_id)->where([['User_code','!=','']])->orderBy('id', 'desc')->first(); if (!$latest_User) { $new_id = $company_id.str_pad(1, 9, '0', STR_PAD_LEFT); } else { //如果包含RH字符,则去除后字符串转数字+1,否则直接字符串数据+1 if (strpos($latest_User->User_code, 'RH') === 0) { $latest_id = intval(str_ireplace('RH', '', $latest_User->User_code)); $new_id = $company_id.$latest_id + 1; } else if (trim($latest_User->User_code) != '') { $new_id = intval($latest_User->User_code) + 1; } else { $new_id = $company_id.str_pad(1, 9, '0', STR_PAD_LEFT); } } return $new_id; } /** * 编码转id * @author 唐远望 * @version 1.0 * @date 2025-12-04 * @param string $code 编码 * */ public function User_codeToId($code) { return intval(str_ireplace('RH', '', $code)); } /** * 写入数据 * @author 唐远望 * @version 1.0 * @date 2025-12-04 * @param $data * @return bool */ public function addUser($data) { DB::beginTransaction(); try { $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(), ]; $User_id = $this->insertGetId($insert_data); if ($User_id) { $this->where('id', $User_id)->update(['User_code' => $this->User_id_rule($data['company_id'],$User_id)]); } 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 editUser_content($where, $data) { $User = $this->where($where)->first(); if (!$User) { return false; } $User->name = $data['name']; $User->mobile = $data['mobile']; $User->email = $data['email']; if (isset($data['password']) && $data['password'] != '') $User->password = md5($data['password']); $User->role_id = $data['role_id']; $User->department_ids = isset($data['department_ids']) ? ',' . $data['department_ids'] . ',' : ''; $User->open_notice = $data['open_notice']; $User->duty_type = isset($data['duty_type']) ? $data['duty_type'] : ''; $User->company_id = $data['company_id']; $User->update_time = time(); $User->save(); return true; } /** * 更新数据 * @author 唐远望 * @version 1.0 * @date 2025-12-04 * @param $data * @return bool */ public function updateUser($User, $data) { DB::beginTransaction(); try { $User->name = $data['name']; $User->mobile = $data['mobile']; $User->email = $data['email']; if (isset($data['password']) && $data['password'] != '') $User->password = md5($data['password']); $User->role_id = $data['role_id']; $User->department_ids = isset($data['department_ids']) ? ',' . $data['department_ids'] . ',' : ''; $User->open_notice = $data['open_notice']; $User->duty_type = isset($data['duty_type']) ? $data['duty_type'] : ''; $User->company_id = $data['company_id']; $User->update_time = time(); $User->save(); 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) { $User = $this->where($where)->first(); if (!$User) { return false; } $User->status = $status; $User->update_time = time(); $User->save(); return true; } /** * 删除数据 * @author 唐远望 * @version 1.0 * @date 2025-12-04 * @param $id * @return bool */ public function deleteUser($where) { $User = $this->where($where)->first(); if (!$User) { return false; } $User->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:User: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:User: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 . ':User: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 . ':User:access_token:' . $uid => null]); // 返回结果 return true; } }