setvacation

This commit is contained in:
jiangyong 2026-06-27 11:46:22 +08:00
parent 4d48f8fce3
commit 68cc3c14e6
2 changed files with 56 additions and 0 deletions

1
.gitignore vendored
View File

@ -11,3 +11,4 @@ go.sum
pkg pkg
test.go test.go
.claude .claude
opencode.json

View File

@ -86,6 +86,21 @@ type ApproveDetailRsp struct {
Info *ApproveDetail `json:"info"` Info *ApproveDetail `json:"info"`
} }
type VacationQuota struct {
Id uint32 `json:"id"`
AssignDuration uint32 `json:"assignduration"`
UsedDuration uint32 `json:"usedduration"`
LeftDuration uint32 `json:"leftduration"`
VacationName string `json:"vacationname"`
RealAssignDuration uint32 `json:"real_assignduration"`
}
type VacationQuotaRsp struct {
Errcode int `json:"errcode"`
Errmsg string `json:"errmsg"`
Lists []*VacationQuota `json:"lists"`
}
type AppApprove struct { type AppApprove struct {
App App
} }
@ -165,6 +180,46 @@ func NewAppApprove(cfg *AppConfig) *AppApprove {
} }
} }
func (q *AppApprove) GetVacationQuota(userid string) ([]*VacationQuota, error) {
reqUrl := fmt.Sprintf("https://qyapi.weixin.qq.com/cgi-bin/oa/vacation/getuservacationquota?access_token=%s", q.GetToken())
reqParam := map[string]interface{}{
"userid": userid,
}
rspBody, err := util.HttpPostJson(reqUrl, nil, []byte(goutil.EncodeJSON(reqParam)))
if err != nil {
return nil, err
}
if _, err := q.GetResult(rspBody); err != nil {
return nil, err
}
var rsp VacationQuotaRsp
if err := json.Unmarshal(rspBody, &rsp); err != nil {
log.Errorf("get body[%s] json error :%s", string(rspBody), err.Error())
return nil, err
}
return rsp.Lists, nil
}
func (q *AppApprove) SetVacationQuota(userid string, vacationId, leftDuration, timeAttr uint32, remarks string) error {
reqUrl := fmt.Sprintf("https://qyapi.weixin.qq.com/cgi-bin/oa/vacation/setoneuserquota?access_token=%s", q.GetToken())
reqParam := map[string]interface{}{
"userid": userid,
"vacation_id": vacationId,
"leftduration": leftDuration,
"time_attr": timeAttr,
}
if remarks != "" {
reqParam["remarks"] = remarks
}
rspBody, err := util.HttpPostJson(reqUrl, nil, []byte(goutil.EncodeJSON(reqParam)))
if err != nil {
return err
}
_, err = q.GetResult(rspBody)
return err
}
func (q *AppApprove) GetDetail(spNo string) (*ApproveDetail, error) { func (q *AppApprove) GetDetail(spNo string) (*ApproveDetail, error) {
reqUrl := fmt.Sprintf("https://qyapi.weixin.qq.com/cgi-bin/oa/getapprovaldetail?access_token=%s", q.GetToken()) reqUrl := fmt.Sprintf("https://qyapi.weixin.qq.com/cgi-bin/oa/getapprovaldetail?access_token=%s", q.GetToken())
reqParam := fmt.Sprintf(`{"sp_no":"%s"}`, spNo) reqParam := fmt.Sprintf(`{"sp_no":"%s"}`, spNo)