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 StoreReviewHandler struct{} func (h StoreReviewHandler) 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 } user, err := msgutil.GetActionUser(job.BizId, job.BizType) if err != nil { return nil, err } content := []message.HorizontalContent{ {KeyName: "门店名称", Value: msgutil.BizFieldFromChange(change, "name")}, {KeyName: "申请原因", Value: msgutil.GetExtString(job.Ext, "reason")}, {KeyName: "申请人", Value: user.Name}, {KeyName: "申请时间", Value: utils.Now().Format()}, } 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.store_reviewer_ids"), TaskId: taskId, Desc: "门店审核", 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 }