user.go 12 KB

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