|
@ -2,13 +2,25 @@ package com.yihu.jw.base.service.module;
|
|
|
|
|
|
import com.yihu.jw.base.contant.CommonContant;
|
|
|
import com.yihu.jw.base.dao.module.ModuleDao;
|
|
|
import com.yihu.jw.base.dao.module.SaasModuleDao;
|
|
|
import com.yihu.jw.base.dao.module.SaasTypeModuleDao;
|
|
|
import com.yihu.jw.base.dao.saas.SaasDao;
|
|
|
import com.yihu.jw.base.dao.saas.SaasTypeDictDao;
|
|
|
import com.yihu.jw.entity.base.module.ModuleDO;
|
|
|
import com.yihu.jw.entity.base.module.SaasModuleDO;
|
|
|
import com.yihu.jw.entity.base.module.SaasTypeModuleDO;
|
|
|
import com.yihu.jw.entity.base.saas.SaasDO;
|
|
|
import com.yihu.jw.entity.base.saas.SaasTypeDictDO;
|
|
|
import com.yihu.mysql.query.BaseJpaService;
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.Date;
|
|
|
import java.util.List;
|
|
|
|
|
|
/**
|
|
|
* Service - 模块
|
|
|
* Created by chenweida on 2017/5/19.
|
|
@ -18,6 +30,14 @@ public class ModuleService extends BaseJpaService<ModuleDO, ModuleDao> {
|
|
|
|
|
|
@Autowired
|
|
|
private ModuleDao moduleDao;
|
|
|
@Autowired
|
|
|
private SaasModuleDao saasModuleDao;
|
|
|
@Autowired
|
|
|
private SaasTypeModuleDao saasTypeModuleDao;
|
|
|
@Autowired
|
|
|
private SaasTypeDictDao saasTypeDictDao;
|
|
|
@Autowired
|
|
|
private SaasDao saasDao;
|
|
|
|
|
|
/**
|
|
|
* 新增模块
|
|
@ -29,13 +49,128 @@ public class ModuleService extends BaseJpaService<ModuleDO, ModuleDao> {
|
|
|
if(StringUtils.isBlank(moduleDO.getParentId())){
|
|
|
moduleDO.setParentId(CommonContant.DEFAULT_PARENTID);
|
|
|
}
|
|
|
moduleDO.setDel(1);
|
|
|
moduleDO.setIsEnd(1);
|
|
|
moduleDao.save(moduleDO);
|
|
|
//父节点设置非根节点
|
|
|
if(!CommonContant.DEFAULT_PARENTID.equals(moduleDO.getParentId())){
|
|
|
ModuleDO parentModule = moduleDao.findOne(moduleDO.getParentId());
|
|
|
if(ModuleDO.End.no.getValue().equals(parentModule.getIsEnd())){
|
|
|
parentModule.setIsEnd(ModuleDO.End.have.getValue());
|
|
|
moduleDao.save(parentModule);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
//若新增某必选业务模块,则需为所有已创建的租户和租户类型添加此业务模块
|
|
|
addSubModule(moduleDO);
|
|
|
|
|
|
return moduleDO;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 新增模块时,新增租户和租户类型的模块
|
|
|
* @param moduleDO
|
|
|
*/
|
|
|
public void addSubModule(ModuleDO moduleDO){
|
|
|
if (ModuleDO.Must.must.getValue().equals(moduleDO.getIsMust())){
|
|
|
//判断父模块是否必选
|
|
|
boolean parentIsMust = true;
|
|
|
ModuleDO parentModule = null;
|
|
|
if(!CommonContant.DEFAULT_PARENTID.equals(moduleDO.getParentId())){
|
|
|
parentModule = moduleDao.findOne(moduleDO.getParentId());
|
|
|
if(ModuleDO.Must.nonMust.getValue().equals(parentModule.getIsMust())){
|
|
|
parentIsMust = false;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
}
|
|
|
//租户类型
|
|
|
Iterable<SaasTypeDictDO> saasTypeDictDOs = saasTypeDictDao.findAll();
|
|
|
List<SaasTypeModuleDO> saasTypeModuleDOList = new ArrayList<>(16);
|
|
|
while (saasTypeDictDOs.iterator().hasNext()){
|
|
|
SaasTypeDictDO saasTypeDictDO = saasTypeDictDOs.iterator().next();
|
|
|
SaasTypeModuleDO saasTypeModuleDO = new SaasTypeModuleDO();
|
|
|
saasTypeModuleDO.setCreateTime(new Date());
|
|
|
saasTypeModuleDO.setDel(moduleDO.getDel());
|
|
|
saasTypeModuleDO.setStatus(moduleDO.getStatus());
|
|
|
saasTypeModuleDO.setIsEnd(moduleDO.getIsEnd());
|
|
|
saasTypeModuleDO.setIsMust(moduleDO.getIsMust());
|
|
|
saasTypeModuleDO.setModuleId(moduleDO.getId());
|
|
|
saasTypeModuleDO.setParentModuleId(moduleDO.getParentId());
|
|
|
saasTypeModuleDO.setName(moduleDO.getName());
|
|
|
saasTypeModuleDO.setRemark(moduleDO.getRemark());
|
|
|
saasTypeModuleDO.setSaasTypeId(saasTypeDictDO.getId());
|
|
|
saasTypeModuleDO.setType(moduleDO.getType());
|
|
|
saasTypeModuleDO.setUrl(moduleDO.getUrl());
|
|
|
saasTypeModuleDOList.add(saasTypeModuleDO);
|
|
|
|
|
|
return moduleDO;
|
|
|
//父模块非必选
|
|
|
if(!parentIsMust){
|
|
|
int count = saasTypeModuleDao.isExistModule(parentModule.getId());
|
|
|
if(count==0){
|
|
|
SaasTypeModuleDO typeModuleDO = new SaasTypeModuleDO();
|
|
|
typeModuleDO.setCreateTime(new Date());
|
|
|
typeModuleDO.setDel(parentModule.getDel());
|
|
|
typeModuleDO.setStatus(parentModule.getStatus());
|
|
|
typeModuleDO.setIsEnd(parentModule.getIsEnd());
|
|
|
typeModuleDO.setIsMust(parentModule.getIsMust());
|
|
|
typeModuleDO.setModuleId(parentModule.getId());
|
|
|
typeModuleDO.setParentModuleId(parentModule.getParentId());
|
|
|
typeModuleDO.setName(parentModule.getName());
|
|
|
typeModuleDO.setRemark(parentModule.getRemark());
|
|
|
typeModuleDO.setSaasTypeId(saasTypeDictDO.getId());
|
|
|
typeModuleDO.setType(parentModule.getType());
|
|
|
typeModuleDO.setUrl(parentModule.getUrl());
|
|
|
saasTypeModuleDOList.add(typeModuleDO);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
saasTypeModuleDao.save(saasTypeModuleDOList);
|
|
|
|
|
|
//租户
|
|
|
Iterable<SaasDO> saasDOs = saasDao.findAll();
|
|
|
List<SaasModuleDO> saasModuleDOList = new ArrayList<>(16);
|
|
|
while (saasDOs.iterator().hasNext()){
|
|
|
SaasDO saasDO = saasDOs.iterator().next();
|
|
|
SaasModuleDO saasModuleDO = new SaasModuleDO();
|
|
|
saasModuleDO.setCreateTime(new Date());
|
|
|
saasModuleDO.setDel(moduleDO.getDel());
|
|
|
saasModuleDO.setStatus(moduleDO.getStatus());
|
|
|
saasModuleDO.setIsEnd(moduleDO.getIsEnd());
|
|
|
saasModuleDO.setIsMust(moduleDO.getIsMust());
|
|
|
saasModuleDO.setModuleId(moduleDO.getId());
|
|
|
saasModuleDO.setParentModuleId(moduleDO.getParentId());
|
|
|
saasModuleDO.setName(moduleDO.getName());
|
|
|
saasModuleDO.setRemark(moduleDO.getRemark());
|
|
|
saasModuleDO.setSaasId(saasDO.getId());
|
|
|
saasModuleDO.setType(moduleDO.getType());
|
|
|
saasModuleDO.setUrl(moduleDO.getUrl());
|
|
|
saasModuleDOList.add(saasModuleDO);
|
|
|
|
|
|
//父模块非必选
|
|
|
if(!parentIsMust){
|
|
|
int count = saasModuleDao.isExistModule(parentModule.getId());
|
|
|
if(count==0){
|
|
|
SaasModuleDO saasModule = new SaasModuleDO();
|
|
|
saasModule.setCreateTime(new Date());
|
|
|
saasModule.setDel(parentModule.getDel());
|
|
|
saasModule.setStatus(parentModule.getStatus());
|
|
|
saasModule.setIsEnd(parentModule.getIsEnd());
|
|
|
saasModule.setIsMust(parentModule.getIsMust());
|
|
|
saasModule.setModuleId(parentModule.getId());
|
|
|
saasModule.setParentModuleId(parentModule.getParentId());
|
|
|
saasModule.setName(parentModule.getName());
|
|
|
saasModule.setRemark(parentModule.getRemark());
|
|
|
saasModule.setSaasId(saasDO.getId());
|
|
|
saasModule.setType(parentModule.getType());
|
|
|
saasModule.setUrl(parentModule.getUrl());
|
|
|
saasModuleDOList.add(saasModule);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
saasModuleDao.save(saasModuleDOList);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/**
|
|
@ -45,9 +180,54 @@ public class ModuleService extends BaseJpaService<ModuleDO, ModuleDao> {
|
|
|
*/
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public void updateStatus(String id,Integer status){
|
|
|
moduleDao.updateStatus(id,status);
|
|
|
ModuleDO moduleDO = moduleDao.findOne(id);
|
|
|
|
|
|
//若原业务模块为失效/生效,操作生效/失效后的变更逻辑如以下流程图所示
|
|
|
if(ModuleDO.Status.available.getValue().equals(status)){
|
|
|
//生效
|
|
|
available(moduleDO);
|
|
|
}else {
|
|
|
//失效
|
|
|
unavailable(moduleDO);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 生效
|
|
|
* @param moduleDO
|
|
|
*/
|
|
|
public void available(ModuleDO moduleDO){
|
|
|
moduleDO.setStatus(ModuleDO.Status.unAvailable.getValue());
|
|
|
moduleDao.save(moduleDO);
|
|
|
|
|
|
addSubModule(moduleDO);
|
|
|
|
|
|
ModuleDO parentModule = moduleDao.findOne(moduleDO.getParentId());
|
|
|
if(ModuleDO.Status.unAvailable.getValue().equals(parentModule.getStatus())){
|
|
|
available(moduleDO);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
/**
|
|
|
* 失效
|
|
|
* @param moduleDO
|
|
|
*/
|
|
|
public void unavailable(ModuleDO moduleDO){
|
|
|
//把本身失效
|
|
|
moduleDO.setStatus(ModuleDO.Status.unAvailable.getValue());
|
|
|
moduleDao.save(moduleDO);
|
|
|
|
|
|
saasTypeModuleDao.deleteByModuleId(moduleDO.getId());
|
|
|
saasModuleDao.deleteByModuleId(moduleDO.getId());
|
|
|
|
|
|
//把子类失效
|
|
|
List<ModuleDO> moduleDOList = moduleDao.findByParentId(moduleDO.getId());
|
|
|
moduleDOList.forEach(module->{
|
|
|
if(ModuleDO.Status.available.getValue().equals(module.getStatus())){
|
|
|
unavailable(moduleDO);
|
|
|
}
|
|
|
});
|
|
|
}
|
|
|
|
|
|
/**
|