Files

67 lines
1.8 KiB
Go

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
}