112 lines
3.5 KiB
Go
112 lines
3.5 KiB
Go
package service
|
|
|
|
import (
|
|
"errors"
|
|
|
|
"be.ems/features/sys_dict_data/model"
|
|
"be.ems/features/sys_dict_data/repo"
|
|
sysDictTypeService "be.ems/features/sys_dict_type/service"
|
|
)
|
|
|
|
// 实例化服务层 ServiceSysDictData 结构体
|
|
var NewServiceSysDictData = &ServiceSysDictData{
|
|
sysDictDataRepository: *repo.NewRepoSysDictData,
|
|
sysDictTypeService: *sysDictTypeService.NewServiceSysDictType,
|
|
}
|
|
|
|
// ServiceSysDictData 字典类型数据 服务层处理
|
|
type ServiceSysDictData struct {
|
|
// 字典数据服务
|
|
sysDictDataRepository repo.RepoSysDictData
|
|
// 字典类型服务
|
|
sysDictTypeService sysDictTypeService.ServiceSysDictType
|
|
}
|
|
|
|
// SelectDictDataPage 根据条件分页查询字典数据
|
|
func (r *ServiceSysDictData) SelectDictDataPage(query map[string]any) map[string]any {
|
|
return r.sysDictDataRepository.SelectDictDataPage(query)
|
|
}
|
|
|
|
// SelectDictDataList 根据条件查询字典数据
|
|
func (r *ServiceSysDictData) SelectDictDataList(sysDictData model.SysDictData) []model.SysDictData {
|
|
return r.sysDictDataRepository.SelectDictDataList(sysDictData)
|
|
}
|
|
|
|
// SelectDictDataByCode 根据字典数据编码查询信息
|
|
func (r *ServiceSysDictData) SelectDictDataByCode(dictCode string) model.SysDictData {
|
|
if dictCode == "" {
|
|
return model.SysDictData{}
|
|
}
|
|
dictCodes := r.sysDictDataRepository.SelectDictDataByCodes([]string{dictCode})
|
|
if len(dictCodes) > 0 {
|
|
return dictCodes[0]
|
|
}
|
|
return model.SysDictData{}
|
|
}
|
|
|
|
// SelectDictDataByType 根据字典类型查询信息
|
|
func (r *ServiceSysDictData) SelectDictDataByType(dictType string) []model.SysDictData {
|
|
return r.sysDictTypeService.DictDataCache(dictType)
|
|
}
|
|
|
|
// CheckUniqueDictLabel 校验字典标签是否唯一
|
|
func (r *ServiceSysDictData) CheckUniqueDictLabel(dictType, dictLabel, dictCode string) bool {
|
|
uniqueId := r.sysDictDataRepository.CheckUniqueDictData(model.SysDictData{
|
|
DictType: dictType,
|
|
DictLabel: dictLabel,
|
|
})
|
|
if uniqueId == dictCode {
|
|
return true
|
|
}
|
|
return uniqueId == ""
|
|
}
|
|
|
|
// CheckUniqueDictValue 校验字典键值是否唯一
|
|
func (r *ServiceSysDictData) CheckUniqueDictValue(dictType, dictValue, dictCode string) bool {
|
|
uniqueId := r.sysDictDataRepository.CheckUniqueDictData(model.SysDictData{
|
|
DictType: dictType,
|
|
DictValue: dictValue,
|
|
})
|
|
if uniqueId == dictCode {
|
|
return true
|
|
}
|
|
return uniqueId == ""
|
|
}
|
|
|
|
// DeleteDictDataByCodes 批量删除字典数据信息
|
|
func (r *ServiceSysDictData) DeleteDictDataByCodes(dictCodes []string) (int64, error) {
|
|
// 检查是否存在
|
|
dictDatas := r.sysDictDataRepository.SelectDictDataByCodes(dictCodes)
|
|
if len(dictDatas) <= 0 {
|
|
return 0, errors.New("does not have permission to access dictionary-encoded data")
|
|
}
|
|
if len(dictDatas) == len(dictCodes) {
|
|
for _, v := range dictDatas {
|
|
// 刷新缓存
|
|
r.sysDictTypeService.ClearDictCache(v.DictType)
|
|
r.sysDictTypeService.LoadingDictCache(v.DictType)
|
|
}
|
|
rows := r.sysDictDataRepository.DeleteDictDataByCodes(dictCodes)
|
|
return rows, nil
|
|
}
|
|
return 0, errors.New("failed to delete dictionary data information")
|
|
}
|
|
|
|
// InsertDictData 新增字典数据信息
|
|
func (r *ServiceSysDictData) InsertDictData(sysDictData model.SysDictData) string {
|
|
insertId := r.sysDictDataRepository.InsertDictData(sysDictData)
|
|
if insertId != "" {
|
|
r.sysDictTypeService.LoadingDictCache(sysDictData.DictType)
|
|
}
|
|
return insertId
|
|
}
|
|
|
|
// UpdateDictData 修改字典数据信息
|
|
func (r *ServiceSysDictData) UpdateDictData(sysDictData model.SysDictData) int64 {
|
|
rows := r.sysDictDataRepository.UpdateDictData(sysDictData)
|
|
if rows > 0 {
|
|
r.sysDictTypeService.LoadingDictCache(sysDictData.DictType)
|
|
}
|
|
return rows
|
|
}
|