完成字典模块改造

This commit is contained in:
linwenxiang
2021-02-20 11:06:59 +08:00
parent e04b5559bd
commit 4979fd659f
21 changed files with 1176 additions and 635 deletions
-168
View File
@@ -1,168 +0,0 @@
package models
import (
"errors"
orm "go-admin/common/global"
"go-admin/tools"
)
type DictData struct {
DictCode int `gorm:"primary_key;auto_increment;" json:"dictCode" example:"1"` //字典编码
DictSort int `gorm:"" json:"dictSort"` //显示顺序
DictLabel string `gorm:"size:128;" json:"dictLabel"` //数据标签
DictValue string `gorm:"size:255;" json:"dictValue"` //数据键值
DictType string `gorm:"size:64;" json:"dictType"` //字典类型
CssClass string `gorm:"size:128;" json:"cssClass"` //
ListClass string `gorm:"size:128;" json:"listClass"` //
IsDefault string `gorm:"size:8;" json:"isDefault"` //
Status string `gorm:"size:4;" json:"status"` //状态
Default string `gorm:"size:8;" json:"default"` //
CreateBy string `gorm:"size:64;" json:"createBy"` //
UpdateBy string `gorm:"size:64;" json:"updateBy"` //
Remark string `gorm:"size:255;" json:"remark"` //备注
BaseModel
Params string `gorm:"-" json:"params"`
DataScope string `gorm:"-" json:"dataScope"`
}
func (DictData) TableName() string {
return "sys_dict_data"
}
func (e *DictData) Create() (DictData, error) {
var doc DictData
var i int64
if err := orm.Eloquent.Table(e.TableName()).
Where("dict_type = ?", e.DictType).
Where("dict_label=? or (dict_label=? and dict_value = ?)", e.DictLabel, e.DictLabel, e.DictValue).
Count(&i).Error; err != nil {
return doc, err
}
if i > 0 {
return doc, errors.New("字典标签或者字典键值已经存在!")
}
result := orm.Eloquent.Table(e.TableName()).Create(&e)
if result.Error != nil {
err := result.Error
return doc, err
}
doc = *e
return doc, nil
}
func (e *DictData) GetByCode() (DictData, error) {
var doc DictData
table := orm.Eloquent.Table(e.TableName())
if e.DictCode != 0 {
table = table.Where("dict_code = ?", e.DictCode)
}
if e.DictLabel != "" {
table = table.Where("dict_label = ?", e.DictLabel)
}
if e.DictType != "" {
table = table.Where("dict_type = ?", e.DictType)
}
if err := table.First(&doc).Error; err != nil {
return doc, err
}
return doc, nil
}
func (e *DictData) Get() ([]DictData, error) {
var doc []DictData
table := orm.Eloquent.Table(e.TableName())
if e.DictCode != 0 {
table = table.Where("dict_code = ?", e.DictCode)
}
if e.DictLabel != "" {
table = table.Where("dict_label = ?", e.DictLabel)
}
if e.DictType != "" {
table = table.Where("dict_type = ?", e.DictType)
}
table = table.Where("status = ?", 2)
if err := table.Order("dict_sort").Find(&doc).Error; err != nil {
return doc, err
}
return doc, nil
}
func (e *DictData) GetPage(pageSize int, pageIndex int) ([]DictData, int, error) {
var doc []DictData
table := orm.Eloquent.Table(e.TableName())
if e.DictCode != 0 {
table = table.Where("dict_code = ?", e.DictCode)
}
if e.DictType != "" {
table = table.Where("dict_type = ?", e.DictType)
}
if e.DictLabel != "" {
table = table.Where("dict_label = ?", e.DictLabel)
}
if e.Status != "" {
table = table.Where("status = ?", e.Status)
}
// 数据权限控制
dataPermission := new(DataPermission)
dataPermission.UserId, _ = tools.StringToInt(e.DataScope)
table, err := dataPermission.GetDataScope("sys_dict_data", table)
if err != nil {
return nil, 0, err
}
var count int64
if err := table.Order("dict_sort").Offset((pageIndex - 1) * pageSize).Limit(pageSize).Find(&doc).Offset(-1).Limit(-1).Count(&count).Error; err != nil {
return nil, 0, err
}
//table.Where("`deleted_at` IS NULL").Count(&count)
return doc, int(count), nil
}
func (e *DictData) Update(id int) (update DictData, err error) {
if err = orm.Eloquent.Table(e.TableName()).Where("dict_code = ?", id).First(&update).Error; err != nil {
return
}
if e.DictLabel != "" && e.DictLabel != update.DictLabel {
return update, errors.New("标签不允许修改!")
}
if e.DictValue != "" && e.DictValue != update.DictValue {
return update, errors.New("键值不允许修改!")
}
//参数1:是要修改的数据
//参数2:是修改的数据
if err = orm.Eloquent.Table(e.TableName()).Model(&update).Updates(&e).Error; err != nil {
return
}
return
}
func (e *DictData) Delete(id int) (success bool, err error) {
if err = orm.Eloquent.Table(e.TableName()).Where("dict_code = ?", id).Delete(&DictData{}).Error; err != nil {
success = false
return
}
success = true
return
}
func (e *DictData) BatchDelete(id []int) (Result bool, err error) {
if err = orm.Eloquent.Table(e.TableName()).Where("dict_code in (?)", id).Delete(&DictData{}).Error; err != nil {
return
}
Result = true
return
}
-152
View File
@@ -1,152 +0,0 @@
package models
import (
"errors"
"gorm.io/gorm"
orm "go-admin/common/global"
"go-admin/tools"
)
type DictType struct {
DictId int `gorm:"primary_key;auto_increment;" json:"dictId"`
DictName string `gorm:"size:128;" json:"dictName"` //字典名称
DictType string `gorm:"size:128;" json:"dictType"` //字典类型
Status string `gorm:"size:4;" json:"status"` //状态
CreateBy string `gorm:"size:11;" json:"createBy"` //创建者
UpdateBy string `gorm:"size:11;" json:"updateBy"` //更新者
Remark string `gorm:"size:255;" json:"remark"` //备注
BaseModel
DataScope string `gorm:"-" json:"dataScope"` //
Params string `gorm:"-" json:"params"` //
}
func (DictType) TableName() string {
return "sys_dict_type"
}
func (e *DictType) Create() (DictType, error) {
var doc DictType
var i int64
orm.Eloquent.Table(e.TableName()).Where("dict_name=? or dict_type = ?", e.DictName, e.DictType).Count(&i)
if i > 0 {
return doc, errors.New("字典名称或者字典类型已经存在!")
}
result := orm.Eloquent.Table(e.TableName()).Create(&e)
if result.Error != nil {
err := result.Error
return doc, err
}
doc = *e
return doc, nil
}
func (e *DictType) Get() (DictType, error) {
var doc DictType
table := orm.Eloquent.Table(e.TableName())
if e.DictId != 0 {
table = table.Where("dict_id = ?", e.DictId)
}
if e.DictName != "" {
table = table.Where("dict_name = ?", e.DictName)
}
if e.DictType != "" {
table = table.Where("dict_type = ?", e.DictType)
}
if err := table.First(&doc).Error; err != nil {
return doc, err
}
return doc, nil
}
func (e *DictType) GetList() ([]DictType, error) {
var doc []DictType
table := orm.Eloquent.Table(e.TableName())
if e.DictId != 0 {
table = table.Where("dict_id = ?", e.DictId)
}
if e.DictName != "" {
table = table.Where("dict_name = ?", e.DictName)
}
if e.DictType != "" {
table = table.Where("dict_type = ?", e.DictType)
}
if err := table.Find(&doc).Error; err != nil {
return doc, err
}
return doc, nil
}
func (e *DictType) GetPage(pageSize int, pageIndex int) ([]DictType, int, error) {
var doc []DictType
var db *gorm.DB
table := orm.Eloquent.Table(e.TableName())
if e.DictId != 0 {
db = db.Where("dict_id = ?", e.DictId)
}
if e.DictName != "" {
db = db.Where("dict_name = ?", e.DictName)
}
// 数据权限控制
dataPermission := new(DataPermission)
dataPermission.UserId, _ = tools.StringToInt(e.DataScope)
table, err := dataPermission.GetDataScope("sys_dict_type", table)
if err != nil {
return nil, 0, err
}
var count int64
if err := table.Offset((pageIndex - 1) * pageSize).Limit(pageSize).Find(&doc).Offset(-1).Limit(-1).Count(&count).Error; err != nil {
return nil, 0, err
}
//table.Count(&count)
return doc, int(count), nil
}
func (e *DictType) Update(id int) (update DictType, err error) {
if err = orm.Eloquent.Table(e.TableName()).First(&update, id).Error; err != nil {
return
}
if e.DictName != "" && e.DictName != update.DictName {
return update, errors.New("名称不允许修改!")
}
if e.DictType != "" && e.DictType != update.DictType {
return update, errors.New("类型不允许修改!")
}
//参数1:是要修改的数据
//参数2:是修改的数据
if err = orm.Eloquent.Table(e.TableName()).Model(&update).Updates(&e).Error; err != nil {
return
}
return
}
func (e *DictType) Delete(id int) (success bool, err error) {
if err = orm.Eloquent.Table(e.TableName()).Where("dict_id = ?", id).Delete(&DictData{}).Error; err != nil {
success = false
return
}
success = true
return
}
func (e *DictType) BatchDelete(id []int) (Result bool, err error) {
if err = orm.Eloquent.Table(e.TableName()).Where("dict_id in (?)", id).Delete(&DictType{}).Error; err != nil {
return
}
Result = true
return
}
+35
View File
@@ -0,0 +1,35 @@
package system
import (
"go-admin/common/models"
)
type SysDictData struct {
models.ControlBy
models.ModelTime
DictCode int `json:"dictCode" gorm:"primaryKey;column:dict_code;autoIncrement;comment:主键编码"`
DictSort int `json:"dictSort" gorm:"type:bigint(20);comment:DictSort"`
DictLabel string `json:"dictLabel" gorm:"type:varchar(128);comment:DictLabel"`
DictValue string `json:"dictValue" gorm:"type:varchar(255);comment:DictValue"`
DictType string `json:"dictType" gorm:"type:varchar(64);comment:DictType"`
CssClass string `json:"cssClass" gorm:"type:varchar(128);comment:CssClass"`
ListClass string `json:"listClass" gorm:"type:varchar(128);comment:ListClass"`
IsDefault string `json:"isDefault" gorm:"type:varchar(8);comment:IsDefault"`
Status string `json:"status" gorm:"type:varchar(4);comment:Status"`
Default string `json:"default" gorm:"type:varchar(8);comment:Default"`
Remark string `json:"remark" gorm:"type:varchar(255);comment:Remark"`
}
func (SysDictData) TableName() string {
return "sys_dict_data"
}
func (e *SysDictData) Generate() models.ActiveRecord {
o := *e
return &o
}
func (e *SysDictData) GetId() interface{} {
return e.DictCode
}
+29
View File
@@ -0,0 +1,29 @@
package system
import (
"go-admin/common/models"
)
type SysDictType struct {
models.ControlBy
models.ModelTime
ID int `json:"id" gorm:"primaryKey;column:dict_id;autoIncrement;comment:主键编码"`
DictName string `json:"dictName" gorm:"type:varchar(128);comment:DictName"`
DictType string `json:"dictType" gorm:"type:varchar(128);comment:DictType"`
Status string `json:"status" gorm:"type:varchar(4);comment:Status"`
Remark string `json:"remark" gorm:"type:varchar(255);comment:Remark"`
}
func (SysDictType) TableName() string {
return "sys_dict_type"
}
func (e *SysDictType) Generate() models.ActiveRecord {
o := *e
return &o
}
func (e *SysDictType) GetId() interface{} {
return e.ID
}