fix: banner 日志打印
parent
f1924a003a
commit
abe05db277
|
@ -23,13 +23,11 @@ public class BannerApplicationRunner implements ApplicationRunner {
|
||||||
"项目启动成功!\n\t" +
|
"项目启动成功!\n\t" +
|
||||||
"接口文档: \t{} \n\t" +
|
"接口文档: \t{} \n\t" +
|
||||||
"开发文档: \t{} \n\t" +
|
"开发文档: \t{} \n\t" +
|
||||||
"视频教程: \t{} \n\t" +
|
"视频教程: \t{} \n" +
|
||||||
"源码解析: \t{} \n" +
|
|
||||||
"----------------------------------------------------------",
|
"----------------------------------------------------------",
|
||||||
"https://cloud.iocoder.cn/api-doc/",
|
"https://cloud.iocoder.cn/api-doc/",
|
||||||
"https://cloud.iocoder.cn",
|
"https://cloud.iocoder.cn",
|
||||||
"https://t.zsxq.com/02Yf6M7Qn",
|
"https://t.zsxq.com/02Yf6M7Qn");
|
||||||
"https://t.zsxq.com/02B6ujIee");
|
|
||||||
|
|
||||||
// 数据报表
|
// 数据报表
|
||||||
System.out.println("[报表模块 yudao-module-report 教程][参考 https://cloud.iocoder.cn/report/ 开启]");
|
System.out.println("[报表模块 yudao-module-report 教程][参考 https://cloud.iocoder.cn/report/ 开启]");
|
||||||
|
@ -37,9 +35,9 @@ public class BannerApplicationRunner implements ApplicationRunner {
|
||||||
System.out.println("[工作流模块 yudao-module-bpm 教程][参考 https://cloud.iocoder.cn/bpm/ 开启]");
|
System.out.println("[工作流模块 yudao-module-bpm 教程][参考 https://cloud.iocoder.cn/bpm/ 开启]");
|
||||||
// 微信公众号
|
// 微信公众号
|
||||||
System.out.println("[微信公众号 yudao-module-mp 教程][参考 https://cloud.iocoder.cn/mp/build/ 开启]");
|
System.out.println("[微信公众号 yudao-module-mp 教程][参考 https://cloud.iocoder.cn/mp/build/ 开启]");
|
||||||
// 商城
|
// 商城系统
|
||||||
System.out.println("[商城系统 yudao-module-mall 教程][参考 https://cloud.iocoder.cn/mall/build/ 开启]");
|
System.out.println("[商城系统 yudao-module-mall 教程][参考 https://cloud.iocoder.cn/mall/build/ 开启]");
|
||||||
// 支付
|
// 支付平台
|
||||||
System.out.println("[支付系统 yudao-module-pay - 已禁用][参考 https://doc.iocoder.cn/pay/build/ 开启]");
|
System.out.println("[支付系统 yudao-module-pay - 已禁用][参考 https://doc.iocoder.cn/pay/build/ 开启]");
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,6 +2,7 @@ package cn.iocoder.yudao.framework.web.core.handler;
|
||||||
|
|
||||||
import cn.hutool.core.exceptions.ExceptionUtil;
|
import cn.hutool.core.exceptions.ExceptionUtil;
|
||||||
import cn.hutool.core.map.MapUtil;
|
import cn.hutool.core.map.MapUtil;
|
||||||
|
import cn.hutool.core.util.StrUtil;
|
||||||
import cn.hutool.extra.servlet.ServletUtil;
|
import cn.hutool.extra.servlet.ServletUtil;
|
||||||
import cn.iocoder.yudao.framework.apilog.core.service.ApiErrorLog;
|
import cn.iocoder.yudao.framework.apilog.core.service.ApiErrorLog;
|
||||||
import cn.iocoder.yudao.framework.common.exception.ServiceException;
|
import cn.iocoder.yudao.framework.common.exception.ServiceException;
|
||||||
|
@ -219,6 +220,13 @@ public class GlobalExceptionHandler {
|
||||||
*/
|
*/
|
||||||
@ExceptionHandler(value = Exception.class)
|
@ExceptionHandler(value = Exception.class)
|
||||||
public CommonResult<?> defaultExceptionHandler(HttpServletRequest req, Throwable ex) {
|
public CommonResult<?> defaultExceptionHandler(HttpServletRequest req, Throwable ex) {
|
||||||
|
// 情况一:处理表不存在的异常
|
||||||
|
CommonResult<?> tableNotExistsResult = handleTableNotExists(ex);
|
||||||
|
if (tableNotExistsResult != null) {
|
||||||
|
return tableNotExistsResult;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 情况二:处理异常
|
||||||
log.error("[defaultExceptionHandler]", ex);
|
log.error("[defaultExceptionHandler]", ex);
|
||||||
// 插入异常日志
|
// 插入异常日志
|
||||||
this.createExceptionLog(req, ex);
|
this.createExceptionLog(req, ex);
|
||||||
|
@ -269,4 +277,48 @@ public class GlobalExceptionHandler {
|
||||||
errorLog.setExceptionTime(LocalDateTime.now());
|
errorLog.setExceptionTime(LocalDateTime.now());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 处理 Table 不存在的异常情况
|
||||||
|
*
|
||||||
|
* @param ex 异常
|
||||||
|
* @return 如果是 Table 不存在的异常,则返回对应的 CommonResult
|
||||||
|
*/
|
||||||
|
private CommonResult<?> handleTableNotExists(Throwable ex) {
|
||||||
|
String message = ExceptionUtil.getRootCauseMessage(ex);
|
||||||
|
if (!message.contains("doesn't exist")) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
// 1. 数据报表
|
||||||
|
if (message.contains("report_")) {
|
||||||
|
log.error("[报表模块 yudao-module-report - 表结构未导入][参考 https://doc.iocoder.cn/report/ 开启]");
|
||||||
|
return CommonResult.error(NOT_IMPLEMENTED.getCode(),
|
||||||
|
"[报表模块 yudao-module-report - 表结构未导入][参考 https://doc.iocoder.cn/report/ 开启]");
|
||||||
|
}
|
||||||
|
// 2. 工作流
|
||||||
|
if (message.contains("bpm_")) {
|
||||||
|
log.error("[工作流模块 yudao-module-bpm - 表结构未导入][参考 https://doc.iocoder.cn/bpm/ 开启]");
|
||||||
|
return CommonResult.error(NOT_IMPLEMENTED.getCode(),
|
||||||
|
"[工作流模块 yudao-module-bpm - 表结构未导入][参考 https://doc.iocoder.cn/bpm/ 开启]");
|
||||||
|
}
|
||||||
|
// 3. 微信公众号
|
||||||
|
if (message.contains("mp_")) {
|
||||||
|
log.error("[微信公众号 yudao-module-mp - 表结构未导入][参考 https://doc.iocoder.cn/mp/build/ 开启]");
|
||||||
|
return CommonResult.error(NOT_IMPLEMENTED.getCode(),
|
||||||
|
"[微信公众号 yudao-module-mp - 表结构未导入][参考 https://doc.iocoder.cn/mp/build/ 开启]");
|
||||||
|
}
|
||||||
|
// 4. 商城系统
|
||||||
|
if (StrUtil.containsAny(message, "product_", "promotion_", "trade_")) {
|
||||||
|
log.error("[商城系统 yudao-module-mall - 已禁用][参考 https://doc.iocoder.cn/mall/build/ 开启]");
|
||||||
|
return CommonResult.error(NOT_IMPLEMENTED.getCode(),
|
||||||
|
"[商城系统 yudao-module-mall - 已禁用][参考 https://doc.iocoder.cn/mall/build/ 开启]");
|
||||||
|
}
|
||||||
|
// 5. 支付平台
|
||||||
|
if (message.contains("pay_")) {
|
||||||
|
log.error("[支付模块 yudao-module-pay - 表结构未导入][参考 https://doc.iocoder.cn/pay/build/ 开启]");
|
||||||
|
return CommonResult.error(NOT_IMPLEMENTED.getCode(),
|
||||||
|
"[支付模块 yudao-module-pay - 表结构未导入][参考 https://doc.iocoder.cn/pay/build/ 开启]");
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,6 +27,7 @@ import org.springframework.validation.annotation.Validated;
|
||||||
import javax.annotation.PostConstruct;
|
import javax.annotation.PostConstruct;
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
|
@ -68,7 +69,15 @@ public class MpAccountServiceImpl implements MpAccountService {
|
||||||
// 注意:忽略自动多租户,因为要全局初始化缓存
|
// 注意:忽略自动多租户,因为要全局初始化缓存
|
||||||
TenantUtils.executeIgnore(() -> {
|
TenantUtils.executeIgnore(() -> {
|
||||||
// 第一步:查询数据
|
// 第一步:查询数据
|
||||||
List<MpAccountDO> accounts = mpAccountMapper.selectList();
|
List<MpAccountDO> accounts = Collections.emptyList();
|
||||||
|
try {
|
||||||
|
accounts = mpAccountMapper.selectList();
|
||||||
|
} catch (Throwable ex) {
|
||||||
|
if (!ex.getMessage().contains("doesn't exist")) {
|
||||||
|
throw ex;
|
||||||
|
}
|
||||||
|
log.error("[微信公众号 yudao-module-mp - 表结构未导入][参考 https://doc.iocoder.cn/mp/build/ 开启]");
|
||||||
|
}
|
||||||
log.info("[initLocalCacheIfUpdate][缓存公众号账号,数量为:{}]", accounts.size());
|
log.info("[initLocalCacheIfUpdate][缓存公众号账号,数量为:{}]", accounts.size());
|
||||||
|
|
||||||
// 第二步:构建缓存。创建或更新支付 Client
|
// 第二步:构建缓存。创建或更新支付 Client
|
||||||
|
|
|
@ -27,6 +27,7 @@ import javax.annotation.Resource;
|
||||||
import javax.validation.Validator;
|
import javax.validation.Validator;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
|
@ -64,7 +65,15 @@ public class PayChannelServiceImpl implements PayChannelService {
|
||||||
// 注意:忽略自动多租户,因为要全局初始化缓存
|
// 注意:忽略自动多租户,因为要全局初始化缓存
|
||||||
TenantUtils.executeIgnore(() -> {
|
TenantUtils.executeIgnore(() -> {
|
||||||
// 第一步:查询数据
|
// 第一步:查询数据
|
||||||
List<PayChannelDO> channels = channelMapper.selectList();
|
List<PayChannelDO> channels = Collections.emptyList();
|
||||||
|
try {
|
||||||
|
channels = channelMapper.selectList();
|
||||||
|
} catch (Throwable ex) {
|
||||||
|
if (!ex.getMessage().contains("doesn't exist")) {
|
||||||
|
throw ex;
|
||||||
|
}
|
||||||
|
log.error("[支付模块 yudao-module-pay - 表结构未导入][参考 https://doc.iocoder.cn/pay/build/ 开启]");
|
||||||
|
}
|
||||||
log.info("[initLocalCache][缓存支付渠道,数量为:{}]", channels.size());
|
log.info("[initLocalCache][缓存支付渠道,数量为:{}]", channels.size());
|
||||||
|
|
||||||
// 第二步:构建缓存:创建或更新支付 Client
|
// 第二步:构建缓存:创建或更新支付 Client
|
||||||
|
|
Loading…
Reference in New Issue