user.go 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490
  1. package handler
  2. import (
  3. "context"
  4. "dashoo.cn/opms_libary/myerrors"
  5. "dashoo.cn/opms_libary/request"
  6. "github.com/gogf/gf/util/gconv"
  7. "strings"
  8. "github.com/gogf/gf/util/gvalid"
  9. "dashoo.cn/micro/app/model"
  10. "dashoo.cn/micro/app/service"
  11. "dashoo.cn/common_definition/comm_def"
  12. "github.com/gogf/gf/frame/g"
  13. )
  14. type UserHandler struct{}
  15. // GetList 获取用户列表
  16. func (h *UserHandler) GetList(ctx context.Context, req *model.SysUserSearchReq, rsp *comm_def.CommonMsg) error {
  17. userService, err := service.NewUserService(ctx)
  18. if err != nil {
  19. return err
  20. }
  21. total, list, err := userService.GetUserList(req)
  22. if err != nil {
  23. return err
  24. }
  25. rsp.Data = g.Map{"list": list, "total": total}
  26. return nil
  27. }
  28. // Create 添加用户
  29. func (h *UserHandler) Create(ctx context.Context, req *model.AddUserReq, rsp *comm_def.CommonMsg) error {
  30. // 参数校验
  31. if err := gvalid.CheckStruct(ctx, req, nil); err != nil {
  32. return err
  33. }
  34. userService, err := service.NewUserService(ctx)
  35. if err != nil {
  36. g.Log().Error(err)
  37. return err
  38. }
  39. err = userService.CreateUser(req)
  40. if err != nil {
  41. return err
  42. }
  43. return nil
  44. }
  45. // UpdateById 更新用户
  46. func (h *UserHandler) UpdateById(ctx context.Context, req *model.EditUserReq, rsp *comm_def.CommonMsg) error {
  47. // 参数校验
  48. if req.Id == 0 {
  49. return myerrors.TipsError("请求参数不存在。")
  50. }
  51. if err := gvalid.CheckStruct(ctx, req, nil); err != nil {
  52. return err
  53. }
  54. userService, err := service.NewUserService(ctx)
  55. if err != nil {
  56. g.Log().Error(err)
  57. return err
  58. }
  59. err = userService.UpdateUser(req)
  60. if err != nil {
  61. return err
  62. }
  63. return nil
  64. }
  65. // GetUserInfo 获取用户实体信息
  66. func (h *UserHandler) GetUserInfo(ctx context.Context, req *comm_def.IdReq, rsp *comm_def.CommonMsg) error {
  67. userService, err := service.NewUserService(ctx)
  68. if err != nil {
  69. return err
  70. }
  71. // 从上下文中获取用户
  72. userId := userService.GetCxtUserId()
  73. if req.Id != 0 {
  74. userId = int(req.Id)
  75. }
  76. data, err := userService.GetUserInfoById(userId)
  77. if err != nil {
  78. return err
  79. }
  80. // 获取用户权限 角色
  81. userRoles, err := userService.GetUserRoleIds(userId)
  82. if err != nil {
  83. return err
  84. }
  85. roleService, _ := service.NewRoleService(ctx)
  86. roleKeys, err := roleService.GetRoleKeys(userRoles)
  87. if err != nil {
  88. return err
  89. }
  90. permissions, err := roleService.GetRolesMenuPermissions(userRoles)
  91. if err != nil {
  92. return err
  93. }
  94. userPosts, err := userService.GetUserPostIds(userId)
  95. if err != nil {
  96. return err
  97. }
  98. postService, _ := service.NewPostService(ctx)
  99. postNames, err := postService.GetEntityNameByIds(userPosts)
  100. if err != nil {
  101. return err
  102. }
  103. data.PostName = strings.Join(postNames, ",")
  104. userGroups, err := userService.GetUserGroupIds(userId)
  105. if err != nil {
  106. return err
  107. }
  108. rsp.Data = g.Map{
  109. "entity": data,
  110. "permissions": permissions,
  111. "roleKeys": roleKeys,
  112. "roleIds": userRoles,
  113. "postIds": userPosts,
  114. "groupIds": userGroups,
  115. }
  116. return nil
  117. }
  118. // GetEntityByUuId 根据UUID获取用户实体信息
  119. //func (e *UserHandler) GetEntityByUuId(ctx context.Context, req *user_def.UuIdReq, rsp *comm_def.CommonMsg) error {
  120. // // 参数校验
  121. // if req.Uuid == "" {
  122. // return myerrors.TipsError("请求参数不存在。")
  123. // }
  124. // userService, err := service.NewUserService(ctx)
  125. // if err != nil {
  126. // return err
  127. // }
  128. // data, err := userService.GetEntityByUuId(req.Uuid)
  129. // if err != nil {
  130. // return err
  131. // }
  132. // rsp.Data = data
  133. // return nil
  134. //}
  135. // DeleteByIds 删除 支持批量删除
  136. func (h *UserHandler) DeleteByIds(ctx context.Context, req *comm_def.IdsReq, rsp *comm_def.CommonMsg) error {
  137. // 参数校验
  138. if len(req.Ids) == 0 {
  139. return myerrors.TipsError("请求参数不存在。")
  140. }
  141. userService, err := service.NewUserService(ctx)
  142. if err != nil {
  143. return err
  144. }
  145. err = userService.DeleteUserByIds(ctx, req.Ids)
  146. if err != nil {
  147. return err
  148. }
  149. return nil
  150. }
  151. // ResetPassword 密码重置(管理员进行操作)
  152. func (h *UserHandler) ResetPassword(ctx context.Context, req *model.SysResetPwdReq, rsp *comm_def.CommonMsg) error {
  153. if err := gvalid.CheckStruct(ctx, req, nil); err != nil {
  154. return err
  155. }
  156. userService, err := service.NewUserService(ctx)
  157. if err != nil {
  158. return err
  159. }
  160. err = userService.ResetUserPwd(req)
  161. if err != nil {
  162. return err
  163. }
  164. return nil
  165. }
  166. // SetStatus 设置用户状态
  167. func (h *UserHandler) SetStatus(ctx context.Context, req *model.SysUserStatusReq, rsp *comm_def.CommonMsg) error {
  168. if err := gvalid.CheckStruct(ctx, req, nil); err != nil {
  169. return err
  170. }
  171. userService, err := service.NewUserService(ctx)
  172. if err != nil {
  173. return err
  174. }
  175. err = userService.ChangeUserStatus(req)
  176. if err != nil {
  177. return err
  178. }
  179. return nil
  180. }
  181. // GetDataScope 获取某用户数据集合权限,返回Ids(用户Id列表),返回-1表示无角色,返回-2表示有全部集合权限
  182. func (h *UserHandler) GetDataScope(ctx context.Context, req *comm_def.IdReq, rsp *comm_def.CommonMsg) error {
  183. userService, err := service.NewUserService(ctx)
  184. if err != nil {
  185. return err
  186. }
  187. sysUserInfo, err := userService.GetUserInfoById(int(req.Id))
  188. if err != nil {
  189. return err
  190. }
  191. userInfo := new(request.UserInfo)
  192. if err = gconv.Struct(sysUserInfo, userInfo); err != nil {
  193. return err
  194. }
  195. dataScope, err := userService.GetDataScope(userInfo)
  196. if err != nil {
  197. return err
  198. }
  199. rsp.Code = 200
  200. rsp.Data = dataScope
  201. return nil
  202. }
  203. // GetUserByDept 获取部门下所属用户
  204. func (h *UserHandler) GetUserByDept(ctx context.Context, req *model.DeptIdReq, rsp *comm_def.CommonMsg) error {
  205. // 参数校验
  206. if req.DeptId == 0 {
  207. return myerrors.TipsError("请求参数不存在。")
  208. }
  209. userService, err := service.NewUserService(ctx)
  210. if err != nil {
  211. return err
  212. }
  213. var list interface{}
  214. if req.Include {
  215. req := &model.SysUserSearchReq{DeptId: req.DeptId}
  216. req.PageSize = 1000
  217. _, list, err = userService.GetUsersByDeptEx(req)
  218. } else {
  219. list, err = userService.GetUserByDept(req.DeptId)
  220. }
  221. if err != nil {
  222. return err
  223. }
  224. rsp.Data = list
  225. return nil
  226. }
  227. // GetUserByRole 获取角色关联用户
  228. func (h *UserHandler) GetUserByRole(ctx context.Context, req *model.SysUserRoleReq, rsp *comm_def.CommonMsg) error {
  229. // 参数校验
  230. if req.RoleId == 0 {
  231. return myerrors.TipsError("请求参数不存在。")
  232. }
  233. userService, err := service.NewUserService(ctx)
  234. if err != nil {
  235. return err
  236. }
  237. list, err := userService.GetUserByRole(req.RoleId)
  238. if err != nil {
  239. return err
  240. }
  241. rsp.Data = list
  242. return nil
  243. }
  244. //// GetDictList 获取用户列表字典项(返回字典数据形式,一般用来绑定用户的下拉列表)
  245. //func (e *UserHandler) GetDictList(ctx context.Context, req *user_def.DictSelectReq, rsp *comm_def.CommonMsg) error {
  246. // // 获取租户码
  247. // tenant, err := micro_srv.GetTenant(ctx)
  248. // if err != nil {
  249. // return err
  250. // }
  251. // g.Log().Info("Received UserHandler.GetDictList request @ " + tenant)
  252. //
  253. // service, err := user.NewService(tenant)
  254. // if flag, err, _, _ := myerrors.CheckError(err); flag {
  255. // return err
  256. // }
  257. //
  258. // list, err := service.GetDict(req)
  259. // _, err, code, msg := myerrors.CheckError(err)
  260. // if err != nil {
  261. // return err
  262. // }
  263. // rsp.Code = code
  264. // rsp.Msg = msg
  265. // rsp.Data = list
  266. // return nil
  267. //}
  268. //
  269. //// GetUsersDictByDepartment 获取当前部门下用户信息列表(返回字典数据形式,一般用来绑定用户的下拉列表)
  270. //func (e *UserHandler) GetUsersDictByDepartment(ctx context.Context, req *user_def.DeptIdReq,
  271. // rsp *comm_def.CommonMsg) error {
  272. // // 获取租户码
  273. // tenant, err := micro_srv.GetTenant(ctx)
  274. // if err != nil {
  275. // return err
  276. // }
  277. // g.Log().Info("Received UserHandler.GetUsersDictByDepartment request @ " + tenant)
  278. // service, err := user.NewService(tenant)
  279. // if err != nil {
  280. // g.Log().Error(err)
  281. // return myerrors.TipsError("系统异常,请重新尝试")
  282. // }
  283. // list, err := service.GetUsersDictByDepartment(req.DeptId)
  284. // _, err, code, msg := myerrors.CheckError(err)
  285. // if err != nil {
  286. // return err
  287. // }
  288. // rsp.Code = code
  289. // rsp.Msg = msg
  290. // rsp.Data = list
  291. // return nil
  292. //}
  293. //
  294. //// GetProfile 获取用户信息
  295. //func (e *UserHandler) GetProfile(ctx context.Context, numParams interface{}, rsp *comm_def.CommonMsg) error {
  296. // // 获取租户码
  297. // tenant, err := micro_srv.GetTenant(ctx)
  298. // if err != nil {
  299. // return err
  300. // }
  301. // g.Log().Info("Received UserHandler.GetProfile request @ " + tenant)
  302. //
  303. // service, err := user.NewService(tenant)
  304. // if flag, err, _, _ := myerrors.CheckError(err); flag {
  305. // return err
  306. // }
  307. // userInfo, err := micro_srv.GetUserInfo(ctx)
  308. // if err != nil {
  309. // return err
  310. // }
  311. // profile, err := service.GetProfile(int64(userInfo.Id))
  312. // _, err, code, msg := myerrors.CheckError(err)
  313. // if err != nil {
  314. // return err
  315. // }
  316. // rsp.Code = code
  317. // rsp.Msg = msg
  318. // rsp.Data = profile
  319. // return nil
  320. //}
  321. //
  322. //// UpdateProfile 更新Profile
  323. //func (e *UserHandler) UpdateProfile(ctx context.Context, req *user_def.EditProfileEntity, rsp *comm_def.CommonMsg) error {
  324. // // 获取租户码
  325. // tenant, err := micro_srv.GetTenant(ctx)
  326. // if err != nil {
  327. // return err
  328. // }
  329. // g.Log().Info("Received UserHandler.UpdateProfile request @ " + tenant)
  330. // if req.Id == 0 {
  331. // return NoParamsErr
  332. // }
  333. // validErr := gvalid.CheckStruct(ctx, req, nil)
  334. // if validErr != nil {
  335. // return validErr.Current()
  336. // }
  337. // service, err := user.NewService(tenant)
  338. // if flag, err, _, _ := myerrors.CheckError(err); flag {
  339. // return err
  340. // }
  341. // userInfo, err := micro_srv.GetUserInfo(ctx)
  342. // if err != nil {
  343. // return err
  344. // }
  345. // err = service.UpdateProfile(&userInfo, req)
  346. // _, err, code, msg := myerrors.CheckError(err)
  347. // if err != nil {
  348. // return err
  349. // }
  350. // rsp.Code = code
  351. // rsp.Msg = msg
  352. // return nil
  353. //}
  354. //
  355. //// SetAvatar 设置用户头像
  356. //func (e *UserHandler) SetAvatar(ctx context.Context, req *user_def.AvatarReq, rsp *comm_def.CommonMsg) error {
  357. // // 获取租户码
  358. // tenant, err := micro_srv.GetTenant(ctx)
  359. // if err != nil {
  360. // return err
  361. // }
  362. // g.Log().Info("Received UserHandler.SetAvatar request @ " + tenant)
  363. // if req.FileUrl == "" {
  364. // return NoParamsErr
  365. // }
  366. // service, err := user.NewService(tenant)
  367. // if err != nil {
  368. // g.Log().Error(err)
  369. // return myerrors.TipsError("系统异常,请重新尝试")
  370. // }
  371. // userInfo, err := micro_srv.GetUserInfo(ctx)
  372. // if err != nil {
  373. // return err
  374. // }
  375. // err = service.SetAvatar(&userInfo, req.FileUrl)
  376. // _, err, code, msg := myerrors.CheckError(err)
  377. // if err != nil {
  378. // return err
  379. // }
  380. // rsp.Code = code
  381. // rsp.Msg = msg
  382. // return nil
  383. //}
  384. // ChangePassword 用户修改密码
  385. func (h *UserHandler) ChangePassword(ctx context.Context, req *model.SysUserResetPwdReq, rsp *comm_def.CommonMsg) error {
  386. if err := gvalid.CheckStruct(ctx, req, nil); err != nil {
  387. return err
  388. }
  389. userService, err := service.NewUserService(ctx)
  390. if err != nil {
  391. return err
  392. }
  393. err = userService.ProfileUpdatePwd(&model.ProfileUpdatePwdReq{
  394. UserId: userService.GetCxtUserId(),
  395. OldPassword: req.OldPassword,
  396. NewPassword: req.NewPassword,
  397. })
  398. return err
  399. }
  400. //// GetUserByUserName 根据用户名获取用户信息
  401. //func (e *UserHandler) GetUserByUserName(ctx context.Context, req *user_def.UserNameReq, rsp *comm_def.CommonMsg) error {
  402. // // 获取租户码
  403. // tenant, err := micro_srv.GetTenant(ctx)
  404. // if err != nil {
  405. // return err
  406. // }
  407. // g.Log().Info("Received UserHandler.GetUserByUserName request @ " + tenant)
  408. // if req.UserName == "" {
  409. //
  410. // }
  411. // service, err := user.NewService(tenant)
  412. // if err != nil {
  413. // g.Log().Error(err)
  414. // return myerrors.TipsError("系统异常,请重新尝试")
  415. // }
  416. //
  417. // userEntity, err := service.GetUserByUserName(req.UserName)
  418. // _, err, code, msg := myerrors.CheckError(err)
  419. // rsp.Code = code
  420. // rsp.Msg = msg
  421. // rsp.Data = userEntity
  422. // return nil
  423. //}
  424. //
  425. //func (e *UserHandler) SendResetPasswordEmail(ctx context.Context, req *user_def.UserNameReq, rsp *comm_def.CommonMsg) error {
  426. // tenant, err := micro_srv.GetTenant(ctx)
  427. // if err != nil {
  428. // return err
  429. // }
  430. // service, err := user.NewService(tenant)
  431. // if err != nil {
  432. // g.Log().Error(err)
  433. // return myerrors.TipsError("系统异常,请重新尝试")
  434. // }
  435. // email, expired, err := service.SendResetPasswordEmail(req)
  436. // _, err, code, msg := myerrors.CheckError(err)
  437. // rsp.Code = code
  438. // rsp.Msg = msg
  439. // if err == nil {
  440. // rsp.Data = map[string]interface{}{
  441. // "email": email,
  442. // "expired": expired,
  443. // }
  444. // }
  445. // return nil
  446. //}
  447. //
  448. //func (e *UserHandler) ResetPasswordFromEmail(ctx context.Context, req *user.ResetPasswordFromEmailReq, rsp *comm_def.CommonMsg) error {
  449. // tenant, err := micro_srv.GetTenant(ctx)
  450. // if err != nil {
  451. // return err
  452. // }
  453. // service, err := user.NewService(tenant)
  454. // if err != nil {
  455. // g.Log().Error(err)
  456. // return myerrors.TipsError("系统异常,请重新尝试")
  457. // }
  458. // err = service.ResetPasswordFromEmail(ctx, req)
  459. // _, err, code, msg := myerrors.CheckError(err)
  460. // rsp.Code = code
  461. // rsp.Msg = msg
  462. // return nil
  463. //}