From 2166c1a14f9629aa49a5f3bb849ce878df4c4892 Mon Sep 17 00:00:00 2001
From: yangbin <yangbin@qq.com>
Date: 星期三, 28 八月 2024 17:23:25 +0800
Subject: [PATCH] 2

---
 lxzn-module-ai/src/main/java/org/jeecg/modules/ai/entity/LanguageModel.java                 |   61 ++++++++++++
 lxzn-module-ai/src/main/java/org/jeecg/modules/ai/service/imp/WebSocketAiService.java       |    4 
 lxzn-module-system/lxzn-system-start/src/main/resources/application-dev.yml                 |    6 
 lxzn-module-ai/src/main/java/org/jeecg/modules/ai/service/ILanguageModelService.java        |   35 +++++++
 lxzn-module-ai/src/main/java/org/jeecg/modules/ai/mapper/xml/LanguageModelMapper.xml        |    5 +
 lxzn-module-system/lxzn-system-start/src/main/java/org/jeecg/JeecgSystemApplication.java    |    2 
 lxzn-module-ai/src/main/java/org/jeecg/modules/ai/service/imp/LanguageModelServiceImpl.java |   92 ++++++++++++++++++
 lxzn-module-ai/src/main/java/org/jeecg/modules/ai/mapper/LanguageModelMapper.java           |   11 ++
 lxzn-module-ai/src/main/java/org/jeecg/modules/ai/controller/LanguageModelController.java   |   78 +++++++++++++++
 9 files changed, 289 insertions(+), 5 deletions(-)

diff --git a/lxzn-module-ai/src/main/java/org/jeecg/modules/ai/controller/LanguageModelController.java b/lxzn-module-ai/src/main/java/org/jeecg/modules/ai/controller/LanguageModelController.java
new file mode 100644
index 0000000..c2f6fdf
--- /dev/null
+++ b/lxzn-module-ai/src/main/java/org/jeecg/modules/ai/controller/LanguageModelController.java
@@ -0,0 +1,78 @@
+package org.jeecg.modules.ai.controller;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang.StringUtils;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.aspect.annotation.AutoLog;
+import org.jeecg.common.system.base.controller.JeecgController;
+import org.jeecg.modules.ai.entity.LanguageModel;
+import org.jeecg.modules.ai.service.ILanguageModelService;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * @author clown
+ * * @date 2024/8/19
+ */
+@Slf4j
+@Api(tags = "闂瓟")
+@RestController
+@RequestMapping("/ai/languageModel")
+public class LanguageModelController  extends JeecgController<LanguageModel, ILanguageModelService> {
+
+    /**
+     * 鏂板
+     *
+     * @param languageModel
+     * @return
+     */
+    @AutoLog("闂瓟-鏂板")
+    @ApiOperation(value = "闂瓟-鏂板", notes = "闂瓟-鏂板")
+    @PostMapping("/addLanguage")
+    public Result<?> addLanguageModel(@RequestBody LanguageModel languageModel) {
+        Boolean flag = super.service.addLanguageModel(languageModel);
+        return flag ? Result.OK("鏂板鎴愬姛") : Result.error("鏂板澶辫触");
+    }
+
+    @AutoLog("闂瓟-浼氳瘽鍒楄〃")
+    @ApiOperation(value = "闂瓟-浼氳瘽鍒楄〃", notes = "闂瓟-浼氳瘽鍒楄〃")
+    @GetMapping("/languageTitles")
+    public Result<?> languageModelTitles() {
+        List<LanguageModel> languageModels = super.service.findListAiTitles();
+        return Result.OK(languageModels);
+    }
+
+
+
+    @AutoLog("闂瓟-鍒楄〃")
+    @ApiOperation(value = "闂瓟-鍒楄〃", notes = "闂瓟-鍒楄〃")
+    @GetMapping("/languageProblems")
+    public Result<?> languageProblems(String  id) {
+        List<LanguageModel> models = super.service.languageProblems(id);
+        return Result.OK(models);
+    }
+    @AutoLog("闂瓟-鍒犻櫎")
+    @ApiOperation(value = "闂瓟-鍒犻櫎", notes = "闂瓟-鍒犻櫎")
+    @RequestMapping(value = "/deleteLanguage", method = RequestMethod.DELETE)
+    public Result deleteLanguage(@RequestParam("id") String id) {
+        if (StringUtils.isNotBlank(id)) {
+            List<LanguageModel> models = super.service.languageProblems(id);
+            if (models == null || models.isEmpty()){
+                super.service.removeById(id);
+            }
+            List<String> strings = new ArrayList<>();
+            strings.add(id);
+            for (LanguageModel model : models) {
+                strings.add(model.getId());
+            }
+            super.service.removeBatchByIds(strings);
+        }
+        return Result.ok("鍒犻櫎鎴愬姛");
+    }
+
+}
diff --git a/lxzn-module-ai/src/main/java/org/jeecg/modules/ai/entity/LanguageModel.java b/lxzn-module-ai/src/main/java/org/jeecg/modules/ai/entity/LanguageModel.java
new file mode 100644
index 0000000..bd818fa
--- /dev/null
+++ b/lxzn-module-ai/src/main/java/org/jeecg/modules/ai/entity/LanguageModel.java
@@ -0,0 +1,61 @@
+package org.jeecg.modules.ai.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * @author clown
+ * * @date 2024/8/19
+ */
+@Data
+@TableName("ai_language_model")
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class LanguageModel implements Serializable {
+
+    private static final long serialVersionUID = 1519876512924700514L;
+    @TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "涓婚敭")
+    private String id;
+
+    private String aiId;
+
+    private String parentId;
+    /*闂*/
+    private String problem;
+    /*鍥炵瓟*/
+    private String answer;
+    /*绫诲瀷   1 鍒楄〃  2  闂瓟   3 鍥炵瓟*/
+    private Integer aiType;
+
+
+    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty("鍒涘缓鏃堕棿")
+    private Date createTime;
+    @Excel(name = "鍒涘缓浜�",width = 15)
+    @ApiModelProperty("鍒涘缓浜�")
+    private String createBy;
+
+    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty("鏇存柊鏃堕棿")
+    private Date updateTime;
+    @Excel(name = "鏇存柊浜�",width = 15)
+    @ApiModelProperty("鏇存柊浜�")
+    private String updateBy;
+    @Excel(name = "鍒犻櫎鐘舵��", width = 15, dicCode = "del_flag")
+    @ApiModelProperty(value = "鍒犻櫎鐘舵�侊紙0锛屾甯革紝1宸插垹闄わ級")
+    private String delFlag;
+}
diff --git a/lxzn-module-ai/src/main/java/org/jeecg/modules/ai/mapper/LanguageModelMapper.java b/lxzn-module-ai/src/main/java/org/jeecg/modules/ai/mapper/LanguageModelMapper.java
new file mode 100644
index 0000000..34095f6
--- /dev/null
+++ b/lxzn-module-ai/src/main/java/org/jeecg/modules/ai/mapper/LanguageModelMapper.java
@@ -0,0 +1,11 @@
+package org.jeecg.modules.ai.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.jeecg.modules.ai.entity.LanguageModel;
+
+/**
+ * @author clown
+ * * @date 2024/8/19
+ */
+public interface LanguageModelMapper extends BaseMapper<LanguageModel> {
+}
diff --git a/lxzn-module-ai/src/main/java/org/jeecg/modules/ai/mapper/xml/LanguageModelMapper.xml b/lxzn-module-ai/src/main/java/org/jeecg/modules/ai/mapper/xml/LanguageModelMapper.xml
new file mode 100644
index 0000000..e152e28
--- /dev/null
+++ b/lxzn-module-ai/src/main/java/org/jeecg/modules/ai/mapper/xml/LanguageModelMapper.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.jeecg.modules.ai.mapper.LanguageModelMapper">
+
+</mapper>
\ No newline at end of file
diff --git a/lxzn-module-ai/src/main/java/org/jeecg/modules/ai/service/ILanguageModelService.java b/lxzn-module-ai/src/main/java/org/jeecg/modules/ai/service/ILanguageModelService.java
new file mode 100644
index 0000000..04ca292
--- /dev/null
+++ b/lxzn-module-ai/src/main/java/org/jeecg/modules/ai/service/ILanguageModelService.java
@@ -0,0 +1,35 @@
+package org.jeecg.modules.ai.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.jeecg.modules.ai.entity.LanguageModel;
+
+import java.util.List;
+
+/**
+ * @author clown
+ * * @date 2024/8/19
+ */
+public interface ILanguageModelService extends IService<LanguageModel> {
+
+    boolean addLanguageModel(LanguageModel languageModel);
+
+    /**
+     * 鏌ヨ鍒楄〃鏁版嵁
+     * @param aiType
+     * @param aiId
+     * @return
+     */
+    LanguageModel selectParentId(Integer aiType,String aiId);
+
+    /**
+     *
+     * @return
+     */
+    List<LanguageModel> findListAiTitles();
+
+    /**
+     *
+     * @return
+     */
+    List<LanguageModel> languageProblems(String id);
+}
diff --git a/lxzn-module-ai/src/main/java/org/jeecg/modules/ai/service/imp/LanguageModelServiceImpl.java b/lxzn-module-ai/src/main/java/org/jeecg/modules/ai/service/imp/LanguageModelServiceImpl.java
new file mode 100644
index 0000000..b708af3
--- /dev/null
+++ b/lxzn-module-ai/src/main/java/org/jeecg/modules/ai/service/imp/LanguageModelServiceImpl.java
@@ -0,0 +1,92 @@
+package org.jeecg.modules.ai.service.imp;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.apache.shiro.SecurityUtils;
+import org.jeecg.common.system.vo.LoginUser;
+import org.jeecg.modules.ai.entity.LanguageModel;
+import org.jeecg.modules.ai.mapper.LanguageModelMapper;
+import org.jeecg.modules.ai.service.ILanguageModelService;
+import org.jeecg.modules.system.util.SecurityUtil;
+import org.jeecg.modules.utils.BeanMapper;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * @author clown
+ * * @date 2024/8/19
+ */
+@Service
+public class LanguageModelServiceImpl extends ServiceImpl<LanguageModelMapper,LanguageModel> implements ILanguageModelService {
+
+    @Override
+    public boolean addLanguageModel(LanguageModel languageModel) {
+        if (languageModel == null || languageModel.getAiType() == null) {
+            return false;
+        }
+        LanguageModel model = new LanguageModel();
+        if (languageModel.getAiType() == 1) {
+            boolean one =super.save(languageModel);
+            if (one) {
+                model.setProblem(languageModel.getProblem());
+                model.setParentId(languageModel.getId());
+                model.setAiType(2);
+                super.save(model);
+                return true;
+            }
+        }
+        else  if (languageModel.getAiType() == 2 || languageModel.getAiType() == 3) {
+            //鏌ヨ鐖剁被ID
+            super.save(languageModel);
+            return true;
+        }
+        return false;
+    }
+
+    @Override
+    public LanguageModel selectParentId(Integer aiType, String aiId) {
+        LanguageModel info = new LanguageModel();
+        List<LanguageModel> list = super.list(new LambdaQueryWrapper<LanguageModel>().
+                eq(LanguageModel::getAiType, aiType).
+                eq(LanguageModel::getAiId, aiId).
+                orderByDesc(LanguageModel::getCreateTime)
+        );
+        if (list == null || list.isEmpty()) {
+            return null;
+        }
+        BeanMapper.copy(list.get(0),info);
+        return info;
+    }
+
+    @Override
+    public List<LanguageModel> findListAiTitles() {
+        LoginUser user = (LoginUser)SecurityUtils.getSubject().getPrincipal();
+        List<LanguageModel> list = super.list(new LambdaQueryWrapper<LanguageModel>().
+                eq(LanguageModel::getAiType, 1).
+                eq(LanguageModel::getCreateBy, user.getUsername()).
+                orderByDesc(LanguageModel::getCreateTime)
+        );
+        if (list == null || list.isEmpty()) {
+            return null;
+        }
+        return list;
+    }
+
+    @Override
+    public List<LanguageModel> languageProblems(String id) {
+        LoginUser user = (LoginUser)SecurityUtils.getSubject().getPrincipal();
+        LambdaQueryWrapper<LanguageModel> wrapperL = new LambdaQueryWrapper<>();
+        wrapperL.eq(LanguageModel::getCreateBy, user.getUsername());
+        wrapperL.eq(LanguageModel::getParentId, id);
+        wrapperL.and((wrapper)->wrapper.eq(LanguageModel::getAiType, 2).
+                        or().
+                        eq(LanguageModel::getAiType, 3));
+        wrapperL.orderByAsc(LanguageModel::getCreateTime);
+        List<LanguageModel> list = super.list(wrapperL);
+        if (list == null || list.isEmpty()) {
+            return null;
+        }
+        return list;
+    }
+}
diff --git a/lxzn-module-ai/src/main/java/org/jeecg/modules/ai/service/imp/WebSocketAiService.java b/lxzn-module-ai/src/main/java/org/jeecg/modules/ai/service/imp/WebSocketAiService.java
index eb287ea..f9629a9 100644
--- a/lxzn-module-ai/src/main/java/org/jeecg/modules/ai/service/imp/WebSocketAiService.java
+++ b/lxzn-module-ai/src/main/java/org/jeecg/modules/ai/service/imp/WebSocketAiService.java
@@ -15,12 +15,12 @@
 
 
     @Override
-    @Scheduled(cron = "0/10 * * * * ?")
+    /*@Scheduled(cron = "0/10 * * * * ?")*/
     public void selectChatIA() {
         String name = "{\"id\":\"683a65fd-8feb-4446-ad32-714c4785f667\",\"messages\":[{\"role\":\"user\",\"content\":\"缁欐垜璁蹭釜鏁呬簨锛焅"}],\"stream\":true,\"max_tokens\":500}"; // JSON鏁版嵁
         String url = "https://836u458t54.vicp.fun/chat/test_chat";
         String aiPost =  AiTestUils.sendJsonToHttpsPost(url, name);
-        System.out.println(aiPost);
+        /*System.out.println(aiPost);*/
         for (String s : AiWebSocket.getSessionPoolAi().keySet()) {
             AiWebSocket.pushMessage(s,aiPost);
         }
diff --git a/lxzn-module-system/lxzn-system-start/src/main/java/org/jeecg/JeecgSystemApplication.java b/lxzn-module-system/lxzn-system-start/src/main/java/org/jeecg/JeecgSystemApplication.java
index 633249d..237ed0b 100644
--- a/lxzn-module-system/lxzn-system-start/src/main/java/org/jeecg/JeecgSystemApplication.java
+++ b/lxzn-module-system/lxzn-system-start/src/main/java/org/jeecg/JeecgSystemApplication.java
@@ -8,6 +8,7 @@
 import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
 import org.springframework.context.ConfigurableApplicationContext;
 import org.springframework.core.env.Environment;
+import org.springframework.scheduling.annotation.EnableScheduling;
 
 import java.net.InetAddress;
 import java.net.UnknownHostException;
@@ -19,6 +20,7 @@
 @Slf4j
 @SpringBootApplication
 //@EnableAutoConfiguration(exclude={MongoAutoConfiguration.class})
+@EnableScheduling
 public class JeecgSystemApplication extends SpringBootServletInitializer {
 
     @Override
diff --git a/lxzn-module-system/lxzn-system-start/src/main/resources/application-dev.yml b/lxzn-module-system/lxzn-system-start/src/main/resources/application-dev.yml
index aa1777e..6759d7e 100644
--- a/lxzn-module-system/lxzn-system-start/src/main/resources/application-dev.yml
+++ b/lxzn-module-system/lxzn-system-start/src/main/resources/application-dev.yml
@@ -103,9 +103,9 @@
         connectionProperties: druid.stat.mergeSql\=true;druid.stat.slowSqlMillis\=5000
       datasource:
         master:
-          url: jdbc:postgresql://192.168.253.133:5432/ai_service?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
+          url: jdbc:postgresql://192.168.3.184:5432/ai_service_weiyi?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
           username: postgres
-          password: ABC@13579
+          password: 123456
           driverClassName: org.postgresql.Driver
   #redis 閰嶇疆
   redis:
@@ -147,7 +147,7 @@
     pc: http://localhost:3100
     app: http://localhost:8051
   path:
-    #鏂囦欢涓婁紶鏍圭洰褰� 璁剧疆
+    #鏂囦欢涓婁紶鏍圭洰褰� 璁剧疆   /home/weiyi/anaconda3/envs/aiservice
     upload: C://opt//upFiles
     #webapp鏂囦欢璺緞
     webapp: C://opt//upFiles

--
Gitblit v1.9.3