Commit d13d83a6 authored by zhangc's avatar zhangc

添加公共异常处理类

parent 37b205bb
#数据源
spring:
security:
basic:
enabled: false
datasource:
url: jdbc:mysql://rm-wz9n399q2avsy3k6m4o.mysql.rds.aliyuncs.com:3306/wj-mkt-project?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&useSSL=false
username: root
password: I%ou$buy!ok
driver-class-name: com.mysql.jdbc.Driver
druid:
# 初始化时建立物理连接的个数。初始化发生在显示调用init方法,或者第一次getConnection时
initialSize: 1
# 最小连接池数量
minIdle: 1
# 最大连接池数量
maxActive: 10
# 配置获取连接等待超时的时间
maxWait: 10000
# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
timeBetweenEvictionRunsMillis: 60000
# 配置一个连接在池中最小生存的时间,单位是毫秒
minEvictableIdleTimeMillis: 300000
# 验证连接有效与否的SQL,不同的数据配置不同
validationQuery: select 1
# 建议配置为true,不影响性能,并且保证安全性。
# 申请连接的时候检测,如果空闲时间大于
# timeBetweenEvictionRunsMillis,
# 执行validationQuery检测连接是否有效。
testWhileIdle: true
# 申请连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能。
# 这里建议配置为TRUE,防止取到的连接不可用
testOnBorrow: true
# 归还连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能
testOnReturn: false
# 是否缓存preparedStatement,也就是PSCache。
# PSCache对支持游标的数据库性能提升巨大,比如说oracle。
# 在mysql5.5以下的版本中没有PSCache功能,建议关闭掉。
# 作者在5.5版本中使用PSCache,通过监控界面发现PSCache有缓存命中率记录,
# 该应该是支持PSCache。
# 打开PSCache,并且指定每个连接上PSCache的大小
poolPreparedStatements: true
maxPoolPreparedStatementPerConnectionSize: 20
# 属性类型是字符串,通过别名的方式配置扩展插件,
# 常用的插件有:
# 监控统计用的filter:stat
# 日志用的filter:log4j
# 防御sql注入的filter:wall
filters: stat
# ====================MybatisPlus====================
package com.jz.common.constant;
import com.alibaba.fastjson.JSON;
/**
* @author ZC
* @PACKAGE_NAME: com.fbpay.broker.common
* @PROJECT_NAME: fbp-parent
* @NAME: ResultCode
* @USER: Administrator
* @DATE: 2020/5/24/10:39
* @DAY_NAME_SHORT: 周日
* @Description: 返回状态吗枚举类
**/
public enum ResultCode {
/** 执行成功 */
SUCCESS(200, ResultMsg.SUCCESS),
/** 执行失败 */
FAILURE(300, ResultMsg.DATA_NOT_FOUND),
/** 未授权的访问 */
UNAUTHORIZED(401, ResultMsg.UNAUTHORIZED),
/** 授权过期 */
INVALID_TOKEN(402, ResultMsg.INVALID_TOKEN),
/** 禁止访问 */
FORBIDOM(403, ResultMsg.FORBIDOM);
private int code;
/**
* 提示信息
*/
private ResultMsg msg;
private ResultCode(int code, ResultMsg msg) {
this.code = code;
this.msg = msg;
}
/**
* 通过业务代码获取业务操作枚举
* @param code 业务代码
* @return 业务枚举
*/
public static ResultCode getResultStatusEnum(int code) {
for (ResultCode item : ResultCode.values()) {
if (item.code == code) {
return item;
}
}
return null;
}
@Override
public String toString() {
return JSON.toJSONString(this);
}
public int getCode() {
return code;
}
public ResultMsg getMsg() {
return this.msg;
}
public void setMsg(ResultMsg msg) {
this.msg = msg;
}
}
package com.jz.common.exception;
import com.jz.common.constant.ResultCode;
import com.jz.common.constant.ResultMsg;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* @date 业务异常 父类。在restful 接口层使用切面捕获,统一封装输出。
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class ResponseException extends RuntimeException {
private static final long serialVersionUID = -721489076559710085L;
/**
* 错误代码
*/
protected ResultCode code;
/**
* 错误信息
*/
protected String message;
private Throwable cause;
public static ResponseException of_error(ResultMsg errorMsg) {
return ResponseException.of(ResultCode.FAILURE,errorMsg.getMsg());
}
public static ResponseException of_error(String errorMsg) {
return ResponseException.of(ResultCode.FAILURE,errorMsg);
}
public static ResponseException of(ResultCode code) {
ResponseException ufaceException = new ResponseException();
ufaceException.setCode(code);
ufaceException.setMessage(code.getMsg().getMsg());
return ufaceException;
}
public static ResponseException of(ResultCode code, String message) {
ResponseException ufaceException = new ResponseException();
ufaceException.setCode(code);
ufaceException.setMessage(message);
return ufaceException;
}
public static ResponseException ofDetail(ResultCode code, Object... params) {
String message = String.format(code.getMsg().getMsg(), params);
ResponseException ufaceException = new ResponseException();
ufaceException.setCode(code);
ufaceException.setMessage(message);
return ufaceException;
}
public static ResponseException of(ResultCode code, Throwable cause) {
ResponseException ufaceException = new ResponseException();
ufaceException.setCode(code);
ufaceException.setCause(cause);
ufaceException.setMessage("todo need get from db/properties");
return ufaceException;
}
}
package com.jz.dm.mall.moduls.service.impl;
import com.jz.common.entity.Department;
import com.jz.common.exception.ResponseException;
import com.jz.dm.mall.moduls.entity.FinanceCustomerAssets;
import com.jz.dm.mall.moduls.entity.MallCustomer;
import com.jz.common.utils.Result;
......@@ -104,7 +105,7 @@ public class CompanyAuthServiceImpl implements CompanyAuthService {
departmentInset.setCrePerson(req.getLoginName());
BeanUtils.copyProperties(req,departmentInset);
if (departmentDao.insert(departmentInset) != 1){
throw new RuntimeException("保存企业信息失败");
throw ResponseException.of_error("保存企业信息失败");
}
//初始化用户资产表
FinanceCustomerAssets finance = new FinanceCustomerAssets();
......@@ -112,7 +113,7 @@ public class CompanyAuthServiceImpl implements CompanyAuthService {
finance.setCreTime(new Date());
finance.setCrePerson(req.getLoginName());
if (financeCustomerAssetsDao.insert(finance) != 1){
throw new RuntimeException("初始化用户资产失败");
throw ResponseException.of_error("初始化用户资产失败");
}
//更新用户企业信息
MallCustomer mallCustomer = new MallCustomer();
......@@ -121,7 +122,7 @@ public class CompanyAuthServiceImpl implements CompanyAuthService {
mallCustomer.setUptTime(new Date());
// mallCustomer.setUptPerson(req.getLoginName());
if (mallCustomerDao.updateById(mallCustomer) != 1){
throw new RuntimeException("更新用户企业信息失败");
throw ResponseException.of_error("更新用户企业信息失败");
}
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment