forked from lock-upme/OPMS
/
oagoodsApprovers.go
138 lines (123 loc) · 3.53 KB
/
oagoodsApprovers.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
package oagoods
import (
//"fmt"
"opms/models"
//"opms/utils"
"time"
//"github.com/astaxie/beego"
"github.com/astaxie/beego/orm"
)
type OagoodsApprover struct {
Id int64 `orm:"pk;column(approverid);"`
Oagoodid int64
Userid int64
Summary string
Status int
Created int64
Changed int64
}
func (this *OagoodsApprover) TableName() string {
return models.TableName("oagoods_approver")
}
func init() {
orm.RegisterModel(new(OagoodsApprover))
}
func AddOagoodsApprover(upd OagoodsApprover) error {
o := orm.NewOrm()
oagood := new(OagoodsApprover)
oagood.Id = upd.Id
oagood.Userid = upd.Userid
oagood.Oagoodid = upd.Oagoodid
//oagood.Summary = upd.Summary
oagood.Status = 0
oagood.Created = time.Now().Unix()
oagood.Changed = time.Now().Unix()
_, err := o.Insert(oagood)
return err
}
func UpdateOagoodsApprover(id int64, upd OagoodsApprover) error {
var oagood OagoodsApprover
o := orm.NewOrm()
oagood = OagoodsApprover{Id: id}
oagood.Summary = upd.Summary
oagood.Status = upd.Status
oagood.Changed = time.Now().Unix()
_, err := o.Update(&oagood, "summary", "status", "changed")
if err == nil {
//直接结束
if upd.Status == 2 {
ChangeOagoodResult(upd.Oagoodid, 2)
o.Raw("UPDATE pms_oagoods_approver SET status = ?,summary = ?, changed = ? WHERE oagoodid = ? AND approverid != ?", 2, "前审批人拒绝,后面审批人默认为拒绝状态", time.Now().Unix(), upd.Oagoodid, id).Exec()
} else {
_, _, approvers := ListOagoodApproverProcess(upd.Oagoodid)
//检测审批顺序
var ApproverNum = 0
for _, v := range approvers {
if v.Status == 1 {
ApproverNum++
}
}
if ApproverNum == len(approvers) {
ChangeOagoodResult(upd.Oagoodid, 1)
}
}
}
return err
}
type OagoodApproverProcess struct {
Userid int64
Realname string
Avatar string
Position string
Status int
Summary string
Changed int64
}
func ListOagoodApproverProcess(oagoodid int64) (num int64, err error, user []OagoodApproverProcess) {
var users []OagoodApproverProcess
qb, _ := orm.NewQueryBuilder("mysql")
qb.Select("upr.userid", "upr.realname", "p.name AS position", "u.avatar", "la.status", "la.summary", "la.changed").From("pms_oagoods_approver AS la").
LeftJoin("pms_users AS u").On("u.userid = la.userid").
LeftJoin("pms_users_profile AS upr").On("upr.userid = u.userid").
LeftJoin("pms_positions AS p").On("p.positionid = upr.positionid").
Where("la.oagoodid=?").
OrderBy("la.approverid").
Asc()
sql := qb.String()
o := orm.NewOrm()
nums, err := o.Raw(sql, oagoodid).QueryRows(&users)
return nums, err, users
}
func ListOagoodApproverProcessHtml(oagoodid int64) string {
nums, _, users := ListOagoodApproverProcess(oagoodid)
var html, avatar, css, status string
var num = int(nums)
for i, v := range users {
if "" == v.Avatar {
avatar = "/static/img/avatar/1.jpg"
} else {
avatar = v.Avatar
}
if v.Status == 1 {
status = "同意"
} else if v.Status == 2 {
//css = "gray"
status = "拒绝"
} else {
css = "gray"
status = "未处"
}
html += "<a href='javascript:;' title='" + v.Realname + "'><img class='" + css + "' src='" + avatar + "' alt='" + v.Realname + "'>" + status + "</a>"
if i < (num - 1) {
html += "<span>..........</span>"
}
}
return html
}
//检测是否已经审批
func CheckOagoodApprover(id, userId int64) (int64, int) {
var oagood OagoodsApprover
o := orm.NewOrm()
o.QueryTable(models.TableName("oagoods_approver")).Filter("oagoodid", id).Filter("userid", userId).One(&oagood, "approverid", "status")
return oagood.Id, oagood.Status
}