user.go 12 KB

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