package handlers import ( "context" "fmt" "lone-services/pkg/utils" "lone-services/pkg/wecom/message" "lone-services/services/wecom/internal/dao" "lone-services/services/wecom/internal/logic/message/builder" "lone-services/services/wecom/internal/logic/message/task" msgutil "lone-services/services/wecom/internal/logic/message/utils" "github.com/google/uuid" ) type AddressReviewHandler struct{} func (h AddressReviewHandler) Build(ctx context.Context, job dao.WeComJob) ([]*message.SendRequest, error) { change, err := msgutil.GetLatestReviewChange(job.BizType, int64(job.BizId)) if err != nil { return nil, err } fields := []dao.FieldConfig{ {Field: "type_name", Label: "门店名称"}, {Field: "name", Label: "收货人"}, {Field: "address", Label: "地址"}, {Field: "district", Label: "地区"}, {Field: "mobile", Label: "收货人电话"}, } content, err := BuildAddressDiff(msgutil.DiffContent(change), fields) if err != nil { return nil, err } taskId := uuid.NewString() detailUrl := fmt.Sprintf("https://baidu.com/xxx/review?id=%d", job.BizId) if err = (task.Service{}).Create(job, taskId, detailUrl); err != nil { return nil, err } req, err := builder.ButtonCard(builder.ButtonCardParams{ ToUser: utils.GetConfigString("wecom.address_reviewer_ids"), TaskId: taskId, Title: "地址信息变更审核", Content: content, Buttons: []message.Button{ { Text: "拒绝", Style: utils.NumberTwo, Key: fmt.Sprintf("%s:reject:%s", msgutil.GetExtString(job.Ext, "key"), taskId), }, { Text: "通过", Style: utils.NumberOne, Key: fmt.Sprintf("%s:agree:%s", msgutil.GetExtString(job.Ext, "key"), taskId), }, }, }) if err != nil { return nil, err } return []*message.SendRequest{req}, nil }