/
dict_srvc.go
109 lines (97 loc) · 3.1 KB
/
dict_srvc.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
package service_swa
import (
"context"
"errors"
"gorm.io/gorm"
)
type TDict interface {
CreateSwaDict(_ context.Context, swaDict ModDict) (err error)
DeleteSwaDict(_ context.Context, swaDict ModDict) (err error)
UpdateSwaDict(_ context.Context, swaDict ModDict) (err error)
GetSwaDict(_ context.Context, Type string, Id uint, status *bool) (swaDict ModDict, err error)
GetSwaDictInfoList(_ context.Context, info SwaDictSearch) (list []ModDict, total int64, err error)
}
func (imp *impl) CreateSwaDict(_ context.Context, swaDict ModDict) (err error) {
if (!errors.Is(imp.gormDB.First(&ModDict{}, "type = ?", swaDict.Type).Error, gorm.ErrRecordNotFound)) {
return errors.New("存在相同的type,不允许创建")
}
err = imp.gormDB.Create(&swaDict).Error
return err
}
func (imp *impl) DeleteSwaDict(_ context.Context, swaDict ModDict) (err error) {
err = imp.gormDB.Where("id = ?", swaDict.ID).Preload("SwaDictails").First(&swaDict).Error
if err != nil && errors.Is(err, gorm.ErrRecordNotFound) {
return errors.New("请不要搞事")
}
if err != nil {
return err
}
err = imp.gormDB.Delete(&swaDict).Error
if err != nil {
return err
}
if swaDict.ModDictails != nil {
return imp.gormDB.Where("swaDictID=?", swaDict.ID).Delete(swaDict.ModDictails).Error
}
return
}
func (imp *impl) UpdateSwaDict(_ context.Context, swaDict ModDict) (err error) {
var dict ModDict
sysDictionaryMap := map[string]interface{}{
"Name": swaDict.Name,
"Type": swaDict.Type,
"Status": swaDict.Status,
"Detail": swaDict.Detail,
}
db := imp.gormDB.Where("id = ?", swaDict.ID).First(&dict)
if dict.Type != swaDict.Type {
if !errors.Is(imp.gormDB.First(&ModDict{}, "type = ?", swaDict.Type).Error, gorm.ErrRecordNotFound) {
return errors.New("存在相同的type,不允许创建")
}
}
err = db.Updates(sysDictionaryMap).Error
return err
}
func (imp *impl) GetSwaDict(_ context.Context, Type string, Id uint, status *bool) (swaDict ModDict, err error) {
var flag = false
if status == nil {
flag = true
} else {
flag = *status
}
err = imp.gormDB.Where("(type = ? OR id = ?) and status = ?", Type, Id, flag).First(&swaDict).Error
if err != nil {
return swaDict, err
}
var dictail []ModDictail
err = imp.gormDB.Where("swaDictID = ? and status = ?", swaDict.ID, true).Order("sort").First(&dictail).Error
if err != nil {
return swaDict, err
}
swaDict.ModDictails = dictail
return swaDict, err
}
func (imp *impl) GetSwaDictInfoList(_ context.Context, info SwaDictSearch) (list []ModDict, total int64, err error) {
limit := info.PageSize
offset := info.PageSize * (info.Page - 1)
db := imp.gormDB.Model(&ModDict{})
var sysDictionarys []ModDict
if info.Name != "" {
db = db.Where("`name` LIKE ?", "%"+info.Name+"%")
}
if info.Type != "" {
db = db.Where("`type` LIKE ?", "%"+info.Type+"%")
}
if info.Status != nil {
db = db.Where("`status` = ?", info.Status)
}
if info.Detail != "" {
db = db.Where("`desc` LIKE ?", "%"+info.Detail+"%")
}
err = db.Count(&total).Error
if err != nil {
return
}
err = db.Limit(limit).Offset(offset).Find(&sysDictionarys).Error
return sysDictionarys, total, err
}