Bläddra i källkod

获取菜单接口

gaodm 5 år sedan
förälder
incheckning
aa395d9696
25 ändrade filer med 991 tillägg och 125 borttagningar
  1. 3 3
      src/main/java/com/diagbot/config/JwtConfigurer.java
  2. 9 7
      src/main/java/com/diagbot/config/ResourceServerConfigurer.java
  3. 28 28
      src/main/java/com/diagbot/config/security/UrlAccessDecisionManager.java
  4. 38 0
      src/main/java/com/diagbot/dto/BasHospitalInfoDTO.java
  5. 20 21
      src/main/java/com/diagbot/dto/LoginDTO.java
  6. 40 0
      src/main/java/com/diagbot/dto/UserLoginDTO.java
  7. 209 0
      src/main/java/com/diagbot/entity/BasHospitalInfo.java
  8. 170 0
      src/main/java/com/diagbot/entity/SysMenu.java
  9. 20 0
      src/main/java/com/diagbot/entity/wrapper/SysMenuWrapper.java
  10. 13 0
      src/main/java/com/diagbot/facade/BasHospitalInfoFacade.java
  11. 15 0
      src/main/java/com/diagbot/facade/SysMenuFacade.java
  12. 106 46
      src/main/java/com/diagbot/facade/SysUserFacade.java
  13. 16 0
      src/main/java/com/diagbot/mapper/BasHospitalInfoMapper.java
  14. 32 0
      src/main/java/com/diagbot/mapper/SysMenuMapper.java
  15. 16 0
      src/main/java/com/diagbot/service/BasHospitalInfoService.java
  16. 33 0
      src/main/java/com/diagbot/service/SysMenuService.java
  17. 2 0
      src/main/java/com/diagbot/service/UrlUserService.java
  18. 20 0
      src/main/java/com/diagbot/service/impl/BasHospitalInfoServiceImpl.java
  19. 45 0
      src/main/java/com/diagbot/service/impl/SysMenuServiceImpl.java
  20. 85 0
      src/main/java/com/diagbot/util/SysJwtUtil.java
  21. 2 4
      src/main/java/com/diagbot/util/SysUserUtils.java
  22. 13 14
      src/main/java/com/diagbot/web/SysUserController.java
  23. 23 0
      src/main/resources/mapper/BasHospitalInfoMapper.xml
  24. 31 0
      src/main/resources/mapper/SysMenuMapper.xml
  25. 2 2
      src/test/java/com/diagbot/CodeGeneration.java

+ 3 - 3
src/main/java/com/diagbot/config/JwtConfigurer.java

@@ -24,10 +24,10 @@ public class JwtConfigurer {
     private CustomAccessTokenConverter customAccessTokenConverter;
 
     @Bean
-    @Qualifier("tokenStore")
-    public TokenStore tokenStore() {
+    @Qualifier("tokenStoreClient")
+    public TokenStore tokenStoreClient() {
 
-        System.out.println("Created JwtTokenStore");
+        System.out.println("Created JwtTokenStoreClient");
         return new JwtTokenStore(jwtTokenEnhancer());
     }
 

+ 9 - 7
src/main/java/com/diagbot/config/ResourceServerConfigurer.java

@@ -3,6 +3,7 @@ package com.diagbot.config;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.security.config.annotation.web.builders.HttpSecurity;
 import org.springframework.security.oauth2.config.annotation.web.configuration.EnableResourceServer;
@@ -26,13 +27,13 @@ public class ResourceServerConfigurer extends ResourceServerConfigurerAdapter {
                 .csrf().disable()
                 .authorizeRequests()
                 .regexMatchers(".*swagger.*", ".*v2.*", ".*webjars.*", "/druid.*", "/actuator.*", "/hystrix.*").permitAll()
-//                .antMatchers("/sys/user/getJwt").permitAll()
-//                .antMatchers("/sys/user/refreshJwt").permitAll()
-//                .antMatchers("/sys/user/checkToken").permitAll()
-//                .antMatchers("/oauth/token").permitAll()
-//                .antMatchers("/oauth/check_token").permitAll()
-//                .antMatchers("/**").authenticated();
-                .antMatchers("/**").permitAll();
+                .antMatchers("/sys/user/getJwt").permitAll()
+                .antMatchers("/sys/user/refreshJwt").permitAll()
+                .antMatchers("/sys/user/checkToken").permitAll()
+                .antMatchers("/oauth/token").permitAll()
+                .antMatchers("/oauth/check_token").permitAll()
+                .antMatchers("/**").authenticated();
+//                .antMatchers("/**").permitAll();
     }
 
 
@@ -43,5 +44,6 @@ public class ResourceServerConfigurer extends ResourceServerConfigurerAdapter {
     }
 
     @Autowired
+    @Qualifier("tokenStoreClient")
     TokenStore tokenStore;
 }

+ 28 - 28
src/main/java/com/diagbot/config/security/UrlAccessDecisionManager.java

@@ -30,34 +30,34 @@ public class UrlAccessDecisionManager implements AccessDecisionManager {
 
     @Override
     public void decide(Authentication authentication, Object object, Collection<ConfigAttribute> configAttributes) throws AccessDeniedException, InsufficientAuthenticationException {
-//        HttpServletRequest request = ((FilterInvocation) object).getHttpRequest();
-//        String url, method;
-//        if (matchPermitAllUrl(request)) {
-//            return;
-//        }
-//        if ("anonymousUser".equals(authentication.getPrincipal())) {
-//            throw new AccessDeniedException("no right");
-//        } else {
-//            String tokenStr = HttpUtils.getHeaders(request).get("Authorization");
-//            if (StringUtil.isNotEmpty(tokenStr)) {
-//                tokenStr = tokenStr.replaceFirst("Bearer ", "");
-//                Boolean res = tokenFacade.verifyToken(tokenStr, 1);
-//                if (!res) {
-//                    throw new AccountExpiredException("token expire");
-//                }
-//            }
-//            for (GrantedAuthority ga : authentication.getAuthorities()) {
-//                String[] authority = ga.getAuthority().split(";");
-//                url = authority[0];
-//                method = authority[1];
-//                if (matchers(url, request)) {
-//                    if (method.equals(request.getMethod()) || "ALL".equals(method)) {
-//                        return;
-//                    }
-//                }
-//            }
-//        }
-//        throw new AccessDeniedException("no right");
+        HttpServletRequest request = ((FilterInvocation) object).getHttpRequest();
+        String url, method;
+        if (matchPermitAllUrl(request)) {
+            return;
+        }
+        if ("anonymousUser".equals(authentication.getPrincipal())) {
+            throw new AccessDeniedException("no right");
+        } else {
+            String tokenStr = HttpUtils.getHeaders(request).get("Authorization");
+            if (StringUtil.isNotEmpty(tokenStr)) {
+                tokenStr = tokenStr.replaceFirst("Bearer ", "");
+                Boolean res = tokenFacade.verifyToken(tokenStr, 1);
+                if (!res) {
+                    throw new AccountExpiredException("token expire");
+                }
+            }
+            for (GrantedAuthority ga : authentication.getAuthorities()) {
+                String[] authority = ga.getAuthority().split(";");
+                url = authority[0];
+                method = authority[1];
+                if (matchers(url, request)) {
+                    if (method.equals(request.getMethod()) || "ALL".equals(method)) {
+                        return;
+                    }
+                }
+            }
+        }
+        throw new AccessDeniedException("no right");
     }
 
 

+ 38 - 0
src/main/java/com/diagbot/dto/BasHospitalInfoDTO.java

@@ -0,0 +1,38 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:
+ * @author: gaodm
+ * @time: 2020/4/12 11:37
+ */
+@Getter
+@Setter
+public class BasHospitalInfoDTO {
+    /**
+     * 主键
+     */
+    private Long id;
+
+    /**
+     * 医院名称
+     */
+    private String name;
+
+    /**
+     * 组织机构代码
+     */
+    private String code;
+
+    /**
+     * 医院名称拼音
+     */
+    private String spell;
+
+    /**
+     * 医院地址
+     */
+    private String address;
+}

+ 20 - 21
src/main/java/com/diagbot/dto/LoginDTO.java

@@ -1,21 +1,20 @@
-//package com.diagbot.dto;
-//
-//import com.diagbot.entity.Organization;
-//import com.diagbot.entity.wrapper.MenuWrapper;
-//import lombok.Getter;
-//import lombok.Setter;
-//
-//import java.util.List;
-//
-///**
-// * @Description: 登录输出类
-// * @author: gaodm
-// * @time: 2018/8/2 14:22
-// */
-//@Getter
-//@Setter
-//public class LoginDTO {
-//    private UserLoginDTO userLoginDTO;
-//    private Organization organization;
-//    private List<MenuWrapper> menuWrappers;
-//}
+package com.diagbot.dto;
+
+import com.diagbot.entity.wrapper.SysMenuWrapper;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+/**
+ * @Description: 登录输出类
+ * @author: gaodm
+ * @time: 2018/8/2 14:22
+ */
+@Getter
+@Setter
+public class LoginDTO {
+    private UserLoginDTO userLoginDTO;
+    private BasHospitalInfoDTO basHospitalInfoDTO;
+    private List<SysMenuWrapper> menuWrappers;
+}

+ 40 - 0
src/main/java/com/diagbot/dto/UserLoginDTO.java

@@ -0,0 +1,40 @@
+package com.diagbot.dto;
+
+import com.diagbot.enums.ConstantEnum;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description: 登录返回的用户信息
+ * @author: gaodm
+ * @time: 2018/9/28 15:10
+ */
+@Getter
+@Setter
+public class UserLoginDTO {
+
+    /**
+     * 用户名
+     */
+    private String username;
+
+    /**
+     * 联系人
+     */
+    private String linkman;
+
+    /**
+     * 用户类型
+     */
+    private Integer type;
+
+    /**
+     * 用户类型中文
+     */
+    private String typeCn;
+
+
+    public String getTypeCn() {
+        return ConstantEnum.getName(this.type);
+    }
+}

+ 209 - 0
src/main/java/com/diagbot/entity/BasHospitalInfo.java

@@ -0,0 +1,209 @@
+package com.diagbot.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 医院信息表
+ * </p>
+ *
+ * @author gaodm
+ * @since 2020-04-12
+ */
+public class BasHospitalInfo implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 医院名称
+     */
+    private String name;
+
+    /**
+     * 组织机构代码
+     */
+    private String code;
+
+    /**
+     * 医院名称拼音
+     */
+    private String spell;
+
+    /**
+     * 医院地址
+     */
+    private String address;
+
+    /**
+     * 状态:0.禁用1.启用
+     */
+    private Integer status;
+
+    /**
+     * 排序号
+     */
+    private Integer orderNo;
+
+    /**
+     * 是否对接(0-不对接,1-对接)
+     */
+    private Integer connect;
+
+    /**
+     * 是否删除,N:未删除,Y:删除
+     */
+    private String isDeleted;
+
+    /**
+     * 记录创建时间
+     */
+    private LocalDateTime gmtCreate;
+
+    /**
+     * 记录修改时间,如果时间是1970年则表示纪录未修改
+     */
+    private LocalDateTime gmtModified;
+
+    /**
+     * 创建人,0表示无创建人值
+     */
+    private String creator;
+
+    /**
+     * 修改人,如果为0则表示纪录未修改
+     */
+    private String modifier;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+    public String getCode() {
+        return code;
+    }
+
+    public void setCode(String code) {
+        this.code = code;
+    }
+    public String getSpell() {
+        return spell;
+    }
+
+    public void setSpell(String spell) {
+        this.spell = spell;
+    }
+    public String getAddress() {
+        return address;
+    }
+
+    public void setAddress(String address) {
+        this.address = address;
+    }
+    public Integer getStatus() {
+        return status;
+    }
+
+    public void setStatus(Integer status) {
+        this.status = status;
+    }
+    public Integer getOrderNo() {
+        return orderNo;
+    }
+
+    public void setOrderNo(Integer orderNo) {
+        this.orderNo = orderNo;
+    }
+    public Integer getConnect() {
+        return connect;
+    }
+
+    public void setConnect(Integer connect) {
+        this.connect = connect;
+    }
+    public String getIsDeleted() {
+        return isDeleted;
+    }
+
+    public void setIsDeleted(String isDeleted) {
+        this.isDeleted = isDeleted;
+    }
+    public LocalDateTime getGmtCreate() {
+        return gmtCreate;
+    }
+
+    public void setGmtCreate(LocalDateTime gmtCreate) {
+        this.gmtCreate = gmtCreate;
+    }
+    public LocalDateTime getGmtModified() {
+        return gmtModified;
+    }
+
+    public void setGmtModified(LocalDateTime 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 String getRemark() {
+        return remark;
+    }
+
+    public void setRemark(String remark) {
+        this.remark = remark;
+    }
+
+    @Override
+    public String toString() {
+        return "BasHospitalInfo{" +
+            "id=" + id +
+            ", name=" + name +
+            ", code=" + code +
+            ", spell=" + spell +
+            ", address=" + address +
+            ", status=" + status +
+            ", orderNo=" + orderNo +
+            ", connect=" + connect +
+            ", isDeleted=" + isDeleted +
+            ", gmtCreate=" + gmtCreate +
+            ", gmtModified=" + gmtModified +
+            ", creator=" + creator +
+            ", modifier=" + modifier +
+            ", remark=" + remark +
+        "}";
+    }
+}

+ 170 - 0
src/main/java/com/diagbot/entity/SysMenu.java

@@ -0,0 +1,170 @@
+package com.diagbot.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 系统菜单
+ * </p>
+ *
+ * @author gaodm
+ * @since 2020-04-12
+ */
+public class SysMenu implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 是否删除,N:未删除,Y:删除
+     */
+    private String isDeleted;
+
+    /**
+     * 记录创建时间
+     */
+    private LocalDateTime gmtCreate;
+
+    /**
+     * 记录修改时间,如果时间是1970年则表示纪录未修改
+     */
+    private LocalDateTime gmtModified;
+
+    /**
+     * 创建人,0表示无创建人值
+     */
+    private String creator;
+
+    /**
+     * 修改人,如果为0则表示纪录未修改
+     */
+    private String modifier;
+
+    /**
+     * 菜单名称
+     */
+    private String name;
+
+    /**
+     * -1:表示顶级,其他值表示上级菜单的id
+     */
+    private Long parentId;
+
+    /**
+     * 编码,与前端对应
+     */
+    private String code;
+
+    /**
+     * 排序,从小到大
+     */
+    private Integer orderNo;
+
+    /**
+     * 备注
+     */
+    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 LocalDateTime getGmtCreate() {
+        return gmtCreate;
+    }
+
+    public void setGmtCreate(LocalDateTime gmtCreate) {
+        this.gmtCreate = gmtCreate;
+    }
+    public LocalDateTime getGmtModified() {
+        return gmtModified;
+    }
+
+    public void setGmtModified(LocalDateTime 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 String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+    public Long getParentId() {
+        return parentId;
+    }
+
+    public void setParentId(Long parentId) {
+        this.parentId = parentId;
+    }
+    public String getCode() {
+        return code;
+    }
+
+    public void setCode(String code) {
+        this.code = code;
+    }
+    public Integer getOrderNo() {
+        return orderNo;
+    }
+
+    public void setOrderNo(Integer orderNo) {
+        this.orderNo = orderNo;
+    }
+    public String getRemark() {
+        return remark;
+    }
+
+    public void setRemark(String remark) {
+        this.remark = remark;
+    }
+
+    @Override
+    public String toString() {
+        return "SysMenu{" +
+            "id=" + id +
+            ", isDeleted=" + isDeleted +
+            ", gmtCreate=" + gmtCreate +
+            ", gmtModified=" + gmtModified +
+            ", creator=" + creator +
+            ", modifier=" + modifier +
+            ", name=" + name +
+            ", parentId=" + parentId +
+            ", code=" + code +
+            ", orderNo=" + orderNo +
+            ", remark=" + remark +
+        "}";
+    }
+}

+ 20 - 0
src/main/java/com/diagbot/entity/wrapper/SysMenuWrapper.java

@@ -0,0 +1,20 @@
+package com.diagbot.entity.wrapper;
+
+import com.diagbot.entity.SysMenu;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @Description:
+ * @Author: ztg
+ * @Date: 2018/9/14 14:10
+ */
+@Getter
+@Setter
+public class SysMenuWrapper extends SysMenu {
+
+    private List<SysMenuWrapper> subMenuList = new ArrayList<>();
+}

+ 13 - 0
src/main/java/com/diagbot/facade/BasHospitalInfoFacade.java

@@ -0,0 +1,13 @@
+package com.diagbot.facade;
+
+import com.diagbot.service.impl.BasHospitalInfoServiceImpl;
+import org.springframework.stereotype.Component;
+
+/**
+ * @Description:
+ * @author: gaodm
+ * @time: 2020/4/12 11:39
+ */
+@Component
+public class BasHospitalInfoFacade  extends BasHospitalInfoServiceImpl {
+}

+ 15 - 0
src/main/java/com/diagbot/facade/SysMenuFacade.java

@@ -0,0 +1,15 @@
+package com.diagbot.facade;
+
+import com.diagbot.service.impl.SysMenuServiceImpl;
+import org.springframework.stereotype.Component;
+
+/**
+ * @Description: 菜单
+ * @Author: ztg
+ * @Date: 2018/9/17 18:32
+ */
+@Component
+public class SysMenuFacade extends SysMenuServiceImpl {
+
+
+}

+ 106 - 46
src/main/java/com/diagbot/facade/SysUserFacade.java

@@ -2,23 +2,36 @@ package com.diagbot.facade;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.diagbot.client.AuthServiceClient;
+import com.diagbot.dto.BasHospitalInfoDTO;
 import com.diagbot.dto.JwtDTO;
+import com.diagbot.dto.LoginDTO;
+import com.diagbot.dto.UserLoginDTO;
+import com.diagbot.entity.BasHospitalInfo;
 import com.diagbot.entity.JWT;
 import com.diagbot.entity.JwtStore;
 import com.diagbot.entity.SysUser;
+import com.diagbot.entity.wrapper.SysMenuWrapper;
 import com.diagbot.enums.ConstantEnum;
 import com.diagbot.enums.IsDeleteEnum;
 import com.diagbot.exception.CommonErrorCode;
 import com.diagbot.exception.CommonException;
 import com.diagbot.exception.ServiceErrorCode;
 import com.diagbot.service.impl.SysUserServiceImpl;
+import com.diagbot.util.BeanUtil;
+import com.diagbot.util.EntityUtil;
+import com.diagbot.util.ListUtil;
 import com.diagbot.util.StringUtil;
+import com.diagbot.util.SysUserUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.crypto.factory.PasswordEncoderFactories;
 import org.springframework.security.crypto.password.PasswordEncoder;
 import org.springframework.security.oauth2.common.OAuth2AccessToken;
 import org.springframework.stereotype.Component;
 
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
 /**
  * @Description: 用户业务层
  * @author: gaodm
@@ -33,6 +46,12 @@ public class SysUserFacade extends SysUserServiceImpl {
     @Autowired
     private AuthServiceClient authServiceClient;
 
+    @Autowired
+    private SysMenuFacade sysMenuFacade;
+
+    @Autowired
+    private BasHospitalInfoFacade basHospitalInfoFacade;
+
     /**
      * 获取jwt
      *
@@ -127,56 +146,97 @@ public class SysUserFacade extends SysUserServiceImpl {
         OAuth2AccessToken jwt
                 = authServiceClient.checkToken("Basic dWFhLXNlcnZpY2U6MTIzNDU2", token);
         if (null == jwt) {
-            throw new CommonException(ServiceErrorCode.GET_TOKEN_FAIL,"该Token不正确!");
+            throw new CommonException(ServiceErrorCode.GET_TOKEN_FAIL, "该Token不正确!");
         }
         return jwt;
     }
 
-    //
-    //    /**
-    //     * 递归获取菜单结构
-    //     *
-    //     * @param menu    当前菜单
-    //     * @param menuMap 菜单集
-    //     * @return 菜单结构
-    //     */
-    //    public List<MenuWrapper> getSonMenu(MenuWrapper menu, Map<Long, List<MenuWrapper>> menuMap) {
-    //        List<MenuWrapper> res = new ArrayList<>();
-    //        List<MenuWrapper> list = menuMap.get(menu.getId());
-    //        if (ListUtil.isNotEmpty(list)) {
-    //            menu.setSubMenuList(list);
-    //            for (MenuWrapper bean : list) {
-    //                getSonMenu(bean, menuMap);
-    //            }
-    //        }
-    //        return res;
-    //    }
-    //
-    //    /**
-    //     * 递归获取菜单结构
-    //     *
-    //     * @param menuList 菜单参数
-    //     */
-    //    public void getMenuStruct(List<MenuWrapper> menuList) {
-    //        for (MenuWrapper m : menuList) {
-    //            m.setSubMenuList(recursion(m));
-    //        }
-    //    }
-    //
-    //
-    //    /**
-    //     * 递归查询菜单信息
-    //     *
-    //     * @param m 参数
-    //     * @return 菜单信息
-    //     */
-    //    public List<MenuWrapper> recursion(MenuWrapper m) {
-    //        List<MenuWrapper> subMenu = menuFacade.getSubMenuById(m.getId());
-    //        for (MenuWrapper sub : subMenu) {
-    //            sub.setSubMenuList(recursion(sub));
-    //        }
-    //        return subMenu;
-    //    }
+    /**
+     * 登录
+     *
+     * @return 登录相关信息
+     */
+    public LoginDTO getUserOrgMenu() {
+        LoginDTO data = new LoginDTO();
+
+        Long userId = Long.parseLong(SysUserUtils.getCurrentPrincipleID());
+        SysUser user = this.getById(userId);
+        if (user == null) {
+            throw new CommonException(CommonErrorCode.SERVER_IS_ERROR,
+                    "用户不存在【" + userId + "】");
+        }
+        //添加用户
+        UserLoginDTO userLoginDTO = new UserLoginDTO();
+        BeanUtil.copyProperties(user, userLoginDTO);
+        data.setUserLoginDTO(userLoginDTO);
+
+        //添加医院信息
+        if (user.getType().equals(ConstantEnum.OUTER_USER.getKey())) {
+            QueryWrapper<BasHospitalInfo> queryWrapper = new QueryWrapper<>();
+            queryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey())
+                    .eq("id", SysUserUtils.getCurrentHospitalID());
+            BasHospitalInfo basHospitalInfo = basHospitalInfoFacade.getOne(queryWrapper, false);
+            BasHospitalInfoDTO basHospitalInfoDTO = new BasHospitalInfoDTO();
+            BeanUtil.copyProperties(basHospitalInfo, basHospitalInfoDTO);
+            data.setBasHospitalInfoDTO(basHospitalInfoDTO);
+        }
+
+        //添加菜单信息
+        List<SysMenuWrapper> menuList = sysMenuFacade.getByRole(user.getId());
+        Map<Long, List<SysMenuWrapper>> menuMap = EntityUtil.makeEntityListMap(menuList, "parentId");
+        List<SysMenuWrapper> menuRes = menuMap.get(-1L);
+        for (SysMenuWrapper bean : menuRes) {
+            getSonMenu(bean, menuMap);
+        }
+        data.setMenuWrappers(menuRes);
+        return data;
+    }
+
+
+    /**
+     * 递归获取菜单结构
+     *
+     * @param menu    当前菜单
+     * @param menuMap 菜单集
+     * @return 菜单结构
+     */
+    public List<SysMenuWrapper> getSonMenu(SysMenuWrapper menu, Map<Long, List<SysMenuWrapper>> menuMap) {
+        List<SysMenuWrapper> res = new ArrayList<>();
+        List<SysMenuWrapper> list = menuMap.get(menu.getId());
+        if (ListUtil.isNotEmpty(list)) {
+            menu.setSubMenuList(list);
+            for (SysMenuWrapper bean : list) {
+                getSonMenu(bean, menuMap);
+            }
+        }
+        return res;
+    }
+
+    /**
+     * 递归获取菜单结构
+     *
+     * @param menuList 菜单参数
+     */
+    public void getMenuStruct(List<SysMenuWrapper> menuList) {
+        for (SysMenuWrapper m : menuList) {
+            m.setSubMenuList(recursion(m));
+        }
+    }
+
+
+    /**
+     * 递归查询菜单信息
+     *
+     * @param m 参数
+     * @return 菜单信息
+     */
+    public List<SysMenuWrapper> recursion(SysMenuWrapper m) {
+        List<SysMenuWrapper> subMenu = sysMenuFacade.getSubMenuById(m.getId());
+        for (SysMenuWrapper sub : subMenu) {
+            sub.setSubMenuList(recursion(sub));
+        }
+        return subMenu;
+    }
 
 
 }

+ 16 - 0
src/main/java/com/diagbot/mapper/BasHospitalInfoMapper.java

@@ -0,0 +1,16 @@
+package com.diagbot.mapper;
+
+import com.diagbot.entity.BasHospitalInfo;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 医院信息表 Mapper 接口
+ * </p>
+ *
+ * @author gaodm
+ * @since 2020-04-12
+ */
+public interface BasHospitalInfoMapper extends BaseMapper<BasHospitalInfo> {
+
+}

+ 32 - 0
src/main/java/com/diagbot/mapper/SysMenuMapper.java

@@ -0,0 +1,32 @@
+package com.diagbot.mapper;
+
+import com.diagbot.entity.SysMenu;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.diagbot.entity.wrapper.SysMenuWrapper;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 系统菜单 Mapper 接口
+ * </p>
+ *
+ * @author gaodm
+ * @since 2020-04-12
+ */
+public interface SysMenuMapper extends BaseMapper<SysMenu> {
+    /**
+     * @Description: 根据用户id获取菜单
+     * @Author: ztg
+     * @Date: 2018/9/14 13:57
+     */
+    public List<SysMenuWrapper> getByRole(Long userId);
+
+
+    /**
+     * @Description: 根据id获取子级菜单
+     * @Author: ztg
+     * @Date: 2018/9/14 13:59
+     */
+    public List<SysMenuWrapper> getSubMenuById(Long id);
+}

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

@@ -0,0 +1,16 @@
+package com.diagbot.service;
+
+import com.diagbot.entity.BasHospitalInfo;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 医院信息表 服务类
+ * </p>
+ *
+ * @author gaodm
+ * @since 2020-04-12
+ */
+public interface BasHospitalInfoService extends IService<BasHospitalInfo> {
+
+}

+ 33 - 0
src/main/java/com/diagbot/service/SysMenuService.java

@@ -0,0 +1,33 @@
+package com.diagbot.service;
+
+import com.diagbot.entity.SysMenu;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.diagbot.entity.wrapper.SysMenuWrapper;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 系统菜单 服务类
+ * </p>
+ *
+ * @author gaodm
+ * @since 2020-04-12
+ */
+public interface SysMenuService extends IService<SysMenu> {
+
+    /**
+     * @Description: 获取菜单信息
+     * @Author: ztg
+     * @Date: 2018/9/17 15:43
+     */
+    public List<SysMenuWrapper> getByRole(Long userId);
+
+
+    /**
+     * @Description: 获取子级菜单
+     * @Author: ztg
+     * @Date: 2018/9/17 15:44
+     */
+    public List<SysMenuWrapper> getSubMenuById(Long id);
+}

+ 2 - 0
src/main/java/com/diagbot/service/UrlUserService.java

@@ -50,6 +50,8 @@ public class UrlUserService implements UserDetailsService {
                 } else {
                     user.setHospitalId(userHosp.getHospitalId());
                 }
+            } else {
+                user.setHospitalId(-1L);
             }
             return user;
         } else {

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

@@ -0,0 +1,20 @@
+package com.diagbot.service.impl;
+
+import com.diagbot.entity.BasHospitalInfo;
+import com.diagbot.mapper.BasHospitalInfoMapper;
+import com.diagbot.service.BasHospitalInfoService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 医院信息表 服务实现类
+ * </p>
+ *
+ * @author gaodm
+ * @since 2020-04-12
+ */
+@Service
+public class BasHospitalInfoServiceImpl extends ServiceImpl<BasHospitalInfoMapper, BasHospitalInfo> implements BasHospitalInfoService {
+
+}

+ 45 - 0
src/main/java/com/diagbot/service/impl/SysMenuServiceImpl.java

@@ -0,0 +1,45 @@
+package com.diagbot.service.impl;
+
+import com.diagbot.entity.SysMenu;
+import com.diagbot.entity.wrapper.SysMenuWrapper;
+import com.diagbot.mapper.SysMenuMapper;
+import com.diagbot.service.SysMenuService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 系统菜单 服务实现类
+ * </p>
+ *
+ * @author gaodm
+ * @since 2020-04-12
+ */
+@Service
+public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> implements SysMenuService {
+
+    /**
+     * 根据用户id获取菜单信息
+     *
+     * @param userId 用户id
+     * @return 菜单信息
+     */
+    @Override
+    public List<SysMenuWrapper> getByRole(Long userId) {
+        return baseMapper.getByRole(userId);
+    }
+
+
+    /**
+     * 获取下级菜单
+     *
+     * @param id 菜单id
+     * @return 子菜单信息
+     */
+    @Override
+    public List<SysMenuWrapper> getSubMenuById(Long id) {
+        return baseMapper.getSubMenuById(id);
+    }
+}

Filskillnaden har hållts tillbaka eftersom den är för stor
+ 85 - 0
src/main/java/com/diagbot/util/SysJwtUtil.java


+ 2 - 4
src/main/java/com/diagbot/util/SysUserUtils.java

@@ -42,8 +42,7 @@ public class SysUserUtils {
      */
     public static String getCurrentPrincipleID() {
         OAuth2AuthenticationDetails oauthDetails = (OAuth2AuthenticationDetails) SecurityContextHolder.getContext().getAuthentication().getDetails();
-        Map<String, Object> details = (Map<String, Object>) oauthDetails.getDecodedDetails();
-        return details.get("user_id").toString();
+        return SysJwtUtil.getUserId(oauthDetails.getTokenValue());
     }
 
     /**
@@ -53,8 +52,7 @@ public class SysUserUtils {
      */
     public static String getCurrentHospitalID() {
         OAuth2AuthenticationDetails oauthDetails = (OAuth2AuthenticationDetails) SecurityContextHolder.getContext().getAuthentication().getDetails();
-        Map<String, Object> details = (Map<String, Object>) oauthDetails.getDecodedDetails();
-        return details.get("hosp_id").toString();
+        return SysJwtUtil.getHospId(oauthDetails.getTokenValue());
     }
 
 

+ 13 - 14
src/main/java/com/diagbot/web/SysUserController.java

@@ -2,7 +2,7 @@ package com.diagbot.web;
 
 import com.diagbot.annotation.SysLogger;
 import com.diagbot.dto.JwtDTO;
-//import com.diagbot.dto.LoginDTO;
+import com.diagbot.dto.LoginDTO;
 import com.diagbot.dto.RespDTO;
 import com.diagbot.entity.Token;
 import com.diagbot.facade.TokenFacade;
@@ -35,7 +35,7 @@ public class SysUserController {
     @Autowired
     private TokenFacade tokenFacade;
 
-    @ApiOperation(value = "验证token有效性[by:zhoutg]",
+    @ApiOperation(value = "验证token有效性[by:gaodm]",
             notes = "token:token信息,必填<br>")
     @PostMapping("/verifyToken")
     @SysLogger("verifyToken")
@@ -46,7 +46,7 @@ public class SysUserController {
     }
 
 
-    @ApiOperation(value = "登录获取jwt[by:zhoutg]",
+    @ApiOperation(value = "登录获取jwt[by:gaodm]",
             notes = "username:用户名,必填<br>" +
                     "password:密码, 必填, 默认密码:dc483e80a7a0bd9ef71d8cf973673924<br> ")
     @PostMapping("/getJwt")
@@ -56,7 +56,7 @@ public class SysUserController {
         return RespDTO.onSuc(data);
     }
 
-    @ApiOperation(value = "刷新jwt[by:zhoutg]",
+    @ApiOperation(value = "刷新jwt[by:gaodm]",
             notes = "refreshToken:刷新令牌,必填<br>")
     @PostMapping("/refreshJwt")
     @SysLogger("refreshJwt")
@@ -65,7 +65,7 @@ public class SysUserController {
         return RespDTO.onSuc(data);
     }
 
-    @ApiOperation(value = "验证Token[by:zhoutg]",
+    @ApiOperation(value = "验证Token[by:gaodm]",
             notes = "checkToken:令牌,必填<br>")
     @PostMapping("/checkToken")
     @SysLogger("checkToken")
@@ -75,14 +75,13 @@ public class SysUserController {
     }
 
 
-//    @ApiOperation(value = "获取用户、机构、菜单信息[by:zhoutg]",
-//            notes = "")
-//    @PostMapping("/getUserOrgMenu")
-//    @SysLogger("getUserOrgMenu")
-//    public RespDTO<LoginDTO> getUserOrgMenu() {
-//
-//        LoginDTO data = userFacade.getUserOrgMenu();
-//        return RespDTO.onSuc(data);
-//    }
+    @ApiOperation(value = "获取用户、机构、菜单信息[by:gaodm]",
+            notes = "")
+    @PostMapping("/getUserOrgMenu")
+    @SysLogger("getUserOrgMenu")
+    public RespDTO<LoginDTO> getUserOrgMenu() {
+        LoginDTO data = userFacade.getUserOrgMenu();
+        return RespDTO.onSuc(data);
+    }
 
 }

+ 23 - 0
src/main/resources/mapper/BasHospitalInfoMapper.xml

@@ -0,0 +1,23 @@
+<?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.BasHospitalInfoMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.diagbot.entity.BasHospitalInfo">
+        <id column="id" property="id" />
+        <result column="name" property="name" />
+        <result column="code" property="code" />
+        <result column="spell" property="spell" />
+        <result column="address" property="address" />
+        <result column="status" property="status" />
+        <result column="order_no" property="orderNo" />
+        <result column="connect" property="connect" />
+        <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="remark" property="remark" />
+    </resultMap>
+
+</mapper>

+ 31 - 0
src/main/resources/mapper/SysMenuMapper.xml

@@ -0,0 +1,31 @@
+<?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.SysMenuMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.diagbot.entity.wrapper.SysMenuWrapper">
+        <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="name" property="name" />
+        <result column="parent_id" property="parentId" />
+        <result column="code" property="code" />
+        <result column="order_no" property="orderNo" />
+        <result column="remark" property="remark" />
+    </resultMap>
+
+    <select id="getByRole" resultMap="BaseResultMap">
+        select distinct a.* from sys_menu a, sys_role_menu b, sys_user_role c
+        where a.id = b.menu_id and b.role_id and b.role_id = c.role_id and c.user_id = #{userId}
+        and a.is_deleted = 'N' and b.is_deleted = 'N' and c.is_deleted = 'N'
+        ORDER BY a.parent_id , a.order_no
+    </select>
+
+    <select id="getSubMenuById" resultMap="BaseResultMap">
+        select a.* from sys_menu a where a.is_deleted = 'N' and parent_id = #{id} ORDER BY order_no
+    </select>
+
+</mapper>

+ 2 - 2
src/test/java/com/diagbot/CodeGeneration.java

@@ -49,14 +49,14 @@ public class CodeGeneration {
         dsc.setDriverName("com.mysql.cj.jdbc.Driver");
         dsc.setUsername("root");
         dsc.setPassword("lantone");
-        dsc.setUrl("jdbc:mysql://192.168.2.236:3306/sys-mrqcneo?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf-8");
+        dsc.setUrl("jdbc:mysql://192.168.2.236:3306/qc?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf-8");
         mpg.setDataSource(dsc);
 
         // 策略配置
         StrategyConfig strategy = new StrategyConfig();
 //        strategy.setTablePrefix(new String[] { "sys_" });// 此处可以修改为您的表前缀
         strategy.setNaming(NamingStrategy.underline_to_camel);// 表名生成策略
-        strategy.setInclude(new String[] { "sys_user" }); // 需要生成的表
+        strategy.setInclude(new String[] { "bas_hospital_info" }); // 需要生成的表
 
         strategy.setSuperServiceClass(null);
         strategy.setSuperServiceImplClass(null);