2
yangbin
2024-08-28 2166c1a14f9629aa49a5f3bb849ce878df4c4892
2
已添加6个文件
已修改3个文件
294 ■■■■■ 文件已修改
lxzn-module-ai/src/main/java/org/jeecg/modules/ai/controller/LanguageModelController.java 78 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-ai/src/main/java/org/jeecg/modules/ai/entity/LanguageModel.java 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-ai/src/main/java/org/jeecg/modules/ai/mapper/LanguageModelMapper.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-ai/src/main/java/org/jeecg/modules/ai/mapper/xml/LanguageModelMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-ai/src/main/java/org/jeecg/modules/ai/service/ILanguageModelService.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-ai/src/main/java/org/jeecg/modules/ai/service/imp/LanguageModelServiceImpl.java 92 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-ai/src/main/java/org/jeecg/modules/ai/service/imp/WebSocketAiService.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-system/lxzn-system-start/src/main/java/org/jeecg/JeecgSystemApplication.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-system/lxzn-system-start/src/main/resources/application-dev.yml 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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("删除成功");
    }
}
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;
}
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> {
}
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>
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);
}
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;
    }
}
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);
        }
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
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