Browse Source

Merge branch 'develop' of https://gitee.com/zhijiantianya/ruoyi-vue-pro into master-jdk17

YunaiV 4 months ago
parent
commit
1e4e02ec2f

+ 0 - 42
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/app/kefu/vo/message/AppKeFuMessageRespVO.java

@@ -1,42 +0,0 @@
-package cn.iocoder.yudao.module.promotion.controller.app.kefu.vo.message;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-
-import java.time.LocalDateTime;
-
-@Schema(description = "用户 App - 客服消息 Response VO")
-@Data
-public class AppKeFuMessageRespVO {
-
-    @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "23202")
-    private Long id;
-
-    @Schema(description = "会话编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "12580")
-    private Long conversationId;
-
-    @Schema(description = "发送人编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "24571")
-    private Long senderId;
-
-    @Schema(description = "发送人类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
-    private Integer senderType;
-
-    @Schema(description = "接收人编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "29124")
-    private Long receiverId;
-
-    @Schema(description = "接收人类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
-    private Integer receiverType;
-
-    @Schema(description = "消息类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
-    private Integer contentType;
-
-    @Schema(description = "消息", requiredMode = Schema.RequiredMode.REQUIRED)
-    private String content;
-
-    @Schema(description = "是否已读", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
-    private Boolean readStatus;
-
-    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
-    private LocalDateTime createTime;
-
-}

+ 14 - 5
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/service/kefu/KeFuMessageServiceImpl.java

@@ -7,7 +7,9 @@ import cn.iocoder.yudao.framework.common.enums.UserTypeEnum;
 import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
 import cn.iocoder.yudao.module.infra.api.websocket.WebSocketSenderApi;
 import cn.iocoder.yudao.module.member.api.user.MemberUserApi;
+import cn.iocoder.yudao.module.member.api.user.dto.MemberUserRespDTO;
 import cn.iocoder.yudao.module.promotion.controller.admin.kefu.vo.message.KeFuMessageListReqVO;
+import cn.iocoder.yudao.module.promotion.controller.admin.kefu.vo.message.KeFuMessageRespVO;
 import cn.iocoder.yudao.module.promotion.controller.admin.kefu.vo.message.KeFuMessageSendReqVO;
 import cn.iocoder.yudao.module.promotion.controller.app.kefu.vo.message.AppKeFuMessagePageReqVO;
 import cn.iocoder.yudao.module.promotion.controller.app.kefu.vo.message.AppKeFuMessageSendReqVO;
@@ -15,6 +17,7 @@ import cn.iocoder.yudao.module.promotion.dal.dataobject.kefu.KeFuConversationDO;
 import cn.iocoder.yudao.module.promotion.dal.dataobject.kefu.KeFuMessageDO;
 import cn.iocoder.yudao.module.promotion.dal.mysql.kefu.KeFuMessageMapper;
 import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
+import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
 import jakarta.annotation.Resource;
 import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
@@ -66,9 +69,11 @@ public class KeFuMessageServiceImpl implements KeFuMessageService {
         conversationService.updateConversationLastMessage(kefuMessage);
 
         // 3.1 发送消息给会员
-        getSelf().sendAsyncMessageToMember(conversation.getUserId(), KEFU_MESSAGE_TYPE, kefuMessage);
+        AdminUserRespDTO user = adminUserApi.getUser(kefuMessage.getSenderId());
+        KeFuMessageRespVO message = BeanUtils.toBean(kefuMessage, KeFuMessageRespVO.class).setSenderAvatar(user.getAvatar());
+        getSelf().sendAsyncMessageToMember(conversation.getUserId(), KEFU_MESSAGE_TYPE, message);
         // 3.2 通知所有管理员更新对话
-        getSelf().sendAsyncMessageToAdmin(KEFU_MESSAGE_TYPE, kefuMessage);
+        getSelf().sendAsyncMessageToAdmin(KEFU_MESSAGE_TYPE, message);
         return kefuMessage.getId();
     }
 
@@ -84,7 +89,9 @@ public class KeFuMessageServiceImpl implements KeFuMessageService {
         // 2. 更新会话消息冗余
         conversationService.updateConversationLastMessage(kefuMessage);
         // 3. 通知所有管理员更新对话
-        getSelf().sendAsyncMessageToAdmin(KEFU_MESSAGE_TYPE, kefuMessage);
+        MemberUserRespDTO user = memberUserApi.getUser(kefuMessage.getSenderId());
+        KeFuMessageRespVO message = BeanUtils.toBean(kefuMessage, KeFuMessageRespVO.class).setSenderAvatar(user.getAvatar());
+        getSelf().sendAsyncMessageToAdmin(KEFU_MESSAGE_TYPE, message);
         return kefuMessage.getId();
     }
 
@@ -112,9 +119,11 @@ public class KeFuMessageServiceImpl implements KeFuMessageService {
         // 2.3 发送消息通知会员,管理员已读 -> 会员更新发送的消息状态
         KeFuMessageDO keFuMessage = getFirst(filterList(messageList, message -> UserTypeEnum.MEMBER.getValue().equals(message.getSenderType())));
         assert keFuMessage != null; // 断言避免警告
-        getSelf().sendAsyncMessageToMember(keFuMessage.getSenderId(), KEFU_MESSAGE_ADMIN_READ, conversation.getId());
+        getSelf().sendAsyncMessageToMember(keFuMessage.getSenderId(), KEFU_MESSAGE_ADMIN_READ,
+                new KeFuMessageRespVO().setConversationId(keFuMessage.getConversationId())); // 统一返回 json 格式
         // 2.4 通知所有管理员消息已读
-        getSelf().sendAsyncMessageToAdmin(KEFU_MESSAGE_ADMIN_READ, conversation.getId());
+        getSelf().sendAsyncMessageToAdmin(KEFU_MESSAGE_ADMIN_READ,
+                new KeFuMessageRespVO().setConversationId(keFuMessage.getConversationId())); // 统一返回 json 格式
     }
 
     private void validateReceiverExist(Long receiverId, Integer receiverType) {

+ 1 - 1
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/price/calculator/TradeDeliveryPriceCalculator.java

@@ -213,7 +213,7 @@ public class TradeDeliveryPriceCalculator implements TradePriceCalculator {
         }
         double totalChargeValue = getTotalChargeValue(orderItems, chargeMode);
         double totalPrice = TradePriceCalculatorHelper.calculateTotalPayPrice(orderItems);
-        return totalChargeValue >= templateFree.getFreeCount() && totalPrice >= templateFree.getFreePrice();
+        return totalChargeValue <= templateFree.getFreeCount() && totalPrice >= templateFree.getFreePrice();
     }
 
     private double getTotalChargeValue(List<OrderItem> orderItems, Integer chargeMode) {