Răsfoiți Sursa

查看详情

wks 2 ani în urmă
părinte
comite
fba7855df5

+ 19 - 0
src/main/java/com/ydtech/modules/constants/GroupType.java

@@ -0,0 +1,19 @@
+package com.ydtech.modules.constants;
+
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+@AllArgsConstructor
+@Getter
+public enum GroupType {
+
+    GT_1(1, "AI机器人");
+
+    private final Integer code;
+
+    private final String desc;
+
+    public final static String AI_NAME = "AI";
+
+}

+ 18 - 0
src/main/java/com/ydtech/modules/constants/MessageType.java

@@ -0,0 +1,18 @@
+package com.ydtech.modules.constants;
+
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+@AllArgsConstructor
+@Getter
+public enum MessageType {
+
+    MT_1(1, "文本");
+
+    private final Integer code;
+
+    private final String desc;
+
+
+}

+ 10 - 0
src/main/java/com/ydtech/modules/customer/controller/CustomerController.java

@@ -3,6 +3,7 @@ package com.ydtech.modules.customer.controller;
 
 import com.ydtech.aop.request.RequestSingleParam;
 import com.ydtech.core.page.HttpResult;
+import com.ydtech.modules.customer.entity.po.CusChatMessages;
 import com.ydtech.modules.customer.service.CustomerService;
 import io.swagger.annotations.Api;
 import lombok.RequiredArgsConstructor;
@@ -10,6 +11,8 @@ import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.util.List;
+
 @Api(tags = "客服功能", value = "客服功能")
 @RequestMapping("/customer")
 @RestController
@@ -25,4 +28,11 @@ public class CustomerController {
     }
 
 
+    @PostMapping("/ai/queryMessage")
+    public HttpResult<List<CusChatMessages>> queryMessage() {
+        List<CusChatMessages> list = customerService.queryMessage();
+        return HttpResult.ok(list);
+    }
+
+
 }

+ 46 - 7
src/main/java/com/ydtech/modules/customer/entity/po/CusChatMessages.java

@@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
+import com.ydtech.modules.constants.GroupType;
+import com.ydtech.modules.constants.MessageType;
 import lombok.Data;
 
 import java.io.Serializable;
@@ -11,9 +13,10 @@ import java.util.Date;
 
 /**
  * 客服消息
+ *
  * @TableName cus_chat_messages
  */
-@TableName(value ="cus_chat_messages")
+@TableName(value = "cus_chat_messages")
 @Data
 public class CusChatMessages implements Serializable {
     /**
@@ -35,6 +38,7 @@ public class CusChatMessages implements Serializable {
     private String toUserId;
 
     /**
+     * @see com.ydtech.modules.constants.MessageType
      * 消息类型
      */
     @TableField(value = "message_type")
@@ -47,6 +51,7 @@ public class CusChatMessages implements Serializable {
     private String message;
 
     /**
+     * @see com.ydtech.modules.constants.GroupType
      * 消息分组
      */
     @TableField(value = "group_type")
@@ -61,6 +66,40 @@ public class CusChatMessages implements Serializable {
     @TableField(exist = false)
     private static final long serialVersionUID = 1L;
 
+    /**
+     * 发送给AI 信息
+     *
+     * @param fromUserId 发送人
+     * @param message    消息
+     * @return 消息对象
+     */
+    public static CusChatMessages toAiMessage(String fromUserId, String message) {
+        CusChatMessages cusChatMessages = new CusChatMessages();
+        cusChatMessages.setFromUserId(fromUserId);
+        cusChatMessages.setToUserId(GroupType.AI_NAME);
+        cusChatMessages.setGroupType(GroupType.GT_1.getCode());
+        cusChatMessages.setMessageType(MessageType.MT_1.getCode());
+        cusChatMessages.setMessage(message);
+        return cusChatMessages;
+    }
+
+    /**
+     * 接收给AI 信息
+     *
+     * @param toUserId 接收人
+     * @param message  消息
+     * @return 消息对象
+     */
+    public static CusChatMessages receptionAiMessage(String toUserId, String message) {
+        CusChatMessages cusChatMessages = new CusChatMessages();
+        cusChatMessages.setFromUserId(GroupType.AI_NAME);
+        cusChatMessages.setToUserId(toUserId);
+        cusChatMessages.setGroupType(GroupType.GT_1.getCode());
+        cusChatMessages.setMessageType(MessageType.MT_1.getCode());
+        cusChatMessages.setMessage(message);
+        return cusChatMessages;
+    }
+
     @Override
     public boolean equals(Object that) {
         if (this == that) {
@@ -74,12 +113,12 @@ public class CusChatMessages implements Serializable {
         }
         CusChatMessages other = (CusChatMessages) that;
         return (this.getId() == null ? other.getId() == null : this.getId().equals(other.getId()))
-            && (this.getFromUserId() == null ? other.getFromUserId() == null : this.getFromUserId().equals(other.getFromUserId()))
-            && (this.getToUserId() == null ? other.getToUserId() == null : this.getToUserId().equals(other.getToUserId()))
-            && (this.getMessageType() == null ? other.getMessageType() == null : this.getMessageType().equals(other.getMessageType()))
-            && (this.getMessage() == null ? other.getMessage() == null : this.getMessage().equals(other.getMessage()))
-            && (this.getGroupType() == null ? other.getGroupType() == null : this.getGroupType().equals(other.getGroupType()))
-            && (this.getCreatedAt() == null ? other.getCreatedAt() == null : this.getCreatedAt().equals(other.getCreatedAt()));
+                && (this.getFromUserId() == null ? other.getFromUserId() == null : this.getFromUserId().equals(other.getFromUserId()))
+                && (this.getToUserId() == null ? other.getToUserId() == null : this.getToUserId().equals(other.getToUserId()))
+                && (this.getMessageType() == null ? other.getMessageType() == null : this.getMessageType().equals(other.getMessageType()))
+                && (this.getMessage() == null ? other.getMessage() == null : this.getMessage().equals(other.getMessage()))
+                && (this.getGroupType() == null ? other.getGroupType() == null : this.getGroupType().equals(other.getGroupType()))
+                && (this.getCreatedAt() == null ? other.getCreatedAt() == null : this.getCreatedAt().equals(other.getCreatedAt()));
     }
 
     @Override

+ 9 - 1
src/main/java/com/ydtech/modules/customer/service/CustomerService.java

@@ -1,5 +1,9 @@
 package com.ydtech.modules.customer.service;
 
+import com.ydtech.modules.customer.entity.po.CusChatMessages;
+
+import java.util.List;
+
 public interface CustomerService {
 
     /**
@@ -10,5 +14,9 @@ public interface CustomerService {
      */
     String sendMessage(String message);
 
-
+    /**
+     * 获取哦
+     * @return
+     */
+    List<CusChatMessages> queryMessage();
 }

+ 2 - 0
src/main/java/com/ydtech/modules/customer/service/impl/CusChatMessagesServiceImpl.java

@@ -15,6 +15,8 @@ import org.springframework.stereotype.Service;
 public class CusChatMessagesServiceImpl extends ServiceImpl<CusChatMessagesMapper, CusChatMessages>
     implements CusChatMessagesService {
 
+
+
 }
 
 

+ 31 - 0
src/main/java/com/ydtech/modules/customer/service/impl/CustomerServiceImpl.java

@@ -1,9 +1,19 @@
 package com.ydtech.modules.customer.service.impl;
 
+import cn.hutool.core.util.ArrayUtil;
+import com.ydtech.modules.base.controller.BaseController;
+import com.ydtech.modules.constants.GroupType;
 import com.ydtech.modules.customer.components.CustomerComponents;
+import com.ydtech.modules.customer.entity.po.CusChatMessages;
+import com.ydtech.modules.customer.service.CusChatMessagesService;
 import com.ydtech.modules.customer.service.CustomerService;
 import lombok.RequiredArgsConstructor;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
 
 @Service
 @RequiredArgsConstructor
@@ -11,9 +21,30 @@ public class CustomerServiceImpl implements CustomerService {
 
     private final CustomerComponents customerComponents;
 
+    private final CusChatMessagesService cusChatMessagesService;
+
     @Override
+    @Transactional
     public String sendMessage(String message) {
+        String userId = BaseController.getUserId();
+        List<CusChatMessages> list = new ArrayList<>();
+        CusChatMessages toMessage = CusChatMessages.toAiMessage(userId, message);
         String s = customerComponents.sendMessage(message);
+        CusChatMessages receptionMessages = CusChatMessages.receptionAiMessage(userId, message);
+        Collections.addAll(list, toMessage, receptionMessages);
+        cusChatMessagesService.saveBatch(list);
         return s;
     }
+
+
+    @Override
+    public List<CusChatMessages> queryMessage() {
+        String userId = BaseController.getUserId();
+        cusChatMessagesService
+                .lambdaQuery()
+                .eq(CusChatMessages::getGroupType, GroupType.GT_1.getCode())
+                .and(x -> x.eq(CusChatMessages::getToUserId, userId).or().eq(CusChatMessages::getFromUserId, userId))
+                .orderByDesc(CusChatMessages::getCreatedAt);
+        return Collections.emptyList();
+    }
 }

+ 4 - 1
src/main/java/com/ydtech/modules/fee/service/impl/FeeDisplayServiceImpl.java

@@ -12,6 +12,7 @@ import com.ydtech.modules.order.entity.vo.FeeOrderNewVo;
 import com.ydtech.modules.order.entity.vo.InsOrdersEditingVo;
 import com.ydtech.modules.order.entity.vo.OrderVo;
 import com.ydtech.utils.BigDecimalUtils;
+import com.ydtech.utils.StringUtils;
 import lombok.RequiredArgsConstructor;
 import org.springframework.stereotype.Service;
 
@@ -38,7 +39,9 @@ public class FeeDisplayServiceImpl implements FeeDisplayService {
             exportFees.forEach(FeeOrderNewVo.ExportFee::feeVacant);
         } else if (feeLookSwitchesDTO.getFeeView()) {
             exportFees.forEach(FeeOrderNewVo.ExportFee::feeDivideBy10);
-            orderVo.setSumFee(new BigDecimal(orderVo.getSumFee()).divide(new BigDecimal(10)).toString());
+            if(StringUtils.isNotEmpty(orderVo.getSumFee())){
+                orderVo.setSumFee(new BigDecimal(orderVo.getSumFee()).divide(new BigDecimal(10)).toString());
+            }
         }
         orderVo.setFeeDisplay(feeLookSwitchesDTO.getFeeDisplay());
         orderVo.setFeeView(feeLookSwitchesDTO.getFeeView());