Files
junhong_cmp_fiber/internal/model/dto/wecom_scene_dto.go
break 5ed6b39deb
Some checks failed
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Has been cancelled
feat(收口): 补齐 8 月迭代缺口并同步 Spec 与证据链
- 新增六对成对迁移 000232–000237:H5 弹窗类型、退款结算标识与申请人备注、优先轮询事实字段与两个新终态、通道阈值命中留痕、手机号最近解绑人、提现资格校验留痕
- 退款:原因必填与申请人备注、来源支付与渠道流水冻结、线下处理流水号补录审计、按订单查询可选退款方式、企微审批材料补齐且新增字段缺失映射即明确失败
- 优先轮询:人工关闭、有效期到期独立周期任务、失败与过期人工重触发、事实字段与异常重试查询、资产解析端点只读投影
- 通道阈值:命中事实同事务留痕与命中记录查询;员工账单:列表筛选与详情投影;商户池:列表投影与统计周期语义;H5:弹窗类型与类别排序
- 手机号:有效关联数量与最近解绑人、短信验证码失败次数限制;导出:佣金明细十五列与报表序号列
- 时间筛选:三处新增筛选纳入统一严格解析契约,员工账单产生时间参数改名
- 同步 12 份主 Spec 需求、两端点与异步任务证据链,门禁 context-health 与 OpenSpec 校验通过
2026-09-18 15:34:29 +08:00

107 lines
7.9 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:"系统业务字段编码;按 business_type 调用 GET /api/admin/wecom/scenes/{business_type}/fields 获取可选值"`
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
}
// WeComBusinessFieldListParams 查询企业微信审批场景可映射字段路径参数。
type WeComBusinessFieldListParams struct {
BusinessType string `path:"business_type" required:"true" enum:"refund_approval,offline_recharge_approval,employee_collection_approval,agent_distribution_approval,withdrawal_qualification_approval,commission_withdrawal_approval" description:"业务类型 (refund_approval:退款审批, offline_recharge_approval:员工线下代充值审批, employee_collection_approval:员工代收款核销审批, agent_distribution_approval:代理扫码分销注册审批, withdrawal_qualification_approval:提现资料资格审批, commission_withdrawal_approval:佣金提现终审)"`
}
// WeComBusinessFieldResponse 企业微信审批场景可映射业务字段响应。
type WeComBusinessFieldResponse struct {
Code string `json:"code" description:"control_mapping.business_field 应填写的稳定字段编码"`
Name string `json:"name" description:"字段中文名称"`
ValueType string `json:"value_type" description:"字段值类型 (string:字符串, integer:整数, money:两位小数的元金额字符串, file_list:对象存储文件引用列表)"`
Description string `json:"description" description:"字段取值说明"`
// RequiredMapping 为 true 表示该字段必须配置控件映射:场景映射校验在缺失映射时明确失败,
// 表单构建在快照缺值时明确失败并提示缺失控件MUST NOT 静默丢弃。
// 仅本变更新增的字段标记为 true既有未映射的可选控件保持既有静默跳过行为。
RequiredMapping bool `json:"required_mapping" description:"是否必须配置控件映射true 表示缺失映射或快照缺值时提交明确失败"`
}
// WeComBusinessFieldListResponse 企业微信审批场景可映射业务字段列表响应。
type WeComBusinessFieldListResponse struct {
BusinessType string `json:"business_type" description:"业务类型"`
BusinessTypeName string `json:"business_type_name" description:"业务类型名称(中文)"`
Items []WeComBusinessFieldResponse `json:"items" description:"当前业务类型允许写入 control_mapping.business_field 的字段"`
}
// 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" enum:"refund_approval,offline_recharge_approval,employee_collection_approval,agent_distribution_approval,withdrawal_qualification_approval,commission_withdrawal_approval" description:"业务类型 (refund_approval:退款审批, offline_recharge_approval:员工线下代充值审批, employee_collection_approval:员工代收款核销审批, agent_distribution_approval:代理扫码分销注册审批, withdrawal_qualification_approval:提现资料资格审批, commission_withdrawal_approval:佣金提现终审);可先调用 GET /api/admin/wecom/scenes/{business_type}/fields 查询允许映射的业务字段"`
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:"每页数量"`
}