diff --git a/api/v1/system/sys_dict_data.go b/api/v1/system/sys_dict_data.go index d9a4b74..cdf8054 100644 --- a/api/v1/system/sys_dict_data.go +++ b/api/v1/system/sys_dict_data.go @@ -9,7 +9,9 @@ package system import ( "github.com/gogf/gf/v2/frame/g" + commonApi "github.com/tiger1103/gfast/v3/api/v1/common" commonModel "github.com/tiger1103/gfast/v3/internal/app/common/model" + commonEntity "github.com/tiger1103/gfast/v3/internal/app/common/model/entity" ) // GetDictReq 获取字典信息请求参数 @@ -26,3 +28,66 @@ type GetDictRes struct { Info *commonModel.DictTypeRes `json:"info"` Values []*commonModel.DictDataRes `json:"values"` } + +// DictDataSearchReq 分页请求参数 +type DictDataSearchReq struct { + g.Meta `path:"/dict/data/list" tags:"字典管理" method:"get" summary:"字典数据列表"` + DictType string `p:"dictType"` //字典类型 + DictLabel string `p:"dictLabel"` //字典标签 + Status string `p:"status"` //状态 + commonApi.PageReq +} + +// DictDataSearchRes 字典数据结果 +type DictDataSearchRes struct { + g.Meta `mime:"application/json"` + List []*commonEntity.SysDictData `json:"list"` + commonApi.ListRes +} + +type DictDataReq struct { + DictLabel string `p:"dictLabel" v:"required#字典标签不能为空"` + DictValue string `p:"dictValue" v:"required#字典键值不能为空"` + DictType string `p:"dictType" v:"required#字典类型不能为空"` + DictSort int `p:"dictSort" v:"integer#排序只能为整数"` + CssClass string `p:"cssClass"` + ListClass string `p:"listClass"` + IsDefault int `p:"isDefault" v:"required|in:0,1#系统默认不能为空|默认值只能为0或1"` + Status int `p:"status" v:"required|in:0,1#状态不能为空|状态只能为0或1"` + Remark string `p:"remark"` +} + +type DictDataAddReq struct { + g.Meta `path:"/dict/data/add" tags:"字典管理" method:"post" summary:"添加字典数据"` + *DictDataReq +} + +type DictDataAddRes struct { +} + +type DictDataGetReq struct { + g.Meta `path:"/dict/data/get" tags:"字典管理" method:"get" summary:"获取字典数据"` + DictCode uint `p:"dictCode"` +} + +type DictDataGetRes struct { + g.Meta `mime:"application/json"` + Dict *commonEntity.SysDictData `json:"dict"` +} + +type DictDataEditReq struct { + g.Meta `path:"/dict/data/edit" tags:"字典管理" method:"put" summary:"修改字典数据"` + DictCode int `p:"dictCode" v:"required|min:1#主键ID不能为空|主键ID不能小于1"` + *DictDataReq +} + +type DictDataEditRes struct { +} + +type DictDataDeleteReq struct { + g.Meta `path:"/dict/data/delete" tags:"字典管理" method:"delete" summary:"删除字典数据"` + Ids []int `p:"ids"` +} + +type DictDataDeleteRes struct { +} diff --git a/api/v1/system/sys_dict_type.go b/api/v1/system/sys_dict_type.go index be62065..c92afc7 100644 --- a/api/v1/system/sys_dict_type.go +++ b/api/v1/system/sys_dict_type.go @@ -10,8 +10,8 @@ package system import ( "github.com/gogf/gf/v2/frame/g" commonApi "github.com/tiger1103/gfast/v3/api/v1/common" - "github.com/tiger1103/gfast/v3/internal/app/common/model" - "github.com/tiger1103/gfast/v3/internal/app/common/model/entity" + commonModel "github.com/tiger1103/gfast/v3/internal/app/common/model" + commonEntity "github.com/tiger1103/gfast/v3/internal/app/common/model/entity" ) type DictTypeSearchReq struct { @@ -24,7 +24,7 @@ type DictTypeSearchReq struct { type DictTypeSearchRes struct { g.Meta `mime:"application/json"` - DictTypeList []*model.SysDictTypeInfoRes `json:"dictTypeList"` + DictTypeList []*commonModel.SysDictTypeInfoRes `json:"dictTypeList"` commonApi.ListRes } @@ -46,7 +46,7 @@ type DictTypeGetReq struct { type DictTypeGetRes struct { g.Meta `mime:"application/json"` - DictType *entity.SysDictType `json:"dictType"` + DictType *commonEntity.SysDictType `json:"dictType"` } type DictTypeEditReq struct { diff --git a/internal/app/common/consts/consts.go b/internal/app/common/consts/consts.go index 8f8dfcb..9303cfa 100644 --- a/internal/app/common/consts/consts.go +++ b/internal/app/common/consts/consts.go @@ -6,5 +6,3 @@ */ package consts - -const () diff --git a/internal/app/common/service/sys_dict_data.go b/internal/app/common/service/sys_dict_data.go index 6fc19bd..ad377e5 100644 --- a/internal/app/common/service/sys_dict_data.go +++ b/internal/app/common/service/sys_dict_data.go @@ -13,14 +13,21 @@ import ( "github.com/gogf/gf/v2/text/gstr" "github.com/gogf/gf/v2/util/gconv" "github.com/tiger1103/gfast/v3/api/v1/system" - commonConsts "github.com/tiger1103/gfast/v3/internal/app/common/consts" - commonModel "github.com/tiger1103/gfast/v3/internal/app/common/model" - commonDao "github.com/tiger1103/gfast/v3/internal/app/common/service/internal/dao" + "github.com/tiger1103/gfast/v3/internal/app/common/consts" + "github.com/tiger1103/gfast/v3/internal/app/common/model" + "github.com/tiger1103/gfast/v3/internal/app/common/service/internal/dao" + "github.com/tiger1103/gfast/v3/internal/app/common/service/internal/do" + systemConsts "github.com/tiger1103/gfast/v3/internal/app/system/consts" "github.com/tiger1103/gfast/v3/library/liberr" ) type IDictData interface { GetDictWithDataByType(ctx context.Context, req *system.GetDictReq) (dict *system.GetDictRes, err error) + List(ctx context.Context, req *system.DictDataSearchReq) (res *system.DictDataSearchRes, err error) + Add(ctx context.Context, req *system.DictDataAddReq, userId uint64) (err error) + Get(ctx context.Context, dictCode uint) (res *system.DictDataGetRes, err error) + Edit(ctx context.Context, req *system.DictDataEditReq, userId uint64) (err error) + Delete(ctx context.Context, ids []int) (err error) } type dictDataImpl struct { @@ -36,26 +43,26 @@ func DictData() IDictData { func (s dictDataImpl) GetDictWithDataByType(ctx context.Context, req *system.GetDictReq) (dict *system.GetDictRes, err error) { cache := Cache() - cacheKey := commonConsts.CacheSysDict + "_" + req.DictType + cacheKey := consts.CacheSysDict + "_" + req.DictType //从缓存获取 iDict := cache.GetOrSetFuncLock(ctx, cacheKey, func(ctx context.Context) (value interface{}, err error) { err = g.Try(func() { //从数据库获取 dict = &system.GetDictRes{} //获取类型数据 - err = commonDao.SysDictType.Ctx(ctx).Where(commonDao.SysDictType.Columns().DictType, req.DictType). - Where(commonDao.SysDictType.Columns().Status, 1).Fields(commonModel.DictTypeRes{}).Scan(&dict.Info) + err = dao.SysDictType.Ctx(ctx).Where(dao.SysDictType.Columns().DictType, req.DictType). + Where(dao.SysDictType.Columns().Status, 1).Fields(model.DictTypeRes{}).Scan(&dict.Info) liberr.ErrIsNil(ctx, err, "获取字典类型失败") - err = commonDao.SysDictData.Ctx(ctx).Fields(commonModel.DictDataRes{}). - Where(commonDao.SysDictData.Columns().DictType, req.DictType). - Order(commonDao.SysDictData.Columns().DictSort + " asc," + - commonDao.SysDictData.Columns().DictCode + " asc"). + err = dao.SysDictData.Ctx(ctx).Fields(model.DictDataRes{}). + Where(dao.SysDictData.Columns().DictType, req.DictType). + Order(dao.SysDictData.Columns().DictSort + " asc," + + dao.SysDictData.Columns().DictCode + " asc"). Scan(&dict.Values) liberr.ErrIsNil(ctx, err, "获取字典数据失败") }) value = dict return - }, 0, commonConsts.CacheSysDictTag) + }, 0, consts.CacheSysDictTag) if iDict != nil { err = gconv.Struct(iDict, &dict) if err != nil { @@ -74,3 +81,99 @@ func (s dictDataImpl) GetDictWithDataByType(ctx context.Context, req *system.Get } return } + +// List 获取字典数据 +func (s dictDataImpl) List(ctx context.Context, req *system.DictDataSearchReq) (res *system.DictDataSearchRes, err error) { + res = new(system.DictDataSearchRes) + err = g.Try(func() { + m := dao.SysDictData.Ctx(ctx) + if req != nil { + if req.DictLabel != "" { + m = m.Where(dao.SysDictData.Columns().DictLabel+" like ?", "%"+req.DictLabel+"%") + } + if req.Status != "" { + m = m.Where(dao.SysDictData.Columns().Status+" = ", gconv.Int(req.Status)) + } + if req.DictType != "" { + m = m.Where(dao.SysDictData.Columns().DictType+" = ?", req.DictType) + } + res.Total, err = m.Count() + liberr.ErrIsNil(ctx, err, "获取字典数据失败") + if req.PageNum == 0 { + req.PageNum = 1 + } + res.CurrentPage = req.PageNum + } + if req.PageSize == 0 { + req.PageSize = systemConsts.PageSize + } + err = m.Page(req.PageNum, req.PageSize).Order(dao.SysDictData.Columns().DictSort + " asc," + + dao.SysDictData.Columns().DictCode + " asc").Scan(&res.List) + liberr.ErrIsNil(ctx, err, "获取字典数据失败") + }) + return +} + +func (s *dictDataImpl) Add(ctx context.Context, req *system.DictDataAddReq, userId uint64) (err error) { + err = g.Try(func() { + _, err = dao.SysDictData.Ctx(ctx).Insert(do.SysDictData{ + DictSort: req.DictSort, + DictLabel: req.DictLabel, + DictValue: req.DictValue, + DictType: req.DictType, + CssClass: req.CssClass, + ListClass: req.ListClass, + IsDefault: req.IsDefault, + Status: req.Status, + CreateBy: userId, + Remark: req.Remark, + }) + liberr.ErrIsNil(ctx, err, "添加字典数据失败") + //清除缓存 + Cache().RemoveByTag(ctx, consts.CacheSysDictTag) + }) + return +} + +// Get 获取字典数据 +func (s *dictDataImpl) Get(ctx context.Context, dictCode uint) (res *system.DictDataGetRes, err error) { + res = new(system.DictDataGetRes) + err = g.Try(func() { + err = dao.SysDictData.Ctx(ctx).WherePri(dictCode).Scan(&res.Dict) + liberr.ErrIsNil(ctx, err, "获取字典数据失败") + }) + return +} + +// Edit 修改字典数据 +func (s *dictDataImpl) Edit(ctx context.Context, req *system.DictDataEditReq, userId uint64) (err error) { + err = g.Try(func() { + _, err = dao.SysDictData.Ctx(ctx).WherePri(req.DictCode).Update(do.SysDictData{ + DictSort: req.DictSort, + DictLabel: req.DictLabel, + DictValue: req.DictValue, + DictType: req.DictType, + CssClass: req.CssClass, + ListClass: req.ListClass, + IsDefault: req.IsDefault, + Status: req.Status, + UpdateBy: userId, + Remark: req.Remark, + }) + liberr.ErrIsNil(ctx, err, "修改字典数据失败") + //清除缓存 + Cache().RemoveByTag(ctx, consts.CacheSysDictTag) + }) + return +} + +// Delete 删除字典数据 +func (s *dictDataImpl) Delete(ctx context.Context, ids []int) (err error) { + err = g.Try(func() { + _, err = dao.SysDictData.Ctx(ctx).Where(dao.SysDictData.Columns().DictCode+" in(?)", ids).Delete() + liberr.ErrIsNil(ctx, err, "删除字典数据失败") + //清除缓存 + Cache().RemoveByTag(ctx, consts.CacheSysDictTag) + }) + return +} diff --git a/internal/app/common/service/sys_dict_type.go b/internal/app/common/service/sys_dict_type.go index 833e3b7..a8e37f3 100644 --- a/internal/app/common/service/sys_dict_type.go +++ b/internal/app/common/service/sys_dict_type.go @@ -7,7 +7,6 @@ package service -import "C" import ( "context" "github.com/gogf/gf/v2/container/garray" @@ -16,12 +15,12 @@ import ( "github.com/gogf/gf/v2/frame/g" "github.com/gogf/gf/v2/util/gconv" "github.com/tiger1103/gfast/v3/api/v1/system" - commonConsts "github.com/tiger1103/gfast/v3/internal/app/common/consts" + "github.com/tiger1103/gfast/v3/internal/app/common/consts" "github.com/tiger1103/gfast/v3/internal/app/common/model" "github.com/tiger1103/gfast/v3/internal/app/common/model/entity" "github.com/tiger1103/gfast/v3/internal/app/common/service/internal/dao" "github.com/tiger1103/gfast/v3/internal/app/common/service/internal/do" - "github.com/tiger1103/gfast/v3/internal/app/system/consts" + systemConsts "github.com/tiger1103/gfast/v3/internal/app/system/consts" "github.com/tiger1103/gfast/v3/library/liberr" ) @@ -63,7 +62,7 @@ func (s *dictTypeImpl) List(ctx context.Context, req *system.DictTypeSearchReq) } res.CurrentPage = req.PageNum if req.PageSize == 0 { - req.PageSize = consts.PageSize + req.PageSize = systemConsts.PageSize } err = m.Fields(model.SysDictTypeInfoRes{}).Page(req.PageNum, req.PageSize). Order(dao.SysDictType.Columns().DictId + " asc").Scan(&res.DictTypeList) @@ -86,7 +85,7 @@ func (s *dictTypeImpl) Add(ctx context.Context, req *system.DictTypeAddReq, user }) liberr.ErrIsNil(ctx, err, "添加字典类型失败") //清除缓存 - Cache().RemoveByTag(ctx, commonConsts.CacheSysDictTag) + Cache().RemoveByTag(ctx, consts.CacheSysDictTag) }) return } @@ -115,7 +114,7 @@ func (s *dictTypeImpl) Edit(ctx context.Context, req *system.DictTypeEditReq, us Where(dao.SysDictData.Columns().DictType, dictType.DictType).Update() liberr.ErrIsNil(ctx, e, "修改字典数据失败") //清除缓存 - Cache().RemoveByTag(ctx, commonConsts.CacheSysDictTag) + Cache().RemoveByTag(ctx, consts.CacheSysDictTag) }) return err }) @@ -166,7 +165,7 @@ func (s *dictTypeImpl) Delete(ctx context.Context, dictIds []int) (err error) { liberr.ErrIsNil(ctx, err, "删除字典数据失败") } //清除缓存 - Cache().RemoveByTag(ctx, commonConsts.CacheSysDictTag) + Cache().RemoveByTag(ctx, consts.CacheSysDictTag) }) return err }) diff --git a/internal/app/system/controller/sys_dict_data.go b/internal/app/system/controller/sys_dict_data.go index cd8b596..4ad0548 100644 --- a/internal/app/system/controller/sys_dict_data.go +++ b/internal/app/system/controller/sys_dict_data.go @@ -11,6 +11,7 @@ import ( "context" "github.com/tiger1103/gfast/v3/api/v1/system" commonService "github.com/tiger1103/gfast/v3/internal/app/common/service" + "github.com/tiger1103/gfast/v3/internal/app/system/service" ) var DictData = dictDataController{} @@ -23,3 +24,32 @@ func (c *dictDataController) GetDictData(ctx context.Context, req *system.GetDic res, err = commonService.DictData().GetDictWithDataByType(ctx, req) return } + +// List 获取字典数据列表 +func (c *dictDataController) List(ctx context.Context, req *system.DictDataSearchReq) (res *system.DictDataSearchRes, err error) { + res, err = commonService.DictData().List(ctx, req) + return +} + +// Add 添加字典数据 +func (c *dictDataController) Add(ctx context.Context, req *system.DictDataAddReq) (res *system.DictDataAddRes, err error) { + err = commonService.DictData().Add(ctx, req, service.Context().GetUserId(ctx)) + return +} + +// Get 获取对应的字典数据 +func (c *dictDataController) Get(ctx context.Context, req *system.DictDataGetReq) (res *system.DictDataGetRes, err error) { + res, err = commonService.DictData().Get(ctx, req.DictCode) + return +} + +// Edit 修改字典数据 +func (c *dictDataController) Edit(ctx context.Context, req *system.DictDataEditReq) (res *system.DictDataEditRes, err error) { + err = commonService.DictData().Edit(ctx, req, service.Context().GetUserId(ctx)) + return +} + +func (c *dictDataController) Delete(ctx context.Context, req *system.DictDataDeleteReq) (res *system.DictDataDeleteRes, err error) { + err = commonService.DictData().Delete(ctx, req.Ids) + return +}