Files
admin-go/internal/app/system/logic/areaDict/area_dict.go
2026-03-18 10:19:42 +08:00

87 lines
2.5 KiB
Go

/*
* @desc:用户处理
* @company:云南奇讯科技有限公司
* @Author: yixiaohu<yxh669@qq.com>
* @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
}