user.ts 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381
  1. import request from "@/utils/request";
  2. import { AxiosPromise, AxiosResponse } from "axios";
  3. const USER_BASE_URL = "/api/v1/users";
  4. class UserAPI {
  5. /**
  6. * 获取当前登录用户信息
  7. *
  8. * @returns 登录用户昵称、头像信息,包括角色和权限
  9. */
  10. static getInfo() {
  11. return request<any, UserInfo>({
  12. url: `${USER_BASE_URL}/me`,
  13. method: "get",
  14. });
  15. }
  16. /**
  17. * 获取用户分页列表
  18. *
  19. * @param queryParams 查询参数
  20. */
  21. static getPage(queryParams: UserPageQuery) {
  22. return request<any, PageResult<UserPageVO[]>>({
  23. url: `${USER_BASE_URL}/page`,
  24. method: "get",
  25. params: queryParams,
  26. });
  27. }
  28. /**
  29. * 获取用户表单详情
  30. *
  31. * @param userId 用户ID
  32. * @returns 用户表单详情
  33. */
  34. static getFormData(userId: number) {
  35. return request<any, UserForm>({
  36. url: `${USER_BASE_URL}/${userId}/form`,
  37. method: "get",
  38. });
  39. }
  40. /**
  41. * 添加用户
  42. *
  43. * @param data 用户表单数据
  44. */
  45. static add(data: UserForm) {
  46. return request({
  47. url: `${USER_BASE_URL}`,
  48. method: "post",
  49. data: data,
  50. });
  51. }
  52. /**
  53. * 修改用户
  54. *
  55. * @param id 用户ID
  56. * @param data 用户表单数据
  57. */
  58. static update(id: number, data: UserForm) {
  59. return request({
  60. url: `${USER_BASE_URL}/${id}`,
  61. method: "put",
  62. data: data,
  63. });
  64. }
  65. /**
  66. * 修改用户密码
  67. *
  68. * @param id 用户ID
  69. * @param password 新密码
  70. */
  71. static resetPassword(id: number, password: string) {
  72. return request({
  73. url: `${USER_BASE_URL}/${id}/password/reset`,
  74. method: "put",
  75. params: { password: password },
  76. });
  77. }
  78. /**
  79. * 批量删除用户,多个以英文逗号(,)分割
  80. *
  81. * @param ids 用户ID字符串,多个以英文逗号(,)分割
  82. */
  83. static deleteByIds(ids: string) {
  84. return request({
  85. url: `${USER_BASE_URL}/${ids}`,
  86. method: "delete",
  87. });
  88. }
  89. /** 下载用户导入模板 */
  90. static downloadTemplate() {
  91. return request({
  92. url: `${USER_BASE_URL}/template`,
  93. method: "get",
  94. responseType: "arraybuffer",
  95. });
  96. }
  97. /**
  98. * 导出用户
  99. *
  100. * @param queryParams 查询参数
  101. */
  102. static export(queryParams: UserPageQuery) {
  103. return request({
  104. url: `${USER_BASE_URL}/export`,
  105. method: "get",
  106. params: queryParams,
  107. responseType: "arraybuffer",
  108. });
  109. }
  110. /**
  111. * 导入用户
  112. *
  113. * @param deptId 部门ID
  114. * @param file 导入文件
  115. */
  116. static import(deptId: number, file: File) {
  117. const formData = new FormData();
  118. formData.append("file", file);
  119. return request({
  120. url: `${USER_BASE_URL}/import`,
  121. method: "post",
  122. params: { deptId: deptId },
  123. data: formData,
  124. headers: {
  125. "Content-Type": "multipart/form-data",
  126. },
  127. });
  128. }
  129. /** 获取个人中心用户信息 */
  130. static getProfile() {
  131. return request<any, UserProfileVO>({
  132. url: `${USER_BASE_URL}/profile`,
  133. method: "get",
  134. });
  135. }
  136. /** 修改个人中心用户信息 */
  137. static updateProfile(data: UserProfileForm) {
  138. return request({
  139. url: `${USER_BASE_URL}/profile`,
  140. method: "put",
  141. data: data,
  142. });
  143. }
  144. /** 修改个人中心用户密码 */
  145. static changePassword(data: PasswordChangeForm) {
  146. return request({
  147. url: `${USER_BASE_URL}/password`,
  148. method: "put",
  149. data: data,
  150. });
  151. }
  152. /**
  153. * 发送手机/邮箱验证码
  154. *
  155. * @param contact 联系方式 手机号/邮箱
  156. * @param contactType 联系方式类型 MOBILE:手机;EMAIL:邮箱
  157. */
  158. static sendVerificationCode(contact: string, contactType: string) {
  159. return request({
  160. url: `${USER_BASE_URL}/send-verification-code`,
  161. method: "get",
  162. params: { contact: contact, contactType: contactType },
  163. });
  164. }
  165. /** 绑定个人中心用户手机 */
  166. static bindMobile(data: MobileBindingForm) {
  167. return request({
  168. url: `${USER_BASE_URL}/mobile`,
  169. method: "put",
  170. data: data,
  171. });
  172. }
  173. /** 绑定个人中心用户邮箱 */
  174. static bindEmail(data: EmailBindingForm) {
  175. return request({
  176. url: `${USER_BASE_URL}/email`,
  177. method: "put",
  178. data: data,
  179. });
  180. }
  181. /**
  182. * 获取用户下拉列表
  183. */
  184. static getOptions() {
  185. return request<any, OptionType[]>({
  186. url: `${USER_BASE_URL}/options`,
  187. method: "get",
  188. });
  189. }
  190. }
  191. export default UserAPI;
  192. /** 登录用户信息 */
  193. export interface UserInfo {
  194. /** 用户ID */
  195. userId?: number;
  196. /** 用户名 */
  197. username?: string;
  198. /** 昵称 */
  199. nickname?: string;
  200. /** 头像URL */
  201. avatar?: string;
  202. /** 角色 */
  203. roles: string[];
  204. /** 权限 */
  205. perms: string[];
  206. }
  207. /**
  208. * 用户分页查询对象
  209. */
  210. export interface UserPageQuery extends PageQuery {
  211. /** 搜索关键字 */
  212. keywords?: string;
  213. /** 用户状态 */
  214. status?: number;
  215. /** 部门ID */
  216. deptId?: number;
  217. /** 开始时间 */
  218. createTime?: [string, string];
  219. }
  220. /** 用户分页对象 */
  221. export interface UserPageVO {
  222. /** 用户头像URL */
  223. avatar?: string;
  224. /** 创建时间 */
  225. createTime?: Date;
  226. /** 部门名称 */
  227. deptName?: string;
  228. /** 用户邮箱 */
  229. email?: string;
  230. /** 性别 */
  231. genderLabel?: string;
  232. /** 用户ID */
  233. id?: number;
  234. /** 手机号 */
  235. mobile?: string;
  236. /** 用户昵称 */
  237. nickname?: string;
  238. /** 角色名称,多个使用英文逗号(,)分割 */
  239. roleNames?: string;
  240. /** 用户状态(1:启用;0:禁用) */
  241. status?: number;
  242. /** 用户名 */
  243. username?: string;
  244. }
  245. /** 用户表单类型 */
  246. export interface UserForm {
  247. /** 用户头像 */
  248. avatar?: string;
  249. /** 部门ID */
  250. deptId?: number;
  251. /** 邮箱 */
  252. email?: string;
  253. /** 性别 */
  254. gender?: number;
  255. /** 用户ID */
  256. id?: number;
  257. /** 手机号 */
  258. mobile?: string;
  259. /** 昵称 */
  260. nickname?: string;
  261. /** 角色ID集合 */
  262. roleIds?: number[];
  263. /** 用户状态(1:正常;0:禁用) */
  264. status?: number;
  265. /** 用户名 */
  266. username?: string;
  267. }
  268. /** 个人中心用户信息 */
  269. export interface UserProfileVO {
  270. /** 用户ID */
  271. id?: number;
  272. /** 用户名 */
  273. username?: string;
  274. /** 昵称 */
  275. nickname?: string;
  276. /** 头像URL */
  277. avatar?: string;
  278. /** 性别 */
  279. gender?: number;
  280. /** 手机号 */
  281. mobile?: string;
  282. /** 邮箱 */
  283. email?: string;
  284. /** 部门名称 */
  285. deptName?: string;
  286. /** 角色名称,多个使用英文逗号(,)分割 */
  287. roleNames?: string;
  288. /** 创建时间 */
  289. createTime?: Date;
  290. }
  291. /** 个人中心用户信息表单 */
  292. export interface UserProfileForm {
  293. /** 用户ID */
  294. id?: number;
  295. /** 用户名 */
  296. username?: string;
  297. /** 昵称 */
  298. nickname?: string;
  299. /** 头像URL */
  300. avatar?: string;
  301. /** 性别 */
  302. gender?: number;
  303. /** 手机号 */
  304. mobile?: string;
  305. /** 邮箱 */
  306. email?: string;
  307. }
  308. /** 修改密码表单 */
  309. export interface PasswordChangeForm {
  310. /** 原密码 */
  311. oldPassword?: string;
  312. /** 新密码 */
  313. newPassword?: string;
  314. /** 确认新密码 */
  315. confirmPassword?: string;
  316. }
  317. /** 修改手机表单 */
  318. export interface MobileBindingForm {
  319. /** 手机号 */
  320. mobile?: string;
  321. /** 验证码 */
  322. code?: string;
  323. }
  324. /** 修改邮箱表单 */
  325. export interface EmailBindingForm {
  326. /** 邮箱 */
  327. email?: string;
  328. /** 验证码 */
  329. code?: string;
  330. }