yxh 4 лет назад
Родитель
Сommit
b74b4546f7

+ 65 - 0
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 {
+}

+ 4 - 4
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 {

+ 0 - 2
internal/app/common/consts/consts.go

@@ -6,5 +6,3 @@
  */
 
 package consts
-
-const ()

+ 114 - 11
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
+}

+ 6 - 7
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
 	})

+ 30 - 0
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
+}