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 }