Selaa lähdekoodia

Merge branch 'dev' of http://192.168.1.220:10080/jiwei/wlyy2.0 into dev

Conflicts:
	svr/svr-base/src/main/java/com/yihu/jw/base/endpoint/servicePackage/ServicePackageEndpoint.java
yeshijie 6 vuotta sitten
vanhempi
commit
1690941274

+ 13 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/base/role/MenuDO.java

@ -23,6 +23,10 @@ public class MenuDO extends UuidIdentityEntityWithOperator {
	 * 请求路径
	 * 请求路径
	 */
	 */
	private String url;
	private String url;
	/**
	 * 菜单图标
	 */
	private String icon;
	/**
	/**
	 * 请求方式
	 * 请求方式
	 */
	 */
@ -107,6 +111,15 @@ public class MenuDO extends UuidIdentityEntityWithOperator {
		this.url = url;
		this.url = url;
	}
	}
	@Column(name = "icon")
	public String getIcon() {
		return icon;
	}
	public void setIcon(String icon) {
		this.icon = icon;
	}
	@Column(name = "method")
	@Column(name = "method")
	public String getMethod() {
	public String getMethod() {
		return method;
		return method;

+ 10 - 0
common/common-rest-model/src/main/java/com/yihu/jw/restmodel/base/role/MenuVO.java

@ -17,6 +17,8 @@ public class MenuVO extends UuidIdentityVOWithOperator {
    private String name;
    private String name;
    @ApiModelProperty(value = "请求路径", example = "/usr/var")
    @ApiModelProperty(value = "请求路径", example = "/usr/var")
    private String url;
    private String url;
    @ApiModelProperty(value = "菜单图标", example = "icon")
    private String icon;
//    @ApiModelProperty(value = "请求方式", example = "get,post")
//    @ApiModelProperty(value = "请求方式", example = "get,post")
//    private String method;
//    private String method;
    @ApiModelProperty(value = "排序", example = "1")
    @ApiModelProperty(value = "排序", example = "1")
@ -46,6 +48,14 @@ public class MenuVO extends UuidIdentityVOWithOperator {
        this.url = url;
        this.url = url;
    }
    }
    public String getIcon() {
        return icon;
    }
    public void setIcon(String icon) {
        this.icon = icon;
    }
    public Integer getSort() {
    public Integer getSort() {
        return sort;
        return sort;
    }
    }

+ 4 - 0
svr/svr-base/src/main/java/com/yihu/jw/base/dao/module/ModuleDao.java

@ -6,6 +6,8 @@ import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import org.springframework.data.repository.PagingAndSortingRepository;
import java.util.List;
/**
/**
 * Dao - 模块
 * Dao - 模块
 * Created by chenweida on 2017/5/19.
 * Created by chenweida on 2017/5/19.
@ -18,4 +20,6 @@ public interface ModuleDao extends PagingAndSortingRepository<ModuleDO, String>,
    @Query("select count(*) from ModuleDO a where a.name = ?1 ")
    @Query("select count(*) from ModuleDO a where a.name = ?1 ")
    int isExistName(String name);
    int isExistName(String name);
    List<ModuleDO> findByParentId(String parentId);
}
}

+ 7 - 0
svr/svr-base/src/main/java/com/yihu/jw/base/dao/module/SaasModuleDao.java

@ -2,6 +2,8 @@ package com.yihu.jw.base.dao.module;
import com.yihu.jw.entity.base.module.SaasModuleDO;
import com.yihu.jw.entity.base.module.SaasModuleDO;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import org.springframework.data.repository.PagingAndSortingRepository;
/**
/**
@ -10,5 +12,10 @@ import org.springframework.data.repository.PagingAndSortingRepository;
 */
 */
public interface SaasModuleDao extends PagingAndSortingRepository<SaasModuleDO, String>, JpaSpecificationExecutor<SaasModuleDO> {
public interface SaasModuleDao extends PagingAndSortingRepository<SaasModuleDO, String>, JpaSpecificationExecutor<SaasModuleDO> {
    @Query("select count(*) from SaasModuleDO a where a.moduleId = ?1 ")
    int isExistModule(String moduleId);
    @Modifying
    @Query("delete from SaasModuleDO p where p.moduleId=?1 ")
    void deleteByModuleId(String moduleId);
}
}

+ 7 - 0
svr/svr-base/src/main/java/com/yihu/jw/base/dao/module/SaasTypeModuleDao.java

@ -2,6 +2,8 @@ package com.yihu.jw.base.dao.module;
import com.yihu.jw.entity.base.module.SaasTypeModuleDO;
import com.yihu.jw.entity.base.module.SaasTypeModuleDO;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import org.springframework.data.repository.PagingAndSortingRepository;
/**
/**
@ -10,5 +12,10 @@ import org.springframework.data.repository.PagingAndSortingRepository;
 */
 */
public interface SaasTypeModuleDao extends PagingAndSortingRepository<SaasTypeModuleDO, String>, JpaSpecificationExecutor<SaasTypeModuleDO> {
public interface SaasTypeModuleDao extends PagingAndSortingRepository<SaasTypeModuleDO, String>, JpaSpecificationExecutor<SaasTypeModuleDO> {
    @Query("select count(*) from SaasTypeModuleDO a where a.moduleId = ?1 ")
    int isExistModule(String moduleId);
    @Modifying
    @Query("delete from SaasTypeModuleDO p where p.moduleId=?1 ")
    void deleteByModuleId(String moduleId);
}
}

+ 173 - 3
svr/svr-base/src/main/java/com/yihu/jw/base/service/module/ModuleService.java

@ -2,13 +2,25 @@ package com.yihu.jw.base.service.module;
import com.yihu.jw.base.contant.CommonContant;
import com.yihu.jw.base.contant.CommonContant;
import com.yihu.jw.base.dao.module.ModuleDao;
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.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 com.yihu.mysql.query.BaseJpaService;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
/**
 * Service - 模块
 * Service - 模块
 * Created by chenweida on 2017/5/19.
 * Created by chenweida on 2017/5/19.
@ -18,6 +30,14 @@ public class ModuleService extends BaseJpaService<ModuleDO, ModuleDao> {
    @Autowired
    @Autowired
    private ModuleDao moduleDao;
    private ModuleDao moduleDao;
    @Autowired
    private SaasModuleDao saasModuleDao;
    @Autowired
    private SaasTypeModuleDao saasTypeModuleDao;
    @Autowired
    private SaasTypeDictDao saasTypeDictDao;
    @Autowired
    private SaasDao saasDao;
    /**
    /**
     * 新增模块
     * 新增模块
@ -29,13 +49,118 @@ public class ModuleService extends BaseJpaService<ModuleDO, ModuleDao> {
        if(StringUtils.isBlank(moduleDO.getParentId())){
        if(StringUtils.isBlank(moduleDO.getParentId())){
            moduleDO.setParentId(CommonContant.DEFAULT_PARENTID);
            moduleDO.setParentId(CommonContant.DEFAULT_PARENTID);
        }
        }
        moduleDO.setDel(1);
        moduleDao.save(moduleDO);
        moduleDao.save(moduleDO);
        //若新增某必选业务模块,则需为所有已创建的租户和租户类型添加此业务模块
        //若新增某必选业务模块,则需为所有已创建的租户和租户类型添加此业务模块
        addSubModule(moduleDO);
        return moduleDO;
    }
    /**
     * 新增模块时,新增租户和租户类型的模块
     * @param moduleDO
     */
    public void addSubModule(ModuleDO moduleDO){
        if (ModuleDO.Must.must.getValue().equals(moduleDO.getIsMust())){
        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 +170,54 @@ public class ModuleService extends BaseJpaService<ModuleDO, ModuleDao> {
     */
     */
    @Transactional(rollbackFor = Exception.class)
    @Transactional(rollbackFor = Exception.class)
    public void updateStatus(String id,Integer status){
    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);
            }
        });
    }
    }
    /**
    /**