cutego/modules/core/dao/dict_data_dao.go

158 lines
4.2 KiB
Go

package dao
import (
"cutego/modules/core/api/v1/request"
"cutego/modules/core/dataobject"
"cutego/pkg/cache"
"cutego/pkg/constant"
"cutego/pkg/logging"
"cutego/pkg/page"
"cutego/refs"
"github.com/druidcaesa/gotool"
"github.com/go-xorm/xorm"
)
type DictDataDao struct {
}
func (d *DictDataDao) sql(session *xorm.Session) *xorm.Session {
return session.Table("sys_dict_data")
}
// SelectByDictType 根据字典类型查询字典数据
// @Param dictType string 字典类型
// @Return []dataobject.SysDictData
func (d *DictDataDao) SelectByDictType(dictType string) []dataobject.SysDictData {
data := make([]dataobject.SysDictData, 0)
session := d.sql(refs.SqlDB.NewSession())
err := session.Where("status = '0' ").And("dict_type = ?", dictType).OrderBy("dict_sort").Asc("dict_sort").
Find(&data)
if err != nil {
logging.ErrorLog(err)
return nil
}
return data
}
// GetDiceDataAll 查询所有字典数据
// @Return *[]dataobject.SysDictData
func (d DictDataDao) GetDiceDataAll() *[]dataobject.SysDictData {
session := d.sql(refs.SqlDB.NewSession())
data := make([]dataobject.SysDictData, 0)
err := session.Where("status = '0' ").OrderBy("dict_sort").Asc("dict_sort").
Find(&data)
if err != nil {
logging.ErrorLog(err)
return nil
}
return &data
}
// SelectPage 查询集合数据
// @Param query request.DiceDataQuery
// @Return *[]dataobject.SysDictData
// @Return 总行数
func (d *DictDataDao) SelectPage(query request.DiceDataQuery) (*[]dataobject.SysDictData, int64) {
list := make([]dataobject.SysDictData, 0)
session := refs.SqlDB.NewSession().Table("sys_dict_data").OrderBy("dict_sort").Asc("dict_sort")
if gotool.StrUtils.HasNotEmpty(query.DictType) {
session.And("dict_type = ?", query.DictType)
}
if gotool.StrUtils.HasNotEmpty(query.DictLabel) {
session.And("dict_label like concat('%', ?, '%')", query.DictLabel)
}
if gotool.StrUtils.HasNotEmpty(query.Status) {
session.And("status = ?", query.Status)
}
total, _ := page.GetTotal(session.Clone())
err := session.Limit(query.PageSize, page.StartSize(query.PageNum, query.PageSize)).Find(&list)
if err != nil {
logging.ErrorLog(err)
return nil, 0
}
return &list, total
}
// SelectByDictCode 根据dictCode查询字典数据
// @Param dictCode int64
// @Return *dataobject.SysDictData
func (d *DictDataDao) SelectByDictCode(dictCode int64) *dataobject.SysDictData {
data := dataobject.SysDictData{}
session := refs.SqlDB.NewSession()
_, err := session.Where("dict_code = ?", dictCode).Get(&data)
if err != nil {
logging.ErrorLog(err)
return nil
}
return &data
}
// Insert 添加字典数据
// @Param data dataobject.SysDictData
// @Return 新增的行数
func (d *DictDataDao) Insert(data dataobject.SysDictData) int64 {
session := refs.SqlDB.NewSession()
session.Begin()
insert, err := session.Insert(&data)
if err != nil {
session.Rollback()
logging.ErrorLog(err)
return 0
}
session.Commit()
return insert
}
// Delete 删除字典数据
func (d *DictDataDao) Delete(codes []int64) bool {
session := refs.SqlDB.NewSession()
session.Begin()
_, err := session.In("dict_code", codes).Delete(&dataobject.SysDictData{})
if err != nil {
logging.ErrorLog(err)
session.Rollback()
return false
}
session.Commit()
return true
}
// 修改字典数据
func (d *DictDataDao) Update(data dataobject.SysDictData) bool {
session := refs.SqlDB.NewSession()
session.Begin()
_, err := session.Where("dict_code = ?", data.DictCode).Update(&data)
if err != nil {
session.Rollback()
logging.ErrorLog(err)
return false
}
session.Commit()
return true
}
func init() {
// 查询字典类型数据
dictTypeDao := new(DictTypeDao)
typeAll := dictTypeDao.SelectAll()
// 所有字典数据
d := new(DictDataDao)
listData := d.GetDiceDataAll()
for _, dictType := range typeAll {
dictData := make([]map[string]interface{}, 0)
for _, data := range *listData {
if dictType.DictType == data.DictType {
dictData = append(dictData, map[string]interface{}{
"dictCode": data.DictCode,
"dictSort": data.DictSort,
"dictLabel": data.DictLabel,
"dictValue": data.DictValue,
"isDefault": data.IsDefault,
"remark": data.Remark,
})
}
}
refs.RedisDB.SET(constant.RedisConst{}.GetRedisDictKey()+dictType.DictType, cache.StructToJson(dictData))
}
}