user.ts 9.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334
  1. import { defHttp } from '/@/utils/http/axios';
  2. import {
  3. LoginParams,
  4. LoginResultModel,
  5. GetUserInfoModel,
  6. UserInfoModel,
  7. RefreshTokenParams,
  8. SmsLoginParams,
  9. } from './model/userModel';
  10. import { session } from "/@/utils/Memory.js";
  11. import md5 from 'js-md5';
  12. import type { ErrorMessageMode } from '/#/axios';
  13. import permissions from "/@/mock/role_me_permissions.json";
  14. import tool from "/@/utils/Tool.js";
  15. import moment from 'moment';
  16. enum Api {
  17. // Login = '/auth/login',
  18. Login = '/api-auth/oauth/token',
  19. SmsCodeLogin = '/auth/code/login',
  20. Logout = '/auth/logout',
  21. GetUserInfo = '/user',
  22. // GetMyInfo = '/user/me/info',
  23. // GetMyInfo = '/api-auth/oauth/userinfo',
  24. GetMyInfo = '/callProvider',
  25. GetPermCode = '/callProvider',
  26. RefreshToken = '/auth/token',
  27. SendLoginSmsCode = '/noauth/send_login_code/',
  28. ResetCode = '/noauth/reset_code/',
  29. ResetPassword = '/noauth/reset/',
  30. Appointment = "/user-center/position/GetPostTreeByOrgId",
  31. AppointPos = "/user-center/post/GetAtpPostTree",
  32. SelectGroupList = "/user-center/role/selectGroupList",
  33. AddLoginRecord = "/base-center/syslog/AddLogin",
  34. SaveRoleMenu = "/base-center/newmenu/saveRoleMenu",
  35. SaveUserMenu = "/base-center/newmenu/saveUserMenu",
  36. GetRoleMenus = "/base-center/newmenu/getRoleMenus",
  37. GetUserMenus = "/base-center/newmenu/getUserMenus",
  38. allSys = '/datastore/dir/sys/list',
  39. GetUserDetailInfo = '/user-center/role/selectMHRoleByUserId'
  40. }
  41. const client = {
  42. grant_type: "password",
  43. scope: "all",
  44. client_id: "space",
  45. client_secret: 'e10adc3949ba59abbe56e057f20f883e',
  46. }
  47. const interfaceType = { apiUrl2: true };
  48. /**
  49. * @description: user login api
  50. */
  51. export function loginApi(params: LoginParams, mode: ErrorMessageMode = 'modal') {
  52. session.setItem('loginFrom', params)
  53. const formData = new FormData();
  54. var a = { ...params, ...client };
  55. Object.keys(a).forEach((key) => formData.append(key, a[key]))
  56. return new Promise<void>((resolve, reject) => {
  57. defHttp.post<LoginResultModel>({ url: Api.Login, params: formData })
  58. .then((r) => {
  59. r.refreshToken = r.refresh_token;
  60. r.token = r.access_token;
  61. session.setItem('token', r.access_token);
  62. resolve(r);
  63. allSys();
  64. // loginCallProvider();
  65. })
  66. })
  67. }
  68. export function loginCallProvider() {
  69. var a = {
  70. interfaceName: "atp-provider.controller.AtpController",
  71. methodName: "getToken",
  72. args: ['superAtp', '#super&Atp@123']
  73. }
  74. const f = new FormData();
  75. Object.keys(a).forEach((key) => f.append(key, a[key]))
  76. return new Promise<void>((resolve, reject) => {
  77. defHttp.post<LoginResultModel>({ url: Api.GetPermCode, params: f, ...interfaceType, })
  78. .then((r) => {
  79. debugger;
  80. })
  81. })
  82. }
  83. export function getMyInfo() {
  84. var a = session.getItem('loginFrom');
  85. const formData = new URLSearchParams();
  86. formData.append('interfaceName', 'atp-provider.controller.AtpController');
  87. formData.append('methodName', 'misLogin');
  88. formData.append('args[]', 'space');
  89. formData.append('args[]', a.username);
  90. formData.append('args[]', md5(a.password));
  91. formData.append('args[]', '');
  92. return new Promise<void>((resolve, reject) => {
  93. defHttp.post<UserInfoModel>({
  94. url: Api.GetMyInfo,
  95. params: formData,
  96. ...interfaceType,
  97. }, { joinPrefix: false }).then(async (i) => {
  98. var u = JSON.parse(i.result);
  99. //插入登录日志记录
  100. let addRecordParam = {
  101. systemLog: {
  102. cjrq: moment().format('YYYY-MM-DD HH:mm:ss'),
  103. czsm: "登录操作",
  104. opt: "login",
  105. sfcg: u.hasOwnProperty('tokenV2') ? 1 : 0,
  106. userid: u.EMPLOYEE_MIS.EMPLOYEE_ID,
  107. username: u.EMPLOYEE.NAME
  108. }
  109. }
  110. defHttp.post({ url: Api.AddLoginRecord, params: addRecordParam })
  111. var a = {
  112. info: u,
  113. "userId": "80808080-8080-8080-8080-808080808080",
  114. "realName": u.EMPLOYEE.NAME,
  115. "username": u.EMPLOYEE.LOGIN_NAME,
  116. "phoneNumber": "17313039356",
  117. "email": "1419750663@qq.com",
  118. "avatar": "",
  119. "tenantId": "13814000-1dd2-11b2-8080-808080808080",
  120. "needSetPwd": false,
  121. "roles": [
  122. "SYS_ADMIN"
  123. ],
  124. "plainRoles": [
  125. {
  126. "roleId": "81818181-8181-8181-8181-818181818181",
  127. "roleName": "超级管理员"
  128. }
  129. ]
  130. }
  131. await getUserIdInfo(u.EMPLOYEE_MIS.EMPLOYEE_ID);
  132. resolve(a);
  133. session.setItem("userInfo", u);
  134. session.setItem('tokenV2', u.tokenV2);
  135. session.setItem('userId', u.EMPLOYEE_MIS.EMPLOYEE_ID);
  136. })
  137. })
  138. }
  139. /**
  140. * @description: 根据用户id获取详细信息
  141. */
  142. export const getUserIdInfo = (id) => {
  143. return defHttp.post<Array<string>>({
  144. url: Api.GetUserDetailInfo, params: {
  145. userId: id,
  146. getRoleIds: true
  147. }
  148. }).then(r => {
  149. if (r.resp_code == 0 && r.datas && r.datas.length) {
  150. session.setItem("roles", r.datas.join(","));
  151. }
  152. })
  153. };
  154. /**
  155. * @description: 获取所有组织
  156. */
  157. export const appointment = (params: AccountParams) => {
  158. return new Promise<void>((resolve, reject) => {
  159. defHttp.post({ url: Api.Appointment }).then((res) => {
  160. resolve(tool.buildTree(res.datas, "0"))
  161. })
  162. })
  163. }
  164. /**
  165. * @description: id获取所属组织的岗位
  166. */
  167. export const appointPos = (id) => {
  168. const formData = new FormData();
  169. formData.append('zwId', id);
  170. return new Promise<void>((resolve, reject) => {
  171. defHttp.post({ url: Api.AppointPos, params: formData }).then((res) => {
  172. res.datas.map(i => { i.label = i.name, i.value = i.id })
  173. resolve(res.datas)
  174. })
  175. })
  176. }
  177. /**
  178. * @description: 角色列表
  179. */
  180. export const roleList = (id) => {
  181. const formData = new FormData();
  182. formData.append('zwId', id);
  183. return new Promise<void>((resolve, reject) => {
  184. defHttp.post({ url: Api.SelectGroupList, params: formData }).then((res) => {
  185. res.datas.map(i => {
  186. if (i.groupName == "系统角色") session.setItem("adminRole", i)
  187. i.label = i.groupName, i.value = i.groupid, i.id = i.groupid
  188. })
  189. resolve(res.datas)
  190. })
  191. })
  192. }
  193. /**
  194. * @description: 保存角色和菜单的关系
  195. */
  196. export const saveRoleMenu = (params) => {
  197. return new Promise<void>((resolve, reject) => {
  198. defHttp.post({ url: Api.SaveRoleMenu, params })
  199. .then((r) => resolve(r.datas && r.resp_code == 0)).catch(e => resolve())
  200. })
  201. }
  202. /**
  203. * @description: 保存角色和菜单的关系
  204. */
  205. export const saveUserMenu = (params) => {
  206. return new Promise<void>((resolve, reject) => {
  207. defHttp.post({ url: Api.SaveUserMenu, params })
  208. .then((r) => resolve(r.datas && r.resp_code == 0)).catch(e => resolve())
  209. })
  210. }
  211. /**
  212. * @description: 获取角色和菜单的关系
  213. */
  214. export const getRoleMenus = (params) => {
  215. return new Promise<void>((resolve, reject) => {
  216. defHttp.post({ url: Api.GetRoleMenus, params })
  217. .then((r) => resolve(r.datas)).catch(e => resolve())
  218. })
  219. }
  220. /**
  221. * @description: 获取角色和菜单的关系
  222. */
  223. export const getUserMenus = (params) => {
  224. return new Promise<void>((resolve, reject) => {
  225. defHttp.post({ url: Api.GetUserMenus, params })
  226. .then((r) => resolve(r.datas)).catch(e => resolve())
  227. })
  228. }
  229. /**
  230. * @description: 获取角色和菜单的关系
  231. */
  232. export function allSys() {
  233. defHttp.post({ url: Api.allSys })
  234. .then((r) => {
  235. if (r && r.datas) {
  236. var l = r.datas.filter(i => i.sysName == '中台文件系统')
  237. if (l && l.length) session.setItem('sysFild', l[0])
  238. }
  239. })
  240. }
  241. /**
  242. * @description: getUserInfo
  243. */
  244. export function getUserInfo() {
  245. return defHttp.get<GetUserInfoModel>({ url: Api.GetUserInfo });
  246. }
  247. export function getPermCode() {
  248. return new Promise<void>((resolve, reject) => {
  249. resolve(permissions)
  250. })
  251. // return defHttp.get<string[]>({ url: Api.GetPermCode });
  252. }
  253. export async function SendLoginSmsCode(phoneNumber: string) {
  254. return await defHttp.post<boolean>({ url: Api.SendLoginSmsCode + phoneNumber });
  255. }
  256. export async function doLogout() {
  257. await defHttp.post(
  258. {
  259. url: Api.Logout,
  260. },
  261. {
  262. joinPrefix: false,
  263. }
  264. );
  265. }
  266. export function doRefreshToken(params: RefreshTokenParams) {
  267. return defHttp.post<LoginResultModel>(
  268. {
  269. url: Api.RefreshToken,
  270. params,
  271. },
  272. {
  273. joinPrefix: false,
  274. }
  275. );
  276. }
  277. export function smsCodeLoginApi(params: SmsLoginParams, mode: ErrorMessageMode = 'modal') {
  278. return defHttp.post<LoginResultModel>(
  279. {
  280. url: Api.SmsCodeLogin,
  281. params,
  282. },
  283. {
  284. errorMessageMode: mode,
  285. }
  286. );
  287. }
  288. // 密码重置验证码
  289. export function passwordResetCode(mobile) {
  290. return defHttp.post({
  291. url: Api.ResetCode + mobile,
  292. });
  293. }
  294. // 重置密码
  295. export function forgetPasswordApi(data) {
  296. return defHttp.post({
  297. url: Api.ResetPassword + data.phoneNumber,
  298. data,
  299. });
  300. }
  301. export const getUserToken = (id: string) => {
  302. return defHttp.get<Record<'token' | 'refreshToken', string>>({
  303. url: `/third/login/id/${id}`,
  304. });
  305. };