1,数据源参数配置优化

2,读写分离数据源切换优化
3,日志切面优化调整
4,登陆线程优化
5,对象新增、修改监听优化
yun-zuoyi
alwaysfrin 5 years ago
parent e6b472bcfd
commit 8b6271cebc

@ -25,6 +25,7 @@ import java.util.Map;
**/ **/
@Data @Data
@MappedSuperclass @MappedSuperclass
@EntityListeners(BaseBeanListener.class) //对象状态监听
//@Entity //@Entity
//以子类table为准 //以子类table为准
//@javax.persistence.Inheritance(strategy=InheritanceType.TABLE_PER_CLASS) //@javax.persistence.Inheritance(strategy=InheritanceType.TABLE_PER_CLASS)

@ -0,0 +1,90 @@
package cn.estsh.i3plus.pojo.base.bean;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import org.apache.commons.lang3.StringUtils;
import javax.persistence.PrePersist;
import javax.persistence.PreUpdate;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* @Description :
* @Reference :
* @Author : alwaysfrin
* @CreateDate : 2020-08-24 22:28
* @Modify:
**/
public class BaseBeanListener {
//实体保存前
@PrePersist
public void prePersist(BaseBean baseBean) {
// 创建用户
if (StringUtils.isBlank(baseBean.getCreateUser())) {
if(StringUtils.isNotBlank(BaseThreadLocal.getThreadEmpName())) {
baseBean.setCreateUser(BaseThreadLocal.getThreadEmpName());
baseBean.setModifyUser(BaseThreadLocal.getThreadEmpName());
}
}
//组织代码
if (StringUtils.isBlank(baseBean.getOrganizeCode())) {
if(StringUtils.isNotBlank(BaseThreadLocal.getThreadOrganizeCode())) {
baseBean.setOrganizeCode(BaseThreadLocal.getThreadOrganizeCode());
}
}
// 创建时间
if (StringUtils.isBlank(baseBean.getCreateDatetime())){
baseBean.setCreateDatetime((new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")).format(new Date()));
baseBean.setModifyDatetime((new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")).format(new Date()));
}
//有效性
if(baseBean.getIsValid() == null ||
(baseBean.getIsValid() != CommonEnumUtil.IS_VAILD.VAILD.getValue() && baseBean.getIsValid() != CommonEnumUtil.IS_VAILD.INVAILD.getValue())){
baseBean.setIsValid(CommonEnumUtil.IS_VAILD.VAILD.getValue()); //有效
}
//是否删除
if(baseBean.getIsDeleted() == null ||
(baseBean.getIsDeleted() != CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue() && baseBean.getIsDeleted() != CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue())){
baseBean.setIsDeleted(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()); //未删除
}
}
//实体对象保存之后
/*@PostPersist
public void afterPersist(){
}*/
//实体对象修改之前
@PreUpdate
public void preUpdate(BaseBean baseBean) {
// 修改用户
if (StringUtils.isBlank(baseBean.getModifyUser())) {
if(StringUtils.isNotBlank(BaseThreadLocal.getThreadEmpName())) {
baseBean.setModifyUser(BaseThreadLocal.getThreadEmpName());
}
}
// 修改时间
if (StringUtils.isEmpty(baseBean.getModifyDatetime())){
baseBean.setModifyDatetime((new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")).format(new Date()));
}
//组织代码
if (StringUtils.isBlank(baseBean.getOrganizeCode())) {
if(StringUtils.isNotBlank(BaseThreadLocal.getThreadOrganizeCode())) {
baseBean.setOrganizeCode(BaseThreadLocal.getThreadOrganizeCode());
}
}
//有效性
if(baseBean.getIsValid() == null ||
(baseBean.getIsValid() != CommonEnumUtil.IS_VAILD.VAILD.getValue() && baseBean.getIsValid() != CommonEnumUtil.IS_VAILD.INVAILD.getValue())){
baseBean.setIsValid(CommonEnumUtil.IS_VAILD.VAILD.getValue()); //有效
}
//是否删除
if(baseBean.getIsDeleted() == null ||
(baseBean.getIsDeleted() != CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue() && baseBean.getIsDeleted() != CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue())){
baseBean.setIsDeleted(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()); //未删除
}
}
}

@ -0,0 +1,142 @@
package cn.estsh.i3plus.pojo.base.bean;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.HashMap;
/**
* @Description : 线线
* 线removeThreadLocal
* @Reference : controller
* @Author : alwaysfrin
* @CreateDate : 2020-08-24 20:49
* @Modify:
**/
public class BaseThreadLocal {
public static final Logger LOGGER = LoggerFactory.getLogger(BaseThreadLocal.class);
/*private static final ThreadLocal<HashMap<String,Object>> dataThredLocal = new ThreadLocal(){
@Override
protected HashMap<String,Object> initialValue() {
//每个线程初始化map
return new HashMap<String,Object>();
}
};*/
private static final ThreadLocal<HashMap<String,Object>> dataThredLocal = ThreadLocal.withInitial(() -> new HashMap<>());
public static Object getData(String key) {
if(dataThredLocal.get() != null) {
return dataThredLocal.get().get(key);
}else{
return null;
}
}
public static String getDataStr(String key) {
Object data = getData(key);
if(data != null){
return data.toString();
}else{
return null;
}
}
public static int getDataInt(String key) {
Object data = getData(key);
if(data != null){
return Integer.parseInt(data.toString());
}else{
return 0;
}
}
public static long getDataLong(String key) {
Object data = getData(key);
if(data != null){
return Long.parseLong(data.toString());
}else{
return 0L;
}
}
public static double getDataDouble(String key) {
Object data = getData(key);
if(data != null){
return Double.parseDouble(data.toString());
}else{
return 0.0;
}
}
public static void setData(String name, Object value) {
//不需要主数据源开始,则自动切换
dataThredLocal.get().put(name, value);
}
/**
* 线
* ascept
*/
public static void removeThreadLocal(){
if(dataThredLocal != null) {
if (dataThredLocal.get() != null) {
//清空数据
dataThredLocal.get().clear();
}
//移除当前线程信息
dataThredLocal.remove();
}
}
public static String getInfo(){
Thread thread = Thread.currentThread();
return "thead-id:" + thread.getId() + ",thread:" + thread;
}
public static void printDetail(){
LOGGER.info("========本地线程临时数据=======");
LOGGER.info("数据数量:{}", dataThredLocal.get().size());
for(String key : dataThredLocal.get().keySet()){
LOGGER.info("key:{},value:{}",key,dataThredLocal.get().get(key));
}
}
/********* 用户信息 **********/
public static final String INIT_INFO = "INIT_INFO"; //初始化数据
public static final String EMP_NAME = "USER_NAME"; //用户名
public static final String ORGANIZE_CODE = "ORGANIZE_CODE"; //组织代码
public static boolean isInit(){
Object data = getData(INIT_INFO);
if(data != null){
return Boolean.parseBoolean(data.toString());
}else{
return false;
}
}
//初始化用户数据
public static void initSessionUserThreadLocal(String empName, String organizeCode){
setData(BaseThreadLocal.EMP_NAME, empName);
setData(BaseThreadLocal.ORGANIZE_CODE, organizeCode);
setData(BaseThreadLocal.INIT_INFO, true);
}
//获取线程中的人员姓名
public static String getThreadEmpName(){
String empName = getDataStr(EMP_NAME);
if(empName == null){
empName = "系统";
}
return empName;
}
//获取线程中的组织代码
public static String getThreadOrganizeCode(){
String organizeCode = getDataStr(ORGANIZE_CODE);
if(organizeCode == null){
organizeCode = "-1";
}
return organizeCode;
}
}
Loading…
Cancel
Save