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