package service import ( "context" "icloudapp.cn/tools/service/entity" "icloudapp.cn/tools/service/model" ) type Roles struct { ctx context.Context Base query *model.MRole } func NewRoles(ctx context.Context) *Roles { roles := &Roles{ctx: ctx} roles.query = model.Role return roles } func (r *Roles) Info(roleID int64) (*entity.Role, error) { return r.query.WithContext(r.ctx).Where(r.query.RoleID.Eq(roleID)).Take() } func (r *Roles) Infos(rolesID ...int64) (map[int64]*entity.Role, error) { roles := make(map[int64]*entity.Role, len(rolesID)) rolesInfo, err := r.query.WithContext(r.ctx).Where(r.query.RoleID.In(rolesID...)).Find() if err != nil { return nil, err } for _, val := range rolesInfo { roles[val.RoleID] = val } for _, roleID := range rolesID { if _, ok := roles[roleID]; !ok { roles[roleID] = nil } } return roles, nil }