feat: completed development wecom message
This commit is contained in:
@@ -1,115 +1,70 @@
|
||||
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"
|
||||
|
||||
"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 {
|
||||
}
|
||||
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
|
||||
func (s ReviewActionService) UpdateCard(ctx context.Context, reqData *dao.ReviewActionRequest) error {
|
||||
if ctx == nil {
|
||||
ctx = context.Background()
|
||||
}
|
||||
|
||||
if !ok {
|
||||
utils.Logger.Info("You clicked too fast")
|
||||
return errors.New("You clicked too fast")
|
||||
}
|
||||
w := models.Params{
|
||||
w := modelbase.Params{
|
||||
Eq: map[string]string{
|
||||
"task_id": reqData.TaskId,
|
||||
"task_id": reqData.TaskId,
|
||||
"review_status": strconv.Itoa(dao.WecomReviewPending),
|
||||
},
|
||||
}
|
||||
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
|
||||
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: dao.NumberOne,
|
||||
Atall: utils.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)
|
||||
if err = client.NewMessageClient(dao.WecomTypeReview).Update(ctx, updateReq); err != nil {
|
||||
logx.Errorf("message client update failed: %v", 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)
|
||||
return nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user