~
This commit is contained in:
172
mjkf-xinke-web-app/pom.xml
Normal file
172
mjkf-xinke-web-app/pom.xml
Normal file
@@ -0,0 +1,172 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<parent>
|
||||
<groupId>mjkf.xinke</groupId>
|
||||
<artifactId>mjkf-xinke-boot</artifactId>
|
||||
<version>1.0.0</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>mjkf-xinke-web-app</artifactId>
|
||||
<packaging>jar</packaging>
|
||||
<description>主启动模块</description>
|
||||
|
||||
<dependencies>
|
||||
|
||||
<!-- test -->
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-test</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
<!-- junit -->
|
||||
<dependency>
|
||||
<groupId>junit</groupId>
|
||||
<artifactId>junit</artifactId>
|
||||
<version>${junit.version}</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
<!-- mysql -->
|
||||
<dependency>
|
||||
<groupId>mysql</groupId>
|
||||
<artifactId>mysql-connector-java</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!-- postgresql -->
|
||||
<!--<dependency>
|
||||
<groupId>org.postgresql</groupId>
|
||||
<artifactId>postgresql</artifactId>
|
||||
</dependency>-->
|
||||
|
||||
<!-- oracle -->
|
||||
<!--<dependency>
|
||||
<groupId>com.oracle.database.jdbc</groupId>
|
||||
<artifactId>ojdbc8</artifactId>
|
||||
</dependency>-->
|
||||
<!--<dependency>
|
||||
<groupId>com.oracle.database.nls</groupId>
|
||||
<artifactId>orai18n</artifactId>
|
||||
</dependency>-->
|
||||
|
||||
<!-- mssql -->
|
||||
<!--<dependency>
|
||||
<groupId>com.microsoft.sqlserver</groupId>
|
||||
<artifactId>mssql-jdbc</artifactId>
|
||||
</dependency>-->
|
||||
|
||||
<!-- 达梦数据库 -->
|
||||
<!--<dependency>
|
||||
<groupId>com.dameng</groupId>
|
||||
<artifactId>DmJdbcDriver18</artifactId>
|
||||
</dependency>-->
|
||||
|
||||
<!-- 人大金仓数据库 -->
|
||||
<!--<dependency>
|
||||
<groupId>cn.com.kingbase</groupId>
|
||||
<artifactId>kingbase8</artifactId>
|
||||
</dependency>-->
|
||||
|
||||
<!-- 登录鉴权插件 -->
|
||||
<dependency>
|
||||
<groupId>mjkf.xinke</groupId>
|
||||
<artifactId>mjkf-xinke-plugin-auth</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!-- 业务功能插件 -->
|
||||
<dependency>
|
||||
<groupId>mjkf.xinke</groupId>
|
||||
<artifactId>mjkf-xinke-plugin-biz</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!-- C端功能插件 -->
|
||||
<dependency>
|
||||
<groupId>mjkf.xinke</groupId>
|
||||
<artifactId>mjkf-xinke-plugin-client</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!-- 多数据源插件 -->
|
||||
<dependency>
|
||||
<groupId>mjkf.xinke</groupId>
|
||||
<artifactId>mjkf-xinke-plugin-dbs</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!-- 开发工具插件 -->
|
||||
<dependency>
|
||||
<groupId>mjkf.xinke</groupId>
|
||||
<artifactId>mjkf-xinke-plugin-dev</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!-- 功能案例插件 -->
|
||||
<dependency>
|
||||
<groupId>mjkf.xinke</groupId>
|
||||
<artifactId>mjkf-xinke-plugin-exm</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!-- 工作流程插件 -->
|
||||
<dependency>
|
||||
<groupId>mjkf.xinke</groupId>
|
||||
<artifactId>mjkf-xinke-plugin-flw</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!-- 支付功能插件 -->
|
||||
<dependency>
|
||||
<groupId>mjkf.xinke</groupId>
|
||||
<artifactId>mjkf-xinke-plugin-pay</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!-- 代码生成插件 -->
|
||||
<dependency>
|
||||
<groupId>mjkf.xinke</groupId>
|
||||
<artifactId>mjkf-xinke-plugin-gen</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!-- 移动端管理插件 -->
|
||||
<dependency>
|
||||
<groupId>mjkf.xinke</groupId>
|
||||
<artifactId>mjkf-xinke-plugin-mobile</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!-- 系统功能插件 -->
|
||||
<dependency>
|
||||
<groupId>mjkf.xinke</groupId>
|
||||
<artifactId>mjkf-xinke-plugin-sys</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!-- 动态租户插件 -->
|
||||
<dependency>
|
||||
<groupId>mjkf.xinke</groupId>
|
||||
<artifactId>mjkf-xinke-plugin-ten</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!-- 报表设计插件 -->
|
||||
<dependency>
|
||||
<groupId>mjkf.xinke</groupId>
|
||||
<artifactId>mjkf-xinke-plugin-urp</artifactId>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-maven-plugin</artifactId>
|
||||
<version>2.5.12</version>
|
||||
<configuration>
|
||||
<includeSystemScope>true</includeSystemScope>
|
||||
</configuration>
|
||||
<executions>
|
||||
<execution>
|
||||
<goals>
|
||||
<goal>repackage</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
</project>
|
||||
52
mjkf-xinke-web-app/src/main/java/mjkf/xinke/Application.java
Normal file
52
mjkf-xinke-web-app/src/main/java/mjkf/xinke/Application.java
Normal file
@@ -0,0 +1,52 @@
|
||||
|
||||
package mjkf.xinke;
|
||||
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.boot.Banner;
|
||||
import org.springframework.boot.SpringApplication;
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
import springfox.documentation.swagger2.annotations.EnableSwagger2WebMvc;
|
||||
|
||||
/**
|
||||
* SpringBoot方式启动类
|
||||
*
|
||||
*
|
||||
* @date 2021/12/18 16:57
|
||||
*/
|
||||
@Slf4j
|
||||
@EnableSwagger2WebMvc
|
||||
@RestController
|
||||
@SpringBootApplication
|
||||
public class Application {
|
||||
|
||||
/* 解决druid 日志报错:discard long time none received connection:xxx */
|
||||
static {
|
||||
System.setProperty("druid.mysql.usePingMethod","false");
|
||||
}
|
||||
|
||||
/**
|
||||
* 主启动函数
|
||||
*
|
||||
*
|
||||
* @date 2022/7/30 21:42
|
||||
*/
|
||||
public static void main(String[] args) {
|
||||
SpringApplication springApplication = new SpringApplication(Application.class);
|
||||
springApplication.setBannerMode(Banner.Mode.OFF);
|
||||
springApplication.run(args);
|
||||
log.info(">>> {}", Application.class.getSimpleName().toUpperCase() + " STARTING SUCCESS");
|
||||
}
|
||||
|
||||
/**
|
||||
* 首页
|
||||
*
|
||||
*
|
||||
* @date 2022/7/8 14:22
|
||||
**/
|
||||
@GetMapping("/")
|
||||
public String index() {
|
||||
return "WELCOME";
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,65 @@
|
||||
|
||||
package mjkf.xinke.core.config;
|
||||
|
||||
import com.alibaba.druid.spring.boot.autoconfigure.properties.DruidStatProperties;
|
||||
import com.alibaba.druid.util.Utils;
|
||||
import org.springframework.boot.web.servlet.FilterRegistrationBean;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import javax.servlet.*;
|
||||
import java.io.IOException;
|
||||
|
||||
/**
|
||||
* druid配置
|
||||
*
|
||||
* @author diantu
|
||||
* @date 2023/06/30
|
||||
**/
|
||||
@Configuration
|
||||
public class DruidConfigure {
|
||||
|
||||
/**
|
||||
* 去除druid监控页面广告
|
||||
*/
|
||||
@SuppressWarnings({ "rawtypes", "unchecked" })
|
||||
@Bean
|
||||
public FilterRegistrationBean removeDruidAdFilterRegistrationBean(DruidStatProperties properties)
|
||||
{
|
||||
// 获取web监控页面的参数
|
||||
DruidStatProperties.StatViewServlet config = properties.getStatViewServlet();
|
||||
// 提取common.js的配置路径
|
||||
String pattern = config.getUrlPattern() != null ? config.getUrlPattern() : "/druid/*";
|
||||
String commonJsPattern = pattern.replaceAll("\\*", "js/common.js");
|
||||
final String filePath = "support/http/resources/js/common.js";
|
||||
// 创建filter进行过滤
|
||||
Filter filter = new Filter()
|
||||
{
|
||||
@Override
|
||||
public void init(FilterConfig filterConfig) throws ServletException
|
||||
{
|
||||
}
|
||||
@Override
|
||||
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
|
||||
throws IOException, ServletException
|
||||
{
|
||||
chain.doFilter(request, response);
|
||||
// 重置缓冲区,响应头不会被重置
|
||||
response.resetBuffer();
|
||||
// 获取common.js
|
||||
String text = Utils.readFromResource(filePath);
|
||||
// 正则替换banner, 除去底部的广告信息
|
||||
text = text.replaceAll("<a.*?banner\"></a><br/>", "");
|
||||
text = text.replaceAll("powered.*?shrek.wang</a>", "");
|
||||
response.getWriter().write(text);
|
||||
}
|
||||
@Override
|
||||
public void destroy()
|
||||
{
|
||||
}
|
||||
};
|
||||
FilterRegistrationBean registrationBean = new FilterRegistrationBean();
|
||||
registrationBean.setFilter(filter);
|
||||
registrationBean.addUrlPatterns(commonJsPattern);
|
||||
return registrationBean;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,618 @@
|
||||
|
||||
package mjkf.xinke.core.config;
|
||||
|
||||
import cn.dev33.satoken.context.SaHolder;
|
||||
import cn.dev33.satoken.context.model.SaResponse;
|
||||
import cn.dev33.satoken.filter.SaServletFilter;
|
||||
import cn.dev33.satoken.router.SaHttpMethod;
|
||||
import cn.dev33.satoken.router.SaRouter;
|
||||
import cn.dev33.satoken.stp.StpUtil;
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import cn.hutool.core.date.DateTime;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.ArrayUtil;
|
||||
import cn.hutool.core.util.CharsetUtil;
|
||||
import cn.hutool.core.util.EnumUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.http.ContentType;
|
||||
import cn.hutool.http.Header;
|
||||
import cn.hutool.json.JSONObject;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import org.apache.ibatis.mapping.DatabaseIdProvider;
|
||||
import org.apache.ibatis.reflection.MetaObject;
|
||||
import org.apache.ibatis.reflection.ReflectionException;
|
||||
import org.aspectj.lang.ProceedingJoinPoint;
|
||||
import org.aspectj.lang.annotation.Around;
|
||||
import org.aspectj.lang.annotation.Aspect;
|
||||
import org.aspectj.lang.annotation.Pointcut;
|
||||
import org.aspectj.lang.reflect.MethodSignature;
|
||||
import org.mybatis.spring.annotation.MapperScan;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.data.redis.connection.RedisConnectionFactory;
|
||||
import org.springframework.data.redis.core.RedisTemplate;
|
||||
import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
|
||||
import org.springframework.data.redis.serializer.StringRedisSerializer;
|
||||
import org.springframework.jdbc.support.JdbcUtils;
|
||||
import org.springframework.lang.NonNull;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.web.method.HandlerMethod;
|
||||
import org.springframework.web.servlet.HandlerInterceptor;
|
||||
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
|
||||
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
|
||||
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
|
||||
import mjkf.xinke.auth.core.util.StpClientUtil;
|
||||
import mjkf.xinke.common.annotation.CommonNoRepeat;
|
||||
import mjkf.xinke.common.annotation.CommonWrapper;
|
||||
import mjkf.xinke.common.cache.CommonCacheOperator;
|
||||
import mjkf.xinke.common.enums.CommonDeleteFlagEnum;
|
||||
import mjkf.xinke.common.exception.CommonException;
|
||||
import mjkf.xinke.common.listener.CommonDataChangeEventCenter;
|
||||
import mjkf.xinke.common.listener.CommonDataChangeListener;
|
||||
import mjkf.xinke.common.pojo.CommonResult;
|
||||
import mjkf.xinke.common.pojo.CommonWrapperInterface;
|
||||
import mjkf.xinke.common.util.CommonTimeFormatUtil;
|
||||
import mjkf.xinke.core.handler.GlobalExceptionUtil;
|
||||
import mjkf.xinke.sys.core.enums.SysBuildInEnum;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import javax.sql.DataSource;
|
||||
import java.lang.reflect.Array;
|
||||
import java.lang.reflect.Method;
|
||||
import java.sql.Connection;
|
||||
import java.sql.SQLException;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* Snowy配置
|
||||
*
|
||||
*
|
||||
* @date 2021/10/9 14:24
|
||||
**/
|
||||
@Configuration
|
||||
@MapperScan(basePackages = {"mjkf.xinke.**.mapper, com.bstek.**.mapper"})
|
||||
public class GlobalConfigure implements WebMvcConfigurer {
|
||||
|
||||
private static final String COMMON_REPEAT_SUBMIT_CACHE_KEY = "common-repeatSubmit:";
|
||||
|
||||
@Resource
|
||||
private CommonCacheOperator commonCacheOperator;
|
||||
|
||||
/**
|
||||
* 无需登录的接口地址集合
|
||||
*/
|
||||
private static final String[] NO_LOGIN_PATH_ARR = {
|
||||
/* 主入口 */
|
||||
"/",
|
||||
|
||||
/* 静态资源 */
|
||||
"/favicon.ico",
|
||||
"/doc.html",
|
||||
"/webjars/**",
|
||||
"/swagger-resources/**",
|
||||
"/v2/api-docs",
|
||||
"/v2/api-docs-ext",
|
||||
"/configuration/ui",
|
||||
"/configuration/security",
|
||||
"/ureport/**",
|
||||
"/druid/**",
|
||||
"/images/**",
|
||||
|
||||
/* 认证相关 */
|
||||
"/auth/c/getPicCaptcha",
|
||||
"/auth/c/getPhoneValidCode",
|
||||
"/auth/c/doLogin",
|
||||
"/auth/c/doLoginByPhone",
|
||||
|
||||
"/auth/b/getPicCaptcha",
|
||||
"/auth/b/getPhoneValidCode",
|
||||
"/auth/b/doLogin",
|
||||
"/auth/b/doLoginByPhone",
|
||||
|
||||
/* 三方登录相关 */
|
||||
"/auth/third/render",
|
||||
"/auth/third/callback",
|
||||
|
||||
/* 系统基础配置 */
|
||||
"/dev/config/sysBaseList",
|
||||
|
||||
/* 系统字典树 */
|
||||
"/dev/dict/tree",
|
||||
|
||||
/* 文件下载 */
|
||||
"/dev/file/download",
|
||||
|
||||
/* 用户个人中心相关 */
|
||||
"/sys/userCenter/getPicCaptcha",
|
||||
"/sys/userCenter/findPasswordGetPhoneValidCode",
|
||||
"/sys/userCenter/findPasswordGetEmailValidCode",
|
||||
"/sys/userCenter/findPasswordByPhone",
|
||||
"/sys/userCenter/findPasswordByEmail",
|
||||
|
||||
/* 租户选择器*/
|
||||
"/ten/storage/tenSelector",
|
||||
|
||||
/* 支付相关回调通知 */
|
||||
"/pay/ali/notifyUrl",
|
||||
"/pay/wx/notifyUrl",
|
||||
"/pay/wx/authNotifyUrl",
|
||||
"/pay/wx/jsPay",
|
||||
"/pay/order/sample/doCreateOrder",
|
||||
};
|
||||
|
||||
/**
|
||||
* 仅超管使用的接口地址集合
|
||||
*/
|
||||
private static final String[] SUPER_PERMISSION_PATH_ARR = {
|
||||
"/auth/session/**",
|
||||
"/auth/third/page",
|
||||
"/client/user/**",
|
||||
"/sys/org/**",
|
||||
"/sys/position/**",
|
||||
"/sys/button/**",
|
||||
"/sys/menu/**",
|
||||
"/sys/module/**",
|
||||
"/sys/spa/**",
|
||||
"/sys/role/**",
|
||||
"/sys/user/**",
|
||||
"/dev/config/**",
|
||||
"/dev/dict/**",
|
||||
"/dev/email/page",
|
||||
"/dev/email/delete",
|
||||
"/dev/email/detail",
|
||||
"/dev/file/page",
|
||||
"/dev/file/list",
|
||||
"/dev/file/delete",
|
||||
"/dev/file/detail",
|
||||
"/dev/job/**",
|
||||
"/dev/log/**",
|
||||
"/dev/message/page",
|
||||
"/dev/message/delete",
|
||||
"/dev/message/detail",
|
||||
"/dev/monitor/**",
|
||||
"/dev/sms/page",
|
||||
"/dev/sms/delete",
|
||||
"/dev/sms/detail",
|
||||
"/gen/basic/**",
|
||||
"/gen/config/**",
|
||||
"/mobile/menu/**",
|
||||
"/mobile/module/**",
|
||||
"/flw/model/**",
|
||||
"/flw/templatePrint/**",
|
||||
"/flw/templateSn/**",
|
||||
"/pay/**",
|
||||
"/urp/**",
|
||||
"/dbs/**",
|
||||
"/ten/"
|
||||
};
|
||||
|
||||
/**
|
||||
* B端要排除的,相当于C端要认证的
|
||||
*/
|
||||
private static final String[] CLIENT_USER_PERMISSION_PATH_ARR = {
|
||||
"/auth/c/**",
|
||||
"/client/c/**"
|
||||
};
|
||||
|
||||
/**
|
||||
* 注册跨域过滤器
|
||||
*/
|
||||
@Bean
|
||||
public SaServletFilter getSaServletFilter() {
|
||||
return new SaServletFilter()
|
||||
// 指定拦截路由
|
||||
.addInclude("/**")
|
||||
|
||||
// 设置鉴权的接口
|
||||
.setAuth(r -> {
|
||||
// B端的接口校验B端登录
|
||||
SaRouter.match("/**")
|
||||
// 排除无需登录接口
|
||||
.notMatch(CollectionUtil.newArrayList(NO_LOGIN_PATH_ARR))
|
||||
// 排除C端认证接口
|
||||
.notMatch(CollectionUtil.newArrayList(CLIENT_USER_PERMISSION_PATH_ARR))
|
||||
// 校验B端登录
|
||||
.check(r1 -> StpUtil.checkLogin());
|
||||
|
||||
// C端的接口校验C端登录
|
||||
SaRouter.match("/**")
|
||||
// 排除无需登录接口
|
||||
.notMatch(CollectionUtil.newArrayList(NO_LOGIN_PATH_ARR))
|
||||
// 匹配C端认证接口
|
||||
.match(CollectionUtil.newArrayList(CLIENT_USER_PERMISSION_PATH_ARR))
|
||||
// 校验C端登录
|
||||
.check(r1 -> StpClientUtil.checkLogin());
|
||||
|
||||
// B端的超管接口校验B端超管角色
|
||||
SaRouter.match("/**")
|
||||
// 排除无需登录接口
|
||||
.notMatch(CollectionUtil.newArrayList(NO_LOGIN_PATH_ARR))
|
||||
// 匹配超管接口
|
||||
.match(CollectionUtil.newArrayList(SUPER_PERMISSION_PATH_ARR))
|
||||
// 校验B端超管角色
|
||||
.check(r1 -> StpUtil.checkRole(SysBuildInEnum.BUILD_IN_ROLE_CODE.getValue()));
|
||||
})
|
||||
|
||||
// 前置函数:在每次认证函数之前执行
|
||||
.setBeforeAuth(obj -> {
|
||||
|
||||
// ---------- 设置跨域响应头 ----------
|
||||
SaHolder.getResponse()
|
||||
|
||||
// 是否可以在iframe显示视图: DENY=不可以 | SAMEORIGIN=同域下可以 | ALLOW-FROM uri=指定域名下可以
|
||||
// .setHeader("X-Frame-Options", "SAMEORIGIN")
|
||||
|
||||
// 是否启用浏览器默认XSS防护: 0=禁用 | 1=启用 | 1; mode=block 启用, 并在检查到XSS攻击时,停止渲染页面
|
||||
.setHeader("X-XSS-Protection", "1; mode=block")
|
||||
// 禁用浏览器内容嗅探
|
||||
.setHeader("X-Content-Type-Options", "nosniff")
|
||||
// 允许指定域访问跨域资源
|
||||
.setHeader("Access-Control-Allow-Origin", "*")
|
||||
// 允许所有请求方式
|
||||
.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE")
|
||||
// 有效时间
|
||||
.setHeader("Access-Control-Max-Age", "3600")
|
||||
// 允许的header参数
|
||||
.setHeader("Access-Control-Allow-Headers", "*");
|
||||
|
||||
// 如果是预检请求,则立即返回到前端
|
||||
SaRouter.match(SaHttpMethod.OPTIONS)
|
||||
// OPTIONS预检请求,不做处理
|
||||
.free(r -> {})
|
||||
.back();
|
||||
})
|
||||
|
||||
// 异常处理
|
||||
.setError(e -> {
|
||||
// 由于过滤器中抛出的异常不进入全局异常处理,所以必须提供[异常处理函数]来处理[认证函数]里抛出的异常
|
||||
// 在[异常处理函数]里的返回值,将作为字符串输出到前端,此处统一转为JSON输出前端
|
||||
SaResponse saResponse = SaHolder.getResponse();
|
||||
saResponse.setHeader(Header.CONTENT_TYPE.getValue(), ContentType.JSON + ";charset=" + CharsetUtil.UTF_8);
|
||||
return GlobalExceptionUtil.getCommonResult((Exception) e);
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* RedisTemplate序列化
|
||||
*
|
||||
*
|
||||
* @date 2022/6/21 17:01
|
||||
**/
|
||||
@Bean
|
||||
public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
|
||||
RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
|
||||
redisTemplate.setConnectionFactory(redisConnectionFactory);
|
||||
StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();
|
||||
redisTemplate.setKeySerializer(stringRedisSerializer);
|
||||
redisTemplate.setHashKeySerializer(stringRedisSerializer);
|
||||
Jackson2JsonRedisSerializer<?> jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer<>(Object.class);
|
||||
redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);
|
||||
redisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer);
|
||||
redisTemplate.afterPropertiesSet();
|
||||
return redisTemplate;
|
||||
}
|
||||
|
||||
/**
|
||||
* 静态资源映射
|
||||
*
|
||||
*
|
||||
* @date 2022/7/25 15:16
|
||||
**/
|
||||
@Override
|
||||
public void addResourceHandlers(ResourceHandlerRegistry registry) {
|
||||
registry.addResourceHandler("doc.html").addResourceLocations("classpath:/META-INF/resources/");
|
||||
registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
|
||||
registry.addResourceHandler("/ureport/res/**").addResourceLocations("classpath:/META-INF/resources/ureport-asserts/");
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加节流防抖拦截器
|
||||
*
|
||||
*
|
||||
* @date 2022/6/20 15:18
|
||||
**/
|
||||
@Override
|
||||
public void addInterceptors(InterceptorRegistry registry) {
|
||||
registry.addInterceptor(new HandlerInterceptor() {
|
||||
@Override
|
||||
public boolean preHandle(@NonNull HttpServletRequest request, @NonNull HttpServletResponse response,
|
||||
@NonNull Object handler) throws Exception {
|
||||
if (handler instanceof HandlerMethod) {
|
||||
HandlerMethod handlerMethod = (HandlerMethod) handler;
|
||||
Method method = handlerMethod.getMethod();
|
||||
CommonNoRepeat annotation = method.getAnnotation(CommonNoRepeat.class);
|
||||
if (ObjectUtil.isNotEmpty(annotation)) {
|
||||
JSONObject repeatSubmitJsonObject = this.isRepeatSubmit(request, annotation);
|
||||
if (repeatSubmitJsonObject.getBool("repeat")) {
|
||||
response.setCharacterEncoding(CharsetUtil.UTF_8);
|
||||
response.setContentType(ContentType.JSON.toString());
|
||||
response.getWriter().write(JSONUtil.toJsonStr(CommonResult.error("请求过于频繁,请" + repeatSubmitJsonObject.getStr("time") + "后再试")));
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public JSONObject isRepeatSubmit(HttpServletRequest request, CommonNoRepeat annotation) {
|
||||
JSONObject jsonObject = JSONUtil.createObj();
|
||||
jsonObject.set("repeatParam", JSONUtil.toJsonStr(request.getParameterMap()));
|
||||
jsonObject.set("repeatTime", DateUtil.current());
|
||||
String url = request.getRequestURI();
|
||||
// 获取该接口缓存的限流数据
|
||||
Object cacheObj = commonCacheOperator.get(COMMON_REPEAT_SUBMIT_CACHE_KEY + url);
|
||||
if (ObjectUtil.isNotEmpty(cacheObj)) {
|
||||
JSONObject cacheJsonObject = JSONUtil.parseObj(cacheObj);
|
||||
if(cacheJsonObject.containsKey(url)) {
|
||||
JSONObject existRepeatJsonObject = cacheJsonObject.getJSONObject(url);
|
||||
// 如果与上次参数一致,且时间间隔小于要求的限流时长,则判定为重复提交
|
||||
if (jsonObject.getStr("repeatParam").equals(existRepeatJsonObject.getStr("repeatParam"))) {
|
||||
long interval = jsonObject.getLong("repeatTime") - existRepeatJsonObject.getLong("repeatTime");
|
||||
if(interval < annotation.interval()) {
|
||||
long secondsParam = (annotation.interval() - interval) / 1000;
|
||||
if(secondsParam == 0) {
|
||||
return JSONUtil.createObj().set("repeat", false);
|
||||
} else {
|
||||
return JSONUtil.createObj().set("repeat", true).set("time", CommonTimeFormatUtil.formatSeconds(secondsParam));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// 缓存最新的该接口的限流数据,为防止缓存的数据过多,缓存时效为1小时
|
||||
commonCacheOperator.put(COMMON_REPEAT_SUBMIT_CACHE_KEY + url, JSONUtil.createObj().set(url, jsonObject), 60 * 60);
|
||||
return JSONUtil.createObj().set("repeat", false);
|
||||
}
|
||||
}).addPathPatterns("/**");
|
||||
}
|
||||
|
||||
/**
|
||||
* 通用Wrapper的AOP
|
||||
*
|
||||
*
|
||||
* @date 2022/9/15 21:24
|
||||
*/
|
||||
@Component
|
||||
@Aspect
|
||||
public static class CommonWrapperAop {
|
||||
|
||||
/**
|
||||
* 切入点
|
||||
*
|
||||
*
|
||||
* @date 2022/9/15 21:27
|
||||
*/
|
||||
@Pointcut("@annotation(mjkf.xinke.common.annotation.CommonWrapper)")
|
||||
private void wrapperPointcut() {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 执行包装
|
||||
*
|
||||
*
|
||||
* @date 2022/9/15 21:27
|
||||
*/
|
||||
@Around("wrapperPointcut()")
|
||||
public Object doWrapper(ProceedingJoinPoint proceedingJoinPoint) throws Throwable {
|
||||
// 直接执行原有业务逻辑
|
||||
Object proceedResult = proceedingJoinPoint.proceed();
|
||||
return processWrapping(proceedingJoinPoint, proceedResult);
|
||||
}
|
||||
|
||||
/**
|
||||
* 具体包装过程
|
||||
*
|
||||
*
|
||||
* @date 2022/9/15 21:27
|
||||
*/
|
||||
@SuppressWarnings("all")
|
||||
private Object processWrapping(ProceedingJoinPoint proceedingJoinPoint, Object originResult) throws IllegalAccessException, InstantiationException {
|
||||
MethodSignature methodSignature = (MethodSignature) proceedingJoinPoint.getSignature();
|
||||
Method method = methodSignature.getMethod();
|
||||
CommonWrapper commonWrapper = method.getAnnotation(CommonWrapper.class);
|
||||
Class<? extends CommonWrapperInterface<?>>[] baseWrapperClasses = commonWrapper.value();
|
||||
if (ObjectUtil.isEmpty(baseWrapperClasses)) {
|
||||
return originResult;
|
||||
}
|
||||
if (!(originResult instanceof CommonResult)) {
|
||||
return originResult;
|
||||
}
|
||||
CommonResult commonResult = (CommonResult) originResult;
|
||||
Object beWrapped = commonResult.getData();
|
||||
if (ObjectUtil.isBasicType(beWrapped)) {
|
||||
throw new CommonException("被包装的值不能是基本类型");
|
||||
}
|
||||
if (beWrapped instanceof Page) {
|
||||
Page page = (Page) beWrapped;
|
||||
ArrayList<Map<String, Object>> maps = new ArrayList<>();
|
||||
for (Object wrappedItem : page.getRecords()) {
|
||||
maps.add(this.wrapPureObject(wrappedItem, baseWrapperClasses));
|
||||
}
|
||||
page.setRecords(maps);
|
||||
commonResult.setData(page);
|
||||
} else if (beWrapped instanceof Collection) {
|
||||
Collection collection = (Collection) beWrapped;
|
||||
List<Map<String, Object>> maps = new ArrayList<>();
|
||||
for (Object wrappedItem : collection) {
|
||||
maps.add(this.wrapPureObject(wrappedItem, baseWrapperClasses));
|
||||
}
|
||||
commonResult.setData(maps);
|
||||
} else if (ArrayUtil.isArray(beWrapped)) {
|
||||
Object[] objects = this.objToArray(beWrapped);
|
||||
ArrayList<Map<String, Object>> maps = new ArrayList<>();
|
||||
for (Object wrappedItem : objects) {
|
||||
maps.add(this.wrapPureObject(wrappedItem, baseWrapperClasses));
|
||||
}
|
||||
commonResult.setData(maps);
|
||||
} else {
|
||||
commonResult.setData(this.wrapPureObject(beWrapped, baseWrapperClasses));
|
||||
}
|
||||
return commonResult;
|
||||
}
|
||||
|
||||
/**
|
||||
* 原始对象包装JSONObject
|
||||
*
|
||||
*
|
||||
* @date 2022/9/15 21:36
|
||||
*/
|
||||
@SuppressWarnings("all")
|
||||
private JSONObject wrapPureObject(Object originModel, Class<? extends CommonWrapperInterface<?>>[] baseWrapperClasses) {
|
||||
JSONObject jsonObject = JSONUtil.parseObj(originModel);
|
||||
try {
|
||||
for (Class<? extends CommonWrapperInterface<?>> commonWrapperClass : baseWrapperClasses) {
|
||||
CommonWrapperInterface commonWrapperInterface = commonWrapperClass.newInstance();
|
||||
Map<String, Object> incrementFieldsMap = commonWrapperInterface.doWrap(originModel);
|
||||
jsonObject.putAll(incrementFieldsMap);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
throw new CommonException("原始对象包装过程,字段转化异常:{}", e.getMessage());
|
||||
}
|
||||
return jsonObject;
|
||||
}
|
||||
|
||||
/**
|
||||
* Object转array
|
||||
*
|
||||
*
|
||||
* @date 2022/9/15 21:34
|
||||
*/
|
||||
private Object[] objToArray(Object object) {
|
||||
int length = Array.getLength(object);
|
||||
Object[] result = new Object[length];
|
||||
for (int i = 0; i < result.length; i++) {
|
||||
result[i] = Array.get(object, i);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 数据库id选择器,用于Mapper.xml中
|
||||
* MyBatis可以根据不同的数据库厂商执行不同的语句
|
||||
*
|
||||
*
|
||||
* @date 2022/1/8 2:16
|
||||
*/
|
||||
@Component
|
||||
public static class CustomDbIdProvider implements DatabaseIdProvider {
|
||||
|
||||
@Override
|
||||
public String getDatabaseId(DataSource dataSource) throws SQLException {
|
||||
Connection conn = null;
|
||||
try {
|
||||
conn = dataSource.getConnection();
|
||||
String url = conn.getMetaData().getURL().toLowerCase();
|
||||
if (url.contains("jdbc:oracle")) {
|
||||
return "oracle";
|
||||
} else if (url.contains("jdbc:postgresql")) {
|
||||
return "pgsql";
|
||||
} else if (url.contains("jdbc:mysql")) {
|
||||
return "mysql";
|
||||
} else if (url.contains("jdbc:dm")) {
|
||||
return "dm";
|
||||
} else if (url.contains("jdbc:kingbase")) {
|
||||
return "kingbase";
|
||||
} else {
|
||||
return "mysql";
|
||||
}
|
||||
} finally {
|
||||
JdbcUtils.closeConnection(conn);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 自定义公共字段自动注入
|
||||
*
|
||||
*
|
||||
* @date 2020/3/31 15:42
|
||||
*/
|
||||
@Component
|
||||
public static class CustomMetaObjectHandler implements MetaObjectHandler {
|
||||
|
||||
/** 删除标志 */
|
||||
private static final String DELETE_FLAG = "deleteFlag";
|
||||
|
||||
/** 创建人 */
|
||||
private static final String CREATE_USER = "createUser";
|
||||
|
||||
/** 创建时间 */
|
||||
private static final String CREATE_TIME = "createTime";
|
||||
|
||||
/** 更新人 */
|
||||
private static final String UPDATE_USER = "updateUser";
|
||||
|
||||
/** 更新时间 */
|
||||
private static final String UPDATE_TIME = "updateTime";
|
||||
|
||||
@Override
|
||||
public void insertFill(MetaObject metaObject) {
|
||||
try {
|
||||
//为空则设置deleteFlag
|
||||
Object deleteFlag = metaObject.getValue(DELETE_FLAG);
|
||||
if (ObjectUtil.isNull(deleteFlag)) {
|
||||
setFieldValByName(DELETE_FLAG, EnumUtil.toString(CommonDeleteFlagEnum.NOT_DELETE), metaObject);
|
||||
}
|
||||
} catch (ReflectionException ignored) { }
|
||||
try {
|
||||
//为空则设置createUser
|
||||
Object createUser = metaObject.getValue(CREATE_USER);
|
||||
if (ObjectUtil.isNull(createUser)) {
|
||||
setFieldValByName(CREATE_USER, this.getUserId(), metaObject);
|
||||
}
|
||||
} catch (ReflectionException ignored) { }
|
||||
try {
|
||||
//为空则设置createTime
|
||||
Object createTime = metaObject.getValue(CREATE_TIME);
|
||||
if (ObjectUtil.isNull(createTime)) {
|
||||
setFieldValByName(CREATE_TIME, DateTime.now(), metaObject);
|
||||
}
|
||||
} catch (ReflectionException ignored) { }
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateFill(MetaObject metaObject) {
|
||||
try {
|
||||
//设置updateUser
|
||||
setFieldValByName(UPDATE_USER, this.getUserId(), metaObject);
|
||||
} catch (ReflectionException ignored) { }
|
||||
try {
|
||||
//设置updateTime
|
||||
setFieldValByName(UPDATE_TIME, DateTime.now(), metaObject);
|
||||
} catch (ReflectionException ignored) { }
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取用户id
|
||||
*/
|
||||
private String getUserId() {
|
||||
try {
|
||||
String loginId = StpUtil.getLoginIdAsString();
|
||||
if (ObjectUtil.isNotEmpty(loginId)) {
|
||||
return loginId;
|
||||
} else {
|
||||
return "-1";
|
||||
}
|
||||
} catch (Exception e) {
|
||||
return "-1";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 注册数据变化事件中心 事件发布器
|
||||
*
|
||||
*
|
||||
* @date 2023/3/3 14:27
|
||||
**/
|
||||
@Resource
|
||||
public void registerListenerList(List<CommonDataChangeListener> dataChangeListenerList) {
|
||||
CommonDataChangeEventCenter.registerListenerList(dataChangeListenerList);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,64 @@
|
||||
|
||||
package mjkf.xinke.core.handler;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.convert.Convert;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.http.HttpStatus;
|
||||
import org.springframework.boot.web.error.ErrorAttributeOptions;
|
||||
import org.springframework.boot.web.servlet.error.DefaultErrorAttributes;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.web.context.request.WebRequest;
|
||||
import mjkf.xinke.common.exception.CommonException;
|
||||
import mjkf.xinke.common.pojo.CommonResult;
|
||||
import mjkf.xinke.common.util.CommonServletUtil;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 将未知错误异常,输出格式重写为我们熟悉的响应格式
|
||||
*
|
||||
*
|
||||
* @date 2021/10/9 15:24
|
||||
**/
|
||||
@Component
|
||||
public class GlobalErrorAttributesHandler extends DefaultErrorAttributes {
|
||||
@Override
|
||||
public Map<String, Object> getErrorAttributes(WebRequest webRequest, ErrorAttributeOptions attributeOptions) {
|
||||
// 获取spring默认的返回内容
|
||||
Map<String, Object> defaultErrorAttributes = super.getErrorAttributes(webRequest, attributeOptions);
|
||||
|
||||
// 获取其状态码
|
||||
Object status = defaultErrorAttributes.get("status");
|
||||
if (ObjectUtil.isNotEmpty(status)) {
|
||||
// 如果其为404,则处理
|
||||
if (HttpStatus.HTTP_NOT_FOUND == Convert.toInt(status)) {
|
||||
Object path = defaultErrorAttributes.get("path");
|
||||
if(ObjectUtil.isNotEmpty(path)) {
|
||||
return BeanUtil.beanToMap(CommonResult.get(HttpStatus.HTTP_NOT_FOUND, "路径不存在,请求地址:" +
|
||||
Convert.toStr(path), null));
|
||||
} else {
|
||||
return BeanUtil.beanToMap(CommonResult.get(HttpStatus.HTTP_NOT_FOUND, "路径不存在", null));
|
||||
}
|
||||
} else {
|
||||
return BeanUtil.beanToMap(CommonResult.get(HttpStatus.HTTP_INTERNAL_ERROR, "服务器异常,请求地址:" +
|
||||
CommonServletUtil.getRequest().getRequestURL(), null));
|
||||
}
|
||||
}
|
||||
|
||||
// 如果返回的异常是CommonException,则按CommonException响应的内容进行返回
|
||||
Throwable throwable = this.getError(webRequest);
|
||||
if (ObjectUtil.isNotEmpty(throwable)) {
|
||||
if (throwable instanceof CommonException) {
|
||||
CommonException commonException = (CommonException) throwable;
|
||||
return BeanUtil.beanToMap(CommonResult.error(commonException.getMsg()));
|
||||
} else {
|
||||
return BeanUtil.beanToMap(CommonResult.get(HttpStatus.HTTP_INTERNAL_ERROR, "服务器异常,请求地址:" +
|
||||
CommonServletUtil.getRequest().getRequestURL(), null));
|
||||
}
|
||||
} else {
|
||||
// throwable为空,则直接返回默认异常
|
||||
return BeanUtil.beanToMap(CommonResult.error());
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,58 @@
|
||||
|
||||
package mjkf.xinke.core.handler;
|
||||
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.json.JSONObject;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
import mjkf.xinke.common.exception.CommonException;
|
||||
import mjkf.xinke.common.pojo.CommonResult;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.IOException;
|
||||
|
||||
/**
|
||||
* 全局异常页面处理器,覆盖默认的Whitelabel Error Page
|
||||
*
|
||||
*
|
||||
* @date 2022/2/11 15:41
|
||||
**/
|
||||
@Slf4j
|
||||
@RestController
|
||||
public class GlobalErrorViewController {
|
||||
|
||||
/**
|
||||
* Error页面视图,直接响应JSON
|
||||
*
|
||||
*
|
||||
* @date 2022/2/11 16:11
|
||||
**/
|
||||
@RequestMapping("/errorView")
|
||||
public CommonResult<String> globalError(HttpServletRequest request, HttpServletResponse response) throws IOException {
|
||||
CommonResult<String> commonResult = new CommonResult<>(404, "路径不存在", null);
|
||||
Object model = request.getAttribute("model");
|
||||
if(ObjectUtil.isNotEmpty(model)) {
|
||||
if(model instanceof Exception){
|
||||
if(model instanceof CommonException) {
|
||||
JSONObject errorObj = JSONUtil.parseObj(model);
|
||||
Integer code = errorObj.getInt("code");
|
||||
String msg = errorObj.getStr("msg");
|
||||
if(ObjectUtil.isAllNotEmpty(code, msg)) {
|
||||
commonResult.setCode(code).setMsg(msg);
|
||||
} else if(ObjectUtil.isNotEmpty(msg)) {
|
||||
commonResult = CommonResult.error(msg);
|
||||
} else {
|
||||
commonResult = CommonResult.error();
|
||||
}
|
||||
} else {
|
||||
commonResult = CommonResult.error();
|
||||
log.error(">>> 服务器未知异常,具体信息:", (Exception) model);
|
||||
}
|
||||
}
|
||||
}
|
||||
return commonResult;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,62 @@
|
||||
|
||||
package mjkf.xinke.core.handler;
|
||||
|
||||
import cn.hutool.core.convert.Convert;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import org.springframework.boot.autoconfigure.web.ServerProperties;
|
||||
import org.springframework.boot.autoconfigure.web.servlet.error.BasicErrorController;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.MediaType;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
import org.springframework.web.servlet.ModelAndView;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.util.Collections;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 全局异常页面处理器,覆盖默认的Whitelabel Error Page
|
||||
*
|
||||
*
|
||||
* @date 2022/2/11 15:41
|
||||
**/
|
||||
@RestController
|
||||
public class GlobalErrorViewHandler extends BasicErrorController {
|
||||
|
||||
public GlobalErrorViewHandler(ServerProperties serverProperties) {
|
||||
super(new GlobalErrorAttributesHandler(), serverProperties.getError());
|
||||
}
|
||||
|
||||
/**
|
||||
* 覆盖默认的Json响应
|
||||
*
|
||||
*
|
||||
* @date 2022/2/11 15:47
|
||||
**/
|
||||
@Override
|
||||
public ResponseEntity<Map<String, Object>> error(HttpServletRequest request) {
|
||||
Map<String, Object> defaultErrorAttributes = super.getErrorAttributes(request, getErrorAttributeOptions(request, MediaType.ALL));
|
||||
Integer code = Convert.toInt(defaultErrorAttributes.get("code"));
|
||||
return new ResponseEntity<>(defaultErrorAttributes, HttpStatus.valueOf(ObjectUtil.isNotEmpty(code)?code:500));
|
||||
}
|
||||
|
||||
/**
|
||||
* 覆盖默认的错误页面,响应JSON
|
||||
*
|
||||
*
|
||||
* @date 2022/2/12 21:55
|
||||
*/
|
||||
@Override
|
||||
@RequestMapping(produces = {"text/html"})
|
||||
public ModelAndView errorHtml(HttpServletRequest request, HttpServletResponse response) {
|
||||
HttpStatus status = this.getStatus(request);
|
||||
Map<String, Object> model = Collections.unmodifiableMap(this.getErrorAttributes(request, this.getErrorAttributeOptions(request, MediaType.TEXT_HTML)));
|
||||
response.setStatus(status.value());
|
||||
ModelAndView modelAndView = this.resolveErrorView(request, response, status, model);
|
||||
request.setAttribute("model", model);
|
||||
return modelAndView != null ? modelAndView : new ModelAndView("errorView", model);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
|
||||
package mjkf.xinke.core.handler;
|
||||
|
||||
import org.springframework.web.bind.annotation.ControllerAdvice;
|
||||
import org.springframework.web.bind.annotation.ExceptionHandler;
|
||||
import org.springframework.web.bind.annotation.ResponseBody;
|
||||
import mjkf.xinke.common.pojo.CommonResult;
|
||||
|
||||
/**
|
||||
* 全局异常处理器
|
||||
*
|
||||
*
|
||||
* @date 2021/10/9 14:59
|
||||
**/
|
||||
@ControllerAdvice
|
||||
public class GlobalExceptionHandler {
|
||||
|
||||
/**
|
||||
* 不同异常返回不同结果
|
||||
*
|
||||
*
|
||||
* @date 2022/7/28 16:54
|
||||
**/
|
||||
@ResponseBody
|
||||
@ExceptionHandler
|
||||
public CommonResult<String> handleException(Exception e) {
|
||||
return GlobalExceptionUtil.getCommonResult(e);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,179 @@
|
||||
|
||||
package mjkf.xinke.core.handler;
|
||||
|
||||
import cn.dev33.satoken.exception.SaTokenException;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import cn.hutool.http.HttpStatus;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.ibatis.exceptions.PersistenceException;
|
||||
import org.mybatis.spring.MyBatisSystemException;
|
||||
import org.springframework.http.HttpMethod;
|
||||
import org.springframework.http.converter.HttpMessageNotReadableException;
|
||||
import org.springframework.validation.BindException;
|
||||
import org.springframework.validation.BindingResult;
|
||||
import org.springframework.validation.ObjectError;
|
||||
import org.springframework.web.HttpMediaTypeNotSupportedException;
|
||||
import org.springframework.web.HttpRequestMethodNotSupportedException;
|
||||
import org.springframework.web.bind.MethodArgumentNotValidException;
|
||||
import org.springframework.web.bind.MissingServletRequestParameterException;
|
||||
import org.springframework.web.multipart.MultipartException;
|
||||
import org.springframework.web.multipart.support.MissingServletRequestPartException;
|
||||
import mjkf.xinke.auth.core.util.AuthExceptionUtil;
|
||||
import mjkf.xinke.common.exception.CommonException;
|
||||
import mjkf.xinke.common.pojo.CommonResult;
|
||||
import mjkf.xinke.common.util.CommonServletUtil;
|
||||
|
||||
import javax.validation.ConstraintViolation;
|
||||
import javax.validation.ConstraintViolationException;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* 全局异常处理工具类,将异常转为通用结果
|
||||
*
|
||||
*
|
||||
* @date 2021/12/18 16:44
|
||||
*/
|
||||
@Slf4j
|
||||
public class GlobalExceptionUtil {
|
||||
|
||||
/**
|
||||
* 根据错误类型获取对应的CommonResult
|
||||
*
|
||||
*
|
||||
* @date 2021/10/11 15:52
|
||||
**/
|
||||
public static CommonResult<String> getCommonResult(Exception e) {
|
||||
CommonResult<String> commonResult;
|
||||
if (e instanceof HttpRequestMethodNotSupportedException) {
|
||||
|
||||
// 如果是请求方法异常 405
|
||||
String method = CommonServletUtil.getRequest().getMethod();
|
||||
if (HttpMethod.GET.toString().equals(method)) {
|
||||
commonResult = CommonResult.get(HttpStatus.HTTP_BAD_METHOD, "请求方法应为POST", null);
|
||||
} else if(HttpMethod.POST.toString().equals(method)) {
|
||||
commonResult = CommonResult.get(HttpStatus.HTTP_BAD_METHOD, "请求方法应为GET", null);
|
||||
} else {
|
||||
commonResult = CommonResult.get(HttpStatus.HTTP_BAD_METHOD, "请求方法仅支持GET或POST", null);
|
||||
}
|
||||
} else if (e instanceof HttpMessageNotReadableException) {
|
||||
log.error(">>> 参数传递格式异常:", e);
|
||||
// 如果是参数传递格式不支持异常 415
|
||||
if (e.getMessage().contains("JSON parse error")) {
|
||||
//JSON格式转换错误特殊提示
|
||||
commonResult = CommonResult.get(HttpStatus.HTTP_UNSUPPORTED_TYPE, "参数格式错误", null);
|
||||
} else {
|
||||
commonResult = CommonResult.get(HttpStatus.HTTP_UNSUPPORTED_TYPE, "请使用JSON方式传参", null);
|
||||
}
|
||||
} else if (e instanceof HttpMediaTypeNotSupportedException) {
|
||||
log.error(">>> 参数传递格式异常:", e);
|
||||
// 如果是JSON参数格式错误异常 415
|
||||
commonResult = CommonResult.get(HttpStatus.HTTP_UNSUPPORTED_TYPE, "参数格式错误", null);
|
||||
} else if (e instanceof MethodArgumentNotValidException) {
|
||||
|
||||
// 如果是参数校验异常(MethodArgumentNotValidException) 415
|
||||
MethodArgumentNotValidException methodArgumentNotValidException = (MethodArgumentNotValidException) e;
|
||||
commonResult = CommonResult.get(HttpStatus.HTTP_UNSUPPORTED_TYPE, getArgNotValidMessage(methodArgumentNotValidException.getBindingResult()), null);
|
||||
} else if (e instanceof BindException) {
|
||||
|
||||
// 如果是参数校验异常(BindException) 415
|
||||
BindException bindException = (BindException) e;
|
||||
commonResult = CommonResult.get(HttpStatus.HTTP_UNSUPPORTED_TYPE, getArgNotValidMessage(bindException.getBindingResult()), null);
|
||||
} else if (e instanceof ConstraintViolationException) {
|
||||
|
||||
// 如果是参数校验异常(ConstraintViolationException) 415
|
||||
ConstraintViolationException constraintViolationException = (ConstraintViolationException) e;
|
||||
commonResult = CommonResult.get(HttpStatus.HTTP_UNSUPPORTED_TYPE, getArgNotValidMessage(constraintViolationException.getConstraintViolations()), null);
|
||||
} else if (e instanceof MissingServletRequestParameterException) {
|
||||
|
||||
// 如果是参数校验异常(MissingServletRequestParameterException) 415
|
||||
MissingServletRequestParameterException missingServletRequestParameterException = (MissingServletRequestParameterException) e;
|
||||
commonResult = CommonResult.get(HttpStatus.HTTP_UNSUPPORTED_TYPE, missingServletRequestParameterException.getMessage(), null);
|
||||
}
|
||||
else if (e instanceof MultipartException) {
|
||||
log.error(">>> 文件上传参数异常:", e);
|
||||
//文件上传错误特殊提示
|
||||
commonResult = CommonResult.error("请使用multipart/form-data方式上传文件");
|
||||
} else if (e instanceof MissingServletRequestPartException) {
|
||||
log.error(">>> 文件上传参数异常:", e);
|
||||
//文件上传错误特殊提示
|
||||
commonResult = CommonResult.error("请选择要上传的文件并检查文件参数名称是否正确");
|
||||
} else if (e instanceof SaTokenException) {
|
||||
|
||||
// 如果是SaToken相关异常,则由AuthExceptionUtil处理
|
||||
return AuthExceptionUtil.getCommonResult(e);
|
||||
} else if(e instanceof MyBatisSystemException) {
|
||||
|
||||
// 如果是MyBatisSystemException
|
||||
Throwable cause = e.getCause();
|
||||
if (cause instanceof PersistenceException) {
|
||||
Throwable secondCause = cause.getCause();
|
||||
if (secondCause instanceof CommonException) {
|
||||
CommonException commonException = (CommonException) secondCause;
|
||||
commonResult = CommonResult.get(commonException.getCode(), commonException.getMsg(), null);
|
||||
} else {
|
||||
log.error(">>> 数据操作异常:", e);
|
||||
commonResult = CommonResult.error("数据操作异常");
|
||||
}
|
||||
}else {
|
||||
log.error(">>> 数据操作异常:", e);
|
||||
commonResult = CommonResult.error("数据操作异常");
|
||||
}
|
||||
} else if (e instanceof CommonException) {
|
||||
|
||||
// 通用业务异常,直接返回给前端
|
||||
CommonException commonException = (CommonException) e;
|
||||
commonResult = CommonResult.get(commonException.getCode(), commonException.getMsg(), null);
|
||||
} else {
|
||||
// 未知异常打印详情
|
||||
log.error(">>> 服务器未知异常,请求地址:{},具体信息:", CommonServletUtil.getRequest().getRequestURL(), e);
|
||||
// 未知异常返回服务器异常
|
||||
commonResult = CommonResult.error();
|
||||
}
|
||||
return commonResult;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取请求参数不正确的提示信息,多个信息,拼接成用逗号分隔的形式
|
||||
*
|
||||
*
|
||||
* @date 2021/10/12 11:14
|
||||
**/
|
||||
public static String getArgNotValidMessage(Set<ConstraintViolation<?>> constraintViolationSet) {
|
||||
if (ObjectUtil.isEmpty(constraintViolationSet)) {
|
||||
return "";
|
||||
}
|
||||
StringBuilder stringBuilder = StrUtil.builder();
|
||||
|
||||
// 多个错误用逗号分隔
|
||||
for (ConstraintViolation<?> constraintViolation : constraintViolationSet) {
|
||||
stringBuilder.append(StrUtil.COMMA).append(constraintViolation.getMessage());
|
||||
}
|
||||
|
||||
// 最终把首部的逗号去掉
|
||||
return StrUtil.removePrefix(stringBuilder.toString(), StrUtil.COMMA);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取请求参数不正确的提示信息,多个信息,拼接成用逗号分隔的形式
|
||||
*
|
||||
*
|
||||
* @date 2021/10/12 11:14
|
||||
**/
|
||||
public static String getArgNotValidMessage(BindingResult bindingResult) {
|
||||
if (ObjectUtil.isNull(bindingResult)) {
|
||||
return "";
|
||||
}
|
||||
StringBuilder stringBuilder = StrUtil.builder();
|
||||
|
||||
// 多个错误用逗号分隔
|
||||
List<ObjectError> allErrorInfos = bindingResult.getAllErrors();
|
||||
for (ObjectError error : allErrorInfos) {
|
||||
stringBuilder.append(StrUtil.COMMA).append(error.getDefaultMessage());
|
||||
}
|
||||
|
||||
// 最终把首部的逗号去掉
|
||||
return StrUtil.removePrefix(stringBuilder.toString(), StrUtil.COMMA);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
{
|
||||
"properties": [
|
||||
{
|
||||
"name": "mjkf-xinke.config.global.front-url",
|
||||
"type": "java.lang.String",
|
||||
"description": "前端地址."
|
||||
},
|
||||
{
|
||||
"name": "mjkf-xinke.config.global.backend-url",
|
||||
"type": "java.lang.String",
|
||||
"description": "后端地址."
|
||||
},
|
||||
{
|
||||
"name": "mjkf-xinke.config.ten.enabled",
|
||||
"type": "java.lang.String",
|
||||
"description": "是否开启多租户."
|
||||
},
|
||||
{
|
||||
"name": "mjkf-xinke.config.ten.ignore-table-names",
|
||||
"type": "java.lang.String",
|
||||
"description": "租户id隔离的租户模式下,需要忽略拼接租户id字段的表名称,逗号分割."
|
||||
},
|
||||
{
|
||||
"name": "mjkf-xinke.config.ten.ten-id-column-name",
|
||||
"type": "java.lang.String",
|
||||
"description": "租户id隔离的租户模式下,租户字段名称(数据表需具备对应字段名称)."
|
||||
},
|
||||
{
|
||||
"name": "mjkf-xinke.config.ten.default-ten-id",
|
||||
"type": "java.lang.String",
|
||||
"description": "租户id隔离的租户模式下,默认租户ID."
|
||||
}
|
||||
] }
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1,2 @@
|
||||
ALTER TABLE `ACT_EXT_MODEL`
|
||||
ADD COLUMN `ICON_MOBILE` varchar(255) NULL COMMENT '移动端图标' AFTER `ICON`;
|
||||
@@ -0,0 +1,2 @@
|
||||
ALTER TABLE `DEV_DFC`
|
||||
ADD COLUMN `STATUS` varchar(255) NULL COMMENT '状态' AFTER `IS_MULTIPLE`;
|
||||
@@ -0,0 +1,2 @@
|
||||
ALTER TABLE `GEN_BASIC`
|
||||
ADD COLUMN `DFC_WHETHER` varchar(255) NULL COMMENT '使用动态字段' AFTER `SORT_CODE`;
|
||||
@@ -0,0 +1,70 @@
|
||||
-- ----------------------------
|
||||
-- 2023.02.10增加移动端管理的相关字典、菜单
|
||||
-- ----------------------------
|
||||
SET NAMES utf8mb4;
|
||||
SET FOREIGN_KEY_CHECKS = 0;
|
||||
|
||||
-- ----------------------------
|
||||
-- Records of DEV_DICT
|
||||
-- ----------------------------
|
||||
INSERT INTO `DEV_DICT` VALUES ('1619343323218432002', '-1', '0', '移动菜单状态', 'MOBILE_STATUS', 'FRM', 93, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
|
||||
INSERT INTO `DEV_DICT` VALUES ('1619343680636047362', '-1', '1619343323218432002', '可用', 'ENABLE', 'FRM', 94, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
|
||||
INSERT INTO `DEV_DICT` VALUES ('1619343846382358529', '-1', '1619343323218432002', '不可用', 'DISABLED', 'FRM', 96, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
|
||||
INSERT INTO `DEV_DICT` VALUES ('1619344256295882753', '-1', '0', '移动菜单规则', 'MOBILE_REG_TYPE', 'FRM', 97, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
|
||||
INSERT INTO `DEV_DICT` VALUES ('1619344428111351809', '-1', '1619344256295882753', '正规则', 'YES', 'FRM', 98, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
|
||||
INSERT INTO `DEV_DICT` VALUES ('1619344504456073218', '-1', '1619344256295882753', '反规则', 'NO', 'FRM', 99, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for MOBILE_RESOURCE
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `MOBILE_RESOURCE`;
|
||||
CREATE TABLE `MOBILE_RESOURCE` (
|
||||
`ID` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '主键',
|
||||
`TENANT_ID` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '租户id',
|
||||
`PARENT_ID` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '父ID',
|
||||
`TITLE` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '名称',
|
||||
`CODE` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '编码',
|
||||
`CATEGORY` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '分类',
|
||||
`MODULE` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '模块',
|
||||
`MENU_TYPE` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '菜单类型',
|
||||
`PATH` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '路径',
|
||||
`ICON` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '图标',
|
||||
`COLOR` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '颜色',
|
||||
`REG_TYPE` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '规则类型',
|
||||
`STATUS` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '可用状态',
|
||||
`SORT_CODE` int(11) NULL DEFAULT NULL COMMENT '排序码',
|
||||
`EXT_JSON` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '扩展信息',
|
||||
`DELETE_FLAG` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '删除标志',
|
||||
`CREATE_TIME` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
|
||||
`CREATE_USER` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '创建用户',
|
||||
`UPDATE_TIME` datetime(0) NULL DEFAULT NULL COMMENT '修改时间',
|
||||
`UPDATE_USER` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '修改用户',
|
||||
PRIMARY KEY (`ID`) USING BTREE
|
||||
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '移动资源' ROW_FORMAT = Dynamic;
|
||||
|
||||
-- ----------------------------
|
||||
-- Records of MOBILE_RESOURCE
|
||||
-- ----------------------------
|
||||
INSERT INTO `MOBILE_RESOURCE` VALUES ('1623380023993298945', '-1', NULL, '业务', '217gcp9ifi', 'MODULE', NULL, NULL, NULL, 'container-outlined', '#1890ff', NULL, NULL, 1, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
|
||||
INSERT INTO `MOBILE_RESOURCE` VALUES ('1623380258656219138', '-1', '0', '机构管理', NULL, 'MENU', '1623380023993298945', 'MENU', '/pages/biz/org/index', 'apartment-outlined', '#1890ff', 'YES', 'ENABLE', 0, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
|
||||
INSERT INTO `MOBILE_RESOURCE` VALUES ('1623380614295449601', '-1', '0', '岗位管理', NULL, 'MENU', '1623380023993298945', 'MENU', '/pages/biz/position/index', 'robot-outlined', '#9c28b1', 'YES', 'ENABLE', 2, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
|
||||
INSERT INTO `MOBILE_RESOURCE` VALUES ('1623380765202313218', '-1', '0', '人员管理', NULL, 'MENU', '1623380023993298945', 'MENU', '/pages/biz/user/index', 'team-outlined', '#fed835', 'YES', 'ENABLE', 4, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
|
||||
INSERT INTO `MOBILE_RESOURCE` VALUES ('1623381127095250946', '-1', '0', '更多', NULL, 'MENU', '1623380023993298945', 'CATALOG', '7029146815941316608', 'small-dash-outlined', '#f1627e', 'YES', 'ENABLE', 7, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
|
||||
INSERT INTO `MOBILE_RESOURCE` VALUES ('1623381298801668098', '-1', '1623380258656219138', '新增机构', 'mobileBizOrgAdd', 'BUTTON', NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
|
||||
INSERT INTO `MOBILE_RESOURCE` VALUES ('1623381632131395586', '-1', '1623380258656219138', '编辑机构', 'mobileBizOrgEdit', 'BUTTON', NULL, NULL, NULL, NULL, NULL, NULL, NULL, 2, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
|
||||
INSERT INTO `MOBILE_RESOURCE` VALUES ('1623381698837606401', '-1', '1623380258656219138', '删除机构', 'mobileBizOrgDelete', 'BUTTON', NULL, NULL, NULL, NULL, NULL, NULL, NULL, 3, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
|
||||
INSERT INTO `MOBILE_RESOURCE` VALUES ('1623696035909316610', '-1', '1623380614295449601', '新增岗位', 'mobileBizPositionAdd', 'BUTTON', NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
|
||||
INSERT INTO `MOBILE_RESOURCE` VALUES ('1623696094872842242', '-1', '1623380614295449601', '编辑岗位', 'mobileBizPositionEdit', 'BUTTON', NULL, NULL, NULL, NULL, NULL, NULL, NULL, 2, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
|
||||
INSERT INTO `MOBILE_RESOURCE` VALUES ('1623696153760870401', '-1', '1623380614295449601', '删除岗位', 'mobileBizPositionDelete', 'BUTTON', NULL, NULL, NULL, NULL, NULL, NULL, NULL, 3, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
|
||||
INSERT INTO `MOBILE_RESOURCE` VALUES ('1623696236267024386', '-1', '1623380765202313218', '新增人员', 'mobileBizUserAdd', 'BUTTON', NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
|
||||
INSERT INTO `MOBILE_RESOURCE` VALUES ('1623696292042878977', '-1', '1623380765202313218', '编辑人员', 'mobileBizUserEdit', 'BUTTON', NULL, NULL, NULL, NULL, NULL, NULL, NULL, 2, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
|
||||
INSERT INTO `MOBILE_RESOURCE` VALUES ('1623696346547859458', '-1', '1623380765202313218', '删除人员', 'mobileBizUserDelete', 'BUTTON', NULL, NULL, NULL, NULL, NULL, NULL, NULL, 3, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
|
||||
|
||||
-- ----------------------------
|
||||
-- Records of SYS_RESOURCE
|
||||
-- ----------------------------
|
||||
INSERT INTO `SYS_RESOURCE` VALUES ('1623378345382506498', '-1', '0', '移动端管理', NULL, NULL, 'MENU', '1548901111999770525', 'CATALOG', '/7029144034425704448', NULL, 'mobile-outlined', NULL, 50, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
|
||||
INSERT INTO `SYS_RESOURCE` VALUES ('1623378675591671810', '-1', '1623378345382506498', '模块管理', 'mobileModuleIndex', NULL, 'MENU', '1548901111999770525', 'MENU', '/mobile/module/index', 'mobile/resource/module/index', 'build-outlined', NULL, 51, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
|
||||
INSERT INTO `SYS_RESOURCE` VALUES ('1623378996099411969', '-1', '1623378345382506498', '菜单管理', 'mobileMenuIndex', NULL, 'MENU', '1548901111999770525', 'MENU', '/mobile/menu/index', 'mobile/resource/menu/index', 'appstore-add-outlined', NULL, 52, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
|
||||
|
||||
SET FOREIGN_KEY_CHECKS = 1;
|
||||
@@ -0,0 +1,2 @@
|
||||
ALTER TABLE `GEN_BASIC`
|
||||
ADD COLUMN `MOBILE_MODULE` varchar(255) NULL COMMENT '移动端所属模块' AFTER `MENU_PID`;
|
||||
@@ -0,0 +1,121 @@
|
||||
-- ----------------------------
|
||||
-- 创建订单表
|
||||
-- ----------------------------
|
||||
CREATE TABLE `PAY_ORDER` (
|
||||
`ID` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
|
||||
`TENANT_ID` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '租户id',
|
||||
`OUT_TRADE_NO` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '商户订单号',
|
||||
`TRADE_NO` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '支付平台订单号',
|
||||
`SUBJECT` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '订单标题',
|
||||
`BODY` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '订单描述',
|
||||
`ORDER_AMOUNT` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '订单金额',
|
||||
`PAY_USER_ID` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '买家id',
|
||||
`PAY_ACCOUNT` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '买家账号',
|
||||
`PAY_AMOUNT` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '支付金额',
|
||||
`PAY_PLATFORM` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '支付平台',
|
||||
`PAY_STATUS` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '支付状态',
|
||||
`PAY_TIME` datetime DEFAULT NULL COMMENT '支付时间',
|
||||
`HAS_REFUND` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '退款标志',
|
||||
`DELETE_FLAG` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '删除标志',
|
||||
`CREATE_TIME` datetime DEFAULT NULL COMMENT '创建时间',
|
||||
`CREATE_USER` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '创建用户',
|
||||
`UPDATE_TIME` datetime DEFAULT NULL COMMENT '修改时间',
|
||||
`UPDATE_USER` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '修改用户',
|
||||
PRIMARY KEY (`ID`) USING BTREE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='订单';
|
||||
|
||||
-- ----------------------------
|
||||
-- 创建订单退款表
|
||||
-- ----------------------------
|
||||
CREATE TABLE `PAY_ORDER_REFUND` (
|
||||
`ID` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
|
||||
`TENANT_ID` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '租户id',
|
||||
`ORDER_ID` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '订单id',
|
||||
`OUT_TRADE_NO` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '商户订单号',
|
||||
`TRADE_NO` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '支付平台退款单号',
|
||||
`REFUND_NO` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '商户退款单号',
|
||||
`REFUND_USER_ID` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '退款到买家id',
|
||||
`REFUND_ACCOUNT` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '退款到买家账号',
|
||||
`REFUND_AMOUNT` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '退款金额',
|
||||
`REFUND_STATUS` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '退款状态',
|
||||
`REFUND_TIME` datetime DEFAULT NULL COMMENT '退款时间',
|
||||
`DELETE_FLAG` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '删除标志',
|
||||
`CREATE_TIME` datetime DEFAULT NULL COMMENT '创建时间',
|
||||
`CREATE_USER` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '创建用户',
|
||||
`UPDATE_TIME` datetime DEFAULT NULL COMMENT '修改时间',
|
||||
`UPDATE_USER` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '修改用户',
|
||||
PRIMARY KEY (`ID`) USING BTREE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='订单退款';
|
||||
|
||||
-- ----------------------------
|
||||
-- 创建订单明细表
|
||||
-- ----------------------------
|
||||
CREATE TABLE `PAY_ORDER_DETAILS` (
|
||||
`ID` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT 'id',
|
||||
`TENANT_ID` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '租户id',
|
||||
`ORDER_ID` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '订单id',
|
||||
`PRODUCT_ID` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '产品id',
|
||||
`PRODUCT_NAME` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '产品名称',
|
||||
`PRODUCT_AMOUNT` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '产品价格',
|
||||
`PRODUCT_COUNT` int(11) NULL DEFAULT NULL COMMENT '产品数量',
|
||||
`DELETE_FLAG` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '删除标志',
|
||||
`CREATE_TIME` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
|
||||
`CREATE_USER` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '创建用户',
|
||||
`UPDATE_TIME` datetime(0) NULL DEFAULT NULL COMMENT '修改时间',
|
||||
`UPDATE_USER` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '修改用户',
|
||||
PRIMARY KEY (`ID`) USING BTREE
|
||||
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '订单明细' ROW_FORMAT = Dynamic;
|
||||
|
||||
|
||||
-- ----------------------------
|
||||
-- 新增支付相关字典
|
||||
-- ----------------------------
|
||||
INSERT INTO `DEV_DICT` VALUES ('1645103344661086210', '-1', '0', '支付订单平台', 'PAY_PLATFORM', 'FRM', 100, NULL, 'NOT_DELETE', '2023-04-10 00:36:17', '1543837863788879871', NULL, NULL);
|
||||
INSERT INTO `DEV_DICT` VALUES ('1645103422368956417', '-1', '1645103344661086210', '支付宝', 'ALIPAY', 'FRM', 101, NULL, 'NOT_DELETE', '2023-04-10 00:36:35', '1543837863788879871', NULL, NULL);
|
||||
INSERT INTO `DEV_DICT` VALUES ('1645103492682268673', '-1', '1645103344661086210', '微信支付', 'WXPAY', 'FRM', 102, NULL, 'NOT_DELETE', '2023-04-10 00:36:52', '1543837863788879871', NULL, NULL);
|
||||
INSERT INTO `DEV_DICT` VALUES ('1645103888729423874', '-1', '0', '支付订单状态', 'PAY_STATUS', 'FRM', 103, NULL, 'NOT_DELETE', '2023-04-10 00:38:26', '1543837863788879871', NULL, NULL);
|
||||
INSERT INTO `DEV_DICT` VALUES ('1645103888729424861', '-1', '1645103888729423874', '已下单', 'NO_TRADE', 'FRM', 104, NULL, 'NOT_DELETE', '2023-04-10 00:38:47', '1543837863788879871', NULL, NULL);
|
||||
INSERT INTO `DEV_DICT` VALUES ('1645103888729424862', '-1', '1645103888729423874', '暂未支付', 'NOTPAY', 'FRM', 104, NULL, 'NOT_DELETE', '2023-04-10 00:38:47', '1543837863788879871', NULL, NULL);
|
||||
INSERT INTO `DEV_DICT` VALUES ('1645103888729424863', '-1', '1645103888729423874', '等待支付', 'USERPAYING', 'FRM', 104, NULL, 'NOT_DELETE', '2023-04-10 00:38:47', '1543837863788879871', NULL, NULL);
|
||||
INSERT INTO `DEV_DICT` VALUES ('1645103888729424864', '-1', '1645103888729423874', '等待支付', 'WAIT_BUYER_PAY', 'FRM', 104, NULL, 'NOT_DELETE', '2023-04-10 00:38:47', '1543837863788879871', NULL, NULL);
|
||||
INSERT INTO `DEV_DICT` VALUES ('1645103888729424865', '-1', '1645103888729423874', '支付成功', 'SUCCESS', 'FRM', 104, NULL, 'NOT_DELETE', '2023-04-10 00:38:47', '1543837863788879871', NULL, NULL);
|
||||
INSERT INTO `DEV_DICT` VALUES ('1645103888729424866', '-1', '1645103888729423874', '支付成功', 'TRADE_SUCCESS', 'FRM', 104, NULL, 'NOT_DELETE', '2023-04-10 00:38:47', '1543837863788879871', NULL, NULL);
|
||||
INSERT INTO `DEV_DICT` VALUES ('1645103888729424867', '-1', '1645103888729423874', '支付失败', 'PAYERROR', 'FRM', 104, NULL, 'NOT_DELETE', '2023-04-10 00:38:47', '1543837863788879871', NULL, NULL);
|
||||
INSERT INTO `DEV_DICT` VALUES ('1645103888729424868', '-1', '1645103888729423874', '转入退款', 'REFUND', 'FRM', 104, NULL, 'NOT_DELETE', '2023-04-10 00:38:47', '1543837863788879871', NULL, NULL);
|
||||
INSERT INTO `DEV_DICT` VALUES ('1645103888729424869', '-1', '1645103888729423874', '交易撤销', 'REVOKED', 'FRM', 104, NULL, 'NOT_DELETE', '2023-04-10 00:38:47', '1543837863788879871', NULL, NULL);
|
||||
INSERT INTO `DEV_DICT` VALUES ('1645103888729424870', '-1', '1645103888729423874', '交易关闭', 'CLOSED', 'FRM', 105, NULL, 'NOT_DELETE', '2023-04-10 00:39:08', '1543837863788879871', NULL, NULL);
|
||||
INSERT INTO `DEV_DICT` VALUES ('1645103888729424871', '-1', '1645103888729423874', '交易关闭', 'TRADE_CLOSED', 'FRM', 106, NULL, 'NOT_DELETE', '2023-04-10 01:02:18', '1543837863788879871', NULL, NULL);
|
||||
INSERT INTO `DEV_DICT` VALUES ('1645103888729424872', '-1', '1645103888729423874', '交易结束', 'TRADE_FINISHED', 'FRM', 107, NULL, 'NOT_DELETE', '2023-04-10 01:03:14', '1543837863788879871', NULL, NULL);
|
||||
INSERT INTO `DEV_DICT` VALUES ('1645103888729425876', '-1', '0', '订单退款状态', 'PAY_ORDER_REFUND_STATUS', 'FRM', 100, NULL, 'NOT_DELETE', '2023-04-10 00:36:17', '1543837863788879871', NULL, NULL);
|
||||
INSERT INTO `DEV_DICT` VALUES ('1645103888729425920', '-1', '1645103888729425876', '退款处理中', 'REFUND_PENDING', 'FRM', 101, NULL, 'NOT_DELETE', '2023-04-10 00:36:35', '1543837863788879871', NULL, NULL);
|
||||
INSERT INTO `DEV_DICT` VALUES ('1645103888729425921', '-1', '1645103888729425876', '退款成功', 'REFUND_SUCCESS', 'FRM', 102, NULL, 'NOT_DELETE', '2023-04-10 00:36:52', '1543837863788879871', NULL, NULL);
|
||||
INSERT INTO `DEV_DICT` VALUES ('1645103888729425922', '-1', '1645103888729425876', '退款失败', 'REFUND_FAIL', 'FRM', 102, NULL, 'NOT_DELETE', '2023-04-10 00:36:52', '1543837863788879871', NULL, NULL);
|
||||
|
||||
-- ----------------------------
|
||||
-- 更新原有的两个菜单
|
||||
-- ----------------------------
|
||||
UPDATE `SYS_RESOURCE` SET `TENANT_ID` = '-1', `PARENT_ID` = '1548901111999773236', `TITLE` = '支付示例', `NAME` = 'zhiFuShiLi', `CODE` = 'mep5ficfau', `CATEGORY` = 'MENU', `MODULE` = '1548901111999770525', `MENU_TYPE` = 'MENU', `PATH` = '/pay/sample/index', `COMPONENT` = 'pay/sample/index', `ICON` = 'alert-outlined', `COLOR` = NULL, `SORT_CODE` = 39, `EXT_JSON` = NULL, `DELETE_FLAG` = 'NOT_DELETE', `CREATE_TIME` = NULL, `CREATE_USER` = NULL, `UPDATE_TIME` = NULL, `UPDATE_USER` = NULL WHERE `ID` = '1548901111999773237';
|
||||
UPDATE `SYS_RESOURCE` SET `TENANT_ID` = '-1', `PARENT_ID` = '1548901111999773236', `TITLE` = '订单管理', `NAME` = 'dingDanGuanLi', `CODE` = '7x4pc5az81', `CATEGORY` = 'MENU', `MODULE` = '1548901111999770525', `MENU_TYPE` = 'MENU', `PATH` = '/pay/order', `COMPONENT` = 'pay/order/index', `ICON` = 'clear-outlined', `COLOR` = NULL, `SORT_CODE` = 40, `EXT_JSON` = NULL, `DELETE_FLAG` = 'NOT_DELETE', `CREATE_TIME` = NULL, `CREATE_USER` = NULL, `UPDATE_TIME` = NULL, `UPDATE_USER` = NULL WHERE `ID` = '1548901111999773238';
|
||||
|
||||
-- ----------------------------
|
||||
-- 更新和增加配置
|
||||
-- ----------------------------
|
||||
UPDATE `DEV_CONFIG` SET `TENANT_ID` = '-1', `CONFIG_KEY` = 'SNOWY_PAY_ALI_APP_ID', `CONFIG_VALUE` = '支付宝支付应用id', `CATEGORY` = 'PAY_ALI', `REMARK` = '支付宝支付应用id', `SORT_CODE` = 50, `EXT_JSON` = NULL, `DELETE_FLAG` = 'NOT_DELETE', `CREATE_TIME` = NULL, `CREATE_USER` = NULL, `UPDATE_TIME` = NULL, `UPDATE_USER` = NULL WHERE `ID` = '1554740179362967595';
|
||||
UPDATE `DEV_CONFIG` SET `TENANT_ID` = '-1', `CONFIG_KEY` = 'SNOWY_PAY_ALI_PRIVATE_KEY', `CONFIG_VALUE` = '支付宝支付私钥', `CATEGORY` = 'PAY_ALI', `REMARK` = '支付宝支付私钥', `SORT_CODE` = 51, `EXT_JSON` = NULL, `DELETE_FLAG` = 'NOT_DELETE', `CREATE_TIME` = NULL, `CREATE_USER` = NULL, `UPDATE_TIME` = NULL, `UPDATE_USER` = NULL WHERE `ID` = '1554740179362967596';
|
||||
UPDATE `DEV_CONFIG` SET `TENANT_ID` = '-1', `CONFIG_KEY` = 'SNOWY_PAY_ALI_CERT_PATH', `CONFIG_VALUE` = '支付宝支付证书位置', `CATEGORY` = 'PAY_ALI', `REMARK` = '支付宝支付证书位置', `SORT_CODE` = 52, `EXT_JSON` = NULL, `DELETE_FLAG` = 'NOT_DELETE', `CREATE_TIME` = NULL, `CREATE_USER` = NULL, `UPDATE_TIME` = NULL, `UPDATE_USER` = NULL WHERE `ID` = '1554740179362967597';
|
||||
UPDATE `DEV_CONFIG` SET `TENANT_ID` = '-1', `CONFIG_KEY` = 'SNOWY_PAY_ALI_ROOT_CERT_PATH', `CONFIG_VALUE` = '支付宝支付根证书位置', `CATEGORY` = 'PAY_ALI', `REMARK` = '支付宝支付根证书位置', `SORT_CODE` = 53, `EXT_JSON` = NULL, `DELETE_FLAG` = 'NOT_DELETE', `CREATE_TIME` = NULL, `CREATE_USER` = NULL, `UPDATE_TIME` = NULL, `UPDATE_USER` = NULL WHERE `ID` = '1554740179362967598';
|
||||
UPDATE `DEV_CONFIG` SET `TENANT_ID` = '-1', `CONFIG_KEY` = 'SNOWY_PAY_ALI_APP_CERT_PATH', `CONFIG_VALUE` = '支付宝支付应用证书位置', `CATEGORY` = 'PAY_ALI', `REMARK` = '支付宝支付应用证书位置', `SORT_CODE` = 54, `EXT_JSON` = NULL, `DELETE_FLAG` = 'NOT_DELETE', `CREATE_TIME` = NULL, `CREATE_USER` = NULL, `UPDATE_TIME` = NULL, `UPDATE_USER` = NULL WHERE `ID` = '1554740179362967599';
|
||||
UPDATE `DEV_CONFIG` SET `TENANT_ID` = '-1', `CONFIG_KEY` = 'SNOWY_PAY_ALI_SERVER_URL', `CONFIG_VALUE` = '支付宝支付网关', `CATEGORY` = 'PAY_ALI', `REMARK` = '支付宝支付网关', `SORT_CODE` = 55, `EXT_JSON` = NULL, `DELETE_FLAG` = 'NOT_DELETE', `CREATE_TIME` = NULL, `CREATE_USER` = NULL, `UPDATE_TIME` = NULL, `UPDATE_USER` = NULL WHERE `ID` = '1554740179362967600';
|
||||
UPDATE `DEV_CONFIG` SET `ID` = '1554740179362967701', `TENANT_ID` = '-1', `CONFIG_KEY` = 'SNOWY_PAY_WX_APP_ID', `CONFIG_VALUE` = '微信支付应用id', `CATEGORY` = 'PAY_WX', `REMARK` = '微信支付应用id', `SORT_CODE` = 58, `EXT_JSON` = NULL, `DELETE_FLAG` = 'NOT_DELETE', `CREATE_TIME` = NULL, `CREATE_USER` = NULL, `UPDATE_TIME` = NULL, `UPDATE_USER` = NULL WHERE `ID` = '1554740179362967601';
|
||||
UPDATE `DEV_CONFIG` SET `ID` = '1554740179362967702', `TENANT_ID` = '-1', `CONFIG_KEY` = 'SNOWY_PAY_WX_APP_SECRET', `CONFIG_VALUE` = '微信支付公众号AppSecret', `CATEGORY` = 'PAY_WX', `REMARK` = '微信支付公众号AppSecret', `SORT_CODE` = 59, `EXT_JSON` = NULL, `DELETE_FLAG` = 'NOT_DELETE', `CREATE_TIME` = NULL, `CREATE_USER` = NULL, `UPDATE_TIME` = NULL, `UPDATE_USER` = NULL WHERE `ID` = '1554740179362967602';
|
||||
UPDATE `DEV_CONFIG` SET `ID` = '1554740179362967703', `TENANT_ID` = '-1', `CONFIG_KEY` = 'SNOWY_PAY_WX_MCH_ID', `CONFIG_VALUE` = '微信支付商户号', `CATEGORY` = 'PAY_WX', `REMARK` = '微信支付商户号', `SORT_CODE` = 60, `EXT_JSON` = NULL, `DELETE_FLAG` = 'NOT_DELETE', `CREATE_TIME` = NULL, `CREATE_USER` = NULL, `UPDATE_TIME` = NULL, `UPDATE_USER` = NULL WHERE `ID` = '1554740179362967603';
|
||||
INSERT INTO `DEV_CONFIG` VALUES ('1554740179362967601', '-1', 'SNOWY_PAY_ALI_MCH_USER_ID', '支付宝支付商家用户id', 'PAY_ALI', '支付宝支付商家用户id', 56, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
|
||||
INSERT INTO `DEV_CONFIG` VALUES ('1554740179362967602', '-1', 'SNOWY_PAY_ALI_NOTIFY_URL', '支付宝支付回调地址', 'PAY_ALI', '支付宝支付回调地址', 57, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
|
||||
INSERT INTO `DEV_CONFIG` VALUES ('1554740179362967704', '-1', 'SNOWY_PAY_WX_MCH_KEY', '微信支付商户V2密钥', 'PAY_WX', '微信支付商户V2密钥', 61, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
|
||||
INSERT INTO `DEV_CONFIG` VALUES ('1554740179362967705', '-1', 'SNOWY_PAY_WX_KEY_PATH', '微信支付p12证书路径', 'PAY_WX', '微信支付p12证书路径', 62, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
|
||||
INSERT INTO `DEV_CONFIG` VALUES ('1554740179362967706', '-1', 'SNOWY_PAY_WX_PRIVATE_KEY_PATH', '微信支付apiClientKey路径', 'PAY_WX', '微信支付apiClientKey路径', 63, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
|
||||
INSERT INTO `DEV_CONFIG` VALUES ('1554740179362967707', '-1', 'SNOWY_PAY_WX_PRIVATE_CERT_PATH', '微信支付apiClientCert路径', 'PAY_WX', '微信支付apiClientCert路径', 64, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
|
||||
INSERT INTO `DEV_CONFIG` VALUES ('1554740179362967708', '-1', 'SNOWY_PAY_WX_CERT_SERIAL_NO', '微信支付ApiV3证书序列号值', 'PAY_WX', '微信支付ApiV3证书序列号值', 65, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
|
||||
INSERT INTO `DEV_CONFIG` VALUES ('1554740179362967709', '-1', 'SNOWY_PAY_WX_API_V3_KEY', '微信支付ApiV3密钥值', 'PAY_WX', '微信支付ApiV3密钥值', 66, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
|
||||
INSERT INTO `DEV_CONFIG` VALUES ('1554740179362967710', '-1', 'SNOWY_PAY_WX_NOTIFY_URL', '微信支付回调地址', 'PAY_WX', '微信支付回调地址', 67, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
|
||||
INSERT INTO `DEV_CONFIG` VALUES ('1554740179362967711', '-1', 'SNOWY_PAY_WX_REFUND_NOTIFY_URL', '微信支付退款回调地址', 'PAY_WX', '微信支付退款回调地址', 68, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
|
||||
@@ -0,0 +1,5 @@
|
||||
-- ----------------------------
|
||||
-- 2023.03.14增加用户导出的按钮,记得授权给你需要的角色
|
||||
-- ----------------------------
|
||||
INSERT INTO `SYS_RESOURCE` VALUES ('1623378996099411970', '-1', '1548901111999773979', '导出个人', NULL, 'bizUserExportUserInfo', 'BUTTON', NULL, NULL, NULL, NULL, NULL, NULL, 8, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
|
||||
INSERT INTO `SYS_RESOURCE` VALUES ('1623378996099411971', '-1', '1548901111999773979', '批量导出', NULL, 'bizUserBatchExport', 'BUTTON', NULL, NULL, NULL, NULL, NULL, NULL, 9, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
|
||||
@@ -0,0 +1,8 @@
|
||||
-- ----------------------------
|
||||
-- 2023.03.28更新报表和移动端的菜单的Code标识,在创建ID隔离的租户时初始化这些数据
|
||||
-- ----------------------------
|
||||
UPDATE `SYS_RESOURCE` SET `TENANT_ID` = '-1', `PARENT_ID` = '0', `TITLE` = '报表插件', `NAME` = NULL, `CODE` = 'system', `CATEGORY` = 'MENU', `MODULE` = '1548901111999770525', `MENU_TYPE` = 'CATALOG', `PATH` = '/7021876005451075584', `COMPONENT` = NULL, `ICON` = 'exception-outlined', `COLOR` = NULL, `SORT_CODE` = 99, `EXT_JSON` = NULL, `DELETE_FLAG` = 'NOT_DELETE', `CREATE_TIME` = NULL, `CREATE_USER` = NULL, `UPDATE_TIME` = NULL, `UPDATE_USER` = NULL WHERE `ID` = '1616093440759009282';
|
||||
UPDATE `SYS_RESOURCE` SET `TENANT_ID` = '-1', `PARENT_ID` = '1616093440759009282', `TITLE` = '报表管理', `NAME` = 'urpIndex', `CODE` = '3lyytin4th', `CATEGORY` = 'MENU', `MODULE` = '1548901111999770525', `MENU_TYPE` = 'MENU', `PATH` = '/urp', `COMPONENT` = 'urp/index', `ICON` = 'file-sync-outlined', `COLOR` = NULL, `SORT_CODE` = 99, `EXT_JSON` = NULL, `DELETE_FLAG` = 'NOT_DELETE', `CREATE_TIME` = NULL, `CREATE_USER` = NULL, `UPDATE_TIME` = NULL, `UPDATE_USER` = NULL WHERE `ID` = '1616093737749286914';
|
||||
UPDATE `SYS_RESOURCE` SET `TENANT_ID` = '-1', `PARENT_ID` = '0', `TITLE` = '移动端管理', `NAME` = NULL, `CODE` = 'system', `CATEGORY` = 'MENU', `MODULE` = '1548901111999770525', `MENU_TYPE` = 'CATALOG', `PATH` = '/7029144034425704448', `COMPONENT` = NULL, `ICON` = 'mobile-outlined', `COLOR` = NULL, `SORT_CODE` = 50, `EXT_JSON` = NULL, `DELETE_FLAG` = 'NOT_DELETE', `CREATE_TIME` = NULL, `CREATE_USER` = NULL, `UPDATE_TIME` = NULL, `UPDATE_USER` = NULL WHERE `ID` = '1623378345382506498';
|
||||
UPDATE `SYS_RESOURCE` SET `TENANT_ID` = '-1', `PARENT_ID` = '1623378345382506498', `TITLE` = '模块管理', `NAME` = 'mobileModuleIndex', `CODE` = '0foblmoy96', `CATEGORY` = 'MENU', `MODULE` = '1548901111999770525', `MENU_TYPE` = 'MENU', `PATH` = '/mobile/module/index', `COMPONENT` = 'mobile/resource/module/index', `ICON` = 'build-outlined', `COLOR` = NULL, `SORT_CODE` = 51, `EXT_JSON` = NULL, `DELETE_FLAG` = 'NOT_DELETE', `CREATE_TIME` = NULL, `CREATE_USER` = NULL, `UPDATE_TIME` = NULL, `UPDATE_USER` = NULL WHERE `ID` = '1623378675591671810';
|
||||
UPDATE `SYS_RESOURCE` SET `TENANT_ID` = '-1', `PARENT_ID` = '1623378345382506498', `TITLE` = '菜单管理', `NAME` = 'mobileMenuIndex', `CODE` = 'ctvbreg2eo', `CATEGORY` = 'MENU', `MODULE` = '1548901111999770525', `MENU_TYPE` = 'MENU', `PATH` = '/mobile/menu/index', `COMPONENT` = 'mobile/resource/menu/index', `ICON` = 'appstore-add-outlined', `COLOR` = NULL, `SORT_CODE` = 52, `EXT_JSON` = NULL, `DELETE_FLAG` = 'NOT_DELETE', `CREATE_TIME` = NULL, `CREATE_USER` = NULL, `UPDATE_TIME` = NULL, `UPDATE_USER` = NULL WHERE `ID` = '1623378996099411969';
|
||||
@@ -0,0 +1,8 @@
|
||||
-- ----------------------------
|
||||
-- 2023.06.15更新工作流增强需要的按钮,记得首先将这些按钮授权给超管
|
||||
-- ----------------------------
|
||||
INSERT INTO `SYS_RESOURCE` VALUES ('1662399843526852610', '-1', '1548901111999773982', '跳转流程', NULL, 'flwProcessJump', 'BUTTON', NULL, NULL, NULL, NULL, NULL, NULL, 11, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
|
||||
INSERT INTO `SYS_RESOURCE` VALUES ('1662399915983454210', '-1', '1548901111999773982', '流程变量', NULL, 'flwProcessVariable', 'BUTTON', NULL, NULL, NULL, NULL, NULL, NULL, 12, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
|
||||
INSERT INTO `SYS_RESOURCE` VALUES ('1662400032106954753', '-1', '1548901111999773982', '复活流程', NULL, 'flwProcessRestart', 'BUTTON', NULL, NULL, NULL, NULL, NULL, NULL, 13, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
|
||||
INSERT INTO `SYS_RESOURCE` VALUES ('1662400106392272898', '-1', '1548901111999773982', '迁移流程', NULL, 'flwProcessMigrate', 'BUTTON', NULL, NULL, NULL, NULL, NULL, NULL, 14, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
|
||||
INSERT INTO `SYS_RESOURCE` VALUES ('1662477940200652802', '-1', '1548901111999773982', '编辑变量', NULL, 'flwProcessVariableEdit', 'BUTTON', NULL, NULL, NULL, NULL, NULL, NULL, 15, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
|
||||
@@ -0,0 +1,45 @@
|
||||
-- 创建动态字段表 --
|
||||
DROP TABLE IF EXISTS `DEV_DFC`;
|
||||
CREATE TABLE `DEV_DFC` (
|
||||
`ID` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '主键',
|
||||
`TENANT_ID` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '租户id',
|
||||
`DBS_ID` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '数据源',
|
||||
`TABLE_NAME` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '表名称',
|
||||
`SORT_CODE` int(11) NULL DEFAULT NULL COMMENT '排序码',
|
||||
`NAME` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '表单域属性名',
|
||||
`LABEL` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '标签文本',
|
||||
`REQUIRED` tinyint(1) NULL DEFAULT NULL COMMENT '必填',
|
||||
`PLACEHOLDER` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '提示语',
|
||||
`TYPE` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '类型',
|
||||
`SELECT_OPTION_TYPE` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '选择项类型',
|
||||
`DICT_TYPE_CODE` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '字典',
|
||||
`SEL_OPTION_API_URL` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '选择项api地址',
|
||||
`SEL_DATA_API_URL` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '已选择数据api地址',
|
||||
`IS_MULTIPLE` tinyint(1) NULL DEFAULT NULL COMMENT '是否多选',
|
||||
`DELETE_FLAG` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '删除标志',
|
||||
`CREATE_TIME` datetime NULL DEFAULT NULL COMMENT '创建时间',
|
||||
`CREATE_USER` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '创建用户',
|
||||
`UPDATE_TIME` datetime NULL DEFAULT NULL COMMENT '更新时间',
|
||||
`UPDATE_USER` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '更新用户',
|
||||
PRIMARY KEY (`ID`) USING BTREE
|
||||
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '动态字段' ROW_FORMAT = DYNAMIC;
|
||||
|
||||
-- 字典内容 --
|
||||
INSERT INTO `DEV_DICT` VALUES ('1687104430738157570', '-1', '0', 'DFC类型', 'DFC_TYPE', 'FRM', 105, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
|
||||
INSERT INTO `DEV_DICT` VALUES ('1687104953432322049', '-1', '1687104430738157570', '输入框', 'input', 'FRM', 106, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
|
||||
INSERT INTO `DEV_DICT` VALUES ('1687105046696865793', '-1', '1687104430738157570', '数字输入框', 'number', 'FRM', 106, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
|
||||
INSERT INTO `DEV_DICT` VALUES ('1687521605483429890', '-1', '1687104430738157570', '多行文本', 'textarea', 'FRM', 106, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
|
||||
INSERT INTO `DEV_DICT` VALUES ('1688098040816222209', '-1', '1687104430738157570', '单选框', 'radio', 'FRM', 106, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
|
||||
INSERT INTO `DEV_DICT` VALUES ('1688130427063316481', '-1', '1687104430738157570', '多选框', 'checkbox', 'FRM', 106, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
|
||||
INSERT INTO `DEV_DICT` VALUES ('1688133068094910466', '-1', '0', 'DFC选择项类型', 'DFC_SELECT_OPTION_TYPE', 'FRM', 107, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
|
||||
INSERT INTO `DEV_DICT` VALUES ('1688133571604328450', '-1', '1688133068094910466', '字典', 'DICT', 'FRM', 108, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
|
||||
INSERT INTO `DEV_DICT` VALUES ('1688133651887501313', '-1', '1688133068094910466', '接口', 'API', 'FRM', 108, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
|
||||
INSERT INTO `DEV_DICT` VALUES ('1688153828247154689', '-1', '1687104430738157570', '下拉选择', 'select', 'FRM', 106, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
|
||||
INSERT INTO `DEV_DICT` VALUES ('1688200409285578754', '-1', '1687104430738157570', '分页下拉选择', 'pageSelect', 'FRM', 106, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
|
||||
|
||||
-- 菜单内容 --
|
||||
INSERT INTO `SYS_RESOURCE` VALUES ('1687256714411425794', '-1', '1548901111999773250', '动态字段', 'dfc', 'j6ndvl7qyc', 'MENU', '1548901111999770525', 'MENU', '/dev/dfc', 'dev/dfc/index', 'chrome-filled', NULL, 99, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
|
||||
INSERT INTO `SYS_RESOURCE` VALUES ('1689891405367353346', '-1', '0', '业务字典', 'bizDict', NULL, 'MENU', '1548901111999773976', 'MENU', '/biz/dict/index', 'biz/dict/index', 'read-outlined', NULL, 12, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
|
||||
INSERT INTO `SYS_RESOURCE` VALUES ('1689892202679377921', '-1', '1689891405367353346', '编辑字典', NULL, 'bizDictEdit', 'BUTTON', NULL, NULL, NULL, NULL, NULL, NULL, 1, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
|
||||
INSERT INTO `SYS_RESOURCE` VALUES ('1689894316554067969', '-1', '1548901111999773328', '高德地图', 'gaodeMap', NULL, 'MENU', '1548901111999770525', 'MENU', '/exm/map/gaodeMap', 'exm/map/gaodeMap', 'environment-outlined', NULL, 99, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
|
||||
INSERT INTO `SYS_RESOURCE` VALUES ('1689894577238450177', '-1', '1548901111999773328', '百度地图', 'baiduMap', NULL, 'MENU', '1548901111999770525', 'MENU', '/exm/map/baiduMap', 'exm/map/baiduMap', 'compass-outlined', NULL, 99, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
|
||||
@@ -0,0 +1,26 @@
|
||||
-- ----------------------------
|
||||
-- 2023.01.27新增报表的相关字典、菜单
|
||||
-- ----------------------------
|
||||
SET NAMES utf8mb4;
|
||||
SET FOREIGN_KEY_CHECKS = 0;
|
||||
|
||||
-- ----------------------------
|
||||
-- Records of DEV_DICT
|
||||
-- ----------------------------
|
||||
INSERT INTO `DEV_DICT` VALUES ('1616096848417099778', '-1', '0', '报表内容分类', 'URP_CATEGORY', 'FRM', 81, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
|
||||
INSERT INTO `DEV_DICT` VALUES ('1616096961445203970', '-1', '1616096848417099778', '技术类', 'TECH', 'FRM', 82, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
|
||||
INSERT INTO `DEV_DICT` VALUES ('1618973431700992002', '-1', '1616096848417099778', '商务类', 'BUS', 'FRM', 83, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
|
||||
INSERT INTO `DEV_DICT` VALUES ('1618977132125708290', '-1', '1616096848417099778', '其他类', 'OTHER', 'FRM', 84, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
|
||||
|
||||
-- ----------------------------
|
||||
-- Records of SYS_RELATION
|
||||
-- ----------------------------
|
||||
INSERT INTO `SYS_RELATION` VALUES ('1616096210090168361', '-1', '1570687866138206208', '1616093737749286914', 'SYS_ROLE_HAS_RESOURCE', '{\"menuId\":\"1616093737749286914\",\"buttonInfo\":[]}');
|
||||
|
||||
-- ----------------------------
|
||||
-- Records of sys_resource
|
||||
-- ----------------------------
|
||||
INSERT INTO `SYS_RESOURCE` VALUES ('1616093440759009282', '-1', '0', '报表插件', NULL, NULL, 'MENU', '1548901111999770525', 'CATALOG', '/7021876005451075584', NULL, 'exception-outlined', NULL, 99, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
|
||||
INSERT INTO `SYS_RESOURCE` VALUES ('1616093737749286914', '-1', '1616093440759009282', '报表管理', 'urpIndex', NULL, 'MENU', '1548901111999770525', 'MENU', '/urp', 'urp/index', 'file-sync-outlined', NULL, 99, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
|
||||
|
||||
SET FOREIGN_KEY_CHECKS = 1;
|
||||
@@ -0,0 +1,225 @@
|
||||
-- ----------------------------
|
||||
-- 创建订单表
|
||||
-- ----------------------------
|
||||
CREATE TABLE "SNOWY"."PAY_ORDER" (
|
||||
"ID" NVARCHAR2(20) NOT NULL,
|
||||
"TENANT_ID" NVARCHAR2(20),
|
||||
"OUT_TRADE_NO" NVARCHAR2(255),
|
||||
"TRADE_NO" NVARCHAR2(255),
|
||||
"SUBJECT" NVARCHAR2(255),
|
||||
"BODY" NVARCHAR2(255),
|
||||
"ORDER_AMOUNT" NVARCHAR2(255),
|
||||
"PAY_USER_ID" NVARCHAR2(255),
|
||||
"PAY_ACCOUNT" NVARCHAR2(255),
|
||||
"PAY_AMOUNT" NVARCHAR2(255),
|
||||
"PAY_PLATFORM" NVARCHAR2(255),
|
||||
"PAY_STATUS" NVARCHAR2(255),
|
||||
"PAY_TIME" DATE,
|
||||
"HAS_REFUND" NVARCHAR2(255),
|
||||
"DELETE_FLAG" NVARCHAR2(255),
|
||||
"CREATE_TIME" DATE,
|
||||
"CREATE_USER" NVARCHAR2(20),
|
||||
"UPDATE_TIME" DATE,
|
||||
"UPDATE_USER" NVARCHAR2(20)
|
||||
)
|
||||
LOGGING
|
||||
NOCOMPRESS
|
||||
PCTFREE 10
|
||||
INITRANS 1
|
||||
STORAGE (
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
MINEXTENTS 1
|
||||
MAXEXTENTS 2147483645
|
||||
BUFFER_POOL DEFAULT
|
||||
)
|
||||
PARALLEL 1
|
||||
NOCACHE
|
||||
DISABLE ROW MOVEMENT
|
||||
;
|
||||
COMMENT ON COLUMN "SNOWY"."PAY_ORDER"."TENANT_ID" IS '租户id';
|
||||
COMMENT ON COLUMN "SNOWY"."PAY_ORDER"."OUT_TRADE_NO" IS '商户订单号';
|
||||
COMMENT ON COLUMN "SNOWY"."PAY_ORDER"."TRADE_NO" IS '支付平台订单号';
|
||||
COMMENT ON COLUMN "SNOWY"."PAY_ORDER"."SUBJECT" IS '订单标题';
|
||||
COMMENT ON COLUMN "SNOWY"."PAY_ORDER"."BODY" IS '订单描述';
|
||||
COMMENT ON COLUMN "SNOWY"."PAY_ORDER"."ORDER_AMOUNT" IS '订单金额';
|
||||
COMMENT ON COLUMN "SNOWY"."PAY_ORDER"."PAY_USER_ID" IS '买家id';
|
||||
COMMENT ON COLUMN "SNOWY"."PAY_ORDER"."PAY_ACCOUNT" IS '买家账号';
|
||||
COMMENT ON COLUMN "SNOWY"."PAY_ORDER"."PAY_AMOUNT" IS '支付金额';
|
||||
COMMENT ON COLUMN "SNOWY"."PAY_ORDER"."PAY_PLATFORM" IS '支付平台';
|
||||
COMMENT ON COLUMN "SNOWY"."PAY_ORDER"."PAY_STATUS" IS '支付状态';
|
||||
COMMENT ON COLUMN "SNOWY"."PAY_ORDER"."PAY_TIME" IS '支付时间';
|
||||
COMMENT ON COLUMN "SNOWY"."PAY_ORDER"."HAS_REFUND" IS '退款标志';
|
||||
COMMENT ON COLUMN "SNOWY"."PAY_ORDER"."DELETE_FLAG" IS '删除标志';
|
||||
COMMENT ON COLUMN "SNOWY"."PAY_ORDER"."CREATE_TIME" IS '创建时间';
|
||||
COMMENT ON COLUMN "SNOWY"."PAY_ORDER"."CREATE_USER" IS '创建用户';
|
||||
COMMENT ON COLUMN "SNOWY"."PAY_ORDER"."UPDATE_TIME" IS '修改时间';
|
||||
COMMENT ON COLUMN "SNOWY"."PAY_ORDER"."UPDATE_USER" IS '修改用户';
|
||||
COMMENT ON TABLE "SNOWY"."PAY_ORDER" IS '订单';
|
||||
|
||||
-- ----------------------------
|
||||
-- 创建订单明细表
|
||||
-- ----------------------------
|
||||
CREATE TABLE "SNOWY"."PAY_ORDER_DETAILS" (
|
||||
"ID" NVARCHAR2(20) NOT NULL,
|
||||
"TENANT_ID" NVARCHAR2(20),
|
||||
"ORDER_ID" NVARCHAR2(20),
|
||||
"PRODUCT_ID" NVARCHAR2(20),
|
||||
"PRODUCT_NAME" NVARCHAR2(255),
|
||||
"PRODUCT_AMOUNT" NVARCHAR2(255),
|
||||
"PRODUCT_COUNT" NUMBER(11,0),
|
||||
"DELETE_FLAG" NVARCHAR2(255),
|
||||
"CREATE_TIME" DATE,
|
||||
"CREATE_USER" NVARCHAR2(20),
|
||||
"UPDATE_TIME" DATE,
|
||||
"UPDATE_USER" NVARCHAR2(20)
|
||||
)
|
||||
LOGGING
|
||||
NOCOMPRESS
|
||||
PCTFREE 10
|
||||
INITRANS 1
|
||||
STORAGE (
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
MINEXTENTS 1
|
||||
MAXEXTENTS 2147483645
|
||||
BUFFER_POOL DEFAULT
|
||||
)
|
||||
PARALLEL 1
|
||||
NOCACHE
|
||||
DISABLE ROW MOVEMENT
|
||||
;
|
||||
COMMENT ON COLUMN "SNOWY"."PAY_ORDER_DETAILS"."ID" IS 'id';
|
||||
COMMENT ON COLUMN "SNOWY"."PAY_ORDER_DETAILS"."TENANT_ID" IS '租户id';
|
||||
COMMENT ON COLUMN "SNOWY"."PAY_ORDER_DETAILS"."ORDER_ID" IS '订单id';
|
||||
COMMENT ON COLUMN "SNOWY"."PAY_ORDER_DETAILS"."PRODUCT_ID" IS '产品id';
|
||||
COMMENT ON COLUMN "SNOWY"."PAY_ORDER_DETAILS"."PRODUCT_NAME" IS '产品名称';
|
||||
COMMENT ON COLUMN "SNOWY"."PAY_ORDER_DETAILS"."PRODUCT_AMOUNT" IS '产品价格';
|
||||
COMMENT ON COLUMN "SNOWY"."PAY_ORDER_DETAILS"."PRODUCT_COUNT" IS '产品数量';
|
||||
COMMENT ON COLUMN "SNOWY"."PAY_ORDER_DETAILS"."DELETE_FLAG" IS '删除标志';
|
||||
COMMENT ON COLUMN "SNOWY"."PAY_ORDER_DETAILS"."CREATE_TIME" IS '创建时间';
|
||||
COMMENT ON COLUMN "SNOWY"."PAY_ORDER_DETAILS"."CREATE_USER" IS '创建用户';
|
||||
COMMENT ON COLUMN "SNOWY"."PAY_ORDER_DETAILS"."UPDATE_TIME" IS '修改时间';
|
||||
COMMENT ON COLUMN "SNOWY"."PAY_ORDER_DETAILS"."UPDATE_USER" IS '修改用户';
|
||||
COMMENT ON TABLE "SNOWY"."PAY_ORDER_DETAILS" IS '订单明细';
|
||||
|
||||
-- ----------------------------
|
||||
-- 创建订单退款表
|
||||
-- ----------------------------
|
||||
CREATE TABLE "SNOWY"."PAY_ORDER_REFUND" (
|
||||
"ID" NVARCHAR2(20) NOT NULL,
|
||||
"TENANT_ID" NVARCHAR2(20),
|
||||
"ORDER_ID" NVARCHAR2(20),
|
||||
"OUT_TRADE_NO" NVARCHAR2(255),
|
||||
"TRADE_NO" NVARCHAR2(255),
|
||||
"REFUND_NO" NVARCHAR2(255),
|
||||
"REFUND_USER_ID" NVARCHAR2(255),
|
||||
"REFUND_ACCOUNT" NVARCHAR2(255),
|
||||
"REFUND_AMOUNT" NVARCHAR2(255),
|
||||
"REFUND_STATUS" NVARCHAR2(255),
|
||||
"REFUND_TIME" DATE,
|
||||
"DELETE_FLAG" NVARCHAR2(255),
|
||||
"CREATE_TIME" DATE,
|
||||
"CREATE_USER" NVARCHAR2(20),
|
||||
"UPDATE_TIME" DATE,
|
||||
"UPDATE_USER" NVARCHAR2(20)
|
||||
)
|
||||
LOGGING
|
||||
NOCOMPRESS
|
||||
PCTFREE 10
|
||||
INITRANS 1
|
||||
STORAGE (
|
||||
INITIAL 65536
|
||||
NEXT 1048576
|
||||
MINEXTENTS 1
|
||||
MAXEXTENTS 2147483645
|
||||
BUFFER_POOL DEFAULT
|
||||
)
|
||||
PARALLEL 1
|
||||
NOCACHE
|
||||
DISABLE ROW MOVEMENT
|
||||
;
|
||||
COMMENT ON COLUMN "SNOWY"."PAY_ORDER_REFUND"."TENANT_ID" IS '租户id';
|
||||
COMMENT ON COLUMN "SNOWY"."PAY_ORDER_REFUND"."ORDER_ID" IS '订单id';
|
||||
COMMENT ON COLUMN "SNOWY"."PAY_ORDER_REFUND"."OUT_TRADE_NO" IS '商户订单号';
|
||||
COMMENT ON COLUMN "SNOWY"."PAY_ORDER_REFUND"."TRADE_NO" IS '支付平台退款单号';
|
||||
COMMENT ON COLUMN "SNOWY"."PAY_ORDER_REFUND"."REFUND_NO" IS '商户退款单号';
|
||||
COMMENT ON COLUMN "SNOWY"."PAY_ORDER_REFUND"."REFUND_USER_ID" IS '退款到买家id';
|
||||
COMMENT ON COLUMN "SNOWY"."PAY_ORDER_REFUND"."REFUND_ACCOUNT" IS '退款到买家账号';
|
||||
COMMENT ON COLUMN "SNOWY"."PAY_ORDER_REFUND"."REFUND_AMOUNT" IS '退款金额';
|
||||
COMMENT ON COLUMN "SNOWY"."PAY_ORDER_REFUND"."REFUND_STATUS" IS '退款状态';
|
||||
COMMENT ON COLUMN "SNOWY"."PAY_ORDER_REFUND"."REFUND_TIME" IS '退款时间';
|
||||
COMMENT ON COLUMN "SNOWY"."PAY_ORDER_REFUND"."DELETE_FLAG" IS '删除标志';
|
||||
COMMENT ON COLUMN "SNOWY"."PAY_ORDER_REFUND"."CREATE_TIME" IS '创建时间';
|
||||
COMMENT ON COLUMN "SNOWY"."PAY_ORDER_REFUND"."CREATE_USER" IS '创建用户';
|
||||
COMMENT ON COLUMN "SNOWY"."PAY_ORDER_REFUND"."UPDATE_TIME" IS '修改时间';
|
||||
COMMENT ON COLUMN "SNOWY"."PAY_ORDER_REFUND"."UPDATE_USER" IS '修改用户';
|
||||
COMMENT ON TABLE "SNOWY"."PAY_ORDER_REFUND" IS '订单退款';
|
||||
|
||||
-- ----------------------------
|
||||
-- Checks structure for table PAY_ORDER
|
||||
-- ----------------------------
|
||||
ALTER TABLE "SNOWY"."PAY_ORDER" ADD CONSTRAINT "SYS_C0011382" CHECK ("ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE;
|
||||
|
||||
-- ----------------------------
|
||||
-- Checks structure for table PAY_ORDER_DETAILS
|
||||
-- ----------------------------
|
||||
ALTER TABLE "SNOWY"."PAY_ORDER_DETAILS" ADD CONSTRAINT "SYS_C0011383" CHECK ("ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE;
|
||||
|
||||
-- ----------------------------
|
||||
-- Checks structure for table PAY_ORDER_REFUND
|
||||
-- ----------------------------
|
||||
ALTER TABLE "SNOWY"."PAY_ORDER_REFUND" ADD CONSTRAINT "SYS_C0011384" CHECK ("ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE;
|
||||
|
||||
-- ----------------------------
|
||||
-- 新增支付相关字典
|
||||
-- ----------------------------
|
||||
INSERT INTO "SNOWY"."DEV_DICT"("ID", "TENANT_ID", "PARENT_ID", "DICT_LABEL", "DICT_VALUE", "CATEGORY", "SORT_CODE", "EXT_JSON", "DELETE_FLAG", "CREATE_TIME", "CREATE_USER", "UPDATE_TIME", "UPDATE_USER") VALUES ('1645103344661086210', '-1', '0', '支付订单平台', 'PAY_PLATFORM', 'FRM', '100', NULL, 'NOT_DELETE', TO_DATE('2023-04-10 00:36:17', 'SYYYY-MM-DD HH24:MI:SS'), '1543837863788879871', NULL, NULL);
|
||||
INSERT INTO "SNOWY"."DEV_DICT"("ID", "TENANT_ID", "PARENT_ID", "DICT_LABEL", "DICT_VALUE", "CATEGORY", "SORT_CODE", "EXT_JSON", "DELETE_FLAG", "CREATE_TIME", "CREATE_USER", "UPDATE_TIME", "UPDATE_USER") VALUES ('1645103422368956417', '-1', '1645103344661086210', '支付宝', 'ALIPAY', 'FRM', '101', NULL, 'NOT_DELETE', TO_DATE('2023-04-10 00:36:35', 'SYYYY-MM-DD HH24:MI:SS'), '1543837863788879871', NULL, NULL);
|
||||
INSERT INTO "SNOWY"."DEV_DICT"("ID", "TENANT_ID", "PARENT_ID", "DICT_LABEL", "DICT_VALUE", "CATEGORY", "SORT_CODE", "EXT_JSON", "DELETE_FLAG", "CREATE_TIME", "CREATE_USER", "UPDATE_TIME", "UPDATE_USER") VALUES ('1645103492682268673', '-1', '1645103344661086210', '微信支付', 'WXPAY', 'FRM', '102', NULL, 'NOT_DELETE', TO_DATE('2023-04-10 00:36:52', 'SYYYY-MM-DD HH24:MI:SS'), '1543837863788879871', NULL, NULL);
|
||||
INSERT INTO "SNOWY"."DEV_DICT"("ID", "TENANT_ID", "PARENT_ID", "DICT_LABEL", "DICT_VALUE", "CATEGORY", "SORT_CODE", "EXT_JSON", "DELETE_FLAG", "CREATE_TIME", "CREATE_USER", "UPDATE_TIME", "UPDATE_USER") VALUES ('1645103888729423874', '-1', '0', '支付订单状态', 'PAY_STATUS', 'FRM', '103', NULL, 'NOT_DELETE', TO_DATE('2023-04-10 00:38:26', 'SYYYY-MM-DD HH24:MI:SS'), '1543837863788879871', NULL, NULL);
|
||||
INSERT INTO "SNOWY"."DEV_DICT"("ID", "TENANT_ID", "PARENT_ID", "DICT_LABEL", "DICT_VALUE", "CATEGORY", "SORT_CODE", "EXT_JSON", "DELETE_FLAG", "CREATE_TIME", "CREATE_USER", "UPDATE_TIME", "UPDATE_USER") VALUES ('1645103888729424861', '-1', '1645103888729423874', '已下单', 'NO_TRADE', 'FRM', '104', NULL, 'NOT_DELETE', TO_DATE('2023-04-10 00:38:47', 'SYYYY-MM-DD HH24:MI:SS'), '1543837863788879871', NULL, NULL);
|
||||
INSERT INTO "SNOWY"."DEV_DICT"("ID", "TENANT_ID", "PARENT_ID", "DICT_LABEL", "DICT_VALUE", "CATEGORY", "SORT_CODE", "EXT_JSON", "DELETE_FLAG", "CREATE_TIME", "CREATE_USER", "UPDATE_TIME", "UPDATE_USER") VALUES ('1645103888729424862', '-1', '1645103888729423874', '暂未支付', 'NOTPAY', 'FRM', '104', NULL, 'NOT_DELETE', TO_DATE('2023-04-10 00:38:47', 'SYYYY-MM-DD HH24:MI:SS'), '1543837863788879871', NULL, NULL);
|
||||
INSERT INTO "SNOWY"."DEV_DICT"("ID", "TENANT_ID", "PARENT_ID", "DICT_LABEL", "DICT_VALUE", "CATEGORY", "SORT_CODE", "EXT_JSON", "DELETE_FLAG", "CREATE_TIME", "CREATE_USER", "UPDATE_TIME", "UPDATE_USER") VALUES ('1645103888729424863', '-1', '1645103888729423874', '等待支付', 'USERPAYING', 'FRM', '104', NULL, 'NOT_DELETE', TO_DATE('2023-04-10 00:38:47', 'SYYYY-MM-DD HH24:MI:SS'), '1543837863788879871', NULL, NULL);
|
||||
INSERT INTO "SNOWY"."DEV_DICT"("ID", "TENANT_ID", "PARENT_ID", "DICT_LABEL", "DICT_VALUE", "CATEGORY", "SORT_CODE", "EXT_JSON", "DELETE_FLAG", "CREATE_TIME", "CREATE_USER", "UPDATE_TIME", "UPDATE_USER") VALUES ('1645103888729424864', '-1', '1645103888729423874', '等待支付', 'WAIT_BUYER_PAY', 'FRM', '104', NULL, 'NOT_DELETE', TO_DATE('2023-04-10 00:38:47', 'SYYYY-MM-DD HH24:MI:SS'), '1543837863788879871', NULL, NULL);
|
||||
INSERT INTO "SNOWY"."DEV_DICT"("ID", "TENANT_ID", "PARENT_ID", "DICT_LABEL", "DICT_VALUE", "CATEGORY", "SORT_CODE", "EXT_JSON", "DELETE_FLAG", "CREATE_TIME", "CREATE_USER", "UPDATE_TIME", "UPDATE_USER") VALUES ('1645103888729424865', '-1', '1645103888729423874', '支付成功', 'SUCCESS', 'FRM', '104', NULL, 'NOT_DELETE', TO_DATE('2023-04-10 00:38:47', 'SYYYY-MM-DD HH24:MI:SS'), '1543837863788879871', NULL, NULL);
|
||||
INSERT INTO "SNOWY"."DEV_DICT"("ID", "TENANT_ID", "PARENT_ID", "DICT_LABEL", "DICT_VALUE", "CATEGORY", "SORT_CODE", "EXT_JSON", "DELETE_FLAG", "CREATE_TIME", "CREATE_USER", "UPDATE_TIME", "UPDATE_USER") VALUES ('1645103888729424866', '-1', '1645103888729423874', '支付成功', 'TRADE_SUCCESS', 'FRM', '104', NULL, 'NOT_DELETE', TO_DATE('2023-04-10 00:38:47', 'SYYYY-MM-DD HH24:MI:SS'), '1543837863788879871', NULL, NULL);
|
||||
INSERT INTO "SNOWY"."DEV_DICT"("ID", "TENANT_ID", "PARENT_ID", "DICT_LABEL", "DICT_VALUE", "CATEGORY", "SORT_CODE", "EXT_JSON", "DELETE_FLAG", "CREATE_TIME", "CREATE_USER", "UPDATE_TIME", "UPDATE_USER") VALUES ('1645103888729424867', '-1', '1645103888729423874', '支付失败', 'PAYERROR', 'FRM', '104', NULL, 'NOT_DELETE', TO_DATE('2023-04-10 00:38:47', 'SYYYY-MM-DD HH24:MI:SS'), '1543837863788879871', NULL, NULL);
|
||||
INSERT INTO "SNOWY"."DEV_DICT"("ID", "TENANT_ID", "PARENT_ID", "DICT_LABEL", "DICT_VALUE", "CATEGORY", "SORT_CODE", "EXT_JSON", "DELETE_FLAG", "CREATE_TIME", "CREATE_USER", "UPDATE_TIME", "UPDATE_USER") VALUES ('1645103888729424868', '-1', '1645103888729423874', '转入退款', 'REFUND', 'FRM', '104', NULL, 'NOT_DELETE', TO_DATE('2023-04-10 00:38:47', 'SYYYY-MM-DD HH24:MI:SS'), '1543837863788879871', NULL, NULL);
|
||||
INSERT INTO "SNOWY"."DEV_DICT"("ID", "TENANT_ID", "PARENT_ID", "DICT_LABEL", "DICT_VALUE", "CATEGORY", "SORT_CODE", "EXT_JSON", "DELETE_FLAG", "CREATE_TIME", "CREATE_USER", "UPDATE_TIME", "UPDATE_USER") VALUES ('1645103888729424869', '-1', '1645103888729423874', '交易撤销', 'REVOKED', 'FRM', '104', NULL, 'NOT_DELETE', TO_DATE('2023-04-10 00:38:47', 'SYYYY-MM-DD HH24:MI:SS'), '1543837863788879871', NULL, NULL);
|
||||
INSERT INTO "SNOWY"."DEV_DICT"("ID", "TENANT_ID", "PARENT_ID", "DICT_LABEL", "DICT_VALUE", "CATEGORY", "SORT_CODE", "EXT_JSON", "DELETE_FLAG", "CREATE_TIME", "CREATE_USER", "UPDATE_TIME", "UPDATE_USER") VALUES ('1645103888729424870', '-1', '1645103888729423874', '交易关闭', 'CLOSED', 'FRM', '105', NULL, 'NOT_DELETE', TO_DATE('2023-04-10 00:39:08', 'SYYYY-MM-DD HH24:MI:SS'), '1543837863788879871', NULL, NULL);
|
||||
INSERT INTO "SNOWY"."DEV_DICT"("ID", "TENANT_ID", "PARENT_ID", "DICT_LABEL", "DICT_VALUE", "CATEGORY", "SORT_CODE", "EXT_JSON", "DELETE_FLAG", "CREATE_TIME", "CREATE_USER", "UPDATE_TIME", "UPDATE_USER") VALUES ('1645103888729424871', '-1', '1645103888729423874', '交易关闭', 'TRADE_CLOSED', 'FRM', '106', NULL, 'NOT_DELETE', TO_DATE('2023-04-10 01:02:18', 'SYYYY-MM-DD HH24:MI:SS'), '1543837863788879871', NULL, NULL);
|
||||
INSERT INTO "SNOWY"."DEV_DICT"("ID", "TENANT_ID", "PARENT_ID", "DICT_LABEL", "DICT_VALUE", "CATEGORY", "SORT_CODE", "EXT_JSON", "DELETE_FLAG", "CREATE_TIME", "CREATE_USER", "UPDATE_TIME", "UPDATE_USER") VALUES ('1645103888729424872', '-1', '1645103888729423874', '交易结束', 'TRADE_FINISHED', 'FRM', '107', NULL, 'NOT_DELETE', TO_DATE('2023-04-10 01:03:14', 'SYYYY-MM-DD HH24:MI:SS'), '1543837863788879871', NULL, NULL);
|
||||
INSERT INTO "SNOWY"."DEV_DICT"("ID", "TENANT_ID", "PARENT_ID", "DICT_LABEL", "DICT_VALUE", "CATEGORY", "SORT_CODE", "EXT_JSON", "DELETE_FLAG", "CREATE_TIME", "CREATE_USER", "UPDATE_TIME", "UPDATE_USER") VALUES ('1645103888729425876', '-1', '0', '订单退款状态', 'PAY_ORDER_REFUND_STATUS', 'FRM', '100', NULL, 'NOT_DELETE', TO_DATE('2023-04-10 00:36:17', 'SYYYY-MM-DD HH24:MI:SS'), '1543837863788879871', NULL, NULL);
|
||||
INSERT INTO "SNOWY"."DEV_DICT"("ID", "TENANT_ID", "PARENT_ID", "DICT_LABEL", "DICT_VALUE", "CATEGORY", "SORT_CODE", "EXT_JSON", "DELETE_FLAG", "CREATE_TIME", "CREATE_USER", "UPDATE_TIME", "UPDATE_USER") VALUES ('1645103888729425920', '-1', '1645103888729425876', '退款处理中', 'REFUND_PENDING', 'FRM', '101', NULL, 'NOT_DELETE', TO_DATE('2023-04-10 00:36:35', 'SYYYY-MM-DD HH24:MI:SS'), '1543837863788879871', NULL, NULL);
|
||||
INSERT INTO "SNOWY"."DEV_DICT"("ID", "TENANT_ID", "PARENT_ID", "DICT_LABEL", "DICT_VALUE", "CATEGORY", "SORT_CODE", "EXT_JSON", "DELETE_FLAG", "CREATE_TIME", "CREATE_USER", "UPDATE_TIME", "UPDATE_USER") VALUES ('1645103888729425921', '-1', '1645103888729425876', '退款成功', 'REFUND_SUCCESS', 'FRM', '102', NULL, 'NOT_DELETE', TO_DATE('2023-04-10 00:36:52', 'SYYYY-MM-DD HH24:MI:SS'), '1543837863788879871', NULL, NULL);
|
||||
INSERT INTO "SNOWY"."DEV_DICT"("ID", "TENANT_ID", "PARENT_ID", "DICT_LABEL", "DICT_VALUE", "CATEGORY", "SORT_CODE", "EXT_JSON", "DELETE_FLAG", "CREATE_TIME", "CREATE_USER", "UPDATE_TIME", "UPDATE_USER") VALUES ('1645103888729425922', '-1', '1645103888729425876', '退款失败', 'REFUND_FAIL', 'FRM', '102', NULL, 'NOT_DELETE', TO_DATE('2023-04-10 00:36:52', 'SYYYY-MM-DD HH24:MI:SS'), '1543837863788879871', NULL, NULL);
|
||||
|
||||
-- ----------------------------
|
||||
-- 更新原有的两个菜单
|
||||
-- ----------------------------
|
||||
UPDATE "SNOWY"."SYS_RESOURCE" SET "ID" = '1548901111999773237', "TENANT_ID" = '-1', "PARENT_ID" = '1548901111999773236', "TITLE" = '支付示例', "NAME" = 'zhiFuShiLi', "CODE" = 'mep5ficfau', "CATEGORY" = 'MENU', "MODULE" = '1548901111999770525', "MENU_TYPE" = 'MENU', "PATH" = '/pay/sample/index', "COMPONENT" = 'pay/sample/index', "ICON" = 'alert-outlined', "COLOR" = NULL, "SORT_CODE" = '39', "EXT_JSON" = NULL, "DELETE_FLAG" = 'NOT_DELETE', "CREATE_TIME" = NULL, "CREATE_USER" = NULL, "UPDATE_TIME" = NULL, "UPDATE_USER" = NULL WHERE "ID" = '1548901111999773237' AND "TENANT_ID" = '-1' AND "PARENT_ID" = '1548901111999773236' AND "TITLE" = '支付示例' AND "NAME" = 'zhiFuShiLi' AND "CODE" = 'mep5ficfau' AND "CATEGORY" = 'MENU' AND "MODULE" = '1548901111999770525' AND "MENU_TYPE" = 'MENU' AND "PATH" = '/pay/sample/index' AND "COMPONENT" = 'pay/sample/index' AND "ICON" = 'alert-outlined' AND "COLOR" IS NULL AND "SORT_CODE" = '39' AND "EXT_JSON" IS NULL AND "DELETE_FLAG" = 'NOT_DELETE' AND "CREATE_TIME" IS NULL AND "CREATE_USER" IS NULL AND "UPDATE_TIME" IS NULL AND "UPDATE_USER" IS NULL;
|
||||
UPDATE "SNOWY"."SYS_RESOURCE" SET "ID" = '1548901111999773238', "TENANT_ID" = '-1', "PARENT_ID" = '1548901111999773236', "TITLE" = '订单管理', "NAME" = 'dingDanGuanLi', "CODE" = '7x4pc5az81', "CATEGORY" = 'MENU', "MODULE" = '1548901111999770525', "MENU_TYPE" = 'MENU', "PATH" = '/pay/order', "COMPONENT" = 'pay/order/index', "ICON" = 'clear-outlined', "COLOR" = NULL, "SORT_CODE" = '40', "EXT_JSON" = NULL, "DELETE_FLAG" = 'NOT_DELETE', "CREATE_TIME" = NULL, "CREATE_USER" = NULL, "UPDATE_TIME" = NULL, "UPDATE_USER" = NULL WHERE "ID" = '1548901111999773238' AND "TENANT_ID" = '-1' AND "PARENT_ID" = '1548901111999773236' AND "TITLE" = '订单管理' AND "NAME" = 'dingDanGuanLi' AND "CODE" = '7x4pc5az81' AND "CATEGORY" = 'MENU' AND "MODULE" = '1548901111999770525' AND "MENU_TYPE" = 'MENU' AND "PATH" = '/pay/order' AND "COMPONENT" = 'pay/order/index' AND "ICON" = 'clear-outlined' AND "COLOR" IS NULL AND "SORT_CODE" = '40' AND "EXT_JSON" IS NULL AND "DELETE_FLAG" = 'NOT_DELETE' AND "CREATE_TIME" IS NULL AND "CREATE_USER" IS NULL AND "UPDATE_TIME" IS NULL AND "UPDATE_USER" IS NULL;
|
||||
|
||||
-- ----------------------------
|
||||
-- 更新和增加配置
|
||||
-- ----------------------------
|
||||
UPDATE "SNOWY"."DEV_CONFIG" SET "ID" = '1554740179362967595', "TENANT_ID" = '-1', "CONFIG_KEY" = 'SNOWY_PAY_ALI_APP_ID', "CONFIG_VALUE" = '支付宝支付应用id', "CATEGORY" = 'PAY_ALI', "REMARK" = '支付宝支付应用id', "SORT_CODE" = '50', "EXT_JSON" = NULL, "DELETE_FLAG" = 'NOT_DELETE', "CREATE_TIME" = NULL, "CREATE_USER" = NULL, "UPDATE_TIME" = NULL, "UPDATE_USER" = NULL WHERE "ID" = '1554740179362967595' AND "TENANT_ID" = '-1' AND "CONFIG_KEY" = 'SNOWY_PAY_ALI_APP_ID' AND "CONFIG_VALUE" = '支付宝支付应用id' AND "CATEGORY" = 'PAY_ALI' AND "REMARK" = '支付宝支付应用id' AND "SORT_CODE" = '50' AND "EXT_JSON" IS NULL AND "DELETE_FLAG" = 'NOT_DELETE' AND "CREATE_TIME" IS NULL AND "CREATE_USER" IS NULL AND "UPDATE_TIME" IS NULL AND "UPDATE_USER" IS NULL;
|
||||
UPDATE "SNOWY"."DEV_CONFIG" SET "ID" = '1554740179362967596', "TENANT_ID" = '-1', "CONFIG_KEY" = 'SNOWY_PAY_ALI_PRIVATE_KEY', "CONFIG_VALUE" = '支付宝支付私钥', "CATEGORY" = 'PAY_ALI', "REMARK" = '支付宝支付私钥', "SORT_CODE" = '51', "EXT_JSON" = NULL, "DELETE_FLAG" = 'NOT_DELETE', "CREATE_TIME" = NULL, "CREATE_USER" = NULL, "UPDATE_TIME" = NULL, "UPDATE_USER" = NULL WHERE "ID" = '1554740179362967596' AND "TENANT_ID" = '-1' AND "CONFIG_KEY" = 'SNOWY_PAY_ALI_PRIVATE_KEY' AND "CONFIG_VALUE" = '支付宝支付私钥' AND "CATEGORY" = 'PAY_ALI' AND "REMARK" = '支付宝支付私钥' AND "SORT_CODE" = '51' AND "EXT_JSON" IS NULL AND "DELETE_FLAG" = 'NOT_DELETE' AND "CREATE_TIME" IS NULL AND "CREATE_USER" IS NULL AND "UPDATE_TIME" IS NULL AND "UPDATE_USER" IS NULL;
|
||||
UPDATE "SNOWY"."DEV_CONFIG" SET "ID" = '1554740179362967597', "TENANT_ID" = '-1', "CONFIG_KEY" = 'SNOWY_PAY_ALI_CERT_PATH', "CONFIG_VALUE" = '支付宝支付证书位置', "CATEGORY" = 'PAY_ALI', "REMARK" = '支付宝支付证书位置', "SORT_CODE" = '52', "EXT_JSON" = NULL, "DELETE_FLAG" = 'NOT_DELETE', "CREATE_TIME" = NULL, "CREATE_USER" = NULL, "UPDATE_TIME" = NULL, "UPDATE_USER" = NULL WHERE "ID" = '1554740179362967597' AND "TENANT_ID" = '-1' AND "CONFIG_KEY" = 'SNOWY_PAY_ALI_CERT_PATH' AND "CONFIG_VALUE" = '支付宝支付证书位置' AND "CATEGORY" = 'PAY_ALI' AND "REMARK" = '支付宝支付证书位置' AND "SORT_CODE" = '52' AND "EXT_JSON" IS NULL AND "DELETE_FLAG" = 'NOT_DELETE' AND "CREATE_TIME" IS NULL AND "CREATE_USER" IS NULL AND "UPDATE_TIME" IS NULL AND "UPDATE_USER" IS NULL;
|
||||
UPDATE "SNOWY"."DEV_CONFIG" SET "ID" = '1554740179362967598', "TENANT_ID" = '-1', "CONFIG_KEY" = 'SNOWY_PAY_ALI_ROOT_CERT_PATH', "CONFIG_VALUE" = '支付宝支付根证书位置', "CATEGORY" = 'PAY_ALI', "REMARK" = '支付宝支付根证书位置', "SORT_CODE" = '53', "EXT_JSON" = NULL, "DELETE_FLAG" = 'NOT_DELETE', "CREATE_TIME" = NULL, "CREATE_USER" = NULL, "UPDATE_TIME" = NULL, "UPDATE_USER" = NULL WHERE "ID" = '1554740179362967598' AND "TENANT_ID" = '-1' AND "CONFIG_KEY" = 'SNOWY_PAY_ALI_ROOT_CERT_PATH' AND "CONFIG_VALUE" = '支付宝支付根证书位置' AND "CATEGORY" = 'PAY_ALI' AND "REMARK" = '支付宝支付根证书位置' AND "SORT_CODE" = '53' AND "EXT_JSON" IS NULL AND "DELETE_FLAG" = 'NOT_DELETE' AND "CREATE_TIME" IS NULL AND "CREATE_USER" IS NULL AND "UPDATE_TIME" IS NULL AND "UPDATE_USER" IS NULL;
|
||||
UPDATE "SNOWY"."DEV_CONFIG" SET "ID" = '1554740179362967599', "TENANT_ID" = '-1', "CONFIG_KEY" = 'SNOWY_PAY_ALI_APP_CERT_PATH', "CONFIG_VALUE" = '支付宝支付应用证书位置', "CATEGORY" = 'PAY_ALI', "REMARK" = '支付宝支付应用证书位置', "SORT_CODE" = '54', "EXT_JSON" = NULL, "DELETE_FLAG" = 'NOT_DELETE', "CREATE_TIME" = NULL, "CREATE_USER" = NULL, "UPDATE_TIME" = NULL, "UPDATE_USER" = NULL WHERE "ID" = '1554740179362967599' AND "TENANT_ID" = '-1' AND "CONFIG_KEY" = 'SNOWY_PAY_ALI_APP_CERT_PATH' AND "CONFIG_VALUE" = '支付宝支付应用证书位置' AND "CATEGORY" = 'PAY_ALI' AND "REMARK" = '支付宝支付应用证书位置' AND "SORT_CODE" = '54' AND "EXT_JSON" IS NULL AND "DELETE_FLAG" = 'NOT_DELETE' AND "CREATE_TIME" IS NULL AND "CREATE_USER" IS NULL AND "UPDATE_TIME" IS NULL AND "UPDATE_USER" IS NULL;
|
||||
UPDATE "SNOWY"."DEV_CONFIG" SET "ID" = '1554740179362967600', "TENANT_ID" = '-1', "CONFIG_KEY" = 'SNOWY_PAY_ALI_SERVER_URL', "CONFIG_VALUE" = '支付宝支付网关', "CATEGORY" = 'PAY_ALI', "REMARK" = '支付宝支付网关', "SORT_CODE" = '55', "EXT_JSON" = NULL, "DELETE_FLAG" = 'NOT_DELETE', "CREATE_TIME" = NULL, "CREATE_USER" = NULL, "UPDATE_TIME" = NULL, "UPDATE_USER" = NULL WHERE "ID" = '1554740179362967600' AND "TENANT_ID" = '-1' AND "CONFIG_KEY" = 'SNOWY_PAY_ALI_SERVER_URL' AND "CONFIG_VALUE" = '支付宝支付网关' AND "CATEGORY" = 'PAY_ALI' AND "REMARK" = '支付宝支付网关' AND "SORT_CODE" = '55' AND "EXT_JSON" IS NULL AND "DELETE_FLAG" = 'NOT_DELETE' AND "CREATE_TIME" IS NULL AND "CREATE_USER" IS NULL AND "UPDATE_TIME" IS NULL AND "UPDATE_USER" IS NULL;
|
||||
UPDATE "SNOWY"."DEV_CONFIG" SET "ID" = '1554740179362967701', "TENANT_ID" = '-1', "CONFIG_KEY" = 'SNOWY_PAY_WX_APP_ID', "CONFIG_VALUE" = '微信支付应用id', "CATEGORY" = 'PAY_WX', "REMARK" = '微信支付应用id', "SORT_CODE" = '58', "EXT_JSON" = NULL, "DELETE_FLAG" = 'NOT_DELETE', "CREATE_TIME" = NULL, "CREATE_USER" = NULL, "UPDATE_TIME" = NULL, "UPDATE_USER" = NULL WHERE "ID" = '1554740179362967701' AND "TENANT_ID" = '-1' AND "CONFIG_KEY" = 'SNOWY_PAY_WX_APP_ID' AND "CONFIG_VALUE" = '微信支付应用id' AND "CATEGORY" = 'PAY_WX' AND "REMARK" = '微信支付应用id' AND "SORT_CODE" = '58' AND "EXT_JSON" IS NULL AND "DELETE_FLAG" = 'NOT_DELETE' AND "CREATE_TIME" IS NULL AND "CREATE_USER" IS NULL AND "UPDATE_TIME" IS NULL AND "UPDATE_USER" IS NULL;
|
||||
UPDATE "SNOWY"."DEV_CONFIG" SET "ID" = '1554740179362967702', "TENANT_ID" = '-1', "CONFIG_KEY" = 'SNOWY_PAY_WX_APP_SECRET', "CONFIG_VALUE" = '微信支付公众号AppSecret', "CATEGORY" = 'PAY_WX', "REMARK" = '微信支付公众号AppSecret', "SORT_CODE" = '59', "EXT_JSON" = NULL, "DELETE_FLAG" = 'NOT_DELETE', "CREATE_TIME" = NULL, "CREATE_USER" = NULL, "UPDATE_TIME" = NULL, "UPDATE_USER" = NULL WHERE "ID" = '1554740179362967702' AND "TENANT_ID" = '-1' AND "CONFIG_KEY" = 'SNOWY_PAY_WX_APP_SECRET' AND "CONFIG_VALUE" = '微信支付公众号AppSecret' AND "CATEGORY" = 'PAY_WX' AND "REMARK" = '微信支付公众号AppSecret' AND "SORT_CODE" = '59' AND "EXT_JSON" IS NULL AND "DELETE_FLAG" = 'NOT_DELETE' AND "CREATE_TIME" IS NULL AND "CREATE_USER" IS NULL AND "UPDATE_TIME" IS NULL AND "UPDATE_USER" IS NULL;
|
||||
UPDATE "SNOWY"."DEV_CONFIG" SET "ID" = '1554740179362967703', "TENANT_ID" = '-1', "CONFIG_KEY" = 'SNOWY_PAY_WX_MCH_ID', "CONFIG_VALUE" = '微信支付商户号', "CATEGORY" = 'PAY_WX', "REMARK" = '微信支付商户号', "SORT_CODE" = '60', "EXT_JSON" = NULL, "DELETE_FLAG" = 'NOT_DELETE', "CREATE_TIME" = NULL, "CREATE_USER" = NULL, "UPDATE_TIME" = NULL, "UPDATE_USER" = NULL WHERE "ID" = '1554740179362967703' AND "TENANT_ID" = '-1' AND "CONFIG_KEY" = 'SNOWY_PAY_WX_MCH_ID' AND "CONFIG_VALUE" = '微信支付商户号' AND "CATEGORY" = 'PAY_WX' AND "REMARK" = '微信支付商户号' AND "SORT_CODE" = '60' AND "EXT_JSON" IS NULL AND "DELETE_FLAG" = 'NOT_DELETE' AND "CREATE_TIME" IS NULL AND "CREATE_USER" IS NULL AND "UPDATE_TIME" IS NULL AND "UPDATE_USER" IS NULL;
|
||||
INSERT INTO "SNOWY"."DEV_CONFIG"("ID", "TENANT_ID", "CONFIG_KEY", "CONFIG_VALUE", "CATEGORY", "REMARK", "SORT_CODE", "EXT_JSON", "DELETE_FLAG", "CREATE_TIME", "CREATE_USER", "UPDATE_TIME", "UPDATE_USER") VALUES ('1554740179362967601', '-1', 'SNOWY_PAY_ALI_MCH_USER_ID', '支付宝支付商家用户id', 'PAY_ALI', '支付宝支付商家用户id', '56', NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
|
||||
INSERT INTO "SNOWY"."DEV_CONFIG"("ID", "TENANT_ID", "CONFIG_KEY", "CONFIG_VALUE", "CATEGORY", "REMARK", "SORT_CODE", "EXT_JSON", "DELETE_FLAG", "CREATE_TIME", "CREATE_USER", "UPDATE_TIME", "UPDATE_USER") VALUES ('1554740179362967602', '-1', 'SNOWY_PAY_ALI_NOTIFY_URL', '支付宝支付回调地址', 'PAY_ALI', '支付宝支付回调地址', '57', NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
|
||||
INSERT INTO "SNOWY"."DEV_CONFIG"("ID", "TENANT_ID", "CONFIG_KEY", "CONFIG_VALUE", "CATEGORY", "REMARK", "SORT_CODE", "EXT_JSON", "DELETE_FLAG", "CREATE_TIME", "CREATE_USER", "UPDATE_TIME", "UPDATE_USER") VALUES ('1554740179362967704', '-1', 'SNOWY_PAY_WX_MCH_KEY', '微信支付商户V2密钥', 'PAY_WX', '微信支付商户V2密钥', '61', NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
|
||||
INSERT INTO "SNOWY"."DEV_CONFIG"("ID", "TENANT_ID", "CONFIG_KEY", "CONFIG_VALUE", "CATEGORY", "REMARK", "SORT_CODE", "EXT_JSON", "DELETE_FLAG", "CREATE_TIME", "CREATE_USER", "UPDATE_TIME", "UPDATE_USER") VALUES ('1554740179362967705', '-1', 'SNOWY_PAY_WX_KEY_PATH', '微信支付p12证书路径', 'PAY_WX', '微信支付p12证书路径', '62', NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
|
||||
INSERT INTO "SNOWY"."DEV_CONFIG"("ID", "TENANT_ID", "CONFIG_KEY", "CONFIG_VALUE", "CATEGORY", "REMARK", "SORT_CODE", "EXT_JSON", "DELETE_FLAG", "CREATE_TIME", "CREATE_USER", "UPDATE_TIME", "UPDATE_USER") VALUES ('1554740179362967706', '-1', 'SNOWY_PAY_WX_PRIVATE_KEY_PATH', '微信支付apiClientKey路径', 'PAY_WX', '微信支付apiClientKey路径', '63', NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
|
||||
INSERT INTO "SNOWY"."DEV_CONFIG"("ID", "TENANT_ID", "CONFIG_KEY", "CONFIG_VALUE", "CATEGORY", "REMARK", "SORT_CODE", "EXT_JSON", "DELETE_FLAG", "CREATE_TIME", "CREATE_USER", "UPDATE_TIME", "UPDATE_USER") VALUES ('1554740179362967707', '-1', 'SNOWY_PAY_WX_PRIVATE_CERT_PATH', '微信支付apiClientCert路径', 'PAY_WX', '微信支付apiClientCert路径', '64', NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
|
||||
INSERT INTO "SNOWY"."DEV_CONFIG"("ID", "TENANT_ID", "CONFIG_KEY", "CONFIG_VALUE", "CATEGORY", "REMARK", "SORT_CODE", "EXT_JSON", "DELETE_FLAG", "CREATE_TIME", "CREATE_USER", "UPDATE_TIME", "UPDATE_USER") VALUES ('1554740179362967708', '-1', 'SNOWY_PAY_WX_CERT_SERIAL_NO', '微信支付ApiV3证书序列号值', 'PAY_WX', '微信支付ApiV3证书序列号值', '65', NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
|
||||
INSERT INTO "SNOWY"."DEV_CONFIG"("ID", "TENANT_ID", "CONFIG_KEY", "CONFIG_VALUE", "CATEGORY", "REMARK", "SORT_CODE", "EXT_JSON", "DELETE_FLAG", "CREATE_TIME", "CREATE_USER", "UPDATE_TIME", "UPDATE_USER") VALUES ('1554740179362967709', '-1', 'SNOWY_PAY_WX_API_V3_KEY', '微信支付ApiV3密钥值', 'PAY_WX', '微信支付ApiV3密钥值', '66', NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
|
||||
INSERT INTO "SNOWY"."DEV_CONFIG"("ID", "TENANT_ID", "CONFIG_KEY", "CONFIG_VALUE", "CATEGORY", "REMARK", "SORT_CODE", "EXT_JSON", "DELETE_FLAG", "CREATE_TIME", "CREATE_USER", "UPDATE_TIME", "UPDATE_USER") VALUES ('1554740179362967710', '-1', 'SNOWY_PAY_WX_NOTIFY_URL', '微信支付回调地址', 'PAY_WX', '微信支付回调地址', '67', NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
|
||||
INSERT INTO "SNOWY"."DEV_CONFIG"("ID", "TENANT_ID", "CONFIG_KEY", "CONFIG_VALUE", "CATEGORY", "REMARK", "SORT_CODE", "EXT_JSON", "DELETE_FLAG", "CREATE_TIME", "CREATE_USER", "UPDATE_TIME", "UPDATE_USER") VALUES ('1554740179362967711', '-1', 'SNOWY_PAY_WX_REFUND_NOTIFY_URL', '微信支付退款回调地址', 'PAY_WX', '微信支付退款回调地址', '68', NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
|
||||
@@ -0,0 +1,5 @@
|
||||
-- ----------------------------
|
||||
-- 2023.03.14增加用户导出的按钮,记得授权给你需要的角色
|
||||
-- ----------------------------
|
||||
INSERT INTO "SNOWY"."SYS_RESOURCE" VALUES ('1623378996099411970', '-1', '1548901111999773979', '导出个人', NULL, 'bizUserExportUserInfo', 'BUTTON', NULL, NULL, NULL, NULL, NULL, NULL, '8', NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
|
||||
INSERT INTO "SNOWY"."SYS_RESOURCE" VALUES ('1623378996099411971', '-1', '1548901111999773979', '批量导出', NULL, 'bizUserBatchExport', 'BUTTON', NULL, NULL, NULL, NULL, NULL, NULL, '9', NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
|
||||
@@ -0,0 +1,8 @@
|
||||
-- ----------------------------
|
||||
-- 2023.03.28更新报表和移动端的菜单的Code标识,在创建ID隔离的租户时初始化这些数据
|
||||
-- ----------------------------
|
||||
UPDATE "SNOWY"."SYS_RESOURCE" SET "ID" = '1616093440759009282', "TENANT_ID" = '-1', "PARENT_ID" = '0', "TITLE" = '报表插件', "NAME" = NULL, "CODE" = 'system', "CATEGORY" = 'MENU', "MODULE" = '1548901111999770525', "MENU_TYPE" = 'CATALOG', "PATH" = '/7021876005451075584', "COMPONENT" = NULL, "ICON" = 'exception-outlined', "COLOR" = NULL, "SORT_CODE" = '99', "EXT_JSON" = NULL, "DELETE_FLAG" = 'NOT_DELETE', "CREATE_TIME" = NULL, "CREATE_USER" = NULL, "UPDATE_TIME" = NULL, "UPDATE_USER" = NULL WHERE "ID" = '1616093440759009282' AND "TENANT_ID" = '-1' AND "PARENT_ID" = '0' AND "TITLE" = '报表插件' AND "NAME" IS NULL AND "CODE" = 'system' AND "CATEGORY" = 'MENU' AND "MODULE" = '1548901111999770525' AND "MENU_TYPE" = 'CATALOG' AND "PATH" = '/7021876005451075584' AND "COMPONENT" IS NULL AND "ICON" = 'exception-outlined' AND "COLOR" IS NULL AND "SORT_CODE" = '99' AND "EXT_JSON" IS NULL AND "DELETE_FLAG" = 'NOT_DELETE' AND "CREATE_TIME" IS NULL AND "CREATE_USER" IS NULL AND "UPDATE_TIME" IS NULL AND "UPDATE_USER" IS NULL;
|
||||
UPDATE "SNOWY"."SYS_RESOURCE" SET "ID" = '1616093737749286914', "TENANT_ID" = '-1', "PARENT_ID" = '1616093440759009282', "TITLE" = '报表管理', "NAME" = 'urpIndex', "CODE" = '3lyytin4th', "CATEGORY" = 'MENU', "MODULE" = '1548901111999770525', "MENU_TYPE" = 'MENU', "PATH" = '/urp', "COMPONENT" = 'urp/index', "ICON" = 'file-sync-outlined', "COLOR" = NULL, "SORT_CODE" = '99', "EXT_JSON" = NULL, "DELETE_FLAG" = 'NOT_DELETE', "CREATE_TIME" = NULL, "CREATE_USER" = NULL, "UPDATE_TIME" = NULL, "UPDATE_USER" = NULL WHERE "ID" = '1616093737749286914' AND "TENANT_ID" = '-1' AND "PARENT_ID" = '1616093440759009282' AND "TITLE" = '报表管理' AND "NAME" = 'urpIndex' AND "CODE" = '3lyytin4th' AND "CATEGORY" = 'MENU' AND "MODULE" = '1548901111999770525' AND "MENU_TYPE" = 'MENU' AND "PATH" = '/urp' AND "COMPONENT" = 'urp/index' AND "ICON" = 'file-sync-outlined' AND "COLOR" IS NULL AND "SORT_CODE" = '99' AND "EXT_JSON" IS NULL AND "DELETE_FLAG" = 'NOT_DELETE' AND "CREATE_TIME" IS NULL AND "CREATE_USER" IS NULL AND "UPDATE_TIME" IS NULL AND "UPDATE_USER" IS NULL;
|
||||
UPDATE "SNOWY"."SYS_RESOURCE" SET "ID" = '1623378345382506498', "TENANT_ID" = '-1', "PARENT_ID" = '0', "TITLE" = '移动端管理', "NAME" = NULL, "CODE" = 'system', "CATEGORY" = 'MENU', "MODULE" = '1548901111999770525', "MENU_TYPE" = 'CATALOG', "PATH" = '/7029144034425704448', "COMPONENT" = NULL, "ICON" = 'mobile-outlined', "COLOR" = NULL, "SORT_CODE" = '50', "EXT_JSON" = NULL, "DELETE_FLAG" = 'NOT_DELETE', "CREATE_TIME" = NULL, "CREATE_USER" = NULL, "UPDATE_TIME" = NULL, "UPDATE_USER" = NULL WHERE "ID" = '1623378345382506498' AND "TENANT_ID" = '-1' AND "PARENT_ID" = '0' AND "TITLE" = '移动端管理' AND "NAME" IS NULL AND "CODE" = 'system' AND "CATEGORY" = 'MENU' AND "MODULE" = '1548901111999770525' AND "MENU_TYPE" = 'CATALOG' AND "PATH" = '/7029144034425704448' AND "COMPONENT" IS NULL AND "ICON" = 'mobile-outlined' AND "COLOR" IS NULL AND "SORT_CODE" = '50' AND "EXT_JSON" IS NULL AND "DELETE_FLAG" = 'NOT_DELETE' AND "CREATE_TIME" IS NULL AND "CREATE_USER" IS NULL AND "UPDATE_TIME" IS NULL AND "UPDATE_USER" IS NULL;
|
||||
UPDATE "SNOWY"."SYS_RESOURCE" SET "ID" = '1623378675591671810', "TENANT_ID" = '-1', "PARENT_ID" = '1623378345382506498', "TITLE" = '模块管理', "NAME" = 'mobileModuleIndex', "CODE" = '0foblmoy96', "CATEGORY" = 'MENU', "MODULE" = '1548901111999770525', "MENU_TYPE" = 'MENU', "PATH" = '/mobile/module/index', "COMPONENT" = 'mobile/resource/module/index', "ICON" = 'build-outlined', "COLOR" = NULL, "SORT_CODE" = '51', "EXT_JSON" = NULL, "DELETE_FLAG" = 'NOT_DELETE', "CREATE_TIME" = NULL, "CREATE_USER" = NULL, "UPDATE_TIME" = NULL, "UPDATE_USER" = NULL WHERE "ID" = '1623378675591671810' AND "TENANT_ID" = '-1' AND "PARENT_ID" = '1623378345382506498' AND "TITLE" = '模块管理' AND "NAME" = 'mobileModuleIndex' AND "CODE" = '0foblmoy96' AND "CATEGORY" = 'MENU' AND "MODULE" = '1548901111999770525' AND "MENU_TYPE" = 'MENU' AND "PATH" = '/mobile/module/index' AND "COMPONENT" = 'mobile/resource/module/index' AND "ICON" = 'build-outlined' AND "COLOR" IS NULL AND "SORT_CODE" = '51' AND "EXT_JSON" IS NULL AND "DELETE_FLAG" = 'NOT_DELETE' AND "CREATE_TIME" IS NULL AND "CREATE_USER" IS NULL AND "UPDATE_TIME" IS NULL AND "UPDATE_USER" IS NULL;
|
||||
UPDATE "SNOWY"."SYS_RESOURCE" SET "ID" = '1623378996099411969', "TENANT_ID" = '-1', "PARENT_ID" = '1623378345382506498', "TITLE" = '菜单管理', "NAME" = 'mobileMenuIndex', "CODE" = 'ctvbreg2eo', "CATEGORY" = 'MENU', "MODULE" = '1548901111999770525', "MENU_TYPE" = 'MENU', "PATH" = '/mobile/menu/index', "COMPONENT" = 'mobile/resource/menu/index', "ICON" = 'appstore-add-outlined', "COLOR" = NULL, "SORT_CODE" = '52', "EXT_JSON" = NULL, "DELETE_FLAG" = 'NOT_DELETE', "CREATE_TIME" = NULL, "CREATE_USER" = NULL, "UPDATE_TIME" = NULL, "UPDATE_USER" = NULL WHERE "ID" = '1623378996099411969' AND "TENANT_ID" = '-1' AND "PARENT_ID" = '1623378345382506498' AND "TITLE" = '菜单管理' AND "NAME" = 'mobileMenuIndex' AND "CODE" = 'ctvbreg2eo' AND "CATEGORY" = 'MENU' AND "MODULE" = '1548901111999770525' AND "MENU_TYPE" = 'MENU' AND "PATH" = '/mobile/menu/index' AND "COMPONENT" = 'mobile/resource/menu/index' AND "ICON" = 'appstore-add-outlined' AND "COLOR" IS NULL AND "SORT_CODE" = '52' AND "EXT_JSON" IS NULL AND "DELETE_FLAG" = 'NOT_DELETE' AND "CREATE_TIME" IS NULL AND "CREATE_USER" IS NULL AND "UPDATE_TIME" IS NULL AND "UPDATE_USER" IS NULL;
|
||||
@@ -0,0 +1,8 @@
|
||||
-- ----------------------------
|
||||
-- 2023.06.15更新工作流增强需要的按钮,记得首先将这些按钮授权给超管
|
||||
-- ----------------------------
|
||||
INSERT INTO "SNOWY"."SYS_RESOURCE"("ID", "TENANT_ID", "PARENT_ID", "TITLE", "NAME", "CODE", "CATEGORY", "MODULE", "MENU_TYPE", "PATH", "COMPONENT", "ICON", "COLOR", "SORT_CODE", "EXT_JSON", "DELETE_FLAG", "CREATE_TIME", "CREATE_USER", "UPDATE_TIME", "UPDATE_USER") VALUES ('1662399843526852610', '-1', '1548901111999773982', '跳转流程', NULL, 'flwProcessJump', 'BUTTON', NULL, NULL, NULL, NULL, NULL, NULL, '11', NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
|
||||
INSERT INTO "SNOWY"."SYS_RESOURCE"("ID", "TENANT_ID", "PARENT_ID", "TITLE", "NAME", "CODE", "CATEGORY", "MODULE", "MENU_TYPE", "PATH", "COMPONENT", "ICON", "COLOR", "SORT_CODE", "EXT_JSON", "DELETE_FLAG", "CREATE_TIME", "CREATE_USER", "UPDATE_TIME", "UPDATE_USER") VALUES ('1662399915983454210', '-1', '1548901111999773982', '流程变量', NULL, 'flwProcessVariable', 'BUTTON', NULL, NULL, NULL, NULL, NULL, NULL, '12', NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
|
||||
INSERT INTO "SNOWY"."SYS_RESOURCE"("ID", "TENANT_ID", "PARENT_ID", "TITLE", "NAME", "CODE", "CATEGORY", "MODULE", "MENU_TYPE", "PATH", "COMPONENT", "ICON", "COLOR", "SORT_CODE", "EXT_JSON", "DELETE_FLAG", "CREATE_TIME", "CREATE_USER", "UPDATE_TIME", "UPDATE_USER") VALUES ('1662400032106954753', '-1', '1548901111999773982', '复活流程', NULL, 'flwProcessRestart', 'BUTTON', NULL, NULL, NULL, NULL, NULL, NULL, '13', NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
|
||||
INSERT INTO "SNOWY"."SYS_RESOURCE"("ID", "TENANT_ID", "PARENT_ID", "TITLE", "NAME", "CODE", "CATEGORY", "MODULE", "MENU_TYPE", "PATH", "COMPONENT", "ICON", "COLOR", "SORT_CODE", "EXT_JSON", "DELETE_FLAG", "CREATE_TIME", "CREATE_USER", "UPDATE_TIME", "UPDATE_USER") VALUES ('1662400106392272898', '-1', '1548901111999773982', '迁移流程', NULL, 'flwProcessMigrate', 'BUTTON', NULL, NULL, NULL, NULL, NULL, NULL, '14', NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
|
||||
INSERT INTO "SNOWY"."SYS_RESOURCE"("ID", "TENANT_ID", "PARENT_ID", "TITLE", "NAME", "CODE", "CATEGORY", "MODULE", "MENU_TYPE", "PATH", "COMPONENT", "ICON", "COLOR", "SORT_CODE", "EXT_JSON", "DELETE_FLAG", "CREATE_TIME", "CREATE_USER", "UPDATE_TIME", "UPDATE_USER") VALUES ('1662477940200652802', '-1', '1548901111999773982', '编辑变量', NULL, 'flwProcessVariableEdit', 'BUTTON', NULL, NULL, NULL, NULL, NULL, NULL, '15', NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
|
||||
@@ -0,0 +1,21 @@
|
||||
-- ----------------------------
|
||||
-- 2023.01.27新增报表的相关字典、菜单
|
||||
-- ----------------------------
|
||||
-- ----------------------------
|
||||
-- Records of DEV_DICT
|
||||
-- ----------------------------
|
||||
INSERT INTO "SNOWY"."DEV_DICT" VALUES ('1616096848417099778', '-1', '0', '报表内容分类', 'URP_CATEGORY', 'FRM', '81', NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
|
||||
INSERT INTO "SNOWY"."DEV_DICT" VALUES ('1616096961445203970', '-1', '1616096848417099778', '技术类', 'TECH', 'FRM', '82', NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
|
||||
INSERT INTO "SNOWY"."DEV_DICT" VALUES ('1618973431700992002', '-1', '1616096848417099778', '商务类', 'BUS', 'FRM', '83', NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
|
||||
INSERT INTO "SNOWY"."DEV_DICT" VALUES ('1618977132125708290', '-1', '1616096848417099778', '其他类', 'OTHER', 'FRM', '84', NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
|
||||
|
||||
-- ----------------------------
|
||||
-- Records of SYS_RELATION
|
||||
-- ----------------------------
|
||||
INSERT INTO "SNOWY"."SYS_RELATION" VALUES ('1616096210090168361', '-1', '1570687866138206208', '1616093737749286914', 'SYS_ROLE_HAS_RESOURCE', '{"menuId":"1616093737749286914","buttonInfo":[]}');
|
||||
|
||||
-- ----------------------------
|
||||
-- Records of sys_resource
|
||||
-- ----------------------------
|
||||
INSERT INTO "SNOWY"."SYS_RESOURCE" VALUES ('1616093440759009282', '-1', '0', '报表插件', NULL, NULL, 'MENU', '1548901111999770525', 'CATALOG', '/7021876005451075584', NULL, 'exception-outlined', NULL, '99', NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
|
||||
INSERT INTO "SNOWY"."SYS_RESOURCE" VALUES ('1616093737749286914', '-1', '1616093440759009282', '报表管理', 'urpIndex', NULL, 'MENU', '1548901111999770525', 'MENU', '/urp', 'urp/index', 'file-sync-outlined', NULL, '99', NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
|
||||
23
mjkf-xinke-web-app/src/main/resources/_sql/数据库说明.md
Normal file
23
mjkf-xinke-web-app/src/main/resources/_sql/数据库说明.md
Normal file
@@ -0,0 +1,23 @@
|
||||
# 数据库说明
|
||||
【init文件夹】:
|
||||
|
||||
1.init文件夹下的数据库文件为系统初始所需要的sql,根据数据库类型分为mysql和oracle
|
||||
|
||||
2.每次系统更新时,这些数据库文件都会保持最新版本,如果您是第一次使用,直接运行对应数据库下的snowy_xxx.sql文件即可
|
||||
|
||||
3.snowy_ten_xxx.sql表示租户数据库,正常情况无需运行此sql。只有当您创建DB隔离的租户时,才需要在对应的数据源运行此sql
|
||||
|
||||
【update文件夹】:
|
||||
|
||||
1.update文件夹下的数据库文件为每次系统版本更新所产生的sql,根据数据库类型分为mysql和oracle
|
||||
|
||||
2.每次系统更新时,会产生对应的sql补丁文件,如果您是随着框架更新的老用户,请按照时间顺序运行对应数据库下补丁sql文件
|
||||
|
||||
3.运行补丁sql时,请注意每个sql上方的文字说明,例如新增了按钮时,还需要自行将这些按钮授权给需要的角色
|
||||
|
||||
|
||||
本框架只提供了mysql和oracle版本的sql,如需其他数据库sql,请按照文档进行数据迁移
|
||||
|
||||
文档地址:https://xiaonuo.vip/doc
|
||||
|
||||
如果有其他问题请在群内提出
|
||||
129
mjkf-xinke-web-app/src/main/resources/application.yml
Normal file
129
mjkf-xinke-web-app/src/main/resources/application.yml
Normal file
@@ -0,0 +1,129 @@
|
||||
camunda:
|
||||
bpm:
|
||||
auto-deployment-enabled: false
|
||||
database:
|
||||
schema-update: true
|
||||
eventing:
|
||||
history: false
|
||||
job-execution:
|
||||
enabled: false
|
||||
metrics:
|
||||
enabled: false
|
||||
easy-trans:
|
||||
is-enable-global: true
|
||||
is-enable-redis: true
|
||||
is-enable-tile: true
|
||||
knife4j:
|
||||
basic:
|
||||
enable: true
|
||||
password: 123456
|
||||
username: admin
|
||||
enable: true
|
||||
production: false
|
||||
setting:
|
||||
enableFooter: false
|
||||
enableFooterCustom: true
|
||||
enableOpenApi: false
|
||||
enableSwaggerModels: false
|
||||
footerCustomContent: Apache License 2.0 | Copyright 2022-[SNOWY](https://www.xiaonuo.vip)
|
||||
mybatis-plus:
|
||||
configuration:
|
||||
jdbc-type-for-null: 'null'
|
||||
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
|
||||
global-config:
|
||||
banner: false
|
||||
db-config:
|
||||
id-type: ASSIGN_ID
|
||||
logic-delete-field: DELETE_FLAG
|
||||
logic-delete-value: DELETED
|
||||
logic-not-delete-value: NOT_DELETE
|
||||
enable-sql-runner: true
|
||||
mapper-locations: classpath*:vip/xiaonuo/**/mapping/*.xml,com/bstek/**/mapping/*.xml
|
||||
type-handlers-package: mjkf.xinke.common.handler
|
||||
sa-token:
|
||||
activity-timeout: -1
|
||||
alone-redis:
|
||||
database: 2
|
||||
host: ${spring.redis.host}
|
||||
lettuce:
|
||||
pool:
|
||||
max-active: ${spring.redis.lettuce.pool.max-active}
|
||||
max-idle: ${spring.redis.lettuce.pool.max-idle}
|
||||
max-wait: ${spring.redis.lettuce.pool.max-wait}
|
||||
min-idle: ${spring.redis.lettuce.pool.min-idle}
|
||||
password: ${spring.redis.password}
|
||||
port: ${spring.redis.port}
|
||||
timeout: ${spring.redis.timeout}
|
||||
is-concurrent: true
|
||||
is-log: false
|
||||
is-print: false
|
||||
is-share: false
|
||||
max-login-count: -1
|
||||
timeout: 2592000
|
||||
token-name: token
|
||||
token-style: random-32
|
||||
server:
|
||||
port: 82
|
||||
mjkf-xinke:
|
||||
config:
|
||||
common:
|
||||
backend-url: http://localhost:82
|
||||
front-url: http://localhost:81
|
||||
ten:
|
||||
default-ten-id: -1
|
||||
enabled: true
|
||||
ignore-table-names: ''
|
||||
ten-id-column-name: TENANT_ID
|
||||
spring:
|
||||
datasource:
|
||||
druid:
|
||||
stat-view-servlet:
|
||||
enabled: true
|
||||
login-password: 123456
|
||||
login-username: admin
|
||||
dynamic:
|
||||
datasource:
|
||||
master:
|
||||
driver-class-name: com.mysql.cj.jdbc.Driver
|
||||
password: lyh123456!
|
||||
url: jdbc:mysql://localhost:3306/snowy-cloud?useUnicode=true&characterEncoding=utf-8&useSSL=false&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true&useInformationSchema=true
|
||||
username: root
|
||||
druid:
|
||||
break-after-acquire-failure: false
|
||||
filters: stat
|
||||
initial-size: 5
|
||||
max-active: 20
|
||||
max-pool-prepared-statement-per-connection-size: 20
|
||||
max-wait: 60000
|
||||
min-evictable-idle-time-millis: 300000
|
||||
min-idle: 5
|
||||
pool-prepared-statements: true
|
||||
test-on-borrow: false
|
||||
test-on-return: false
|
||||
test-while-idle: true
|
||||
time-between-eviction-runs-millis: 6000
|
||||
validation-query-timeout: 2000
|
||||
public-key: MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAMWiTVtdXFVrgFHDDKELZM0SywkWY3KjugN90eY5Sogon1j8Y0ClPF7nx3FuE7pAeBKiv7ChIS0vvx/59WUpKmUCAwEAAQ==
|
||||
strict: true
|
||||
jackson:
|
||||
date-format: yyyy-MM-dd HH:mm:ss
|
||||
locale: zh_CN
|
||||
time-zone: GMT+8
|
||||
profiles:
|
||||
active: local
|
||||
redis:
|
||||
database: 1
|
||||
host: 127.0.0.1
|
||||
lettuce:
|
||||
pool:
|
||||
max-active: 200
|
||||
max-idle: 10
|
||||
max-wait: -1ms
|
||||
min-idle: 0
|
||||
password: ''
|
||||
port: 6379
|
||||
timeout: 10s
|
||||
servlet:
|
||||
multipart:
|
||||
max-file-size: 100MB
|
||||
max-request-size: 100MB
|
||||
118
mjkf-xinke-web-app/src/main/resources/logback-spring.xml
Normal file
118
mjkf-xinke-web-app/src/main/resources/logback-spring.xml
Normal file
@@ -0,0 +1,118 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<configuration>
|
||||
|
||||
<!--日志格式应用spring boot默认的格式,也可以自己更改-->
|
||||
<include resource="org/springframework/boot/logging/logback/defaults.xml"/>
|
||||
|
||||
<!--定义日志存放的位置,默认存放在项目启动的相对路径的目录-->
|
||||
<springProperty scope="context" name="LOG_PATH" source="log.path" defaultValue="app-log"/>
|
||||
|
||||
<!-- ****************************************************************************************** -->
|
||||
<!-- ****************************** 本地开发只在控制台打印日志 ************************************ -->
|
||||
<!-- ****************************************************************************************** -->
|
||||
<springProfile name="local">
|
||||
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
|
||||
<encoder>
|
||||
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
|
||||
<charset>utf-8</charset>
|
||||
</encoder>
|
||||
</appender>
|
||||
|
||||
<!--默认所有的包以info-->
|
||||
<root level="info">
|
||||
<appender-ref ref="STDOUT"/>
|
||||
</root>
|
||||
|
||||
<!--各个服务的包在本地执行的时候,打开debug模式-->
|
||||
<logger name="mjkf.xinke" level="info" additivity="false">
|
||||
<appender-ref ref="STDOUT"/>
|
||||
</logger>
|
||||
</springProfile>
|
||||
|
||||
<!-- ********************************************************************************************** -->
|
||||
<!-- **** 放到服务器上不管在什么环境都只在文件记录日志,控制台(catalina.out)打印logback捕获不到的日志 **** -->
|
||||
<!-- ********************************************************************************************** -->
|
||||
<springProfile name="!local">
|
||||
|
||||
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
|
||||
<encoder>
|
||||
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
|
||||
<charset>utf-8</charset>
|
||||
</encoder>
|
||||
</appender>
|
||||
|
||||
<!-- 日志记录器,日期滚动记录 -->
|
||||
<appender name="FILE_ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||
|
||||
<!-- 正在记录的日志文件的路径及文件名 -->
|
||||
<file>${LOG_PATH}/log_error.log</file>
|
||||
|
||||
<!-- 日志记录器的滚动策略,按日期,按大小记录 -->
|
||||
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
|
||||
|
||||
<!-- 归档的日志文件的路径,%d{yyyy-MM-dd}指定日期格式,%i指定索引 -->
|
||||
<fileNamePattern>${LOG_PATH}/error/log-error-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
|
||||
|
||||
<!-- 除按日志记录之外,还配置了日志文件不能超过2M,若超过2M,日志文件会以索引0开始,
|
||||
命名日志文件,例如log-error-2013-12-21.0.log -->
|
||||
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
|
||||
<maxFileSize>10MB</maxFileSize>
|
||||
</timeBasedFileNamingAndTriggeringPolicy>
|
||||
</rollingPolicy>
|
||||
|
||||
<!-- 追加方式记录日志 -->
|
||||
<append>true</append>
|
||||
|
||||
<!-- 日志文件的格式 -->
|
||||
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
|
||||
<pattern>${FILE_LOG_PATTERN}</pattern>
|
||||
<charset>utf-8</charset>
|
||||
</encoder>
|
||||
|
||||
<!-- 此日志文件只记录error级别的 -->
|
||||
<filter class="ch.qos.logback.classic.filter.LevelFilter">
|
||||
<level>error</level>
|
||||
<onMatch>ACCEPT</onMatch>
|
||||
<onMismatch>DENY</onMismatch>
|
||||
</filter>
|
||||
</appender>
|
||||
|
||||
<!-- 日志记录器,日期滚动记录 -->
|
||||
<appender name="FILE_ALL" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||
|
||||
<!-- 正在记录的日志文件的路径及文件名 -->
|
||||
<file>${LOG_PATH}/log_total.log</file>
|
||||
|
||||
<!-- 日志记录器的滚动策略,按日期,按大小记录 -->
|
||||
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
|
||||
|
||||
<!-- 归档的日志文件的路径,%d{yyyy-MM-dd}指定日期格式,%i指定索引 -->
|
||||
<fileNamePattern>${LOG_PATH}/total/log-total-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
|
||||
|
||||
<!-- 除按日志记录之外,还配置了日志文件不能超过2M,若超过2M,日志文件会以索引0开始,
|
||||
命名日志文件,例如log-error-2013-12-21.0.log -->
|
||||
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
|
||||
<maxFileSize>10MB</maxFileSize>
|
||||
</timeBasedFileNamingAndTriggeringPolicy>
|
||||
</rollingPolicy>
|
||||
|
||||
<!-- 追加方式记录日志 -->
|
||||
<append>true</append>
|
||||
|
||||
<!-- 日志文件的格式 -->
|
||||
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
|
||||
<pattern>${FILE_LOG_PATTERN}</pattern>
|
||||
<charset>utf-8</charset>
|
||||
</encoder>
|
||||
</appender>
|
||||
|
||||
<!--记录到文件时,记录两类一类是error日志,一个是所有日志-->
|
||||
<root level="info">
|
||||
<appender-ref ref="STDOUT"/>
|
||||
<appender-ref ref="FILE_ERROR"/>
|
||||
<appender-ref ref="FILE_ALL"/>
|
||||
</root>
|
||||
|
||||
</springProfile>
|
||||
|
||||
</configuration>
|
||||
23
mjkf-xinke-web-app/src/test/java/mjkf/xinke/MainTest.java
Normal file
23
mjkf-xinke-web-app/src/test/java/mjkf/xinke/MainTest.java
Normal file
@@ -0,0 +1,23 @@
|
||||
|
||||
package mjkf.xinke;
|
||||
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.springframework.boot.test.context.SpringBootTest;
|
||||
import org.springframework.test.context.junit4.SpringRunner;
|
||||
|
||||
/**
|
||||
* 主测试类
|
||||
*
|
||||
*
|
||||
* @date 2022/9/17 17:09
|
||||
*/
|
||||
@RunWith(SpringRunner.class)
|
||||
@SpringBootTest(classes = Application.class)
|
||||
public class MainTest {
|
||||
|
||||
@Test
|
||||
public void test() {
|
||||
|
||||
}
|
||||
}
|
||||
14
mjkf-xinke-web-app/src/test/java/mjkf/xinke/Test.java
Normal file
14
mjkf-xinke-web-app/src/test/java/mjkf/xinke/Test.java
Normal file
@@ -0,0 +1,14 @@
|
||||
|
||||
package mjkf.xinke;
|
||||
|
||||
/**
|
||||
* TestMain方法
|
||||
*
|
||||
*
|
||||
* @date 2022/9/17 17:10
|
||||
*/
|
||||
public class Test {
|
||||
public static void main(String[] args) {
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user