Skip to content

Commit

Permalink
refactor:代码结构调整,将控制器中的视图与rest api分包。
Browse files Browse the repository at this point in the history
  • Loading branch information
hkh1012 committed Jun 9, 2024
1 parent 7cc9099 commit 784bafe
Show file tree
Hide file tree
Showing 10 changed files with 164 additions and 109 deletions.
9 changes: 7 additions & 2 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,9 @@
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.hkh</groupId>
<artifactId>langchain-springboot</artifactId>
<artifactId>langboot</artifactId>
<version>1.0.0</version>
<name>langchain-springboot</name>
<name>LangBoot</name>
<packaging>jar</packaging>
<description>SpringBoot整合AI模型</description>
<properties>
Expand Down Expand Up @@ -217,6 +217,11 @@
<artifactId>jsoup</artifactId>
<version>1.15.3</version>
</dependency>
<dependency>
<groupId>no.api.freemarker</groupId>
<artifactId>freemarker-java8</artifactId>
<version>1.3.0</version>
</dependency>
<!-- <dependency>-->
<!-- <groupId>me.zhyd.oauth</groupId>-->
<!-- <artifactId>JustAuth</artifactId>-->
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.hkh.ai.chain.loader;

import com.hkh.ai.constant.FileType;
import com.hkh.ai.common.constant.FileType;
import com.hkh.ai.chain.split.CharacterTextSplitter;
import com.hkh.ai.chain.split.CodeTextSplitter;
import com.hkh.ai.chain.split.MarkdownTextSplitter;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.hkh.ai.constant;
package com.hkh.ai.common.constant;

public class FileType {
public static final String TXT = "txt";
Expand Down
21 changes: 21 additions & 0 deletions src/main/java/com/hkh/ai/config/FreemarkerConfig.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package com.hkh.ai.config;

import no.api.freemarker.java8.Java8ObjectWrapper;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.BeanPostProcessor;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer;

@Configuration
public class FreemarkerConfig implements BeanPostProcessor {

@Override
public Object postProcessAfterInitialization(Object bean, String beanName)
throws BeansException {
if (bean instanceof FreeMarkerConfigurer) {
FreeMarkerConfigurer configurer = (FreeMarkerConfigurer) bean;
configurer.getConfiguration().setObjectWrapper(new Java8ObjectWrapper(freemarker.template.Configuration.getVersion()));
}
return bean;
}
}
14 changes: 7 additions & 7 deletions src/main/java/com/hkh/ai/controller/SseController.java
Original file line number Diff line number Diff line change
Expand Up @@ -79,13 +79,13 @@ public ResultData<List<String>> send(HttpServletRequest httpServletRequest, Stri
List<String> nearestList = new ArrayList<>();
if (sseEmitter != null) {
SysUser sysUser = (SysUser) httpServletRequest.getSession().getAttribute(SysConstants.SESSION_LOGIN_USER_KEY);
ChatRequestLog chatRequestLog = new ChatRequestLog();
chatRequestLog.setUserId(sysUser.getId());
chatRequestLog.setKid(kid);
chatRequestLog.setRequestTime(LocalDateTime.now());
chatRequestLog.setContent(content);
chatRequestLog.setCreateTime(LocalDateTime.now());
chatRequestLogService.save(chatRequestLog);
// ChatRequestLog chatRequestLog = new ChatRequestLog();
// chatRequestLog.setUserId(sysUser.getId());
// chatRequestLog.setKid(kid);
// chatRequestLog.setRequestTime(LocalDateTime.now());
// chatRequestLog.setContent(content);
// chatRequestLog.setCreateTime(LocalDateTime.now());
// chatRequestLogService.save(chatRequestLog);
List<Conversation> history = new ArrayList<>();
if (useHistory){
history = conversationService.history(sid);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.hkh.ai.controller;
package com.hkh.ai.controller.view;

import com.github.pagehelper.PageInfo;
import com.hkh.ai.common.annotation.AdminRequired;
Expand All @@ -17,7 +17,6 @@
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;

/**
* 首页
Expand All @@ -26,10 +25,6 @@
@AllArgsConstructor
public class IndexController {

private final KnowledgeService knowledgeService;
private final KnowledgeAttachService knowledgeAttachService;
private final KnowledgeFragmentService knowledgeFragmentService;
private final SpecialNounService specialNounService;

@GetMapping(value = {"/"})
public String root(HttpServletRequest request, Model model) {
Expand Down Expand Up @@ -237,75 +232,6 @@ public String agentComplex(HttpServletRequest request, Model model) {
return "agent_complex";
}

/**
* 知识库管理页面
* @param request
* @param model
* @return
*/
@GetMapping(value = {"/knowledge/index"})
@AdminRequired
public String knowledgeIndex(HttpServletRequest request, Model model, KnowledgePageRequest knowledgePageRequest) {
SysUser sysUser = (SysUser) request.getSession().getAttribute(SysConstants.SESSION_LOGIN_USER_KEY);
model.addAttribute("sysUser",sysUser);
PageInfo<Knowledge> pageInfo = knowledgeService.pageInfo(knowledgePageRequest);
model.addAttribute("pageInfo",pageInfo);
model.addAttribute("formData",knowledgePageRequest);
return "knowledge/index";
}

/**
* 知识库附件管理页面
* @param request
* @param model
* @return
*/
@GetMapping(value = {"/knowledge/attach"})
@AdminRequired
public String knowledgeAttach(HttpServletRequest request, Model model, KnowledgeAttachPageRequest knowledgeAttachPageRequest) {
SysUser sysUser = (SysUser) request.getSession().getAttribute(SysConstants.SESSION_LOGIN_USER_KEY);
model.addAttribute("sysUser",sysUser);
PageInfo<KnowledgeAttach> pageInfo = knowledgeAttachService.pageInfo(knowledgeAttachPageRequest);
Knowledge knowledge = knowledgeService.getOneByKid(knowledgeAttachPageRequest.getKid());
model.addAttribute("knowledge",knowledge);
model.addAttribute("pageInfo",pageInfo);
model.addAttribute("formData",knowledgeAttachPageRequest);
return "knowledge/attach";
}

/**
* 知识库附件管理页面
* @param request
* @param model
* @return
*/
@GetMapping(value = {"/knowledge/fragment"})
@AdminRequired
public String knowledgeFragment(HttpServletRequest request, Model model, KnowledgeFragmentPageRequest knowledgeFragmentPageRequest) {
SysUser sysUser = (SysUser) request.getSession().getAttribute(SysConstants.SESSION_LOGIN_USER_KEY);
model.addAttribute("sysUser",sysUser);
PageInfo<KnowledgeFragment> pageInfo = knowledgeFragmentService.pageInfo(knowledgeFragmentPageRequest);
Knowledge knowledge = knowledgeService.getOneByKid(knowledgeFragmentPageRequest.getKid());
model.addAttribute("knowledge",knowledge);
model.addAttribute("pageInfo",pageInfo);
model.addAttribute("formData",knowledgeFragmentPageRequest);
return "knowledge/fragment";
}

/**
* 专有名词管理页面
* @param request
* @param model
* @return
*/
@GetMapping(value = {"/special/index"})
@AdminRequired
public String specialIndex(HttpServletRequest request, Model model, SpecialNounPageRequest specialNounPageRequest) {
SysUser sysUser = (SysUser) request.getSession().getAttribute(SysConstants.SESSION_LOGIN_USER_KEY);
model.addAttribute("sysUser",sysUser);
PageInfo<SpecialNoun> pageInfo = specialNounService.pageInfo(specialNounPageRequest);
model.addAttribute("pageInfo",pageInfo);
model.addAttribute("formData",specialNounPageRequest);
return "special/index";
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
package com.hkh.ai.controller.view;

import com.github.pagehelper.PageInfo;
import com.hkh.ai.common.annotation.AdminRequired;
import com.hkh.ai.common.constant.SysConstants;
import com.hkh.ai.domain.Knowledge;
import com.hkh.ai.domain.KnowledgeAttach;
import com.hkh.ai.domain.KnowledgeFragment;
import com.hkh.ai.domain.SysUser;
import com.hkh.ai.request.KnowledgeAttachPageRequest;
import com.hkh.ai.request.KnowledgeFragmentPageRequest;
import com.hkh.ai.request.KnowledgePageRequest;
import com.hkh.ai.service.KnowledgeAttachService;
import com.hkh.ai.service.KnowledgeFragmentService;
import com.hkh.ai.service.KnowledgeService;
import jakarta.servlet.http.HttpServletRequest;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;

@Controller
@AllArgsConstructor
public class KnowledgeViewController {

private final KnowledgeService knowledgeService;
private final KnowledgeAttachService knowledgeAttachService;
private final KnowledgeFragmentService knowledgeFragmentService;
/**
* 知识库管理页面
* @param request
* @param model
* @return
*/
@GetMapping(value = {"/knowledge/index"})
@AdminRequired
public String knowledgeIndex(HttpServletRequest request, Model model, KnowledgePageRequest knowledgePageRequest) {
SysUser sysUser = (SysUser) request.getSession().getAttribute(SysConstants.SESSION_LOGIN_USER_KEY);
model.addAttribute("sysUser",sysUser);
PageInfo<Knowledge> pageInfo = knowledgeService.pageInfo(knowledgePageRequest);
model.addAttribute("pageInfo",pageInfo);
model.addAttribute("formData",knowledgePageRequest);
return "knowledge/index";
}

/**
* 知识库附件管理页面
* @param request
* @param model
* @return
*/
@GetMapping(value = {"/knowledge/attach"})
@AdminRequired
public String knowledgeAttach(HttpServletRequest request, Model model, KnowledgeAttachPageRequest knowledgeAttachPageRequest) {
SysUser sysUser = (SysUser) request.getSession().getAttribute(SysConstants.SESSION_LOGIN_USER_KEY);
model.addAttribute("sysUser",sysUser);
PageInfo<KnowledgeAttach> pageInfo = knowledgeAttachService.pageInfo(knowledgeAttachPageRequest);
Knowledge knowledge = knowledgeService.getOneByKid(knowledgeAttachPageRequest.getKid());
model.addAttribute("knowledge",knowledge);
model.addAttribute("pageInfo",pageInfo);
model.addAttribute("formData",knowledgeAttachPageRequest);
return "knowledge/attach";
}

/**
* 知识库附件管理页面
* @param request
* @param model
* @return
*/
@GetMapping(value = {"/knowledge/fragment"})
@AdminRequired
public String knowledgeFragment(HttpServletRequest request, Model model, KnowledgeFragmentPageRequest knowledgeFragmentPageRequest) {
SysUser sysUser = (SysUser) request.getSession().getAttribute(SysConstants.SESSION_LOGIN_USER_KEY);
model.addAttribute("sysUser",sysUser);
PageInfo<KnowledgeFragment> pageInfo = knowledgeFragmentService.pageInfo(knowledgeFragmentPageRequest);
Knowledge knowledge = knowledgeService.getOneByKid(knowledgeFragmentPageRequest.getKid());
model.addAttribute("knowledge",knowledge);
model.addAttribute("pageInfo",pageInfo);
model.addAttribute("formData",knowledgeFragmentPageRequest);
return "knowledge/fragment";
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
package com.hkh.ai.controller.view;

import com.github.pagehelper.PageInfo;
import com.hkh.ai.common.annotation.AdminRequired;
import com.hkh.ai.common.constant.SysConstants;
import com.hkh.ai.domain.SpecialNoun;
import com.hkh.ai.domain.SysUser;
import com.hkh.ai.request.SpecialNounPageRequest;
import com.hkh.ai.service.SpecialNounService;
import jakarta.servlet.http.HttpServletRequest;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;

@Controller
@AllArgsConstructor
public class SpecialNounViewController {

private final SpecialNounService specialNounService;

/**
* 专有名词管理页面
* @param request
* @param model
* @return
*/
@GetMapping(value = {"/special/index"})
@AdminRequired
public String specialIndex(HttpServletRequest request, Model model, SpecialNounPageRequest specialNounPageRequest) {
SysUser sysUser = (SysUser) request.getSession().getAttribute(SysConstants.SESSION_LOGIN_USER_KEY);
model.addAttribute("sysUser",sysUser);
PageInfo<SpecialNoun> pageInfo = specialNounService.pageInfo(specialNounPageRequest);
model.addAttribute("pageInfo",pageInfo);
model.addAttribute("formData",specialNounPageRequest);
return "special/index";
}
}
2 changes: 1 addition & 1 deletion src/main/resources/application.properties
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ mybatis-plus.configuration.auto-mapping-behavior=full
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
mybatis-plus.configuration.use-generated-keys=true
mybatis-plus.mapper-locations=classpath*:mapper/**/*Mapper.xml
mybatis-plus.type-aliases-package=com.cxjk.passport.domain
mybatis-plus.type-aliases-package=com.hkh.ai.domain

proxy.enable=true
# socket or http
Expand Down
25 changes: 3 additions & 22 deletions src/main/resources/logback-spring.xml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="true">
<property name="LOG_HOME" value="/usr/logs/langchain"></property>
<property name="LOG_HOME" value="/usr/logs/LangBoot"></property>
<!-- appender是configuration的子节点,是负责写日志的组件。 -->
<!-- ConsoleAppender:把日志输出到控制台 -->
Expand Down Expand Up @@ -68,7 +68,7 @@
<!-- 2.如果日期没有发生变化,但是当前日志的文件大小超过10MB时,对当前日志进行分割 重命名-->
<appender name="error_log" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!--日志文件路径和名称-->
<File>${LOG_HOME}/ls_error.log</File>
<File>${LOG_HOME}/lb_error.log</File>
<!--是否追加到文件末尾,默认为true-->
<append>true</append>
<!-- ThresholdFilter过滤低于指定阈值的事件。 对于等于或高于阈值的事件,ThresholdFilter将在调用其decision()方法时响应NEUTRAL。 但是,将拒绝级别低于阈值的事件 -->
Expand All @@ -82,7 +82,7 @@
<!-- 活动文件的名字会根据fileNamePattern的值,每隔一段时间改变一次 -->
<!-- 文件名:logs/project_error.2017-12-05.0.log -->
<!-- 注意:SizeAndTimeBasedRollingPolicy中 %i和%d令牌都是强制性的,必须存在,要不会报错 -->
<fileNamePattern>${LOG_HOME}/ls_error.%d.%i.log</fileNamePattern>
<fileNamePattern>${LOG_HOME}/lb_error.%d.%i.log</fileNamePattern>
<!-- 每产生一个日志文件,该日志文件的保存期限为30天, ps:maxHistory的单位是根据fileNamePattern中的翻转策略自动推算出来的,例如上面选用了yyyy-MM-dd,则单位为天
如果上面选用了yyyy-MM,则单位为月,另外上面的单位默认为yyyy-MM-dd-->
<maxHistory>30</maxHistory>
Expand Down Expand Up @@ -112,24 +112,5 @@
<appender-ref ref="error_log" />
</root>

<!-- &lt;!&ndash; 指定项目中某个包,当有日志操作行为时的日志记录级别 &ndash;&gt;-->
<!-- &lt;!&ndash; 级别依次为【从高到低】:FATAL > ERROR > WARN > INFO > DEBUG > TRACE &ndash;&gt;-->
<!-- <logger name="com.sailing.springbootmybatis" level="INFO">-->
<!-- <appender-ref ref="info_log" />-->
<!-- <appender-ref ref="error_log" />-->
<!-- </logger>-->

<!-- &lt;!&ndash; 利用logback输入mybatis的sql日志,-->
<!-- 注意如果不加 additivity="false" 则此logger会将输出转发到自身以及祖先的logger中就会出现日志文件中sql重复打印&ndash;&gt;-->
<!-- <logger name="com.cxjk.passport.biz.**.mapper" level="DEBUG" additivity="false">-->
<!-- <appender-ref ref="info_log" />-->
<!-- <appender-ref ref="error_log" />-->
<!-- </logger>-->

<!-- &lt;!&ndash; additivity=false代表禁止默认累计的行为即com.atomikos中的日志只会记录到日志文件中不会输出层次级别更高的任何appender&ndash;&gt;-->
<!-- <logger name="com.cxjk.passport.biz" level="INFO" additivity="false">-->
<!-- <appender-ref ref="info_log" />-->
<!-- <appender-ref ref="error_log" />-->
<!-- </logger>-->

</configuration>

0 comments on commit 784bafe

Please sign in to comment.