重构 jeesite-ai 代码目录,新增 parent-ai,重命名 cms-ai 为 ai-cms
This commit is contained in:
@@ -0,0 +1,54 @@
|
||||
/**
|
||||
* Copyright (c) 2013-Now http://jeesite.com All rights reserved.
|
||||
* No deletion without permission, or be held responsible to law.
|
||||
*/
|
||||
package com.jeesite.modules;
|
||||
|
||||
import com.jeesite.common.config.Global;
|
||||
import com.jeesite.common.io.FileUtils;
|
||||
import com.jeesite.common.lang.StringUtils;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.boot.SpringApplication;
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
import org.springframework.boot.builder.SpringApplicationBuilder;
|
||||
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
|
||||
|
||||
/**
|
||||
* Application
|
||||
* @author ThinkGem
|
||||
*/
|
||||
@SpringBootApplication
|
||||
public class AiCmsApplication extends SpringBootServletInitializer {
|
||||
|
||||
private static final Logger logger = LoggerFactory.getLogger(AiCmsApplication.class);
|
||||
|
||||
public static void main(String[] args) {
|
||||
SpringApplication.run(AiCmsApplication.class, args);
|
||||
String vuePath = Global.getProperty("vuePath");
|
||||
String ctxPath = Global.getProperty("server.servlet.context-path");
|
||||
if (StringUtils.isNoneBlank(vuePath) && !StringUtils.equals(ctxPath, "/js")) {
|
||||
logger.info(
|
||||
"\n\n==============================================================\n"
|
||||
+ "\n 提示:您修改了 server.servlet.context-path 参数,需要您"
|
||||
+ "\n 同步修改 _app.config.js 中的 VITE_GLOB_API_URL_PREFIX 参数 "
|
||||
+ "\n 请修改为 VITE_GLOB_API_URL_PREFIX=\"{}\" 并重新打包 Vue\n"
|
||||
+ "\n==============================================================\n",
|
||||
ctxPath);
|
||||
}
|
||||
logger.info(
|
||||
"\n\n==============================================================\n"
|
||||
+ "\n 启动完成,访问地址:http://127.0.0.1:{}\n"
|
||||
+ "\n 默认管理账号: system 密码: admin\n"
|
||||
+ "\n==============================================================\n",
|
||||
Global.getProperty("server.port") + FileUtils.path("/"
|
||||
+ Global.getProperty("server.servlet.context-path")));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
|
||||
this.setRegisterErrorPageFilter(false); // 错误页面有容器来处理,而不是SpringBoot
|
||||
return builder.sources(AiCmsApplication.class);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,41 @@
|
||||
|
||||
# 使用环境配置,只需 JVM 参数里加:-Dspring.profiles.active=prod
|
||||
|
||||
server:
|
||||
|
||||
port: 8980
|
||||
servlet:
|
||||
context-path: /js
|
||||
|
||||
# 数据库连接
|
||||
jdbc:
|
||||
|
||||
# Mysql 数据库配置
|
||||
type: mysql
|
||||
driver: com.mysql.cj.jdbc.Driver
|
||||
url: jdbc:mysql://192.168.56.1:3306/jeesite?useSSL=false&allowPublicKeyRetrieval=true&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=CONVERT_TO_NULL&serverTimezone=Asia/Shanghai
|
||||
username: jeesite
|
||||
password: jeesite
|
||||
testSql: SELECT 1
|
||||
|
||||
# 数据库连接池配置
|
||||
pool:
|
||||
|
||||
# 初始化连接数
|
||||
init: 1
|
||||
# 最小连接数
|
||||
minIdle: 3
|
||||
# 最大连接数
|
||||
maxActive: 20
|
||||
|
||||
# 日志配置
|
||||
logging:
|
||||
config: classpath:config/logback-spring-prod.xml
|
||||
|
||||
# MyBatis 相关
|
||||
mybatis:
|
||||
|
||||
# Mapper文件刷新线程
|
||||
mapper:
|
||||
refresh:
|
||||
enabled: false
|
||||
248
web-ai/web-ai-cms/src/main/resources/config/application.yml
Normal file
248
web-ai/web-ai-cms/src/main/resources/config/application.yml
Normal file
@@ -0,0 +1,248 @@
|
||||
|
||||
#======================================#
|
||||
#========== Project settings ==========#
|
||||
#======================================#
|
||||
|
||||
# 产品或项目名称、软件开发公司名称
|
||||
productName: JeeSite AI CMS
|
||||
companyName: ThinkGem
|
||||
|
||||
# 产品版本、版权年份
|
||||
productVersion: V5.14
|
||||
copyrightYear: 2025
|
||||
|
||||
# 是否演示模式
|
||||
demoMode: false
|
||||
|
||||
# 专为分离端提供接口服务
|
||||
apiMode: false
|
||||
|
||||
#======================================#
|
||||
#========== Server settings ===========#
|
||||
#======================================#
|
||||
|
||||
server:
|
||||
|
||||
port: 8980
|
||||
servlet:
|
||||
context-path: /js
|
||||
register-default-servlet: false
|
||||
# encoding.enabled: true
|
||||
tomcat:
|
||||
uri-encoding: UTF-8
|
||||
# 表单请求数据的最大大小
|
||||
max-http-form-post-size: 20MB
|
||||
# # 客户端发送请求参数个数限制
|
||||
# max-parameter-count: 10000
|
||||
# # 文件上传的表单请求参数个数限制
|
||||
# max-part-count: 50
|
||||
# # 进程的最大连接数
|
||||
# max-connections: 8192
|
||||
# # 连接数满后的排队个数
|
||||
# accept-count: 100
|
||||
# # 线程数最大和最小个数
|
||||
# threads:
|
||||
# max: 200
|
||||
# min-spare: 10
|
||||
|
||||
# 当 Nginx 为 https,tomcat 为 http 时,设置该选项为 true
|
||||
schemeHttps: false
|
||||
|
||||
#======================================#
|
||||
#========= Database settings ==========#
|
||||
#======================================#
|
||||
|
||||
# 数据库连接
|
||||
jdbc:
|
||||
|
||||
# Mysql 数据库配置
|
||||
type: mysql
|
||||
driver: com.mysql.cj.jdbc.Driver
|
||||
url: jdbc:mysql://127.0.0.1:3306/jeesite_v5?useSSL=false&allowPublicKeyRetrieval=true&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=CONVERT_TO_NULL&serverTimezone=Asia/Shanghai&nullCatalogMeansCurrent=true
|
||||
username: root
|
||||
password: 123456
|
||||
testSql: SELECT 1
|
||||
|
||||
# 连接信息加密
|
||||
encrypt:
|
||||
|
||||
# 加密连接用户名
|
||||
username: false
|
||||
# 加密连接密码
|
||||
password: false
|
||||
|
||||
# 数据库连接池配置
|
||||
pool:
|
||||
|
||||
# 初始化连接数
|
||||
init: 1
|
||||
# 最小空闲连接数
|
||||
minIdle: 3
|
||||
# 最大激活连接数
|
||||
maxActive: 20
|
||||
|
||||
#======================================#
|
||||
#========== Spring settings ===========#
|
||||
#======================================#
|
||||
|
||||
spring:
|
||||
|
||||
# 应用程序名称
|
||||
application:
|
||||
name: jeesite-web-ai
|
||||
|
||||
# 环境名称(注意:不可设置为 test 它是单元测试专用的名称)
|
||||
profiles:
|
||||
active: default
|
||||
|
||||
# 打印横幅
|
||||
main:
|
||||
banner-mode: "off"
|
||||
lazy-initialization: false
|
||||
|
||||
# # MVC 映射匹配策略
|
||||
# mvc:
|
||||
# pathmatch:
|
||||
# matching-strategy: ANT_PATH_MATCHER
|
||||
|
||||
# 日志配置(fatal、error、warn、info、debug)
|
||||
logging:
|
||||
config: classpath:config/logback-spring.xml
|
||||
# level:
|
||||
# root: warn
|
||||
# com.jeesite.modules: debug
|
||||
|
||||
# MyBatis 相关
|
||||
mybatis:
|
||||
|
||||
# Mapper文件刷新线程
|
||||
mapper:
|
||||
refresh:
|
||||
enabled: true
|
||||
|
||||
#======================================#
|
||||
#========== System settings ===========#
|
||||
#======================================#
|
||||
|
||||
# 管理基础路径
|
||||
adminPath: /a
|
||||
|
||||
# 前端基础路径
|
||||
frontPath: /f
|
||||
|
||||
# Vue 资源文件访问路径,映射到 src/main/resources/{vuePath} 文件夹
|
||||
# 如果设置的是 /vue,则映射目录为:src/main/resources/vue 文件夹
|
||||
# 该资源映射功能,会自动处理 Vue 的 history 路由模式
|
||||
vuePath: /vue
|
||||
|
||||
# 用户相关
|
||||
user:
|
||||
|
||||
# 多租户模式(SAAS模式)(专业版)
|
||||
useCorpModel: false
|
||||
|
||||
# 国际化管理(专业版)
|
||||
lang:
|
||||
enabled: false
|
||||
|
||||
# 任务调度(标准版)
|
||||
job:
|
||||
enabled: false
|
||||
|
||||
# 代码生成
|
||||
gen:
|
||||
enabled: true
|
||||
|
||||
# 系统监控
|
||||
state:
|
||||
enabled: true
|
||||
|
||||
#======================================#
|
||||
#========= Framework settings =========#
|
||||
#======================================#
|
||||
|
||||
# Shiro 相关
|
||||
shiro:
|
||||
|
||||
# defaultPath: ${shiro.loginUrl}
|
||||
defaultPath: ${vuePath}/login
|
||||
|
||||
# 登录相关设置
|
||||
loginUrl: ${adminPath}/login
|
||||
logoutUrl: ${shiro.loginUrl}
|
||||
successUrl: ${adminPath}/index
|
||||
|
||||
# 简单 SSO 登录相关配置
|
||||
sso:
|
||||
# 如果启用/sso/{username}/{token}单点登录,请修改此安全key并与单点登录系统key一致。
|
||||
secretKey: ~
|
||||
# 是否加密单点登录安全Key
|
||||
encryptKey: true
|
||||
# token 时效性,如:1天:yyyyMMdd、1小时:yyyyMMddHH、1分钟:yyyyMMddHHmm
|
||||
encryptKeyDateFormat: yyyyMMdd
|
||||
|
||||
# 登录提交信息加密(如果不需要加密,设置为空即可)
|
||||
loginSubmit:
|
||||
# 加密用户名、密码、验证码,后再提交(key设置为3个,用逗号分隔)加密方式:DES(4.1.9及之前版本默认设置)
|
||||
# v4.2.0+ 开始支持 Base64 加密方式,方便移动端及第三方系统处理认证,可直接设置 Key 为 Base64(4.2.0+默认设置)
|
||||
#secretKey: thinkgem,jeesite,com
|
||||
secretKey: Base64
|
||||
#secretKey: ~
|
||||
|
||||
# 记住我密钥设置,你可以通过 com.jeesite.test.RememberMeKeyGen 类快速生成一个秘钥。
|
||||
# 若不设置,则每次启动系统后自动生成一个新秘钥,这样会导致每次重启后,客户端记录的用户信息将失效。
|
||||
rememberMe:
|
||||
secretKey: ~
|
||||
|
||||
# 是否允许跨域访问 CORS,如果允许,设置允许的域名。v4.2.3 开始支持多个域名和模糊匹配,例如:http://*.jeesite.com,http://*.jeesite.net
|
||||
accessControlAllowOrigin: '*'
|
||||
|
||||
# 允许跨域访问时 CORS,可以获取和返回的方法和请求头
|
||||
accessControlAllowMethods: GET, POST, OPTIONS
|
||||
accessControlAllowHeaders: content-type, x-requested-with, x-ajax, x-token, x-remember
|
||||
accessControlExposeHeaders: x-token, x-remember
|
||||
|
||||
# Session 相关
|
||||
session:
|
||||
# 会话唯一标识SessionId在Cookie中的名称。
|
||||
sessionIdCookieName: ai.jeesite.session.id
|
||||
sessionIdCookiePath: ${server.servlet.context-path}
|
||||
|
||||
# Web 相关
|
||||
web:
|
||||
|
||||
# 核心模块的Web功能开启(其它微服务时设为false)
|
||||
core:
|
||||
enabled: true
|
||||
|
||||
# 在线API文档
|
||||
springdoc:
|
||||
api-docs:
|
||||
enabled: true
|
||||
swagger-ui:
|
||||
enabled: true
|
||||
|
||||
# 错误页面500.html是否输出错误信息(正式环境,为提供安全性可设置为false)
|
||||
error:
|
||||
page:
|
||||
printErrorInfo: true
|
||||
|
||||
#======================================#
|
||||
#======== FileUpload settings =========#
|
||||
#======================================#
|
||||
|
||||
# 文件上传
|
||||
file:
|
||||
enabled: true
|
||||
|
||||
#======================================#
|
||||
#========== Message settings ==========#
|
||||
#======================================#
|
||||
|
||||
# 消息提醒中心(专业版)
|
||||
msg:
|
||||
enabled: true
|
||||
|
||||
#======================================#
|
||||
#========== Project settings ==========#
|
||||
#======================================#
|
||||
@@ -0,0 +1,72 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<configuration debug="false" scan="false">
|
||||
|
||||
<!-- Log file path -->
|
||||
<property name="log.path" value="${logPath:-${java.io.tmpdir:-.}}/logs" />
|
||||
|
||||
<!-- Framework level setting -->
|
||||
<include resource="config/logger-core.xml" />
|
||||
|
||||
<!-- Production level setting -->
|
||||
<logger name="org.mybatis.spring.transaction" level="INFO" />
|
||||
<logger name="org.flowable.ui.modeler.domain" level="INFO" />
|
||||
<logger name="org.flowable.idm.engine.impl.persistence" level="INFO" />
|
||||
<logger name="org.flowable.task.service.impl.persistence" level="INFO" />
|
||||
<logger name="org.flowable.identitylink.service.impl.persistence" level="INFO" />
|
||||
<logger name="org.flowable.variable.service.impl.persistence" level="INFO" />
|
||||
<logger name="org.flowable.engine.impl.persistence" level="INFO" />
|
||||
<logger name="com.bstek.ureport" level="INFO" />
|
||||
<logger name="com.jeesite.modules" level="INFO" />
|
||||
|
||||
<!-- Project level setting -->
|
||||
<!-- <logger name="your.package" level="DEBUG" /> -->
|
||||
|
||||
<!-- Console log output -->
|
||||
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
|
||||
<encoder>
|
||||
<pattern>%d{MM-dd HH:mm:ss.SSS} %clr(%-5p) %clr([%-39logger{39}]){cyan} - %m%n%wEx</pattern>
|
||||
</encoder>
|
||||
</appender>
|
||||
|
||||
<!-- Log file debug output -->
|
||||
<appender name="debug" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||
<file>${log.path}/debug.log</file>
|
||||
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
|
||||
<fileNamePattern>${log.path}/debug.%d{yyyy-MM-dd}.%i.log.zip</fileNamePattern>
|
||||
<maxFileSize>50MB</maxFileSize>
|
||||
<maxHistory>30</maxHistory>
|
||||
</rollingPolicy>
|
||||
<encoder>
|
||||
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5p ${PID:- } [%15.15t] [%-39logger{39}] [%X{TRACE_ID}] - %m%n%wEx</pattern>
|
||||
</encoder>
|
||||
<!--<filter class="ch.qos.logback.classic.filter.LevelFilter">
|
||||
<level>ERROR</level>
|
||||
<onMatch>DENY</onMatch>
|
||||
<onMismatch>NEUTRAL</onMismatch>
|
||||
</filter>-->
|
||||
</appender>
|
||||
|
||||
<!-- Log file error output -->
|
||||
<appender name="error" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||
<file>${log.path}/error.log</file>
|
||||
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
|
||||
<fileNamePattern>${log.path}/error.%d{yyyy-MM-dd}.%i.log.zip</fileNamePattern>
|
||||
<maxFileSize>50MB</maxFileSize>
|
||||
<maxHistory>30</maxHistory>
|
||||
</rollingPolicy>
|
||||
<encoder>
|
||||
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5p ${PID:- } [%15.15t] [%-39logger{39}] [%X{TRACE_ID}] - %m%n%wEx</pattern>
|
||||
</encoder>
|
||||
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
|
||||
<level>ERROR</level>
|
||||
</filter>
|
||||
</appender>
|
||||
|
||||
<!-- Level: FATAL 0 ERROR 3 WARN 4 INFO 6 DEBUG 7 -->
|
||||
<root level="WARN">
|
||||
<appender-ref ref="console" />
|
||||
<appender-ref ref="debug" />
|
||||
<appender-ref ref="error" />
|
||||
</root>
|
||||
|
||||
</configuration>
|
||||
@@ -0,0 +1,63 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<configuration debug="false" scan="false">
|
||||
|
||||
<!-- Log file path -->
|
||||
<property name="log.path" value="${logPath:-${java.io.tmpdir:-.}}/logs" />
|
||||
|
||||
<!-- Framework level setting -->
|
||||
<include resource="config/logger-core.xml" />
|
||||
|
||||
<!-- Project level setting -->
|
||||
<!-- <logger name="your.package" level="DEBUG" /> -->
|
||||
<!-- <logger name="org.springframework.ai" level="TRACE" />-->
|
||||
<!-- <logger name="com.jeesite.modules.ai.cms.config.WebClientThinkConfig" level="TRACE" />-->
|
||||
|
||||
<!-- Console log output -->
|
||||
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
|
||||
<encoder>
|
||||
<pattern>%d{MM-dd HH:mm:ss.SSS} %clr(%-5p) %clr([%-39logger{39}]){cyan} - %m%n%wEx</pattern>
|
||||
</encoder>
|
||||
</appender>
|
||||
|
||||
<!-- Log file debug output -->
|
||||
<appender name="debug" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||
<file>${log.path}/debug.log</file>
|
||||
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
|
||||
<fileNamePattern>${log.path}/debug.%d{yyyy-MM-dd}.%i.log.zip</fileNamePattern>
|
||||
<maxFileSize>50MB</maxFileSize>
|
||||
<maxHistory>30</maxHistory>
|
||||
</rollingPolicy>
|
||||
<encoder>
|
||||
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5p ${PID:- } [%15.15t] [%-39logger{39}] [%X{TRACE_ID}] - %m%n%wEx</pattern>
|
||||
</encoder>
|
||||
<!--<filter class="ch.qos.logback.classic.filter.LevelFilter">
|
||||
<level>ERROR</level>
|
||||
<onMatch>DENY</onMatch>
|
||||
<onMismatch>NEUTRAL</onMismatch>
|
||||
</filter>-->
|
||||
</appender>
|
||||
|
||||
<!-- Log file error output -->
|
||||
<appender name="error" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||
<file>${log.path}/error.log</file>
|
||||
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
|
||||
<fileNamePattern>${log.path}/error.%d{yyyy-MM-dd}.%i.log.zip</fileNamePattern>
|
||||
<maxFileSize>50MB</maxFileSize>
|
||||
<maxHistory>30</maxHistory>
|
||||
</rollingPolicy>
|
||||
<encoder>
|
||||
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5p ${PID:- } [%15.15t] [%-39logger{39}] [%X{TRACE_ID}] - %m%n%wEx</pattern>
|
||||
</encoder>
|
||||
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
|
||||
<level>ERROR</level>
|
||||
</filter>
|
||||
</appender>
|
||||
|
||||
<!-- Level: FATAL 0 ERROR 3 WARN 4 INFO 6 DEBUG 7 -->
|
||||
<root level="WARN">
|
||||
<appender-ref ref="console" />
|
||||
<appender-ref ref="debug" />
|
||||
<appender-ref ref="error" />
|
||||
</root>
|
||||
|
||||
</configuration>
|
||||
@@ -0,0 +1,5 @@
|
||||
/*!
|
||||
* Copyright (c) 2013-Now http://jeesite.com All rights reserved.
|
||||
* No deletion without permission, or be held responsible to law.
|
||||
* 项目自定义的公共CSS,可覆盖jeesite.css里的样式
|
||||
*/
|
||||
@@ -0,0 +1,5 @@
|
||||
/*!
|
||||
* Copyright (c) 2013-Now http://jeesite.com All rights reserved.
|
||||
* No deletion without permission, or be held responsible to law.
|
||||
* 项目自定义的公共JavaScript,可覆盖jeesite.js里的方法
|
||||
*/
|
||||
BIN
web-ai/web-ai-cms/src/main/resources/static/favicon.png
Normal file
BIN
web-ai/web-ai-cms/src/main/resources/static/favicon.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 4.7 KiB |
2
web-ai/web-ai-cms/src/main/resources/vue/_app.config.js
Normal file
2
web-ai/web-ai-cms/src/main/resources/vue/_app.config.js
Normal file
@@ -0,0 +1,2 @@
|
||||
window.__PRODUCTION__JEESITE__CONF__={"VITE_GLOB_APP_TITLE":"JeeSite 快速开发平台","VITE_GLOB_APP_SHORT_NAME":"jeesite","VITE_GLOB_API_URL":"",
|
||||
"VITE_GLOB_API_URL_PREFIX":"/js","VITE_GLOB_ADMIN_PATH":"/a","VITE_FILE_PREVIEW":"true"};Object.freeze(window.__PRODUCTION__JEESITE__CONF__);Object.defineProperty(window,"__PRODUCTION__JEESITE__CONF__",{configurable:false,writable:false,});var _hmt =_hmt ||[];(function(){var hm =document.createElement("script");hm.src ="https://hm.baidu.com/hm.js?65b88e88a94e0118de2962f328f17622";var s =document.getElementsByTagName("script")[0];s.parentNode.insertBefore(hm,s);})();
|
||||
51
web-ai/web-ai-cms/src/main/webapp/WEB-INF/startup.bat
Normal file
51
web-ai/web-ai-cms/src/main/webapp/WEB-INF/startup.bat
Normal file
@@ -0,0 +1,51 @@
|
||||
@echo off
|
||||
rem /**
|
||||
rem * Copyright (c) 2013-Now http://jeesite.com All rights reserved.
|
||||
rem * No deletion without permission, or be held responsible to law.
|
||||
rem *
|
||||
rem * Author: ThinkGem@163.com
|
||||
rem */
|
||||
echo.
|
||||
echo [<5B><>Ϣ] <20><><EFBFBD><EFBFBD>Web<65><62><EFBFBD>̡<EFBFBD>
|
||||
echo.
|
||||
rem pause
|
||||
rem echo.
|
||||
|
||||
%~d0
|
||||
cd %~dp0
|
||||
|
||||
title %cd%
|
||||
|
||||
rem <20><><EFBFBD><EFBFBD>JDKĿ¼
|
||||
rem set "JAVA_HOME=%cd%\jdk1.8.0_x64"
|
||||
|
||||
rem <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><C2B7>
|
||||
set "CLASS_PATH=%cd%/../"
|
||||
|
||||
rem <20>Ż<EFBFBD>JVM<56><4D><EFBFBD><EFBFBD>
|
||||
set "JAVA_OPTS=%JAVA_OPTS% -Xms512m -Xmx1024m"
|
||||
|
||||
rem <20><>ʽһ<CABD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ⲿ<EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>飩
|
||||
rem set "JAVA_OPTS=%JAVA_OPTS% -Dspring.config.location=%cd%\app.yml"
|
||||
|
||||
rem <20><>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD><C6A3><EFBFBD><EFBFBD>ز<EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
|
||||
rem set "JAVA_OPTS=%JAVA_OPTS% -Dspring.profiles.active=prod"
|
||||
|
||||
if "%JAVA_HOME%" == "" goto noJavaHome
|
||||
if not "%JAVA_HOME%" == "" goto gotJavaHome
|
||||
goto end
|
||||
|
||||
:noJavaHome
|
||||
set RUN_JAVA=java
|
||||
goto runJava
|
||||
|
||||
:gotJavaHome
|
||||
set "RUN_JAVA=%JAVA_HOME%\bin\java"
|
||||
goto runJava
|
||||
|
||||
:runJava
|
||||
call "%RUN_JAVA%" -cp %CLASS_PATH% %JAVA_OPTS% org.springframework.boot.loader.launch.WarLauncher %*
|
||||
goto end
|
||||
|
||||
:end
|
||||
pause
|
||||
35
web-ai/web-ai-cms/src/main/webapp/WEB-INF/startup.sh
Normal file
35
web-ai/web-ai-cms/src/main/webapp/WEB-INF/startup.sh
Normal file
@@ -0,0 +1,35 @@
|
||||
#!/bin/sh
|
||||
# /**
|
||||
# * Copyright (c) 2013-Now http://jeesite.com All rights reserved.
|
||||
# * No deletion without permission, or be held responsible to law.
|
||||
# *
|
||||
# * Author: ThinkGem@163.com
|
||||
# */
|
||||
echo ""
|
||||
echo "[信息] 运行Web工程。"
|
||||
echo ""
|
||||
|
||||
cd "$(cd "$(dirname "$0")"; pwd)"
|
||||
|
||||
# 设置JDK目录
|
||||
# JAVA_HOME="$PWD/jdk1.8.0_x64"
|
||||
|
||||
# 设置类加载路径
|
||||
CLASS_PATH="$PWD/../"
|
||||
|
||||
# 优化JVM参数
|
||||
# JAVA_OPTS="$JAVA_OPTS -Xms512m -Xmx1024m"
|
||||
|
||||
# 方式一、配置外部自定义的属性文件(建议)
|
||||
# JAVA_OPTS="$JAVA_OPTS -Dspring.config.location=$PWD/app.yml"
|
||||
|
||||
# 方式二、配置环境名称,加载不同的属性文件
|
||||
# JAVA_OPTS="$JAVA_OPTS -Dspring.profiles.active=prod"
|
||||
|
||||
if [ -z "$JAVA_HOME" ]; then
|
||||
RUN_JAVA=java
|
||||
else
|
||||
RUN_JAVA="$JAVA_HOME"/bin/java
|
||||
fi
|
||||
|
||||
exec "$RUN_JAVA" -cp $CLASS_PATH $JAVA_OPTS org.springframework.boot.loader.launch.WarLauncher $@
|
||||
@@ -0,0 +1,32 @@
|
||||
/**
|
||||
* Copyright (c) 2013-Now http://jeesite.com All rights reserved.
|
||||
* No deletion without permission, or be held responsible to law.
|
||||
*/
|
||||
package com.jeesite.test;
|
||||
|
||||
import org.junit.Test;
|
||||
import org.springframework.boot.test.context.SpringBootTest;
|
||||
import org.springframework.test.context.ActiveProfiles;
|
||||
|
||||
import com.jeesite.common.tests.BaseInitDataTests;
|
||||
import com.jeesite.modules.AiCmsApplication;
|
||||
|
||||
/**
|
||||
* 初始化数据表
|
||||
* @author ThinkGem
|
||||
*/
|
||||
@ActiveProfiles("test")
|
||||
@SpringBootTest(classes = AiCmsApplication.class)
|
||||
public class InitData extends BaseInitDataTests {
|
||||
|
||||
@Test
|
||||
public void initData01() throws Exception{
|
||||
logger.info("数据库初始化完成。");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void initProperty() {
|
||||
System.setProperty("jeesite.initdata", "true");
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
/**
|
||||
* Copyright (c) 2013-Now http://jeesite.com All rights reserved.
|
||||
* No deletion without permission, or be held responsible to law.
|
||||
*/
|
||||
package com.jeesite.test;
|
||||
|
||||
import org.apache.shiro.crypto.cipher.AesCipherService;
|
||||
import org.apache.shiro.lang.codec.Base64;
|
||||
|
||||
/**
|
||||
* v4.1.8 开始将不为记住我功能,设置默认密钥,即启动系统时生成新密钥。
|
||||
* 这样会造成一个问题,比如:重启服务后,记住登录的用户因为解密失败,而需要重新登录。
|
||||
* 为了解决这个问题,您可以通过这个类获取一个新密钥,设置到 shiro.rememberMe.secretKey 中即可。
|
||||
* 另外,如果你从配置文件里将 shiro.rememberMe.secretKey 设置为空,启动系统时也会自动设置一个新的密钥。
|
||||
* @author ThinkGem
|
||||
* @version 2019年11月6日
|
||||
*/
|
||||
public class RememberMeKeyGen {
|
||||
|
||||
public static void main(String[] args) {
|
||||
byte[] cipherKey = new AesCipherService().generateNewKey().getEncoded();
|
||||
String secretKey = Base64.encodeToString(cipherKey);
|
||||
System.out.println("shiro.rememberMe.secretKey = " + secretKey);
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user