Files
junhong_cmp_fiber/internal/model/dto/wecom_scene_dto.go
break 072ec1db7e
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 8m15s
修复企微的问题
2026-07-27 17:04:32 +08:00

83 lines
5.1 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package dto
import "time"
// WeComControlMappingItem 描述一个业务字段到企微模板控件的显式映射。
type WeComControlMappingItem struct {
BusinessField string `json:"business_field" validate:"required,min=1,max=64" description:"稳定业务字段编码"`
ControlID string `json:"control_id" validate:"required,min=1,max=128" description:"企微模板控件 ID"`
ControlType string `json:"control_type" validate:"required,min=1,max=64" description:"企微模板控件类型,必须与模板详情一致"`
OptionMapping map[string]string `json:"option_mapping" description:"业务枚举值到企微选择项 key 的映射;非选择控件传空对象"`
}
// InspectWeComTemplateRequest 检查企业微信审批模板请求。
type InspectWeComTemplateRequest struct {
TemplateID string `json:"template_id" validate:"required,min=1,max=128" description:"企微后台已创建模板 ID"`
}
// InspectWeComTemplateParams 检查企业微信审批模板路径与请求参数。
type InspectWeComTemplateParams struct {
IDReq
InspectWeComTemplateRequest
}
// WeComTemplateControlResponse 企业微信审批模板控件响应。
type WeComTemplateControlResponse struct {
ID string `json:"id" description:"企微模板控件 ID"`
Type string `json:"type" description:"企微模板控件类型"`
Title string `json:"title" description:"企微模板控件标题"`
Required bool `json:"required" description:"是否必填"`
OptionKeys []string `json:"option_keys" description:"选择控件可用选项 key"`
}
// WeComTemplateDetailResponse 企业微信审批模板详情响应。
type WeComTemplateDetailResponse struct {
TemplateID string `json:"template_id" description:"企微模板 ID"`
Name string `json:"name" description:"企微模板名称"`
Controls []WeComTemplateControlResponse `json:"controls" description:"可用于业务字段映射的模板控件"`
}
// SaveWeComApprovalSceneRequest 保存企业微信审批场景请求。
type SaveWeComApprovalSceneRequest struct {
ApplicationID uint `json:"application_id" validate:"required,gt=0" description:"企业微信应用配置 ID"`
TemplateID string `json:"template_id" validate:"required,min=1,max=128" description:"企微后台已创建模板 ID"`
ControlMapping []WeComControlMappingItem `json:"control_mapping" validate:"required,min=1,dive" description:"业务字段与模板控件映射"`
Status int `json:"status" validate:"oneof=0 1" enum:"0,1" description:"状态 (0:禁用, 1:启用)"`
}
// SaveWeComApprovalSceneParams 保存企业微信审批场景路径与请求参数。
type SaveWeComApprovalSceneParams struct {
BusinessType string `path:"business_type" required:"true" description:"业务类型 (refund_approval:退款审批, offline_recharge_approval:员工线下代充值审批)"`
SaveWeComApprovalSceneRequest
}
// WeComApprovalSceneListRequest 查询企业微信审批场景请求。
type WeComApprovalSceneListRequest struct {
Page int `query:"page" validate:"omitempty,min=1" default:"1" description:"页码,默认 1"`
PageSize int `query:"page_size" validate:"omitempty,min=1,max=100" default:"20" description:"每页数量,默认 20最大 100"`
}
// WeComApprovalSceneResponse 企业微信审批场景响应。
type WeComApprovalSceneResponse struct {
ID uint `json:"id" description:"场景配置 ID"`
BusinessType string `json:"business_type" description:"业务类型"`
BusinessTypeName string `json:"business_type_name" description:"业务类型名称(中文)"`
ApplicationID uint `json:"application_id" description:"企业微信应用配置 ID"`
TemplateID string `json:"template_id" description:"企微模板 ID"`
TemplateName string `json:"template_name" description:"企微模板名称"`
TemplateFingerprint string `json:"template_fingerprint" description:"模板控件最小快照 SHA-256 指纹"`
ControlMapping []WeComControlMappingItem `json:"control_mapping" description:"已验证控件映射"`
Status int `json:"status" description:"状态 (0:禁用, 1:启用)"`
StatusName string `json:"status_name" description:"状态名称(中文)"`
LastVerifiedAt time.Time `json:"last_verified_at" description:"最近模板校验时间"`
UpdatedAt time.Time `json:"updated_at" description:"更新时间"`
}
// WeComApprovalSceneListResponse 企业微信审批场景分页响应。
type WeComApprovalSceneListResponse struct {
Items []WeComApprovalSceneResponse `json:"items" description:"审批场景列表"`
Total int64 `json:"total" description:"总数量"`
Page int `json:"page" description:"当前页码"`
PageSize int `json:"page_size" description:"每页数量"`
}