tokenModel = new Token(); $this->userModel = new User(); } /** * Desc :授权获取用户信息 * User : zwq * Date : 2025-01-18 09:30 */ public function getUserToken() { $token_code = input('user_token/s', ''); $res = (new platformAuth())->interfaceRequest('getUserToken', ['user_token' => $token_code]); if (!$res['code']) return res(2, $res['msg']); //$res['data']获取中台用户信息 $adminInfo = $res['data'] ?? []; $uuid = $adminInfo['uuid'] ?? ''; $userInfo = User::where('uuid', $uuid)->find(); $role_res = (new platformAuth())->interfaceRequest('getUserRole', ['uuid' => $uuid]); if (!$role_res['code']) return res(2, $role_res['msg']); $resData = []; Db::startTrans(); try { if (!$userInfo) { $userInfo = $this->userModel->create_user($adminInfo); } $org_ids = array_column($role_res['data'], 'org_id'); $role_ids = []; foreach ($role_res['data'] as $item) {//循环查询获取的角色信息 $whereOr = []; if ($item['role_code']) { $whereOr[] = [['related_role_codes', 'LIKE', '%,' . $item['role_code'] . ',%']]; $whereOr[] = [['related_role_codes', 'LIKE', $item['role_code'] . ',%']]; $whereOr[] = [['related_role_codes', 'LIKE', '%,' . $item['role_code']]]; $whereOr[] = [['related_role_codes', '=', $item['role_code']]]; } $related = RelatedRoleTypes::whereOr($whereOr)->select(); foreach ($related as $item2) { $org_role = OrgRole::where('org_id', $item['org_id'])->where('code', $item2['type_code'])->find();//获取org本地是否存在这个角色 if (!$org_role) { $org_role = OrgRole::create(['name' => $item2['role_type_name'], 'code' => $item2['type_code'], 'org_id' => $item['org_id'], 'menu_ids' => $item2['menu_ids'], 'request_ids' => $item2['request_ids']]); } $where = []; $where[] = ['user_id', '=', $userInfo['user_id']]; $where[] = ['org_id', '=', $item['org_id']]; $where[] = ['role_code', '=', $item2['type_code']]; $role_ids[] = $org_role['role_id']; $userRole = UserRole::where($where)->find(); if (!$userRole) { UserRole::create(['user_id' => $userInfo['user_id'], 'role_id' => $org_role['role_id'], 'org_id' => $org_role['org_id'], 'role_code' => $item2['type_code']]); } } } $userRole_ids = UserRole::where('is_role_type', 1) ->where('role_id', 'NOT IN', $role_ids) ->where('user_id', $userInfo['user_id']) ->column('id'); if ($userRole_ids) { UserRole::destroy($userRole_ids, true); } //处理用户信息 $login_org = "1"; $login_role = "SUPERADMIN"; if (!$userInfo->is_developer) { $userRole = UserRole::where('user_id', $userInfo->user_id)->find(); if ($userRole) { $login_org = $userRole['org_id']; $login_role = OrgRole::where('role_id', $userRole['role_id'])->value('code'); } } $token = $this->tokenModel->updatetoken($userInfo->user_id, $login_org, $login_role); $resData = ['token' => $token, 'user_id' => $userInfo->user_id, 'user' => $this->tokenModel->tokenUser($token), 'log' => 2]; // 提交事务 Db::commit(); } catch (\Exception $e) { // 回滚事务 Db::rollback(); return res(2, '保存失败', $e->getMessage() . '|' . $e->getLine()); } return res(1, '登录成功', $resData); } /** * Desc :获取授权信息 * User : zwq * Date : 2025-01-17 09:03 */ public function getFormToken() { $apply_type = input("apply_type/s", ""); $res = (new platformAuth())->interfaceRequest('getFormToken', ['apply_type' => $apply_type]); return res(1, "获取成功", $res['data'] ?? []); } /** * Desc :绑定账号 * User : zwq * Date : 2025-01-17 09:17 */ public function bindAccount() { $code = input('code/s', ''); $apply_type = input('apply_type/s', ''); $uuid = $this->userinfo->uuid; $res = (new platformAuth())->interfaceRequest('getOpenid', ['code' => $code, 'apply_type' => $apply_type]); $openid = $res['data'] ?? ""; if ($openid) { (new platformAuth()) ->interfaceRequest('bindAccount', ['openid' => $openid, 'uuid' => $uuid, 'apply_type' => $apply_type]); return res(1, "绑定成功", []); } else { return res(0, "绑定失败", []); } } /** * Notes:创建账号 * User: zhang * Date: 2025/2/18 * Time: 9:39 */ public function editUser() { $param = $this->request->param(); $username = !empty($param['username']) ? $param['username'] : getStrFirstChar($param['name']) . (!empty($param['phone']) ? $param['phone'] : date('YmdHis')); $data = [ 'user' => [ "uuid" => $param['uuid'] ?? "", "phone" => $param['phone'] ?? "", "name" => $param['name'] ?? "", "username" => $username, "password" => $param['password'] ?? "", ], ]; Db::startTrans(); try { //如果有uuid 编辑 if (!empty($param['uuid'])) { $res = (new platformAuth())->interfaceRequest('createAccount', $data); if (!$res['code']) return Result(2, $res['msg']); $user = User::where('uuid', $data['user']['uuid'])->find(); $user->name = $data['user']['name'] ?? ''; $user->username = $data['user']['username']; $user->save(); } else { //新增 $res = (new platformAuth())->interfaceRequest('createAccount', $data); WLog('create_user', ['data' => $data, 'res' => $res]); if (!$res['code']) return Result(2, $res['msg']); $data['user']['uuid'] = $res['data']['uuid']; $user = new User(); $user->create_user($data['user']); } // 提交事务 Db::commit(); } catch (\Exception $e) { // 回滚事务 Db::rollback(); return Result(2, '保存失败', $e->getMessage() . '|' . $e->getLine()); } return Result(1, '操作成功'); } /** * Notes:绑定角色 * User: zhang * Date: 2025/2/18 * Time: 10:44 */ public function bindRole() { $org_id = input('org_id', 0); $uuid = input('uuid', ""); $role_code = input('role_code', ""); $identity_code = input('identity_code', ""); if (empty($uuid)) return res(2, '用户uuid不能为空'); if (empty($org_id)) return res(2, '请选择用户组织'); if (empty($role_code)) return res(2, '请选择角色'); $orgRole = OrgRole::where('org_id', $org_id)->where('code', $role_code)->find(); if (empty($orgRole)) return res(2, '该角色不存在'); if (!empty($identity_code)) { $data = [ 'user' => [ 'uuid' => $uuid, ], 'role' => [ 'role_code' => $identity_code, 'org_id' => $org_id, ], ]; $res = (new platformAuth())->interfaceRequest('createAccount', $data); if (!$res['code']) return Result(2, $res['msg']); } $user_id = User::where('uuid', $uuid)->value('user_id'); $where = []; $where[] = ['user_id', '=', $user_id]; $where[] = ['org_id', '=', $org_id]; $where[] = ['role_code', '=', $orgRole['code']]; $userRole = UserRole::where($where)->find(); if (!$userRole) { UserRole::create(['user_id' => $user_id, 'role_id' => $orgRole['role_id'], 'org_id' => $orgRole['org_id'], 'role_code' => $orgRole['code'], 'is_role_type' => !empty($identity_code) ? 1 : 2]); } else { return res(2, '该角色已绑定请勿重复绑定'); } return res(1, '操作成功'); } /**获取code * Desc : * User : zwq * Date : 2025-01-17 09:52 */ public function getCode() { $form_token = input('__token__/s', ''); // 创建一个响应实例 try { $response = Response::create(); // 设置内容类型为 text/event-stream $response->header([ 'cache-Control' => 'no-cache', 'Connection' => 'keep-alive', 'Access-Control-Allow-Origin' => '*', 'Access-Control-Allow-Credentials' => 'true', 'Access-Control-Allow-Methods' => 'GET', ]); $response->contentType('text/event-stream'); header('Content-Type:text/event-stream'); // 开始输出 ob_end_clean(); ob_start(); set_time_limit(0); // 输出内容 // $info = cache($form_token); $res = (new platformAuth()) ->interfaceRequest('getCode', ['__token__' => $form_token]); $info = $res['data'] ?? ""; if ($info) { $data = "data: {$info}\n\n"; } else { $data = "data: loading\n\n"; } // 输出内容 $response->data($data); $response->send(); @ob_flush(); flush(); // 等待 1 秒 sleep(1); } catch (\Exception $e) { Wlog('SSE', [ 'msg' => $e->getMessage(), 'line' => $e->getLine(), ]); } } }