forked from xen0n/go-workwx
-
Notifications
You must be signed in to change notification settings - Fork 0
/
oa.go
189 lines (171 loc) · 6.6 KB
/
oa.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
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
package workwx
import (
"strconv"
"time"
)
// GetOATemplateDetail 获取审批模板详情
func (c *WorkwxApp) GetOATemplateDetail(templateID string) (*OATemplateDetail, error) {
resp, err := c.execOAGetTemplateDetail(reqOAGetTemplateDetail{
TemplateID: templateID,
})
if err != nil {
return nil, err
}
return &resp.OATemplateDetail, nil
}
// ApplyOAEvent 提交审批申请
func (c *WorkwxApp) ApplyOAEvent(applyInfo OAApplyEvent) (string, error) {
resp, err := c.execOAApplyEvent(reqOAApplyEvent{
OAApplyEvent: applyInfo,
})
if err != nil {
return "", err
}
return resp.SpNo, nil
}
// GetOAApprovalInfo 批量获取审批单号
func (c *WorkwxApp) GetOAApprovalInfo(req GetOAApprovalInfoReq) ([]string, error) {
resp, err := c.execOAGetApprovalInfo(reqOAGetApprovalInfo{
StartTime: strconv.FormatInt(req.StartTime.Unix(), 10),
EndTime: strconv.FormatInt(req.EndTime.Unix(), 10),
Cursor: req.Cursor,
Size: req.Size,
Filters: req.Filters,
})
if err != nil {
return nil, err
}
return resp.SpNoList, nil
}
// GetOAApprovalDetail 提交审批申请
func (c *WorkwxApp) GetOAApprovalDetail(spNo string) (*OAApprovalDetail, error) {
resp, err := c.execOAGetApprovalDetail(reqOAGetApprovalDetail{
SpNo: spNo,
})
if err != nil {
return nil, err
}
return &resp.Info, nil
}
// GetOAGetCorpVacationConf 获取企业假期管理配置
func (c *WorkwxApp) GetOAGetCorpVacationConf() ([]CorpVacationConf, error) {
resp, err := c.execOAGetCorpVacationConf(reqOAGetCorpVacationConf{})
if err != nil {
return nil, err
}
return resp.Lists, nil
}
// GetOAGetUserVacationQuota 获取成员假期余额
func (c *WorkwxApp) GetOAGetUserVacationQuota(userID string) ([]UserVacationQuota, error) {
resp, err := c.execOAGetUserVacationQuota(reqOAGetUserVacationQuota{UserID: userID})
if err != nil {
return nil, err
}
return resp.Lists, nil
}
// SetOAOneUserVacationQuota 修改成员假期余额
func (c *WorkwxApp) SetOAOneUserVacationQuota(req OASetOneUserVacationQuota) error {
_, err := c.execOASetOneUserVacationQuota(reqOASetOneUserVacationQuota(req))
return err
}
// GetOAApprovalInfoReq 批量获取审批单号请求
type GetOAApprovalInfoReq struct {
// StartTime 审批单提交的时间范围,开始时间,UNix时间戳
StartTime time.Time
// EndTime 审批单提交的时间范围,结束时间,Unix时间戳
EndTime time.Time
// Cursor 分页查询游标,默认为0,后续使用返回的next_cursor进行分页拉取
Cursor int
// Size 一次请求拉取审批单数量,默认值为100,上限值为100
Size uint32
// Filters 筛选条件,可对批量拉取的审批申请设置约束条件,支持设置多个条件
Filters []OAApprovalInfoFilter
}
// OAApprovalInfo 审批申请状态变化回调通知
type OAApprovalInfo struct {
// SpNo 审批编号
SpNo string `xml:"SpNo"`
// SpName 审批申请类型名称(审批模板名称)
SpName string `xml:"SpName"`
// SpStatus 申请单状态:1-审批中;2-已通过;3-已驳回;4-已撤销;6-通过后撤销;7-已删除;10-已支付
SpStatus string `xml:"SpStatus"`
// TemplateID 审批模板id。可在“获取审批申请详情”、“审批状态变化回调通知”中获得,也可在审批模板的模板编辑页面链接中获得。
TemplateID string `xml:"TemplateId"`
// ApplyTime 审批申请提交时间,Unix时间戳
ApplyTime string `xml:"ApplyTime"`
// Applicant 申请人信息
Applicant OAApprovalInfoApplicant `xml:"Applyer"`
// SpRecord 审批流程信息,可能有多个审批节点。
SpRecord []OAApprovalInfoSpRecord `xml:"SpRecord"`
// Notifier 抄送信息,可能有多个抄送节点
Notifier OAApprovalInfoNotifier `xml:"Notifyer"`
// Comments 审批申请备注信息,可能有多个备注节点
Comments []OAApprovalInfoComment `xml:"Comments"`
// StatusChangeEvent 审批申请状态变化类型:1-提单;2-同意;3-驳回;4-转审;5-催办;6-撤销;8-通过后撤销;10-添加备注
StatusChangeEvent string `xml:"StatuChangeEvent"`
}
// OAApprovalInfoApplicant 申请人信息
type OAApprovalInfoApplicant struct {
// UserID 申请人userid
UserID string `xml:"UserId"`
// Party 申请人所在部门pid
Party string `xml:"Party"`
}
// OAApprovalInfoSpRecord 审批流程信息,可能有多个审批节点。
type OAApprovalInfoSpRecord struct {
// SpStatus 审批节点状态:1-审批中;2-已同意;3-已驳回;4-已转审
SpStatus string `xml:"SpStatus"`
// ApproverAttr 节点审批方式:1-或签;2-会签
ApproverAttr string `xml:"ApproverAttr"`
// Details 审批节点详情。当节点为标签或上级时,一个节点可能有多个分支
Details []OAApprovalInfoSpRecordDetail `xml:"Details"`
}
// OAApprovalInfoSpRecordDetail 审批节点详情。当节点为标签或上级时,一个节点可能有多个分支
type OAApprovalInfoSpRecordDetail struct {
// Approver 分支审批人
Approver OAApprovalInfoSpRecordDetailApprover `xml:"Approver"`
// Speech 审批意见字段
Speech string `xml:"Speech"`
// SpStatus 分支审批人审批状态:1-审批中;2-已同意;3-已驳回;4-已转审
SpStatus string `xml:"SpStatus"`
// SpTime 节点分支审批人审批操作时间,0为尚未操作
SpTime string `xml:"SpTime"`
// Attach 节点分支审批人审批意见附件,赋值为media_id具体使用请参考:文档-获取临时素材
Attach []string `xml:"Attach"`
}
// OAApprovalInfoSpRecordDetailApprover 分支审批人
type OAApprovalInfoSpRecordDetailApprover struct {
// UserID 分支审批人userid
UserID string `xml:"UserId"`
}
// OAApprovalInfoNotifier 抄送信息,可能有多个抄送节点
type OAApprovalInfoNotifier struct {
// UserID 节点抄送人userid
UserID string `xml:"UserId"`
}
// OAApprovalInfoComment 审批申请备注信息,可能有多个备注节点
type OAApprovalInfoComment struct {
// CommentUserInfo 备注人信息
CommentUserInfo OAApprovalInfoCommentUserInfo `xml:"CommentUserInfo"`
// CommentTime 备注提交时间
CommentTime string `xml:"CommentTime"`
// CommentContent 备注文本内容
CommentContent string `xml:"CommentContent"`
// CommentID 备注id
CommentID string `xml:"CommentId"`
// Attach 备注意见附件,值是附件media_id具体使用请参考:文档-获取临时素材
Attach []string `xml:"Attach"`
}
// OAApprovalInfoCommentUserInfo 备注人信息
type OAApprovalInfoCommentUserInfo struct {
// UserID 备注人userid
UserID string `xml:"UserId"`
}
// OASetOneUserVacationQuota 修改成员假期余额
type OASetOneUserVacationQuota struct {
UserID string
VacationID string
LeftDuration string
TimeAttr int64
Remarks string
}