Files
lone-services/services/wecom/internal/logic/message/action/review_action.go
T

71 lines
1.8 KiB
Go

package action
import (
"context"
"errors"
"strconv"
"lone-services/pkg/modelbase"
"lone-services/pkg/utils"
"lone-services/pkg/wecom/message"
"lone-services/services/wecom/internal/client"
"lone-services/services/wecom/internal/dao"
"lone-services/services/wecom/internal/model"
"github.com/zeromicro/go-zero/core/logx"
)
type ReviewActionService struct{}
func (s ReviewActionService) UpdateCard(ctx context.Context, reqData *dao.ReviewActionRequest) error {
if ctx == nil {
ctx = context.Background()
}
w := modelbase.Params{
Eq: map[string]string{
"task_id": reqData.TaskId,
"review_status": strconv.Itoa(dao.WecomReviewPending),
},
}
replaceName := dao.WecomReviewExpiredFormat
reviewStatus := dao.WecomReviewExpired
switch reqData.Action {
case dao.WecomReviewActionAgree:
replaceName = dao.WecomReviewAgreeFormat
reviewStatus = dao.WecomReviewAgree
case dao.WecomReviewActionReject:
replaceName = dao.WecomReviewRejectFormat
reviewStatus = dao.WecomReviewReject
case dao.WecomReviewActionExpired:
replaceName = dao.WecomReviewExpiredFormat
reviewStatus = dao.WecomReviewExpired
}
rows, err := model.ReviewTaskModel{}.Init().Edit(w, map[string]string{
"review_status": strconv.Itoa(reviewStatus),
"response_code": reqData.ResponseCode,
})
if err != nil {
return err
}
if rows == 0 {
return errors.New("task already reviewed")
}
updateReq := &message.UpdateCardRequest{
AgentId: reqData.AgentId,
Atall: utils.NumberOne,
ResponseCode: reqData.ResponseCode,
Button: &message.UpdateButton{
ReplaceName: replaceName,
},
}
if err = client.NewMessageClient(dao.WecomTypeReview).Update(ctx, updateReq); err != nil {
logx.Errorf("message client update failed: %v", err)
return err
}
return nil
}