feat: wecom message init
This commit is contained in:
@@ -0,0 +1,115 @@
|
||||
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)
|
||||
}
|
||||
Reference in New Issue
Block a user