-
Notifications
You must be signed in to change notification settings - Fork 0
/
sysdict.go
125 lines (111 loc) · 3.54 KB
/
sysdict.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
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
package sysdict
import (
"github.com/hkyangyi/newe/common/db"
"github.com/hkyangyi/newe/common/redis"
)
type SysDictList struct {
ID string `gorm:"primary_key" json:"id" form:"id"` //
ParentId string `json:"parentId" form:"parentId"` //
ParentName string `json:"parentName" form:"code"` //字典名称
Value string `json:"value"` //值
Name string `json:"name"` //名称
Status int `json:"status"` //1正常,2停用,10已删除
Sort int `json:"sort"` //排序
}
func DictInit() {
var items []SysDictList
db.Db.Model(&SysDictList{}).Where("parent_id = ?", "").Find(&items)
for _, v := range items {
rediskey := "DICT_" + v.ParentName
//查看子类
var its []SysDictList
db.Db.Model(&SysDictList{}).Where("parent_id = ?", v.ID).Find(&its)
var dictdata = make(map[string]string, len(its))
for i := 0; i < len(its); i++ {
ks := its[i].Value
dictdata[ks] = its[i].Name
}
SetDict(rediskey, dictdata)
}
// 自动创建表
// err := MYDB.AutoMigrate(&BaseHikGateList{})
// if err != nil {
// panic("failed to migrate BaseHikGateList")
// }
// err = MYDB.AutoMigrate(&BaseHikGateAvList{})
// if err != nil {
// panic("failed to migrate BaseHikGateAvList")
// }
//手动将表放入字典
InitWeiyiUploadConfig()
}
func SetDict(key string, data map[string]string) {
redis.REDIS.SetLong(key, data)
}
// 根据字典编码获取字典
func GetDict(key string) map[string]string {
rediskey := "DICT_" + key
var data = make(map[string]string)
if key == "WeiyiUploadConfig" {
return InitWeiyiUploadConfig()
}
//查询REDIS是否存在
if b := redis.REDIS.Exists(key); !b {
var (
fdb SysDictList
its []SysDictList
)
db.Db.Model(&SysDictList{}).Where("parent_name = ?", key).Find(&fdb)
db.Db.Model(&SysDictList{}).Where("parent_id = ?", fdb.ID).Find(&its)
for i := 0; i < len(its); i++ {
ks := its[i].Value
data[ks] = its[i].Name
}
redis.REDIS.SetLong(rediskey, data)
return data
}
redis.REDIS.Get(rediskey, &data)
return data
}
// 更新字典
func UpdateDict(key string) {
rediskey := "DICT_" + key
if key == "WeiyiUploadConfig" {
InitWeiyiUploadConfig()
return
}
var data = make(map[string]string)
var (
fdb SysDictList
its []SysDictList
)
db.Db.Model(&SysDictList{}).Where("parent_name = ?", key).Find(&fdb)
db.Db.Model(&SysDictList{}).Where("parent_id = ?", fdb.ID).Find(&its)
for i := 0; i < len(its); i++ {
ks := its[i].Value
data[ks] = its[i].Name
}
redis.REDIS.SetLong(rediskey, data)
}
type WeiyiUploadConfig struct {
ID string `gorm:"primary_key" json:"id" form:"id"` //
ApiName string `json:"api_name"` //接口类型
Code string `json:"code"` //接口编码
URL string `json:"url"` //接口url
Username string `json:"username"` //接口用户名
Password string `json:"password"` //接口密码
IsOpen int `json:"is_open"` //开启上传
PubKeyStr string `json:"pubKeyStr"`
UpdateTime int64 `json:"update_time"` //更新时间
}
func InitWeiyiUploadConfig() map[string]string {
var items []WeiyiUploadConfig
var data = make(map[string]string)
rediskey := "DICT_WeiyiUploadConfig"
db.Db.Model(&WeiyiUploadConfig{}).Find(&items)
for _, v := range items {
data[v.Code] = v.ApiName
}
redis.REDIS.SetLong(rediskey, data)
return data
}