Browse Source

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

zsy 1 năm trước cách đây
mục cha
commit
384e7daf2a

+ 13 - 1
src/main/java/com/rf/kjb/chat/rest/ChatController.java

@@ -1,6 +1,7 @@
 package com.rf.kjb.chat.rest;
 
 import com.alibaba.fastjson.JSONObject;
+import com.auth0.jwt.interfaces.DecodedJWT;
 import com.rf.kjb.base.rest.BaseController;
 import com.rf.kjb.chat.dao.domain.*;
 import com.rf.kjb.chat.service.ChatAnswerService;
@@ -11,6 +12,7 @@ import com.rf.kjb.excel.ExcelUtil;
 import com.rf.kjb.exception.ErrorCode;
 import com.rf.kjb.scale.util.DateUtil;
 import com.rf.kjb.utils.FileUtils;
+import com.rf.kjb.utils.JWTUtil;
 import com.rf.kjb.utils.Result;
 import com.rf.kjb.utils.ZipUtils;
 import io.swagger.annotations.Api;
@@ -30,6 +32,7 @@ import org.springframework.data.domain.Page;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
+import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import java.io.*;
 import java.net.URLEncoder;
@@ -64,12 +67,20 @@ public class ChatController extends BaseController {
 
     @GetMapping("/getQuestion/{label}")
     @ApiOperation("查询问题信息:首次查询时,id传空字符串即可查询出第一道题目;questionType=0表示选择题,questionType=1表示填空题;当改问题的nextQuestionNo 不为空是,则表示改题为陈述,没有答案,直接在显示此问题之后再次请求该接口显示questionNo对应的题目信息即可")
-    public Result getQuestion(String id, @PathVariable String label) {
+    public Result getQuestion(String id, @PathVariable String label, HttpServletRequest request) {
 
         if (StringUtils.isBlank(id)) {
             id = "1";
         }
         ChatQuestionEntity questionEntity = this.questionService.findByIdAndLabel(id, label);
+        if (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());
+        }
         return success(questionEntity);
     }
 
@@ -114,6 +125,7 @@ public class ChatController extends BaseController {
                 chatAnswerEntity.setNextQuestionNo((String) item.get(1));
                 chatAnswerEntity.setAnswer((String) item.get(2));
                 chatAnswerEntity.setLabel(label);
+                chatAnswerEntity.setQuestionType("0");
                 chatAnswerEntityList.add(chatAnswerEntity);
             });
         } catch (Exception e) {

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

@@ -3,6 +3,7 @@ package com.rf.kjb.intelligentDialogue.dao.repository;
 import com.rf.kjb.base.repository.BaseRepository;
 import com.rf.kjb.intelligentDialogue.dao.domain.IntelligentDialogueEntity;
 import org.springframework.data.domain.Page;
+import org.springframework.data.domain.PageRequest;
 import org.springframework.data.domain.Pageable;
 import org.springframework.data.jpa.repository.Query;
 import org.springframework.data.repository.query.Param;
@@ -28,4 +29,8 @@ 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 identifier = :identifier ORDER BY create_time DESC ",
+            countQuery = "SELECT * FROM t_intelligent_dialogue WHERE identifier = :identifier ", nativeQuery = true)
+    Page<IntelligentDialogueEntity> getIntelligentDialogueEntityByIdentifier(Pageable pageable, @Param("identifier") String identifier);
 }

+ 7 - 0
src/main/java/com/rf/kjb/intelligentDialogue/rest/IntelligentDialogueController.java

@@ -50,6 +50,13 @@ public class IntelligentDialogueController extends BaseController {
         return success();
     }
 
+    @GetMapping("/dialogueRecords")
+    @ApiOperation(value = "用户智能对话记录查询", notes = "identifier:编号;pageNum:页数;pageSize:每页记录数")
+    public Result getDialogueRecords(String identifier, int pageNum, int pageSize) {
+        Page<IntelligentDialogueEntity> intelligentDialogueEntities = this.intelligentDialogueService.getIntelligentDialogueEntityByIdentifier(identifier, pageNum, pageSize);
+        return success(intelligentDialogueEntities);
+    }
+
     @GetMapping("/dialogueList")
     @ApiOperation(value = "智能对话列表", notes = "identifier:编号;beginDate:查询起始日期;endDate:查询结束日期;pageNum:页数;pageSize:每页记录数")
     public Result getChatList(String identifier, int pageNum, int pageSize) {

+ 2 - 0
src/main/java/com/rf/kjb/intelligentDialogue/service/IntelligentDialogueService.java

@@ -13,4 +13,6 @@ public interface IntelligentDialogueService {
     List<IntelligentDialogueEntity> findByIdentifier(String identifier);
 
     List<IntelligentDialogueEntity> findAllIdentifier();
+
+    Page<IntelligentDialogueEntity> getIntelligentDialogueEntityByIdentifier(String identifier, int pageNum, int pageSize);
 }

+ 5 - 0
src/main/java/com/rf/kjb/intelligentDialogue/service/impl/IntelligentDialogueServiceImpl.java

@@ -65,4 +65,9 @@ public class IntelligentDialogueServiceImpl implements IntelligentDialogueServic
     public List<IntelligentDialogueEntity> findAllIdentifier() {
         return this.repository.findAllIdentifier();
     }
+
+    @Override
+    public Page<IntelligentDialogueEntity> getIntelligentDialogueEntityByIdentifier(String identifier, int pageNum, int pageSize) {
+        return this.repository.getIntelligentDialogueEntityByIdentifier(PageRequest.of(pageNum - 1, pageSize), identifier);
+    }
 }

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

@@ -68,12 +68,13 @@ public class UserController extends BaseController {
      * @return
      */
     @PostMapping("/update")
-    @ApiOperation(value = "用户信息更新",notes = " id:用户ID;userName 用户名 字符串,identifier:用户编号 字符串,age 年龄 整数数值类型,gender 性别 0女 1男 整数数值类型,password:密码,rePassword:确认密码,profession:职业,role 角色,数值类型,0普通用户 1管理员")
+    @ApiOperation(value = "用户信息更新",notes = " id:用户ID;userName 用户名 字符串,identifier:用户编号 字符串,age 年龄 整数数值类型,gender 性别 0女 1男 整数数值类型" +
+            ",profession:职业,marriageSituation 已婚0 未婚 1 离异 2,password:密码,role 角色,数值类型,0普通用户 1管理员")
     public Result update( @RequestBody String json){
         JSONObject jsonObject =JSONObject.parseObject(json);
         UserEntry userEntry = jsonObject.toJavaObject(UserEntry.class);
         assert StringUtils.isNotBlank(userEntry.getId()):"用户ID为空";
-        assertUser(jsonObject, userEntry);
+        assertUser(userEntry);
         userEntry.setUpdateTime(new Date());
         this.userService.save(userEntry);
         return success();
@@ -90,19 +91,20 @@ public class UserController extends BaseController {
         return success();
     }
 
+    @GetMapping("/getUser/{identifier}")
+    @ApiOperation(value = "通过用户编号查询用户信息",notes = "identifier:用户编号")
+    public Result getUser(@PathVariable String identifier){
+        UserEntry userEntry = this.userService.findByIdentifier(identifier);
+        return success(userEntry);
+    }
 
-
-
-
-
-    private void assertUser(JSONObject jsonObject, UserEntry userEntry) {
+    private void assertUser(UserEntry userEntry) {
         assert StringUtils.isNotBlank(userEntry.getIdentifier()):"编号为空";
         assert StringUtils.isNotBlank(userEntry.getUserName()):"用户名为空";
         assert userEntry.getAge() != 0 :"年龄不合法";
         assert StringUtils.isNotBlank(userEntry.getProfession()):"职业为空";
         assert userEntry.getGender() == 0||userEntry.getGender() == 1 : "性别不合法";
-        assert StringUtils.isNotBlank(userEntry.getPassword()) : "密码为空";
-        assert StringUtils.isNotBlank(jsonObject.getString("rePassword")) : "确认密码为空";
+        assert StringUtils.isNotBlank(userEntry.getMarriageSituation()) : "密码为空";
     }
 
     @PostMapping("/reset")

+ 10 - 2
src/main/java/com/rf/kjb/utils/JWTUtil.java

@@ -3,6 +3,8 @@ package com.rf.kjb.utils;
 import com.auth0.jwt.JWT;
 import com.auth0.jwt.JWTCreator;
 import com.auth0.jwt.algorithms.Algorithm;
+import com.auth0.jwt.exceptions.TokenExpiredException;
+import com.auth0.jwt.interfaces.DecodedJWT;
 import com.rf.kjb.user.dao.model.UserEntry;
 
 import java.util.Calendar;
@@ -50,8 +52,14 @@ public class JWTUtil {
     /**
      * 验证token,并获取信息
      */
-    public static void verify(String token) {
-        JWT.require(Algorithm.HMAC256(SING)).build().verify(token);
+    public static DecodedJWT verify(String token) {
+        DecodedJWT verify;
+        try {
+            verify = JWT.require(Algorithm.HMAC256(SING)).build().verify(token);
+        } catch (TokenExpiredException e) {
+            throw new TokenExpiredException("token过期");
+        }
+        return verify;
     }