/**
|
* Copyright (c) 2018 人人开源 All rights reserved.
|
*
|
* https://www.renren.io
|
*
|
* 版权所有,侵权必究!
|
*/
|
|
package com.zt.core.config.mybatis;
|
|
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
|
import com.zt.common.entity.*;
|
import com.zt.common.exception.RenException;
|
import com.zt.common.utils.SpringContextUtils;
|
import com.zt.core.context.User;
|
import com.zt.core.context.UserContext;
|
import com.zt.core.sys.model.SysDept;
|
import com.zt.modules.sys.service.SysDeptService;
|
import org.apache.ibatis.reflection.MetaObject;
|
import org.springframework.stereotype.Component;
|
|
import java.util.Date;
|
|
/**
|
* 公共字段,自动填充值
|
*
|
* @author hehz
|
*/
|
@Component("fieldHandler")
|
public class FieldMetaObjectHandler implements MetaObjectHandler {
|
|
// @Autowired
|
private SysDeptService sysDeptService;
|
|
@Override
|
public void insertFill(MetaObject metaObject) {
|
Object object = metaObject.getOriginalObject();
|
User user = UserContext.getUser();
|
Date date = new Date();
|
|
if (object instanceof PlatformLogEntity) {
|
PlatformLogEntity entity = (PlatformLogEntity) object;
|
entity.setCreator(user.getId());// 创建者
|
entity.setCreateDate(date);// 创建时间
|
}
|
if (object instanceof PlatformEntity) {
|
PlatformEntity entity = (PlatformEntity) object;
|
entity.setDelete(false);
|
entity.setUpdater(user.getId());// 更新者
|
entity.setUpdateDate(date);// 更新时间
|
}
|
if (object instanceof TenantEntity) {
|
TenantEntity entity = (TenantEntity) object;
|
entity.setTenantId(user.getTenantId());
|
}
|
this.setBusiLevelIds(object);
|
}
|
|
@Override
|
public void updateFill(MetaObject metaObject) {
|
Object object = metaObject.getOriginalObject();
|
if (object instanceof PlatformEntity) {
|
PlatformEntity entity = (PlatformEntity) object;
|
entity.setUpdater(UserContext.getUserId());// 更新者
|
entity.setUpdateDate(new Date());// 更新时间
|
}
|
|
this.setBusiLevelIds(object);
|
}
|
|
private void setBusiLevelIds(Object object) {
|
User user = UserContext.getUser();
|
if (object instanceof IBusiLevel) {// 到业务层级:deptId
|
IBusiLevel entity = (IBusiLevel) object;
|
if (isEmpty(entity.getDeptId()) || user.getDeptId().equals(entity.getDeptId())) {
|
// 没有设置部门id,或者跟当前用户相同,那么保存为当前登录用户的
|
entity.setDeptId(user.getDeptId());
|
entity.setCompanyId(user.getCompanyId());
|
entity.setTenantId(user.getTenantId());
|
}
|
// else {// 设置了不同于当前用户的
|
// SysDept dept = getSysDeptService().get(entity.getDeptId());
|
// if (dept == null) {
|
// throw new RenException("部门信息缺失!");
|
// }
|
// entity.setCompanyId(dept.getCompanyId());// 公司
|
// entity.setTenantId(dept.getTenantId());// 租户
|
// }
|
} else if (object instanceof ICompanyLevel) {// 到公司层级
|
ICompanyLevel entity = (ICompanyLevel) object;
|
if (isEmpty(entity.getCompanyId()) || user.getCompanyId().equals(entity.getCompanyId())) {
|
entity.setCompanyId(user.getCompanyId());
|
entity.setTenantId(user.getTenantId());
|
}
|
// else if (isEmpty(entity.getTenantId())) {// 租户没有设置
|
// SysDept company = getSysDeptService().get(entity.getCompanyId());
|
// if (company == null) {
|
// throw new RenException("公司信息缺失!");
|
// }
|
// entity.setTenantId(company.getTenantId());// 租户
|
// }
|
} else if (object instanceof ITenantLevel) {// 到租户层级
|
ITenantLevel entity = (ITenantLevel) object;
|
if (isEmpty(entity.getTenantId())) {
|
entity.setTenantId(user.getTenantId());
|
}
|
}
|
}
|
|
private boolean isEmpty(Long value) {
|
return value == null || value == 0;
|
}
|
|
private SysDeptService getSysDeptService() {
|
if (sysDeptService == null) {
|
sysDeptService = SpringContextUtils.getBean(SysDeptService.class);
|
}
|
return sysDeptService;
|
}
|
}
|