Преглед на файлове

病历质控框架初始化

gaodm преди 5 години
родител
ревизия
ef90b3d4da
променени са 26 файла, в които са добавени 811 реда и са изтрити 113 реда
  1. 2 1
      src/main/java/com/diagbot/config/CustomTokenEnhancer.java
  2. 5 0
      src/main/java/com/diagbot/config/ResourceServerConfigurer.java
  3. 5 0
      src/main/java/com/diagbot/config/security/UrlAccessDecisionManager.java
  4. 16 0
      src/main/java/com/diagbot/dto/JwtDTO.java
  5. 21 0
      src/main/java/com/diagbot/dto/LoginDTO.java
  6. 132 64
      src/main/java/com/diagbot/entity/User.java
  7. 181 0
      src/main/java/com/diagbot/entity/UserUaa.java
  8. 11 1
      src/main/java/com/diagbot/exception/ServiceErrorCode.java
  9. 179 0
      src/main/java/com/diagbot/facade/UserFacade.java
  10. 4 4
      src/main/java/com/diagbot/mapper/UserMapper.java
  11. 15 0
      src/main/java/com/diagbot/mapper/UserUaaMapper.java
  12. 4 4
      src/main/java/com/diagbot/service/UrlUserService.java
  13. 16 0
      src/main/java/com/diagbot/service/UserService.java
  14. 20 0
      src/main/java/com/diagbot/service/impl/UserServiceImpl.java
  15. 15 0
      src/main/java/com/diagbot/vo/JwtVO.java
  16. 22 0
      src/main/java/com/diagbot/vo/UserLoginVO.java
  17. 7 2
      src/main/java/com/diagbot/web/TestController.java
  18. 88 0
      src/main/java/com/diagbot/web/UserController.java
  19. 2 1
      src/main/resources/application-dev.yml
  20. 2 1
      src/main/resources/application-local.yml
  21. 2 1
      src/main/resources/application-pre.yml
  22. 2 1
      src/main/resources/application-pro.yml
  23. 2 1
      src/main/resources/application-test.yml
  24. 18 27
      src/main/resources/mapper/UserMapper.xml
  25. 35 0
      src/main/resources/mapper/UserUaaMapper.xml
  26. 5 5
      src/test/java/com/diagbot/CodeGeneration.java

+ 2 - 1
src/main/java/com/diagbot/config/CustomTokenEnhancer.java

@@ -1,6 +1,7 @@
 package com.diagbot.config;
 
 import com.diagbot.entity.User;
+import com.diagbot.entity.UserUaa;
 import org.springframework.security.oauth2.common.DefaultOAuth2AccessToken;
 import org.springframework.security.oauth2.common.OAuth2AccessToken;
 import org.springframework.security.oauth2.provider.OAuth2Authentication;
@@ -19,7 +20,7 @@ public class CustomTokenEnhancer implements TokenEnhancer {
     @Override
     public OAuth2AccessToken enhance(OAuth2AccessToken accessToken, OAuth2Authentication authentication) {
         final Map<String, Object> additionalInfo = new HashMap<>();
-        User user = (User) authentication.getUserAuthentication().getPrincipal();
+        UserUaa user = (UserUaa) authentication.getUserAuthentication().getPrincipal();
         additionalInfo.put("user_id", user.getId());
         //		additionalInfo.put("username", user.getUsername());
         //		additionalInfo.put("authorities", user.getAuthorities());

+ 5 - 0
src/main/java/com/diagbot/config/ResourceServerConfigurer.java

@@ -26,6 +26,11 @@ public class ResourceServerConfigurer extends ResourceServerConfigurerAdapter {
                 .csrf().disable()
                 .authorizeRequests()
                 .regexMatchers(".*swagger.*", ".*v2.*", ".*webjars.*", "/druid.*", "/actuator.*", "/hystrix.*").permitAll()
+//                .antMatchers("/user/getJwt").permitAll()
+//                .antMatchers("/user/refreshJwt").permitAll()
+//                .antMatchers("/user/checkToken").permitAll()
+//                .antMatchers("/oauth/token").permitAll()
+//                .antMatchers("/oauth/check_token").permitAll()
 //                .antMatchers("/**").authenticated();
                 .antMatchers("/**").permitAll();
     }

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

@@ -80,6 +80,11 @@ public class UrlAccessDecisionManager implements AccessDecisionManager {
                 || matchers("/druid/**", request)
                 || matchers("/actuator/**", request)
                 || matchers("/hystrix/**", request)
+                || matchers("/user/getJwt", request)
+                || matchers("/user/refreshJwt", request)
+                || matchers("/user/checkToken", request)
+                || matchers("/oauth/token", request)
+                || matchers("/oauth/check_token", request)
                 || matchers("/", request)) {
             return true;
         }

+ 16 - 0
src/main/java/com/diagbot/dto/JwtDTO.java

@@ -0,0 +1,16 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description: jwt 输出类
+ * @author: gaodm
+ * @time: 2018/8/2 14:22
+ */
+@Getter
+@Setter
+public class JwtDTO {
+    private String accessToken;
+    private String refreshToken;
+}

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

@@ -0,0 +1,21 @@
+//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;
+//}

+ 132 - 64
src/main/java/com/diagbot/entity/User.java

@@ -1,16 +1,10 @@
 package com.diagbot.entity;
 
+import com.baomidou.mybatisplus.annotation.TableName;
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import com.fasterxml.jackson.annotation.JsonIgnore;
-import org.springframework.security.core.GrantedAuthority;
-import org.springframework.security.core.userdetails.UserDetails;
-
+import java.time.LocalDateTime;
 import java.io.Serializable;
-import java.util.Collection;
-import java.util.Date;
-import java.util.List;
 
 /**
  * <p>
@@ -18,10 +12,10 @@ import java.util.List;
  * </p>
  *
  * @author gaodm
- * @since 2018-08-30
+ * @since 2020-04-09
  */
 @TableName("sys_user")
-public class User implements UserDetails, Serializable {
+public class User implements Serializable {
 
     private static final long serialVersionUID = 1L;
 
@@ -39,12 +33,12 @@ public class User implements UserDetails, Serializable {
     /**
      * 记录创建时间
      */
-    private Date gmtCreate;
+    private LocalDateTime gmtCreate;
 
     /**
      * 记录修改时间,如果时间是1970年则表示纪录未修改
      */
-    private Date gmtModified;
+    private LocalDateTime gmtModified;
 
     /**
      * 创建人,0表示无创建人值
@@ -56,51 +50,60 @@ public class User implements UserDetails, Serializable {
      */
     private String modifier;
 
+    /**
+     * 用户名
+     */
+    private String username;
+
     /**
      * 用户密码
      */
     private String password;
 
     /**
-     * 用户名
+     * 联系人
      */
-    private String username;
+    private String linkman;
 
-    private List<? extends GrantedAuthority> authorities;
+    /**
+     * 手机号(如果是客户,phone与username是一样的)
+     */
+    private String phone;
 
-    @Override
-    @JsonIgnore
-    public boolean isAccountNonExpired() {
-        return true;
-    }
+    /**
+     * 所属岗位
+     */
+    private String position;
 
-    @Override
-    @JsonIgnore
-    public boolean isAccountNonLocked() {
-        return true;
-    }
+    /**
+     * 所属部门
+     */
+    private String dept;
 
-    @Override
-    @JsonIgnore
-    public boolean isCredentialsNonExpired() {
-        return true;
-    }
+    /**
+     * 邮箱
+     */
+    private String email;
 
-    @Override
-    @JsonIgnore
-    public boolean isEnabled() {
-        return true;
-    }
+    /**
+     * 认证状态: 0 未认证,1 已认证,2 认证中
+     */
+    private Integer authStatus;
 
-    @JsonIgnore
-    public Collection<? extends GrantedAuthority> getAuthorities() {
-        return authorities;
-    }
+    /**
+     * 认证通过时间
+     */
+    private LocalDateTime passauthTime;
 
-    public void setGrantedAuthorities(List<? extends GrantedAuthority> authorities) {
-        this.authorities = authorities;
-    }
+    /**
+     * 1内部用户,0外部用户(默认0)
+     */
+    private Integer type;
 
+    /**
+     * 备注
+     */
+    private String remark;
 
     public Long getId() {
         return id;
@@ -109,7 +112,6 @@ public class User implements UserDetails, Serializable {
     public void setId(Long id) {
         this.id = id;
     }
-
     public String getIsDeleted() {
         return isDeleted;
     }
@@ -117,23 +119,20 @@ public class User implements UserDetails, Serializable {
     public void setIsDeleted(String isDeleted) {
         this.isDeleted = isDeleted;
     }
-
-    public Date getGmtCreate() {
+    public LocalDateTime getGmtCreate() {
         return gmtCreate;
     }
 
-    public void setGmtCreate(Date gmtCreate) {
+    public void setGmtCreate(LocalDateTime gmtCreate) {
         this.gmtCreate = gmtCreate;
     }
-
-    public Date getGmtModified() {
+    public LocalDateTime getGmtModified() {
         return gmtModified;
     }
 
-    public void setGmtModified(Date gmtModified) {
+    public void setGmtModified(LocalDateTime gmtModified) {
         this.gmtModified = gmtModified;
     }
-
     public String getCreator() {
         return creator;
     }
@@ -141,7 +140,6 @@ public class User implements UserDetails, Serializable {
     public void setCreator(String creator) {
         this.creator = creator;
     }
-
     public String getModifier() {
         return modifier;
     }
@@ -149,7 +147,13 @@ public class User implements UserDetails, Serializable {
     public void setModifier(String modifier) {
         this.modifier = modifier;
     }
+    public String getUsername() {
+        return username;
+    }
 
+    public void setUsername(String username) {
+        this.username = username;
+    }
     public String getPassword() {
         return password;
     }
@@ -157,26 +161,90 @@ public class User implements UserDetails, Serializable {
     public void setPassword(String password) {
         this.password = password;
     }
+    public String getLinkman() {
+        return linkman;
+    }
 
-    public String getUsername() {
-        return username;
+    public void setLinkman(String linkman) {
+        this.linkman = linkman;
+    }
+    public String getPhone() {
+        return phone;
     }
 
-    public void setUsername(String username) {
-        this.username = username;
+    public void setPhone(String phone) {
+        this.phone = phone;
+    }
+    public String getPosition() {
+        return position;
+    }
+
+    public void setPosition(String position) {
+        this.position = position;
+    }
+    public String getDept() {
+        return dept;
+    }
+
+    public void setDept(String dept) {
+        this.dept = dept;
+    }
+    public String getEmail() {
+        return email;
+    }
+
+    public void setEmail(String email) {
+        this.email = email;
+    }
+    public Integer getAuthStatus() {
+        return authStatus;
+    }
+
+    public void setAuthStatus(Integer authStatus) {
+        this.authStatus = authStatus;
+    }
+    public LocalDateTime getPassauthTime() {
+        return passauthTime;
+    }
+
+    public void setPassauthTime(LocalDateTime passauthTime) {
+        this.passauthTime = passauthTime;
+    }
+    public Integer getType() {
+        return type;
+    }
+
+    public void setType(Integer type) {
+        this.type = type;
+    }
+    public String getRemark() {
+        return remark;
+    }
+
+    public void setRemark(String remark) {
+        this.remark = remark;
     }
 
     @Override
     public String toString() {
         return "User{" +
-                "id=" + id +
-                ", isDeleted=" + isDeleted +
-                ", gmtCreate=" + gmtCreate +
-                ", gmtModified=" + gmtModified +
-                ", creator=" + creator +
-                ", modifier=" + modifier +
-                ", password=" + password +
-                ", username=" + username +
-                "}";
+            "id=" + id +
+            ", isDeleted=" + isDeleted +
+            ", gmtCreate=" + gmtCreate +
+            ", gmtModified=" + gmtModified +
+            ", creator=" + creator +
+            ", modifier=" + modifier +
+            ", username=" + username +
+            ", password=" + password +
+            ", linkman=" + linkman +
+            ", phone=" + phone +
+            ", position=" + position +
+            ", dept=" + dept +
+            ", email=" + email +
+            ", authStatus=" + authStatus +
+            ", passauthTime=" + passauthTime +
+            ", type=" + type +
+            ", remark=" + remark +
+        "}";
     }
 }

+ 181 - 0
src/main/java/com/diagbot/entity/UserUaa.java

@@ -0,0 +1,181 @@
+package com.diagbot.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import org.springframework.security.core.GrantedAuthority;
+import org.springframework.security.core.userdetails.UserDetails;
+
+import java.io.Serializable;
+import java.util.Collection;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * <p>
+ * 系统用户表
+ * </p>
+ *
+ * @author gaodm
+ * @since 2018-08-30
+ */
+public class UserUaa implements UserDetails, Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 用户ID
+     */
+    @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;
+
+    /**
+     * 用户密码
+     */
+    private String password;
+
+    /**
+     * 用户名
+     */
+    private String username;
+
+    private List<? extends GrantedAuthority> authorities;
+
+    @Override
+    @JsonIgnore
+    public boolean isAccountNonExpired() {
+        return true;
+    }
+
+    @Override
+    @JsonIgnore
+    public boolean isAccountNonLocked() {
+        return true;
+    }
+
+    @Override
+    @JsonIgnore
+    public boolean isCredentialsNonExpired() {
+        return true;
+    }
+
+    @Override
+    @JsonIgnore
+    public boolean isEnabled() {
+        return true;
+    }
+
+    @JsonIgnore
+    public Collection<? extends GrantedAuthority> getAuthorities() {
+        return authorities;
+    }
+
+    public void setGrantedAuthorities(List<? extends GrantedAuthority> authorities) {
+        this.authorities = authorities;
+    }
+
+
+    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 String getPassword() {
+        return password;
+    }
+
+    public void setPassword(String password) {
+        this.password = password;
+    }
+
+    public String getUsername() {
+        return username;
+    }
+
+    public void setUsername(String username) {
+        this.username = username;
+    }
+
+    @Override
+    public String toString() {
+        return "User{" +
+                "id=" + id +
+                ", isDeleted=" + isDeleted +
+                ", gmtCreate=" + gmtCreate +
+                ", gmtModified=" + gmtModified +
+                ", creator=" + creator +
+                ", modifier=" + modifier +
+                ", password=" + password +
+                ", username=" + username +
+                "}";
+    }
+}

+ 11 - 1
src/main/java/com/diagbot/exception/ServiceErrorCode.java

@@ -8,7 +8,17 @@ package com.diagbot.exception;
  * @time: 2018/9/10 11:11
  */
 public enum ServiceErrorCode implements ErrorCode {
-    LOG_IS_NOT_EXIST("90020001", "该日志不存在");
+    USER_NOT_FOUND("10020000", "该账号暂未注册"),
+    USER_PASSWORD_ERROR("10020001", "账号或密码不正确"),
+    GET_TOKEN_FAIL("10020002", "获取token失败"),
+    TOKEN_IS_NOT_MATCH_USER("10020003", "请使用自己的token进行接口请求"),
+
+    SMS_SEND_ERROR("10020004", "短信发送错误"),
+    USER_BIND_ERROR("10020005", "用户手机号已经绑定无需再次验证"),
+    USER_UN_BIND_ERROR("10020006", "用户手机号未绑定无需解绑"),
+    VERIFYCODE_ERROR("10020007", "图片验证码生成错误"),
+    USER_EXIST("10020008", "该账号已注册"),
+    EMAIL_IS_NULL("10020009", "请输入邮箱");
 
     private String code;
     private String msg;

+ 179 - 0
src/main/java/com/diagbot/facade/UserFacade.java

@@ -0,0 +1,179 @@
+package com.diagbot.facade;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.diagbot.client.AuthServiceClient;
+import com.diagbot.dto.JwtDTO;
+import com.diagbot.entity.JWT;
+import com.diagbot.entity.JwtStore;
+import com.diagbot.entity.User;
+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.UserServiceImpl;
+import com.diagbot.util.StringUtil;
+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;
+
+/**
+ * @Description: 用户业务层
+ * @author: gaodm
+ * @time: 2018/8/6 9:00
+ */
+@Component
+public class UserFacade extends UserServiceImpl {
+
+    @Autowired
+    private TokenFacade tokenFacade;
+
+    @Autowired
+    private AuthServiceClient authServiceClient;
+
+    /**
+     * 获取jwt
+     *
+     * @param username 用户名
+     * @param password 密码
+     * @return jwt
+     */
+    public JwtDTO getJwt(String username, String password) {
+        JwtDTO data = new JwtDTO();
+        if (StringUtil.isBlank(username)) {
+            throw new CommonException(CommonErrorCode.PARAM_IS_NULL,
+                    "请输入用户名");
+        }
+        if (StringUtil.isBlank(password)) {
+            throw new CommonException(CommonErrorCode.PARAM_IS_NULL,
+                    "请输入密码");
+        }
+        QueryWrapper<User> userQueryWrapper = new QueryWrapper<>();
+        userQueryWrapper.eq("username", username)
+                .eq("is_deleted", IsDeleteEnum.N.getKey());
+        User user = this.getOne(userQueryWrapper, false);
+        if (null == user) {
+            throw new CommonException(ServiceErrorCode.USER_NOT_FOUND);
+        }
+        PasswordEncoder passwordEncoder = PasswordEncoderFactories.createDelegatingPasswordEncoder();
+        if (!passwordEncoder.matches(password, user.getPassword())) {
+            throw new CommonException(ServiceErrorCode.USER_PASSWORD_ERROR);
+        }
+        JWT jwt = authServiceClient.getToken("Basic dWFhLXNlcnZpY2U6MTIzNDU2",
+                "password", username, password);
+        if (null == jwt) {
+            throw new CommonException(ServiceErrorCode.GET_TOKEN_FAIL);
+        }
+        data.setAccessToken(jwt.getAccess_token());
+        data.setRefreshToken(jwt.getRefresh_token());
+        //token存入redis
+        JwtStore jwtStore = new JwtStore();
+        jwtStore.setAccessToken(jwt.getAccess_token());
+        jwtStore.setRefreshToken(jwt.getRefresh_token());
+        tokenFacade.createToken(jwtStore);
+        return data;
+    }
+
+    /**
+     * 刷新jwt
+     *
+     * @param refreshToken
+     * @return jwt
+     */
+    public JwtDTO refreshJwt(String refreshToken) {
+        JwtDTO data = new JwtDTO();
+        if (StringUtil.isBlank(refreshToken)) {
+            throw new CommonException(CommonErrorCode.PARAM_IS_NULL,
+                    "刷新令牌不能为空");
+        }
+
+        //验证刷新令牌有效性
+        if (!tokenFacade.verifyToken(refreshToken, 2)) {
+            throw new CommonException(CommonErrorCode.TOKEN_PAST);
+        }
+
+        JWT jwt = authServiceClient.refreshToken("Basic dWFhLXNlcnZpY2U6MTIzNDU2",
+                "refresh_token", refreshToken);
+        if (null == jwt) {
+            throw new CommonException(ServiceErrorCode.GET_TOKEN_FAIL);
+        }
+        data.setAccessToken(jwt.getAccess_token());
+        data.setRefreshToken(jwt.getRefresh_token());
+        //token存入redis
+        JwtStore jwtStore = new JwtStore();
+        jwtStore.setAccessToken(jwt.getAccess_token());
+        jwtStore.setRefreshToken(jwt.getRefresh_token());
+        tokenFacade.createToken(jwtStore);
+        return data;
+    }
+
+
+    /**
+     * 验证jwt
+     *
+     * @param token
+     * @return jwt
+     */
+    public OAuth2AccessToken checkToken(String token) {
+        if (StringUtil.isBlank(token)) {
+            throw new CommonException(CommonErrorCode.PARAM_IS_NULL,
+                    "令牌不能为空");
+        }
+
+        OAuth2AccessToken jwt
+                = authServiceClient.checkToken("Basic dWFhLXNlcnZpY2U6MTIzNDU2", token);
+        if (null == jwt) {
+            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;
+    //    }
+
+
+}

+ 4 - 4
src/main/java/com/diagbot/mapper/UserMapper.java

@@ -1,16 +1,16 @@
 package com.diagbot.mapper;
 
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.diagbot.entity.User;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 
 /**
  * <p>
- * Mapper 接口
+ * 系统用户表 Mapper 接口
  * </p>
  *
  * @author gaodm
- * @since 2018-08-02
+ * @since 2020-04-09
  */
 public interface UserMapper extends BaseMapper<User> {
-    User getByUserName(String username);
+
 }

+ 15 - 0
src/main/java/com/diagbot/mapper/UserUaaMapper.java

@@ -0,0 +1,15 @@
+package com.diagbot.mapper;
+
+import com.diagbot.entity.UserUaa;
+
+/**
+ * <p>
+ * Mapper 接口
+ * </p>
+ *
+ * @author gaodm
+ * @since 2018-08-02
+ */
+public interface UserUaaMapper {
+    UserUaa getByUserName(String username);
+}

+ 4 - 4
src/main/java/com/diagbot/service/UrlUserService.java

@@ -1,9 +1,9 @@
 package com.diagbot.service;
 
 import com.diagbot.entity.Permission;
-import com.diagbot.entity.User;
+import com.diagbot.entity.UserUaa;
 import com.diagbot.mapper.PermissionMapper;
-import com.diagbot.mapper.UserMapper;
+import com.diagbot.mapper.UserUaaMapper;
 import org.apache.commons.lang.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.core.GrantedAuthority;
@@ -23,14 +23,14 @@ import java.util.List;
 @Service
 public class UrlUserService implements UserDetailsService {
     @Autowired
-    UserMapper userMapper;
+    UserUaaMapper userUaaMapper;
     @Autowired
     PermissionMapper permissionMapper;
 
     @Override
     public UserDetails loadUserByUsername(String userName) { //重写loadUserByUsername 方法获得 userdetails 类型用户
 
-        User user = userMapper.getByUserName(userName);
+        UserUaa user = userUaaMapper.getByUserName(userName);
         if (user != null) {
             List<Permission> permissions = permissionMapper.getByUserId(user.getId());
             List<GrantedAuthority> grantedAuthorities = new ArrayList<>();

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

@@ -0,0 +1,16 @@
+package com.diagbot.service;
+
+import com.diagbot.entity.User;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 系统用户表 服务类
+ * </p>
+ *
+ * @author gaodm
+ * @since 2020-04-09
+ */
+public interface UserService extends IService<User> {
+
+}

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

@@ -0,0 +1,20 @@
+package com.diagbot.service.impl;
+
+import com.diagbot.entity.User;
+import com.diagbot.mapper.UserMapper;
+import com.diagbot.service.UserService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 系统用户表 服务实现类
+ * </p>
+ *
+ * @author gaodm
+ * @since 2020-04-09
+ */
+@Service
+public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
+
+}

+ 15 - 0
src/main/java/com/diagbot/vo/JwtVO.java

@@ -0,0 +1,15 @@
+package com.diagbot.vo;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:
+ * @author: gaodm
+ * @time: 2018/9/29 9:22
+ */
+@Getter
+@Setter
+public class JwtVO {
+    private String token;
+}

+ 22 - 0
src/main/java/com/diagbot/vo/UserLoginVO.java

@@ -0,0 +1,22 @@
+package com.diagbot.vo;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotBlank;
+
+/**
+ * @Description: 登录参数
+ * @Author: ztg
+ * @Date: 2018/9/28 13:14
+ */
+@Getter
+@Setter
+public class UserLoginVO {
+
+    @NotBlank(message = "请输入用户名!")
+    private String username;
+    @NotBlank(message = "请输入密码!")
+    private String password;
+
+}

+ 7 - 2
src/main/java/com/diagbot/web/TestController.java

@@ -1,6 +1,7 @@
 package com.diagbot.web;
 
 import com.diagbot.client.AuthServiceClient;
+import com.diagbot.dto.RespDTO;
 import com.diagbot.entity.JWT;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -14,14 +15,18 @@ import org.springframework.web.bind.annotation.RestController;
  * @version: V1.0
  */
 @RestController
-@RequestMapping("/test")
 public class TestController {
     @Autowired
     private AuthServiceClient authServiceClient;
     //p:f6af7afd01d4eb0dc5fe0a342cd6cee7
-    @PostMapping(value = "/oauth/token")
+    @PostMapping(value = "/test/oauth/token")
     public JWT getToken(String username, String password) {
         return authServiceClient.getToken("Basic dWFhLXNlcnZpY2U6MTIzNDU2",
                 "password", username, password);
     }
+
+    @PostMapping(value = "/statistics/count")
+    public RespDTO<Boolean> getToken() {
+        return RespDTO.onSuc(true);
+    }
 }

+ 88 - 0
src/main/java/com/diagbot/web/UserController.java

@@ -0,0 +1,88 @@
+package com.diagbot.web;
+
+import com.diagbot.annotation.SysLogger;
+import com.diagbot.dto.JwtDTO;
+//import com.diagbot.dto.LoginDTO;
+import com.diagbot.dto.RespDTO;
+import com.diagbot.entity.Token;
+import com.diagbot.facade.TokenFacade;
+import com.diagbot.facade.UserFacade;
+import com.diagbot.vo.JwtVO;
+import com.diagbot.vo.UserLoginVO;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.oauth2.common.OAuth2AccessToken;
+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 springfox.documentation.annotations.ApiIgnore;
+
+/**
+ * @Description: 用户操作API
+ * @author: gaodm
+ * @time: 2018/8/2 13:56
+ */
+@RestController
+@Api(value = "用户账号注册等API", tags = { "用户账号注册等API" })
+@RequestMapping("/user")
+@SuppressWarnings("unchecked")
+public class UserController {
+
+    @Autowired
+    private UserFacade userFacade;
+    @Autowired
+    private TokenFacade tokenFacade;
+
+    @ApiOperation(value = "验证token有效性[by:zhoutg]",
+            notes = "token:token信息,必填<br>")
+    @PostMapping("/verifyToken")
+    @SysLogger("verifyToken")
+    @ApiIgnore
+    public RespDTO<Boolean> verifyToken(@RequestBody Token token) {
+        Boolean data = tokenFacade.verifyToken(token.getToken(), 1);
+        return RespDTO.onSuc(data);
+    }
+
+
+    @ApiOperation(value = "登录获取jwt[by:zhoutg]",
+            notes = "username:用户名,必填<br>" +
+                    "password:密码, 必填, 默认密码:f6af7afd01d4eb0dc5fe0a342cd6cee7<br> ")
+    @PostMapping("/getJwt")
+    @SysLogger("getJwt")
+    public RespDTO<JwtDTO> getJwt(@RequestBody UserLoginVO userLoginVO) {
+        JwtDTO data = userFacade.getJwt(userLoginVO.getUsername(), userLoginVO.getPassword());
+        return RespDTO.onSuc(data);
+    }
+
+    @ApiOperation(value = "刷新jwt[by:zhoutg]",
+            notes = "refreshToken:刷新令牌,必填<br>")
+    @PostMapping("/refreshJwt")
+    @SysLogger("refreshJwt")
+    public RespDTO<JwtDTO> refreshJwt(@RequestBody JwtVO jwtVO) {
+        JwtDTO data = userFacade.refreshJwt(jwtVO.getToken());
+        return RespDTO.onSuc(data);
+    }
+
+    @ApiOperation(value = "验证Token[by:zhoutg]",
+            notes = "checkToken:令牌,必填<br>")
+    @PostMapping("/checkToken")
+    @SysLogger("checkToken")
+    public RespDTO<OAuth2AccessToken> checkToken(@RequestBody JwtVO jwtVO) {
+        OAuth2AccessToken data = userFacade.checkToken(jwtVO.getToken());
+        return RespDTO.onSuc(data);
+    }
+
+
+//    @ApiOperation(value = "获取用户、机构、菜单信息[by:zhoutg]",
+//            notes = "")
+//    @PostMapping("/getUserOrgMenu")
+//    @SysLogger("getUserOrgMenu")
+//    public RespDTO<LoginDTO> getUserOrgMenu() {
+//
+//        LoginDTO data = userFacade.getUserOrgMenu();
+//        return RespDTO.onSuc(data);
+//    }
+
+}

+ 2 - 1
src/main/resources/application-dev.yml

@@ -149,7 +149,8 @@ mybatis-plus:
     map-underscore-to-camel-case: true
     cache-enabled: false
 
-oath.self.address: http://localhost:${server.port}
+myhost: localhost
+oath.self.address: http://${myhost}:${server.port}
 
 swagger:
   enable: true

+ 2 - 1
src/main/resources/application-local.yml

@@ -149,7 +149,8 @@ mybatis-plus:
     map-underscore-to-camel-case: true
     cache-enabled: false
 
-oath.self.address: http://localhost:${server.port}
+myhost: localhost
+oath.self.address: http://${myhost}:${server.port}
 
 swagger:
   enable: true

+ 2 - 1
src/main/resources/application-pre.yml

@@ -149,7 +149,8 @@ mybatis-plus:
     map-underscore-to-camel-case: true
     cache-enabled: false
 
-oath.self.address: http://localhost:${server.port}
+myhost: localhost
+oath.self.address: http://${myhost}:${server.port}
 
 swagger:
   enable: true

+ 2 - 1
src/main/resources/application-pro.yml

@@ -149,7 +149,8 @@ mybatis-plus:
     map-underscore-to-camel-case: true
     cache-enabled: false
 
-oath.self.address: http://localhost:${server.port}
+myhost: localhost
+oath.self.address: http://${myhost}:${server.port}
 
 swagger:
   enable: true

+ 2 - 1
src/main/resources/application-test.yml

@@ -149,7 +149,8 @@ mybatis-plus:
     map-underscore-to-camel-case: true
     cache-enabled: false
 
-oath.self.address: http://localhost:${server.port}
+myhost: localhost
+oath.self.address: http://${myhost}:${server.port}
 
 swagger:
   enable: true

+ 18 - 27
src/main/resources/mapper/UserMapper.xml

@@ -1,35 +1,26 @@
 <?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">
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.diagbot.mapper.UserMapper">
 
     <!-- 通用查询映射结果 -->
     <resultMap id="BaseResultMap" type="com.diagbot.entity.User">
-        <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="password" property="password"/>
-        <result column="username" property="username"/>
+        <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="username" property="username" />
+        <result column="password" property="password" />
+        <result column="linkman" property="linkman" />
+        <result column="phone" property="phone" />
+        <result column="position" property="position" />
+        <result column="dept" property="dept" />
+        <result column="email" property="email" />
+        <result column="auth_status" property="authStatus" />
+        <result column="passauth_time" property="passauthTime" />
+        <result column="type" property="type" />
+        <result column="remark" property="remark" />
     </resultMap>
 
-
-    <resultMap id="userMap" type="com.diagbot.entity.User">
-        <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="password" property="password"/>
-        <result column="username" property="username"/>
-    </resultMap>
-
-    <select id="getByUserName" parameterType="java.lang.String" resultMap="userMap">
-		select u.*
-		from sys_user u
-        where is_deleted = 'N' and u.username= #{username}
-	</select>
 </mapper>

+ 35 - 0
src/main/resources/mapper/UserUaaMapper.xml

@@ -0,0 +1,35 @@
+<?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.UserUaaMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.diagbot.entity.UserUaa">
+        <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="password" property="password"/>
+        <result column="username" property="username"/>
+    </resultMap>
+
+
+    <resultMap id="userUaaMap" type="com.diagbot.entity.UserUaa">
+        <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="password" property="password"/>
+        <result column="username" property="username"/>
+    </resultMap>
+
+    <select id="getByUserName" parameterType="java.lang.String" resultMap="userUaaMap">
+		select u.*
+		from sys_user u
+        where is_deleted = 'N' and u.username= #{username}
+	</select>
+</mapper>

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

@@ -27,7 +27,7 @@ public class CodeGeneration {
 
         // 全局配置
         GlobalConfig gc = new GlobalConfig();
-        gc.setOutputDir("E://code//feedbackservice");
+        gc.setOutputDir("E://code//mrqcsys");
         gc.setFileOverride(true);
         gc.setActiveRecord(false);// 不需要ActiveRecord特性的请改为false
         gc.setEnableCache(false);// XML 二级缓存
@@ -48,15 +48,15 @@ public class CodeGeneration {
         dsc.setDbType(DbType.MYSQL);
         dsc.setDriverName("com.mysql.cj.jdbc.Driver");
         dsc.setUsername("root");
-        dsc.setPassword("root");
-        dsc.setUrl("jdbc:mysql://127.0.0.1:3306/sys-log?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf-8");
+        dsc.setPassword("lantone");
+        dsc.setUrl("jdbc:mysql://192.168.2.236:3306/sys-mrqcneo?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf-8");
         mpg.setDataSource(dsc);
 
         // 策略配置
         StrategyConfig strategy = new StrategyConfig();
-//        strategy.setTablePrefix(new String[] { "sys_" });// 此处可以修改为您的表前缀
+        strategy.setTablePrefix(new String[] { "sys_" });// 此处可以修改为您的表前缀
         strategy.setNaming(NamingStrategy.underline_to_camel);// 表名生成策略
-        strategy.setInclude(new String[] { "sys_log" }); // 需要生成的表
+        strategy.setInclude(new String[] { "sys_user" }); // 需要生成的表
 
         strategy.setSuperServiceClass(null);
         strategy.setSuperServiceImplClass(null);