71 lines
1.8 KiB
Go
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
|
|
}
|