user.go 14 KB

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