2021-07-17 06:18:52 +00:00
package system
2020-06-24 12:41:36 +00:00
import (
2020-06-28 13:23:06 +00:00
"errors"
2021-08-21 03:01:34 +00:00
2021-08-23 15:13:24 +00:00
"github.com/flipped-aurora/gin-vue-admin/server/global"
"github.com/flipped-aurora/gin-vue-admin/server/model/system"
"github.com/flipped-aurora/gin-vue-admin/server/model/system/request"
2020-08-23 07:13:23 +00:00
"gorm.io/gorm"
2020-06-24 12:41:36 +00:00
)
2020-11-08 05:30:12 +00:00
//@author: [piexlmax](https://github.com/piexlmax)
//@function: DeleteSysDictionary
//@description: 创建字典数据
//@param: sysDictionary model.SysDictionary
//@return: err error
2020-06-24 12:41:36 +00:00
2021-12-06 04:44:26 +00:00
type DictionaryService struct { }
2021-07-17 06:18:52 +00:00
func ( dictionaryService * DictionaryService ) CreateSysDictionary ( sysDictionary system . SysDictionary ) ( err error ) {
2021-07-16 12:08:11 +00:00
if ( ! errors . Is ( global . GVA_DB . First ( & system . SysDictionary { } , "type = ?" , sysDictionary . Type ) . Error , gorm . ErrRecordNotFound ) ) {
2020-06-28 13:23:06 +00:00
return errors . New ( "存在相同的type, 不允许创建" )
}
2020-11-23 04:02:18 +00:00
err = global . GVA_DB . Create ( & sysDictionary ) . Error
2020-06-24 12:41:36 +00:00
return err
}
2020-11-08 05:30:12 +00:00
//@author: [piexlmax](https://github.com/piexlmax)
//@function: DeleteSysDictionary
//@description: 删除字典数据
//@param: sysDictionary model.SysDictionary
//@return: err error
2020-06-24 12:41:36 +00:00
2021-07-17 06:18:52 +00:00
func ( dictionaryService * DictionaryService ) DeleteSysDictionary ( sysDictionary system . SysDictionary ) ( err error ) {
2020-12-27 09:20:54 +00:00
err = global . GVA_DB . Delete ( & sysDictionary ) . Delete ( & sysDictionary . SysDictionaryDetails ) . Error
2020-06-24 12:41:36 +00:00
return err
}
2020-11-08 05:30:12 +00:00
//@author: [piexlmax](https://github.com/piexlmax)
//@function: UpdateSysDictionary
//@description: 更新字典数据
//@param: sysDictionary *model.SysDictionary
//@return: err error
2020-06-24 12:41:36 +00:00
2021-07-17 06:18:52 +00:00
func ( dictionaryService * DictionaryService ) UpdateSysDictionary ( sysDictionary * system . SysDictionary ) ( err error ) {
2021-07-16 12:08:11 +00:00
var dict system . SysDictionary
2020-06-24 13:53:54 +00:00
sysDictionaryMap := map [ string ] interface { } {
"Name" : sysDictionary . Name ,
"Type" : sysDictionary . Type ,
"Status" : sysDictionary . Status ,
"Desc" : sysDictionary . Desc ,
}
2020-06-28 13:23:06 +00:00
db := global . GVA_DB . Where ( "id = ?" , sysDictionary . ID ) . First ( & dict )
2021-09-04 14:59:13 +00:00
if dict . Type != sysDictionary . Type {
if ! errors . Is ( global . GVA_DB . First ( & system . SysDictionary { } , "type = ?" , sysDictionary . Type ) . Error , gorm . ErrRecordNotFound ) {
2020-06-28 13:23:06 +00:00
return errors . New ( "存在相同的type, 不允许创建" )
}
}
2021-09-04 14:59:13 +00:00
err = db . Updates ( sysDictionaryMap ) . Error
2020-06-24 12:41:36 +00:00
return err
}
2020-11-08 05:30:12 +00:00
//@author: [piexlmax](https://github.com/piexlmax)
//@function: GetSysDictionary
//@description: 根据id或者type获取字典单条数据
//@param: Type string, Id uint
//@return: err error, sysDictionary model.SysDictionary
2020-06-24 12:41:36 +00:00
2021-07-17 06:18:52 +00:00
func ( dictionaryService * DictionaryService ) GetSysDictionary ( Type string , Id uint ) ( err error , sysDictionary system . SysDictionary ) {
2021-11-08 06:36:40 +00:00
err = global . GVA_DB . Where ( "type = ? OR id = ? and status = ?" , Type , Id , true ) . Preload ( "SysDictionaryDetails" , "status = ?" , true ) . First ( & sysDictionary ) . Error
2020-06-24 12:41:36 +00:00
return
}
2020-11-08 05:30:12 +00:00
//@author: [piexlmax](https://github.com/piexlmax)
//@author: [SliverHorn](https://github.com/SliverHorn)
//@function: GetSysDictionaryInfoList
//@description: 分页获取字典列表
//@param: info request.SysDictionarySearch
//@return: err error, list interface{}, total int64
2020-06-24 12:41:36 +00:00
2021-07-17 06:18:52 +00:00
func ( dictionaryService * DictionaryService ) GetSysDictionaryInfoList ( info request . SysDictionarySearch ) ( err error , list interface { } , total int64 ) {
2020-06-24 12:41:36 +00:00
limit := info . PageSize
offset := info . PageSize * ( info . Page - 1 )
2020-06-24 13:53:54 +00:00
// 创建db
2021-07-16 12:08:11 +00:00
db := global . GVA_DB . Model ( & system . SysDictionary { } )
var sysDictionarys [ ] system . SysDictionary
2020-06-24 13:53:54 +00:00
// 如果有条件搜索 下方会自动创建搜索语句
if info . Name != "" {
2020-07-17 15:21:50 +00:00
db = db . Where ( "`name` LIKE ?" , "%" + info . Name + "%" )
2020-06-24 13:53:54 +00:00
}
if info . Type != "" {
2020-07-17 15:21:50 +00:00
db = db . Where ( "`type` LIKE ?" , "%" + info . Type + "%" )
2020-06-24 13:53:54 +00:00
}
if info . Status != nil {
2020-07-17 15:21:50 +00:00
db = db . Where ( "`status` = ?" , info . Status )
2020-06-24 13:53:54 +00:00
}
if info . Desc != "" {
2020-07-17 15:21:50 +00:00
db = db . Where ( "`desc` LIKE ?" , "%" + info . Desc + "%" )
2020-06-24 13:53:54 +00:00
}
2020-06-24 12:41:36 +00:00
err = db . Count ( & total ) . Error
2021-09-16 02:19:54 +00:00
if err != nil {
return
}
2020-06-24 12:41:36 +00:00
err = db . Limit ( limit ) . Offset ( offset ) . Find ( & sysDictionarys ) . Error
return err , sysDictionarys , total
2020-06-24 13:53:54 +00:00
}