116 lines
2.4 KiB
Go
116 lines
2.4 KiB
Go
package action
|
|
|
|
import (
|
|
"base-service/app/dao"
|
|
"base-service/app/models"
|
|
"base-service/app/services/wecom/client"
|
|
"base-service/pkg/wecom/message"
|
|
"base-service/utils"
|
|
"context"
|
|
"errors"
|
|
"fmt"
|
|
"strconv"
|
|
"time"
|
|
)
|
|
|
|
type ReviewActionService struct {
|
|
}
|
|
|
|
func (s ReviewActionService) UpdateCard(reqData *dao.ReviewActionRequest) error {
|
|
lockKey := fmt.Sprintf(
|
|
"wecom:review:lock:%s",
|
|
reqData.TaskId,
|
|
)
|
|
|
|
ok, err := utils.Redis.SetNX(lockKey, 1, 5*time.Second).Result()
|
|
|
|
if err != nil {
|
|
utils.Logger.Error("redis read filed")
|
|
return err
|
|
}
|
|
|
|
if !ok {
|
|
utils.Logger.Info("You clicked too fast")
|
|
return errors.New("You clicked too fast")
|
|
}
|
|
w := models.Params{
|
|
Eq: map[string]string{
|
|
"task_id": reqData.TaskId,
|
|
},
|
|
}
|
|
task := dao.WecomReviewTask{}
|
|
err = models.WecomReviewTask{}.Init().GetOne(
|
|
w,
|
|
&task,
|
|
)
|
|
if task.ReviewStatus != dao.WecomReviewPending {
|
|
utils.Logger.Info("task already reviewed")
|
|
return errors.New("task already reviewed")
|
|
}
|
|
if err != nil {
|
|
return err
|
|
}
|
|
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
|
|
default:
|
|
|
|
replaceName = dao.WecomReviewExpiredFormat
|
|
reviewStatus = dao.WecomReviewExpired
|
|
}
|
|
|
|
updateReq := &message.UpdateCardRequest{
|
|
AgentId: reqData.AgentId,
|
|
Atall: dao.NumberOne,
|
|
ResponseCode: reqData.ResponseCode,
|
|
|
|
Button: &message.UpdateButton{
|
|
ReplaceName: replaceName,
|
|
},
|
|
}
|
|
|
|
messageClient := client.NewMessageClient(dao.WecomTypeReview)
|
|
|
|
err = messageClient.Update(context.Background(), updateReq)
|
|
|
|
if err != nil {
|
|
utils.Logger.Info("messageclient update filed", err)
|
|
return err
|
|
}
|
|
|
|
_, err = models.WecomReviewTask{}.Init().Edit(
|
|
w,
|
|
map[string]string{
|
|
"review_status": strconv.Itoa(reviewStatus),
|
|
"response_code": reqData.ResponseCode,
|
|
},
|
|
)
|
|
return err
|
|
|
|
// 只做更新卡片,去掉发送通知
|
|
// notifyJob := dao.WeComJob{
|
|
// ObjId: task.ObjId,
|
|
// ObjType: task.ObjType,
|
|
// Type: dao.WecomTypeNotify,
|
|
// NotifyObjId: task.NotifyObjId,
|
|
// Message: task.Message,
|
|
// }
|
|
|
|
// return sender.WecomSenderService{}.Send(notifyJob)
|
|
}
|