Browse Source

Merge remote-tracking branch 'origin/dev/mix20200217_config' into dev/mix20200217_config

# Conflicts:
#	common-biz-client/src/main/java/com/diagbot/client/TranCommonServiceClient.java
#	common-biz-client/src/main/java/com/diagbot/client/hystrix/TranCommonServiceHystrix.java
#	common-biz-client/src/main/java/com/diagbot/util/PermissionUtil.java
zhaops 5 years ago
parent
commit
a8fee7024d
28 changed files with 805 additions and 14 deletions
  1. 15 0
      common-biz-client/pom.xml
  2. 5 0
      common-biz-client/src/main/java/com/diagbot/client/TranCommonServiceClient.java
  3. 9 0
      common-biz-client/src/main/java/com/diagbot/client/hystrix/TranCommonServiceHystrix.java
  4. 17 0
      common-biz-client/src/main/java/com/diagbot/dto/FunctionDTO.java
  5. 24 0
      common-biz-client/src/main/java/com/diagbot/facade/FunctionFacade.java
  6. 2 2
      common-biz-client/src/main/java/com/diagbot/facade/PermissionFacade.java
  7. 31 9
      common-biz-client/src/main/java/com/diagbot/util/PermissionUtil.java
  8. 23 0
      common-biz-client/src/main/java/com/diagbot/vo/HospitalFunctionVO.java
  9. 7 1
      data-service/src/main/java/com/diagbot/aop/PermissionAspect.java
  10. 6 1
      icss-service/src/main/java/com/diagbot/aop/PermissionAspect.java
  11. 1 0
      icss-service/src/main/java/com/diagbot/client/TranServiceClient.java
  12. 46 0
      icss-service/src/main/java/com/diagbot/web/FunctionController.java
  13. 6 1
      ltapi-service/src/main/java/com/diagbot/aop/PermissionAspect.java
  14. 17 0
      tran-service/src/main/java/com/diagbot/dto/FunctionDTO.java
  15. 160 0
      tran-service/src/main/java/com/diagbot/entity/Function.java
  16. 144 0
      tran-service/src/main/java/com/diagbot/entity/RoleFunction.java
  17. 26 0
      tran-service/src/main/java/com/diagbot/facade/FunctionFacade.java
  18. 22 0
      tran-service/src/main/java/com/diagbot/mapper/FunctionMapper.java
  19. 16 0
      tran-service/src/main/java/com/diagbot/mapper/RoleFunctionMapper.java
  20. 21 0
      tran-service/src/main/java/com/diagbot/service/FunctionService.java
  21. 16 0
      tran-service/src/main/java/com/diagbot/service/RoleFunctionService.java
  22. 28 0
      tran-service/src/main/java/com/diagbot/service/impl/FunctionServiceImpl.java
  23. 20 0
      tran-service/src/main/java/com/diagbot/service/impl/RoleFunctionServiceImpl.java
  24. 14 0
      tran-service/src/main/java/com/diagbot/vo/HospitalFunctionVO.java
  25. 49 0
      tran-service/src/main/java/com/diagbot/web/FunctionController.java
  26. 20 0
      tran-service/src/main/java/com/diagbot/web/RoleFunctionController.java
  27. 42 0
      tran-service/src/main/resources/mapper/FunctionMapper.xml
  28. 18 0
      tran-service/src/main/resources/mapper/RoleFunctionMapper.xml

+ 15 - 0
common-biz-client/pom.xml

@@ -57,6 +57,21 @@
             <version>0.0.1-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
+
+        <dependency>
+            <groupId>org.springframework.security</groupId>
+            <artifactId>spring-security-web</artifactId>
+            <version>5.2.1.RELEASE</version>
+            <scope>provided</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>io.swagger</groupId>
+            <artifactId>swagger-annotations</artifactId>
+            <version>1.5.22</version>
+            <scope>provided</scope>
+        </dependency>
+
     </dependencies>
 
     <!-- 私有仓库 -->

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

@@ -1,6 +1,7 @@
 package com.diagbot.client;
 
 import com.diagbot.client.hystrix.TranCommonServiceHystrix;
+import com.diagbot.dto.FunctionDTO;
 import com.diagbot.dto.HosPermissionDTO;
 import com.diagbot.dto.RespDTO;
 import com.diagbot.vo.PermissionVO;
@@ -8,6 +9,7 @@ import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 
+import javax.validation.Valid;
 import java.util.List;
 
 /**
@@ -20,4 +22,7 @@ import java.util.List;
 public interface TranCommonServiceClient {
     @PostMapping(value = "/hospitalRole/getAllPermission")
     RespDTO<List<HosPermissionDTO>> getAllPermission(@RequestBody PermissionVO permissionVO);
+
+    @PostMapping("/function/getFunctionDatas")
+    RespDTO<List<FunctionDTO>> getFunctionDatas(@Valid @RequestBody HospitalFunctionVO hospitalFunctionVO);
 }

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

@@ -1,13 +1,16 @@
 package com.diagbot.client.hystrix;
 
 import com.diagbot.client.TranCommonServiceClient;
+import com.diagbot.dto.FunctionDTO;
 import com.diagbot.dto.HosPermissionDTO;
 import com.diagbot.dto.RespDTO;
+import com.diagbot.vo.HospitalFunctionVO;
 import com.diagbot.vo.PermissionVO;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Component;
 import org.springframework.web.bind.annotation.RequestBody;
 
+import javax.validation.Valid;
 import java.util.List;
 
 /**
@@ -24,4 +27,10 @@ public class TranCommonServiceHystrix implements TranCommonServiceClient {
         log.error("【hystrix】调用{}异常", "getAllPermission");
         return null;
     }
+
+    @Override
+    public RespDTO<List<FunctionDTO>> getFunctionDatas(@Valid HospitalFunctionVO hospitalFunctionVO) {
+        log.error("【hystrix】调用{}异常", "getFunctionDatas");
+        return null;
+    }
 }

+ 17 - 0
common-biz-client/src/main/java/com/diagbot/dto/FunctionDTO.java

@@ -0,0 +1,17 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @author wangfeng
+ * @Description:
+ * @date 2020-02-19 13:06
+ */
+@Getter
+@Setter
+public class FunctionDTO {
+    private  long id;
+    private String functionName;
+    private String functionCode;
+}

+ 24 - 0
common-biz-client/src/main/java/com/diagbot/facade/FunctionFacade.java

@@ -0,0 +1,24 @@
+package com.diagbot.facade;
+
+import com.diagbot.client.TranCommonServiceClient;
+import com.diagbot.dto.FunctionDTO;
+import com.diagbot.dto.RespDTO;
+import com.diagbot.util.RespDTOUtil;
+import com.diagbot.vo.HospitalFunctionVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+@Component
+public class FunctionFacade {
+
+    @Autowired
+    private TranCommonServiceClient tranCommonServiceClient;
+
+    public List<FunctionDTO> getFunctionData(HospitalFunctionVO hospitalFunctionVO) {
+        RespDTO<List<FunctionDTO>> functionDTOList = tranCommonServiceClient.getFunctionDatas(hospitalFunctionVO);
+        RespDTOUtil.respNGDeal(functionDTOList, "获取功能清单数据失败!");
+        return functionDTOList.data;
+    }
+}

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

@@ -42,7 +42,7 @@ public class PermissionFacade {
      */
     @Cacheable(value = PERMISSIONCACHE, key = "'permission:hc_' + #permissionVO.hospitalCode + '_st_' + #permissionVO.sysType")
     public PermissionDTO getPermission(PermissionVO permissionVO) {
-        log.info("获取缓存成功");
+        log.info("获取服务权限缓存成功");
         List<HosPermissionDTO> hosPermissionDTOS = Lists.newArrayList();
         RespDTO<List<HosPermissionDTO>> respDTO = tranCommonServiceClient.getAllPermission(permissionVO);
 
@@ -120,7 +120,7 @@ public class PermissionFacade {
      */
     @CacheEvict(cacheNames = PERMISSIONCACHE, allEntries = true)
     public Boolean delPermission() {
-        log.info("清理缓存成功");
+        log.info("清理服务权限缓存成功");
         return true;
     }
 }

+ 31 - 9
common-biz-client/src/main/java/com/diagbot/util/PermissionUtil.java

@@ -12,6 +12,7 @@ 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.security.web.util.matcher.AntPathRequestMatcher;
 import org.springframework.web.context.request.RequestAttributes;
 import org.springframework.web.context.request.RequestContextHolder;
 import org.springframework.web.context.request.ServletRequestAttributes;
@@ -19,7 +20,9 @@ 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.*;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
 
 /**
  * @Description:
@@ -27,14 +30,9 @@ import java.util.*;
  * @time: 2020/2/17 14:57
  */
 @Slf4j
-@Component
 public class PermissionUtil {
-    private static PermissionFacade permissionFacade;
-
     @Autowired
-    public PermissionUtil(PermissionFacade permissionFacade) {
-        PermissionUtil.permissionFacade = permissionFacade;
-    }
+    private PermissionFacade permissionFacade;
 
     /**
      * 功能可配置权限拦截
@@ -42,10 +40,15 @@ public class PermissionUtil {
      * @param joinPoint
      * @param sysType
      */
-    public static void permissionAspect(JoinPoint joinPoint, Integer sysType) {
+    public static void permissionAspect(JoinPoint joinPoint, Integer sysType, List<String> ignoreUrl) {
         RequestAttributes ra = RequestContextHolder.getRequestAttributes();
         ServletRequestAttributes sra = (ServletRequestAttributes) ra;
         HttpServletRequest request = sra.getRequest();
+        //忽略机制
+        if (matchPermitAllUrl(request,ignoreUrl)){
+            return;
+        }
+        //验证机制
         //head里面是否有hospitalCode;
         String hospitalCode = request.getHeader("hospitalCode");
         if (StringUtil.isBlank(hospitalCode)) {
@@ -162,7 +165,6 @@ public class PermissionUtil {
         return fields;
     }
 
-
     private static Map getFieldsName(JoinPoint joinPoint) {
         try {
             String classType = joinPoint.getTarget().getClass().getName();
@@ -208,4 +210,24 @@ public class PermissionUtil {
             put("java.lang.Char", char.class);
         }
     };
+
+    private static Boolean matchPermitAllUrl(HttpServletRequest request, List<String> ignoreUrl) {
+        if (ListUtil.isNotEmpty(ignoreUrl)) {
+            for (String url : ignoreUrl) {
+                if (matchers(url, request)) {
+                    return true;
+                }
+            }
+        }
+        return false;
+    }
+
+    private static Boolean matchers(String url, HttpServletRequest request) {
+        AntPathRequestMatcher matcher = new AntPathRequestMatcher(url);
+        if (matcher.matches(request)) {
+            return true;
+        }
+        return false;
+    }
+
 }

+ 23 - 0
common-biz-client/src/main/java/com/diagbot/vo/HospitalFunctionVO.java

@@ -0,0 +1,23 @@
+package com.diagbot.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotNull;
+
+@Setter
+@Getter
+public class HospitalFunctionVO {
+    @NotNull(message = "请输入医院编码")
+    private String hospitalCode;
+    /**
+     * 访问的系统类型
+     * (1, "user-service"),(2, "diagbotman-service"),(3, "uaa-service"),(4, "log-service"),
+     * (5, "bi-service"),(6, "ltapi-service"),(7, "feedback-service"),(8, "icss-old-service"),
+     * (9, "triage-service"),(10, "appkey"),(11, "icss-service"),(12, "icssman-service"),(13, "knowledgeman-service"),
+     * (14, "tran-service"),(15, "aipt-service"),(16, "data-service"),(17, "prec-service");
+     */
+    @ApiModelProperty(hidden = true)
+    private Integer sysType;
+}

+ 7 - 1
data-service/src/main/java/com/diagbot/aop/PermissionAspect.java

@@ -9,6 +9,10 @@ import org.aspectj.lang.annotation.Pointcut;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
 import org.springframework.stereotype.Component;
 
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
 /**
  * @Description: 接口权限拦截
  * @author: gaodm
@@ -18,6 +22,8 @@ import org.springframework.stereotype.Component;
 @Component
 @ConditionalOnProperty(prefix = "permission", value = { "enable" }, havingValue = "true")
 public class PermissionAspect {
+    //忽略URL列表
+    private final static List<String> ignoreUrl = Arrays.asList();
 
     //切所有Controller
     @Pointcut("execution(* com.diagbot.web..*.*(..))")
@@ -27,6 +33,6 @@ public class PermissionAspect {
     @Before("pointcutController()")
     public void permissionIntercept(JoinPoint joinPoint) {
         //权限拦截
-        PermissionUtil.permissionAspect(joinPoint, SysTypeEnum.DATA_SERVICE.getKey());
+        PermissionUtil.permissionAspect(joinPoint, SysTypeEnum.DATA_SERVICE.getKey(), ignoreUrl);
     }
 }

+ 6 - 1
icss-service/src/main/java/com/diagbot/aop/PermissionAspect.java

@@ -9,6 +9,9 @@ import org.aspectj.lang.annotation.Pointcut;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
 import org.springframework.stereotype.Component;
 
+import java.util.Arrays;
+import java.util.List;
+
 /**
  * @Description: 接口权限拦截
  * @author: gaodm
@@ -18,6 +21,8 @@ import org.springframework.stereotype.Component;
 @Component
 @ConditionalOnProperty(prefix = "permission", value = { "enable" }, havingValue = "true")
 public class PermissionAspect {
+    //忽略URL列表
+    private final static List<String> ignoreUrl = Arrays.asList();
 
     //切所有Controller
     @Pointcut("execution(* com.diagbot.web..*.*(..))")
@@ -27,6 +32,6 @@ public class PermissionAspect {
     @Before("pointcutController()")
     public void permissionIntercept(JoinPoint joinPoint) {
         //权限拦截
-        PermissionUtil.permissionAspect(joinPoint, SysTypeEnum.ICSS_SERVICE.getKey());
+        PermissionUtil.permissionAspect(joinPoint, SysTypeEnum.ICSS_SERVICE.getKey(), ignoreUrl);
     }
 }

+ 1 - 0
icss-service/src/main/java/com/diagbot/client/TranServiceClient.java

@@ -228,4 +228,5 @@ public interface TranServiceClient {
 
     @PostMapping("/hospitalDeptInfo/getHospitalDeptInfoAll")
     RespDTO<List<HospitalDeptInfoAllDTO>> getHospitalDeptInfoAll(@RequestBody @Valid HospitalCodeVo hospitalCodeVo);
+
 }

+ 46 - 0
icss-service/src/main/java/com/diagbot/web/FunctionController.java

@@ -0,0 +1,46 @@
+package com.diagbot.web;
+
+
+import com.diagbot.annotation.SysLogger;
+import com.diagbot.dto.FunctionDTO;
+import com.diagbot.dto.RespDTO;
+import com.diagbot.enums.SysTypeEnum;
+import com.diagbot.facade.FunctionFacade;
+import com.diagbot.vo.HospitalFunctionVO;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.validation.Valid;
+import java.util.List;
+
+/**
+ * <p>
+ * 系统功能编码表 前端控制器
+ * </p>
+ *
+ * @author wangfeng
+ * @since 2020-02-19
+ */
+@RestController
+@RequestMapping("/function")
+@Api(value = "功能清单API", tags = { "功能清单API" })
+@SuppressWarnings("unchecked")
+public class FunctionController {
+    @Autowired
+    FunctionFacade functionFacade;
+
+
+    @ApiOperation(value = "根据医院编码获取功能清单列表[by:wangfeng]", notes = "hospitalCode :医院code  必填<br> ")
+    @PostMapping("/getFunctionDatas")
+    @SysLogger("getFunctionDatas")
+    public RespDTO<List<FunctionDTO>> getFunctionDatas(@Valid @RequestBody HospitalFunctionVO hospitalFunctionVO) {
+        hospitalFunctionVO.setSysType(SysTypeEnum.ICSS_SERVICE.getKey());
+        List<FunctionDTO> data = functionFacade.getFunctionData(hospitalFunctionVO);
+        return RespDTO.onSuc(data);
+    }
+}

+ 6 - 1
ltapi-service/src/main/java/com/diagbot/aop/PermissionAspect.java

@@ -9,6 +9,9 @@ import org.aspectj.lang.annotation.Pointcut;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
 import org.springframework.stereotype.Component;
 
+import java.util.Arrays;
+import java.util.List;
+
 /**
  * @Description: 接口权限拦截
  * @author: gaodm
@@ -18,6 +21,8 @@ import org.springframework.stereotype.Component;
 @Component
 @ConditionalOnProperty(prefix = "permission", value = { "enable" }, havingValue = "true")
 public class PermissionAspect {
+    //忽略URL列表
+    private final static List<String> ignoreUrl = Arrays.asList();
 
     //切所有Controller
     @Pointcut("execution(* com.diagbot.web..*.*(..))")
@@ -27,6 +32,6 @@ public class PermissionAspect {
     @Before("pointcutController()")
     public void permissionIntercept(JoinPoint joinPoint) {
         //权限拦截
-        PermissionUtil.permissionAspect(joinPoint, SysTypeEnum.LTAPI_SERVICE.getKey());
+        PermissionUtil.permissionAspect(joinPoint, SysTypeEnum.LTAPI_SERVICE.getKey(), ignoreUrl);
     }
 }

+ 17 - 0
tran-service/src/main/java/com/diagbot/dto/FunctionDTO.java

@@ -0,0 +1,17 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @author wangfeng
+ * @Description:
+ * @date 2020-02-19 13:06
+ */
+@Getter
+@Setter
+public class FunctionDTO {
+    private  long id;
+    private String functionName;
+    private String functionCode;
+}

+ 160 - 0
tran-service/src/main/java/com/diagbot/entity/Function.java

@@ -0,0 +1,160 @@
+package com.diagbot.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ * 系统功能编码表
+ * </p>
+ *
+ * @author wangfeng
+ * @since 2020-02-19
+ */
+@TableName("tran_function")
+public class Function implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 是否删除,N:未删除,Y:删除
+     */
+    private String isDeleted;
+
+    /**
+     * 记录创建时间
+     */
+    private Date gmtCreate;
+
+    /**
+     * 记录修改时间,如果时间是1970年则表示纪录未修改
+     */
+    private Date gmtModified;
+
+    /**
+     * 创建人,0表示无创建人值
+     */
+    private String creator;
+
+    /**
+     * 修改人,如果为0则表示纪录未修改
+     */
+    private String modifier;
+
+    /**
+     * 访问的系统类型(1, "user-service"),(2, "diagbotman-service"),(3, "uaa-service"),(4, "log-service"),(5, "bi-service"),(6, "ltapi-service"),(7, "feedback-service"),(8, "icss-old-service"),(9, "triage-service"),(10, "appkey"),(11, "icss-service"),(12, "icssman-service"),(13, "knowledgeman-service"),(14, "tran-service"),(15, "aipt-service"),(16, "data-service"),(17, "prec-service");
+     */
+    private Integer sysType;
+
+    /**
+     * 功能名
+     */
+    private String functionName;
+
+    /**
+     * 功能编码
+     */
+    private String functionCode;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+    public String getIsDeleted() {
+        return isDeleted;
+    }
+
+    public void setIsDeleted(String isDeleted) {
+        this.isDeleted = isDeleted;
+    }
+    public Date getGmtCreate() {
+        return gmtCreate;
+    }
+
+    public void setGmtCreate(Date gmtCreate) {
+        this.gmtCreate = gmtCreate;
+    }
+    public Date getGmtModified() {
+        return gmtModified;
+    }
+
+    public void setGmtModified(Date gmtModified) {
+        this.gmtModified = gmtModified;
+    }
+    public String getCreator() {
+        return creator;
+    }
+
+    public void setCreator(String creator) {
+        this.creator = creator;
+    }
+    public String getModifier() {
+        return modifier;
+    }
+
+    public void setModifier(String modifier) {
+        this.modifier = modifier;
+    }
+    public Integer getSysType() {
+        return sysType;
+    }
+
+    public void setSysType(Integer sysType) {
+        this.sysType = sysType;
+    }
+    public String getFunctionName() {
+        return functionName;
+    }
+
+    public void setFunctionName(String functionName) {
+        this.functionName = functionName;
+    }
+    public String getFunctionCode() {
+        return functionCode;
+    }
+
+    public void setFunctionCode(String functionCode) {
+        this.functionCode = functionCode;
+    }
+    public String getRemark() {
+        return remark;
+    }
+
+    public void setRemark(String remark) {
+        this.remark = remark;
+    }
+
+    @Override
+    public String toString() {
+        return "Function{" +
+            "id=" + id +
+            ", isDeleted=" + isDeleted +
+            ", gmtCreate=" + gmtCreate +
+            ", gmtModified=" + gmtModified +
+            ", creator=" + creator +
+            ", modifier=" + modifier +
+            ", sysType=" + sysType +
+            ", functionName=" + functionName +
+            ", functionCode=" + functionCode +
+            ", remark=" + remark +
+        "}";
+    }
+}

+ 144 - 0
tran-service/src/main/java/com/diagbot/entity/RoleFunction.java

@@ -0,0 +1,144 @@
+package com.diagbot.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ * 角色和功能映射表
+ * </p>
+ *
+ * @author wangfeng
+ * @since 2020-02-19
+ */
+@TableName("tran_role_function")
+public class RoleFunction implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 是否删除,N:未删除,Y:删除
+     */
+    private String isDeleted;
+
+    /**
+     * 记录创建时间
+     */
+    private Date gmtCreate;
+
+    /**
+     * 记录修改时间,如果时间是1970年则表示纪录未修改
+     */
+    private Date gmtModified;
+
+    /**
+     * 创建人,0表示无创建人值
+     */
+    private String creator;
+
+    /**
+     * 修改人,如果为0则表示纪录未修改
+     */
+    private String modifier;
+
+    /**
+     * 角色id
+     */
+    private Long roleId;
+
+    /**
+     * 功能id
+     */
+    private Long functionId;
+
+    private String remark;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+    public String getIsDeleted() {
+        return isDeleted;
+    }
+
+    public void setIsDeleted(String isDeleted) {
+        this.isDeleted = isDeleted;
+    }
+    public Date getGmtCreate() {
+        return gmtCreate;
+    }
+
+    public void setGmtCreate(Date gmtCreate) {
+        this.gmtCreate = gmtCreate;
+    }
+    public Date getGmtModified() {
+        return gmtModified;
+    }
+
+    public void setGmtModified(Date gmtModified) {
+        this.gmtModified = gmtModified;
+    }
+    public String getCreator() {
+        return creator;
+    }
+
+    public void setCreator(String creator) {
+        this.creator = creator;
+    }
+    public String getModifier() {
+        return modifier;
+    }
+
+    public void setModifier(String modifier) {
+        this.modifier = modifier;
+    }
+    public Long getRoleId() {
+        return roleId;
+    }
+
+    public void setRoleId(Long roleId) {
+        this.roleId = roleId;
+    }
+    public Long getFunctionId() {
+        return functionId;
+    }
+
+    public void setFunctionId(Long functionId) {
+        this.functionId = functionId;
+    }
+    public String getRemark() {
+        return remark;
+    }
+
+    public void setRemark(String remark) {
+        this.remark = remark;
+    }
+
+    @Override
+    public String toString() {
+        return "RoleFunction{" +
+            "id=" + id +
+            ", isDeleted=" + isDeleted +
+            ", gmtCreate=" + gmtCreate +
+            ", gmtModified=" + gmtModified +
+            ", creator=" + creator +
+            ", modifier=" + modifier +
+            ", roleId=" + roleId +
+            ", functionId=" + functionId +
+            ", remark=" + remark +
+        "}";
+    }
+}

+ 26 - 0
tran-service/src/main/java/com/diagbot/facade/FunctionFacade.java

@@ -0,0 +1,26 @@
+package com.diagbot.facade;
+
+import com.diagbot.dto.FunctionDTO;
+import com.diagbot.service.impl.FunctionServiceImpl;
+import com.diagbot.vo.HospitalFunctionVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+/**
+ * @author wangfeng
+ * @Description: TODO
+ * @date 2020年02月19日 下午13:25:36
+ */
+@Component
+public class FunctionFacade extends FunctionServiceImpl {
+
+    @Autowired
+    FunctionServiceImpl functionServiceImpl;
+
+    public List<FunctionDTO> getFunctionData(HospitalFunctionVO hospitalFunctionVO) {
+        List<FunctionDTO> data = functionServiceImpl.getFunctionDatas(hospitalFunctionVO);
+        return  data;
+    }
+}

+ 22 - 0
tran-service/src/main/java/com/diagbot/mapper/FunctionMapper.java

@@ -0,0 +1,22 @@
+package com.diagbot.mapper;
+
+import com.diagbot.dto.FunctionDTO;
+import com.diagbot.entity.Function;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.diagbot.vo.HospitalFunctionVO;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 系统功能编码表 Mapper 接口
+ * </p>
+ *
+ * @author wangfeng
+ * @since 2020-02-19
+ */
+public interface FunctionMapper extends BaseMapper<Function> {
+
+    List<FunctionDTO> getFunctionDatas(HospitalFunctionVO hospitalFunctionVO);
+
+}

+ 16 - 0
tran-service/src/main/java/com/diagbot/mapper/RoleFunctionMapper.java

@@ -0,0 +1,16 @@
+package com.diagbot.mapper;
+
+import com.diagbot.entity.RoleFunction;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 角色和功能映射表 Mapper 接口
+ * </p>
+ *
+ * @author wangfeng
+ * @since 2020-02-19
+ */
+public interface RoleFunctionMapper extends BaseMapper<RoleFunction> {
+
+}

+ 21 - 0
tran-service/src/main/java/com/diagbot/service/FunctionService.java

@@ -0,0 +1,21 @@
+package com.diagbot.service;
+
+import com.diagbot.dto.FunctionDTO;
+import com.diagbot.entity.Function;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.diagbot.vo.HospitalFunctionVO;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 系统功能编码表 服务类
+ * </p>
+ *
+ * @author wangfeng
+ * @since 2020-02-19
+ */
+public interface FunctionService extends IService<Function> {
+
+    public List<FunctionDTO> getFunctionDatas(HospitalFunctionVO hospitalFunctionVO);
+}

+ 16 - 0
tran-service/src/main/java/com/diagbot/service/RoleFunctionService.java

@@ -0,0 +1,16 @@
+package com.diagbot.service;
+
+import com.diagbot.entity.RoleFunction;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 角色和功能映射表 服务类
+ * </p>
+ *
+ * @author wangfeng
+ * @since 2020-02-19
+ */
+public interface RoleFunctionService extends IService<RoleFunction> {
+
+}

+ 28 - 0
tran-service/src/main/java/com/diagbot/service/impl/FunctionServiceImpl.java

@@ -0,0 +1,28 @@
+package com.diagbot.service.impl;
+
+import com.diagbot.dto.FunctionDTO;
+import com.diagbot.entity.Function;
+import com.diagbot.mapper.FunctionMapper;
+import com.diagbot.service.FunctionService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.diagbot.vo.HospitalFunctionVO;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 系统功能编码表 服务实现类
+ * </p>
+ *
+ * @author wangfeng
+ * @since 2020-02-19
+ */
+@Service
+public class FunctionServiceImpl extends ServiceImpl<FunctionMapper, Function> implements FunctionService {
+
+    @Override
+    public List<FunctionDTO> getFunctionDatas(HospitalFunctionVO hospitalFunctionVO) {
+        return baseMapper.getFunctionDatas(hospitalFunctionVO);
+    }
+}

+ 20 - 0
tran-service/src/main/java/com/diagbot/service/impl/RoleFunctionServiceImpl.java

@@ -0,0 +1,20 @@
+package com.diagbot.service.impl;
+
+import com.diagbot.entity.RoleFunction;
+import com.diagbot.mapper.RoleFunctionMapper;
+import com.diagbot.service.RoleFunctionService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 角色和功能映射表 服务实现类
+ * </p>
+ *
+ * @author wangfeng
+ * @since 2020-02-19
+ */
+@Service
+public class RoleFunctionServiceImpl extends ServiceImpl<RoleFunctionMapper, RoleFunction> implements RoleFunctionService {
+
+}

+ 14 - 0
tran-service/src/main/java/com/diagbot/vo/HospitalFunctionVO.java

@@ -0,0 +1,14 @@
+package com.diagbot.vo;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotNull;
+
+@Setter
+@Getter
+public class HospitalFunctionVO {
+    @NotNull(message = "请输入医院编码")
+    private String hospitalCode;
+    private Integer sysType;
+}

+ 49 - 0
tran-service/src/main/java/com/diagbot/web/FunctionController.java

@@ -0,0 +1,49 @@
+package com.diagbot.web;
+
+
+import com.diagbot.annotation.SysLogger;
+import com.diagbot.dto.FunctionDTO;
+import com.diagbot.dto.RespDTO;
+import com.diagbot.dto.SysSetInfoDTO;
+import com.diagbot.facade.FunctionFacade;
+import com.diagbot.facade.SysSetFacade;
+import com.diagbot.vo.HospitalFunctionVO;
+import com.diagbot.vo.HospitalSetVO;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.validation.Valid;
+import java.util.List;
+
+/**
+ * <p>
+ * 系统功能编码表 前端控制器
+ * </p>
+ *
+ * @author wangfeng
+ * @since 2020-02-19
+ */
+@RestController
+@RequestMapping("/function")
+@Api(value = "功能清单API", tags = { "功能清单API" })
+@SuppressWarnings("unchecked")
+public class FunctionController {
+    @Autowired
+    FunctionFacade functionFacade;
+
+
+    @ApiOperation(value = "根据医院编码获取功能清单列表[by:wangfeng]", notes = "hospitalCode :医院code  必填<br> ")
+    @PostMapping("/getFunctionDatas")
+    @SysLogger("getFunctionDatas")
+    public RespDTO<List<FunctionDTO>> getFunctionDatas(@Valid @RequestBody HospitalFunctionVO hospitalFunctionVO) {
+        List<FunctionDTO> data = functionFacade.getFunctionData(hospitalFunctionVO);
+        return RespDTO.onSuc(data);
+    }
+}

+ 20 - 0
tran-service/src/main/java/com/diagbot/web/RoleFunctionController.java

@@ -0,0 +1,20 @@
+package com.diagbot.web;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ * <p>
+ * 角色和功能映射表 前端控制器
+ * </p>
+ *
+ * @author wangfeng
+ * @since 2020-02-19
+ */
+@Controller
+@RequestMapping("/roleFunction")
+public class RoleFunctionController {
+
+}

+ 42 - 0
tran-service/src/main/resources/mapper/FunctionMapper.xml

@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.diagbot.mapper.FunctionMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.diagbot.entity.Function">
+        <id column="id" property="id"/>
+        <result column="is_deleted" property="isDeleted"/>
+        <result column="gmt_create" property="gmtCreate"/>
+        <result column="gmt_modified" property="gmtModified"/>
+        <result column="creator" property="creator"/>
+        <result column="modifier" property="modifier"/>
+        <result column="sys_type" property="sysType"/>
+        <result column="function_name" property="functionName"/>
+        <result column="function_code" property="functionCode"/>
+        <result column="remark" property="remark"/>
+    </resultMap>
+
+    <select id="getFunctionDatas" parameterType="com.diagbot.vo.HospitalFunctionVO" resultType="com.diagbot.dto.FunctionDTO">
+    SELECT a.id AS id ,
+    a.function_name AS functionName,
+    a.function_code AS functionCode
+    FROM tran_function a
+    JOIN tran_hospital_info b
+    JOIN tran_role_function c
+    JOIN tran_hospital_role d
+    ON b.code = d.hospital_code
+    AND a.id = c.function_id
+    AND d.role_id = c.`role_id`
+    WHERE a.is_deleted = "N"
+    AND b.is_deleted = "N"
+    AND c.is_deleted = "N"
+    AND d.is_deleted = "N"
+    <if test="hospitalCode!=null">
+     AND b.code = #{hospitalCode}
+    </if>
+    <if test="sysType!= null and sysType != ''">
+    AND a.sys_type = #{sysType}
+    </if>
+</select>
+
+</mapper>

+ 18 - 0
tran-service/src/main/resources/mapper/RoleFunctionMapper.xml

@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.diagbot.mapper.RoleFunctionMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.diagbot.entity.RoleFunction">
+        <id column="id" property="id" />
+        <result column="is_deleted" property="isDeleted" />
+        <result column="gmt_create" property="gmtCreate" />
+        <result column="gmt_modified" property="gmtModified" />
+        <result column="creator" property="creator" />
+        <result column="modifier" property="modifier" />
+        <result column="role_id" property="roleId" />
+        <result column="function_id" property="functionId" />
+        <result column="remark" property="remark" />
+    </resultMap>
+
+</mapper>