department.go
3.6 KB
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
package models
import (
"fmt"
"time"
"github.com/astaxie/beego/orm"
)
type Department struct {
Id int64 `orm:"column(id);auto"`
CompanyId int64 `orm:"column(company_id)" description:"公司id"`
Name string `orm:"column(name);size(30)" description:"部门名称"`
CreateAt time.Time `orm:"column(create_at);type(timestamp)" description:"创建时间"`
ParentId int64 `orm:"column(parent_id)" description:"父级id"`
Relation string `orm:"column(relation);size(400)" description:"父子级关系树"`
DeleteAt time.Time `orm:"column(delete_at);type(timestamp)" description:"删除时间"`
UpdateAt time.Time `orm:"column(update_at);type(timestamp)" description:"更新时间"`
Managers string `orm:"column(managers);null" description:"部门负责人id列表 json 数组 [ ]"`
}
func (t *Department) TableName() string {
return "department"
}
func init() {
orm.RegisterModel(new(Department))
}
// AddDepartment insert a new Department into database and returns
// last inserted Id on success.
func AddDepartment(m *Department) (id int64, err error) {
o := orm.NewOrm()
id, err = o.Insert(m)
return
}
// GetDepartmentById retrieves Department by Id. Returns error if
// Id doesn't exist
func GetDepartmentById(id int64) (v *Department, err error) {
o := orm.NewOrm()
v = &Department{Id: id}
if err = o.Read(v); err == nil {
return v, nil
}
return nil, err
}
// UpdateDepartment updates Department by Id and returns error if
// the record to be updated doesn't exist
func UpdateDepartmentById(m *Department) (err error) {
o := orm.NewOrm()
v := Department{Id: m.Id}
// ascertain id exists in the database
if err = o.Read(&v); err == nil {
var num int64
if num, err = o.Update(m); err == nil {
fmt.Println("Number of records updated in database:", num)
}
}
return
}
// DeleteDepartment deletes Department by Id and returns error if
// the record to be deleted doesn't exist
func DeleteDepartment(id int64) (err error) {
o := orm.NewOrm()
v := Department{Id: id}
// ascertain id exists in the database
if err = o.Read(&v); err == nil {
var num int64
if num, err = o.Delete(&Department{Id: id}); err == nil {
fmt.Println("Number of records deleted in database:", num)
}
}
return
}
//按 1.公司编号
//获取部门列表
func GetDepartmentByCompanyId(companyId int64) (v []*Department, err error) {
o := orm.NewOrm()
sql := `
select *
from department
where company_id =? and delete_at =0
order by level,id`
if _, err = o.Raw(sql, companyId).QueryRows(&v); err == nil {
return
}
return
}
func GetSubDepartmentIds(companyId int64, relation string) (v []int, err error) {
o := orm.NewOrm()
sql := fmt.Sprintf(`
select id from department where company_id=? and relation like '%v%%' and delete_at =0`, relation)
if _, err = o.Raw(sql, companyId).QueryRows(&v); err == nil {
return
}
return
}
func GetDepartmentIdsByCompanyId(companyId int) (v []int64, err error) {
o := orm.NewOrm()
sql := `
select id
from department
where company_id =? and delete_at =0
order by level,id`
if _, err = o.Raw(sql, companyId).QueryRows(&v); err == nil {
return
}
return
}
//获取用户所有部门
func GetDepartmentByUser(uid int64) (v []*Department, err error) {
o := orm.NewOrm()
sql := `
select id from (
select department_id from user_department where user_company_id=? and enable_status = 1
)a inner join department b on a.department_id = b.id
where b.delete_at =0
order by b.level,b.id`
if _, err = o.Raw(sql, uid).QueryRows(&v); err == nil {
if err == orm.ErrNoRows {
err = nil
return
}
return
}
return
}