diff --git a/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/app/kefu/vo/message/AppKeFuMessageRespVO.java b/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/app/kefu/vo/message/AppKeFuMessageRespVO.java deleted file mode 100644 index fb7331afc8..0000000000 --- a/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/app/kefu/vo/message/AppKeFuMessageRespVO.java +++ /dev/null @@ -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; - -} \ No newline at end of file diff --git a/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/service/kefu/KeFuMessageServiceImpl.java b/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/service/kefu/KeFuMessageServiceImpl.java index 5a118856d8..5736559cb7 100644 --- a/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/service/kefu/KeFuMessageServiceImpl.java +++ b/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) { diff --git a/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/price/calculator/TradeDeliveryPriceCalculator.java b/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/price/calculator/TradeDeliveryPriceCalculator.java index cb592030ff..b45c22d8a1 100644 --- a/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/price/calculator/TradeDeliveryPriceCalculator.java +++ b/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 orderItems, Integer chargeMode) {