-
Notifications
You must be signed in to change notification settings - Fork 0
/
type.go
165 lines (150 loc) · 5.25 KB
/
type.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
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
package UserRole
import (
"errors"
CoreSQL "github.com/fotomxq/weeekj_core/v5/core/sql"
CoreSQLConfig "github.com/fotomxq/weeekj_core/v5/core/sql/config"
CoreSQLPages "github.com/fotomxq/weeekj_core/v5/core/sql/pages"
Router2SystemConfig "github.com/fotomxq/weeekj_core/v5/router2/system_config"
"github.com/lib/pq"
)
// ArgsGetTypeList 获取角色配置列表参数
type ArgsGetTypeList struct {
//分页
Pages CoreSQLPages.ArgsDataList `json:"pages"`
//是否被删除
IsRemove bool `db:"is_remove" json:"isRemove" check:"bool" empty:"true"`
//搜索
Search string `json:"search" check:"search" empty:"true"`
}
// GetTypeList 获取角色配置列表
func GetTypeList(args *ArgsGetTypeList) (dataList []FieldsType, dataCount int64, err error) {
where := ""
maps := map[string]interface{}{}
where = CoreSQL.GetDeleteSQL(args.IsRemove, where)
if args.Search != "" {
where = where + " AND (name ILIKE '%' || :search || '%')"
maps["search"] = args.Search
}
tableName := "user_role_type"
dataCount, err = CoreSQL.GetListPageAndCount(
Router2SystemConfig.MainDB.DB,
&dataList,
tableName,
"id",
"SELECT id, create_at, update_at, delete_at, mark, name, group_ids, params FROM "+tableName+" WHERE "+where,
where,
maps,
&args.Pages,
[]string{"id", "create_at", "update_at", "delete_at"},
)
return
}
// ArgsGetTypeID 获取指定配置ID参数
type ArgsGetTypeID struct {
//ID
ID int64 `db:"id" json:"id" check:"id"`
}
// GetTypeID 获取指定配置ID
func GetTypeID(args *ArgsGetTypeID) (data FieldsType, err error) {
err = Router2SystemConfig.MainDB.Get(&data, "SELECT id, create_at, update_at, delete_at, mark, name, group_ids, params FROM user_role_type WHERE id = $1", args.ID)
if err == nil && data.ID < 1 {
err = errors.New("no data")
return
}
return
}
// ArgsGetTypeMark 获取指定配置Mark参数
type ArgsGetTypeMark struct {
//标识码
Mark string `db:"mark" json:"mark" check:"mark"`
}
// GetTypeMark 获取指定配置Mark
func GetTypeMark(args *ArgsGetTypeMark) (data FieldsType, err error) {
err = Router2SystemConfig.MainDB.Get(&data, "SELECT id, create_at, update_at, delete_at, mark, name, group_ids, params FROM user_role_type WHERE mark = $1 AND delete_at < to_timestamp(1000000)", args.Mark)
if err == nil && data.ID < 1 {
err = errors.New("no data")
return
}
return
}
func GetTypeMarkNoErr(mark string) (data FieldsType) {
err := Router2SystemConfig.MainDB.Get(&data, "SELECT id, create_at, update_at, delete_at, mark, name, group_ids, params FROM user_role_type WHERE mark = $1 AND delete_at < to_timestamp(1000000)", mark)
if err == nil && data.ID < 1 {
return
}
return
}
// ArgsCreateType 创建新的配置参数
type ArgsCreateType struct {
//标识码
Mark string `db:"mark" json:"mark" check:"mark"`
//配置名称
Name string `db:"name" json:"name" check:"name"`
//分配的用户组
GroupIDs pq.Int64Array `db:"group_ids" json:"groupIDs" check:"ids" empty:"true"`
//扩展参数
Params CoreSQLConfig.FieldsConfigsType `db:"params" json:"params" check:"params" empty:"true"`
}
// CreateType 创建新的配置
func CreateType(args *ArgsCreateType) (data FieldsType, err error) {
//mark不能重复
if err = checkTypeMark(args.Mark, -1); err != nil {
return
}
//创建数据
err = CoreSQL.CreateOneAndData(Router2SystemConfig.MainDB.DB, "user_role_type", "INSERT INTO user_role_type (mark, name, group_ids, params) VALUES (:mark,:name,:group_ids,:params)", args, &data)
return
}
// ArgsUpdateType 修改配置参数
type ArgsUpdateType struct {
//ID
ID int64 `db:"id" json:"id" check:"id"`
//标识码
Mark string `db:"mark" json:"mark" check:"mark"`
//配置名称
Name string `db:"name" json:"name" check:"name"`
//分配的用户组
GroupIDs pq.Int64Array `db:"group_ids" json:"groupIDs" check:"ids" empty:"true"`
//扩展参数
Params CoreSQLConfig.FieldsConfigsType `db:"params" json:"params" check:"params" empty:"true"`
}
// UpdateType 修改配置
func UpdateType(args *ArgsUpdateType) (err error) {
//mark不能重复
if err = checkTypeMark(args.Mark, args.ID); err != nil {
return
}
//更新数据
_, err = CoreSQL.UpdateOneSoft(Router2SystemConfig.MainDB.DB, "UPDATE user_role_type SET update_at = NOW(), mark = :mark, name = :name, group_ids = :group_ids, params = :params WHERE id = :id", args)
return
}
// ArgsDeleteType 删除配置参数
type ArgsDeleteType struct {
//ID
ID int64 `db:"id" json:"id" check:"id"`
}
// DeleteType 删除配置
func DeleteType(args *ArgsDeleteType) (err error) {
//删除所有角色
var count int64
err = Router2SystemConfig.MainDB.Get(&count, "SELECT count(id) FROM user_role WHERE delete_at < to_timestamp(1000000) AND role_type = $1", args.ID)
if count > 0 {
_, err = CoreSQL.DeleteAllSoft(Router2SystemConfig.MainDB.DB, "user_role", "role_type = :id", args)
if err != nil {
return
}
}
//删除数据
_, err = CoreSQL.DeleteOneSoft(Router2SystemConfig.MainDB.DB, "user_role_type", "id", args)
return
}
// 检查mark是否重复
func checkTypeMark(mark string, id int64) (err error) {
var findID int64
err = Router2SystemConfig.MainDB.Get(&findID, "SELECT id FROM user_role_type WHERE mark = $1 AND delete_at < to_timestamp(1000000) AND ($2 < 1 OR id != $2)", mark, id)
if err != nil || findID < 1 {
return nil
}
err = errors.New("data is exist")
return
}