mirror of https://gitee.com/stylefeng/guns
Merge branch 'dev-7.2.0'
commit
26a7e34fbd
4
pom.xml
4
pom.xml
|
@ -12,7 +12,7 @@
|
|||
|
||||
<groupId>cn.stylefeng</groupId>
|
||||
<artifactId>guns</artifactId>
|
||||
<version>7.1.5</version>
|
||||
<version>7.2.0</version>
|
||||
|
||||
<name>guns</name>
|
||||
<description>单体前后端不分离,基于beetl模板引擎</description>
|
||||
|
@ -24,7 +24,7 @@
|
|||
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
|
||||
<java.version>1.8</java.version>
|
||||
<mysql-connector-java.version>8.0.21</mysql-connector-java.version>
|
||||
<roses.kernel.version>7.1.5</roses.kernel.version>
|
||||
<roses.kernel.version>7.2.0</roses.kernel.version>
|
||||
<docker.img.version>latest</docker.img.version>
|
||||
</properties>
|
||||
|
||||
|
|
|
@ -19,7 +19,6 @@ public class GunsApplication {
|
|||
public static void main(String[] args) {
|
||||
SpringApplication.run(GunsApplication.class, args);
|
||||
log.info(GunsApplication.class.getSimpleName() + " is success!");
|
||||
log.info("http://localhost:8080");
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -62,7 +62,7 @@ public class GlobalExceptionHandler {
|
|||
@ExceptionHandler(MissingServletRequestParameterException.class)
|
||||
@ResponseBody
|
||||
@ResponseStatus(value = HttpStatus.INTERNAL_SERVER_ERROR)
|
||||
public ErrorResponseData missingParam(MissingServletRequestParameterException missingServletRequestParameterException) {
|
||||
public ErrorResponseData<?> missingParam(MissingServletRequestParameterException missingServletRequestParameterException) {
|
||||
String parameterName = missingServletRequestParameterException.getParameterName();
|
||||
String parameterType = missingServletRequestParameterException.getParameterType();
|
||||
return renderJson(ValidatorExceptionEnum.MISSING_SERVLET_REQUEST_PARAMETER_EXCEPTION, parameterName, parameterType);
|
||||
|
@ -77,7 +77,7 @@ public class GlobalExceptionHandler {
|
|||
@ExceptionHandler(HttpMessageNotReadableException.class)
|
||||
@ResponseBody
|
||||
@ResponseStatus(value = HttpStatus.INTERNAL_SERVER_ERROR)
|
||||
public ErrorResponseData httpMessageNotReadable(HttpMessageNotReadableException httpMessageNotReadableException) {
|
||||
public ErrorResponseData<?> httpMessageNotReadable(HttpMessageNotReadableException httpMessageNotReadableException) {
|
||||
log.error("参数格式传递异常,具体信息为:{}", httpMessageNotReadableException.getMessage());
|
||||
return renderJson(ValidatorExceptionEnum.HTTP_MESSAGE_CONVERTER_ERROR);
|
||||
}
|
||||
|
@ -91,7 +91,7 @@ public class GlobalExceptionHandler {
|
|||
@ExceptionHandler(HttpMediaTypeNotSupportedException.class)
|
||||
@ResponseBody
|
||||
@ResponseStatus(value = HttpStatus.INTERNAL_SERVER_ERROR)
|
||||
public ErrorResponseData httpMediaTypeNotSupport(HttpMediaTypeNotSupportedException httpMediaTypeNotSupportedException) {
|
||||
public ErrorResponseData<?> httpMediaTypeNotSupport(HttpMediaTypeNotSupportedException httpMediaTypeNotSupportedException) {
|
||||
log.error("参数格式传递异常,具体信息为:{}", httpMediaTypeNotSupportedException.getMessage());
|
||||
return renderJson(ValidatorExceptionEnum.HTTP_MEDIA_TYPE_NOT_SUPPORT);
|
||||
}
|
||||
|
@ -105,7 +105,7 @@ public class GlobalExceptionHandler {
|
|||
@ExceptionHandler(HttpRequestMethodNotSupportedException.class)
|
||||
@ResponseBody
|
||||
@ResponseStatus(value = HttpStatus.INTERNAL_SERVER_ERROR)
|
||||
public ErrorResponseData methodNotSupport(HttpServletRequest request) {
|
||||
public ErrorResponseData<?> methodNotSupport(HttpServletRequest request) {
|
||||
String httpMethod = request.getMethod().toUpperCase();
|
||||
return renderJson(ValidatorExceptionEnum.HTTP_METHOD_NOT_SUPPORT, httpMethod);
|
||||
}
|
||||
|
@ -119,7 +119,7 @@ public class GlobalExceptionHandler {
|
|||
@ExceptionHandler(NoHandlerFoundException.class)
|
||||
@ResponseBody
|
||||
@ResponseStatus(value = HttpStatus.INTERNAL_SERVER_ERROR)
|
||||
public ErrorResponseData notFound(NoHandlerFoundException e) {
|
||||
public ErrorResponseData<?> notFound(NoHandlerFoundException e) {
|
||||
return renderJson(ValidatorExceptionEnum.NOT_FOUND);
|
||||
}
|
||||
|
||||
|
@ -132,7 +132,7 @@ public class GlobalExceptionHandler {
|
|||
@ExceptionHandler(MethodArgumentNotValidException.class)
|
||||
@ResponseBody
|
||||
@ResponseStatus(value = HttpStatus.INTERNAL_SERVER_ERROR)
|
||||
public ErrorResponseData methodArgumentNotValidException(MethodArgumentNotValidException e) {
|
||||
public ErrorResponseData<?> methodArgumentNotValidException(MethodArgumentNotValidException e) {
|
||||
String bindingResult = getArgNotValidMessage(e.getBindingResult());
|
||||
return renderJson(ValidatorExceptionEnum.VALIDATED_RESULT_ERROR, bindingResult);
|
||||
}
|
||||
|
@ -148,7 +148,7 @@ public class GlobalExceptionHandler {
|
|||
@ExceptionHandler(BindException.class)
|
||||
@ResponseBody
|
||||
@ResponseStatus(value = HttpStatus.INTERNAL_SERVER_ERROR)
|
||||
public ErrorResponseData bindException(BindException e) {
|
||||
public ErrorResponseData<?> bindException(BindException e) {
|
||||
String bindingResult = getArgNotValidMessage(e.getBindingResult());
|
||||
return renderJson(ValidatorExceptionEnum.VALIDATED_RESULT_ERROR, bindingResult);
|
||||
}
|
||||
|
@ -162,7 +162,7 @@ public class GlobalExceptionHandler {
|
|||
@ExceptionHandler(ValidationException.class)
|
||||
@ResponseBody
|
||||
@ResponseStatus(value = HttpStatus.INTERNAL_SERVER_ERROR)
|
||||
public ErrorResponseData bindException(ValidationException e) {
|
||||
public ErrorResponseData<?> bindException(ValidationException e) {
|
||||
if (e.getCause() instanceof ParamValidateException) {
|
||||
ParamValidateException paramValidateException = (ParamValidateException) e.getCause();
|
||||
return renderJson(paramValidateException.getErrorCode(), paramValidateException.getUserTip());
|
||||
|
@ -197,7 +197,7 @@ public class GlobalExceptionHandler {
|
|||
} else {
|
||||
// 其他请求或者是ajax请求
|
||||
response.setHeader("Guns-Session-Timeout", "true");
|
||||
ErrorResponseData errorResponseData = renderJson(authException.getErrorCode(), authException.getUserTip(), authException);
|
||||
ErrorResponseData<?> errorResponseData = renderJson(authException.getErrorCode(), authException.getUserTip(), authException);
|
||||
ResponseRenderUtil.renderJsonResponse(response, errorResponseData);
|
||||
return null;
|
||||
}
|
||||
|
@ -212,7 +212,7 @@ public class GlobalExceptionHandler {
|
|||
}
|
||||
|
||||
// 默认响应前端json
|
||||
ErrorResponseData errorResponseData = renderJson(authException.getErrorCode(), authException.getUserTip(), authException);
|
||||
ErrorResponseData<?> errorResponseData = renderJson(authException.getErrorCode(), authException.getUserTip(), authException);
|
||||
ResponseRenderUtil.renderJsonResponse(response, errorResponseData);
|
||||
return null;
|
||||
}
|
||||
|
@ -226,8 +226,8 @@ public class GlobalExceptionHandler {
|
|||
@ExceptionHandler(ServiceException.class)
|
||||
@ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
|
||||
@ResponseBody
|
||||
public ErrorResponseData businessError(ServiceException e) {
|
||||
log.error("业务异常,具体信息为:{}", e.getMessage());
|
||||
public ErrorResponseData<?> businessError(ServiceException e) {
|
||||
log.error("业务异常。", e);
|
||||
return renderJson(e.getErrorCode(), e.getUserTip(), e);
|
||||
}
|
||||
|
||||
|
@ -241,7 +241,7 @@ public class GlobalExceptionHandler {
|
|||
*/
|
||||
@ExceptionHandler(MyBatisSystemException.class)
|
||||
@ResponseBody
|
||||
public ErrorResponseData persistenceException(MyBatisSystemException e) {
|
||||
public ErrorResponseData<?> persistenceException(MyBatisSystemException e) {
|
||||
log.error(">>> mybatis操作出现异常,", e);
|
||||
Throwable cause = e.getCause();
|
||||
if (cause instanceof PersistenceException) {
|
||||
|
@ -262,7 +262,7 @@ public class GlobalExceptionHandler {
|
|||
@ExceptionHandler(Throwable.class)
|
||||
@ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
|
||||
@ResponseBody
|
||||
public ErrorResponseData serverError(Throwable e) {
|
||||
public ErrorResponseData<?> serverError(Throwable e) {
|
||||
log.error("服务器运行异常", e);
|
||||
return renderJson(e);
|
||||
}
|
||||
|
@ -273,7 +273,7 @@ public class GlobalExceptionHandler {
|
|||
* @author fengshuonan
|
||||
* @date 2020/5/5 16:22
|
||||
*/
|
||||
private ErrorResponseData renderJson(String code, String message) {
|
||||
private ErrorResponseData<?> renderJson(String code, String message) {
|
||||
return renderJson(code, message, null);
|
||||
}
|
||||
|
||||
|
@ -283,7 +283,7 @@ public class GlobalExceptionHandler {
|
|||
* @author fengshuonan
|
||||
* @date 2020/5/5 16:22
|
||||
*/
|
||||
private ErrorResponseData renderJson(AbstractExceptionEnum exception, Object... params) {
|
||||
private ErrorResponseData<?> renderJson(AbstractExceptionEnum exception, Object... params) {
|
||||
return renderJson(exception.getErrorCode(), StrUtil.format(exception.getUserTip(), params), null);
|
||||
}
|
||||
|
||||
|
@ -293,7 +293,7 @@ public class GlobalExceptionHandler {
|
|||
* @author fengshuonan
|
||||
* @date 2020/5/5 16:22
|
||||
*/
|
||||
private ErrorResponseData renderJson(AbstractExceptionEnum abstractExceptionEnum) {
|
||||
private ErrorResponseData<?> renderJson(AbstractExceptionEnum abstractExceptionEnum) {
|
||||
return renderJson(abstractExceptionEnum.getErrorCode(), abstractExceptionEnum.getUserTip(), null);
|
||||
}
|
||||
|
||||
|
@ -303,7 +303,7 @@ public class GlobalExceptionHandler {
|
|||
* @author fengshuonan
|
||||
* @date 2020/5/5 16:22
|
||||
*/
|
||||
private ErrorResponseData renderJson(Throwable throwable) {
|
||||
private ErrorResponseData<?> renderJson(Throwable throwable) {
|
||||
return renderJson(DefaultBusinessExceptionEnum.SYSTEM_RUNTIME_ERROR.getErrorCode(), DefaultBusinessExceptionEnum.SYSTEM_RUNTIME_ERROR.getUserTip(), throwable);
|
||||
}
|
||||
|
||||
|
@ -315,13 +315,13 @@ public class GlobalExceptionHandler {
|
|||
* @author stylefeng
|
||||
* @date 2020/5/5 16:22
|
||||
*/
|
||||
private ErrorResponseData renderJson(String code, String message, Throwable throwable) {
|
||||
private ErrorResponseData<?> renderJson(String code, String message, Throwable throwable) {
|
||||
if (ObjectUtil.isNotNull(throwable)) {
|
||||
ErrorResponseData errorResponseData = new ErrorResponseData(code, message);
|
||||
ErrorResponseData<?> errorResponseData = new ErrorResponseData<>(code, message);
|
||||
ExceptionUtil.fillErrorResponseData(errorResponseData, throwable, ROOT_PACKAGE_NAME);
|
||||
return errorResponseData;
|
||||
} else {
|
||||
return new ErrorResponseData(code, message);
|
||||
return new ErrorResponseData<>(code, message);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -363,7 +363,7 @@ public class GlobalExceptionHandler {
|
|||
|
||||
if (ProjectUtil.getSeparationFlag()) {
|
||||
response.setHeader("Guns-Session-Timeout", "true");
|
||||
ErrorResponseData errorResponseData = renderJson(authException.getErrorCode(), authException.getUserTip(), authException);
|
||||
ErrorResponseData<?> errorResponseData = renderJson(authException.getErrorCode(), authException.getUserTip(), authException);
|
||||
ResponseRenderUtil.renderJsonResponse(response, errorResponseData);
|
||||
return null;
|
||||
}
|
||||
|
|
|
@ -77,9 +77,9 @@ public abstract class BaseSecurityInterceptor implements HandlerInterceptor {
|
|||
resourceUrlParam.setUrl(requestURI);
|
||||
ResourceDefinition resourceDefinition = resourceServiceApi.getResourceByUrl(resourceUrlParam);
|
||||
|
||||
// 7. 资源找不到,则当前url不被权限控制,直接放行
|
||||
// 7. 资源找不到,则当前url不被权限控制,直接打回
|
||||
if (resourceDefinition == null) {
|
||||
return true;
|
||||
throw new AuthException(AuthExceptionEnum.CANT_REQUEST_UN_OPEN_API, requestURI);
|
||||
}
|
||||
|
||||
// 8.执行真正过滤器业务,如果拦截器执行不成功会抛出异常
|
||||
|
|
|
@ -32,9 +32,9 @@ public class DemoController {
|
|||
* @date 2021/1/24 10:59
|
||||
*/
|
||||
@GetResource(name = "示例方法", path = "/json/success")
|
||||
public ResponseData renderSuccess() {
|
||||
public ResponseData<?> renderSuccess() {
|
||||
demoService.demoService();
|
||||
return new SuccessResponseData();
|
||||
return new SuccessResponseData<>();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -47,8 +47,8 @@ public class DemoController {
|
|||
* @date 2021/1/24 10:59
|
||||
*/
|
||||
@PostResource(name = "示例加密方法", path = "/encode", requiredPermission = false, requiredLogin = false, requiredEncryption = true)
|
||||
public ResponseData encode(@RequestBody Dict dict) {
|
||||
return new SuccessResponseData(dict);
|
||||
public ResponseData<Dict> encode(@RequestBody Dict dict) {
|
||||
return new SuccessResponseData<>(dict);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package cn.stylefeng.guns.modular.test;
|
||||
|
||||
import cn.stylefeng.guns.modular.test.service.TranTestService;
|
||||
import cn.stylefeng.roses.kernel.rule.pojo.response.ResponseData;
|
||||
import cn.stylefeng.roses.kernel.rule.pojo.response.SuccessResponseData;
|
||||
import cn.stylefeng.roses.kernel.scanner.api.annotation.ApiResource;
|
||||
import cn.stylefeng.roses.kernel.scanner.api.annotation.GetResource;
|
||||
|
@ -22,15 +23,15 @@ public class TestMultiTranController {
|
|||
private TranTestService testMultiDbService;
|
||||
|
||||
@GetResource(name = "测试多数据源成功", path = "/tran/multi/success")
|
||||
public Object testSuccess() {
|
||||
public ResponseData<Object> testSuccess() {
|
||||
testMultiDbService.beginTest();
|
||||
return new SuccessResponseData();
|
||||
return new SuccessResponseData<>();
|
||||
}
|
||||
|
||||
@GetResource(name = "测试多数据源失败", path = "/tran/multi/fail")
|
||||
public Object testFail() {
|
||||
public ResponseData<Object> testFail() {
|
||||
testMultiDbService.beginTestFail();
|
||||
return new SuccessResponseData();
|
||||
return new SuccessResponseData<>();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package cn.stylefeng.guns.modular.test;
|
||||
|
||||
import cn.stylefeng.guns.modular.test.service.TranTestService;
|
||||
import cn.stylefeng.roses.kernel.rule.pojo.response.ResponseData;
|
||||
import cn.stylefeng.roses.kernel.rule.pojo.response.SuccessResponseData;
|
||||
import cn.stylefeng.roses.kernel.scanner.api.annotation.ApiResource;
|
||||
import cn.stylefeng.roses.kernel.scanner.api.annotation.GetResource;
|
||||
|
@ -22,15 +23,15 @@ public class TestSingleTranController {
|
|||
private TranTestService testMultiDbService;
|
||||
|
||||
@GetResource(name = "测试单数据源事务成功", path = "/tran/single/success")
|
||||
public Object testSuccess() {
|
||||
public ResponseData<Object> testSuccess() {
|
||||
testMultiDbService.testSingleSuccess();
|
||||
return new SuccessResponseData();
|
||||
return new SuccessResponseData<>();
|
||||
}
|
||||
|
||||
@GetResource(name = "测试单数据源事务失败", path = "/tran/single/fail")
|
||||
public Object testFail() {
|
||||
public ResponseData<Object> testFail() {
|
||||
testMultiDbService.testSingleFail();
|
||||
return new SuccessResponseData();
|
||||
return new SuccessResponseData<>();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -57,3 +57,4 @@ mybatis-plus:
|
|||
# 单点登录开关
|
||||
sso:
|
||||
openFlag: false
|
||||
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
UPDATE `sys_config` SET `config_value` = concat(config_value, '/error,') WHERE `config_code` = 'SYS_NONE_SECURITY_URLS';
|
|
@ -0,0 +1,102 @@
|
|||
-- ----------------------------
|
||||
-- Table structure for sys_theme
|
||||
-- ----------------------------
|
||||
CREATE TABLE `sys_theme` (
|
||||
`theme_id` bigint(20) NOT NULL COMMENT '主键',
|
||||
`theme_name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '主题名称',
|
||||
`theme_value` text CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '主题属性,json格式',
|
||||
`template_id` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '主题模板id',
|
||||
`status_flag` char(1) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '是否启用:Y-启用,N-禁用',
|
||||
`create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
|
||||
`create_user` bigint(20) NULL DEFAULT NULL COMMENT '创建人',
|
||||
`update_time` datetime(0) NULL DEFAULT NULL COMMENT '修改时间',
|
||||
`update_user` bigint(20) NULL DEFAULT NULL COMMENT '修改人',
|
||||
PRIMARY KEY (`theme_id`) USING BTREE
|
||||
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '系统主题' ROW_FORMAT = Dynamic;
|
||||
|
||||
-- ----------------------------
|
||||
-- Records of sys_theme
|
||||
-- ----------------------------
|
||||
INSERT INTO `sys_theme`(`theme_id`, `theme_name`, `theme_value`, `template_id`, `status_flag`, `create_time`, `create_user`, `update_time`, `update_user`) VALUES (1477272515573542913, 'Guns后台管理系统默认主题', '{\"themeId\":\"1477272515573542913\",\"themeName\":\"Guns后台管理系统默认主题\",\"templateId\":\"1477171926286020610\",\"GUNS_MGR_LOGIN_BACKGROUND_IMG\":\"1479751422149074948\",\"GUNS_MGR_BEI_URL\":\"https://beian.miit.gov.cn/\",\"GUNS_MGR_LOGO\":\"1479753047148322818\",\"GUNS_MGR_NAME\":\"Guns Tech.\",\"GUNS_MGR_FAVICON\":\"1479753047148322818\",\"GUNS_MGR_FOOTER_TEXT\":\"stylefeng开源技术 javaguns.com\",\"GUNS_MGR_BEI_NO\":\"京ICP备001-1\"}', '1477171926286020610', 'Y', '2022-01-01 21:36:29', 1339550467939639299, '2022-01-01 23:22:12', 1339550467939639299);
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for sys_theme_template
|
||||
-- ----------------------------
|
||||
CREATE TABLE `sys_theme_template` (
|
||||
`template_id` bigint(20) NOT NULL COMMENT '主键',
|
||||
`template_name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '主题名称',
|
||||
`template_code` varchar(40) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '主题编码',
|
||||
`template_type` tinyint(4) NOT NULL COMMENT '主题类型:1-系统类型,2-业务类型',
|
||||
`status_flag` char(1) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '启用状态:Y-启用,N-禁用',
|
||||
`create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
|
||||
`create_user` bigint(20) NULL DEFAULT NULL COMMENT '创建人',
|
||||
`update_time` datetime(0) NULL DEFAULT NULL COMMENT '修改时间',
|
||||
`update_user` bigint(20) NULL DEFAULT NULL COMMENT '修改人',
|
||||
PRIMARY KEY (`template_id`) USING BTREE
|
||||
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '系统主题-模板' ROW_FORMAT = Dynamic;
|
||||
|
||||
-- ----------------------------
|
||||
-- Records of sys_theme_template
|
||||
-- ----------------------------
|
||||
INSERT INTO `sys_theme_template` VALUES (1477171926286020610, 'Guns后台管理系统模板', 'GUNS_PLATFORM', 1, 'Y', '2022-01-01 14:56:46', 1339550467939639299, '2022-01-01 15:11:27', 1339550467939639299);
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for sys_theme_template_field
|
||||
-- ----------------------------
|
||||
CREATE TABLE `sys_theme_template_field` (
|
||||
`field_id` bigint(20) NOT NULL COMMENT '主键',
|
||||
`field_name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '属性名称',
|
||||
`field_code` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '属性编码',
|
||||
`field_type` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '属性展示类型(字典维护),例如:图片,文本等类型',
|
||||
`field_required` char(1) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '是否必填:Y-必填,N-非必填',
|
||||
`field_length` int(11) NULL DEFAULT NULL COMMENT '属性值长度',
|
||||
`field_description` varchar(2000) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '属性描述',
|
||||
`create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
|
||||
`create_user` bigint(20) NULL DEFAULT NULL COMMENT '创建人',
|
||||
`update_time` datetime(0) NULL DEFAULT NULL COMMENT '修改时间',
|
||||
`update_user` bigint(20) NULL DEFAULT NULL COMMENT '修改人',
|
||||
PRIMARY KEY (`field_id`) USING BTREE
|
||||
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '系统主题-模板属性' ROW_FORMAT = Dynamic;
|
||||
|
||||
-- ----------------------------
|
||||
-- Records of sys_theme_template_field
|
||||
-- ----------------------------
|
||||
INSERT INTO `sys_theme_template_field` VALUES (1473949204011819009, '平台名称', 'GUNS_MGR_NAME', 'string', 'Y', 10, 'Guns后台管理系统左上角名称', '2021-12-23 17:30:50', 1339550467939639299, '2022-01-01 14:30:42', 1339550467939639299);
|
||||
INSERT INTO `sys_theme_template_field` VALUES (1473949858369380354, '登录页背景图片', 'GUNS_MGR_LOGIN_BACKGROUND_IMG', 'file', 'Y', NULL, 'Guns后台管理系统登录页图片', '2021-12-23 17:33:26', 1339550467939639299, '2022-01-01 14:32:14', 1339550467939639299);
|
||||
INSERT INTO `sys_theme_template_field` VALUES (1473950190365319169, '平台LOGO', 'GUNS_MGR_LOGO', 'file', 'Y', NULL, 'Guns后台管理系统左上角logo', '2021-12-23 17:34:45', 1339550467939639299, '2022-01-01 14:46:07', 1339550467939639299);
|
||||
INSERT INTO `sys_theme_template_field` VALUES (1473950675281387521, '浏览器Icon', 'GUNS_MGR_FAVICON', 'file', 'Y', NULL, 'Guns后台管理系统标签栏图标', '2021-12-23 17:36:40', 1339550467939639299, '2022-01-01 14:46:56', 1339550467939639299);
|
||||
INSERT INTO `sys_theme_template_field` VALUES (1473951200521494529, '页脚文字', 'GUNS_MGR_FOOTER_TEXT', 'string', 'Y', 100, 'Guns后台管理系统页脚文字', '2021-12-23 17:38:46', 1339550467939639299, '2022-01-01 14:48:08', 1339550467939639299);
|
||||
INSERT INTO `sys_theme_template_field` VALUES (1473951616827138050, '备案号', 'GUNS_MGR_BEI_NO', 'string', 'N', 100, 'Guns后台管理系统底部备案号', '2021-12-23 17:40:25', 1339550467939639299, '2022-01-01 14:48:46', 1339550467939639299);
|
||||
INSERT INTO `sys_theme_template_field` VALUES (1477170929413206017, '备案号跳转链接', 'GUNS_MGR_BEI_URL', 'string', 'N', 200, 'Guns后台管理系统备案号跳转到的链接', '2022-01-01 14:52:49', 1339550467939639299, '2022-01-01 14:55:28', 1339550467939639299);
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for sys_theme_template_rel
|
||||
-- ----------------------------
|
||||
CREATE TABLE `sys_theme_template_rel` (
|
||||
`relation_id` bigint(20) NOT NULL COMMENT '主键',
|
||||
`template_id` bigint(20) NOT NULL COMMENT '模板主键id',
|
||||
`field_code` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '属性编码',
|
||||
`create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
|
||||
`create_user` bigint(20) NULL DEFAULT NULL COMMENT '创建人',
|
||||
`update_time` datetime(0) NULL DEFAULT NULL COMMENT '修改时间',
|
||||
`update_user` bigint(20) NULL DEFAULT NULL COMMENT '修改人',
|
||||
PRIMARY KEY (`relation_id`) USING BTREE
|
||||
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '系统主题-模板配置关联关系' ROW_FORMAT = Dynamic;
|
||||
|
||||
-- ----------------------------
|
||||
-- Records of sys_theme_template_rel
|
||||
-- ----------------------------
|
||||
INSERT INTO `sys_theme_template_rel` VALUES (1477175606452236290, 1477171926286020610, 'GUNS_MGR_NAME', '2022-01-01 15:11:24', 1339550467939639299, NULL, NULL);
|
||||
INSERT INTO `sys_theme_template_rel` VALUES (1477175606519345154, 1477171926286020610, 'GUNS_MGR_LOGIN_BACKGROUND_IMG', '2022-01-01 15:11:24', 1339550467939639299, NULL, NULL);
|
||||
INSERT INTO `sys_theme_template_rel` VALUES (1477175606519345155, 1477171926286020610, 'GUNS_MGR_LOGO', '2022-01-01 15:11:24', 1339550467939639299, NULL, NULL);
|
||||
INSERT INTO `sys_theme_template_rel` VALUES (1477175606586454017, 1477171926286020610, 'GUNS_MGR_FAVICON', '2022-01-01 15:11:24', 1339550467939639299, NULL, NULL);
|
||||
INSERT INTO `sys_theme_template_rel` VALUES (1477175606653562881, 1477171926286020610, 'GUNS_MGR_FOOTER_TEXT', '2022-01-01 15:11:24', 1339550467939639299, NULL, NULL);
|
||||
INSERT INTO `sys_theme_template_rel` VALUES (1477175606720671746, 1477171926286020610, 'GUNS_MGR_BEI_NO', '2022-01-01 15:11:24', 1339550467939639299, NULL, NULL);
|
||||
INSERT INTO `sys_theme_template_rel` VALUES (1477175606787780610, 1477171926286020610, 'GUNS_MGR_BEI_URL', '2022-01-01 15:11:24', 1339550467939639299, NULL, NULL);
|
||||
|
||||
INSERT INTO `sys_menu`(`menu_id`, `menu_parent_id`, `menu_pids`, `menu_name`, `menu_code`, `app_code`, `menu_sort`, `status_flag`, `remark`, `layui_path`, `layui_icon`, `layui_visible`, `antdv_router`, `antdv_icon`, `antdv_component`, `antdv_link_open_type`, `antdv_link_url`, `antdv_active_url`, `antdv_visible`, `del_flag`, `create_time`, `create_user`, `update_time`, `update_user`) VALUES (1472812560315629569, -1, '[-1],', '主题功能', 'theme', 'systemApp', 100.00, 1, NULL, NULL, NULL, 'Y', '/themeManage', 'SlackOutlined', '', 0, NULL, NULL, 'Y', 'N', '2021-12-20 14:14:13', 1339550467939639299, '2021-12-20 14:15:29', 1339550467939639299);
|
||||
INSERT INTO `sys_menu`(`menu_id`, `menu_parent_id`, `menu_pids`, `menu_name`, `menu_code`, `app_code`, `menu_sort`, `status_flag`, `remark`, `layui_path`, `layui_icon`, `layui_visible`, `antdv_router`, `antdv_icon`, `antdv_component`, `antdv_link_open_type`, `antdv_link_url`, `antdv_active_url`, `antdv_visible`, `del_flag`, `create_time`, `create_user`, `update_time`, `update_user`) VALUES (1472814801600692226, 1472812560315629569, '[-1],[1472812560315629569],', '主题管理', 'theme_manage', 'systemApp', 15.00, 1, NULL, NULL, NULL, 'Y', '/themeManage/theme', 'PictureOutlined', '/orginfo/theme/theme', 0, NULL, NULL, 'Y', 'N', '2021-12-20 14:23:07', 1339550467939639299, '2021-12-20 14:24:58', 1339550467939639299);
|
||||
INSERT INTO `sys_menu`(`menu_id`, `menu_parent_id`, `menu_pids`, `menu_name`, `menu_code`, `app_code`, `menu_sort`, `status_flag`, `remark`, `layui_path`, `layui_icon`, `layui_visible`, `antdv_router`, `antdv_icon`, `antdv_component`, `antdv_link_open_type`, `antdv_link_url`, `antdv_active_url`, `antdv_visible`, `del_flag`, `create_time`, `create_user`, `update_time`, `update_user`) VALUES (1472815202244804610, 1472812560315629569, '[-1],[1472812560315629569],', '主题模板', 'theme_template', 'systemApp', 16.00, 1, NULL, NULL, NULL, 'Y', '/themeManage/template', 'ShopOutlined', '/orginfo/theme/template', 0, NULL, NULL, 'Y', 'N', '2021-12-20 14:24:43', 1339550467939639299, '2021-12-20 14:24:53', 1339550467939639299);
|
||||
INSERT INTO `sys_menu`(`menu_id`, `menu_parent_id`, `menu_pids`, `menu_name`, `menu_code`, `app_code`, `menu_sort`, `status_flag`, `remark`, `layui_path`, `layui_icon`, `layui_visible`, `antdv_router`, `antdv_icon`, `antdv_component`, `antdv_link_open_type`, `antdv_link_url`, `antdv_active_url`, `antdv_visible`, `del_flag`, `create_time`, `create_user`, `update_time`, `update_user`) VALUES (1475271836221173761, 1472812560315629569, '[-1],[1472812560315629569],', '主题属性', 'theme_field', 'systemApp', 18.00, 1, NULL, NULL, NULL, 'Y', '/themeManage/themeField', 'CopyOutlined', '/orginfo/theme/field', 0, NULL, NULL, 'Y', 'N', '2021-12-27 09:06:30', 1339550467939639299, '2021-12-27 09:06:56', 1339550467939639299);
|
||||
|
||||
SET FOREIGN_KEY_CHECKS = 1;
|
|
@ -0,0 +1 @@
|
|||
UPDATE `sys_config` SET `config_value` = concat(config_value, ',/sysTheme/add,/sysTheme/edit') WHERE `config_code` = 'SYS_XSS_URL_EXCLUSIONS';
|
File diff suppressed because one or more lines are too long
|
@ -0,0 +1 @@
|
|||
UPDATE `sys_menu` SET `layui_visible` = 'N' WHERE `menu_code` like 'theme%'
|
|
@ -0,0 +1 @@
|
|||
INSERT INTO `sys_config` VALUES (1481244035229200386, '全局日志记录,如果开启则所有请求都将记录日志', 'SYS_LOG_GLOBAL_FLAG', 'false', 'Y', NULL, 1, 'file_config', 'N', NULL, NULL, NULL, NULL);
|
|
@ -0,0 +1 @@
|
|||
ALTER TABLE `sys_app` ADD COLUMN `app_sort` int NULL COMMENT '排序' AFTER `status_flag`;
|
|
@ -0,0 +1 @@
|
|||
ALTER TABLE `sys_user` ADD COLUMN `login_count` int NULL DEFAULT 1 COMMENT '登录次数' AFTER `status_flag`;
|
|
@ -0,0 +1 @@
|
|||
INSERT INTO `sys_config` VALUES (1481244035229200999, '帐号密码错误次数校验开关', 'ACCOUNT_ERROR_DETECTION', 'false', 'Y', NULL, 1, 'auth_config', 'N', NULL, NULL, NULL, NULL);
|
|
@ -0,0 +1,2 @@
|
|||
-- 更新个人信息菜单,增加图标
|
||||
UPDATE `sys_menu` SET `menu_parent_id` = -1, `menu_pids` = '[-1],', `menu_name` = '个人信息', `menu_code` = 'personal_info', `app_code` = 'systemApp', `menu_sort` = 80.00, `status_flag` = 1, `remark` = NULL, `layui_path` = '', `layui_icon` = NULL, `layui_visible` = 'N', `antdv_router` = '/personal/info', `antdv_icon` = 'UserOutlined', `antdv_component` = '/personal/info', `antdv_link_open_type` = 0, `antdv_link_url` = NULL, `antdv_active_url` = NULL, `antdv_visible` = 'N', `del_flag` = 'N', `create_time` = '2020-12-29 19:51:14', `create_user` = NULL, `update_time` = '2022-02-11 23:11:18', `update_user` = 1339550467939639299 WHERE `menu_id` = 1339550467939639390;
|
|
@ -0,0 +1,57 @@
|
|||
SET NAMES utf8mb4;
|
||||
SET FOREIGN_KEY_CHECKS = 0;
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for sys_statistics_count
|
||||
-- ----------------------------
|
||||
CREATE TABLE `sys_statistics_count` (
|
||||
`stat_count_id` bigint(20) NOT NULL COMMENT '主键ID',
|
||||
`user_id` bigint(20) NULL DEFAULT NULL COMMENT '用户id',
|
||||
`stat_url_id` bigint(20) NULL DEFAULT NULL COMMENT '访问的地址',
|
||||
`stat_count` int(11) NULL DEFAULT NULL COMMENT '访问的次数',
|
||||
`create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
|
||||
`create_user` bigint(20) NULL DEFAULT NULL COMMENT '创建人',
|
||||
`update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间',
|
||||
`update_user` bigint(20) NULL DEFAULT NULL COMMENT '更新人',
|
||||
PRIMARY KEY (`stat_count_id`) USING BTREE
|
||||
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '常用功能的统计次数' ROW_FORMAT = Dynamic;
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for sys_statistics_url
|
||||
-- ----------------------------
|
||||
CREATE TABLE `sys_statistics_url` (
|
||||
`stat_url_id` bigint(20) NOT NULL COMMENT '主键ID',
|
||||
`stat_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '被统计名称',
|
||||
`stat_menu_id` bigint(20) NULL DEFAULT NULL COMMENT '被统计菜单ID',
|
||||
`stat_url` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '被统计的URL',
|
||||
`always_show` char(1) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '是否常驻显示,Y-是,N-否',
|
||||
`create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
|
||||
`create_user` bigint(20) NULL DEFAULT NULL COMMENT '创建人',
|
||||
`update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间',
|
||||
`update_user` bigint(20) NULL DEFAULT NULL COMMENT '更新人',
|
||||
PRIMARY KEY (`stat_url_id`) USING BTREE
|
||||
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '常用功能列表' ROW_FORMAT = Dynamic;
|
||||
|
||||
-- ----------------------------
|
||||
-- Records of sys_statistics_url
|
||||
-- ----------------------------
|
||||
INSERT INTO `sys_statistics_url` VALUES (1492345345508683778, '个人信息', '1339550467939639390', '/sysUser/currentUserInfo', 'Y', NULL, NULL, NULL, NULL);
|
||||
INSERT INTO `sys_statistics_url` VALUES (1492345345508683779, '用户管理', '1339550467939639305', '/sysUser/page', 'N', NULL, NULL, NULL, NULL);
|
||||
INSERT INTO `sys_statistics_url` VALUES (1492345345508683780, '职位管理', '1339550467939639307', '/hrPosition/page', 'N', NULL, NULL, NULL, NULL);
|
||||
INSERT INTO `sys_statistics_url` VALUES (1492345345508683781, '应用管理', '1339550467939639309', '/sysApp/page', 'N', NULL, NULL, NULL, NULL);
|
||||
INSERT INTO `sys_statistics_url` VALUES (1492345345508683782, '角色管理', '1339550467939639311', '/sysRole/page', 'N', NULL, NULL, NULL, NULL);
|
||||
INSERT INTO `sys_statistics_url` VALUES (1492345345508683783, '菜单管理', '1339550467939639310', '/sysMenu/list', 'N', NULL, NULL, NULL, NULL);
|
||||
INSERT INTO `sys_statistics_url` VALUES (1492345345508683784, '系统配置', '1339550467939639314', '/sysConfig/page', 'N', NULL, NULL, NULL, NULL);
|
||||
INSERT INTO `sys_statistics_url` VALUES (1492345345508683785, '字典管理', '1339550467939639315', '/dict/page', 'N', NULL, NULL, NULL, NULL);
|
||||
INSERT INTO `sys_statistics_url` VALUES (1492345345508683786, '在线用户', '1339550467939639320', '/sysUser/onlineUserList', 'N', NULL, NULL, NULL, NULL);
|
||||
INSERT INTO `sys_statistics_url` VALUES (1492345345508683787, '定时任务', '1339550467939639321', '/sysTimers/page', 'N', NULL, NULL, NULL, NULL);
|
||||
INSERT INTO `sys_statistics_url` VALUES (1492345345508683788, '文件管理', '1339550467939639318', '/sysFileInfo/fileInfoListPage', 'N', NULL, NULL, NULL, NULL);
|
||||
INSERT INTO `sys_statistics_url` VALUES (1492345345508683789, '多数据源', '1339550467939639335', '/databaseInfo/page', 'N', NULL, NULL, NULL, NULL);
|
||||
INSERT INTO `sys_statistics_url` VALUES (1492345345508683790, '操作日志', '1339550467939639319', '/logManager/page', 'N', NULL, NULL, NULL, NULL);
|
||||
INSERT INTO `sys_statistics_url` VALUES (1492345345508683791, '登录日志', '1339550467939639334', '/loginLog/page', 'N', NULL, NULL, NULL, NULL);
|
||||
INSERT INTO `sys_statistics_url` VALUES (1492345345508683792, '通知发布', '1339550467939639351', '/sysNotice/page', 'N', NULL, NULL, NULL, NULL);
|
||||
INSERT INTO `sys_statistics_url` VALUES (1492345345508683793, '我的消息', '1339550467939639352', '/sysMessage/page', 'N', NULL, NULL, NULL, NULL);
|
||||
|
||||
INSERT INTO `sys_timers`(`timer_id`, `timer_name`, `action_class`, `cron`, `params`, `job_status`, `remark`, `del_flag`, `create_time`, `create_user`, `update_time`, `update_user`) VALUES (1492358213574615041, '常用功能统计', 'cn.stylefeng.roses.kernel.system.modular.home.timer.InterfaceStatisticsTimer', '0/30 * * * * ? ', NULL, 1, '定时常用功能统计刷新到数据库', 'N', '2022-02-12 12:41:39', 1339550467939639299, NULL, NULL);
|
||||
|
||||
SET FOREIGN_KEY_CHECKS = 1;
|
|
@ -0,0 +1,7 @@
|
|||
delete from sys_menu where menu_id in ('1399365117052919810', '1399366406616850433', '1339550467939639316');
|
||||
|
||||
DROP TABLE api_group;
|
||||
DROP TABLE api_resource;
|
||||
DROP TABLE api_resource_field;
|
||||
|
||||
delete from sys_role_menu where menu_id in ('1399365117052919810', '1399366406616850433', '1339550467939639316');
|
|
@ -0,0 +1 @@
|
|||
INSERT INTO `sys_config`(`config_id`, `config_name`, `config_code`, `config_value`, `sys_flag`, `remark`, `status_flag`, `group_code`, `del_flag`, `create_time`, `create_user`, `update_time`, `update_user`) VALUES (1402549781675610505, '开发模式开关', 'DEVOPS_DEV_SWITCH_STATUS', 'true', 'Y', '在开发模式下,允许devops平台访问某些系统接口', 1, 'sys_config', 'N', NULL, NULL, NULL, NULL);
|
|
@ -0,0 +1 @@
|
|||
UPDATE `sys_app` SET `app_name` = '系统应用', `app_code` = 'systemApp', `app_icon` = 'SettingOutlined', `active_flag` = 'Y', `status_flag` = 1, `app_sort` = NULL, `del_flag` = 'N', `create_time` = '2020-03-25 19:07:00', `create_user` = 1265476890672672808, `update_time` = '2021-08-25 16:00:07', `update_user` = 1339550467939639299 WHERE `app_id` = 1265476890672672821;
|
|
@ -246,7 +246,7 @@
|
|||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div class="login-copyright">copyright © 2020 stylefeng.cn all rights reserved.</div>
|
||||
<div class="login-copyright">copyright © 2022 javaguns.com all rights reserved.</div>
|
||||
|
||||
@/* 加入contextPath属性和session超时的配置 */
|
||||
<script type="text/javascript">
|
||||
|
@ -355,4 +355,4 @@
|
|||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
</html>
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
@/* 底部 */
|
||||
<div class="layui-footer layui-text">
|
||||
copyright © 2020 <a href="https://www.stylefeng.cn" target="_blank">GUNS</a> all rights reserved.
|
||||
copyright © 2022 <a href="https://www.javaguns.com" target="_blank">GUNS</a> all rights reserved.
|
||||
<span class="pull-right">Version 7.0</span>
|
||||
</div>
|
||||
|
|
|
@ -206,7 +206,7 @@
|
|||
</form>
|
||||
|
||||
</div>
|
||||
<div class="login-copyright">copyright © 2020 stylefeng.cn all rights reserved.</div>
|
||||
<div class="login-copyright">copyright © 2022 javaguns.com all rights reserved.</div>
|
||||
|
||||
@/* 加入contextPath属性和session超时的配置 */
|
||||
<script type="text/javascript">
|
||||
|
|
|
@ -736,7 +736,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td>官方地址</td>
|
||||
<td><a href="https://www.stylefeng.cn/" target="_blank">https://www.stylefeng.cn</a></td>
|
||||
<td><a href="https://www.javaguns.com/" target="_blank">https://www.javaguns.com</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>gitee地址</td>
|
||||
|
@ -750,21 +750,21 @@
|
|||
<td>获取源码</td>
|
||||
<td>
|
||||
<a href="https://gitee.com/stylefeng/guns" target="_blank" class="layui-btn layui-btn-sm">前往官网</a>
|
||||
<a href="https://www.stylefeng.cn/" target="_blank" class="layui-btn layui-btn-danger layui-btn-sm">获取VIP</a>
|
||||
<a href="https://www.javaguns.com/" target="_blank" class="layui-btn layui-btn-danger layui-btn-sm">获取VIP</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>获取文档</td>
|
||||
<td>
|
||||
<a href="https://gitee.com/stylefeng/guns/wikis/Guns%E6%8A%80%E6%9C%AF%E6%96%87%E6%A1%A3?sort_id=200535" target="_blank" class="layui-btn layui-btn-sm">免费文档</a>
|
||||
<a href="https://www.stylefeng.cn/doc/guns" target="_blank" class="layui-btn layui-btn-danger layui-btn-sm">付费文档(更全)</a>
|
||||
<a href="https://www.javaguns.com/doc/guns" target="_blank" class="layui-btn layui-btn-danger layui-btn-sm">付费文档(更全)</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>获取视频教程</td>
|
||||
<td>
|
||||
<a href="https://gitee.com/stylefeng/guns/wikis/Guns%E8%A7%86%E9%A2%91%E6%95%99%E7%A8%8B?sort_id=55850" target="_blank" class="layui-btn layui-btn-sm">免费视频</a>
|
||||
<a href="https://www.stylefeng.cn/video/roses" target="_blank" class="layui-btn layui-btn-danger layui-btn-sm">付费视频(更全)</a>
|
||||
<a href="https://www.javaguns.com/video/roses" target="_blank" class="layui-btn layui-btn-danger layui-btn-sm">付费视频(更全)</a>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
@ -907,4 +907,4 @@
|
|||
</script>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
</html>
|
||||
|
|
|
@ -33,7 +33,7 @@
|
|||
<a class="more-menu-item" href="https://gitee.com/stylefeng/guns" target="_blank">
|
||||
<i class="layui-icon layui-icon-read" style="font-size: 19px;"></i> Guns码云官网
|
||||
</a>
|
||||
<a class="more-menu-item" href="https://www.stylefeng.cn" target="_blank">
|
||||
<a class="more-menu-item" href="https://www.javaguns.com" target="_blank">
|
||||
<i class="layui-icon layui-icon-tabs" style="font-size: 16px;"></i> stylefeng开源技术
|
||||
</a>
|
||||
<a class="more-menu-item" href="https://demo.easyweb.vip/theme" target="_blank">
|
||||
|
@ -223,4 +223,4 @@
|
|||
.set-item-ctrl > * {
|
||||
margin: 0;
|
||||
}
|
||||
</style>
|
||||
</style>
|
||||
|
|
|
@ -247,7 +247,7 @@
|
|||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div class="login-copyright">copyright © 2020 stylefeng.cn all rights reserved.</div>
|
||||
<div class="login-copyright">copyright © 2022 javaguns.com all rights reserved.</div>
|
||||
|
||||
@/* 加入contextPath属性和session超时的配置 */
|
||||
<script type="text/javascript">
|
||||
|
|
Loading…
Reference in New Issue