user.go 13 KB

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