user.go 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500
  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. //// GetUserBelongDept 获取部门下所属用户
  198. //func (e *UserHandler) GetUserBelongDept(ctx context.Context, req *user_def.DeptIdReq, rsp *comm_def.CommonMsg) error {
  199. // // 获取租户码
  200. // tenant, err := micro_srv.GetTenant(ctx)
  201. // if err != nil {
  202. // return err
  203. // }
  204. // g.Log().Info("Received UserHandler.GetUserBelongDept request @ " + tenant)
  205. // // 参数校验
  206. // if req.DeptId == 0 {
  207. // return NoParamsErr
  208. // }
  209. // service, err := user.NewService(tenant)
  210. // if err != nil {
  211. // g.Log().Error(err)
  212. // return gerror.New("系统异常,请重新尝试")
  213. // }
  214. //
  215. // list, err := service.GetUserBelongDept(req.DeptId)
  216. // _, err, code, msg := myerrors.CheckError(err)
  217. // if err != nil {
  218. // return err
  219. // }
  220. // rsp.Code = code
  221. // rsp.Msg = msg
  222. // rsp.Data = list
  223. // return nil
  224. //}
  225. //
  226. //// GetIdByUuid 根据uuid 获取用户id
  227. //func (e *UserHandler) GetIdByUuid(ctx context.Context, req *user_def.UuIdReq, rsp *comm_def.CommonMsg) error {
  228. // // 获取租户码
  229. // tenant, err := micro_srv.GetTenant(ctx)
  230. // if err != nil {
  231. // return err
  232. // }
  233. // g.Log().Info("Received UserHandler.GetIdByUuid request @ " + tenant)
  234. // // 参数校验
  235. // if req.Uuid == "" {
  236. // return NoParamsErr
  237. // }
  238. // service, err := user.NewService(tenant)
  239. // if err != nil {
  240. // g.Log().Error(err)
  241. // return gerror.New("系统异常,请重新尝试")
  242. // }
  243. //
  244. // userId, err := service.GetIdByUuid(req.Uuid)
  245. // _, err, code, msg := myerrors.CheckError(err)
  246. // if err != nil {
  247. // return err
  248. // }
  249. // rsp.Code = code
  250. // rsp.Msg = msg
  251. // rsp.Data = userId
  252. // return nil
  253. //}
  254. //
  255. //// GetDictList 获取用户列表字典项(返回字典数据形式,一般用来绑定用户的下拉列表)
  256. //func (e *UserHandler) GetDictList(ctx context.Context, req *user_def.DictSelectReq, rsp *comm_def.CommonMsg) error {
  257. // // 获取租户码
  258. // tenant, err := micro_srv.GetTenant(ctx)
  259. // if err != nil {
  260. // return err
  261. // }
  262. // g.Log().Info("Received UserHandler.GetDictList request @ " + tenant)
  263. //
  264. // service, err := user.NewService(tenant)
  265. // if flag, err, _, _ := myerrors.CheckError(err); flag {
  266. // return err
  267. // }
  268. //
  269. // list, err := service.GetDict(req)
  270. // _, err, code, msg := myerrors.CheckError(err)
  271. // if err != nil {
  272. // return err
  273. // }
  274. // rsp.Code = code
  275. // rsp.Msg = msg
  276. // rsp.Data = list
  277. // return nil
  278. //}
  279. //
  280. //// GetUsersDictByDepartment 获取当前部门下用户信息列表(返回字典数据形式,一般用来绑定用户的下拉列表)
  281. //func (e *UserHandler) GetUsersDictByDepartment(ctx context.Context, req *user_def.DeptIdReq,
  282. // 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.GetUsersDictByDepartment request @ " + tenant)
  289. // service, err := user.NewService(tenant)
  290. // if err != nil {
  291. // g.Log().Error(err)
  292. // return gerror.New("系统异常,请重新尝试")
  293. // }
  294. // list, err := service.GetUsersDictByDepartment(req.DeptId)
  295. // _, err, code, msg := myerrors.CheckError(err)
  296. // if err != nil {
  297. // return err
  298. // }
  299. // rsp.Code = code
  300. // rsp.Msg = msg
  301. // rsp.Data = list
  302. // return nil
  303. //}
  304. //
  305. //// GetProfile 获取用户信息
  306. //func (e *UserHandler) GetProfile(ctx context.Context, numParams interface{}, rsp *comm_def.CommonMsg) error {
  307. // // 获取租户码
  308. // tenant, err := micro_srv.GetTenant(ctx)
  309. // if err != nil {
  310. // return err
  311. // }
  312. // g.Log().Info("Received UserHandler.GetProfile request @ " + tenant)
  313. //
  314. // service, err := user.NewService(tenant)
  315. // if flag, err, _, _ := myerrors.CheckError(err); flag {
  316. // return err
  317. // }
  318. // userInfo, err := micro_srv.GetUserInfo(ctx)
  319. // if err != nil {
  320. // return err
  321. // }
  322. // profile, err := service.GetProfile(int64(userInfo.Id))
  323. // _, err, code, msg := myerrors.CheckError(err)
  324. // if err != nil {
  325. // return err
  326. // }
  327. // rsp.Code = code
  328. // rsp.Msg = msg
  329. // rsp.Data = profile
  330. // return nil
  331. //}
  332. //
  333. //// UpdateProfile 更新Profile
  334. //func (e *UserHandler) UpdateProfile(ctx context.Context, req *user_def.EditProfileEntity, rsp *comm_def.CommonMsg) error {
  335. // // 获取租户码
  336. // tenant, err := micro_srv.GetTenant(ctx)
  337. // if err != nil {
  338. // return err
  339. // }
  340. // g.Log().Info("Received UserHandler.UpdateProfile request @ " + tenant)
  341. // if req.Id == 0 {
  342. // return NoParamsErr
  343. // }
  344. // validErr := gvalid.CheckStruct(ctx, req, nil)
  345. // if validErr != nil {
  346. // return validErr.Current()
  347. // }
  348. // service, err := user.NewService(tenant)
  349. // if flag, err, _, _ := myerrors.CheckError(err); flag {
  350. // return err
  351. // }
  352. // userInfo, err := micro_srv.GetUserInfo(ctx)
  353. // if err != nil {
  354. // return err
  355. // }
  356. // err = service.UpdateProfile(&userInfo, req)
  357. // _, err, code, msg := myerrors.CheckError(err)
  358. // if err != nil {
  359. // return err
  360. // }
  361. // rsp.Code = code
  362. // rsp.Msg = msg
  363. // return nil
  364. //}
  365. //
  366. //// SetAvatar 设置用户头像
  367. //func (e *UserHandler) SetAvatar(ctx context.Context, req *user_def.AvatarReq, rsp *comm_def.CommonMsg) error {
  368. // // 获取租户码
  369. // tenant, err := micro_srv.GetTenant(ctx)
  370. // if err != nil {
  371. // return err
  372. // }
  373. // g.Log().Info("Received UserHandler.SetAvatar request @ " + tenant)
  374. // if req.FileUrl == "" {
  375. // return NoParamsErr
  376. // }
  377. // service, err := user.NewService(tenant)
  378. // if err != nil {
  379. // g.Log().Error(err)
  380. // return gerror.New("系统异常,请重新尝试")
  381. // }
  382. // userInfo, err := micro_srv.GetUserInfo(ctx)
  383. // if err != nil {
  384. // return err
  385. // }
  386. // err = service.SetAvatar(&userInfo, req.FileUrl)
  387. // _, err, code, msg := myerrors.CheckError(err)
  388. // if err != nil {
  389. // return err
  390. // }
  391. // rsp.Code = code
  392. // rsp.Msg = msg
  393. // return nil
  394. //}
  395. // ChangePassword 用户修改密码
  396. func (e *UserHandler) ChangePassword(ctx context.Context, req *user_def.PWDReq, rsp *comm_def.CommonMsg) error {
  397. gvalidErr := gvalid.CheckStruct(ctx, req, nil)
  398. if gvalidErr != nil {
  399. return gvalidErr.Current()
  400. }
  401. userService, err := service.NewUserService(ctx)
  402. if err != nil {
  403. return gerror.New("系统异常,请重新尝试")
  404. }
  405. userInfo, err := micro_srv.GetUserInfo(ctx)
  406. if err != nil {
  407. return err
  408. }
  409. err = userService.ProfileUpdatePwd(&model.ProfileUpdatePwdReq{
  410. UserId: userInfo.Id,
  411. OldPassword: req.OldPassword,
  412. NewPassword: req.NewPassword,
  413. })
  414. _, err, rsp.Code, rsp.Msg = myerrors.CheckError(err)
  415. return err
  416. }
  417. //// GetUserByUserName 根据用户名获取用户信息
  418. //func (e *UserHandler) GetUserByUserName(ctx context.Context, req *user_def.UserNameReq, rsp *comm_def.CommonMsg) error {
  419. // // 获取租户码
  420. // tenant, err := micro_srv.GetTenant(ctx)
  421. // if err != nil {
  422. // return err
  423. // }
  424. // g.Log().Info("Received UserHandler.GetUserByUserName request @ " + tenant)
  425. // if req.UserName == "" {
  426. //
  427. // }
  428. // service, err := user.NewService(tenant)
  429. // if err != nil {
  430. // g.Log().Error(err)
  431. // return gerror.New("系统异常,请重新尝试")
  432. // }
  433. //
  434. // userEntity, err := service.GetUserByUserName(req.UserName)
  435. // _, err, code, msg := myerrors.CheckError(err)
  436. // rsp.Code = code
  437. // rsp.Msg = msg
  438. // rsp.Data = userEntity
  439. // return nil
  440. //}
  441. //
  442. //func (e *UserHandler) SendResetPasswordEmail(ctx context.Context, req *user_def.UserNameReq, rsp *comm_def.CommonMsg) error {
  443. // tenant, err := micro_srv.GetTenant(ctx)
  444. // if err != nil {
  445. // return err
  446. // }
  447. // service, err := user.NewService(tenant)
  448. // if err != nil {
  449. // g.Log().Error(err)
  450. // return gerror.New("系统异常,请重新尝试")
  451. // }
  452. // email, expired, err := service.SendResetPasswordEmail(req)
  453. // _, err, code, msg := myerrors.CheckError(err)
  454. // rsp.Code = code
  455. // rsp.Msg = msg
  456. // if err == nil {
  457. // rsp.Data = map[string]interface{}{
  458. // "email": email,
  459. // "expired": expired,
  460. // }
  461. // }
  462. // return nil
  463. //}
  464. //
  465. //func (e *UserHandler) ResetPasswordFromEmail(ctx context.Context, req *user.ResetPasswordFromEmailReq, rsp *comm_def.CommonMsg) error {
  466. // tenant, err := micro_srv.GetTenant(ctx)
  467. // if err != nil {
  468. // return err
  469. // }
  470. // service, err := user.NewService(tenant)
  471. // if err != nil {
  472. // g.Log().Error(err)
  473. // return gerror.New("系统异常,请重新尝试")
  474. // }
  475. // err = service.ResetPasswordFromEmail(ctx, req)
  476. // _, err, code, msg := myerrors.CheckError(err)
  477. // rsp.Code = code
  478. // rsp.Msg = msg
  479. // return nil
  480. //}