Bladeren bron

开发智能对话记录功能提交

zsy 1 jaar geleden
bovenliggende
commit
286e73089d

+ 10 - 4
src/main/java/com/rf/kjb/chat/rest/ChatController.java

@@ -11,6 +11,8 @@ import com.rf.kjb.chat.service.ResultQuestionService;
 import com.rf.kjb.excel.ExcelUtil;
 import com.rf.kjb.exception.ErrorCode;
 import com.rf.kjb.scale.util.DateUtil;
+import com.rf.kjb.user.dao.model.UserEntry;
+import com.rf.kjb.user.service.UserService;
 import com.rf.kjb.utils.FileUtils;
 import com.rf.kjb.utils.JWTUtil;
 import com.rf.kjb.utils.Result;
@@ -60,6 +62,8 @@ public class ChatController extends BaseController {
     @Autowired
     private ChatRecordService chatRecordService;
 
+    @Autowired
+    private UserService userService;
 
     /**
      * 查询会话问题
@@ -78,16 +82,18 @@ public class ChatController extends BaseController {
             token = token.split(" ")[1];//以空格划分Bearer token,获取token
             //从请求头中获取token
             DecodedJWT verify = JWTUtil.verify(token);
-            String userName = verify.getClaim("userName").asString();
-            questionEntity.setQuestion(userName+questionEntity.getQuestion());
+            String identifier = verify.getClaim("identifier").asString();
+            UserEntry userEntry = this.userService.findByIdentifier(identifier);
+            questionEntity.setQuestion(userEntry.getUserName()+questionEntity.getQuestion());
         }
         if (!questionEntity.getLabel().equals("5") && questionEntity.getId().equals("1")){
             String token = request.getHeader("Authorization");
             token = token.split(" ")[1];//以空格划分Bearer token,获取token
             //从请求头中获取token
             DecodedJWT verify = JWTUtil.verify(token);
-            String userName = verify.getClaim("userName").asString();
-            questionEntity.setQuestion(userName+questionEntity.getQuestion());
+            String identifier = verify.getClaim("identifier").asString();
+            UserEntry userEntry = this.userService.findByIdentifier(identifier);
+            questionEntity.setQuestion(userEntry.getUserName()+questionEntity.getQuestion());
         }
         return success(questionEntity);
     }

+ 1 - 1
src/main/java/com/rf/kjb/intelligentDialogue/dao/repository/IntelligentDialogueRepository.java

@@ -30,7 +30,7 @@ public interface IntelligentDialogueRepository extends BaseRepository<Intelligen
     @Query(value = "SELECT t1.* FROM t_intelligent_dialogue t1 INNER JOIN (SELECT MAX(id) AS id FROM t_intelligent_dialogue GROUP BY identifier ) t2 ON t1.id = t2.id ", nativeQuery = true)
     List<IntelligentDialogueEntity> findAllIdentifier();
 
-    @Query(value = "SELECT * FROM t_intelligent_dialogue WHERE type = :type and identifier = :identifier ORDER BY create_time DESC ",
+    @Query(value = "SELECT * FROM t_intelligent_dialogue WHERE type = :type and identifier = :identifier ORDER BY create_time DESC,id DESC  ",
             countQuery = "SELECT * FROM t_intelligent_dialogue WHERE type = :type and identifier = :identifier ", nativeQuery = true)
     Page<IntelligentDialogueEntity> getIntelligentDialogueEntityByIdentifier(Pageable pageable, @Param("identifier") String identifier, @Param("type") String type);
 }

+ 24 - 11
src/main/java/com/rf/kjb/intelligentDialogue/rest/IntelligentDialogueController.java

@@ -8,7 +8,11 @@ import com.rf.kjb.excel.ExcelUtil;
 import com.rf.kjb.exception.ErrorCode;
 import com.rf.kjb.intelligentDialogue.dao.domain.IntelligentDialogueEntity;
 import com.rf.kjb.intelligentDialogue.service.IntelligentDialogueService;
+import com.rf.kjb.opLog.dao.model.SysLogEntity;
+import com.rf.kjb.opLog.service.SysLogService;
 import com.rf.kjb.scale.util.DateUtil;
+import com.rf.kjb.user.dao.model.UserEntry;
+import com.rf.kjb.user.service.UserService;
 import com.rf.kjb.utils.JWTUtil;
 import com.rf.kjb.utils.Result;
 import com.rf.kjb.utils.ZipUtils;
@@ -30,8 +34,6 @@ import java.io.*;
 import java.nio.file.Files;
 import java.nio.file.Path;
 import java.nio.file.Paths;
-import java.text.DateFormat;
-import java.text.SimpleDateFormat;
 import java.util.*;
 import java.util.stream.Stream;
 
@@ -41,9 +43,15 @@ import java.util.stream.Stream;
 @Api(tags = "对话")
 public class IntelligentDialogueController extends BaseController {
 
+    @Autowired
+    private UserService userService;
+
     @Autowired
     private IntelligentDialogueService intelligentDialogueService;
 
+    @Autowired
+    private SysLogService sysLogService;
+
 
     @PostMapping("/save")
     @ApiOperation(value = "保存对话", notes = "identifier:用户编号;userName:用户名;label:对话分类:0-问;1-答;content:对话内容")
@@ -67,19 +75,24 @@ public class IntelligentDialogueController extends BaseController {
             return success(jsonObject);
         }else {
             Date beginTime = intelligentDialogueEntities.getContent().get(0).getCreateTime();
-            //当前时间
-            Date endTime = new Date();
-            //计算时间差---分钟
-            int diff = DateUtil.getDistanceByUnit(beginTime, endTime, 4);
             String token = request.getHeader("Authorization");
             token = token.split(" ")[1];//以空格划分Bearer token,获取token
             //从请求头中获取token
             DecodedJWT verify = JWTUtil.verify(token);
-            String userName = verify.getClaim("userName").asString();
-            if (diff < 0 || diff >= 4) {
-                greetings = userName + "你好,很高兴你又来跟我聊天了。咱们已经" + diff + "天没有见面了。";
-            }else {
-                greetings = userName + "你好,很高兴你又来跟我聊天了。";
+            String identifier2 = verify.getClaim("identifier").asString();
+            SysLogEntity sysLogEntity = this.sysLogService.getSysLogByIdentifier(identifier2);
+            UserEntry userEntry = this.userService.findByIdentifier(identifier2);
+            //当前时间
+            Date endTime = sysLogEntity.getCreateTime();
+            //计算时间差
+            int diff = DateUtil.getDistanceByUnit(beginTime, endTime, 4);
+            int diff1 = DateUtil.getDistanceByUnit(beginTime, endTime, 1);
+            if (diff1 > 0){
+                if (diff >= 3) {
+                    greetings = userEntry.getUserName() + "你好,很高兴你又来跟我聊天了。咱们已经" + diff + "天没有见面了。是否继续上次聊天?";
+                }else {
+                    greetings = userEntry.getUserName() + "你好,很高兴你又来跟我聊天了。是否继续上次聊天?";
+                }
             }
 
             JSONObject jsonObject = new JSONObject();

+ 39 - 0
src/main/java/com/rf/kjb/opLog/dao/model/SysLogEntity.java

@@ -0,0 +1,39 @@
+package com.rf.kjb.opLog.dao.model;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.rf.kjb.base.model.BaseEntry;
+import lombok.*;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Index;
+import javax.persistence.Table;
+import java.util.Date;
+
+/**
+ * @author zsy
+ * @description:
+ * @date 2022/1/1211:08
+ */
+@Entity
+@ToString
+@Getter
+@Setter
+@NoArgsConstructor
+@AllArgsConstructor
+@Table(name = "t_sys_log", indexes = {
+        @Index(columnList = "id", unique = true),
+})
+@org.hibernate.annotations.Table(appliesTo = "t_sys_log", comment = "操作日志")
+public class SysLogEntity extends BaseEntry {
+
+    @Column(name = "identifier" ,columnDefinition = "varchar(20) not null unique comment '编号'")
+    private String identifier;
+
+    @Column(name = "role",columnDefinition = "tinyint not null default 0 comment '角色:0普通用户 1管理员'")
+    private int role;
+
+    @Column(name = "operation", columnDefinition = "varchar(100) null comment '用户操作:1登录'")
+    private String operation;
+
+}

+ 12 - 0
src/main/java/com/rf/kjb/opLog/dao/repository/SysLogRepository.java

@@ -0,0 +1,12 @@
+package com.rf.kjb.opLog.dao.repository;
+
+import com.rf.kjb.base.repository.BaseRepository;
+import com.rf.kjb.opLog.dao.model.SysLogEntity;
+import org.springframework.data.jpa.repository.Query;
+
+
+public interface SysLogRepository extends BaseRepository<SysLogEntity,String> {
+
+    @Query(value = "SELECT * FROM t_sys_log WHERE identifier = :identifier2 ORDER BY create_time DESC LIMIT 1 ", nativeQuery = true)
+    SysLogEntity getSysLogByIdentifier(String identifier2);
+}

+ 34 - 0
src/main/java/com/rf/kjb/opLog/service/impl/SysLogServiceImpl.java

@@ -0,0 +1,34 @@
+package com.rf.kjb.opLog.service.impl;
+
+import com.rf.kjb.intelligentDialogue.dao.domain.IntelligentDialogueEntity;
+import com.rf.kjb.intelligentDialogue.dao.repository.IntelligentDialogueRepository;
+import com.rf.kjb.opLog.dao.model.SysLogEntity;
+import com.rf.kjb.opLog.dao.repository.SysLogRepository;
+import com.rf.kjb.opLog.service.SysLogService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.PageRequest;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * @Author:zzf
+ * @Date:2023/9/14:15:27
+ * @Description:
+ */
+@Service
+public class SysLogServiceImpl implements SysLogService {
+    @Autowired
+    private SysLogRepository sysLogRepository;
+    @Override
+    public void save(SysLogEntity sysLogEntity) {
+        sysLogRepository.save(sysLogEntity);
+    }
+
+    @Override
+    public SysLogEntity getSysLogByIdentifier(String identifier2) {
+        return this.sysLogRepository.getSysLogByIdentifier(identifier2);
+    }
+
+}

+ 11 - 0
src/main/java/com/rf/kjb/user/rest/UserController.java

@@ -3,6 +3,8 @@ package com.rf.kjb.user.rest;
 import com.alibaba.fastjson.JSONObject;
 import com.rf.kjb.base.rest.BaseController;
 import com.rf.kjb.exception.ErrorCode;
+import com.rf.kjb.opLog.dao.model.SysLogEntity;
+import com.rf.kjb.opLog.service.SysLogService;
 import com.rf.kjb.scale.service.RecordPhyService;
 import com.rf.kjb.scale.service.RecordService;
 import com.rf.kjb.scale.util.DateUtil;
@@ -41,6 +43,9 @@ public class UserController extends BaseController {
     @Autowired
     private RecordPhyService recordPhyService;
 
+    @Autowired
+    private SysLogService sysLogService;
+
     /**
      * 注册
      * @param json
@@ -161,6 +166,12 @@ public class UserController extends BaseController {
         user.setUserName(entry.getUserName());
         user.setIdentifier(entry.getIdentifier());
         user.setRole(entry.getRole());
+        SysLogEntity sysLogEntity = new SysLogEntity();
+        sysLogEntity.setIdentifier(entry.getIdentifier());
+        sysLogEntity.setRole(entry.getRole());
+        sysLogEntity.setOperation("1");
+        sysLogEntity.setCreateTime(new Date());
+        this.sysLogService.save(sysLogEntity);
         JSONObject resultJson = new JSONObject();
         resultJson.put("token",JWTUtil.getTokenByUserInfo(entry));
         resultJson.put("marriageSituation",entry.getMarriageSituation());