/
GroupModel.go
125 lines (112 loc) · 2.97 KB
/
GroupModel.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 models
import (
"errors"
"log"
"github.com/astaxie/beego"
"github.com/astaxie/beego/orm"
"github.com/astaxie/beego/validation"
"time"
)
//分组表
type Group struct {
Id int64 `orm:"column(id);pk;auto"`
Name string `orm:"size(255);unique;" form:"Name" valid:"Required"`
Title string `orm:"size(255)" form:"Title" valid:"Required"`
Sort uint64 `orm:"default(1)" form:"Sort" valid:"Numeric"`
//管控部分
Status uint64 `orm:"column(status);default(2)" form:"Status"`
Creator *User `orm:"column(creator);null;rel(fk)"`
CreateAt time.Time `orm:"column(create_at);type(datetime);auto_now_add"`
Updater *User `orm:"column(updater);null;rel(fk)"`
UpdateAt time.Time `orm:"column(update_at);type(datetime);null"`
Message string `orm:"column(message);size(255);null"`
Nodes []*Node `orm:"reverse(many)"`
// Id int64
// Name string `orm:"size(100)" form:"Name" valid:"Required"`
// Title string `orm:"size(100)" form:"Title" valid:"Required"`
// Status int `orm:"default(2)" form:"Status" valid:"Range(1,2)"`
// Sort int `orm:"default(1)" form:"Sort" valid:"Numeric"`
// Nodes []*Node `orm:"reverse(many)"`
}
func (g *Group) TableName() string {
return beego.AppConfig.String("rbac_group_table")
}
func init() {
orm.RegisterModel(new(Group))
}
func checkGroup(g *Group) (err error) {
valid := validation.Validation{}
b, _ := valid.Valid(&g)
if !b {
for _, err := range valid.Errors {
log.Println(err.Key, err.Message)
return errors.New(err.Message)
}
}
return nil
}
//get group list
func GetGrouplist(page int64, page_size int64, sort string) (groups []orm.Params, count int64) {
o := orm.NewOrm()
group := new(Group)
qs := o.QueryTable(group)
var offset int64
if page <= 1 {
offset = 0
} else {
offset = (page - 1) * page_size
}
qs.Limit(page_size, offset).OrderBy(sort).Values(&groups)
count, _ = qs.Count()
return groups, count
}
func AddGroup(g *Group) (int64, error) {
if err := checkGroup(g); err != nil {
return 0, err
}
o := orm.NewOrm()
group := new(Group)
group.Name = g.Name
group.Title = g.Title
group.Sort = g.Sort
group.Status = g.Status
id, err := o.Insert(group)
return id, err
}
func UpdateGroup(g *Group) (int64, error) {
if err := checkGroup(g); err != nil {
return 0, err
}
o := orm.NewOrm()
group := make(orm.Params)
if len(g.Name) > 0 {
group["Name"] = g.Name
}
if len(g.Title) > 0 {
group["Title"] = g.Title
}
if g.Status != 0 {
group["Status"] = g.Status
}
if g.Sort != 0 {
group["Sort"] = g.Sort
}
if len(group) == 0 {
return 0, errors.New("update field is empty")
}
var table Group
num, err := o.QueryTable(table).Filter("Id", g.Id).Update(group)
return num, err
}
func DelGroupById(Id int64) (int64, error) {
o := orm.NewOrm()
status, err := o.Delete(&Group{Id: (Id)})
return status, err
}
func GroupList() (groups []orm.Params) {
o := orm.NewOrm()
group := new(Group)
qs := o.QueryTable(group)
qs.Values(&groups, "id", "title")
return groups
}