setvacation
This commit is contained in:
parent
4d48f8fce3
commit
68cc3c14e6
|
|
@ -11,3 +11,4 @@ go.sum
|
||||||
pkg
|
pkg
|
||||||
test.go
|
test.go
|
||||||
.claude
|
.claude
|
||||||
|
opencode.json
|
||||||
|
|
@ -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)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue