Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: 增加假期相关接口及时长组件补充时区信息 #196

Merged
merged 2 commits into from
Mar 8, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
42 changes: 42 additions & 0 deletions apis.md.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 3 additions & 0 deletions docs/apis.md
Original file line number Diff line number Diff line change
Expand Up @@ -159,6 +159,9 @@ Name|Request Type|Response Type|Access Token|URL|Doc
`execOAApplyEvent`|`reqOAApplyEvent`|`respOAApplyEvent`|+|`POST /cgi-bin/oa/applyevent`|[提交审批申请](https://work.weixin.qq.com/api/doc/90000/90135/91853)
`execOAGetApprovalInfo`|`reqOAGetApprovalInfo`|`respOAGetApprovalInfo`|+|`POST /cgi-bin/oa/getapprovalinfo`|[批量获取审批单号](https://work.weixin.qq.com/api/doc/90000/90135/91816)
`execOAGetApprovalDetail`|`reqOAGetApprovalDetail`|`respOAGetApprovalDetail`|+|`POST /cgi-bin/oa/getapprovaldetail`|[获取审批申请详情](https://work.weixin.qq.com/api/doc/90000/90135/91983)
`execOAGetCorpVacationConf`| `reqOAGetCorpVacationConf` | `respOAGetCorpVacationConf` |+| `GET /cgi-bin/oa/vacation/getcorpconf` |[获取企业假期管理配置](https://developer.work.weixin.qq.com/document/path/93375)
`execOAGetUserVacationQuota`| `reqOAGetUserVacationQuota` | `respOAGetUserVacationQuota` |+| `POST /cgi-bin/oa/vacation/getuservacationquota` |[获取成员假期余额](https://developer.work.weixin.qq.com/document/path/93376)
`execOASetOneUserVacationQuota`| `reqOASetOneUserVacationQuota` | `respOASetOneUserVacationQuota` |+| `POST /cgi-bin/oa/vacation/setoneuserquota` |[修改成员假期余额](https://developer.work.weixin.qq.com/document/path/93377)

# 企业支付

Expand Down
78 changes: 78 additions & 0 deletions docs/oa.md
Original file line number Diff line number Diff line change
Expand Up @@ -163,10 +163,19 @@ Name|JSON|Type|Doc

Name|JSON|Type|Doc
:---|:---|:---|:--
`Type`|`type`|`string`| 时间展示类型:halfday-日期;hour-日期+时间
`NewBegin`|`new_begin`|`int`| 开始时间,unix时间戳
`NewEnd`|`new_end`|`int`| 结束时间,unix时间戳
`NewDuration`|`new_duration`|`int`| 时长范围,单位秒
`PerdayDuration`|`perday_duration`|`int`| 每天的工作时长
`TimezoneInfo`|`timezone_info`|`*OAContentDateRangeTimezoneInfo`|时区信息,只有在非UTC+8的情况下会返回

### `OAContentDateRangeTimezoneInfo` 时区信息

Name|JSON|Type|Doc
:---|:---|:---|:--
`ZoneOffset`|`zone_offset`|`string`|时区偏移量
`ZoneDesc`|`zone_desc`|`string`|时区描述

### `OATemplateDetail` 审批模板详情

Expand Down Expand Up @@ -414,3 +423,72 @@ const OAApprovalInfoFilterKeyDepartment OAApprovalInfoFilterKey = "department"
// OAApprovalInfoFilterKeySpStatus 审批状态
const OAApprovalInfoFilterKeySpStatus OAApprovalInfoFilterKey = "sp_status"
```

### `CorpVacationConf` 企业假期管理配置

Name|JSON|Type|Doc
:---|:---|:---|:--
`ID`|`id`|`uint32`| 假期id
`Name`|`name`|`string`| 假期名称
`TimeAttr`|`time_attr`|`uint32`| 假期时间刻度:0-按天请假;1-按小时请假
`DurationType`|`duration_type`|`uint32`| 时长计算类型:0-自然日;1-工作日
`QuotaAttr`|`quota_attr`|`CorpVacationConfQuotaAttr`| 假期发放相关配置
`PerdayDuration`|`perday_duration`|`uint32`| 单位换算值,即1天对应的秒数,可将此值除以3600得到一天对应的小时。
`IsNewovertime`|`is_newovertime`|`*uint32`| 是否关联加班调休,0-不关联,1-关联,关联后改假期类型变为调休假
`EnterCompTimeLimit`|`enter_comp_time_limit`|`*uint32`| 入职时间大于n个月可用该假期,单位为月
`ExpireRule`|`expire_rule`|`*CorpVacationConfExpireRule`| 假期过期规则

### `CorpVacationConfQuotaAttr` 企业假期管理配置-假期发放相关配置

Name|JSON|Type|Doc
:---|:---|:-------------|:--
`Type`|`type`|`uint32`| 假期发放类型:0-不限额;1-自动按年发放;2-手动发放;3-自动按月发放
`AutoresetTime`|`autoreset_time`|`uint32`| 自动发放时间戳,若假期发放为自动发放,此参数代表自动发放日期。注:返回时间戳的年份是无意义的,请只使用返回时间的月和日;若at_entry_date为true,该字段则无效,假期发放时间为员工入职时间
`AutoresetDuration`|`autoreset_duration`|`uint32`| 自动发放时长,单位为秒。注:只有自动按年发放和自动按月发放时有效,若选择了按照工龄和司龄发放,该字段无效,发放时长请使用区间中的quota
`QuotaRuleType`|`quota_rule_type`|`*uint32`| 额度计算类型,自动按年发放时有效,0-固定额度;1-按工龄计算;2-按司龄计算
`QuotaRules`|`quota_rules`|`*CorpVacationConfQuotaRules`| 额度计算规则,自动按年发放时有效
`AtEntryDate`|`at_entry_date`|`*bool`| 是否按照入职日期发放假期,只有在自动按年发放类型有效,选择后发放假期的时间会成为员工入职的日期
`AutoResetMonthDay`|`auto_reset_month_day`|`*uint32`| 自动按月发放的发放时间,只有自动按月发放类型有效

### `CorpVacationConfQuotaRules` 企业假期管理配置-额度计算规则

Name|JSON|Type|Doc
:---|:---|:-------------|:--
`List`|`list`|`[]CorpVacationConfQuotaRule`| 额度计算规则区间,只有在选择了按照工龄计算或者按照司龄计算时有效

### `CorpVacationConfQuotaRule` 企业假期管理配置-额度计算规则区间

Name|JSON|Type|Doc
:---|:---|:-------------|:--
`Quota`|`quota`|`uint32`| 区间发放时长,单位为s
`Begin`|`begin`|`uint32`| 区间开始点,单位为年
`End`|`end`|`uint32`| 区间结束点,无穷大则为0,单位为年
`BasedOnActualWorkTime`|`based_on_actual_work_time`|`bool`| 是否根据实际入职时间计算假期,选择后会根据员工在今年的实际工作时间发放假期

### `CorpVacationConfExpireRule` 企业假期管理配置-假期过期规则

Name|JSON|Type|Doc
:---|:---|:-------------|:--
`Type`|`type`|`uint32`| 过期规则类型,1-按固定时间过期,2-从发放日按年过期,3-从发放日按月过期,4-不过期
`Duration`|`duration`|`uint64`| 有效期,按年过期为年,按月过期为月,只有在以上两种情况时有效
`Date`|`date`|`CorpVacationConfDate`| 失效日期,只有按固定时间过期时有效
`ExternDurationEnable`|`extern_duration_enable`|`bool`| 是否允许延长有效期
`ExternDuration`|`extern_duration`|`CorpVacationConfDate`| 延长有效期的具体时间,只有在extern_duration_enable为true时有效

### `CorpVacationConfDate` 企业假期管理配置-失效日期

Name|JSON|Type|Doc
:---|:---|:-------------|:--
`Month`|`month`|`uint32`| 月份
`Day`|`day`|`uint32`| 日

### `UserVacationQuota` 假期列表

Name|JSON|Type|Doc
:---|:---|:-------------|:--
`ID`|`id`|`uint32`| 假期id
`AssignDuration`|`assignduration`|`uint32`| 发放时长,单位为秒
`UsedDuration`|`usedduration`|`uint32`| 使用时长,单位为秒
`LeftDuration`|`leftduration`|`uint32`| 剩余时长,单位为秒
`VacationName`|`vacationname`|`string`| 假期名称
`RealAssignDuration`|`real_assignduration`|`uint32`| 假期的实际发放时长,通常在设置了按照实际工作时间发放假期后进行计算
2 changes: 1 addition & 1 deletion errcodes/mod.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

59 changes: 57 additions & 2 deletions models.go
Original file line number Diff line number Diff line change
Expand Up @@ -1250,11 +1250,11 @@ type Button struct {
Type int `json:"type,omitempty"`
// 按钮文案,建议不超过10个字
Text string `json:"text"`
//按钮样式,目前可填1~4,不填或错填默认1
// 按钮样式,目前可填1~4,不填或错填默认1
Style int `json:"style,omitempty"`
// 按钮key值,用户点击后,会产生回调事件将本参数作为EventKey返回,回调事件会带上该key值,最长支持1024字节,不可重复,button_list.type是0时必填
Key string `json:"key,omitempty"`
//跳转事件的url,button_list.type是1时必填
// 跳转事件的url,button_list.type是1时必填
URL string `json:"url,omitempty"`
}

Expand Down Expand Up @@ -1910,3 +1910,58 @@ type respKfSyncMsg struct {
HasMore int `json:"has_more"`
MsgList []KfMsg `json:"msg_list"`
}

// reqOAGetCorpVacationConf 获取企业假期管理配置
type reqOAGetCorpVacationConf struct {
}

var _ urlValuer = reqOAGetCorpVacationConf{}

func (x reqOAGetCorpVacationConf) intoURLValues() url.Values {
return url.Values{}
}

// respOAGetCorpVacationConf 获取企业假期管理配置 响应
type respOAGetCorpVacationConf struct {
respCommon
// Lists 假期列表
Lists []CorpVacationConf `json:"lists"`
}

// reqOAGetUserVacationQuota 获取成员假期余额
type reqOAGetUserVacationQuota struct {
UserID string `json:"userid"`
}

var _ bodyer = reqOAGetUserVacationQuota{}

func (x reqOAGetUserVacationQuota) intoBody() ([]byte, error) {
return marshalIntoJSONBody(x)
}

// respOAGetUserVacationQuota 获取成员假期余额 响应
type respOAGetUserVacationQuota struct {
respCommon
// Lists 假期列表
Lists []UserVacationQuota `json:"lists"`
}

// reqOASetOneUserVacationQuota 修改成员假期余额
type reqOASetOneUserVacationQuota struct {
UserID string `json:"userid"`
VacationID string `json:"vacation_id"`
LeftDuration string `json:"leftduration"`
TimeAttr int64 `json:"time_attr"`
Remarks string `json:"remarks"`
}

var _ bodyer = reqOASetOneUserVacationQuota{}

func (x reqOASetOneUserVacationQuota) intoBody() ([]byte, error) {
return marshalIntoJSONBody(x)
}

// respOASetOneUserVacationQuota 修改成员假期余额 响应
type respOASetOneUserVacationQuota struct {
respCommon
}
33 changes: 33 additions & 0 deletions oa.go
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,30 @@ func (c *WorkwxApp) GetOAApprovalDetail(spNo string) (*OAApprovalDetail, error)
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时间戳
Expand Down Expand Up @@ -154,3 +178,12 @@ type OAApprovalInfoCommentUserInfo struct {
// UserID 备注人userid
UserID string `xml:"UserId"`
}

// OASetOneUserVacationQuota 修改成员假期余额
type OASetOneUserVacationQuota struct {
UserID string
VacationID string
LeftDuration string
TimeAttr int64
Remarks string
}
Loading
Loading