roles.go 875 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. package service
  2. import (
  3. "context"
  4. "icloudapp.cn/tools/service/entity"
  5. "icloudapp.cn/tools/service/model"
  6. )
  7. type Roles struct {
  8. ctx context.Context
  9. Base
  10. query *model.MRole
  11. }
  12. func NewRoles(ctx context.Context) *Roles {
  13. roles := &Roles{ctx: ctx}
  14. roles.query = model.Role
  15. return roles
  16. }
  17. func (r *Roles) Info(roleID int64) (*entity.Role, error) {
  18. return r.query.WithContext(r.ctx).Where(r.query.RoleID.Eq(roleID)).Take()
  19. }
  20. func (r *Roles) Infos(rolesID ...int64) (map[int64]*entity.Role, error) {
  21. roles := make(map[int64]*entity.Role, len(rolesID))
  22. rolesInfo, err := r.query.WithContext(r.ctx).Where(r.query.RoleID.In(rolesID...)).Find()
  23. if err != nil {
  24. return nil, err
  25. }
  26. for _, val := range rolesInfo {
  27. roles[val.RoleID] = val
  28. }
  29. for _, roleID := range rolesID {
  30. if _, ok := roles[roleID]; !ok {
  31. roles[roleID] = nil
  32. }
  33. }
  34. return roles, nil
  35. }