| 
					
				 | 
			
			
				@ -3,12 +3,14 @@ package com.yihu.jw.base.service.doctor; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.alibaba.fastjson.JSONArray; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.alibaba.fastjson.JSONObject; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.fasterxml.jackson.databind.ObjectMapper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.base.contant.CommonContant; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.base.dao.doctor.BaseDoctorRoleInfoDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.base.dao.doctor.BaseModuleRoleDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.base.dao.role.BaseRoleMenuDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.base.dao.role.RoleDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.base.dao.saas.SaasDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.base.dao.user.UserDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.base.service.module.SaasModuleService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.base.service.org.BaseOrgSaasService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.base.service.org.BaseOrgUserService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.base.service.org.OrgTree; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -18,10 +20,14 @@ import com.yihu.jw.base.util.ConstantUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.base.util.JavaBeanUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.entity.base.doctor.BaseDoctorRoleInfoDO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.entity.base.doctor.BaseModuleRoleDO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.entity.base.module.ModuleDO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.entity.base.module.SaasModuleDO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.entity.base.org.BaseOrgUserDO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.entity.base.role.RoleDO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.entity.base.saas.SaasDO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.entity.base.user.UserDO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.restmodel.base.module.ModuleVO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.restmodel.base.module.SaasModuleVO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.mysql.query.BaseJpaService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.utils.security.MD5; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.apache.commons.collections.map.HashedMap; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -35,7 +41,9 @@ import org.springframework.util.CollectionUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.springframework.util.StringUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import java.io.IOException; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import java.text.ParseException; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import java.util.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import java.util.stream.Collectors; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 *  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -67,10 +75,67 @@ public class BaseDoctorRoleInfoService extends BaseJpaService<BaseDoctorRoleInfo 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private BaseModuleRoleService baseModuleRoleService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private SaasModuleService saasModuleService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Value("${configDefault.saasId}") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private String defaultSaasId; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 获取租户下的模块列表 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param saasId 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public JSONObject getModuleTreeBySaas(String saasId,String roleId) throws ParseException { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        JSONObject result = new JSONObject(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if(StringUtils.isEmpty(saasId) && StringUtils.isEmpty(roleId)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            result.put("msg","parameter saasId and roleId are null "); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            result.put("response",ConstantUtils.FAIL); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return result; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String filters = "status="+ ModuleDO.Status.available.getValue()+";"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<SaasModuleDO> modules = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if(!StringUtils.isEmpty(saasId) && StringUtils.isEmpty(roleId)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            filters += "saasId="+saasId; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            modules = saasModuleService.search(null, filters, null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        }else if(!StringUtils.isEmpty(saasId) && !StringUtils.isEmpty(roleId)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            Set<Object> moduleIdSet = new HashSet<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            moduleIdSet = baseModuleRoleService.findModuleIdList(roleId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if(moduleIdSet.size() < 0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                result.put("msg","no modules under this role:" + roleId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                result.put("response",ConstantUtils.FAIL); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            StringBuilder sb = new StringBuilder(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            moduleIdSet.forEach(one -> sb.append(one).append(",")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            filters += "id=" + sb.toString(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            modules = saasModuleService.search(null, filters, null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<SaasModuleVO> moduleVOs = convertToModels(modules,new ArrayList<>(modules.size()),SaasModuleVO.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<ModuleVO> moduleVOList = new ArrayList<>(moduleVOs.size()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //转化为module 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        moduleVOs.forEach(one->{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            ModuleVO vo = new ModuleVO(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            vo.setId(one.getModuleId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            vo.setParentId(one.getParentModuleId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            vo.setIsMust(one.getIsMust()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            vo.setName(one.getName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            moduleVOList.add(vo); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<ModuleVO> moduleVOList2 = moduleVOList; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Map<String,List<ModuleVO>> map = moduleVOList2.stream().collect(Collectors.groupingBy(ModuleVO::getParentId)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        moduleVOList2.forEach(module->{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            List<ModuleVO> tmp = map.get(module.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            module.setChildren(tmp); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        moduleVOList2 = moduleVOList2.stream() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                .filter(module -> CommonContant.DEFAULT_PARENTID.equals(module.getParentId())) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                .collect(Collectors.toList()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        result.put("response",ConstantUtils.SUCCESS); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        result.put("msg",moduleVOList2); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return result; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 创建角色信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -172,7 +237,7 @@ public class BaseDoctorRoleInfoService extends BaseJpaService<BaseDoctorRoleInfo 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        this.save(roleInfoDO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //修改角色与模块关联关系 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Set<Object> roleIdList = baseModuleRoleService.findModuleIdList(roleInfoDO.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Set<Object> roleIdList = baseModuleRoleService.findModuleIdList(roleInfoDO.getCode()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        BaseModuleRoleDO moduleRoleDO = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            for (Object obj : module) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -218,9 +283,12 @@ public class BaseDoctorRoleInfoService extends BaseJpaService<BaseDoctorRoleInfo 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            result.put("response",ConstantUtils.FAIL); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return result; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<BaseModuleRoleDO> moduleRoleDOList =  baseModuleRoleService.findModuleListByRoleCode(roleInfoDO.getCode()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        JSONObject jsonObject = new JSONObject(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        jsonObject.put("role",roleInfoDO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        jsonObject.put("module",moduleRoleDOList); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        result.put("response",ConstantUtils.SUCCESS); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        result.put("msg",roleInfoDO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        result.put("msg",jsonObject); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return result; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -251,6 +319,25 @@ public class BaseDoctorRoleInfoService extends BaseJpaService<BaseDoctorRoleInfo 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return result; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 判断某一租户下角色名称是否存在 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param saasId 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param name 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public JSONObject existNameOfSaas(String saasId,String name){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        JSONObject result = new JSONObject(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if(StringUtils.isEmpty(saasId) || StringUtils.isEmpty(name)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            result.put("msg","parameter saasId or name is null"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            result.put("response",ConstantUtils.FAIL); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return result; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        BaseDoctorRoleInfoDO roleInfoDO = baseDoctorRoleInfoDao.findBySaasidAndName(saasId,name); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        result.put("response",ConstantUtils.SUCCESS); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        result.put("msg",null == roleInfoDO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return result; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 |