zdm %!s(int64=6) %!d(string=hai) anos
pai
achega
ad414405d9

+ 1 - 0
common/common-request-mapping/src/main/java/com/yihu/jw/rm/base/BaseRequestMapping.java

@ -66,6 +66,7 @@ public class BaseRequestMapping {
        public static final String STATUS  = "/status";
        public static final String IS_NAME_EXIST  = "/isNameExist";
        public static final String FIND_ALL  = "/findAll";
        public static final String FIND_ALL_EXIST_CHECKED  = "/findAllExistChecked";
    }
    /**

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

@ -30,6 +30,8 @@ public class ModuleVO extends UuidIdentityVOWithOperator {
    private Integer isEnd ;
    @ApiModelProperty(value = "节点信息(0-表示非必选,1-表示必选)", example = "1")
    private Integer isMust ;
    @ApiModelProperty(value = "是否选中(0-表示未选,1-表示已选)", example = "1")
    private Integer isCheck ;
    @ApiModelProperty(value = "子集")
    private List<ModuleVO> children = new ArrayList<>();
@ -104,4 +106,12 @@ public class ModuleVO extends UuidIdentityVOWithOperator {
    public void setChildren(List<ModuleVO> children) {
        this.children = children;
    }
    public Integer getIsCheck() {
        return isCheck;
    }
    public void setIsCheck(Integer isCheck) {
        this.isCheck = isCheck;
    }
}

+ 2 - 0
svr/svr-base/src/main/java/com/yihu/jw/base/contant/CommonContant.java

@ -10,4 +10,6 @@ public class CommonContant {
     * 默认父类id 0
     */
    public static final String DEFAULT_PARENTID = "0";
    //是否必选0-表示非必选,1-表示必选
    public static final String IS_MUST = "1";
}

+ 2 - 0
svr/svr-base/src/main/java/com/yihu/jw/base/dao/function/FunctionDao.java

@ -17,5 +17,7 @@ public interface FunctionDao extends PagingAndSortingRepository<FunctionDO, Stri
    @Query("select f from FunctionDO  f where f.moduleId in (:moduleId)")
    List<FunctionDO> findFunctionDOSByModuleIdExists(@Param("moduleId") String[] moduleId);
    List<FunctionDO> findFunctionDOSByModuleId(String moduleId);
}

+ 45 - 3
svr/svr-base/src/main/java/com/yihu/jw/base/endpoint/module/ModuleEndpoint.java

@ -2,8 +2,10 @@ package com.yihu.jw.base.endpoint.module;
import com.yihu.jw.base.contant.CommonContant;
import com.yihu.jw.base.service.module.ModuleService;
import com.yihu.jw.base.service.saas.SaasDefaultModuleFunctionService;
import com.yihu.jw.base.util.ErrorCodeUtil;
import com.yihu.jw.entity.base.module.ModuleDO;
import com.yihu.jw.entity.base.saas.SaasDefaultModuleFunctionDO;
import com.yihu.jw.exception.code.BaseErrorCode;
import com.yihu.jw.restmodel.base.module.ModuleVO;
import com.yihu.jw.restmodel.web.Envelop;
@ -20,9 +22,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.stream.Collectors;
/**
@ -38,6 +38,8 @@ public class ModuleEndpoint extends EnvelopRestEndpoint {
    private ModuleService moduleService;
    @Autowired
    private ErrorCodeUtil errorCodeUtil;
    @Autowired
    private SaasDefaultModuleFunctionService saasDefaultModuleFunctionService;
    @PostMapping(value = BaseRequestMapping.Module.CREATE, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    @ApiOperation(value = "创建")
@ -152,4 +154,44 @@ public class ModuleEndpoint extends EnvelopRestEndpoint {
        return success(moduleVOs);
    }
    @GetMapping(value = BaseRequestMapping.Module.FIND_ALL_EXIST_CHECKED)
    @ApiOperation(value = "获取已关联租户类型模块列表")
    public ListEnvelop<ModuleVO> findAllExistChecked (
            @ApiParam(name = "saasTypeDictId", value = "租户类型id")
            @RequestParam(value = "saasTypeDictId", required = false) String saasTypeDictId) throws Exception {
        //根据租户类型获取关联的模块
        List<SaasDefaultModuleFunctionDO> saasDefaultModuleFunctionDOList = saasDefaultModuleFunctionService.findByField("saasType", saasTypeDictId);
        Set<String> moduleIdSet=new HashSet<>();
        for(SaasDefaultModuleFunctionDO saasDefaultModuleFunctionDO:saasDefaultModuleFunctionDOList){
            moduleIdSet.add(saasDefaultModuleFunctionDO.getModuleId());
        }
        //获取生效中的模块
        String filters = "status=1";
        List<ModuleDO> modules = moduleService.search(null, filters, null);
        List<ModuleVO> moduleVOs = convertToModels(modules,new ArrayList<>(modules.size()),ModuleVO.class);
        moduleVOs = moduleVOs.stream()
                .filter(module -> {
                    if(CommonContant.IS_MUST.equals(module.getIsMust())){
                        //是否选中(0-表示未选,1-表示已选)
                        module.setIsCheck(1);
                    }else {
                        module.setIsCheck(0);
                    }
                    if(moduleIdSet.contains(module.getId())){
                        //是否选中(0-表示未选,1-表示已选)
                        module.setIsCheck(1);
                    }
                    return true;
                }).collect(Collectors.toList());
        Map<String,List<ModuleVO>> map = moduleVOs.stream().collect(Collectors.groupingBy(ModuleVO::getParentId));
        moduleVOs.forEach(module->{
            List<ModuleVO> tmp = map.get(module.getId());
            module.setChildren(tmp);
        });
        moduleVOs = moduleVOs.stream()
                .filter(module -> CommonContant.DEFAULT_PARENTID.equals(module.getParentId()))
                .collect(Collectors.toList());
        return success(moduleVOs);
    }
}

+ 65 - 9
svr/svr-base/src/main/java/com/yihu/jw/base/endpoint/saas/SaasTypeDictEndpoint.java

@ -1,19 +1,23 @@
package com.yihu.jw.base.endpoint.saas;
import com.yihu.jw.base.contant.CommonContant;
import com.yihu.jw.base.service.module.ModuleService;
import com.yihu.jw.base.service.saas.SaasDefaultModuleFunctionService;
import com.yihu.jw.base.service.saas.SaasService;
import com.yihu.jw.base.service.saas.SaasTypeDictService;
import com.yihu.jw.base.service.user.UserService;
import com.yihu.jw.entity.base.module.ModuleDO;
import com.yihu.jw.entity.base.saas.SaasDO;
import com.yihu.jw.entity.base.saas.SaasDefaultModuleFunctionDO;
import com.yihu.jw.entity.base.saas.SaasTypeDictDO;
import com.yihu.jw.entity.base.user.UserDO;
import com.yihu.jw.restmodel.base.module.ModuleVO;
import com.yihu.jw.restmodel.base.saas.SaasDefaultModuleFunctionVO;
import com.yihu.jw.restmodel.base.saas.SaasTypeDictVO;
import com.yihu.jw.restmodel.base.saas.SaasVO;
import com.yihu.jw.restmodel.web.Envelop;
import com.yihu.jw.restmodel.web.ListEnvelop;
import com.yihu.jw.restmodel.web.ObjEnvelop;
import com.yihu.jw.restmodel.web.PageEnvelop;
import com.yihu.jw.restmodel.web.*;
import com.yihu.jw.restmodel.web.endpoint.EnvelopRestEndpoint;
import com.yihu.jw.restmodel.web.status.EnvelopStatus;
import com.yihu.jw.rm.base.BaseRequestMapping;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@ -23,7 +27,8 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.*;
import java.util.stream.Collectors;
/**
 * Endpoint - SaasTypeDict
@ -38,6 +43,8 @@ public class SaasTypeDictEndpoint extends EnvelopRestEndpoint {
    private SaasTypeDictService saasTypeDictService;
    @Autowired
    private SaasDefaultModuleFunctionService saasDefaultModuleFunctionService;
    @Autowired
    private ModuleService moduleService;
    @PostMapping(value = BaseRequestMapping.SaasTypeDict.CREATE, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    @ApiOperation(value = "创建")
@ -57,7 +64,7 @@ public class SaasTypeDictEndpoint extends EnvelopRestEndpoint {
    }
    @PostMapping(value = BaseRequestMapping.Saas.UPDATE, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    @PostMapping(value = BaseRequestMapping.SaasTypeDict.UPDATE, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    @ApiOperation(value = "更新")
    public ObjEnvelop<SaasTypeDictVO> update(
            @ApiParam(name = "saasTypeDictJson", value = "saas类型Json数据")
@ -68,7 +75,7 @@ public class SaasTypeDictEndpoint extends EnvelopRestEndpoint {
        if (null == saasTypeDictDO.getId()) {
            return failed("ID不能为空", ObjEnvelop.class);
        }
        if (saasTypeDictService.isSaasTypeDictExistByNameAndId(saasTypeDictDO.getId(),saasTypeDictDO.getName())) {
        if (saasTypeDictService.isSaasTypeDictExistByNameAndId(saasTypeDictDO.getId(), saasTypeDictDO.getName())) {
            return failed("租户类型名称重复!", ObjEnvelop.class);
        }
        //删除关联的模块
@ -77,7 +84,7 @@ public class SaasTypeDictEndpoint extends EnvelopRestEndpoint {
        return success("更新成功!", saasTypeDictDO, SaasTypeDictVO.class);
    }
    @GetMapping(value = BaseRequestMapping.Saas.PAGE)
    @GetMapping(value = BaseRequestMapping.SaasTypeDict.PAGE)
    @ApiOperation(value = "获取分页")
    public PageEnvelop<SaasTypeDictVO> page(
            @ApiParam(name = "name", value = "租户类型名称")
@ -103,7 +110,7 @@ public class SaasTypeDictEndpoint extends EnvelopRestEndpoint {
        return success(saasTypeDictDOS, count, page, size, SaasTypeDictVO.class);
    }
    @GetMapping(value = BaseRequestMapping.Saas.LIST)
    @GetMapping(value = BaseRequestMapping.SaasTypeDict.LIST)
    @ApiOperation(value = "获取列表")
    public ListEnvelop<SaasTypeDictVO> list(
            @ApiParam(name = "fields", value = "返回的字段,为空返回全部字段")
@ -116,5 +123,54 @@ public class SaasTypeDictEndpoint extends EnvelopRestEndpoint {
        return success(saasTypeDictDOS, SaasTypeDictVO.class);
    }
    @GetMapping(value = BaseRequestMapping.SaasTypeDict.FINDBYID)
    @ApiOperation(value = "根据id获取单个租户类型")
    public MixEnvelop<SaasTypeDictDO, List<ModuleVO>> findById(
            @ApiParam(name = "saasTypeDictId", value = "租户类型id")
            @RequestParam(value = "saasTypeDictId", required = true) String saasTypeDictId) throws Exception {
        MixEnvelop envelop=new MixEnvelop();
        //获取租户类型
        SaasTypeDictDO saasTypeDictDO = saasTypeDictService.findById(saasTypeDictId);
        envelop.setObj(saasTypeDictDO);
        if(null!=saasTypeDictDO){
            //根据租户类型获取关联的模块(右边树)
            List<SaasDefaultModuleFunctionDO> saasDefaultModuleFunctionDOList = saasDefaultModuleFunctionService.findByField("saasType", saasTypeDictDO.getCode());
            Set<String> moduleIdSet=new HashSet<>();
            for(SaasDefaultModuleFunctionDO saasDefaultModuleFunctionDO:saasDefaultModuleFunctionDOList){
                moduleIdSet.add(saasDefaultModuleFunctionDO.getModuleId());
            }
            //获取生效中的模块
            String filters = "status=1";
            List<ModuleDO> modules = moduleService.search(null, filters, null);
            List<ModuleVO> moduleVOs = convertToModels(modules,new ArrayList<>(modules.size()),ModuleVO.class);
            moduleVOs = moduleVOs.stream()
                    .filter(module -> {
                        if(CommonContant.IS_MUST.equals(module.getIsMust())){
                            //是否选中(0-表示未选,1-表示已选)
                            module.setIsCheck(1);
                        }else {
                            module.setIsCheck(0);
                        }
                        if(moduleIdSet.contains(module.getId())){
                            //是否选中(0-表示未选,1-表示已选)
                            module.setIsCheck(1);
                        }
                        return true;
                    }).collect(Collectors.toList());
            Map<String,List<ModuleVO>> map = moduleVOs.stream().collect(Collectors.groupingBy(ModuleVO::getParentId));
            moduleVOs.forEach(module->{
                List<ModuleVO> tmp = map.get(module.getId());
                module.setChildren(tmp);
            });
            moduleVOs = moduleVOs.stream()
                    .filter(module -> CommonContant.DEFAULT_PARENTID.equals(module.getParentId()))
                    .collect(Collectors.toList());
            envelop.setDetailModelList(moduleVOs);
        }
        envelop.setStatus(EnvelopStatus.success.code);
        envelop.setMessage("success");
        return envelop;
    }
}

+ 3 - 1
svr/svr-base/src/main/java/com/yihu/jw/base/service/saas/SaasDefaultModuleFunctionService.java

@ -1,12 +1,12 @@
package com.yihu.jw.base.service.saas;
import com.yihu.jw.base.dao.saas.SaasDefaultModuleFunctionDao;
import com.yihu.jw.base.dao.saas.SaasTypeDictDao;
import com.yihu.jw.entity.base.saas.SaasDefaultModuleFunctionDO;
import com.yihu.mysql.query.BaseJpaService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/**
 * Service - Saas默认模块功能
 * Created by progr1mmer on 2018/8/17.
@ -19,4 +19,6 @@ public class SaasDefaultModuleFunctionService extends BaseJpaService<SaasDefault
    public void deleteBySaasType(Integer saasType) {
        saasDefaultModuleFunctionDao.deleteBySaasType(saasType);
    }
}

+ 25 - 13
svr/svr-base/src/main/java/com/yihu/jw/base/service/saas/SaasTypeDictService.java

@ -43,7 +43,7 @@ public class SaasTypeDictService extends BaseJpaService<SaasTypeDictDO, SaasType
    public SaasTypeDictDO save(SaasTypeDictDO saasTypeDictDO, String saasTypeDefaultModuleIds) {
        //初始化租户信息
        Integer code ;
        Integer code;
        if (StringUtils.isEmpty(saasTypeDictDO.getId())) {
            //新增
            code = getNextSaasTypeDictCode();
@ -52,21 +52,33 @@ public class SaasTypeDictService extends BaseJpaService<SaasTypeDictDO, SaasType
            //编辑
            code = saasTypeDictDO.getCode();
        }
        //根据moduleId获取模块关联的接口id
        //根据moduleId获取模块关联的接口id(业务模块不包含接口也可被租户类型关联)
        String[] ids = saasTypeDefaultModuleIds.split(",");
        List<FunctionDO> functionDOList = functionDao.findFunctionDOSByModuleIdExists(ids);
        //初始化租户默认模块
        SaasDefaultModuleFunctionDO saasDefaultModuleFunctionDO;
        List<SaasDefaultModuleFunctionDO> saasDefaultModuleDOS = new ArrayList<>();
        functionDOList.forEach(item -> {
            SaasDefaultModuleFunctionDO saasDefaultModuleFunctionDO = new SaasDefaultModuleFunctionDO();
            saasDefaultModuleFunctionDO.setSaasType(code);
            saasDefaultModuleFunctionDO.setModuleId(item.getModuleId());
            saasDefaultModuleFunctionDO.setFunctionId(item.getId());
            saasDefaultModuleDOS.add(saasDefaultModuleFunctionDO);
        });
        for (String id : ids) {
            List<FunctionDO> functionDOList = functionDao.findFunctionDOSByModuleId(id);
            //模块关联接口
            if (null != functionDOList && functionDOList.size() > 0) {
                functionDOList.forEach(item -> {
                    SaasDefaultModuleFunctionDO saDeModuleFunctionDO = new SaasDefaultModuleFunctionDO();
                    saDeModuleFunctionDO.setSaasType(code);
                    saDeModuleFunctionDO.setModuleId(id);
                    saDeModuleFunctionDO.setFunctionId(item.getId());
                    saasDefaultModuleDOS.add(saDeModuleFunctionDO);
                });
            } else {
                //模块未关联接口
                saasDefaultModuleFunctionDO = new SaasDefaultModuleFunctionDO();
                saasDefaultModuleFunctionDO.setSaasType(code);
                saasDefaultModuleFunctionDO.setModuleId(id);
                saasDefaultModuleDOS.add(saasDefaultModuleFunctionDO);
            }
            //初始化租户默认模块
            saasDefaultModuleFunctionDao.save(saasDefaultModuleDOS);
        }
        //保存数据
        saasTypeDictDO = saasTypeDictDao.save(saasTypeDictDO);
        saasDefaultModuleFunctionDao.save(saasDefaultModuleDOS);
        return saasTypeDictDO;
    }
@ -95,7 +107,7 @@ public class SaasTypeDictService extends BaseJpaService<SaasTypeDictDO, SaasType
        return count.compareTo(new BigInteger("0")) > 0;
    }
    public SaasTypeDictDO findById(String id){
    public SaasTypeDictDO findById(String id) {
        return saasTypeDictDao.findById(id);
    }
}