Bladeren bron

接口权限控制

zhaops 5 jaren geleden
bovenliggende
commit
c676c8f38f

+ 0 - 178
common-biz-client/src/main/java/com/diagbot/client/TranCommonServiceClient.java

@@ -20,182 +20,4 @@ import java.util.List;
 public interface TranCommonServiceClient {
     @PostMapping(value = "/hospitalRole/getAllPermission")
     RespDTO<List<HosPermissionDTO>> getAllPermission(@RequestBody PermissionVO permissionVO);
-
-    /**
-     * 获取医生信息
-     *
-     * @param doctorInfoVo
-     * @return
-     *//*
-    @PostMapping("/doctorInfo/getDoctorInfo")
-    RespDTO<List<DoctorInfoDTO>> getDoctorInfo(@RequestBody DoctorInfoVO doctorInfoVo);
-
-    *//**
-     * 根据ids获取医生信息map
-     *
-     * @param ids
-     * @return
-     *//*
-    @PostMapping("/doctorInfo/doctorInfoMapByIds")
-    RespDTO<Map<Long, DoctorInfo>> doctorInfoMapByIds(@RequestBody List<Long> ids);
-
-    *//**
-     * 根据id获取医生信息
-     *
-     * @param id
-     * @return
-     *//*
-    @PostMapping("/doctorInfo/doctorInfoById")
-    RespDTO<DoctorInfoDTO> getDoctorInfoById(@RequestBody Long id);
-
-    *//**
-     * 根据ids获取科室信息map
-     *
-     * @param ids
-     * @return
-     *//*
-    @PostMapping("/hospitalDeptInfo/hospitalDeptInfoMapByIds")
-    RespDTO<Map<Long, HospitalDept>> hospitalDeptInfoMapByIds(@RequestBody List<Long> ids);
-
-    *//**
-     * 获取医院信息
-     *
-     * @param hospitalInfoVO
-     * @return
-     *//*
-    @PostMapping("/hospitalInfo/getHospitalInfo")
-    RespDTO<HospitalInfoDTO> getHospitalInfo(@RequestBody HospitalInfoVO hospitalInfoVO);
-
-    *//**
-     * 匹配公表名
-     *
-     * @param lisHospitalCodeVO
-     * @return
-     *//*
-    @PostMapping("/tranLisConfig/getLisConfigByhospitalId")
-    RespDTO<List<LisConfigDTO>> getLisConfigByhospitalId(@RequestBody LisHospitalCodeVO lisHospitalCodeVO);
-
-    *//**
-     * 获取患者信息
-     *
-     * @param patientInfoVO
-     * @return
-     *//*
-    @PostMapping("/patientInfo/getPatientInfo")
-    RespDTO<PatientInfoDTO> getPatientInfo(@RequestBody PatientInfoVO patientInfoVO);
-
-    *//**
-     * 根据ids获取病人信息
-     *
-     * @param ids
-     * @return
-     *//*
-    @PostMapping("/patientInfo/patientInfoMapByIds")
-    RespDTO<Map<Long, PatientInfo>> patientInfoMapByIds(@RequestBody List<Long> ids);
-
-    *//**
-     * 根据uuid获取相关信息
-     *
-     * @param tranFieldInfoVO
-     * @return
-     *//*
-    @PostMapping("/tranFieldInfo/getInfoByUuid")
-    RespDTO<List<TranFieldInfoDTO>> getInfoByUuid(@RequestBody TranFieldInfoVO tranFieldInfoVO);
-
-    *//**
-     * 将问诊记录保存一份至对接层
-     *
-     * @param saveInquiryToHisVO
-     * @return
-     *//*
-    @PostMapping("/inquiryInfo/saveInquiryToHis")
-    RespDTO<Boolean> saveInquiryToHis(@RequestBody SaveInquiryToHisVO saveInquiryToHisVO);
-
-    *//**
-     * 急诊-历史病历列表
-     *
-     * @param hisInquirysForJzVO
-     * @return
-     *//*
-    @PostMapping("/inquiryInfo/hisInquirysForJz")
-    RespDTO<HisInquirysForJzDTO> hisInquirysForJz(@RequestBody HisInquirysForJzVO hisInquirysForJzVO);
-
-    *//**
-     * 急诊-添加二次诊断
-     *
-     * @param addDiagnoseSecondVO
-     * @return
-     *//*
-    @PostMapping("/inquiryInfo/addDiagnoseSecond")
-    RespDTO<Boolean> addDiagnoseSecond(@RequestBody AddDiagnoseSecondVO addDiagnoseSecondVO);
-
-    *//**
-     * 急诊-获取需要导出的问诊数据
-     *
-     * @param inquiryIds
-     * @return
-     *//*
-    @PostMapping("/inquiryInfo/getExportInquirys")
-    RespDTO<List<GetExportInquirysDTO>> getExportInquirys(@RequestBody List<Long> inquiryIds);
-
-    *//**
-     * 根据医院编码获取辅检公表映射关系
-     *
-     * @param hosCodeVO
-     * @return
-     *//*
-    @PostMapping("/pacsConfig/getPacsConfigByHosCode")
-    RespDTO<Map<String, String>> getPacsConfigByHosCode(@RequestBody HosCodeVO hosCodeVO);
-
-    *//**
-     * 根据医院编码获取提示信息标题映射关系
-     *
-     * @param hosCodeVO
-     * @return
-     *//*
-    @PostMapping("/introduceTitleConfig/getTitleMappingHosCode")
-    RespDTO<Map<String, String>> getTitleMappingHosCode(@RequestBody HosCodeVO hosCodeVO);
-
-    *//**
-     * 根据医院编码查询诊断icd映射
-     *
-     * @param hosCodeVO
-     * @return
-     *//*
-    @PostMapping("/diseaseIcd/getDiseaseIcdByHosCode")
-    RespDTO<Map<String, String>> getDiseaseIcdByHosCode(@RequestBody HosCodeVO hosCodeVO);
-
-    *//**
-     * 根据医院编码查询辅检公表映射,公表项做key
-     *
-     * @param hosCodeVO
-     * @return
-     *//*
-    @PostMapping("/pacsConfig/getPacsConfigByUniqueNameAndHosCode")
-    RespDTO<Map<String, List<String>>> getPacsConfigByUniqueNameAndHosCode(@RequestBody HosCodeVO hosCodeVO);
-
-    @PostMapping("/lisDockingImports/lisDockingImports")
-    public RespDTO<LisRetrieveListAllDTO> getLisDatas(@RequestBody @Valid LisArgumentsVO lisArgumentsVO);
-
-    @PostMapping("/lisDockingImports/getByGroupNameLisData")
-    public RespDTO<LisDataDTO> getByGroupNameLisData(@RequestBody @Valid LisGroupNameVO lisGroupNameVO);
-
-    @PostMapping("/lisDockingImports/pacsDockingImport")
-    RespDTO<PacsRetrieveListAllDTO> pacsDockingImports(@RequestBody @Valid PacsArgumentsVO pacsArgumentsVO);
-
-    @PostMapping("/lisDockingImports/getByCheckItemPacsData")
-    RespDTO<PacsDataDTO> getByCheckItemPacsDatas(@RequestBody @Valid PacsCheckItemVO pacsGroupNameVO);
-
-    @PostMapping("/sysSet/getSysSetInfoDatas")
-    RespDTO<List<SysSetInfoDTO>> getSysSetInfoDatas(@Valid @RequestBody HospitalSetVO hospitalSetVO);
-
-    @PostMapping("/sysSet/getHospitalRankInfo")
-    RespDTO<GetHospitalRankInfoDTO> getHospitalRankInfo(@RequestBody GetHospitalRankInfoVO getHospitalRankInfoVO);
-
-    @PostMapping("/sysSet/getAdminCheckout")
-    RespDTO<Boolean> getAdminCheckout(@Valid @RequestBody HospitalCodeSetVO hospitalCodeSetVO);
-
-    @PostMapping("/hospitalDeptInfo/getHospitalDeptInfoAll")
-    RespDTO<List<HospitalDeptInfoAllDTO>> getHospitalDeptInfoAll(@RequestBody @Valid HospitalCodeVo hospitalCodeVo);*/
-
 }

+ 0 - 180
common-biz-client/src/main/java/com/diagbot/client/hystrix/TranCommonServiceHystrix.java

@@ -24,184 +24,4 @@ public class TranCommonServiceHystrix implements TranCommonServiceClient {
         log.error("【hystrix】调用{}异常", "getAllPermission");
         return null;
     }
-
-   /* @Override
-    public RespDTO<List<DoctorInfoDTO>> getDoctorInfo(@Valid DoctorInfoVO doctorInfoVo) {
-        log.error("【hystrix】调用{}异常", "getDoctorInfo");
-        return null;
-    }
-
-    @Override
-    public RespDTO<Map<Long, DoctorInfo>> doctorInfoMapByIds(List<Long> ids) {
-        log.error("【hystrix】调用{}异常", "doctorInfoMapByIds");
-        return null;
-    }
-
-    *//**
-     * 根据id获取医生信息
-     *
-     * @param id
-     * @return
-     *//*
-    @Override
-    public RespDTO<DoctorInfoDTO> getDoctorInfoById(@RequestBody Long id) {
-        log.error("【hystrix】调用{}异常", "getDoctorInfoById");
-        return null;
-    }
-
-    @Override
-    public RespDTO<HospitalInfoDTO> getHospitalInfo(HospitalInfoVO hospitalInfoVO) {
-        log.error("【hystrix】调用{}异常", "getHospitalInfo");
-        return null;
-    }
-
-    @Override
-    public RespDTO<Map<Long, HospitalDept>> hospitalDeptInfoMapByIds(List<Long> ids) {
-        log.error("【hystrix】调用{}异常", "hospitalDeptInfoMapByIds");
-        return null;
-    }
-
-    @Override
-    public RespDTO<List<LisConfigDTO>> getLisConfigByhospitalId(LisHospitalCodeVO lisHospitalCodeVO) {
-        log.error("【hystrix】调用{}异常", "getLisConfigByhospitalId");
-        return null;
-    }
-
-    @Override
-    public RespDTO<PatientInfoDTO> getPatientInfo(PatientInfoVO patientInfoVO) {
-        log.error("【hystrix】调用{}异常", "getPatientInfo");
-        return null;
-    }
-
-    @Override
-    public RespDTO<Map<Long, PatientInfo>> patientInfoMapByIds(List<Long> ids) {
-        log.error("【hystrix】调用{}异常", "patientInfoMapByIds");
-        return null;
-    }
-
-    @Override
-    public RespDTO<List<TranFieldInfoDTO>> getInfoByUuid(TranFieldInfoVO tranFieldInfoVO) {
-        log.error("【hystrix】调用{}异常", "getInfoByUuid");
-        return null;
-    }
-
-    @Override
-    public RespDTO<Boolean> saveInquiryToHis(SaveInquiryToHisVO saveInquiryToHisVO) {
-        log.error("【hystrix】调用{}异常", "saveInquiryToHis");
-        return null;
-    }
-
-    @Override
-    public RespDTO<HisInquirysForJzDTO> hisInquirysForJz(HisInquirysForJzVO hisInquirysForJzVO) {
-        log.error("【hystrix】调用{}异常", "hisInquirysForJz");
-        return null;
-    }
-
-    @Override
-    public RespDTO<Boolean> addDiagnoseSecond(AddDiagnoseSecondVO addDiagnoseSecondVO) {
-        log.error("【hystrix】调用{}异常", "addDiagnoseSecond");
-        return null;
-    }
-
-    @Override
-    public RespDTO<List<GetExportInquirysDTO>> getExportInquirys(List<Long> inquiryIds) {
-        log.error("【hystrix】调用{}异常", "getExportInquirys");
-        return null;
-    }
-
-    *//**
-     * 根据医院编码获取辅检公表映射关系
-     *
-     * @param hosCodeVO
-     * @return
-     *//*
-    @Override
-    public RespDTO<Map<String, String>> getPacsConfigByHosCode(@RequestBody HosCodeVO hosCodeVO) {
-        log.error("【hystrix】调用{}异常", "getPacsConfigByHosCode");
-        return null;
-    }
-
-    *//**
-     * 根据医院编码获取提示信息标题映射关系
-     *
-     * @param hosCodeVO
-     * @return
-     *//*
-    @Override
-    public RespDTO<Map<String, String>> getTitleMappingHosCode(@RequestBody HosCodeVO hosCodeVO) {
-        log.error("【hystrix】调用{}异常", "getTitleMappingHosCode");
-        return null;
-    }
-
-    *//**
-     * 根据医院编码查询诊断icd映射
-     *
-     * @param hosCodeVO
-     * @return
-     *//*
-    @Override
-    public RespDTO<Map<String, String>> getDiseaseIcdByHosCode(@RequestBody HosCodeVO hosCodeVO) {
-        log.error("【hystrix】调用{}异常", "getDiseaseIcdByHosCode");
-        return null;
-    }
-
-    *//**
-     * 根据医院编码查询辅检公表映射,公表项做key
-     *
-     * @param hosCodeVO
-     * @return
-     *//*
-    @Override
-    public RespDTO<Map<String, List<String>>> getPacsConfigByUniqueNameAndHosCode(@RequestBody HosCodeVO hosCodeVO) {
-        log.error("【hystrix】调用{}异常", "getPacsConfigByUniqueNameAndHosCode");
-        return null;
-    }
-
-    @Override
-    public RespDTO<LisRetrieveListAllDTO> getLisDatas(@RequestBody @Valid LisArgumentsVO lisArgumentsVO) {
-        log.error("【hystrix】调用{}异常", "getLisDatas");
-        return null;
-    }
-
-    @Override
-    public RespDTO<LisDataDTO> getByGroupNameLisData(@RequestBody @Valid LisGroupNameVO lisGroupNameVO) {
-        log.error("【hystrix】调用{}异常", "getByGroupNameLisData");
-        return null;
-    }
-
-    @Override
-    public RespDTO<PacsRetrieveListAllDTO> pacsDockingImports(@RequestBody @Valid PacsArgumentsVO pacsArgumentsVO) {
-        log.error("【hystrix】调用{}异常", "pacsDockingImports");
-        return null;
-    }
-
-    @Override
-    public RespDTO<PacsDataDTO> getByCheckItemPacsDatas(@RequestBody @Valid PacsCheckItemVO pacsGroupNameVO) {
-        log.error("【hystrix】调用{}异常", "getByCheckItemPacsDatas");
-        return null;
-    }
-
-    @Override
-    public RespDTO<List<SysSetInfoDTO>> getSysSetInfoDatas(@Valid HospitalSetVO hospitalSetVO) {
-        log.error("【hystrix】调用{}异常", "getSysSetInfoDatas");
-        return null;
-    }
-
-    @Override
-    public RespDTO<GetHospitalRankInfoDTO> getHospitalRankInfo(GetHospitalRankInfoVO getHospitalRankInfoVO) {
-        log.error("【hystrix】调用{}异常", "getHospitalRankInfo");
-        return null;
-    }
-
-    @Override
-    public RespDTO<Boolean> getAdminCheckout(@Valid HospitalCodeSetVO hospitalCodeSetVO) {
-        log.error("【hystrix】调用{}异常", "getAdminCheckout");
-        return null;
-    }
-
-    @Override
-    public RespDTO<List<HospitalDeptInfoAllDTO>> getHospitalDeptInfoAll(@Valid HospitalCodeVo hospitalCodeVo) {
-        log.error("【hystrix】调用{}异常", "getHospitalDeptInfoAll");
-        return null;
-    }*/
 }

+ 1 - 1
common-biz-client/src/main/java/com/diagbot/dto/HosPermissionDTO.java

@@ -11,7 +11,7 @@ import lombok.Setter;
 @Getter
 @Setter
 public class HosPermissionDTO {
-    private String hosCode;
+    private String hospitalCode;
     private Long roleId;
     private String roleName;
     private String permissionUrl;

+ 2 - 2
common-biz-client/src/main/java/com/diagbot/dto/PermissionDTO.java

@@ -14,6 +14,6 @@ import java.util.Map;
 @Getter
 @Setter
 public class PermissionDTO {
-    private Map<String, List<HosPermissionDTO>> permissionMap;
+    private Map<String, Map<String, PermissionParamDTO>> permissionMap;
     private List<HosPermissionDTO> hosPermissionDTOS;
-}
+}

+ 19 - 0
common-biz-client/src/main/java/com/diagbot/dto/PermissionParamDTO.java

@@ -0,0 +1,19 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * @author zhaops
+ * @Description:
+ * @date 2020/2/19 15:24
+ **/
+@Getter
+@Setter
+public class PermissionParamDTO {
+    private String permissionUrl;
+    private Map<String, Set<String>> paramMap;
+}

+ 52 - 6
common-biz-client/src/main/java/com/diagbot/facade/PermissionFacade.java

@@ -3,21 +3,22 @@ package com.diagbot.facade;
 import com.diagbot.client.TranCommonServiceClient;
 import com.diagbot.dto.HosPermissionDTO;
 import com.diagbot.dto.PermissionDTO;
+import com.diagbot.dto.PermissionParamDTO;
 import com.diagbot.dto.RespDTO;
+import com.diagbot.util.EntityUtil;
 import com.diagbot.util.ListUtil;
 import com.diagbot.util.RespDTOUtil;
 import com.diagbot.util.StringUtil;
 import com.diagbot.vo.PermissionVO;
 import com.google.common.collect.Lists;
+import com.google.common.collect.Sets;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.cache.annotation.CacheEvict;
 import org.springframework.cache.annotation.Cacheable;
 import org.springframework.stereotype.Component;
 
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -51,16 +52,61 @@ public class PermissionFacade {
         PermissionDTO permissionDTO = new PermissionDTO();
         permissionDTO.setHosPermissionDTOS(hosPermissionDTOS);
 
-        Map<String, List<HosPermissionDTO>> permissionMap = new HashMap<>();
+        Map<String, Map<String, PermissionParamDTO>> permissionMap = new HashMap<>();
         if (ListUtil.isNotEmpty(hosPermissionDTOS)) {
             List<HosPermissionDTO> hasParamList = hosPermissionDTOS.stream()
                     .filter(hosPermissionDTO -> StringUtil.isNotBlank(hosPermissionDTO.getParamKey()))
                     .collect(Collectors.toList());
-            permissionMap.put("hasParam", hasParamList);
+            Map<String, PermissionParamDTO> hasParamMap = new HashMap<>();
+            if (ListUtil.isNotEmpty(hasParamList)) {
+                Map<String, List<HosPermissionDTO>> hosPermissionDTOMap
+                        = EntityUtil.makeEntityListMap(hasParamList, "permissionUrl");
+                for (Map.Entry<String, List<HosPermissionDTO>> entry : hosPermissionDTOMap.entrySet()) {
+                    PermissionParamDTO permissionParamDTO = new PermissionParamDTO();
+                    permissionParamDTO.setPermissionUrl(entry.getKey());
+                    Map<String, Set<String>> paramMap = new HashMap<>();
+                    if (ListUtil.isNotEmpty(entry.getValue())) {
+                        for (HosPermissionDTO hosPermissionDTO : entry.getValue()) {
+                            if (StringUtil.isBlank(hosPermissionDTO.getParamValue())) {
+                                continue;
+                            }
+                            String paramKey = hosPermissionDTO.getParamKey();
+                            String paramValue = hosPermissionDTO.getParamValue();
+                            String[] paramKeyArr = paramKey.trim().split(",|,");
+                            String[] paramValueArr = paramValue.trim().split(";|;");
+                            if (paramKeyArr.length != paramValueArr.length) {
+                                continue;
+                            }
+                            for (int i = 0; i < paramKeyArr.length; i++) {
+                                Set<String> paramValueSet = paramMap.get(paramKeyArr[i]);
+                                if(paramValueSet==null){
+                                    paramValueSet= new HashSet<>();
+                                }
+                                paramValueSet.add(paramValueArr[i]);
+                                paramMap.put(paramKeyArr[i], paramValueSet);
+                            }
+                        }
+                    }
+                    permissionParamDTO.setParamMap(paramMap);
+                    hasParamMap.put(entry.getKey(), permissionParamDTO);
+                }
+            }
+            permissionMap.put("hasParam", hasParamMap);
+            //没有参数的接口
             List<HosPermissionDTO> noParamList = hosPermissionDTOS.stream()
                     .filter(hosPermissionDTO -> StringUtil.isBlank(hosPermissionDTO.getParamKey()))
                     .collect(Collectors.toList());
-            permissionMap.put("noParam", noParamList);
+            Map<String, PermissionParamDTO> noParamMap = new HashMap<>();
+            if (ListUtil.isNotEmpty(noParamList)) {
+                Map<String, List<HosPermissionDTO>> hosPermissionDTOMap
+                        = EntityUtil.makeEntityListMap(noParamList, "permissionUrl");
+                for (Map.Entry<String, List<HosPermissionDTO>> entry : hosPermissionDTOMap.entrySet()) {
+                    PermissionParamDTO permissionParamDTO = new PermissionParamDTO();
+                    permissionParamDTO.setPermissionUrl(entry.getKey());
+                    noParamMap.put(entry.getKey(), permissionParamDTO);
+                }
+            }
+            permissionMap.put("noParam", noParamMap);
         }
         permissionDTO.setPermissionMap(permissionMap);
 

+ 106 - 4
common-biz-client/src/main/java/com/diagbot/util/PermissionUtil.java

@@ -1,21 +1,25 @@
 package com.diagbot.util;
 
+import com.diagbot.dto.PermissionDTO;
+import com.diagbot.dto.PermissionParamDTO;
 import com.diagbot.exception.CommonErrorCode;
 import com.diagbot.exception.CommonException;
 import com.diagbot.facade.PermissionFacade;
+import com.diagbot.vo.PermissionVO;
 import lombok.extern.slf4j.Slf4j;
 import org.aspectj.lang.JoinPoint;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.core.DefaultParameterNameDiscoverer;
 import org.springframework.core.ParameterNameDiscoverer;
+import org.springframework.stereotype.Component;
 import org.springframework.web.context.request.RequestAttributes;
 import org.springframework.web.context.request.RequestContextHolder;
 import org.springframework.web.context.request.ServletRequestAttributes;
 
 import javax.servlet.http.HttpServletRequest;
+import java.lang.reflect.Field;
 import java.lang.reflect.Method;
-import java.util.HashMap;
-import java.util.Map;
+import java.util.*;
 
 /**
  * @Description:
@@ -23,9 +27,14 @@ import java.util.Map;
  * @time: 2020/2/17 14:57
  */
 @Slf4j
+@Component
 public class PermissionUtil {
+    private static PermissionFacade permissionFacade;
+
     @Autowired
-    private PermissionFacade permissionFacade;
+    public PermissionUtil(PermissionFacade permissionFacade) {
+        PermissionUtil.permissionFacade = permissionFacade;
+    }
 
     /**
      * 功能可配置权限拦截
@@ -42,12 +51,44 @@ public class PermissionUtil {
         if (StringUtil.isBlank(hospitalCode)) {
             throw new CommonException(CommonErrorCode.PARAM_IS_NULL, "请传入医院编码!");
         }
+        if (sysType == null) {
+            throw new CommonException(CommonErrorCode.PARAM_IS_NULL, "请传入系统类型!");
+        }
         //todo 远程获取权限验证权限
         //验证权限
         String uri = request.getRequestURI();
         log.info(uri);
+        PermissionVO permissionVO = new PermissionVO();
+        permissionVO.setHospitalCode(hospitalCode);
+        permissionVO.setSysType(sysType);
+        PermissionDTO permissionDTO = permissionFacade.getPermission(permissionVO);
+        Map<String, PermissionParamDTO> hasParamMap = new HashMap<>();
+        Map<String, PermissionParamDTO> noParamMap = new HashMap<>();
+        if (permissionDTO.getPermissionMap() != null) {
+            hasParamMap = permissionDTO.getPermissionMap().get("hasParam");
+            noParamMap = permissionDTO.getPermissionMap().get("noParam");
+        }
+
         //todo 验证是否在无参数的Map
+        Boolean noParam = false;
+        if (noParamMap != null) {
+            if (noParamMap.containsKey(uri)) {
+                noParam = true;
+            }
+        }
         //todo 验证是否在有参数的Map
+        Boolean hasParam = false;
+        Map<String, Set<String>> permissionParamMap = new HashMap<>();
+        if (hasParamMap != null) {
+            if (hasParamMap.containsKey(uri)) {
+                hasParam = true;
+                permissionParamMap = hasParamMap.get(uri).getParamMap();
+            }
+        }
+
+        if (!noParam && !hasParam) {
+            throw new CommonException(CommonErrorCode.NO_PERMISSION, "当前医院没有开通此功能!");
+        }
         //todo 验证参数
         Object[] args = joinPoint.getArgs();
         if (args == null) {
@@ -57,10 +98,71 @@ public class PermissionUtil {
         Map<String, Object> paramMap = new HashMap<>();
         paramMap = getFieldsName(joinPoint);
         //todo 利用paramMap获取结果
+        try {
+            if (!noParam && hasParam && permissionParamMap != null) {
+                for (Map.Entry<String, Object> entry : paramMap.entrySet()) {
+                    if (entry.getValue() == null) {
+                        continue;
+                    }
+                    Field[] fields = getAllFields(entry.getValue());
+                    for (int i = 0; i < fields.length; i++) {
+                        String fieldName = fields[i].getName();
+                        if (permissionParamMap.containsKey(fieldName)) {
+                            Set<String> permissionParamValueSet = permissionParamMap.get(fieldName);
+                            if (permissionParamValueSet == null || permissionParamValueSet.size() == 0) {
+                                continue;
+                            }
+                            String getter = "get" + fieldName.substring(0, 1).toUpperCase() + fieldName.substring(1);
+                            String type = fields[i].getGenericType().toString();
+                            Class clazz = entry.getValue().getClass();
+                            Method method = clazz.getMethod(getter, new Class[]{});
+                            Object obj = method.invoke(entry.getValue(), new Object[]{});
+                            if (type.equals("class java.lang.String")
+                                    || type.equals("class java.lang.Integer")
+                                    || type.equals("class java.lang.Long")) {
+                                String value = (String) obj;
+                                String[] valueArr = value.split(",|,");
+                                Set<String> valueSet = new HashSet<>(Arrays.asList(valueArr));
+                                Boolean flag = false;
+                                System.out.println(flag.toString());
+                                for (String permissionParamValue : permissionParamValueSet) {
+                                    Set paramValueSet = new HashSet<>(Arrays.asList(permissionParamValue.split(",|,")));
+                                    if (paramValueSet.containsAll(valueSet)) {
+                                        flag = true;
+                                        break;
+                                    }
+                                }
+                                if (!flag) {
+                                    throw new CommonException(CommonErrorCode.NO_PERMISSION, "当前医院没有开通此功能!");
+                                }
+                            } else if (type.equals("class java.lang.Boolean")) {
+                                Boolean value = (Boolean) obj;
+                                if (!permissionParamValueSet.contains(value.toString())) {
+                                    throw new CommonException(CommonErrorCode.NO_PERMISSION, "当前医院没有开通此功能!");
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+        } catch (Exception e) {
+            throw new CommonException(CommonErrorCode.FAIL, e.getMessage());
+        }
+    }
 
-
+    public static Field[] getAllFields(Object object) {
+        Class clazz = object.getClass();
+        List<Field> fieldList = new ArrayList<>();
+        while (clazz != null) {
+            fieldList.addAll(new ArrayList<>(Arrays.asList(clazz.getDeclaredFields())));
+            clazz = clazz.getSuperclass();
+        }
+        Field[] fields = new Field[fieldList.size()];
+        fieldList.toArray(fields);
+        return fields;
     }
 
+
     private static Map getFieldsName(JoinPoint joinPoint) {
         try {
             String classType = joinPoint.getTarget().getClass().getName();

+ 1 - 1
tran-service/src/main/java/com/diagbot/dto/HosPermissionDTO.java

@@ -11,7 +11,7 @@ import lombok.Setter;
 @Getter
 @Setter
 public class HosPermissionDTO {
-    private String hosCode;
+    private String hospitalCode;
     private Long roleId;
     private String roleName;
     private String permissionUrl;

+ 1 - 1
tran-service/src/main/resources/mapper/HospitalRoleMapper.xml

@@ -18,7 +18,7 @@
     <!--根据医院编码和系统类型获取所有接口权限-->
     <select id="getAllPermission" parameterType="com.diagbot.vo.PermissionVO" resultType="com.diagbot.dto.HosPermissionDTO">
         SELECT
-        hr.hospital_code AS hosCode,
+        hr.hospital_code AS hospitalCode,
         ro.id AS roleId,
         ro.NAME AS roleName,
         pe.permissionUrl,