87 lines
2.5 KiB
Go
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
|
|
}
|