/* * @desc:用户处理 * @company:云南奇讯科技有限公司 * @Author: yixiaohu * @Date: 2022/9/23 15:08 */ package tenant import ( "context" "github.com/gogf/gf/v2/container/gset" "github.com/gogf/gf/v2/frame/g" "github.com/tiger1103/gfast/v3/api/v1/system" commonConsts "github.com/tiger1103/gfast/v3/internal/app/common/consts" commonService "github.com/tiger1103/gfast/v3/internal/app/common/service" "github.com/tiger1103/gfast/v3/internal/app/system/consts" "github.com/tiger1103/gfast/v3/internal/app/system/dao" "github.com/tiger1103/gfast/v3/internal/app/system/model" "github.com/tiger1103/gfast/v3/internal/app/system/service" "github.com/tiger1103/gfast/v3/library/liberr" ) func init() { service.RegisterAreaDict(New()) } type sAreaDict struct { } func New() *sAreaDict { return &sAreaDict{} } func (s *sAreaDict) GetAreaDictListSearch(ctx context.Context, req *system.AreaDictListReq) (res *system.AreaDictListRes, err error) { res = new(system.AreaDictListRes) g.Try(ctx, func(ctx context.Context) { model := dao.AreaDictDao.Ctx(ctx) res.Total, err = model.Count() liberr.ErrIsNil(ctx, err, "获取租户数据失败") if req.PageNum == 0 { req.PageNum = 1 } res.CurrentPage = req.PageNum if req.PageSize == 0 { req.PageSize = consts.PageSize } err = model.Page(res.CurrentPage, req.PageSize).Order("id asc").Scan(&res.List) liberr.ErrIsNil(ctx, err, "获取数据失败") }) return } // GetAreaDicById 通过ids查询多个地区信息 func (s *sAreaDict) GetAreaDicById(ctx context.Context, ids []string) (area []*model.AreaDictRes, err error) { if len(ids) == 0 { return } idsSet := gset.NewStrSetFrom(ids).Slice() err = g.Try(ctx, func(ctx context.Context) { err = dao.AreaDictDao.Ctx(ctx).Where(dao.SysUser.Columns().Id+" in(?)", idsSet). Order(dao.AreaDictDao.Columns().Id + " ASC").Scan(&area) }) return } // GetAreaDict 获取所有正常状态下的 func (s *sAreaDict) GetAreaDict(ctx context.Context) (list []*model.AreaDictRes, err error) { cache := commonService.Cache() //从缓存获取 data := cache.Get(ctx, commonConsts.CacheSysDict+"_area") if !data.IsNil() { err = data.Structs(&list) return } err = g.Try(ctx, func(ctx context.Context) { err = dao.AreaDictDao.Ctx(ctx).Where("status", 1).Order("id ASC").Scan(&list) liberr.ErrIsNil(ctx, err, "获取字典类型数据出错") //缓存 cache.Set(ctx, commonConsts.CacheSysDict+"_area", list, 0, commonConsts.CacheSysDictTag) }) return }