sys_user.go 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647
  1. package service
  2. import (
  3. "context"
  4. "dashoo.cn/micro/app/common/service"
  5. "dashoo.cn/micro/app/dao"
  6. "dashoo.cn/micro/app/model"
  7. "dashoo.cn/opms_libary/request"
  8. "dashoo.cn/opms_libary/utils"
  9. "errors"
  10. "fmt"
  11. "github.com/gogf/gf/container/gset"
  12. "github.com/gogf/gf/database/gdb"
  13. "github.com/gogf/gf/errors/gerror"
  14. "github.com/gogf/gf/frame/g"
  15. "github.com/gogf/gf/util/gconv"
  16. "github.com/gogf/gf/util/grand"
  17. )
  18. type userService struct {
  19. *contextService
  20. Dao *dao.SysUserDao
  21. }
  22. func NewUserService(ctx context.Context) (svc *userService, err error) {
  23. svc = new(userService)
  24. if svc.contextService, err = svc.Init(ctx); err != nil {
  25. return nil, err
  26. }
  27. svc.Dao = dao.NewSysUserDao(svc.Tenant)
  28. return svc, nil
  29. }
  30. // Login 用户登录,成功返回用户UUID,否则返回空字符串;
  31. func (s *userService) Login(username, password string) (*request.UserInfo, error) {
  32. record, err := s.Dao.Where("user_name", username).Where("status='10'").FindOne()
  33. if err != nil {
  34. return nil, errors.New("系统异常")
  35. }
  36. if record == nil {
  37. return nil, errors.New("账号或密码错误,或限制登录")
  38. }
  39. // 验证密码
  40. if utils.EncryptPassword(password, record.UserSalt) != record.Password {
  41. return nil, gerror.New("账号密码错误")
  42. }
  43. //账号状态
  44. if record.Status == "20" {
  45. return nil, gerror.New("账号已被冻结")
  46. }
  47. userInfo := new(request.UserInfo)
  48. if err = gconv.Struct(record, userInfo); err != nil {
  49. return nil, err
  50. }
  51. // 权限
  52. //permissionService, err := permission.NewService(s.Tenant)
  53. //if err != nil {
  54. // return nil, errors.New("系统异常,请重新尝试")
  55. //}
  56. //userRoles, err := permissionService.GetRoleIdsByUser(userInfo.Id)
  57. //if err != nil {
  58. // return nil, err
  59. //}
  60. //userInfo.Roles = userRoles
  61. return userInfo, nil
  62. }
  63. func (s *userService) GetUserList(req *model.SysUserSearchReq) (total int, userList []*model.SysUser, err error) {
  64. userModel := dao.SysUser.M
  65. if req.KeyWords != "" {
  66. keyWords := "%" + req.KeyWords + "%"
  67. userModel = userModel.Where("user_name like ? or nick_name like ?", keyWords, keyWords)
  68. }
  69. if len(req.DeptIds) != 0 {
  70. userModel = userModel.Where("dept_id in (?)", req.DeptIds)
  71. }
  72. if req.Status != "" {
  73. userModel = userModel.Where("status", gconv.Int(req.Status))
  74. }
  75. if req.Phone != "" {
  76. userModel = userModel.Where("phone like ?", "%"+req.Phone+"%")
  77. }
  78. if req.BeginTime != "" {
  79. userModel = userModel.Where("created_at >=?", req.BeginTime)
  80. }
  81. if req.EndTime != "" {
  82. userModel = userModel.Where("created_at <=?", req.EndTime)
  83. }
  84. total, err = userModel.Count()
  85. if err != nil {
  86. g.Log().Error(err)
  87. err = gerror.New("获取总行数失败")
  88. return
  89. }
  90. if req.PageNum == 0 {
  91. req.PageNum = 1
  92. }
  93. err = userModel.FieldsEx(dao.SysUser.Columns.Password, dao.SysUser.Columns.UserSalt).
  94. Page(req.PageNum, req.PageSize).Order("id asc").Scan(&userList)
  95. return
  96. }
  97. // GetAdminUserByUsernamePassword 后台登陆验证
  98. func (s *userService) GetAdminUserByUsernamePassword(ctx context.Context, req *model.LoginParamsReq) (user *model.LoginUserRes, err error) {
  99. user, err = s.GetUserByUsernamePassword(ctx, req)
  100. if err != nil {
  101. return
  102. }
  103. //判断是否后台用户
  104. //if user.IsAdmin != 1 {
  105. // return nil, gerror.New("抱歉!您不属于后台管理员!")
  106. //}
  107. return
  108. }
  109. // GetUserByUsernamePassword 登陆验证
  110. func (s *userService) GetUserByUsernamePassword(ctx context.Context, req *model.LoginParamsReq) (user *model.LoginUserRes, err error) {
  111. user, err = s.GetUserByUsername(ctx, req.Username)
  112. if err != nil {
  113. return
  114. }
  115. if user == nil {
  116. return nil, gerror.New("账号密码错误")
  117. }
  118. //验证密码
  119. if utils.EncryptPassword(req.Password, user.UserSalt) != user.UserPassword {
  120. return nil, gerror.New("账号密码错误")
  121. }
  122. //账号状态
  123. if user.UserStatus == "20" {
  124. return nil, gerror.New("账号已被冻结")
  125. }
  126. return
  127. }
  128. // GetUserByUsername 通过用户名获取用户信息
  129. func (s *userService) GetUserByUsername(ctx context.Context, userName string) (user *model.LoginUserRes, err error) {
  130. return dao.SysUser.FindByUsername(ctx, userName)
  131. }
  132. // UpdateLoginInfo 更新用户登录信息 保存登录日志
  133. func (s *userService) UpdateLoginInfo(id int, username, ip, userAgent, msg, module string) {
  134. status := 0 //登录状态 0失败 1成功
  135. if id != 0 {
  136. //说明登录成功更新登录信息
  137. status = 1
  138. //dao.SysUser.UpLoginInfo(id, ip)
  139. }
  140. //保存登录日志(异步)
  141. SysLoginLog.Invoke(&model.LoginLogParams{
  142. Status: status,
  143. Username: username,
  144. Ip: ip,
  145. UserAgent: userAgent,
  146. Msg: msg,
  147. Module: module,
  148. })
  149. }
  150. // LoginLog 记录登录日志
  151. func (s *userService) LoginLog(params *model.LoginLogParams) {
  152. //ua := user_agent.New(params.UserAgent)
  153. //browser, _ := ua.Browser()
  154. //loginData := &model.SysLogin{
  155. // LoginName: params.Username,
  156. // Ipaddr: params.Ip,
  157. // LoginLocation: utils.GetCityByIp(params.Ip),
  158. // Browser: browser,
  159. // Os: ua.OS(),
  160. // Status: params.Status,
  161. // Msg: params.Msg,
  162. // LoginTime: gtime.Now(),
  163. // Module: params.Module,
  164. //}
  165. //dao.SysLoginLog.SaveLog(loginData)
  166. }
  167. // SaveOnline 保存用户登录在线状态信息
  168. //func (s *sysUser) SaveOnline(params *model.SysUserOnline) {
  169. // dao.SysUserOnline.SaveOnline(params)
  170. //}
  171. // GetAdminRole 获取用户角色
  172. func (s *userService) GetAdminRole(userId int, allRoleList []*model.SysRole) (roles []*model.SysRole, err error) {
  173. var roleIds []uint
  174. roleIds, err = s.GetAdminRoleIds(userId)
  175. if err != nil {
  176. return
  177. }
  178. roles = make([]*model.SysRole, 0, len(allRoleList))
  179. for _, v := range allRoleList {
  180. for _, id := range roleIds {
  181. if int(id) == v.Id {
  182. roles = append(roles, v)
  183. }
  184. }
  185. if len(roles) == len(roleIds) {
  186. break
  187. }
  188. }
  189. return
  190. }
  191. // GetAdminRoleIds 获取用户角色ids
  192. func (s *userService) GetAdminRoleIds(userId int) (roleIds []uint, err error) {
  193. enforcer, e := service.Casbin.GetEnforcer()
  194. if e != nil {
  195. err = e
  196. return
  197. }
  198. //查询关联角色规则
  199. groupPolicy := enforcer.GetFilteredGroupingPolicy(0, gconv.String(userId))
  200. if len(groupPolicy) > 0 {
  201. roleIds = make([]uint, len(groupPolicy))
  202. //得到角色id的切片
  203. for k, v := range groupPolicy {
  204. roleIds[k] = gconv.Uint(v[1])
  205. }
  206. }
  207. return
  208. }
  209. // AddUserPost 添加用户岗位信息
  210. func (s *userService) AddUserPost(postIds []int, userId int64, tx *gdb.TX) (err error) {
  211. //删除旧岗位信息
  212. _, err = dao.SysUserPost.TX(tx).Where(dao.SysUserPost.Columns.UserId, userId).Delete()
  213. if err != nil {
  214. g.Log().Error(err)
  215. return
  216. }
  217. if len(postIds) == 0 {
  218. return
  219. }
  220. //添加用户岗位信息
  221. data := g.List{}
  222. for _, v := range postIds {
  223. data = append(data, g.Map{
  224. dao.SysUserPost.Columns.UserId: userId,
  225. dao.SysUserPost.Columns.PostId: v,
  226. })
  227. }
  228. _, err = dao.SysUserPost.TX(tx).Data(data).Insert()
  229. if err != nil {
  230. g.Log().Error(err)
  231. return
  232. }
  233. return
  234. }
  235. // GetUserInfoById 通过Id获取用户信息
  236. func (s *userService) GetUserInfoById(id int, withPwd ...bool) (user *model.SysUser, err error) {
  237. if len(withPwd) > 0 && withPwd[0] {
  238. //用户用户信息
  239. err = dao.SysUser.Where(dao.SysUser.Columns.Id, id).Scan(&user)
  240. } else {
  241. //用户用户信息
  242. err = dao.SysUser.Where(dao.SysUser.Columns.Id, id).
  243. FieldsEx(dao.SysUser.Columns.Password, dao.SysUser.Columns.UserSalt).Scan(&user)
  244. }
  245. if err != nil {
  246. g.Log().Error(err)
  247. return nil, errors.New("获取用户数据失败")
  248. }
  249. return
  250. }
  251. // GetEditUser 获取要修改的用户信息
  252. func (s *userService) GetEditUser(id int) (g.Map, error) {
  253. userData, err := s.GetUserInfoById(id)
  254. //获取角色信息
  255. //roleList, err := SysRole.GetRoleList()
  256. if err != nil {
  257. g.Log().Error(err)
  258. return nil, errors.New("获取角色数据失败")
  259. }
  260. //获取已选择的角色信息
  261. checkedRoleIds, err := s.GetAdminRoleIds(id)
  262. if err != nil {
  263. g.Log().Error(err)
  264. return nil, errors.New("获取用户角色数据失败")
  265. }
  266. if checkedRoleIds == nil {
  267. checkedRoleIds = []uint{}
  268. }
  269. //获取岗位信息
  270. posts, err := s.GetUsedPost()
  271. if err != nil {
  272. return nil, err
  273. }
  274. checkedPosts, err := s.GetUserPostIds(id)
  275. if err != nil {
  276. return nil, err
  277. }
  278. if checkedPosts == nil {
  279. checkedPosts = []int{}
  280. }
  281. res := g.Map{
  282. //"roleList": roleList,
  283. "userInfo": userData,
  284. "checkedRoleIds": checkedRoleIds,
  285. "posts": posts,
  286. "checkedPosts": checkedPosts,
  287. }
  288. return res, nil
  289. }
  290. // GetUsedPost 获取正常状态的岗位
  291. func (s *userService) GetUsedPost() (list []*model.SysPost, err error) {
  292. err = dao.SysPost.Where(dao.SysPost.Columns.Status, 1).
  293. Order(dao.SysPost.Columns.Sort + " ASC, " + dao.SysPost.Columns.Id + " ASC ").Scan(&list)
  294. if err != nil {
  295. g.Log().Error(err)
  296. err = gerror.New("获取岗位数据失败")
  297. }
  298. return
  299. }
  300. // GetUserPostIds 获取用户岗位
  301. func (s *userService) GetUserPostIds(userId int) (postIds []int, err error) {
  302. var list []*model.SysUserPost
  303. err = dao.SysUserPost.Where(dao.SysUserPost.Columns.UserId, userId).Scan(&list)
  304. if err != nil {
  305. g.Log().Error(err)
  306. return nil, gerror.New("获取用户岗位信息失败")
  307. }
  308. postIds = make([]int, 0)
  309. for _, entity := range list {
  310. postIds = append(postIds, int(entity.PostId))
  311. }
  312. return
  313. }
  314. // GetPostsByUserId 根据用户id获取岗位信息详情
  315. func (s *userService) GetPostsByUserId(userId int) ([]*model.SysPost, error) {
  316. postIds, err := s.GetUserPostIds(userId)
  317. if err != nil {
  318. return nil, err
  319. }
  320. var posts []*model.SysPost
  321. err = dao.SysPost.Where(dao.SysPost.Columns.Id+" in (?)", postIds).Scan(&posts)
  322. return posts, err
  323. }
  324. func (s *userService) CreateUser(req *model.AddUserReq) (err error) {
  325. req.UserSalt = grand.S(10)
  326. req.Password = utils.EncryptPassword(req.Password, req.UserSalt)
  327. var tx *gdb.TX
  328. tx, err = g.DB().Begin()
  329. if err != nil {
  330. err = gerror.New("事务开启失败")
  331. return
  332. }
  333. Model := dao.SysUser.TX(tx)
  334. if i, _ := Model.Where("user_name=?", req.UserName).Count(); i != 0 {
  335. err = gerror.New("用户名已经存在")
  336. tx.Rollback()
  337. return
  338. }
  339. if i, _ := Model.Where("phone=?", req.Phone).Count(); i != 0 {
  340. err = gerror.New("手机号已经存在")
  341. tx.Rollback()
  342. return
  343. }
  344. userData := new(model.SysUser)
  345. //userData.UserName = req.UserName
  346. //userData.DeptId = req.DeptId
  347. //userData.Status = req.Status
  348. //userData.Phone = req.Phone
  349. //userData.Sex = req.Sex
  350. //userData.Email = req.Email
  351. //userData.NickName = req.NickName
  352. //userData.UserSalt = req.UserSalt
  353. //userData.Password = req.Password
  354. //userData.Remark = req.Remark
  355. if err = gconv.Struct(req, userData); err != nil {
  356. tx.Rollback()
  357. return
  358. }
  359. SetCreatedInfo(userData, s.GetCxtUserId(), s.GetCxtUserName())
  360. res, err := Model.Insert(userData)
  361. if err != nil {
  362. tx.Rollback()
  363. return
  364. }
  365. InsertId, _ := res.LastInsertId()
  366. fmt.Println(InsertId)
  367. //err = s.AddUserRole(req.RoleIds, InsertId)
  368. //if err != nil {
  369. // g.Log().Error(err)
  370. // err = gerror.New("设置用户权限失败")
  371. // tx.Rollback()
  372. // return
  373. //}
  374. //err = s.AddUserPost(req.PostIds, InsertId, tx)
  375. if err != nil {
  376. g.Log().Error(err)
  377. err = gerror.New("设置用户岗位信息失败")
  378. tx.Rollback()
  379. return
  380. }
  381. tx.Commit()
  382. return
  383. }
  384. // AddUserRole 添加用户角色信息
  385. func (s *userService) AddUserRole(roleIds interface{}, userId int64) (err error) {
  386. enforcer, e := service.Casbin.GetEnforcer()
  387. if e != nil {
  388. err = e
  389. return
  390. }
  391. rule := gconv.Ints(roleIds)
  392. for _, v := range rule {
  393. _, err = enforcer.AddGroupingPolicy(fmt.Sprintf("%d", userId), fmt.Sprintf("%d", v))
  394. if err != nil {
  395. return
  396. }
  397. }
  398. return
  399. }
  400. // UpdateUser 修改用户
  401. func (s *userService) UpdateUser(req *model.EditUserReq) (err error) {
  402. if i, _ := dao.SysUser.Where("id!=? and phone=?", req.Id, req.Phone).Count(); i != 0 {
  403. err = gerror.New("手机号已经存在")
  404. return
  405. }
  406. var tx *gdb.TX
  407. tx, err = g.DB().Begin()
  408. //保存管理员信息
  409. var userData *model.SysUser
  410. err = dao.SysUser.Where("id", req.Id).Scan(&userData)
  411. if err != nil || userData == nil {
  412. g.Log().Error(err)
  413. err = gerror.New("获取用户信息失败")
  414. return
  415. }
  416. //userData.DeptId = req.DeptId
  417. //userData.Status = req.Status
  418. //userData.Phone = req.Phone
  419. //userData.Sex = req.Sex
  420. //userData.Email = req.Email
  421. //userData.NickName = req.NickName
  422. //userData.Remark = req.Remark
  423. if err = gconv.Struct(req, userData); err != nil {
  424. tx.Rollback()
  425. return
  426. }
  427. SetUpdatedInfo(userData, s.GetCxtUserId(), s.GetCxtUserName())
  428. _, err = dao.SysUser.TX(tx).FieldsEx(dao.SysUser.Columns.Id, dao.SysUser.Columns.CreatedTime,
  429. dao.SysUser.Columns.DeletedTime, dao.SysUser.Columns.LoginDate).
  430. WherePri(userData.Id).Update(userData)
  431. if err != nil {
  432. g.Log().Error(err)
  433. err = gerror.New("修改用户信息失败")
  434. tx.Rollback()
  435. return
  436. }
  437. //设置用户所属角色信息
  438. //err = s.EditUserRole(req.RoleIds, req.Id)
  439. //if err != nil {
  440. // g.Log().Error(err)
  441. // err = gerror.New("设置用户权限失败")
  442. // tx.Rollback()
  443. // return
  444. //}
  445. //设置用户岗位数据
  446. //err = s.AddUserPost(req.PostIds, int64(req.Id), tx)
  447. //if err != nil {
  448. // g.Log().Error(err)
  449. // err = gerror.New("设置用户岗位信息失败")
  450. // tx.Rollback()
  451. // return
  452. //}
  453. tx.Commit()
  454. return
  455. }
  456. // EditUserRole 修改用户角色信息
  457. func (s *userService) EditUserRole(roleIds interface{}, userId int) (err error) {
  458. enforcer, e := service.Casbin.GetEnforcer()
  459. if e != nil {
  460. err = e
  461. return
  462. }
  463. rule := gconv.Ints(roleIds)
  464. //删除用户旧角色信息
  465. enforcer.RemoveFilteredGroupingPolicy(0, fmt.Sprintf("%d", userId))
  466. for _, v := range rule {
  467. _, err = enforcer.AddGroupingPolicy(fmt.Sprintf("%d", userId), fmt.Sprintf("%d", v))
  468. if err != nil {
  469. return
  470. }
  471. }
  472. return
  473. }
  474. // ResetUserPwd 重置用户密码
  475. func (s *userService) ResetUserPwd(req *model.SysUserResetPwdReq) error {
  476. salt := grand.S(10)
  477. password := utils.EncryptPassword(req.Password, salt)
  478. _, err := dao.SysUser.WherePri(req.Id).Update(g.Map{
  479. dao.SysUser.Columns.UserSalt: salt,
  480. dao.SysUser.Columns.Password: password,
  481. })
  482. return err
  483. }
  484. func (s *userService) ChangeUserStatus(req *model.SysUserStatusReq) error {
  485. _, err := dao.SysUser.WherePri(req.Id).Update(g.Map{
  486. dao.SysUser.Columns.Status: req.UserStatus,
  487. })
  488. return err
  489. }
  490. // DeleteUserByIds 删除用户信息
  491. func (s *userService) DeleteUserByIds(ctx context.Context, ids []int64) error {
  492. return g.DB().Transaction(ctx, func(ctx context.Context, tx *gdb.TX) error {
  493. _, err := s.Dao.Ctx(ctx).TX(tx).Where(dao.SysUser.Columns.Id+" in(?)", ids).Delete()
  494. //删除对应权限
  495. enforcer, err := service.Casbin.GetEnforcer()
  496. if err == nil {
  497. for _, v := range ids {
  498. enforcer.RemoveFilteredGroupingPolicy(0, fmt.Sprintf("%d", v))
  499. }
  500. }
  501. //删除用户对应的岗位
  502. _, err = dao.SysUserPost.Ctx(ctx).TX(tx).Delete(dao.SysUserPost.Columns.UserId+" in (?)", ids)
  503. return err
  504. })
  505. }
  506. // SetAvatar 修改用户头像
  507. func (s *userService) SetAvatar(userId int, avatarUrl string) error {
  508. _, err := dao.SysUser.WherePri(userId).Unscoped().Update(g.Map{
  509. dao.SysUser.Columns.Avatar: avatarUrl,
  510. })
  511. return err
  512. }
  513. // ProfileEdit 修改个人资料
  514. func (s *userService) ProfileEdit(req *model.ProfileUpReq) error {
  515. _, err := dao.SysUser.WherePri(req.UserId).Unscoped().Update(req)
  516. return err
  517. }
  518. // ProfileUpdatePwd 修改个人密码
  519. func (s *userService) ProfileUpdatePwd(req *model.ProfileUpdatePwdReq) error {
  520. userInfo, err := s.GetUserInfoById(req.UserId, true)
  521. if err != nil {
  522. return err
  523. }
  524. oldPassword := utils.EncryptPassword(req.OldPassword, userInfo.UserSalt)
  525. if oldPassword != userInfo.Password {
  526. return errors.New("原始密码错误!")
  527. }
  528. salt := grand.S(10)
  529. newPassword := utils.EncryptPassword(req.NewPassword, salt)
  530. _, err = dao.SysUser.WherePri(req.UserId).Unscoped().Update(g.Map{
  531. dao.SysUser.Columns.UserSalt: salt,
  532. dao.SysUser.Columns.Password: newPassword,
  533. })
  534. return err
  535. }
  536. // GetDataWhere 获取数据权限判断条件
  537. //func (s *sysUser) GetDataWhere(userInfo *dao.CtxUser, entity interface{}) (where g.Map, err error) {
  538. // whereJustMe := g.Map{} //本人数据权限
  539. // t := reflect.TypeOf(entity)
  540. // for i := 0; i < t.Elem().NumField(); i++ {
  541. // if t.Elem().Field(i).Name == "CreatedBy" {
  542. // //若存在用户id的字段,则生成判断数据权限的条件
  543. // //1、获取当前用户所属角色
  544. // allRoles := ([]*model.SysRole)(nil)
  545. // allRoles, err = SysRole.GetRoleList()
  546. // if err != nil {
  547. // return nil, err
  548. // }
  549. // roles := ([]*model.SysRole)(nil)
  550. // roles, err = s.GetAdminRole(userInfo.Id, allRoles)
  551. // if err != nil {
  552. // return nil, err
  553. // }
  554. // //2获取角色对应数据权限
  555. // deptIdArr := gset.New()
  556. // for _, role := range roles {
  557. // switch role.DataScope {
  558. // case 1: //全部数据权限
  559. // return
  560. // case 2: //自定数据权限
  561. // var deptIds []int
  562. // deptIds, err = Dept.GetRoleDepts(gconv.int(role.Id))
  563. // if err != nil {
  564. // return
  565. // }
  566. // deptIdArr.Add(gconv.Interfaces(deptIds)...)
  567. // case 3: //本部门数据权限
  568. // deptIdArr.Add(gconv.int(userInfo.DeptId))
  569. // case 4: //本部门及以下数据权限
  570. // deptIdArr.Add(gconv.int(userInfo.DeptId))
  571. // //获取正常状态部门数据
  572. // depts := ([]*model.SysDept)(nil)
  573. // depts, err = Dept.GetList(&dao.SysDeptSearchParams{Status: "1"})
  574. // if err != nil {
  575. // return
  576. // }
  577. // var dList g.List
  578. // for _, d := range depts {
  579. // m := g.Map{
  580. // "id": d.DeptId,
  581. // "pid": d.ParentId,
  582. // "label": d.DeptName,
  583. // }
  584. // dList = append(dList, m)
  585. // }
  586. // l := library.FindSonByParentId(dList, gconv.Int(userInfo.DeptId), "pid", "id")
  587. // for _, li := range l {
  588. // deptIdArr.Add(gconv.int(li["id"]))
  589. // }
  590. // case 5: //仅本人数据权限
  591. // whereJustMe = g.Map{"user.id": userInfo.Id}
  592. // }
  593. // }
  594. // if deptIdArr.Size() > 0 {
  595. // where = g.Map{"user.dept_id": deptIdArr.Slice()}
  596. // } else if len(whereJustMe) > 0 {
  597. // where = whereJustMe
  598. // }
  599. // }
  600. // }
  601. // return
  602. //}
  603. // GetUsers 通过用户ids查询多个用户信息
  604. func (s *userService) GetUsers(ids []int) (users []*model.SysUserRes, err error) {
  605. if len(ids) == 0 {
  606. return
  607. }
  608. idsSet := gset.NewIntSetFrom(ids).Slice()
  609. err = dao.SysUser.Where(dao.SysUser.Columns.Id+" in(?)", idsSet).Fields(model.SysUserRes{}).
  610. Order(dao.SysUser.Columns.Id + " ASC").Scan(&users)
  611. return
  612. }