Ver Fonte

feat(auth): 修改权限为系统通用

高家顺 há 3 anos atrás
pai
commit
c93b43648f
79 ficheiros alterados com 965 adições e 3368 exclusões
  1. 8 2
      pom.xml
  2. 9 24
      sql/file_collect.sql
  3. 6 4
      src/main/java/com/macro/mall/tiny/common/util/MyFileUtils.java
  4. 54 54
      src/main/java/com/macro/mall/tiny/config/MallSecurityConfig.java
  5. 69 69
      src/main/java/com/macro/mall/tiny/domain/AdminUserDetails.java
  6. 3 3
      src/main/java/com/macro/mall/tiny/modules/business/controller/FileController.java
  7. 1 1
      src/main/java/com/macro/mall/tiny/modules/business/model/KrBLine.java
  8. 0 4
      src/main/java/com/macro/mall/tiny/modules/business/model/KrBLineUploadLog.java
  9. 2 2
      src/main/java/com/macro/mall/tiny/modules/business/model/KrBTower.java
  10. 2 2
      src/main/java/com/macro/mall/tiny/modules/business/service/KrBTowerService.java
  11. 22 23
      src/main/java/com/macro/mall/tiny/modules/business/service/impl/AsyncHandler.java
  12. 2 2
      src/main/java/com/macro/mall/tiny/modules/business/service/impl/BDirectoryCacheServiceImpl.java
  13. 8 6
      src/main/java/com/macro/mall/tiny/modules/business/service/impl/FileServiceImpl.java
  14. 2 2
      src/main/java/com/macro/mall/tiny/modules/business/service/impl/KrBLineServiceImpl.java
  15. 8 8
      src/main/java/com/macro/mall/tiny/modules/business/service/impl/KrBTowerServiceImpl.java
  16. 0 204
      src/main/java/com/macro/mall/tiny/modules/ums/controller/UmsAdminController.java
  17. 0 103
      src/main/java/com/macro/mall/tiny/modules/ums/controller/UmsMenuController.java
  18. 0 70
      src/main/java/com/macro/mall/tiny/modules/ums/controller/UmsResourceCategoryController.java
  19. 0 98
      src/main/java/com/macro/mall/tiny/modules/ums/controller/UmsResourceController.java
  20. 0 128
      src/main/java/com/macro/mall/tiny/modules/ums/controller/UmsRoleController.java
  21. 0 23
      src/main/java/com/macro/mall/tiny/modules/ums/dto/UmsAdminLoginParam.java
  22. 0 32
      src/main/java/com/macro/mall/tiny/modules/ums/dto/UmsAdminParam.java
  23. 0 19
      src/main/java/com/macro/mall/tiny/modules/ums/dto/UmsMenuNode.java
  24. 0 25
      src/main/java/com/macro/mall/tiny/modules/ums/dto/UpdateAdminPasswordParam.java
  25. 0 26
      src/main/java/com/macro/mall/tiny/modules/ums/dto/UpdateAdminRoleParam.java
  26. 0 16
      src/main/java/com/macro/mall/tiny/modules/ums/mapper/UmsAdminLoginLogMapper.java
  27. 0 28
      src/main/java/com/macro/mall/tiny/modules/ums/mapper/UmsAdminMapper.java
  28. 0 21
      src/main/java/com/macro/mall/tiny/modules/ums/mapper/UmsAdminRoleRelationMapper.java
  29. 0 28
      src/main/java/com/macro/mall/tiny/modules/ums/mapper/UmsMenuMapper.java
  30. 0 16
      src/main/java/com/macro/mall/tiny/modules/ums/mapper/UmsResourceCategoryMapper.java
  31. 0 29
      src/main/java/com/macro/mall/tiny/modules/ums/mapper/UmsResourceMapper.java
  32. 0 24
      src/main/java/com/macro/mall/tiny/modules/ums/mapper/UmsRoleMapper.java
  33. 0 16
      src/main/java/com/macro/mall/tiny/modules/ums/mapper/UmsRoleMenuRelationMapper.java
  34. 0 19
      src/main/java/com/macro/mall/tiny/modules/ums/mapper/UmsRoleResourceRelationMapper.java
  35. 0 67
      src/main/java/com/macro/mall/tiny/modules/ums/model/UmsAdmin.java
  36. 0 47
      src/main/java/com/macro/mall/tiny/modules/ums/model/UmsAdminLoginLog.java
  37. 0 36
      src/main/java/com/macro/mall/tiny/modules/ums/model/UmsAdminRoleRelation.java
  38. 0 60
      src/main/java/com/macro/mall/tiny/modules/ums/model/UmsMenu.java
  39. 0 51
      src/main/java/com/macro/mall/tiny/modules/ums/model/UmsResource.java
  40. 0 45
      src/main/java/com/macro/mall/tiny/modules/ums/model/UmsResourceCategory.java
  41. 0 53
      src/main/java/com/macro/mall/tiny/modules/ums/model/UmsRole.java
  42. 0 38
      src/main/java/com/macro/mall/tiny/modules/ums/model/UmsRoleMenuRelation.java
  43. 0 38
      src/main/java/com/macro/mall/tiny/modules/ums/model/UmsRoleResourceRelation.java
  44. 0 59
      src/main/java/com/macro/mall/tiny/modules/ums/service/UmsAdminCacheService.java
  45. 0 11
      src/main/java/com/macro/mall/tiny/modules/ums/service/UmsAdminRoleRelationService.java
  46. 0 84
      src/main/java/com/macro/mall/tiny/modules/ums/service/UmsAdminService.java
  47. 0 40
      src/main/java/com/macro/mall/tiny/modules/ums/service/UmsMenuService.java
  48. 0 24
      src/main/java/com/macro/mall/tiny/modules/ums/service/UmsResourceCategoryService.java
  49. 0 34
      src/main/java/com/macro/mall/tiny/modules/ums/service/UmsResourceService.java
  50. 0 11
      src/main/java/com/macro/mall/tiny/modules/ums/service/UmsRoleMenuRelationService.java
  51. 0 11
      src/main/java/com/macro/mall/tiny/modules/ums/service/UmsRoleResourceRelationService.java
  52. 0 58
      src/main/java/com/macro/mall/tiny/modules/ums/service/UmsRoleService.java
  53. 0 115
      src/main/java/com/macro/mall/tiny/modules/ums/service/impl/UmsAdminCacheServiceImpl.java
  54. 0 15
      src/main/java/com/macro/mall/tiny/modules/ums/service/impl/UmsAdminRoleRelationServiceImpl.java
  55. 0 270
      src/main/java/com/macro/mall/tiny/modules/ums/service/impl/UmsAdminServiceImpl.java
  56. 0 94
      src/main/java/com/macro/mall/tiny/modules/ums/service/impl/UmsMenuServiceImpl.java
  57. 0 32
      src/main/java/com/macro/mall/tiny/modules/ums/service/impl/UmsResourceCategoryServiceImpl.java
  58. 0 62
      src/main/java/com/macro/mall/tiny/modules/ums/service/impl/UmsResourceServiceImpl.java
  59. 0 15
      src/main/java/com/macro/mall/tiny/modules/ums/service/impl/UmsRoleMenuRelationServiceImpl.java
  60. 0 15
      src/main/java/com/macro/mall/tiny/modules/ums/service/impl/UmsRoleResourceRelationServiceImpl.java
  61. 0 117
      src/main/java/com/macro/mall/tiny/modules/ums/service/impl/UmsRoleServiceImpl.java
  62. 51 51
      src/main/java/com/macro/mall/tiny/security/component/DynamicAccessDecisionManager.java
  63. 77 77
      src/main/java/com/macro/mall/tiny/security/component/DynamicSecurityFilter.java
  64. 64 64
      src/main/java/com/macro/mall/tiny/security/component/DynamicSecurityMetadataSource.java
  65. 16 16
      src/main/java/com/macro/mall/tiny/security/component/DynamicSecurityService.java
  66. 61 61
      src/main/java/com/macro/mall/tiny/security/component/JwtAuthenticationTokenFilter.java
  67. 27 27
      src/main/java/com/macro/mall/tiny/security/component/RestAuthenticationEntryPoint.java
  68. 29 29
      src/main/java/com/macro/mall/tiny/security/component/RestfulAccessDeniedHandler.java
  69. 21 21
      src/main/java/com/macro/mall/tiny/security/config/IgnoreUrlsConfig.java
  70. 127 127
      src/main/java/com/macro/mall/tiny/security/config/SecurityConfig.java
  71. 30 30
      src/main/java/com/macro/mall/tiny/security/util/AuthUtil.java
  72. 170 170
      src/main/java/com/macro/mall/tiny/security/util/JwtTokenUtil.java
  73. 23 0
      src/main/java/com/macro/mall/tiny/security/util/ShiroAuthUtil.java
  74. 44 44
      src/main/java/com/macro/mall/tiny/security/util/SpringUtil.java
  75. 14 1
      src/main/resources/application-test.yml
  76. 3 3
      src/main/resources/mapper/business/BLineMapper.xml.bak
  77. 5 5
      src/main/resources/mapper/business/KrBLineMapper.xml
  78. 3 5
      src/main/resources/mapper/business/KrBLineUploadLogMapper.xml
  79. 4 4
      src/main/resources/mapper/business/KrBTowerMapper.xml

+ 8 - 2
pom.xml

@@ -98,10 +98,10 @@
         </dependency>
         <!--SpringSecurity依赖配置-->
         <!--SpringSecurity依赖配置-->
-        <dependency>
+        <!--<dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-security</artifactId>
-        </dependency>
+        </dependency>-->
         <!--Hutool Java工具包-->
         <dependency>
             <groupId>cn.hutool</groupId>
@@ -173,6 +173,12 @@
             <version>2.2.5.RELEASE</version>
         </dependency>
 
+        <!-- https://mvnrepository.com/artifact/com.alibaba.cloud/spring-cloud-starter-alibaba-nacos-config -->
+        <dependency>
+            <groupId>com.keystar</groupId>
+            <artifactId>eprdms_auth_client</artifactId>
+            <version>V100R001C00B020</version>
+        </dependency>
     </dependencies>
 
     <build>

Diff do ficheiro suprimidas por serem muito extensas
+ 9 - 24
sql/file_collect.sql


+ 6 - 4
src/main/java/com/macro/mall/tiny/common/util/MyFileUtils.java

@@ -6,8 +6,9 @@ import com.macro.mall.tiny.config.UploadConfig;
 import com.macro.mall.tiny.modules.business.model.BDirectory;
 import com.macro.mall.tiny.modules.business.model.BFile;
 import com.macro.mall.tiny.modules.business.model.BFileDetail;
-import com.macro.mall.tiny.security.util.AuthUtil;
+import com.macro.mall.tiny.security.util.ShiroAuthUtil;
 import org.apache.commons.lang3.StringUtils;
+import org.apache.shiro.SecurityUtils;
 import org.springframework.web.multipart.MultipartFile;
 
 import java.io.*;
@@ -103,7 +104,8 @@ public class MyFileUtils {
     }
 
     public static List<BFile> getSubBFiles(String basePath) {
-        boolean access = AuthUtil.checkAccess(AuthUtil.ACCESS);
+        SecurityUtils.getSubject().isPermitted();
+        boolean access = ShiroAuthUtil.checkAccess(ShiroAuthUtil.ACCESS);
         return getSubBFiles(basePath, null, access);
     }
 
@@ -144,7 +146,7 @@ public class MyFileUtils {
      * @since J7.23.0
      */
     public static BDirectory getRootDirectory() {
-        final boolean access = AuthUtil.checkAccess(AuthUtil.ACCESS);
+        final boolean access = ShiroAuthUtil.checkAccess(ShiroAuthUtil.ACCESS);
         final File rootDirectory = new File(UploadConfig.powerPath);
         return getAllAuthDirectory(rootDirectory, access);
     }
@@ -181,7 +183,7 @@ public class MyFileUtils {
 
     public static List<BFileDetail> getFileDetailList(String path) {
         if (StringUtils.isBlank(path)) return Lists.newArrayList();
-        boolean access = AuthUtil.checkAccess(AuthUtil.ACCESS);
+        boolean access = ShiroAuthUtil.checkAccess(ShiroAuthUtil.ACCESS);
         File oriDic = new File(path);
         if (!oriDic.exists() || oriDic.isFile() || (!access && path.contains(String.valueOf(UploadConfig.AUTH_STR)))) {
             return Lists.newArrayList();

+ 54 - 54
src/main/java/com/macro/mall/tiny/config/MallSecurityConfig.java

@@ -1,54 +1,54 @@
-package com.macro.mall.tiny.config;
-
-import com.macro.mall.tiny.modules.ums.model.UmsResource;
-import com.macro.mall.tiny.modules.ums.service.UmsAdminService;
-import com.macro.mall.tiny.modules.ums.service.UmsResourceService;
-import com.macro.mall.tiny.security.component.DynamicSecurityService;
-import com.macro.mall.tiny.security.config.SecurityConfig;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.security.access.ConfigAttribute;
-import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;
-import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
-import org.springframework.security.core.userdetails.UserDetailsService;
-
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
-
-/**
- * mall-security模块相关配置
- * Created by macro on 2019/11/9.
- */
-@Configuration
-@EnableWebSecurity
-@EnableGlobalMethodSecurity(prePostEnabled = true)
-public class MallSecurityConfig extends SecurityConfig {
-
-    @Autowired
-    private UmsAdminService adminService;
-    @Autowired
-    private UmsResourceService resourceService;
-
-    @Bean
-    public UserDetailsService userDetailsService() {
-        //获取登录用户信息
-        return username -> adminService.loadUserByUsername(username);
-    }
-
-    @Bean
-    public DynamicSecurityService dynamicSecurityService() {
-        return new DynamicSecurityService() {
-            @Override
-            public Map<String, ConfigAttribute> loadDataSource() {
-                Map<String, ConfigAttribute> map = new ConcurrentHashMap<>();
-                List<UmsResource> resourceList = resourceService.list();
-                for (UmsResource resource : resourceList) {
-                    map.put(resource.getUrl(), new org.springframework.security.access.SecurityConfig(resource.getId() + ":" + resource.getName()));
-                }
-                return map;
-            }
-        };
-    }
-}
+//package com.macro.mall.tiny.config;
+//
+//import com.macro.mall.tiny.modules.ums.model.UmsResource;
+//import com.macro.mall.tiny.modules.ums.service.UmsAdminService;
+//import com.macro.mall.tiny.modules.ums.service.UmsResourceService;
+//import com.macro.mall.tiny.security.component.DynamicSecurityService;
+//import com.macro.mall.tiny.security.config.SecurityConfig;
+//import org.springframework.beans.factory.annotation.Autowired;
+//import org.springframework.context.annotation.Bean;
+//import org.springframework.context.annotation.Configuration;
+//import org.springframework.security.access.ConfigAttribute;
+//import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;
+//import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
+//import org.springframework.security.core.userdetails.UserDetailsService;
+//
+//import java.util.List;
+//import java.util.Map;
+//import java.util.concurrent.ConcurrentHashMap;
+//
+///**
+// * mall-security模块相关配置
+// * Created by macro on 2019/11/9.
+// */
+//@Configuration
+//@EnableWebSecurity
+//@EnableGlobalMethodSecurity(prePostEnabled = true)
+//public class MallSecurityConfig extends SecurityConfig {
+//
+//    @Autowired
+//    private UmsAdminService adminService;
+//    @Autowired
+//    private UmsResourceService resourceService;
+//
+//    @Bean
+//    public UserDetailsService userDetailsService() {
+//        //获取登录用户信息
+//        return username -> adminService.loadUserByUsername(username);
+//    }
+//
+//    @Bean
+//    public DynamicSecurityService dynamicSecurityService() {
+//        return new DynamicSecurityService() {
+//            @Override
+//            public Map<String, ConfigAttribute> loadDataSource() {
+//                Map<String, ConfigAttribute> map = new ConcurrentHashMap<>();
+//                List<UmsResource> resourceList = resourceService.list();
+//                for (UmsResource resource : resourceList) {
+//                    map.put(resource.getUrl(), new org.springframework.security.access.SecurityConfig(resource.getId() + ":" + resource.getName()));
+//                }
+//                return map;
+//            }
+//        };
+//    }
+//}

+ 69 - 69
src/main/java/com/macro/mall/tiny/domain/AdminUserDetails.java

@@ -1,69 +1,69 @@
-package com.macro.mall.tiny.domain;
-
-import com.macro.mall.tiny.modules.ums.model.UmsAdmin;
-import com.macro.mall.tiny.modules.ums.model.UmsResource;
-import org.springframework.security.core.GrantedAuthority;
-import org.springframework.security.core.authority.SimpleGrantedAuthority;
-import org.springframework.security.core.userdetails.UserDetails;
-
-import java.util.Collection;
-import java.util.List;
-import java.util.stream.Collectors;
-
-/**
- * SpringSecurity需要的用户详情
- * Created by macro on 2018/4/26.
- */
-public class AdminUserDetails implements UserDetails {
-    private UmsAdmin umsAdmin;
-    private List<UmsResource> resourceList;
-    public AdminUserDetails(UmsAdmin umsAdmin, List<UmsResource> resourceList) {
-        this.umsAdmin = umsAdmin;
-        this.resourceList = resourceList;
-    }
-
-    @Override
-    public Collection<? extends GrantedAuthority> getAuthorities() {
-        //返回当前用户的角色
-        return resourceList.stream()
-                .map(role ->new SimpleGrantedAuthority(role.getId()+":"+role.getName()))
-                .collect(Collectors.toList());
-    }
-
-    public List<String> getResourceUrlList() {
-        // 返回当前用户拥有的资源URL
-        return resourceList.stream()
-                .map(UmsResource::getUrl)
-                .collect(Collectors.toList());
-    }
-
-    @Override
-    public String getPassword() {
-        return umsAdmin.getPassword();
-    }
-
-    @Override
-    public String getUsername() {
-        return umsAdmin.getUsername();
-    }
-
-    @Override
-    public boolean isAccountNonExpired() {
-        return true;
-    }
-
-    @Override
-    public boolean isAccountNonLocked() {
-        return true;
-    }
-
-    @Override
-    public boolean isCredentialsNonExpired() {
-        return true;
-    }
-
-    @Override
-    public boolean isEnabled() {
-        return umsAdmin.getStatus().equals(1);
-    }
-}
+//package com.macro.mall.tiny.domain;
+//
+//import com.macro.mall.tiny.modules.ums.model.UmsAdmin;
+//import com.macro.mall.tiny.modules.ums.model.UmsResource;
+//import org.springframework.security.core.GrantedAuthority;
+//import org.springframework.security.core.authority.SimpleGrantedAuthority;
+//import org.springframework.security.core.userdetails.UserDetails;
+//
+//import java.util.Collection;
+//import java.util.List;
+//import java.util.stream.Collectors;
+//
+///**
+// * SpringSecurity需要的用户详情
+// * Created by macro on 2018/4/26.
+// */
+//public class AdminUserDetails implements UserDetails {
+//    private UmsAdmin umsAdmin;
+//    private List<UmsResource> resourceList;
+//    public AdminUserDetails(UmsAdmin umsAdmin, List<UmsResource> resourceList) {
+//        this.umsAdmin = umsAdmin;
+//        this.resourceList = resourceList;
+//    }
+//
+//    @Override
+//    public Collection<? extends GrantedAuthority> getAuthorities() {
+//        //返回当前用户的角色
+//        return resourceList.stream()
+//                .map(role ->new SimpleGrantedAuthority(role.getId()+":"+role.getName()))
+//                .collect(Collectors.toList());
+//    }
+//
+//    public List<String> getResourceUrlList() {
+//        // 返回当前用户拥有的资源URL
+//        return resourceList.stream()
+//                .map(UmsResource::getUrl)
+//                .collect(Collectors.toList());
+//    }
+//
+//    @Override
+//    public String getPassword() {
+//        return umsAdmin.getPassword();
+//    }
+//
+//    @Override
+//    public String getUsername() {
+//        return umsAdmin.getUsername();
+//    }
+//
+//    @Override
+//    public boolean isAccountNonExpired() {
+//        return true;
+//    }
+//
+//    @Override
+//    public boolean isAccountNonLocked() {
+//        return true;
+//    }
+//
+//    @Override
+//    public boolean isCredentialsNonExpired() {
+//        return true;
+//    }
+//
+//    @Override
+//    public boolean isEnabled() {
+//        return umsAdmin.getStatus().equals(1);
+//    }
+//}

+ 3 - 3
src/main/java/com/macro/mall/tiny/modules/business/controller/FileController.java

@@ -10,7 +10,7 @@ import com.macro.mall.tiny.modules.business.model.BDirectory;
 import com.macro.mall.tiny.modules.business.model.BFile;
 import com.macro.mall.tiny.modules.business.model.BFileDetail;
 import com.macro.mall.tiny.modules.business.service.FileService;
-import com.macro.mall.tiny.security.util.AuthUtil;
+import com.macro.mall.tiny.security.util.ShiroAuthUtil;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
@@ -141,7 +141,7 @@ public class FileController {
     @ApiOperation("文件下载接口")
     @PostMapping("/download")
     public void downLoad(HttpServletResponse response, @RequestBody Map<String,String> params) throws Exception {
-        boolean access = AuthUtil.checkAccess(AuthUtil.ACCESS);
+        boolean access = ShiroAuthUtil.checkAccess(ShiroAuthUtil.ACCESS);
         File file = new File(params.get("path"));
         if (file.getName().contains(String.valueOf(UploadConfig.AUTH_STR)) && !access) return;
         if (file.exists()) { //判断文件父目录是否存在
@@ -169,7 +169,7 @@ public class FileController {
     @ApiOperation("多文件压缩下载接口")
     @PostMapping("/multiFileZipDownload")
     public void multiFileZipDownload(HttpServletResponse response, @Validated @RequestBody FileDownloadParam fileDownloadParam) throws Exception {
-        boolean access = AuthUtil.checkAccess(AuthUtil.ACCESS);
+        boolean access = ShiroAuthUtil.checkAccess(ShiroAuthUtil.ACCESS);
         OutputStream outputStream = response.getOutputStream();
         ParallelScatterZipCreator scatterZipCreator = new ParallelScatterZipCreator();
         ZipArchiveOutputStream zipArchiveOutputStream = new ZipArchiveOutputStream(outputStream);

+ 1 - 1
src/main/java/com/macro/mall/tiny/modules/business/model/KrBLine.java

@@ -73,7 +73,7 @@ public class KrBLine implements Serializable {
     private Integer endTower;
 
     @ApiModelProperty(value = "创建人")
-    private Long creatorId;
+    private String creatorName;
 
     @ApiModelProperty(value = "包含铁塔")
     @TableField(exist = false)

+ 0 - 4
src/main/java/com/macro/mall/tiny/modules/business/model/KrBLineUploadLog.java

@@ -36,9 +36,6 @@ public class KrBLineUploadLog implements Serializable {
     @ApiModelProperty(value = "上传线路名称")
     private Long lineId;
 
-    @ApiModelProperty(value = "上传者ID")
-    private Long uploaderId;
-
     @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
     @ApiModelProperty(value = "上传日期")
     private Date uploadTime;
@@ -54,7 +51,6 @@ public class KrBLineUploadLog implements Serializable {
     private String lineName;
 
     @ApiModelProperty(value = "上传者名称")
-    @TableField(exist = false)
     private String uploaderName;
 
 

+ 2 - 2
src/main/java/com/macro/mall/tiny/modules/business/model/KrBTower.java

@@ -90,8 +90,8 @@ public class KrBTower implements Serializable {
     @ApiModelProperty(value = "是否存在文件")
     private Integer hasFile;
 
-    @ApiModelProperty(value = "创建者id")
-    private Long creatorId;
+    @ApiModelProperty(value = "创建者名称")
+    private String creatorName;
 
     @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
     @ApiModelProperty(value = "创建时间")

+ 2 - 2
src/main/java/com/macro/mall/tiny/modules/business/service/KrBTowerService.java

@@ -1,9 +1,9 @@
 package com.macro.mall.tiny.modules.business.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
-import com.macro.mall.tiny.domain.AdminUserDetails;
 import com.macro.mall.tiny.modules.business.model.BFile;
 import com.macro.mall.tiny.modules.business.model.KrBTower;
+import org.apache.shiro.subject.Subject;
 
 import java.util.List;
 import java.util.Map;
@@ -24,6 +24,6 @@ public interface KrBTowerService extends IService<KrBTower> {
 
     void setHasFile(List<KrBTower> towerList);
 
-    void setHasFile(List<KrBTower> towerList, AdminUserDetails userDetails);
+    void setHasFile(List<KrBTower> towerList, Subject userDetails);
 
 }

+ 22 - 23
src/main/java/com/macro/mall/tiny/modules/business/service/impl/AsyncHandler.java

@@ -8,24 +8,25 @@ import com.macro.mall.tiny.common.exception.ApiException;
 import com.macro.mall.tiny.common.exception.Asserts;
 import com.macro.mall.tiny.common.util.CommonUtils;
 import com.macro.mall.tiny.config.UploadConfig;
-import com.macro.mall.tiny.domain.AdminUserDetails;
 import com.macro.mall.tiny.modules.business.enums.DirectoryEnum;
 import com.macro.mall.tiny.modules.business.model.*;
 import com.macro.mall.tiny.modules.business.service.*;
-import com.macro.mall.tiny.modules.ums.model.UmsAdmin;
-import com.macro.mall.tiny.modules.ums.service.UmsAdminService;
-import com.macro.mall.tiny.security.util.AuthUtil;
+import com.macro.mall.tiny.security.util.ShiroAuthUtil;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.compress.archivers.ArchiveEntry;
 import org.apache.commons.compress.archivers.ArchiveInputStream;
 import org.apache.commons.compress.archivers.zip.ZipArchiveInputStream;
 import org.apache.commons.compress.utils.IOUtils;
+import org.apache.shiro.subject.Subject;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Component;
 import org.springframework.transaction.annotation.Transactional;
 
-import java.io.*;
+import java.io.BufferedInputStream;
+import java.io.File;
+import java.io.InputStream;
+import java.io.OutputStream;
 import java.math.BigDecimal;
 import java.nio.file.Files;
 import java.nio.file.Path;
@@ -43,9 +44,6 @@ import java.util.stream.Collectors;
 public class AsyncHandler {
 
     @Autowired
-    private UmsAdminService adminService;
-
-    @Autowired
     private KrBRegionProvinceServiceImpl krBRegionProvinceService;
 
     @Autowired
@@ -65,23 +63,24 @@ public class AsyncHandler {
 
     @Async
     @Transactional
-    public void handleDocument(String provinceId, String cityId, String fileSource, String lineName, String voltage, String lineStatus, Long serviceBegintimeTs, Integer beginTower, Integer endTower, AdminUserDetails userDetails, String charset) {
+    public void handleDocument(String provinceId, String cityId, String fileSource, String lineName, String voltage, String lineStatus, Long serviceBegintimeTs, Integer beginTower, Integer endTower, String username, Subject subject, String charset) {
         StringBuilder warnMsg = new StringBuilder();
         KrBLine line = null;
-        Long userId = null;
         try {
             if (provinceId == null) Asserts.fail("上传失败,省份不能为空,provinceId:" + provinceId);
             if (cityId == null) Asserts.fail("上传失败,城市不能为空,cityId:" + cityId);
-            if (userDetails == null) Asserts.fail("上传失败,未获取到当前用户");
+            if (username == null) Asserts.fail("上传失败,未获取到当前用户");
 
             LambdaQueryWrapper<KrBRegionProvince> provinceWrapper = new QueryWrapper<KrBRegionProvince>().lambda().eq(KrBRegionProvince::getProvinceId, provinceId);
             KrBRegionProvince province = krBRegionProvinceService.getOne(provinceWrapper);
             String provinceName = province.getName();
 
-            String username = userDetails.getUsername();
-            UmsAdmin umsAdmin = adminService.getAdminByUsername(username);
-            userId = umsAdmin.getId();
-            boolean canCover = AuthUtil.checkAccess(userDetails, AuthUtil.COVER);
+//            String username = userDetails.getUsername();
+//            UmsAdmin umsAdmin = adminService.getAdminByUsername(username);
+//            userId = umsAdmin.getId();
+//            boolean canCover = AuthUtil.checkAccess(userDetails, AuthUtil.COVER);
+//            username = UserContextHolder.getInstance().getUsername();
+            boolean canCover = ShiroAuthUtil.checkAccess(subject, ShiroAuthUtil.EDIT);
             // 查看是否为线路创建者
             QueryWrapper<KrBLine> wrapper = new QueryWrapper<>();
             wrapper.lambda().eq(KrBLine::getLineName, lineName);
@@ -98,13 +97,13 @@ public class AsyncHandler {
                 newLine.setServiceBegintime(new Date(serviceBegintimeTs));
                 newLine.setBeginTower(beginTower);
                 newLine.setEndTower(endTower);
-                newLine.setCreatorId(userId);
+                newLine.setCreatorName(username);
                 newLine.setCreateTime(new Date());
                 krBLineService.save(newLine);
                 line = newLine;
 
                 canCover = true;
-            } else if (line.getCreatorId().equals(userId)) {
+            } else if (line.getCreatorName().equals(username)) {
                 canCover = true;
             }
 
@@ -144,7 +143,7 @@ public class AsyncHandler {
                     } else if ("杆塔信息录入.xlsx".equals(SecDirectoryName) || "杆塔信息录入.xls".equals(SecDirectoryName)) {
                         List<TowerExcelModel> modelArrayList = EasyExcel.read(ais, TowerExcelModel.class, null).sheet().doReadSync();
                         KrBLine finalLine = line;
-                        Long finalUserId = userId;
+                        String finalUserName = username;
                         towerList = modelArrayList.stream().map(model -> {
                             KrBTower tower = new KrBTower();
                             tower.setLineId(finalLine.getId());
@@ -171,7 +170,7 @@ public class AsyncHandler {
                             tower.setServiceBegintime(model.getServiceBegintime());
                             tower.setRemark(model.getRemark());
                             tower.setHasFile(0);
-                            tower.setCreatorId(finalUserId);
+                            tower.setCreatorName(finalUserName);
                             tower.setCreateTime(new Date());
                             return tower;
                         }).collect(Collectors.toList());
@@ -209,7 +208,7 @@ public class AsyncHandler {
             KrBLineUploadLog lineUploadLog = new KrBLineUploadLog();
             lineUploadLog.setLineId(line.getId());
             lineUploadLog.setStatus(1);
-            lineUploadLog.setUploaderId(userId);
+            lineUploadLog.setUploaderName(username);
             lineUploadLog.setUploadTime(new Date());
             lineUploadLog.setWarnMsg(warnMsg.toString());
             lineUploadLogService.save(lineUploadLog);
@@ -220,7 +219,7 @@ public class AsyncHandler {
             List<KrBTower> oriTowerList = krBTowerService.list(towerWrapper);
             HashSet<KrBTower> towerSet = new HashSet<>(oriTowerList);
             towerSet.addAll(towerList);
-            krBTowerService.setHasFile(new ArrayList<>(towerSet), userDetails);
+            krBTowerService.setHasFile(new ArrayList<>(towerSet), subject);
 
             // 后续清楚缓存处理
             krBLineCacheService.delLineList();
@@ -229,12 +228,12 @@ public class AsyncHandler {
             log.error("上传文件抛出业务异常", e);
         } catch (Exception e) {
             log.error("上传文件抛出异常", e);
-            if (line != null && userId != null) {
+            if (line != null && username != null) {
                 // 存储上传记录
                 KrBLineUploadLog lineUploadLog = new KrBLineUploadLog();
                 lineUploadLog.setLineId(line.getId());
                 lineUploadLog.setStatus(0);
-                lineUploadLog.setUploaderId(userId);
+                lineUploadLog.setUploaderName(username);
                 lineUploadLog.setUploadTime(new Date());
                 lineUploadLog.setWarnMsg(e.getMessage());
                 lineUploadLogService.save(lineUploadLog);

+ 2 - 2
src/main/java/com/macro/mall/tiny/modules/business/service/impl/BDirectoryCacheServiceImpl.java

@@ -3,7 +3,7 @@ package com.macro.mall.tiny.modules.business.service.impl;
 import com.macro.mall.tiny.common.service.RedisService;
 import com.macro.mall.tiny.modules.business.model.BDirectory;
 import com.macro.mall.tiny.modules.business.service.BDirectoryCacheService;
-import com.macro.mall.tiny.security.util.AuthUtil;
+import com.macro.mall.tiny.security.util.ShiroAuthUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
@@ -25,7 +25,7 @@ public class BDirectoryCacheServiceImpl implements BDirectoryCacheService {
     private String REDIS_KEY_DIRECTORY;
 
     private String getKey() {
-        final boolean access = AuthUtil.checkAccess(AuthUtil.ACCESS);
+        final boolean access = ShiroAuthUtil.checkAccess(ShiroAuthUtil.ACCESS);
         return REDIS_DATABASE + ":" + REDIS_KEY_DIRECTORY + ":" + (access ? 1 : 0);
     }
 

+ 8 - 6
src/main/java/com/macro/mall/tiny/modules/business/service/impl/FileServiceImpl.java

@@ -1,10 +1,10 @@
 package com.macro.mall.tiny.modules.business.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.keystar.eprdms.core.utils.UserContextHolder;
 import com.macro.mall.tiny.common.exception.Asserts;
 import com.macro.mall.tiny.common.util.MyFileUtils;
 import com.macro.mall.tiny.config.UploadConfig;
-import com.macro.mall.tiny.domain.AdminUserDetails;
 import com.macro.mall.tiny.modules.business.enums.DirectoryEnum;
 import com.macro.mall.tiny.modules.business.mapper.KrBLineMapper;
 import com.macro.mall.tiny.modules.business.mapper.KrBTowerMapper;
@@ -13,11 +13,12 @@ import com.macro.mall.tiny.modules.business.service.BDirectoryCacheService;
 import com.macro.mall.tiny.modules.business.service.FileService;
 import com.macro.mall.tiny.modules.business.service.KrBLineCacheService;
 import com.macro.mall.tiny.modules.business.service.KrBTowerService;
-import com.macro.mall.tiny.security.util.AuthUtil;
+import com.macro.mall.tiny.security.util.ShiroAuthUtil;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.shiro.SecurityUtils;
+import org.apache.shiro.subject.Subject;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.scheduling.annotation.EnableAsync;
-import org.springframework.security.core.context.SecurityContextHolder;
 import org.springframework.stereotype.Service;
 import org.springframework.web.multipart.MultipartFile;
 
@@ -94,8 +95,9 @@ public class FileServiceImpl implements FileService {
         addChunk(name, chunk);
         if (isUploaded(name)) {
             removeKey(name);
-            AdminUserDetails userDetails = (AdminUserDetails) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
-            asyncHandler.handleDocument(provinceId, cityId, target, lineName, voltage, lineStatus, serviceBegintimeTs, beginTower, endTower, userDetails, charset);
+            String username = UserContextHolder.getInstance().getUsername();
+            Subject subject = SecurityUtils.getSubject();
+            asyncHandler.handleDocument(provinceId, cityId, target, lineName, voltage, lineStatus, serviceBegintimeTs, beginTower, endTower, username, subject, charset);
         }
     }
 
@@ -126,7 +128,7 @@ public class FileServiceImpl implements FileService {
 
     @Override
     public boolean deleteFile(String path) throws IOException {
-        boolean delete = AuthUtil.checkAccess(AuthUtil.DELETE);
+        boolean delete = ShiroAuthUtil.checkAccess(ShiroAuthUtil.EDIT);
         Path filePath = Paths.get(path);
         if (!delete) {
             Asserts.fail("您没有删除权限");

+ 2 - 2
src/main/java/com/macro/mall/tiny/modules/business/service/impl/KrBLineServiceImpl.java

@@ -15,7 +15,7 @@ import com.macro.mall.tiny.modules.business.model.KrBRegionProvince;
 import com.macro.mall.tiny.modules.business.model.KrBTower;
 import com.macro.mall.tiny.modules.business.service.KrBLineCacheService;
 import com.macro.mall.tiny.modules.business.service.KrBLineService;
-import com.macro.mall.tiny.security.util.AuthUtil;
+import com.macro.mall.tiny.security.util.ShiroAuthUtil;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -101,7 +101,7 @@ public class KrBLineServiceImpl extends ServiceImpl<KrBLineMapper, KrBLine> impl
 
     @Override
     public List<BFile> getFile(Long id) {
-        boolean auth = AuthUtil.checkAccess(AuthUtil.ACCESS);
+        boolean auth = ShiroAuthUtil.checkAccess(ShiroAuthUtil.ACCESS);
         KrBLine line = krBLineMapper.selectById(id);
         if (line == null) Asserts.fail("该线路不存在,id:" + id);
         LambdaQueryWrapper<KrBRegionProvince> provinceWrapper = new QueryWrapper<KrBRegionProvince>().lambda().eq(KrBRegionProvince::getProvinceId, line.getProvinceId());

+ 8 - 8
src/main/java/com/macro/mall/tiny/modules/business/service/impl/KrBTowerServiceImpl.java

@@ -7,7 +7,6 @@ import com.google.common.collect.Lists;
 import com.macro.mall.tiny.common.exception.Asserts;
 import com.macro.mall.tiny.common.util.MyFileUtils;
 import com.macro.mall.tiny.config.UploadConfig;
-import com.macro.mall.tiny.domain.AdminUserDetails;
 import com.macro.mall.tiny.modules.business.enums.DirectoryEnum;
 import com.macro.mall.tiny.modules.business.mapper.KrBLineMapper;
 import com.macro.mall.tiny.modules.business.mapper.KrBRegionProvinceMapper;
@@ -17,10 +16,11 @@ import com.macro.mall.tiny.modules.business.model.KrBLine;
 import com.macro.mall.tiny.modules.business.model.KrBRegionProvince;
 import com.macro.mall.tiny.modules.business.model.KrBTower;
 import com.macro.mall.tiny.modules.business.service.KrBTowerService;
-import com.macro.mall.tiny.security.util.AuthUtil;
+import com.macro.mall.tiny.security.util.ShiroAuthUtil;
 import org.apache.commons.lang3.StringUtils;
+import org.apache.shiro.SecurityUtils;
+import org.apache.shiro.subject.Subject;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.core.context.SecurityContextHolder;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;
@@ -57,7 +57,7 @@ public class KrBTowerServiceImpl extends ServiceImpl<KrBTowerMapper, KrBTower> i
 
     @Override
     public Map<String, List<BFile>> getFile(Long id) {
-        boolean auth = AuthUtil.checkAccess(AuthUtil.ACCESS);
+        boolean auth = ShiroAuthUtil.checkAccess(ShiroAuthUtil.ACCESS);
 
         HashMap<String, List<BFile>> resultMap = new HashMap<>();
 
@@ -119,17 +119,17 @@ public class KrBTowerServiceImpl extends ServiceImpl<KrBTowerMapper, KrBTower> i
 
     @Override
     public void setHasFile(List<KrBTower> towerList) {
-        AdminUserDetails userDetails = (AdminUserDetails) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
-        setHasFile(towerList, userDetails);
+        Subject subject = SecurityUtils.getSubject();
+        setHasFile(towerList, subject);
     }
 
     @Override
     @Transactional(propagation = Propagation.REQUIRED)
-    public void setHasFile(List<KrBTower> towerList, AdminUserDetails userDetails) {
+    public void setHasFile(List<KrBTower> towerList, Subject subject) {
         if (towerList == null || towerList.size() == 0) {
             return;
         }
-        boolean access = AuthUtil.checkAccess(userDetails, AuthUtil.ACCESS);
+        boolean access = ShiroAuthUtil.checkAccess(subject, ShiroAuthUtil.ACCESS);
         KrBTower firstTower = towerList.get(0);
         KrBLine line = krBLineMapper.selectById(firstTower.getLineId());
         LambdaQueryWrapper<KrBRegionProvince> provinceWrapper = new QueryWrapper<KrBRegionProvince>().lambda().eq(KrBRegionProvince::getProvinceId, line.getProvinceId());

+ 0 - 204
src/main/java/com/macro/mall/tiny/modules/ums/controller/UmsAdminController.java

@@ -1,204 +0,0 @@
-package com.macro.mall.tiny.modules.ums.controller;
-
-import cn.hutool.core.collection.CollUtil;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.macro.mall.tiny.common.api.CommonPage;
-import com.macro.mall.tiny.common.api.CommonResult;
-import com.macro.mall.tiny.modules.ums.dto.UmsAdminLoginParam;
-import com.macro.mall.tiny.modules.ums.dto.UmsAdminParam;
-import com.macro.mall.tiny.modules.ums.dto.UpdateAdminPasswordParam;
-import com.macro.mall.tiny.modules.ums.dto.UpdateAdminRoleParam;
-import com.macro.mall.tiny.modules.ums.model.UmsAdmin;
-import com.macro.mall.tiny.modules.ums.model.UmsRole;
-import com.macro.mall.tiny.modules.ums.service.UmsAdminService;
-import com.macro.mall.tiny.modules.ums.service.UmsRoleService;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.stereotype.Controller;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.*;
-
-import javax.servlet.http.HttpServletRequest;
-import java.security.Principal;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.stream.Collectors;
-
-/**
- * 后台用户管理
- * Created by macro on 2018/4/26.
- */
-@Controller
-@Api(tags = "UmsAdminController", description = "后台用户管理")
-@RequestMapping("/admin")
-public class UmsAdminController {
-    @Value("${jwt.tokenHeader}")
-    private String tokenHeader;
-    @Value("${jwt.tokenHead}")
-    private String tokenHead;
-    @Autowired
-    private UmsAdminService adminService;
-    @Autowired
-    private UmsRoleService roleService;
-
-    @ApiOperation(value = "用户注册")
-    @RequestMapping(value = "/register", method = RequestMethod.POST)
-    @ResponseBody
-    public CommonResult<UmsAdmin> register(@Validated @RequestBody UmsAdminParam umsAdminParam) {
-        UmsAdmin umsAdmin = adminService.register(umsAdminParam);
-        if (umsAdmin == null) {
-            return CommonResult.failed();
-        }
-        return CommonResult.success(umsAdmin);
-    }
-
-    @ApiOperation(value = "登录以后返回token")
-    @RequestMapping(value = "/login", method = RequestMethod.POST)
-    @ResponseBody
-    public CommonResult login(@Validated @RequestBody UmsAdminLoginParam umsAdminLoginParam) {
-        String token = adminService.login(umsAdminLoginParam.getUsername(), umsAdminLoginParam.getPassword());
-        if (token == null) {
-            return CommonResult.validateFailed("用户名或密码错误");
-        }
-        Map<String, String> tokenMap = new HashMap<>();
-        tokenMap.put("token", token);
-        tokenMap.put("tokenHead", tokenHead);
-        return CommonResult.success(tokenMap);
-    }
-
-    @ApiOperation(value = "刷新token")
-    @RequestMapping(value = "/refreshToken", method = RequestMethod.GET)
-    @ResponseBody
-    public CommonResult refreshToken(HttpServletRequest request) {
-        String token = request.getHeader(tokenHeader);
-        String refreshToken = adminService.refreshToken(token);
-        if (refreshToken == null) {
-            return CommonResult.failed("token已经过期!");
-        }
-        Map<String, String> tokenMap = new HashMap<>();
-        tokenMap.put("token", refreshToken);
-        tokenMap.put("tokenHead", tokenHead);
-        return CommonResult.success(tokenMap);
-    }
-
-    @ApiOperation(value = "获取当前登录用户信息")
-    @RequestMapping(value = "/info", method = RequestMethod.GET)
-    @ResponseBody
-    public CommonResult getAdminInfo(Principal principal) {
-        if (principal == null) {
-            return CommonResult.unauthorized(null);
-        }
-        String username = principal.getName();
-        UmsAdmin umsAdmin = adminService.getAdminByUsername(username);
-        Map<String, Object> data = new HashMap<>();
-        data.put("username", umsAdmin.getUsername());
-        data.put("menus", roleService.getMenuList(umsAdmin.getId()));
-        data.put("icon", umsAdmin.getIcon());
-        List<UmsRole> roleList = adminService.getRoleList(umsAdmin.getId());
-        if (CollUtil.isNotEmpty(roleList)) {
-            List<String> roles = roleList.stream().map(UmsRole::getName).collect(Collectors.toList());
-            data.put("roles", roles);
-        }
-        return CommonResult.success(data);
-    }
-
-    @ApiOperation(value = "登出功能")
-    @RequestMapping(value = "/logout", method = RequestMethod.POST)
-    @ResponseBody
-    public CommonResult logout() {
-        return CommonResult.success(null);
-    }
-
-    @ApiOperation("根据用户名或姓名分页获取用户列表")
-    @RequestMapping(value = "/list", method = RequestMethod.GET)
-    @ResponseBody
-    public CommonResult<CommonPage<UmsAdmin>> list(@RequestParam(value = "keyword", required = false) String keyword,
-                                                   @RequestParam(value = "pageSize", defaultValue = "5") Integer pageSize,
-                                                   @RequestParam(value = "pageNum", defaultValue = "1") Integer pageNum) {
-        Page<UmsAdmin> adminList = adminService.list(keyword, pageSize, pageNum);
-        return CommonResult.success(CommonPage.restPage(adminList));
-    }
-
-    @ApiOperation("获取指定用户信息")
-    @RequestMapping(value = "/{id}", method = RequestMethod.GET)
-    @ResponseBody
-    public CommonResult<UmsAdmin> getItem(@PathVariable Long id) {
-        UmsAdmin admin = adminService.getById(id);
-        return CommonResult.success(admin);
-    }
-
-    @ApiOperation("修改指定用户信息")
-    @RequestMapping(value = "/update/{id}", method = RequestMethod.POST)
-    @ResponseBody
-    public CommonResult update(@PathVariable Long id, @RequestBody UmsAdmin admin) {
-        boolean success = adminService.update(id, admin);
-        if (success) {
-            return CommonResult.success(null);
-        }
-        return CommonResult.failed();
-    }
-
-    @ApiOperation("修改指定用户密码")
-    @RequestMapping(value = "/updatePassword", method = RequestMethod.POST)
-    @ResponseBody
-    public CommonResult updatePassword(@Validated @RequestBody UpdateAdminPasswordParam updatePasswordParam) {
-        int status = adminService.updatePassword(updatePasswordParam);
-        if (status > 0) {
-            return CommonResult.success(status);
-        } else if (status == -1) {
-            return CommonResult.failed("提交参数不合法");
-        } else if (status == -2) {
-            return CommonResult.failed("找不到该用户");
-        } else if (status == -3) {
-            return CommonResult.failed("旧密码错误");
-        } else {
-            return CommonResult.failed();
-        }
-    }
-
-    @ApiOperation("删除指定用户信息")
-    @RequestMapping(value = "/delete/{id}", method = RequestMethod.POST)
-    @ResponseBody
-    public CommonResult delete(@PathVariable Long id) {
-        boolean success = adminService.delete(id);
-        if (success) {
-            return CommonResult.success(null);
-        }
-        return CommonResult.failed();
-    }
-
-    @ApiOperation("修改帐号状态")
-    @RequestMapping(value = "/updateStatus/{id}", method = RequestMethod.POST)
-    @ResponseBody
-    public CommonResult updateStatus(@PathVariable Long id, @RequestParam(value = "status") Integer status) {
-        UmsAdmin umsAdmin = new UmsAdmin();
-        umsAdmin.setStatus(status);
-        boolean success = adminService.update(id, umsAdmin);
-        if (success) {
-            return CommonResult.success(null);
-        }
-        return CommonResult.failed();
-    }
-
-    @ApiOperation("给用户分配角色")
-    @RequestMapping(value = "/role/update", method = RequestMethod.POST)
-    @ResponseBody
-    public CommonResult updateRole(@RequestBody UpdateAdminRoleParam updateAdminRoleParam) {
-        int count = adminService.updateRole(updateAdminRoleParam.getAdminId(), updateAdminRoleParam.getRoleIds());
-        if (count >= 0) {
-            return CommonResult.success(count);
-        }
-        return CommonResult.failed();
-    }
-
-    @ApiOperation("获取指定用户的角色")
-    @RequestMapping(value = "/role/{adminId}", method = RequestMethod.GET)
-    @ResponseBody
-    public CommonResult<List<UmsRole>> getRoleList(@PathVariable Long adminId) {
-        List<UmsRole> roleList = adminService.getRoleList(adminId);
-        return CommonResult.success(roleList);
-    }
-}

+ 0 - 103
src/main/java/com/macro/mall/tiny/modules/ums/controller/UmsMenuController.java

@@ -1,103 +0,0 @@
-//package com.macro.mall.tiny.modules.ums.controller;
-//
-//import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-//import com.macro.mall.tiny.common.api.CommonPage;
-//import com.macro.mall.tiny.common.api.CommonResult;
-//import com.macro.mall.tiny.modules.ums.dto.UmsMenuNode;
-//import com.macro.mall.tiny.modules.ums.model.UmsMenu;
-//import com.macro.mall.tiny.modules.ums.service.UmsMenuService;
-//import io.swagger.annotations.Api;
-//import io.swagger.annotations.ApiOperation;
-//import org.springframework.beans.factory.annotation.Autowired;
-//import org.springframework.stereotype.Controller;
-//import org.springframework.web.bind.annotation.*;
-//
-//import java.util.List;
-//
-///**
-// * 后台菜单管理Controller
-// * Created by macro on 2020/2/4.
-// */
-//@Controller
-//@Api(tags = "UmsMenuController", description = "后台菜单管理")
-//@RequestMapping("/menu")
-//public class UmsMenuController {
-//
-//    @Autowired
-//    private UmsMenuService menuService;
-//
-//    @ApiOperation("添加后台菜单")
-//    @RequestMapping(value = "/create", method = RequestMethod.POST)
-//    @ResponseBody
-//    public CommonResult create(@RequestBody UmsMenu umsMenu) {
-//        boolean success = menuService.create(umsMenu);
-//        if (success) {
-//            return CommonResult.success(null);
-//        } else {
-//            return CommonResult.failed();
-//        }
-//    }
-//
-//    @ApiOperation("修改后台菜单")
-//    @RequestMapping(value = "/update/{id}", method = RequestMethod.POST)
-//    @ResponseBody
-//    public CommonResult update(@PathVariable Long id,
-//                               @RequestBody UmsMenu umsMenu) {
-//        boolean success = menuService.update(id, umsMenu);
-//        if (success) {
-//            return CommonResult.success(null);
-//        } else {
-//            return CommonResult.failed();
-//        }
-//    }
-//
-//    @ApiOperation("根据ID获取菜单详情")
-//    @RequestMapping(value = "/{id}", method = RequestMethod.GET)
-//    @ResponseBody
-//    public CommonResult<UmsMenu> getItem(@PathVariable Long id) {
-//        UmsMenu umsMenu = menuService.getById(id);
-//        return CommonResult.success(umsMenu);
-//    }
-//
-//    @ApiOperation("根据ID删除后台菜单")
-//    @RequestMapping(value = "/delete/{id}", method = RequestMethod.POST)
-//    @ResponseBody
-//    public CommonResult delete(@PathVariable Long id) {
-//        boolean success = menuService.removeById(id);
-//        if (success) {
-//            return CommonResult.success(null);
-//        } else {
-//            return CommonResult.failed();
-//        }
-//    }
-//
-//    @ApiOperation("分页查询后台菜单")
-//    @RequestMapping(value = "/list/{parentId}", method = RequestMethod.GET)
-//    @ResponseBody
-//    public CommonResult<CommonPage<UmsMenu>> list(@PathVariable Long parentId,
-//                                                  @RequestParam(value = "pageSize", defaultValue = "5") Integer pageSize,
-//                                                  @RequestParam(value = "pageNum", defaultValue = "1") Integer pageNum) {
-//        Page<UmsMenu> menuList = menuService.list(parentId, pageSize, pageNum);
-//        return CommonResult.success(CommonPage.restPage(menuList));
-//    }
-//
-//    @ApiOperation("树形结构返回所有菜单列表")
-//    @RequestMapping(value = "/treeList", method = RequestMethod.GET)
-//    @ResponseBody
-//    public CommonResult<List<UmsMenuNode>> treeList() {
-//        List<UmsMenuNode> list = menuService.treeList();
-//        return CommonResult.success(list);
-//    }
-//
-//    @ApiOperation("修改菜单显示状态")
-//    @RequestMapping(value = "/updateHidden/{id}", method = RequestMethod.POST)
-//    @ResponseBody
-//    public CommonResult updateHidden(@PathVariable Long id, @RequestParam("hidden") Integer hidden) {
-//        boolean success = menuService.updateHidden(id, hidden);
-//        if (success) {
-//            return CommonResult.success(null);
-//        } else {
-//            return CommonResult.failed();
-//        }
-//    }
-//}

+ 0 - 70
src/main/java/com/macro/mall/tiny/modules/ums/controller/UmsResourceCategoryController.java

@@ -1,70 +0,0 @@
-//package com.macro.mall.tiny.modules.ums.controller;
-//
-//import com.macro.mall.tiny.common.api.CommonResult;
-//import com.macro.mall.tiny.modules.ums.model.UmsResourceCategory;
-//import com.macro.mall.tiny.modules.ums.service.UmsResourceCategoryService;
-//import io.swagger.annotations.Api;
-//import io.swagger.annotations.ApiOperation;
-//import org.springframework.beans.factory.annotation.Autowired;
-//import org.springframework.stereotype.Controller;
-//import org.springframework.web.bind.annotation.*;
-//
-//import java.util.List;
-//
-///**
-// * 后台资源分类管理Controller
-// * Created by macro on 2020/2/5.
-// */
-//@Controller
-//@Api(tags = "UmsResourceCategoryController", description = "后台资源分类管理")
-//@RequestMapping("/resourceCategory")
-//public class UmsResourceCategoryController {
-//    @Autowired
-//    private UmsResourceCategoryService resourceCategoryService;
-//
-//    @ApiOperation("查询所有后台资源分类")
-//    @RequestMapping(value = "/listAll", method = RequestMethod.GET)
-//    @ResponseBody
-//    public CommonResult<List<UmsResourceCategory>> listAll() {
-//        List<UmsResourceCategory> resourceList = resourceCategoryService.listAll();
-//        return CommonResult.success(resourceList);
-//    }
-//
-//    @ApiOperation("添加后台资源分类")
-//    @RequestMapping(value = "/create", method = RequestMethod.POST)
-//    @ResponseBody
-//    public CommonResult create(@RequestBody UmsResourceCategory umsResourceCategory) {
-//        boolean success = resourceCategoryService.create(umsResourceCategory);
-//        if (success) {
-//            return CommonResult.success(null);
-//        } else {
-//            return CommonResult.failed();
-//        }
-//    }
-//
-//    @ApiOperation("修改后台资源分类")
-//    @RequestMapping(value = "/update/{id}", method = RequestMethod.POST)
-//    @ResponseBody
-//    public CommonResult update(@PathVariable Long id,
-//                               @RequestBody UmsResourceCategory umsResourceCategory) {
-//        umsResourceCategory.setId(id);
-//        boolean success = resourceCategoryService.updateById(umsResourceCategory);
-//        if (success) {
-//            return CommonResult.success(null);
-//        } else {
-//            return CommonResult.failed();
-//        }
-//    }
-//
-//    @ApiOperation("根据ID删除后台资源")
-//    @RequestMapping(value = "/delete/{id}", method = RequestMethod.POST)
-//    @ResponseBody
-//    public CommonResult delete(@PathVariable Long id) {
-//        boolean success = resourceCategoryService.removeById(id);
-//        if (success) {
-//            return CommonResult.success(null);
-//        } else {
-//            return CommonResult.failed();
-//        }
-//    }
-//}

+ 0 - 98
src/main/java/com/macro/mall/tiny/modules/ums/controller/UmsResourceController.java

@@ -1,98 +0,0 @@
-package com.macro.mall.tiny.modules.ums.controller;
-
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.macro.mall.tiny.common.api.CommonPage;
-import com.macro.mall.tiny.common.api.CommonResult;
-import com.macro.mall.tiny.modules.ums.model.UmsResource;
-import com.macro.mall.tiny.modules.ums.service.UmsResourceService;
-import com.macro.mall.tiny.security.component.DynamicSecurityMetadataSource;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.*;
-
-import java.util.List;
-
-/**
- * 后台资源管理Controller
- * Created by macro on 2020/2/4.
- */
-@Controller
-@Api(tags = "UmsResourceController", description = "后台资源管理")
-@RequestMapping("/resource")
-public class UmsResourceController {
-
-    @Autowired
-    private UmsResourceService resourceService;
-    @Autowired
-    private DynamicSecurityMetadataSource dynamicSecurityMetadataSource;
-
-    @ApiOperation("添加后台资源")
-    @RequestMapping(value = "/create", method = RequestMethod.POST)
-    @ResponseBody
-    public CommonResult create(@RequestBody UmsResource umsResource) {
-        boolean success = resourceService.create(umsResource);
-        dynamicSecurityMetadataSource.clearDataSource();
-        if (success) {
-            return CommonResult.success(null);
-        } else {
-            return CommonResult.failed();
-        }
-    }
-
-    @ApiOperation("修改后台资源")
-    @RequestMapping(value = "/update/{id}", method = RequestMethod.POST)
-    @ResponseBody
-    public CommonResult update(@PathVariable Long id,
-                               @RequestBody UmsResource umsResource) {
-        boolean success = resourceService.update(id, umsResource);
-        dynamicSecurityMetadataSource.clearDataSource();
-        if (success) {
-            return CommonResult.success(null);
-        } else {
-            return CommonResult.failed();
-        }
-    }
-
-    @ApiOperation("根据ID获取资源详情")
-    @RequestMapping(value = "/{id}", method = RequestMethod.GET)
-    @ResponseBody
-    public CommonResult<UmsResource> getItem(@PathVariable Long id) {
-        UmsResource umsResource = resourceService.getById(id);
-        return CommonResult.success(umsResource);
-    }
-
-    @ApiOperation("根据ID删除后台资源")
-    @RequestMapping(value = "/delete/{id}", method = RequestMethod.POST)
-    @ResponseBody
-    public CommonResult delete(@PathVariable Long id) {
-        boolean success = resourceService.delete(id);
-        dynamicSecurityMetadataSource.clearDataSource();
-        if (success) {
-            return CommonResult.success(null);
-        } else {
-            return CommonResult.failed();
-        }
-    }
-
-    @ApiOperation("分页模糊查询后台资源")
-    @RequestMapping(value = "/list", method = RequestMethod.GET)
-    @ResponseBody
-    public CommonResult<CommonPage<UmsResource>> list(@RequestParam(required = false) Long categoryId,
-                                                      @RequestParam(required = false) String nameKeyword,
-                                                      @RequestParam(required = false) String urlKeyword,
-                                                      @RequestParam(value = "pageSize", defaultValue = "5") Integer pageSize,
-                                                      @RequestParam(value = "pageNum", defaultValue = "1") Integer pageNum) {
-        Page<UmsResource> resourceList = resourceService.list(categoryId,nameKeyword, urlKeyword, pageSize, pageNum);
-        return CommonResult.success(CommonPage.restPage(resourceList));
-    }
-
-    @ApiOperation("查询所有后台资源")
-    @RequestMapping(value = "/listAll", method = RequestMethod.GET)
-    @ResponseBody
-    public CommonResult<List<UmsResource>> listAll() {
-        List<UmsResource> resourceList = resourceService.list();
-        return CommonResult.success(resourceList);
-    }
-}

+ 0 - 128
src/main/java/com/macro/mall/tiny/modules/ums/controller/UmsRoleController.java

@@ -1,128 +0,0 @@
-package com.macro.mall.tiny.modules.ums.controller;
-
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.macro.mall.tiny.common.api.CommonPage;
-import com.macro.mall.tiny.common.api.CommonResult;
-import com.macro.mall.tiny.modules.ums.model.UmsMenu;
-import com.macro.mall.tiny.modules.ums.model.UmsResource;
-import com.macro.mall.tiny.modules.ums.model.UmsRole;
-import com.macro.mall.tiny.modules.ums.service.UmsRoleService;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.*;
-
-import java.util.List;
-
-/**
- * 后台用户角色管理
- * Created by macro on 2018/9/30.
- */
-@Controller
-@Api(tags = "UmsRoleController", description = "后台用户角色管理")
-@RequestMapping("/role")
-public class UmsRoleController {
-    @Autowired
-    private UmsRoleService roleService;
-
-    @ApiOperation("添加角色")
-    @RequestMapping(value = "/create", method = RequestMethod.POST)
-    @ResponseBody
-    public CommonResult create(@RequestBody UmsRole role) {
-        boolean success = roleService.create(role);
-        if (success) {
-            return CommonResult.success(null);
-        }
-        return CommonResult.failed();
-    }
-
-    @ApiOperation("修改角色")
-    @RequestMapping(value = "/update/{id}", method = RequestMethod.POST)
-    @ResponseBody
-    public CommonResult update(@PathVariable Long id, @RequestBody UmsRole role) {
-        role.setId(id);
-        boolean success = roleService.updateById(role);
-        if (success) {
-            return CommonResult.success(null);
-        }
-        return CommonResult.failed();
-    }
-
-    @ApiOperation("批量删除角色")
-    @RequestMapping(value = "/delete", method = RequestMethod.POST)
-    @ResponseBody
-    public CommonResult delete(@RequestParam("ids") List<Long> ids) {
-        boolean success = roleService.delete(ids);
-        if (success) {
-            return CommonResult.success(null);
-        }
-        return CommonResult.failed();
-    }
-
-
-    @ApiOperation("获取所有角色")
-    @RequestMapping(value = "/listAll", method = RequestMethod.GET)
-    @ResponseBody
-    public CommonResult<List<UmsRole>> listAll() {
-        List<UmsRole> roleList = roleService.list();
-        return CommonResult.success(roleList);
-    }
-
-    @ApiOperation("根据角色名称分页获取角色列表")
-    @RequestMapping(value = "/list", method = RequestMethod.GET)
-    @ResponseBody
-    public CommonResult<CommonPage<UmsRole>> list(@RequestParam(value = "keyword", required = false) String keyword,
-                                                  @RequestParam(value = "pageSize", defaultValue = "5") Integer pageSize,
-                                                  @RequestParam(value = "pageNum", defaultValue = "1") Integer pageNum) {
-        Page<UmsRole> roleList = roleService.list(keyword, pageSize, pageNum);
-        return CommonResult.success(CommonPage.restPage(roleList));
-    }
-
-    @ApiOperation("修改角色状态")
-    @RequestMapping(value = "/updateStatus/{id}", method = RequestMethod.POST)
-    @ResponseBody
-    public CommonResult updateStatus(@PathVariable Long id, @RequestParam(value = "status") Integer status) {
-        UmsRole umsRole = new UmsRole();
-        umsRole.setId(id);
-        umsRole.setStatus(status);
-        boolean success = roleService.updateById(umsRole);
-        if (success) {
-            return CommonResult.success(null);
-        }
-        return CommonResult.failed();
-    }
-
-    /*@ApiOperation("获取角色相关菜单")
-    @RequestMapping(value = "/listMenu/{roleId}", method = RequestMethod.GET)
-    @ResponseBody
-    public CommonResult<List<UmsMenu>> listMenu(@PathVariable Long roleId) {
-        List<UmsMenu> roleList = roleService.listMenu(roleId);
-        return CommonResult.success(roleList);
-    }*/
-
-    @ApiOperation("获取角色相关资源")
-    @RequestMapping(value = "/listResource/{roleId}", method = RequestMethod.GET)
-    @ResponseBody
-    public CommonResult<List<UmsResource>> listResource(@PathVariable Long roleId) {
-        List<UmsResource> roleList = roleService.listResource(roleId);
-        return CommonResult.success(roleList);
-    }
-
-    /*@ApiOperation("给角色分配菜单")
-    @RequestMapping(value = "/allocMenu", method = RequestMethod.POST)
-    @ResponseBody
-    public CommonResult allocMenu(@RequestParam Long roleId, @RequestParam List<Long> menuIds) {
-        int count = roleService.allocMenu(roleId, menuIds);
-        return CommonResult.success(count);
-    }*/
-
-    @ApiOperation("给角色分配资源")
-    @RequestMapping(value = "/allocResource", method = RequestMethod.POST)
-    @ResponseBody
-    public CommonResult allocResource(@RequestParam Long roleId, @RequestParam List<Long> resourceIds) {
-        int count = roleService.allocResource(roleId, resourceIds);
-        return CommonResult.success(count);
-    }
-
-}

+ 0 - 23
src/main/java/com/macro/mall/tiny/modules/ums/dto/UmsAdminLoginParam.java

@@ -1,23 +0,0 @@
-package com.macro.mall.tiny.modules.ums.dto;
-
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-
-import javax.validation.constraints.NotEmpty;
-
-/**
- * 用户登录参数
- * Created by macro on 2018/4/26.
- */
-@Data
-@EqualsAndHashCode(callSuper = false)
-public class UmsAdminLoginParam {
-    @NotEmpty
-    @ApiModelProperty(value = "用户名", required = true)
-    private String username;
-
-    @NotEmpty
-    @ApiModelProperty(value = "密码", required = true)
-    private String password;
-}

+ 0 - 32
src/main/java/com/macro/mall/tiny/modules/ums/dto/UmsAdminParam.java

@@ -1,32 +0,0 @@
-package com.macro.mall.tiny.modules.ums.dto;
-
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Getter;
-import lombok.Setter;
-
-import javax.validation.constraints.Email;
-import javax.validation.constraints.NotEmpty;
-
-/**
- * 用户登录参数
- * Created by macro on 2018/4/26.
- */
-@Getter
-@Setter
-public class UmsAdminParam {
-    @NotEmpty
-    @ApiModelProperty(value = "用户名", required = true)
-    private String username;
-    @NotEmpty
-    @ApiModelProperty(value = "密码", required = true)
-    private String password;
-    @ApiModelProperty(value = "用户头像")
-    private String icon;
-    @Email
-    @ApiModelProperty(value = "邮箱")
-    private String email;
-    @ApiModelProperty(value = "用户昵称")
-    private String nickName;
-    @ApiModelProperty(value = "备注")
-    private String note;
-}

+ 0 - 19
src/main/java/com/macro/mall/tiny/modules/ums/dto/UmsMenuNode.java

@@ -1,19 +0,0 @@
-package com.macro.mall.tiny.modules.ums.dto;
-
-import com.macro.mall.tiny.modules.ums.model.UmsMenu;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Getter;
-import lombok.Setter;
-
-import java.util.List;
-
-/**
- * 后台菜单节点封装
- * Created by macro on 2020/2/4.
- */
-@Getter
-@Setter
-public class UmsMenuNode extends UmsMenu {
-    @ApiModelProperty(value = "子级菜单")
-    private List<UmsMenuNode> children;
-}

+ 0 - 25
src/main/java/com/macro/mall/tiny/modules/ums/dto/UpdateAdminPasswordParam.java

@@ -1,25 +0,0 @@
-package com.macro.mall.tiny.modules.ums.dto;
-
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Getter;
-import lombok.Setter;
-
-import javax.validation.constraints.NotEmpty;
-
-/**
- * 修改用户名密码参数
- * Created by macro on 2019/10/9.
- */
-@Getter
-@Setter
-public class UpdateAdminPasswordParam {
-    @NotEmpty
-    @ApiModelProperty(value = "用户名", required = true)
-    private String username;
-    @NotEmpty
-    @ApiModelProperty(value = "旧密码", required = true)
-    private String oldPassword;
-    @NotEmpty
-    @ApiModelProperty(value = "新密码", required = true)
-    private String newPassword;
-}

+ 0 - 26
src/main/java/com/macro/mall/tiny/modules/ums/dto/UpdateAdminRoleParam.java

@@ -1,26 +0,0 @@
-package com.macro.mall.tiny.modules.ums.dto;
-
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Getter;
-import lombok.Setter;
-
-import javax.validation.constraints.NotEmpty;
-import javax.validation.constraints.NotNull;
-import java.util.List;
-
-/**
- * @author gjs
- * @description
- * @date 2021/4/17 11:28
- */
-@Getter
-@Setter
-public class UpdateAdminRoleParam {
-    @NotNull
-    @ApiModelProperty(value = "用户ID", required = true)
-    private Long adminId;
-
-    @NotEmpty
-    @ApiModelProperty(value = "赋予角色列表", required = true)
-    private List<Long> roleIds;
-}

+ 0 - 16
src/main/java/com/macro/mall/tiny/modules/ums/mapper/UmsAdminLoginLogMapper.java

@@ -1,16 +0,0 @@
-package com.macro.mall.tiny.modules.ums.mapper;
-
-import com.macro.mall.tiny.modules.ums.model.UmsAdminLoginLog;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-
-/**
- * <p>
- * 后台用户登录日志表 Mapper 接口
- * </p>
- *
- * @author macro
- * @since 2020-08-21
- */
-public interface UmsAdminLoginLogMapper extends BaseMapper<UmsAdminLoginLog> {
-
-}

+ 0 - 28
src/main/java/com/macro/mall/tiny/modules/ums/mapper/UmsAdminMapper.java

@@ -1,28 +0,0 @@
-package com.macro.mall.tiny.modules.ums.mapper;
-
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.macro.mall.tiny.modules.ums.model.UmsAdmin;
-import org.apache.ibatis.annotations.Param;
-
-import java.util.List;
-
-/**
- * <p>
- * 后台用户表 Mapper 接口
- * </p>
- *
- * @author macro
- * @since 2020-08-21
- */
-public interface UmsAdminMapper extends BaseMapper<UmsAdmin> {
-
-    /**
-     * 获取资源相关用户ID列表
-     */
-    List<Long> getAdminIdList(@Param("resourceId") Long resourceId);
-
-    Page<UmsAdmin> findListByKey(Page<UmsAdmin> page, @Param("keyword") String keyword);
-
-}

+ 0 - 21
src/main/java/com/macro/mall/tiny/modules/ums/mapper/UmsAdminRoleRelationMapper.java

@@ -1,21 +0,0 @@
-package com.macro.mall.tiny.modules.ums.mapper;
-
-import com.macro.mall.tiny.modules.ums.model.UmsAdminRoleRelation;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.macro.mall.tiny.modules.ums.model.UmsResource;
-import com.macro.mall.tiny.modules.ums.model.UmsRole;
-import org.apache.ibatis.annotations.Param;
-
-import java.util.List;
-
-/**
- * <p>
- * 后台用户和角色关系表 Mapper 接口
- * </p>
- *
- * @author macro
- * @since 2020-08-21
- */
-public interface UmsAdminRoleRelationMapper extends BaseMapper<UmsAdminRoleRelation> {
-
-}

+ 0 - 28
src/main/java/com/macro/mall/tiny/modules/ums/mapper/UmsMenuMapper.java

@@ -1,28 +0,0 @@
-package com.macro.mall.tiny.modules.ums.mapper;
-
-import com.macro.mall.tiny.modules.ums.model.UmsMenu;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import org.apache.ibatis.annotations.Param;
-
-import java.util.List;
-
-/**
- * <p>
- * 后台菜单表 Mapper 接口
- * </p>
- *
- * @author macro
- * @since 2020-08-21
- */
-public interface UmsMenuMapper extends BaseMapper<UmsMenu> {
-
-    /**
-     * 根据后台用户ID获取菜单
-     */
-    List<UmsMenu> getMenuList(@Param("adminId") Long adminId);
-    /**
-     * 根据角色ID获取菜单
-     */
-    List<UmsMenu> getMenuListByRoleId(@Param("roleId") Long roleId);
-
-}

+ 0 - 16
src/main/java/com/macro/mall/tiny/modules/ums/mapper/UmsResourceCategoryMapper.java

@@ -1,16 +0,0 @@
-package com.macro.mall.tiny.modules.ums.mapper;
-
-import com.macro.mall.tiny.modules.ums.model.UmsResourceCategory;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-
-/**
- * <p>
- * 资源分类表 Mapper 接口
- * </p>
- *
- * @author macro
- * @since 2020-08-21
- */
-public interface UmsResourceCategoryMapper extends BaseMapper<UmsResourceCategory> {
-
-}

+ 0 - 29
src/main/java/com/macro/mall/tiny/modules/ums/mapper/UmsResourceMapper.java

@@ -1,29 +0,0 @@
-package com.macro.mall.tiny.modules.ums.mapper;
-
-import com.macro.mall.tiny.modules.ums.model.UmsResource;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import org.apache.ibatis.annotations.Param;
-
-import java.util.List;
-
-/**
- * <p>
- * 后台资源表 Mapper 接口
- * </p>
- *
- * @author macro
- * @since 2020-08-21
- */
-public interface UmsResourceMapper extends BaseMapper<UmsResource> {
-
-    /**
-     * 获取用户所有可访问资源
-     */
-    List<UmsResource> getResourceList(@Param("adminId") Long adminId);
-
-    /**
-     * 根据角色ID获取资源
-     */
-    List<UmsResource> getResourceListByRoleId(@Param("roleId") Long roleId);
-
-}

+ 0 - 24
src/main/java/com/macro/mall/tiny/modules/ums/mapper/UmsRoleMapper.java

@@ -1,24 +0,0 @@
-package com.macro.mall.tiny.modules.ums.mapper;
-
-import com.macro.mall.tiny.modules.ums.model.UmsRole;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import org.apache.ibatis.annotations.Param;
-
-import java.util.List;
-
-/**
- * <p>
- * 后台用户角色表 Mapper 接口
- * </p>
- *
- * @author macro
- * @since 2020-08-21
- */
-public interface UmsRoleMapper extends BaseMapper<UmsRole> {
-
-    /**
-     * 获取用户所有角色
-     */
-    List<UmsRole> getRoleList(@Param("adminId") Long adminId);
-
-}

+ 0 - 16
src/main/java/com/macro/mall/tiny/modules/ums/mapper/UmsRoleMenuRelationMapper.java

@@ -1,16 +0,0 @@
-package com.macro.mall.tiny.modules.ums.mapper;
-
-import com.macro.mall.tiny.modules.ums.model.UmsRoleMenuRelation;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-
-/**
- * <p>
- * 后台角色菜单关系表 Mapper 接口
- * </p>
- *
- * @author macro
- * @since 2020-08-21
- */
-public interface UmsRoleMenuRelationMapper extends BaseMapper<UmsRoleMenuRelation> {
-
-}

+ 0 - 19
src/main/java/com/macro/mall/tiny/modules/ums/mapper/UmsRoleResourceRelationMapper.java

@@ -1,19 +0,0 @@
-package com.macro.mall.tiny.modules.ums.mapper;
-
-import com.macro.mall.tiny.modules.ums.model.UmsRoleResourceRelation;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import org.apache.ibatis.annotations.Param;
-
-import java.util.List;
-
-/**
- * <p>
- * 后台角色资源关系表 Mapper 接口
- * </p>
- *
- * @author macro
- * @since 2020-08-21
- */
-public interface UmsRoleResourceRelationMapper extends BaseMapper<UmsRoleResourceRelation> {
-
-}

+ 0 - 67
src/main/java/com/macro/mall/tiny/modules/ums/model/UmsAdmin.java

@@ -1,67 +0,0 @@
-package com.macro.mall.tiny.modules.ums.model;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import com.fasterxml.jackson.annotation.JsonFormat;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-
-import java.io.Serializable;
-import java.util.Date;
-import java.util.List;
-
-/**
- * <p>
- * 后台用户表
- * </p>
- *
- * @author macro
- * @since 2020-08-21
- */
-@Data
-@EqualsAndHashCode(callSuper = false)
-@TableName("ums_admin")
-@ApiModel(value="UmsAdmin对象", description="后台用户表")
-public class UmsAdmin implements Serializable {
-
-    private static final long serialVersionUID=1L;
-
-    @TableId(value = "id", type = IdType.AUTO)
-    private Long id;
-
-    private String username;
-
-    private String password;
-
-    @ApiModelProperty(value = "头像")
-    private String icon;
-
-    @ApiModelProperty(value = "邮箱")
-    private String email;
-
-    @ApiModelProperty(value = "昵称")
-    private String nickName;
-
-    @ApiModelProperty(value = "备注信息")
-    private String note;
-
-    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
-    @ApiModelProperty(value = "创建时间")
-    private Date createTime;
-
-    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
-    @ApiModelProperty(value = "最后登录时间")
-    private Date loginTime;
-
-    @ApiModelProperty(value = "帐号启用状态:0->禁用;1->启用")
-    private Integer status;
-
-    @ApiModelProperty(value = "角色列表")
-    @TableField(exist = false)
-    private List<UmsRole> roleList;
-
-}

+ 0 - 47
src/main/java/com/macro/mall/tiny/modules/ums/model/UmsAdminLoginLog.java

@@ -1,47 +0,0 @@
-package com.macro.mall.tiny.modules.ums.model;
-
-import com.baomidou.mybatisplus.annotation.TableName;
-import com.baomidou.mybatisplus.annotation.IdType;
-import java.util.Date;
-import com.baomidou.mybatisplus.annotation.TableId;
-import java.io.Serializable;
-
-import com.fasterxml.jackson.annotation.JsonFormat;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-
-/**
- * <p>
- * 后台用户登录日志表
- * </p>
- *
- * @author macro
- * @since 2020-08-21
- */
-@Data
-@EqualsAndHashCode(callSuper = false)
-@TableName("ums_admin_login_log")
-@ApiModel(value="UmsAdminLoginLog对象", description="后台用户登录日志表")
-public class UmsAdminLoginLog implements Serializable {
-
-    private static final long serialVersionUID=1L;
-
-    @TableId(value = "id", type = IdType.AUTO)
-    private Long id;
-
-    private Long adminId;
-
-    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
-    private Date createTime;
-
-    private String ip;
-
-    private String address;
-
-    @ApiModelProperty(value = "浏览器登录类型")
-    private String userAgent;
-
-
-}

+ 0 - 36
src/main/java/com/macro/mall/tiny/modules/ums/model/UmsAdminRoleRelation.java

@@ -1,36 +0,0 @@
-package com.macro.mall.tiny.modules.ums.model;
-
-import com.baomidou.mybatisplus.annotation.TableName;
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import java.io.Serializable;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-
-/**
- * <p>
- * 后台用户和角色关系表
- * </p>
- *
- * @author macro
- * @since 2020-08-21
- */
-@Data
-@EqualsAndHashCode(callSuper = false)
-@TableName("ums_admin_role_relation")
-@ApiModel(value="UmsAdminRoleRelation对象", description="后台用户和角色关系表")
-public class UmsAdminRoleRelation implements Serializable {
-
-    private static final long serialVersionUID=1L;
-
-    @TableId(value = "id", type = IdType.AUTO)
-    private Long id;
-
-    private Long adminId;
-
-    private Long roleId;
-
-
-}

+ 0 - 60
src/main/java/com/macro/mall/tiny/modules/ums/model/UmsMenu.java

@@ -1,60 +0,0 @@
-package com.macro.mall.tiny.modules.ums.model;
-
-import com.baomidou.mybatisplus.annotation.TableName;
-import com.baomidou.mybatisplus.annotation.IdType;
-import java.util.Date;
-import com.baomidou.mybatisplus.annotation.TableId;
-import java.io.Serializable;
-
-import com.fasterxml.jackson.annotation.JsonFormat;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-
-/**
- * <p>
- * 后台菜单表
- * </p>
- *
- * @author macro
- * @since 2020-08-21
- */
-@Data
-@EqualsAndHashCode(callSuper = false)
-@TableName("ums_menu")
-@ApiModel(value="UmsMenu对象", description="后台菜单表")
-public class UmsMenu implements Serializable {
-
-    private static final long serialVersionUID=1L;
-
-    @TableId(value = "id", type = IdType.AUTO)
-    private Long id;
-
-    @ApiModelProperty(value = "父级ID")
-    private Long parentId;
-
-    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
-    @ApiModelProperty(value = "创建时间")
-    private Date createTime;
-
-    @ApiModelProperty(value = "菜单名称")
-    private String title;
-
-    @ApiModelProperty(value = "菜单级数")
-    private Integer level;
-
-    @ApiModelProperty(value = "菜单排序")
-    private Integer sort;
-
-    @ApiModelProperty(value = "前端名称")
-    private String name;
-
-    @ApiModelProperty(value = "前端图标")
-    private String icon;
-
-    @ApiModelProperty(value = "前端隐藏")
-    private Integer hidden;
-
-
-}

+ 0 - 51
src/main/java/com/macro/mall/tiny/modules/ums/model/UmsResource.java

@@ -1,51 +0,0 @@
-package com.macro.mall.tiny.modules.ums.model;
-
-import com.baomidou.mybatisplus.annotation.TableName;
-import com.baomidou.mybatisplus.annotation.IdType;
-import java.util.Date;
-import com.baomidou.mybatisplus.annotation.TableId;
-import java.io.Serializable;
-
-import com.fasterxml.jackson.annotation.JsonFormat;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-
-/**
- * <p>
- * 后台资源表
- * </p>
- *
- * @author macro
- * @since 2020-08-21
- */
-@Data
-@EqualsAndHashCode(callSuper = false)
-@TableName("ums_resource")
-@ApiModel(value="UmsResource对象", description="后台资源表")
-public class UmsResource implements Serializable {
-
-    private static final long serialVersionUID=1L;
-
-    @TableId(value = "id", type = IdType.AUTO)
-    private Long id;
-
-    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
-    @ApiModelProperty(value = "创建时间")
-    private Date createTime;
-
-    @ApiModelProperty(value = "资源名称")
-    private String name;
-
-    @ApiModelProperty(value = "资源URL")
-    private String url;
-
-    @ApiModelProperty(value = "描述")
-    private String description;
-
-    @ApiModelProperty(value = "资源分类ID")
-    private Long categoryId;
-
-
-}

+ 0 - 45
src/main/java/com/macro/mall/tiny/modules/ums/model/UmsResourceCategory.java

@@ -1,45 +0,0 @@
-package com.macro.mall.tiny.modules.ums.model;
-
-import com.baomidou.mybatisplus.annotation.TableName;
-import com.baomidou.mybatisplus.annotation.IdType;
-import java.util.Date;
-import com.baomidou.mybatisplus.annotation.TableId;
-import java.io.Serializable;
-
-import com.fasterxml.jackson.annotation.JsonFormat;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-
-/**
- * <p>
- * 资源分类表
- * </p>
- *
- * @author macro
- * @since 2020-08-21
- */
-@Data
-@EqualsAndHashCode(callSuper = false)
-@TableName("ums_resource_category")
-@ApiModel(value="UmsResourceCategory对象", description="资源分类表")
-public class UmsResourceCategory implements Serializable {
-
-    private static final long serialVersionUID=1L;
-
-    @TableId(value = "id", type = IdType.AUTO)
-    private Long id;
-
-    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
-    @ApiModelProperty(value = "创建时间")
-    private Date createTime;
-
-    @ApiModelProperty(value = "分类名称")
-    private String name;
-
-    @ApiModelProperty(value = "排序")
-    private Integer sort;
-
-
-}

+ 0 - 53
src/main/java/com/macro/mall/tiny/modules/ums/model/UmsRole.java

@@ -1,53 +0,0 @@
-package com.macro.mall.tiny.modules.ums.model;
-
-import com.baomidou.mybatisplus.annotation.TableName;
-import com.baomidou.mybatisplus.annotation.IdType;
-import java.util.Date;
-import com.baomidou.mybatisplus.annotation.TableId;
-import java.io.Serializable;
-
-import com.fasterxml.jackson.annotation.JsonFormat;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-
-/**
- * <p>
- * 后台用户角色表
- * </p>
- *
- * @author macro
- * @since 2020-08-21
- */
-@Data
-@EqualsAndHashCode(callSuper = false)
-@TableName("ums_role")
-@ApiModel(value="UmsRole对象", description="后台用户角色表")
-public class UmsRole implements Serializable {
-
-    private static final long serialVersionUID=1L;
-
-    @TableId(value = "id", type = IdType.AUTO)
-    private Long id;
-
-    @ApiModelProperty(value = "名称")
-    private String name;
-
-    @ApiModelProperty(value = "描述")
-    private String description;
-
-    @ApiModelProperty(value = "后台用户数量")
-    private Integer adminCount;
-
-    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
-    @ApiModelProperty(value = "创建时间")
-    private Date createTime;
-
-    @ApiModelProperty(value = "启用状态:0->禁用;1->启用")
-    private Integer status;
-
-    private Integer sort;
-
-
-}

+ 0 - 38
src/main/java/com/macro/mall/tiny/modules/ums/model/UmsRoleMenuRelation.java

@@ -1,38 +0,0 @@
-package com.macro.mall.tiny.modules.ums.model;
-
-import com.baomidou.mybatisplus.annotation.TableName;
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import java.io.Serializable;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-
-/**
- * <p>
- * 后台角色菜单关系表
- * </p>
- *
- * @author macro
- * @since 2020-08-21
- */
-@Data
-@EqualsAndHashCode(callSuper = false)
-@TableName("ums_role_menu_relation")
-@ApiModel(value="UmsRoleMenuRelation对象", description="后台角色菜单关系表")
-public class UmsRoleMenuRelation implements Serializable {
-
-    private static final long serialVersionUID=1L;
-
-    @TableId(value = "id", type = IdType.AUTO)
-    private Long id;
-
-    @ApiModelProperty(value = "角色ID")
-    private Long roleId;
-
-    @ApiModelProperty(value = "菜单ID")
-    private Long menuId;
-
-
-}

+ 0 - 38
src/main/java/com/macro/mall/tiny/modules/ums/model/UmsRoleResourceRelation.java

@@ -1,38 +0,0 @@
-package com.macro.mall.tiny.modules.ums.model;
-
-import com.baomidou.mybatisplus.annotation.TableName;
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import java.io.Serializable;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-
-/**
- * <p>
- * 后台角色资源关系表
- * </p>
- *
- * @author macro
- * @since 2020-08-21
- */
-@Data
-@EqualsAndHashCode(callSuper = false)
-@TableName("ums_role_resource_relation")
-@ApiModel(value="UmsRoleResourceRelation对象", description="后台角色资源关系表")
-public class UmsRoleResourceRelation implements Serializable {
-
-    private static final long serialVersionUID=1L;
-
-    @TableId(value = "id", type = IdType.AUTO)
-    private Long id;
-
-    @ApiModelProperty(value = "角色ID")
-    private Long roleId;
-
-    @ApiModelProperty(value = "资源ID")
-    private Long resourceId;
-
-
-}

+ 0 - 59
src/main/java/com/macro/mall/tiny/modules/ums/service/UmsAdminCacheService.java

@@ -1,59 +0,0 @@
-package com.macro.mall.tiny.modules.ums.service;
-
-
-
-import com.macro.mall.tiny.modules.ums.model.UmsAdmin;
-import com.macro.mall.tiny.modules.ums.model.UmsResource;
-
-import java.util.List;
-
-/**
- * 后台用户缓存管理Service
- * Created by macro on 2020/3/13.
- */
-public interface UmsAdminCacheService {
-    /**
-     * 删除后台用户缓存
-     */
-    void delAdmin(Long adminId);
-
-    /**
-     * 删除后台用户资源列表缓存
-     */
-    void delResourceList(Long adminId);
-
-    /**
-     * 当角色相关资源信息改变时删除相关后台用户缓存
-     */
-    void delResourceListByRole(Long roleId);
-
-    /**
-     * 当角色相关资源信息改变时删除相关后台用户缓存
-     */
-    void delResourceListByRoleIds(List<Long> roleIds);
-
-    /**
-     * 当资源信息改变时,删除资源项目后台用户缓存
-     */
-    void delResourceListByResource(Long resourceId);
-
-    /**
-     * 获取缓存后台用户信息
-     */
-    UmsAdmin getAdmin(String username);
-
-    /**
-     * 设置缓存后台用户信息
-     */
-    void setAdmin(UmsAdmin admin);
-
-    /**
-     * 获取缓存后台用户资源列表
-     */
-    List<UmsResource> getResourceList(Long adminId);
-
-    /**
-     * 设置后台后台用户资源列表
-     */
-    void setResourceList(Long adminId, List<UmsResource> resourceList);
-}

+ 0 - 11
src/main/java/com/macro/mall/tiny/modules/ums/service/UmsAdminRoleRelationService.java

@@ -1,11 +0,0 @@
-package com.macro.mall.tiny.modules.ums.service;
-
-import com.baomidou.mybatisplus.extension.service.IService;
-import com.macro.mall.tiny.modules.ums.model.UmsAdminRoleRelation;
-
-/**
- * 管理员角色关系管理Service
- * Created by macro on 2020/8/21.
- */
-public interface UmsAdminRoleRelationService extends IService<UmsAdminRoleRelation> {
-}

+ 0 - 84
src/main/java/com/macro/mall/tiny/modules/ums/service/UmsAdminService.java

@@ -1,84 +0,0 @@
-package com.macro.mall.tiny.modules.ums.service;
-
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.baomidou.mybatisplus.extension.service.IService;
-import com.macro.mall.tiny.modules.ums.dto.UmsAdminParam;
-import com.macro.mall.tiny.modules.ums.dto.UpdateAdminPasswordParam;
-import com.macro.mall.tiny.modules.ums.model.UmsAdmin;
-import com.macro.mall.tiny.modules.ums.model.UmsResource;
-import com.macro.mall.tiny.modules.ums.model.UmsRole;
-import org.springframework.security.core.userdetails.UserDetails;
-import org.springframework.transaction.annotation.Transactional;
-
-import java.util.List;
-
-/**
- * 后台管理员管理Service
- * Created by macro on 2018/4/26.
- */
-public interface UmsAdminService extends IService<UmsAdmin> {
-    /**
-     * 根据用户名获取后台管理员
-     */
-    UmsAdmin getAdminByUsername(String username);
-
-    /**
-     * 注册功能
-     */
-    UmsAdmin register(UmsAdminParam umsAdminParam);
-
-    /**
-     * 登录功能
-     * @param username 用户名
-     * @param password 密码
-     * @return 生成的JWT的token
-     */
-    String login(String username,String password);
-
-    /**
-     * 刷新token的功能
-     * @param oldToken 旧的token
-     */
-    String refreshToken(String oldToken);
-
-    /**
-     * 根据用户名或昵称分页查询用户
-     */
-    Page<UmsAdmin> list(String keyword, Integer pageSize, Integer pageNum);
-
-    /**
-     * 修改指定用户信息
-     */
-    boolean update(Long id, UmsAdmin admin);
-
-    /**
-     * 删除指定用户
-     */
-    boolean delete(Long id);
-
-    /**
-     * 修改用户角色关系
-     */
-    @Transactional
-    int updateRole(Long adminId, List<Long> roleIds);
-
-    /**
-     * 获取用户对于角色
-     */
-    List<UmsRole> getRoleList(Long adminId);
-
-    /**
-     * 获取指定用户的可访问资源
-     */
-    List<UmsResource> getResourceList(Long adminId);
-
-    /**
-     * 修改密码
-     */
-    int updatePassword(UpdateAdminPasswordParam updatePasswordParam);
-
-    /**
-     * 获取用户信息
-     */
-    UserDetails loadUserByUsername(String username);
-}

+ 0 - 40
src/main/java/com/macro/mall/tiny/modules/ums/service/UmsMenuService.java

@@ -1,40 +0,0 @@
-package com.macro.mall.tiny.modules.ums.service;
-
-
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.baomidou.mybatisplus.extension.service.IService;
-import com.macro.mall.tiny.modules.ums.dto.UmsMenuNode;
-import com.macro.mall.tiny.modules.ums.model.UmsMenu;
-
-import java.util.List;
-
-/**
- * 后台菜单管理Service
- * Created by macro on 2020/2/2.
- */
-public interface UmsMenuService extends IService<UmsMenu> {
-    /**
-     * 创建后台菜单
-     */
-    boolean create(UmsMenu umsMenu);
-
-    /**
-     * 修改后台菜单
-     */
-    boolean update(Long id, UmsMenu umsMenu);
-
-    /**
-     * 分页查询后台菜单
-     */
-    Page<UmsMenu> list(Long parentId, Integer pageSize, Integer pageNum);
-
-    /**
-     * 树形结构返回所有菜单列表
-     */
-    List<UmsMenuNode> treeList();
-
-    /**
-     * 修改菜单显示状态
-     */
-    boolean updateHidden(Long id, Integer hidden);
-}

+ 0 - 24
src/main/java/com/macro/mall/tiny/modules/ums/service/UmsResourceCategoryService.java

@@ -1,24 +0,0 @@
-package com.macro.mall.tiny.modules.ums.service;
-
-
-import com.baomidou.mybatisplus.extension.service.IService;
-import com.macro.mall.tiny.modules.ums.model.UmsResourceCategory;
-
-import java.util.List;
-
-/**
- * 后台资源分类管理Service
- * Created by macro on 2020/2/5.
- */
-public interface UmsResourceCategoryService extends IService<UmsResourceCategory> {
-
-    /**
-     * 获取所有资源分类
-     */
-    List<UmsResourceCategory> listAll();
-
-    /**
-     * 创建资源分类
-     */
-    boolean create(UmsResourceCategory umsResourceCategory);
-}

+ 0 - 34
src/main/java/com/macro/mall/tiny/modules/ums/service/UmsResourceService.java

@@ -1,34 +0,0 @@
-package com.macro.mall.tiny.modules.ums.service;
-
-
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.baomidou.mybatisplus.extension.service.IService;
-import com.macro.mall.tiny.modules.ums.model.UmsResource;
-
-import java.util.List;
-
-/**
- * 后台资源管理Service
- * Created by macro on 2020/2/2.
- */
-public interface UmsResourceService extends IService<UmsResource> {
-    /**
-     * 添加资源
-     */
-    boolean create(UmsResource umsResource);
-
-    /**
-     * 修改资源
-     */
-    boolean update(Long id, UmsResource umsResource);
-
-    /**
-     * 删除资源
-     */
-    boolean delete(Long id);
-
-    /**
-     * 分页查询资源
-     */
-    Page<UmsResource> list(Long categoryId, String nameKeyword, String urlKeyword, Integer pageSize, Integer pageNum);
-}

+ 0 - 11
src/main/java/com/macro/mall/tiny/modules/ums/service/UmsRoleMenuRelationService.java

@@ -1,11 +0,0 @@
-package com.macro.mall.tiny.modules.ums.service;
-
-import com.baomidou.mybatisplus.extension.service.IService;
-import com.macro.mall.tiny.modules.ums.model.UmsRoleMenuRelation;
-
-/**
- * 角色菜单关系管理Service
- * Created by macro on 2020/8/21.
- */
-public interface UmsRoleMenuRelationService extends IService<UmsRoleMenuRelation> {
-}

+ 0 - 11
src/main/java/com/macro/mall/tiny/modules/ums/service/UmsRoleResourceRelationService.java

@@ -1,11 +0,0 @@
-package com.macro.mall.tiny.modules.ums.service;
-
-import com.baomidou.mybatisplus.extension.service.IService;
-import com.macro.mall.tiny.modules.ums.model.UmsRoleResourceRelation;
-
-/**
- * 角色资源关系管理Service
- * Created by macro on 2020/8/21.
- */
-public interface UmsRoleResourceRelationService extends IService<UmsRoleResourceRelation> {
-}

+ 0 - 58
src/main/java/com/macro/mall/tiny/modules/ums/service/UmsRoleService.java

@@ -1,58 +0,0 @@
-package com.macro.mall.tiny.modules.ums.service;
-
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.baomidou.mybatisplus.extension.service.IService;
-import com.macro.mall.tiny.modules.ums.model.UmsMenu;
-import com.macro.mall.tiny.modules.ums.model.UmsResource;
-import com.macro.mall.tiny.modules.ums.model.UmsRole;
-import org.springframework.transaction.annotation.Transactional;
-
-import java.util.List;
-
-/**
- * 后台角色管理Service
- * Created by macro on 2018/9/30.
- */
-public interface UmsRoleService extends IService<UmsRole> {
-    /**
-     * 添加角色
-     */
-    boolean create(UmsRole role);
-
-    /**
-     * 批量删除角色
-     */
-    boolean delete(List<Long> ids);
-
-    /**
-     * 分页获取角色列表
-     */
-    Page<UmsRole> list(String keyword, Integer pageSize, Integer pageNum);
-
-    /**
-     * 根据管理员ID获取对应菜单
-     */
-    List<UmsMenu> getMenuList(Long adminId);
-
-    /**
-     * 获取角色相关菜单
-     */
-    List<UmsMenu> listMenu(Long roleId);
-
-    /**
-     * 获取角色相关资源
-     */
-    List<UmsResource> listResource(Long roleId);
-
-    /**
-     * 给角色分配菜单
-     */
-    @Transactional
-    int allocMenu(Long roleId, List<Long> menuIds);
-
-    /**
-     * 给角色分配资源
-     */
-    @Transactional
-    int allocResource(Long roleId, List<Long> resourceIds);
-}

+ 0 - 115
src/main/java/com/macro/mall/tiny/modules/ums/service/impl/UmsAdminCacheServiceImpl.java

@@ -1,115 +0,0 @@
-package com.macro.mall.tiny.modules.ums.service.impl;
-
-import cn.hutool.core.collection.CollUtil;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.macro.mall.tiny.common.service.RedisService;
-import com.macro.mall.tiny.modules.ums.mapper.UmsAdminMapper;
-import com.macro.mall.tiny.modules.ums.model.UmsAdmin;
-import com.macro.mall.tiny.modules.ums.model.UmsAdminRoleRelation;
-import com.macro.mall.tiny.modules.ums.model.UmsResource;
-import com.macro.mall.tiny.modules.ums.service.UmsAdminCacheService;
-import com.macro.mall.tiny.modules.ums.service.UmsAdminRoleRelationService;
-import com.macro.mall.tiny.modules.ums.service.UmsAdminService;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.stereotype.Service;
-
-import java.util.List;
-import java.util.stream.Collectors;
-
-/**
- * 后台用户缓存管理Service实现类
- * Created by macro on 2020/3/13.
- */
-@Service
-public class UmsAdminCacheServiceImpl implements UmsAdminCacheService {
-    @Autowired
-    private UmsAdminService adminService;
-    @Autowired
-    private RedisService redisService;
-    @Autowired
-    private UmsAdminMapper adminMapper;
-    @Autowired
-    private UmsAdminRoleRelationService adminRoleRelationService;
-    @Value("${redis.database}")
-    private String REDIS_DATABASE;
-    @Value("${redis.expire.common}")
-    private Long REDIS_EXPIRE;
-    @Value("${redis.key.admin}")
-    private String REDIS_KEY_ADMIN;
-    @Value("${redis.key.resourceList}")
-    private String REDIS_KEY_RESOURCE_LIST;
-
-    @Override
-    public void delAdmin(Long adminId) {
-        UmsAdmin admin = adminService.getById(adminId);
-        if (admin != null) {
-            String key = REDIS_DATABASE + ":" + REDIS_KEY_ADMIN + ":" + admin.getUsername();
-            redisService.del(key);
-        }
-    }
-
-    @Override
-    public void delResourceList(Long adminId) {
-        String key = REDIS_DATABASE + ":" + REDIS_KEY_RESOURCE_LIST + ":" + adminId;
-        redisService.del(key);
-    }
-
-    @Override
-    public void delResourceListByRole(Long roleId) {
-        QueryWrapper<UmsAdminRoleRelation> wrapper = new QueryWrapper<>();
-        wrapper.lambda().eq(UmsAdminRoleRelation::getRoleId,roleId);
-        List<UmsAdminRoleRelation> relationList = adminRoleRelationService.list(wrapper);
-        if (CollUtil.isNotEmpty(relationList)) {
-            String keyPrefix = REDIS_DATABASE + ":" + REDIS_KEY_RESOURCE_LIST + ":";
-            List<String> keys = relationList.stream().map(relation -> keyPrefix + relation.getAdminId()).collect(Collectors.toList());
-            redisService.del(keys);
-        }
-    }
-
-    @Override
-    public void delResourceListByRoleIds(List<Long> roleIds) {
-        QueryWrapper<UmsAdminRoleRelation> wrapper = new QueryWrapper<>();
-        wrapper.lambda().in(UmsAdminRoleRelation::getRoleId,roleIds);
-        List<UmsAdminRoleRelation> relationList = adminRoleRelationService.list(wrapper);
-        if (CollUtil.isNotEmpty(relationList)) {
-            String keyPrefix = REDIS_DATABASE + ":" + REDIS_KEY_RESOURCE_LIST + ":";
-            List<String> keys = relationList.stream().map(relation -> keyPrefix + relation.getAdminId()).collect(Collectors.toList());
-            redisService.del(keys);
-        }
-    }
-
-    @Override
-    public void delResourceListByResource(Long resourceId) {
-        List<Long> adminIdList = adminMapper.getAdminIdList(resourceId);
-        if (CollUtil.isNotEmpty(adminIdList)) {
-            String keyPrefix = REDIS_DATABASE + ":" + REDIS_KEY_RESOURCE_LIST + ":";
-            List<String> keys = adminIdList.stream().map(adminId -> keyPrefix + adminId).collect(Collectors.toList());
-            redisService.del(keys);
-        }
-    }
-
-    @Override
-    public UmsAdmin getAdmin(String username) {
-        String key = REDIS_DATABASE + ":" + REDIS_KEY_ADMIN + ":" + username;
-        return (UmsAdmin) redisService.get(key);
-    }
-
-    @Override
-    public void setAdmin(UmsAdmin admin) {
-        String key = REDIS_DATABASE + ":" + REDIS_KEY_ADMIN + ":" + admin.getUsername();
-        redisService.set(key, admin, REDIS_EXPIRE);
-    }
-
-    @Override
-    public List<UmsResource> getResourceList(Long adminId) {
-        String key = REDIS_DATABASE + ":" + REDIS_KEY_RESOURCE_LIST + ":" + adminId;
-        return (List<UmsResource>) redisService.get(key);
-    }
-
-    @Override
-    public void setResourceList(Long adminId, List<UmsResource> resourceList) {
-        String key = REDIS_DATABASE + ":" + REDIS_KEY_RESOURCE_LIST + ":" + adminId;
-        redisService.set(key, resourceList, REDIS_EXPIRE);
-    }
-}

+ 0 - 15
src/main/java/com/macro/mall/tiny/modules/ums/service/impl/UmsAdminRoleRelationServiceImpl.java

@@ -1,15 +0,0 @@
-package com.macro.mall.tiny.modules.ums.service.impl;
-
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.macro.mall.tiny.modules.ums.mapper.UmsAdminRoleRelationMapper;
-import com.macro.mall.tiny.modules.ums.model.UmsAdminRoleRelation;
-import com.macro.mall.tiny.modules.ums.service.UmsAdminRoleRelationService;
-import org.springframework.stereotype.Service;
-
-/**
- * 管理员角色关系管理Service实现类
- * Created by macro on 2020/8/21.
- */
-@Service
-public class UmsAdminRoleRelationServiceImpl extends ServiceImpl<UmsAdminRoleRelationMapper, UmsAdminRoleRelation> implements UmsAdminRoleRelationService {
-}

+ 0 - 270
src/main/java/com/macro/mall/tiny/modules/ums/service/impl/UmsAdminServiceImpl.java

@@ -1,270 +0,0 @@
-package com.macro.mall.tiny.modules.ums.service.impl;
-
-import cn.hutool.core.collection.CollUtil;
-import cn.hutool.core.util.StrUtil;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.macro.mall.tiny.common.exception.Asserts;
-import com.macro.mall.tiny.domain.AdminUserDetails;
-import com.macro.mall.tiny.modules.ums.dto.UmsAdminParam;
-import com.macro.mall.tiny.modules.ums.dto.UpdateAdminPasswordParam;
-import com.macro.mall.tiny.modules.ums.mapper.UmsAdminLoginLogMapper;
-import com.macro.mall.tiny.modules.ums.mapper.UmsAdminMapper;
-import com.macro.mall.tiny.modules.ums.mapper.UmsResourceMapper;
-import com.macro.mall.tiny.modules.ums.mapper.UmsRoleMapper;
-import com.macro.mall.tiny.modules.ums.model.*;
-import com.macro.mall.tiny.modules.ums.service.UmsAdminCacheService;
-import com.macro.mall.tiny.modules.ums.service.UmsAdminRoleRelationService;
-import com.macro.mall.tiny.modules.ums.service.UmsAdminService;
-import com.macro.mall.security.util.JwtTokenUtil;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.BeanUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
-import org.springframework.security.core.AuthenticationException;
-import org.springframework.security.core.context.SecurityContextHolder;
-import org.springframework.security.core.userdetails.UserDetails;
-import org.springframework.security.core.userdetails.UsernameNotFoundException;
-import org.springframework.security.crypto.password.PasswordEncoder;
-import org.springframework.stereotype.Service;
-import org.springframework.util.CollectionUtils;
-import org.springframework.web.context.request.RequestContextHolder;
-import org.springframework.web.context.request.ServletRequestAttributes;
-
-import javax.servlet.http.HttpServletRequest;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-
-/**
- * 后台管理员管理Service实现类
- * Created by macro on 2018/4/26.
- */
-@Service
-public class UmsAdminServiceImpl extends ServiceImpl<UmsAdminMapper,UmsAdmin> implements UmsAdminService {
-    private static final Logger LOGGER = LoggerFactory.getLogger(UmsAdminServiceImpl.class);
-    @Autowired
-    private JwtTokenUtil jwtTokenUtil;
-    @Autowired
-    private PasswordEncoder passwordEncoder;
-    @Autowired
-    private UmsAdminLoginLogMapper loginLogMapper;
-    @Autowired
-    private UmsAdminCacheService adminCacheService;
-    @Autowired
-    private UmsAdminRoleRelationService adminRoleRelationService;
-    @Autowired
-    private UmsRoleMapper roleMapper;
-    @Autowired
-    private UmsAdminMapper adminMapper;
-    @Autowired
-    private UmsResourceMapper resourceMapper;
-
-    @Override
-    public UmsAdmin getAdminByUsername(String username) {
-        UmsAdmin admin = adminCacheService.getAdmin(username);
-        if(admin!=null) return  admin;
-        QueryWrapper<UmsAdmin> wrapper = new QueryWrapper<>();
-        wrapper.lambda().eq(UmsAdmin::getUsername,username);
-        List<UmsAdmin> adminList = list(wrapper);
-        if (adminList != null && adminList.size() > 0) {
-            admin = adminList.get(0);
-            adminCacheService.setAdmin(admin);
-            return admin;
-        }
-        return null;
-    }
-
-    @Override
-    public UmsAdmin register(UmsAdminParam umsAdminParam) {
-        UmsAdmin umsAdmin = new UmsAdmin();
-        BeanUtils.copyProperties(umsAdminParam, umsAdmin);
-        umsAdmin.setCreateTime(new Date());
-        umsAdmin.setStatus(1);
-        //查询是否有相同用户名的用户
-        QueryWrapper<UmsAdmin> wrapper = new QueryWrapper<>();
-        wrapper.lambda().eq(UmsAdmin::getUsername,umsAdmin.getUsername());
-        List<UmsAdmin> umsAdminList = list(wrapper);
-        if (umsAdminList.size() > 0) {
-            return null;
-        }
-        //将密码进行加密操作
-        String encodePassword = passwordEncoder.encode(umsAdmin.getPassword());
-        umsAdmin.setPassword(encodePassword);
-        baseMapper.insert(umsAdmin);
-        return umsAdmin;
-    }
-
-    @Override
-    public String login(String username, String password) {
-        String token = null;
-        //密码需要客户端加密后传递
-        try {
-            UserDetails userDetails = loadUserByUsername(username);
-            if(!passwordEncoder.matches(password,userDetails.getPassword())){
-                Asserts.fail("密码不正确");
-            }
-            if(!userDetails.isEnabled()){
-                Asserts.fail("帐号已被禁用");
-            }
-            UsernamePasswordAuthenticationToken authentication = new UsernamePasswordAuthenticationToken(userDetails, null, userDetails.getAuthorities());
-            SecurityContextHolder.getContext().setAuthentication(authentication);
-            token = jwtTokenUtil.generateToken(userDetails);
-//            updateLoginTimeByUsername(username);
-            insertLoginLog(username);
-        } catch (AuthenticationException e) {
-            LOGGER.warn("登录异常:{}", e.getMessage());
-        }
-        return token;
-    }
-
-    /**
-     * 添加登录记录
-     * @param username 用户名
-     */
-    private void insertLoginLog(String username) {
-        UmsAdmin admin = getAdminByUsername(username);
-        if(admin==null) return;
-        UmsAdminLoginLog loginLog = new UmsAdminLoginLog();
-        loginLog.setAdminId(admin.getId());
-        loginLog.setCreateTime(new Date());
-        ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
-        HttpServletRequest request = attributes.getRequest();
-        loginLog.setIp(request.getRemoteAddr());
-        loginLogMapper.insert(loginLog);
-    }
-
-    /**
-     * 根据用户名修改登录时间
-     */
-    private void updateLoginTimeByUsername(String username) {
-        UmsAdmin record = new UmsAdmin();
-        record.setLoginTime(new Date());
-        QueryWrapper<UmsAdmin> wrapper = new QueryWrapper<>();
-        wrapper.lambda().eq(UmsAdmin::getUsername,username);
-        update(record,wrapper);
-    }
-
-    @Override
-    public String refreshToken(String oldToken) {
-        return jwtTokenUtil.refreshHeadToken(oldToken);
-    }
-
-    @Override
-    public Page<UmsAdmin> list(String keyword, Integer pageSize, Integer pageNum) {
-        Page<UmsAdmin> page = new Page<>(pageNum,pageSize);
-//        QueryWrapper<UmsAdmin> wrapper = new QueryWrapper<>();
-//        LambdaQueryWrapper<UmsAdmin> lambda = wrapper.lambda();
-//        if(StrUtil.isNotEmpty(keyword)){
-//            lambda.like(UmsAdmin::getUsername,keyword);
-//            lambda.or().like(UmsAdmin::getNickName,keyword);
-//        }
-        return adminMapper.findListByKey(page, keyword);
-    }
-
-    @Override
-    public boolean update(Long id, UmsAdmin admin) {
-        admin.setId(id);
-        UmsAdmin rawAdmin = getById(id);
-        if(rawAdmin.getPassword().equals(admin.getPassword())){
-            //与原加密密码相同的不需要修改
-            admin.setPassword(null);
-        }else{
-            //与原加密密码不同的需要加密修改
-            if(StrUtil.isEmpty(admin.getPassword())){
-                admin.setPassword(null);
-            }else{
-                admin.setPassword(passwordEncoder.encode(admin.getPassword()));
-            }
-        }
-        boolean success = updateById(admin);
-        adminCacheService.delAdmin(id);
-        return success;
-    }
-
-    @Override
-    public boolean delete(Long id) {
-        adminCacheService.delAdmin(id);
-        boolean success = removeById(id);
-        adminCacheService.delResourceList(id);
-        return success;
-    }
-
-    @Override
-    public int updateRole(Long adminId, List<Long> roleIds) {
-        int count = roleIds == null ? 0 : roleIds.size();
-        //先删除原来的关系
-        QueryWrapper<UmsAdminRoleRelation> wrapper = new QueryWrapper<>();
-        wrapper.lambda().eq(UmsAdminRoleRelation::getAdminId,adminId);
-        adminRoleRelationService.remove(wrapper);
-        //建立新关系
-        if (!CollectionUtils.isEmpty(roleIds)) {
-            List<UmsAdminRoleRelation> list = new ArrayList<>();
-            for (Long roleId : roleIds) {
-                UmsAdminRoleRelation roleRelation = new UmsAdminRoleRelation();
-                roleRelation.setAdminId(adminId);
-                roleRelation.setRoleId(roleId);
-                list.add(roleRelation);
-            }
-            adminRoleRelationService.saveBatch(list);
-        }
-        adminCacheService.delResourceList(adminId);
-        return count;
-    }
-
-    @Override
-    public List<UmsRole> getRoleList(Long adminId) {
-        return roleMapper.getRoleList(adminId);
-    }
-
-    @Override
-    public List<UmsResource> getResourceList(Long adminId) {
-        List<UmsResource> resourceList = adminCacheService.getResourceList(adminId);
-        if(CollUtil.isNotEmpty(resourceList)){
-            return  resourceList;
-        }
-        resourceList = resourceMapper.getResourceList(adminId);
-        if(CollUtil.isNotEmpty(resourceList)){
-            adminCacheService.setResourceList(adminId,resourceList);
-        }
-        return resourceList;
-    }
-
-    @Override
-    public int updatePassword(UpdateAdminPasswordParam param) {
-        if(StrUtil.isEmpty(param.getUsername())
-                ||StrUtil.isEmpty(param.getOldPassword())
-                ||StrUtil.isEmpty(param.getNewPassword())){
-            return -1;
-        }
-        QueryWrapper<UmsAdmin> wrapper = new QueryWrapper<>();
-        wrapper.lambda().eq(UmsAdmin::getUsername,param.getUsername());
-        List<UmsAdmin> adminList = list(wrapper);
-        if(CollUtil.isEmpty(adminList)){
-            return -2;
-        }
-        UmsAdmin umsAdmin = adminList.get(0);
-        if(!passwordEncoder.matches(param.getOldPassword(),umsAdmin.getPassword())){
-            return -3;
-        }
-        umsAdmin.setPassword(passwordEncoder.encode(param.getNewPassword()));
-        updateById(umsAdmin);
-        adminCacheService.delAdmin(umsAdmin.getId());
-        return 1;
-    }
-
-    @Override
-    public UserDetails loadUserByUsername(String username){
-        //获取用户信息
-        UmsAdmin admin = getAdminByUsername(username);
-        if (admin != null) {
-            List<UmsResource> resourceList = getResourceList(admin.getId());
-            return new AdminUserDetails(admin,resourceList);
-        }
-        throw new UsernameNotFoundException("用户名或密码错误");
-    }
-}

+ 0 - 94
src/main/java/com/macro/mall/tiny/modules/ums/service/impl/UmsMenuServiceImpl.java

@@ -1,94 +0,0 @@
-package com.macro.mall.tiny.modules.ums.service.impl;
-
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.macro.mall.tiny.modules.ums.dto.UmsMenuNode;
-import com.macro.mall.tiny.modules.ums.mapper.UmsMenuMapper;
-import com.macro.mall.tiny.modules.ums.model.UmsMenu;
-import com.macro.mall.tiny.modules.ums.service.UmsMenuService;
-import org.springframework.beans.BeanUtils;
-import org.springframework.stereotype.Service;
-
-import java.util.Date;
-import java.util.List;
-import java.util.stream.Collectors;
-
-/**
- * 后台菜单管理Service实现类
- * Created by macro on 2020/2/2.
- */
-@Service
-public class UmsMenuServiceImpl extends ServiceImpl<UmsMenuMapper,UmsMenu>implements UmsMenuService {
-
-    @Override
-    public boolean create(UmsMenu umsMenu) {
-        umsMenu.setCreateTime(new Date());
-        updateLevel(umsMenu);
-        return save(umsMenu);
-    }
-
-    /**
-     * 修改菜单层级
-     */
-    private void updateLevel(UmsMenu umsMenu) {
-        if (umsMenu.getParentId() == 0) {
-            //没有父菜单时为一级菜单
-            umsMenu.setLevel(0);
-        } else {
-            //有父菜单时选择根据父菜单level设置
-            UmsMenu parentMenu = getById(umsMenu.getParentId());
-            if (parentMenu != null) {
-                umsMenu.setLevel(parentMenu.getLevel() + 1);
-            } else {
-                umsMenu.setLevel(0);
-            }
-        }
-    }
-
-    @Override
-    public boolean update(Long id, UmsMenu umsMenu) {
-        umsMenu.setId(id);
-        updateLevel(umsMenu);
-        return updateById(umsMenu);
-    }
-
-    @Override
-    public Page<UmsMenu> list(Long parentId, Integer pageSize, Integer pageNum) {
-        Page<UmsMenu> page = new Page<>(pageNum,pageSize);
-        QueryWrapper<UmsMenu> wrapper = new QueryWrapper<>();
-        wrapper.lambda().eq(UmsMenu::getParentId,parentId)
-                .orderByDesc(UmsMenu::getSort);
-        return page(page,wrapper);
-    }
-
-    @Override
-    public List<UmsMenuNode> treeList() {
-        List<UmsMenu> menuList = list();
-        List<UmsMenuNode> result = menuList.stream()
-                .filter(menu -> menu.getParentId().equals(0L))
-                .map(menu -> covertMenuNode(menu, menuList)).collect(Collectors.toList());
-        return result;
-    }
-
-    @Override
-    public boolean updateHidden(Long id, Integer hidden) {
-        UmsMenu umsMenu = new UmsMenu();
-        umsMenu.setId(id);
-        umsMenu.setHidden(hidden);
-        return updateById(umsMenu);
-    }
-
-    /**
-     * 将UmsMenu转化为UmsMenuNode并设置children属性
-     */
-    private UmsMenuNode covertMenuNode(UmsMenu menu, List<UmsMenu> menuList) {
-        UmsMenuNode node = new UmsMenuNode();
-        BeanUtils.copyProperties(menu, node);
-        List<UmsMenuNode> children = menuList.stream()
-                .filter(subMenu -> subMenu.getParentId().equals(menu.getId()))
-                .map(subMenu -> covertMenuNode(subMenu, menuList)).collect(Collectors.toList());
-        node.setChildren(children);
-        return node;
-    }
-}

+ 0 - 32
src/main/java/com/macro/mall/tiny/modules/ums/service/impl/UmsResourceCategoryServiceImpl.java

@@ -1,32 +0,0 @@
-package com.macro.mall.tiny.modules.ums.service.impl;
-
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.macro.mall.tiny.modules.ums.mapper.UmsResourceCategoryMapper;
-import com.macro.mall.tiny.modules.ums.model.UmsResourceCategory;
-import com.macro.mall.tiny.modules.ums.service.UmsResourceCategoryService;
-import org.springframework.stereotype.Service;
-
-import java.util.Date;
-import java.util.List;
-
-/**
- * 后台资源分类管理Service实现类
- * Created by macro on 2020/2/5.
- */
-@Service
-public class UmsResourceCategoryServiceImpl extends ServiceImpl<UmsResourceCategoryMapper,UmsResourceCategory> implements UmsResourceCategoryService {
-
-    @Override
-    public List<UmsResourceCategory> listAll() {
-        QueryWrapper<UmsResourceCategory> wrapper = new QueryWrapper<>();
-        wrapper.lambda().orderByDesc(UmsResourceCategory::getSort);
-        return list(wrapper);
-    }
-
-    @Override
-    public boolean create(UmsResourceCategory umsResourceCategory) {
-        umsResourceCategory.setCreateTime(new Date());
-        return save(umsResourceCategory);
-    }
-}

+ 0 - 62
src/main/java/com/macro/mall/tiny/modules/ums/service/impl/UmsResourceServiceImpl.java

@@ -1,62 +0,0 @@
-package com.macro.mall.tiny.modules.ums.service.impl;
-
-import cn.hutool.core.util.StrUtil;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.macro.mall.tiny.modules.ums.mapper.UmsResourceMapper;
-import com.macro.mall.tiny.modules.ums.model.UmsResource;
-import com.macro.mall.tiny.modules.ums.service.UmsAdminCacheService;
-import com.macro.mall.tiny.modules.ums.service.UmsResourceService;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import java.util.Date;
-
-/**
- * 后台资源管理Service实现类
- * Created by macro on 2020/2/2.
- */
-@Service
-public class UmsResourceServiceImpl extends ServiceImpl<UmsResourceMapper,UmsResource>implements UmsResourceService {
-    @Autowired
-    private UmsAdminCacheService adminCacheService;
-    @Override
-    public boolean create(UmsResource umsResource) {
-        umsResource.setCreateTime(new Date());
-        return save(umsResource);
-    }
-
-    @Override
-    public boolean update(Long id, UmsResource umsResource) {
-        umsResource.setId(id);
-        boolean success = updateById(umsResource);
-        adminCacheService.delResourceListByResource(id);
-        return success;
-    }
-
-    @Override
-    public boolean delete(Long id) {
-        boolean success = removeById(id);
-        adminCacheService.delResourceListByResource(id);
-        return success;
-    }
-
-    @Override
-    public Page<UmsResource> list(Long categoryId, String nameKeyword, String urlKeyword, Integer pageSize, Integer pageNum) {
-        Page<UmsResource> page = new Page<>(pageNum,pageSize);
-        QueryWrapper<UmsResource> wrapper = new QueryWrapper<>();
-        LambdaQueryWrapper<UmsResource> lambda = wrapper.lambda();
-        if(categoryId!=null){
-            lambda.eq(UmsResource::getCategoryId,categoryId);
-        }
-        if(StrUtil.isNotEmpty(nameKeyword)){
-            lambda.like(UmsResource::getName,nameKeyword);
-        }
-        if(StrUtil.isNotEmpty(urlKeyword)){
-            lambda.like(UmsResource::getUrl,urlKeyword);
-        }
-        return page(page,wrapper);
-    }
-}

+ 0 - 15
src/main/java/com/macro/mall/tiny/modules/ums/service/impl/UmsRoleMenuRelationServiceImpl.java

@@ -1,15 +0,0 @@
-package com.macro.mall.tiny.modules.ums.service.impl;
-
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.macro.mall.tiny.modules.ums.mapper.UmsRoleMenuRelationMapper;
-import com.macro.mall.tiny.modules.ums.model.UmsRoleMenuRelation;
-import com.macro.mall.tiny.modules.ums.service.UmsRoleMenuRelationService;
-import org.springframework.stereotype.Service;
-
-/**
- * 角色菜单关系管理Service实现类
- * Created by macro on 2020/8/21.
- */
-@Service
-public class UmsRoleMenuRelationServiceImpl extends ServiceImpl<UmsRoleMenuRelationMapper, UmsRoleMenuRelation> implements UmsRoleMenuRelationService {
-}

+ 0 - 15
src/main/java/com/macro/mall/tiny/modules/ums/service/impl/UmsRoleResourceRelationServiceImpl.java

@@ -1,15 +0,0 @@
-package com.macro.mall.tiny.modules.ums.service.impl;
-
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.macro.mall.tiny.modules.ums.mapper.UmsRoleResourceRelationMapper;
-import com.macro.mall.tiny.modules.ums.model.UmsRoleResourceRelation;
-import com.macro.mall.tiny.modules.ums.service.UmsRoleResourceRelationService;
-import org.springframework.stereotype.Service;
-
-/**
- * 角色资源关系管理Service实现类
- * Created by macro on 2020/8/21.
- */
-@Service
-public class UmsRoleResourceRelationServiceImpl extends ServiceImpl<UmsRoleResourceRelationMapper, UmsRoleResourceRelation> implements UmsRoleResourceRelationService {
-}

+ 0 - 117
src/main/java/com/macro/mall/tiny/modules/ums/service/impl/UmsRoleServiceImpl.java

@@ -1,117 +0,0 @@
-package com.macro.mall.tiny.modules.ums.service.impl;
-
-import cn.hutool.core.util.StrUtil;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.macro.mall.tiny.modules.ums.mapper.UmsMenuMapper;
-import com.macro.mall.tiny.modules.ums.mapper.UmsResourceMapper;
-import com.macro.mall.tiny.modules.ums.mapper.UmsRoleMapper;
-import com.macro.mall.tiny.modules.ums.model.*;
-import com.macro.mall.tiny.modules.ums.service.UmsAdminCacheService;
-import com.macro.mall.tiny.modules.ums.service.UmsRoleMenuRelationService;
-import com.macro.mall.tiny.modules.ums.service.UmsRoleResourceRelationService;
-import com.macro.mall.tiny.modules.ums.service.UmsRoleService;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-
-/**
- * 后台角色管理Service实现类
- * Created by macro on 2018/9/30.
- */
-@Service
-public class UmsRoleServiceImpl extends ServiceImpl<UmsRoleMapper, UmsRole> implements UmsRoleService {
-    @Autowired
-    private UmsAdminCacheService adminCacheService;
-    @Autowired
-    private UmsRoleMenuRelationService roleMenuRelationService;
-    @Autowired
-    private UmsRoleResourceRelationService roleResourceRelationService;
-    @Autowired
-    private UmsMenuMapper menuMapper;
-    @Autowired
-    private UmsResourceMapper resourceMapper;
-
-    @Override
-    public boolean create(UmsRole role) {
-        role.setCreateTime(new Date());
-        role.setAdminCount(0);
-        role.setSort(0);
-        return save(role);
-    }
-
-    @Override
-    public boolean delete(List<Long> ids) {
-        boolean success = removeByIds(ids);
-        adminCacheService.delResourceListByRoleIds(ids);
-        return success;
-    }
-
-    @Override
-    public Page<UmsRole> list(String keyword, Integer pageSize, Integer pageNum) {
-        Page<UmsRole> page = new Page<>(pageNum, pageSize);
-        QueryWrapper<UmsRole> wrapper = new QueryWrapper<>();
-        LambdaQueryWrapper<UmsRole> lambda = wrapper.lambda();
-        if (StrUtil.isNotEmpty(keyword)) {
-            lambda.like(UmsRole::getName, keyword);
-        }
-        return page(page, wrapper);
-    }
-
-    @Override
-    public List<UmsMenu> getMenuList(Long adminId) {
-        return menuMapper.getMenuList(adminId);
-    }
-
-    @Override
-    public List<UmsMenu> listMenu(Long roleId) {
-        return menuMapper.getMenuListByRoleId(roleId);
-    }
-
-    @Override
-    public List<UmsResource> listResource(Long roleId) {
-        return resourceMapper.getResourceListByRoleId(roleId);
-    }
-
-    @Override
-    public int allocMenu(Long roleId, List<Long> menuIds) {
-        //先删除原有关系
-        QueryWrapper<UmsRoleMenuRelation> wrapper = new QueryWrapper<>();
-        wrapper.lambda().eq(UmsRoleMenuRelation::getRoleId, roleId);
-        roleMenuRelationService.remove(wrapper);
-        //批量插入新关系
-        List<UmsRoleMenuRelation> relationList = new ArrayList<>();
-        for (Long menuId : menuIds) {
-            UmsRoleMenuRelation relation = new UmsRoleMenuRelation();
-            relation.setRoleId(roleId);
-            relation.setMenuId(menuId);
-            relationList.add(relation);
-        }
-        roleMenuRelationService.saveBatch(relationList);
-        return menuIds.size();
-    }
-
-    @Override
-    public int allocResource(Long roleId, List<Long> resourceIds) {
-        //先删除原有关系
-        QueryWrapper<UmsRoleResourceRelation> wrapper = new QueryWrapper<>();
-        wrapper.lambda().eq(UmsRoleResourceRelation::getRoleId, roleId);
-        roleResourceRelationService.remove(wrapper);
-        //批量插入新关系
-        List<UmsRoleResourceRelation> relationList = new ArrayList<>();
-        for (Long resourceId : resourceIds) {
-            UmsRoleResourceRelation relation = new UmsRoleResourceRelation();
-            relation.setRoleId(roleId);
-            relation.setResourceId(resourceId);
-            relationList.add(relation);
-        }
-        roleResourceRelationService.saveBatch(relationList);
-        adminCacheService.delResourceListByRole(roleId);
-        return resourceIds.size();
-    }
-}

+ 51 - 51
src/main/java/com/macro/mall/tiny/security/component/DynamicAccessDecisionManager.java

@@ -1,51 +1,51 @@
-package com.macro.mall.tiny.security.component;
-
-import cn.hutool.core.collection.CollUtil;
-import org.springframework.security.access.AccessDecisionManager;
-import org.springframework.security.access.AccessDeniedException;
-import org.springframework.security.access.ConfigAttribute;
-import org.springframework.security.authentication.InsufficientAuthenticationException;
-import org.springframework.security.core.Authentication;
-import org.springframework.security.core.GrantedAuthority;
-
-import java.util.Collection;
-import java.util.Iterator;
-
-/**
- * 动态权限决策管理器,用于判断用户是否有访问权限
- * Created by macro on 2020/2/7.
- */
-public class DynamicAccessDecisionManager implements AccessDecisionManager {
-
-    @Override
-    public void decide(Authentication authentication, Object object,
-                       Collection<ConfigAttribute> configAttributes) throws AccessDeniedException, InsufficientAuthenticationException {
-        // 当接口未被配置资源时直接放行
-        if (CollUtil.isEmpty(configAttributes)) {
-            return;
-        }
-        Iterator<ConfigAttribute> iterator = configAttributes.iterator();
-        while (iterator.hasNext()) {
-            ConfigAttribute configAttribute = iterator.next();
-            //将访问所需资源或用户拥有资源进行比对
-            String needAuthority = configAttribute.getAttribute();
-            for (GrantedAuthority grantedAuthority : authentication.getAuthorities()) {
-                if (needAuthority.trim().equals(grantedAuthority.getAuthority())) {
-                    return;
-                }
-            }
-        }
-        throw new AccessDeniedException("抱歉,您没有访问权限");
-    }
-
-    @Override
-    public boolean supports(ConfigAttribute configAttribute) {
-        return true;
-    }
-
-    @Override
-    public boolean supports(Class<?> aClass) {
-        return true;
-    }
-
-}
+//package com.macro.mall.tiny.security.component;
+//
+//import cn.hutool.core.collection.CollUtil;
+//import org.springframework.security.access.AccessDecisionManager;
+//import org.springframework.security.access.AccessDeniedException;
+//import org.springframework.security.access.ConfigAttribute;
+//import org.springframework.security.authentication.InsufficientAuthenticationException;
+//import org.springframework.security.core.Authentication;
+//import org.springframework.security.core.GrantedAuthority;
+//
+//import java.util.Collection;
+//import java.util.Iterator;
+//
+///**
+// * 动态权限决策管理器,用于判断用户是否有访问权限
+// * Created by macro on 2020/2/7.
+// */
+//public class DynamicAccessDecisionManager implements AccessDecisionManager {
+//
+//    @Override
+//    public void decide(Authentication authentication, Object object,
+//                       Collection<ConfigAttribute> configAttributes) throws AccessDeniedException, InsufficientAuthenticationException {
+//        // 当接口未被配置资源时直接放行
+//        if (CollUtil.isEmpty(configAttributes)) {
+//            return;
+//        }
+//        Iterator<ConfigAttribute> iterator = configAttributes.iterator();
+//        while (iterator.hasNext()) {
+//            ConfigAttribute configAttribute = iterator.next();
+//            //将访问所需资源或用户拥有资源进行比对
+//            String needAuthority = configAttribute.getAttribute();
+//            for (GrantedAuthority grantedAuthority : authentication.getAuthorities()) {
+//                if (needAuthority.trim().equals(grantedAuthority.getAuthority())) {
+//                    return;
+//                }
+//            }
+//        }
+//        throw new AccessDeniedException("抱歉,您没有访问权限");
+//    }
+//
+//    @Override
+//    public boolean supports(ConfigAttribute configAttribute) {
+//        return true;
+//    }
+//
+//    @Override
+//    public boolean supports(Class<?> aClass) {
+//        return true;
+//    }
+//
+//}

+ 77 - 77
src/main/java/com/macro/mall/tiny/security/component/DynamicSecurityFilter.java

@@ -1,77 +1,77 @@
-package com.macro.mall.tiny.security.component;
-
-import com.macro.mall.tiny.security.config.IgnoreUrlsConfig;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.HttpMethod;
-import org.springframework.security.access.SecurityMetadataSource;
-import org.springframework.security.access.intercept.AbstractSecurityInterceptor;
-import org.springframework.security.access.intercept.InterceptorStatusToken;
-import org.springframework.security.web.FilterInvocation;
-import org.springframework.util.AntPathMatcher;
-import org.springframework.util.PathMatcher;
-
-import javax.servlet.*;
-import javax.servlet.http.HttpServletRequest;
-import java.io.IOException;
-
-/**
- * 动态权限过滤器,用于实现基于路径的动态权限过滤
- * Created by macro on 2020/2/7.
- */
-public class DynamicSecurityFilter extends AbstractSecurityInterceptor implements Filter {
-
-    @Autowired
-    private DynamicSecurityMetadataSource dynamicSecurityMetadataSource;
-    @Autowired
-    private IgnoreUrlsConfig ignoreUrlsConfig;
-
-    @Autowired
-    public void setMyAccessDecisionManager(DynamicAccessDecisionManager dynamicAccessDecisionManager) {
-        super.setAccessDecisionManager(dynamicAccessDecisionManager);
-    }
-
-    @Override
-    public void init(FilterConfig filterConfig) throws ServletException {
-    }
-
-    @Override
-    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
-        HttpServletRequest request = (HttpServletRequest) servletRequest;
-        FilterInvocation fi = new FilterInvocation(servletRequest, servletResponse, filterChain);
-        //OPTIONS请求直接放行
-        if(request.getMethod().equals(HttpMethod.OPTIONS.toString())){
-            fi.getChain().doFilter(fi.getRequest(), fi.getResponse());
-            return;
-        }
-        //白名单请求直接放行
-        PathMatcher pathMatcher = new AntPathMatcher();
-        for (String path : ignoreUrlsConfig.getUrls()) {
-            if(pathMatcher.match(path,request.getRequestURI())){
-                fi.getChain().doFilter(fi.getRequest(), fi.getResponse());
-                return;
-            }
-        }
-        //此处会调用AccessDecisionManager中的decide方法进行鉴权操作
-        InterceptorStatusToken token = super.beforeInvocation(fi);
-        try {
-            fi.getChain().doFilter(fi.getRequest(), fi.getResponse());
-        } finally {
-            super.afterInvocation(token, null);
-        }
-    }
-
-    @Override
-    public void destroy() {
-    }
-
-    @Override
-    public Class<?> getSecureObjectClass() {
-        return FilterInvocation.class;
-    }
-
-    @Override
-    public SecurityMetadataSource obtainSecurityMetadataSource() {
-        return dynamicSecurityMetadataSource;
-    }
-
-}
+//package com.macro.mall.tiny.security.component;
+//
+//import com.macro.mall.tiny.security.config.IgnoreUrlsConfig;
+//import org.springframework.beans.factory.annotation.Autowired;
+//import org.springframework.http.HttpMethod;
+//import org.springframework.security.access.SecurityMetadataSource;
+//import org.springframework.security.access.intercept.AbstractSecurityInterceptor;
+//import org.springframework.security.access.intercept.InterceptorStatusToken;
+//import org.springframework.security.web.FilterInvocation;
+//import org.springframework.util.AntPathMatcher;
+//import org.springframework.util.PathMatcher;
+//
+//import javax.servlet.*;
+//import javax.servlet.http.HttpServletRequest;
+//import java.io.IOException;
+//
+///**
+// * 动态权限过滤器,用于实现基于路径的动态权限过滤
+// * Created by macro on 2020/2/7.
+// */
+//public class DynamicSecurityFilter extends AbstractSecurityInterceptor implements Filter {
+//
+//    @Autowired
+//    private DynamicSecurityMetadataSource dynamicSecurityMetadataSource;
+//    @Autowired
+//    private IgnoreUrlsConfig ignoreUrlsConfig;
+//
+//    @Autowired
+//    public void setMyAccessDecisionManager(DynamicAccessDecisionManager dynamicAccessDecisionManager) {
+//        super.setAccessDecisionManager(dynamicAccessDecisionManager);
+//    }
+//
+//    @Override
+//    public void init(FilterConfig filterConfig) throws ServletException {
+//    }
+//
+//    @Override
+//    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
+//        HttpServletRequest request = (HttpServletRequest) servletRequest;
+//        FilterInvocation fi = new FilterInvocation(servletRequest, servletResponse, filterChain);
+//        //OPTIONS请求直接放行
+//        if(request.getMethod().equals(HttpMethod.OPTIONS.toString())){
+//            fi.getChain().doFilter(fi.getRequest(), fi.getResponse());
+//            return;
+//        }
+//        //白名单请求直接放行
+//        PathMatcher pathMatcher = new AntPathMatcher();
+//        for (String path : ignoreUrlsConfig.getUrls()) {
+//            if(pathMatcher.match(path,request.getRequestURI())){
+//                fi.getChain().doFilter(fi.getRequest(), fi.getResponse());
+//                return;
+//            }
+//        }
+//        //此处会调用AccessDecisionManager中的decide方法进行鉴权操作
+//        InterceptorStatusToken token = super.beforeInvocation(fi);
+//        try {
+//            fi.getChain().doFilter(fi.getRequest(), fi.getResponse());
+//        } finally {
+//            super.afterInvocation(token, null);
+//        }
+//    }
+//
+//    @Override
+//    public void destroy() {
+//    }
+//
+//    @Override
+//    public Class<?> getSecureObjectClass() {
+//        return FilterInvocation.class;
+//    }
+//
+//    @Override
+//    public SecurityMetadataSource obtainSecurityMetadataSource() {
+//        return dynamicSecurityMetadataSource;
+//    }
+//
+//}

+ 64 - 64
src/main/java/com/macro/mall/tiny/security/component/DynamicSecurityMetadataSource.java

@@ -1,64 +1,64 @@
-package com.macro.mall.tiny.security.component;
-
-import cn.hutool.core.util.URLUtil;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.access.ConfigAttribute;
-import org.springframework.security.web.FilterInvocation;
-import org.springframework.security.web.access.intercept.FilterInvocationSecurityMetadataSource;
-import org.springframework.util.AntPathMatcher;
-import org.springframework.util.PathMatcher;
-
-import javax.annotation.PostConstruct;
-import java.util.*;
-
-/**
- * 动态权限数据源,用于获取动态权限规则
- * Created by macro on 2020/2/7.
- */
-public class DynamicSecurityMetadataSource implements FilterInvocationSecurityMetadataSource {
-
-    private static Map<String, ConfigAttribute> configAttributeMap = null;
-    @Autowired
-    private DynamicSecurityService dynamicSecurityService;
-
-    @PostConstruct
-    public void loadDataSource() {
-        configAttributeMap = dynamicSecurityService.loadDataSource();
-    }
-
-    public void clearDataSource() {
-        configAttributeMap.clear();
-        configAttributeMap = null;
-    }
-
-    @Override
-    public Collection<ConfigAttribute> getAttributes(Object o) throws IllegalArgumentException {
-        if (configAttributeMap == null) this.loadDataSource();
-        List<ConfigAttribute>  configAttributes = new ArrayList<>();
-        //获取当前访问的路径
-        String url = ((FilterInvocation) o).getRequestUrl();
-        String path = URLUtil.getPath(url);
-        PathMatcher pathMatcher = new AntPathMatcher();
-        Iterator<String> iterator = configAttributeMap.keySet().iterator();
-        //获取访问该路径所需资源
-        while (iterator.hasNext()) {
-            String pattern = iterator.next();
-            if (pathMatcher.match(pattern, path)) {
-                configAttributes.add(configAttributeMap.get(pattern));
-            }
-        }
-        // 未设置操作请求权限,返回空集合
-        return configAttributes;
-    }
-
-    @Override
-    public Collection<ConfigAttribute> getAllConfigAttributes() {
-        return null;
-    }
-
-    @Override
-    public boolean supports(Class<?> aClass) {
-        return true;
-    }
-
-}
+//package com.macro.mall.tiny.security.component;
+//
+//import cn.hutool.core.util.URLUtil;
+//import org.springframework.beans.factory.annotation.Autowired;
+//import org.springframework.security.access.ConfigAttribute;
+//import org.springframework.security.web.FilterInvocation;
+//import org.springframework.security.web.access.intercept.FilterInvocationSecurityMetadataSource;
+//import org.springframework.util.AntPathMatcher;
+//import org.springframework.util.PathMatcher;
+//
+//import javax.annotation.PostConstruct;
+//import java.util.*;
+//
+///**
+// * 动态权限数据源,用于获取动态权限规则
+// * Created by macro on 2020/2/7.
+// */
+//public class DynamicSecurityMetadataSource implements FilterInvocationSecurityMetadataSource {
+//
+//    private static Map<String, ConfigAttribute> configAttributeMap = null;
+//    @Autowired
+//    private DynamicSecurityService dynamicSecurityService;
+//
+//    @PostConstruct
+//    public void loadDataSource() {
+//        configAttributeMap = dynamicSecurityService.loadDataSource();
+//    }
+//
+//    public void clearDataSource() {
+//        configAttributeMap.clear();
+//        configAttributeMap = null;
+//    }
+//
+//    @Override
+//    public Collection<ConfigAttribute> getAttributes(Object o) throws IllegalArgumentException {
+//        if (configAttributeMap == null) this.loadDataSource();
+//        List<ConfigAttribute>  configAttributes = new ArrayList<>();
+//        //获取当前访问的路径
+//        String url = ((FilterInvocation) o).getRequestUrl();
+//        String path = URLUtil.getPath(url);
+//        PathMatcher pathMatcher = new AntPathMatcher();
+//        Iterator<String> iterator = configAttributeMap.keySet().iterator();
+//        //获取访问该路径所需资源
+//        while (iterator.hasNext()) {
+//            String pattern = iterator.next();
+//            if (pathMatcher.match(pattern, path)) {
+//                configAttributes.add(configAttributeMap.get(pattern));
+//            }
+//        }
+//        // 未设置操作请求权限,返回空集合
+//        return configAttributes;
+//    }
+//
+//    @Override
+//    public Collection<ConfigAttribute> getAllConfigAttributes() {
+//        return null;
+//    }
+//
+//    @Override
+//    public boolean supports(Class<?> aClass) {
+//        return true;
+//    }
+//
+//}

+ 16 - 16
src/main/java/com/macro/mall/tiny/security/component/DynamicSecurityService.java

@@ -1,16 +1,16 @@
-package com.macro.mall.tiny.security.component;
-
-import org.springframework.security.access.ConfigAttribute;
-
-import java.util.Map;
-
-/**
- * 动态权限相关业务类
- * Created by macro on 2020/2/7.
- */
-public interface DynamicSecurityService {
-    /**
-     * 加载资源ANT通配符和资源对应MAP
-     */
-    Map<String, ConfigAttribute> loadDataSource();
-}
+//package com.macro.mall.tiny.security.component;
+//
+//import org.springframework.security.access.ConfigAttribute;
+//
+//import java.util.Map;
+//
+///**
+// * 动态权限相关业务类
+// * Created by macro on 2020/2/7.
+// */
+//public interface DynamicSecurityService {
+//    /**
+//     * 加载资源ANT通配符和资源对应MAP
+//     */
+//    Map<String, ConfigAttribute> loadDataSource();
+//}

+ 61 - 61
src/main/java/com/macro/mall/tiny/security/component/JwtAuthenticationTokenFilter.java

@@ -1,61 +1,61 @@
-package com.macro.mall.tiny.security.component;
-
-import com.macro.mall.security.util.JwtTokenUtil;
-import org.apache.commons.lang3.StringUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
-import org.springframework.security.core.context.SecurityContextHolder;
-import org.springframework.security.core.userdetails.UserDetails;
-import org.springframework.security.core.userdetails.UserDetailsService;
-import org.springframework.security.web.authentication.WebAuthenticationDetailsSource;
-import org.springframework.web.filter.OncePerRequestFilter;
-
-import javax.servlet.FilterChain;
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import java.io.IOException;
-
-/**
- * JWT登录授权过滤器
- * Created by macro on 2018/4/26.
- */
-public class JwtAuthenticationTokenFilter extends OncePerRequestFilter {
-    private static final Logger LOGGER = LoggerFactory.getLogger(JwtAuthenticationTokenFilter.class);
-    @Autowired
-    private UserDetailsService userDetailsService;
-    @Autowired
-    private JwtTokenUtil jwtTokenUtil;
-    @Value("${jwt.tokenHeader}")
-    private String tokenHeader;
-    @Value("${jwt.tokenHead}")
-    private String tokenHead;
-
-    @Override
-    protected void doFilterInternal(HttpServletRequest request,
-                                    HttpServletResponse response,
-                                    FilterChain chain) throws ServletException, IOException {
-        String authHeader = request.getHeader(this.tokenHeader);
-        if (StringUtils.isBlank(authHeader)) {
-            authHeader = request.getParameter(this.tokenHeader);
-        }
-        if (authHeader != null && authHeader.startsWith(this.tokenHead)) {
-            String authToken = authHeader.substring(this.tokenHead.length());// The part after "Bearer "
-            String username = jwtTokenUtil.getUserNameFromToken(authToken);
-            LOGGER.info("checking username:{}", username);
-            if (username != null && SecurityContextHolder.getContext().getAuthentication() == null) {
-                UserDetails userDetails = this.userDetailsService.loadUserByUsername(username);
-                if (jwtTokenUtil.validateToken(authToken, userDetails)) {
-                    UsernamePasswordAuthenticationToken authentication = new UsernamePasswordAuthenticationToken(userDetails, null, userDetails.getAuthorities());
-                    authentication.setDetails(new WebAuthenticationDetailsSource().buildDetails(request));
-                    LOGGER.info("authenticated user:{}", username);
-                    SecurityContextHolder.getContext().setAuthentication(authentication);
-                }
-            }
-        }
-        chain.doFilter(request, response);
-    }
-}
+//package com.macro.mall.tiny.security.component;
+//
+//import com.macro.mall.security.util.JwtTokenUtil;
+//import org.apache.commons.lang3.StringUtils;
+//import org.slf4j.Logger;
+//import org.slf4j.LoggerFactory;
+//import org.springframework.beans.factory.annotation.Autowired;
+//import org.springframework.beans.factory.annotation.Value;
+//import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
+//import org.springframework.security.core.context.SecurityContextHolder;
+//import org.springframework.security.core.userdetails.UserDetails;
+//import org.springframework.security.core.userdetails.UserDetailsService;
+//import org.springframework.security.web.authentication.WebAuthenticationDetailsSource;
+//import org.springframework.web.filter.OncePerRequestFilter;
+//
+//import javax.servlet.FilterChain;
+//import javax.servlet.ServletException;
+//import javax.servlet.http.HttpServletRequest;
+//import javax.servlet.http.HttpServletResponse;
+//import java.io.IOException;
+//
+///**
+// * JWT登录授权过滤器
+// * Created by macro on 2018/4/26.
+// */
+//public class JwtAuthenticationTokenFilter extends OncePerRequestFilter {
+//    private static final Logger LOGGER = LoggerFactory.getLogger(JwtAuthenticationTokenFilter.class);
+//    @Autowired
+//    private UserDetailsService userDetailsService;
+//    @Autowired
+//    private JwtTokenUtil jwtTokenUtil;
+//    @Value("${jwt.tokenHeader}")
+//    private String tokenHeader;
+//    @Value("${jwt.tokenHead}")
+//    private String tokenHead;
+//
+//    @Override
+//    protected void doFilterInternal(HttpServletRequest request,
+//                                    HttpServletResponse response,
+//                                    FilterChain chain) throws ServletException, IOException {
+//        String authHeader = request.getHeader(this.tokenHeader);
+//        if (StringUtils.isBlank(authHeader)) {
+//            authHeader = request.getParameter(this.tokenHeader);
+//        }
+//        if (authHeader != null && authHeader.startsWith(this.tokenHead)) {
+//            String authToken = authHeader.substring(this.tokenHead.length());// The part after "Bearer "
+//            String username = jwtTokenUtil.getUserNameFromToken(authToken);
+//            LOGGER.info("checking username:{}", username);
+//            if (username != null && SecurityContextHolder.getContext().getAuthentication() == null) {
+//                UserDetails userDetails = this.userDetailsService.loadUserByUsername(username);
+//                if (jwtTokenUtil.validateToken(authToken, userDetails)) {
+//                    UsernamePasswordAuthenticationToken authentication = new UsernamePasswordAuthenticationToken(userDetails, null, userDetails.getAuthorities());
+//                    authentication.setDetails(new WebAuthenticationDetailsSource().buildDetails(request));
+//                    LOGGER.info("authenticated user:{}", username);
+//                    SecurityContextHolder.getContext().setAuthentication(authentication);
+//                }
+//            }
+//        }
+//        chain.doFilter(request, response);
+//    }
+//}

+ 27 - 27
src/main/java/com/macro/mall/tiny/security/component/RestAuthenticationEntryPoint.java

@@ -1,27 +1,27 @@
-package com.macro.mall.tiny.security.component;
-
-import cn.hutool.json.JSONUtil;
-import com.macro.mall.tiny.common.api.CommonResult;
-import org.springframework.security.core.AuthenticationException;
-import org.springframework.security.web.AuthenticationEntryPoint;
-
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import java.io.IOException;
-
-/**
- * 自定义返回结果:未登录或登录过期
- * Created by macro on 2018/5/14.
- */
-public class RestAuthenticationEntryPoint implements AuthenticationEntryPoint {
-    @Override
-    public void commence(HttpServletRequest request, HttpServletResponse response, AuthenticationException authException) throws IOException, ServletException {
-        response.setHeader("Access-Control-Allow-Origin", "*");
-        response.setHeader("Cache-Control","no-cache");
-        response.setCharacterEncoding("UTF-8");
-        response.setContentType("application/json");
-        response.getWriter().println(JSONUtil.parse(CommonResult.unauthorized(authException.getMessage())));
-        response.getWriter().flush();
-    }
-}
+//package com.macro.mall.tiny.security.component;
+//
+//import cn.hutool.json.JSONUtil;
+//import com.macro.mall.tiny.common.api.CommonResult;
+//import org.springframework.security.core.AuthenticationException;
+//import org.springframework.security.web.AuthenticationEntryPoint;
+//
+//import javax.servlet.ServletException;
+//import javax.servlet.http.HttpServletRequest;
+//import javax.servlet.http.HttpServletResponse;
+//import java.io.IOException;
+//
+///**
+// * 自定义返回结果:未登录或登录过期
+// * Created by macro on 2018/5/14.
+// */
+//public class RestAuthenticationEntryPoint implements AuthenticationEntryPoint {
+//    @Override
+//    public void commence(HttpServletRequest request, HttpServletResponse response, AuthenticationException authException) throws IOException, ServletException {
+//        response.setHeader("Access-Control-Allow-Origin", "*");
+//        response.setHeader("Cache-Control","no-cache");
+//        response.setCharacterEncoding("UTF-8");
+//        response.setContentType("application/json");
+//        response.getWriter().println(JSONUtil.parse(CommonResult.unauthorized(authException.getMessage())));
+//        response.getWriter().flush();
+//    }
+//}

+ 29 - 29
src/main/java/com/macro/mall/tiny/security/component/RestfulAccessDeniedHandler.java

@@ -1,29 +1,29 @@
-package com.macro.mall.tiny.security.component;
-
-import cn.hutool.json.JSONUtil;
-import com.macro.mall.tiny.common.api.CommonResult;
-import org.springframework.security.access.AccessDeniedException;
-import org.springframework.security.web.access.AccessDeniedHandler;
-
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import java.io.IOException;
-
-/**
- * 自定义返回结果:没有权限访问时
- * Created by macro on 2018/4/26.
- */
-public class RestfulAccessDeniedHandler implements AccessDeniedHandler{
-    @Override
-    public void handle(HttpServletRequest request,
-                       HttpServletResponse response,
-                       AccessDeniedException e) throws IOException, ServletException {
-        response.setHeader("Access-Control-Allow-Origin", "*");
-        response.setHeader("Cache-Control","no-cache");
-        response.setCharacterEncoding("UTF-8");
-        response.setContentType("application/json");
-        response.getWriter().println(JSONUtil.parse(CommonResult.forbidden(e.getMessage())));
-        response.getWriter().flush();
-    }
-}
+//package com.macro.mall.tiny.security.component;
+//
+//import cn.hutool.json.JSONUtil;
+//import com.macro.mall.tiny.common.api.CommonResult;
+//import org.springframework.security.access.AccessDeniedException;
+//import org.springframework.security.web.access.AccessDeniedHandler;
+//
+//import javax.servlet.ServletException;
+//import javax.servlet.http.HttpServletRequest;
+//import javax.servlet.http.HttpServletResponse;
+//import java.io.IOException;
+//
+///**
+// * 自定义返回结果:没有权限访问时
+// * Created by macro on 2018/4/26.
+// */
+//public class RestfulAccessDeniedHandler implements AccessDeniedHandler{
+//    @Override
+//    public void handle(HttpServletRequest request,
+//                       HttpServletResponse response,
+//                       AccessDeniedException e) throws IOException, ServletException {
+//        response.setHeader("Access-Control-Allow-Origin", "*");
+//        response.setHeader("Cache-Control","no-cache");
+//        response.setCharacterEncoding("UTF-8");
+//        response.setContentType("application/json");
+//        response.getWriter().println(JSONUtil.parse(CommonResult.forbidden(e.getMessage())));
+//        response.getWriter().flush();
+//    }
+//}

+ 21 - 21
src/main/java/com/macro/mall/tiny/security/config/IgnoreUrlsConfig.java

@@ -1,21 +1,21 @@
-package com.macro.mall.tiny.security.config;
-
-import lombok.Getter;
-import lombok.Setter;
-import org.springframework.boot.context.properties.ConfigurationProperties;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * 用于配置白名单资源路径
- * Created by macro on 2018/11/5.
- */
-@Getter
-@Setter
-@ConfigurationProperties(prefix = "secure.ignored")
-public class IgnoreUrlsConfig {
-
-    private List<String> urls = new ArrayList<>();
-
-}
+//package com.macro.mall.tiny.security.config;
+//
+//import lombok.Getter;
+//import lombok.Setter;
+//import org.springframework.boot.context.properties.ConfigurationProperties;
+//
+//import java.util.ArrayList;
+//import java.util.List;
+//
+///**
+// * 用于配置白名单资源路径
+// * Created by macro on 2018/11/5.
+// */
+//@Getter
+//@Setter
+//@ConfigurationProperties(prefix = "secure.ignored")
+//public class IgnoreUrlsConfig {
+//
+//    private List<String> urls = new ArrayList<>();
+//
+//}

+ 127 - 127
src/main/java/com/macro/mall/tiny/security/config/SecurityConfig.java

@@ -1,127 +1,127 @@
-package com.macro.mall.tiny.security.config;
-
-import com.macro.mall.security.util.JwtTokenUtil;
-import com.macro.mall.tiny.security.component.*;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
-import org.springframework.context.annotation.Bean;
-import org.springframework.http.HttpMethod;
-import org.springframework.security.authentication.AuthenticationManager;
-import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
-import org.springframework.security.config.annotation.web.builders.HttpSecurity;
-import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
-import org.springframework.security.config.annotation.web.configurers.ExpressionUrlAuthorizationConfigurer;
-import org.springframework.security.config.http.SessionCreationPolicy;
-import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
-import org.springframework.security.crypto.password.PasswordEncoder;
-import org.springframework.security.web.access.intercept.FilterSecurityInterceptor;
-import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;
-
-
-/**
- * 对SpringSecurity的配置的扩展,支持自定义白名单资源路径和查询用户逻辑
- * Created by macro on 2019/11/5.
- */
-public class SecurityConfig extends WebSecurityConfigurerAdapter {
-
-    @Autowired(required = false)
-    private DynamicSecurityService dynamicSecurityService;
-
-    @Override
-    protected void configure(HttpSecurity httpSecurity) throws Exception {
-        ExpressionUrlAuthorizationConfigurer<HttpSecurity>.ExpressionInterceptUrlRegistry registry = httpSecurity
-                .authorizeRequests();
-        //不需要保护的资源路径允许访问
-        for (String url : ignoreUrlsConfig().getUrls()) {
-            registry.antMatchers(url).permitAll();
-        }
-        //允许跨域请求的OPTIONS请求
-        registry.antMatchers(HttpMethod.OPTIONS)
-                .permitAll();
-        // 任何请求需要身份认证
-        registry.and()
-                .authorizeRequests()
-                .anyRequest()
-                .authenticated()
-                // 关闭跨站请求防护及不使用session
-                .and()
-                .csrf()
-                .disable()
-                .sessionManagement()
-                .sessionCreationPolicy(SessionCreationPolicy.STATELESS)
-                // 自定义权限拒绝处理类
-                .and()
-                .exceptionHandling()
-                .accessDeniedHandler(restfulAccessDeniedHandler())
-                .authenticationEntryPoint(restAuthenticationEntryPoint())
-                // 自定义权限拦截器JWT过滤器
-                .and()
-                .addFilterBefore(jwtAuthenticationTokenFilter(), UsernamePasswordAuthenticationFilter.class);
-        //有动态权限配置时添加动态权限校验过滤器
-        if(dynamicSecurityService!=null){
-            registry.and().addFilterBefore(dynamicSecurityFilter(), FilterSecurityInterceptor.class);
-        }
-    }
-
-    @Override
-    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
-        auth.userDetailsService(userDetailsService())
-                .passwordEncoder(passwordEncoder());
-    }
-
-    @Bean
-    public PasswordEncoder passwordEncoder() {
-        return new BCryptPasswordEncoder();
-    }
-
-    @Bean
-    public JwtAuthenticationTokenFilter jwtAuthenticationTokenFilter() {
-        return new JwtAuthenticationTokenFilter();
-    }
-
-    @Bean
-    @Override
-    public AuthenticationManager authenticationManagerBean() throws Exception {
-        return super.authenticationManagerBean();
-    }
-
-    @Bean
-    public RestfulAccessDeniedHandler restfulAccessDeniedHandler() {
-        return new RestfulAccessDeniedHandler();
-    }
-
-    @Bean
-    public RestAuthenticationEntryPoint restAuthenticationEntryPoint() {
-        return new RestAuthenticationEntryPoint();
-    }
-
-    @Bean
-    public IgnoreUrlsConfig ignoreUrlsConfig() {
-        return new IgnoreUrlsConfig();
-    }
-
-    @Bean
-    public JwtTokenUtil jwtTokenUtil() {
-        return new JwtTokenUtil();
-    }
-
-    @ConditionalOnBean(name = "dynamicSecurityService")
-    @Bean
-    public DynamicAccessDecisionManager dynamicAccessDecisionManager() {
-        return new DynamicAccessDecisionManager();
-    }
-
-
-    @ConditionalOnBean(name = "dynamicSecurityService")
-    @Bean
-    public DynamicSecurityFilter dynamicSecurityFilter() {
-        return new DynamicSecurityFilter();
-    }
-
-    @ConditionalOnBean(name = "dynamicSecurityService")
-    @Bean
-    public DynamicSecurityMetadataSource dynamicSecurityMetadataSource() {
-        return new DynamicSecurityMetadataSource();
-    }
-
-}
+//package com.macro.mall.tiny.security.config;
+//
+//import com.macro.mall.security.util.JwtTokenUtil;
+//import com.macro.mall.tiny.security.component.*;
+//import org.springframework.beans.factory.annotation.Autowired;
+//import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
+//import org.springframework.context.annotation.Bean;
+//import org.springframework.http.HttpMethod;
+//import org.springframework.security.authentication.AuthenticationManager;
+//import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
+//import org.springframework.security.config.annotation.web.builders.HttpSecurity;
+//import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
+//import org.springframework.security.config.annotation.web.configurers.ExpressionUrlAuthorizationConfigurer;
+//import org.springframework.security.config.http.SessionCreationPolicy;
+//import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
+//import org.springframework.security.crypto.password.PasswordEncoder;
+//import org.springframework.security.web.access.intercept.FilterSecurityInterceptor;
+//import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;
+//
+//
+///**
+// * 对SpringSecurity的配置的扩展,支持自定义白名单资源路径和查询用户逻辑
+// * Created by macro on 2019/11/5.
+// */
+//public class SecurityConfig extends WebSecurityConfigurerAdapter {
+//
+//    @Autowired(required = false)
+//    private DynamicSecurityService dynamicSecurityService;
+//
+//    @Override
+//    protected void configure(HttpSecurity httpSecurity) throws Exception {
+//        ExpressionUrlAuthorizationConfigurer<HttpSecurity>.ExpressionInterceptUrlRegistry registry = httpSecurity
+//                .authorizeRequests();
+//        //不需要保护的资源路径允许访问
+//        for (String url : ignoreUrlsConfig().getUrls()) {
+//            registry.antMatchers(url).permitAll();
+//        }
+//        //允许跨域请求的OPTIONS请求
+//        registry.antMatchers(HttpMethod.OPTIONS)
+//                .permitAll();
+//        // 任何请求需要身份认证
+//        registry.and()
+//                .authorizeRequests()
+//                .anyRequest()
+//                .authenticated()
+//                // 关闭跨站请求防护及不使用session
+//                .and()
+//                .csrf()
+//                .disable()
+//                .sessionManagement()
+//                .sessionCreationPolicy(SessionCreationPolicy.STATELESS)
+//                // 自定义权限拒绝处理类
+//                .and()
+//                .exceptionHandling()
+//                .accessDeniedHandler(restfulAccessDeniedHandler())
+//                .authenticationEntryPoint(restAuthenticationEntryPoint())
+//                // 自定义权限拦截器JWT过滤器
+//                .and()
+//                .addFilterBefore(jwtAuthenticationTokenFilter(), UsernamePasswordAuthenticationFilter.class);
+//        //有动态权限配置时添加动态权限校验过滤器
+//        if(dynamicSecurityService!=null){
+//            registry.and().addFilterBefore(dynamicSecurityFilter(), FilterSecurityInterceptor.class);
+//        }
+//    }
+//
+//    @Override
+//    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
+//        auth.userDetailsService(userDetailsService())
+//                .passwordEncoder(passwordEncoder());
+//    }
+//
+//    @Bean
+//    public PasswordEncoder passwordEncoder() {
+//        return new BCryptPasswordEncoder();
+//    }
+//
+//    @Bean
+//    public JwtAuthenticationTokenFilter jwtAuthenticationTokenFilter() {
+//        return new JwtAuthenticationTokenFilter();
+//    }
+//
+//    @Bean
+//    @Override
+//    public AuthenticationManager authenticationManagerBean() throws Exception {
+//        return super.authenticationManagerBean();
+//    }
+//
+//    @Bean
+//    public RestfulAccessDeniedHandler restfulAccessDeniedHandler() {
+//        return new RestfulAccessDeniedHandler();
+//    }
+//
+//    @Bean
+//    public RestAuthenticationEntryPoint restAuthenticationEntryPoint() {
+//        return new RestAuthenticationEntryPoint();
+//    }
+//
+//    @Bean
+//    public IgnoreUrlsConfig ignoreUrlsConfig() {
+//        return new IgnoreUrlsConfig();
+//    }
+//
+//    @Bean
+//    public JwtTokenUtil jwtTokenUtil() {
+//        return new JwtTokenUtil();
+//    }
+//
+//    @ConditionalOnBean(name = "dynamicSecurityService")
+//    @Bean
+//    public DynamicAccessDecisionManager dynamicAccessDecisionManager() {
+//        return new DynamicAccessDecisionManager();
+//    }
+//
+//
+//    @ConditionalOnBean(name = "dynamicSecurityService")
+//    @Bean
+//    public DynamicSecurityFilter dynamicSecurityFilter() {
+//        return new DynamicSecurityFilter();
+//    }
+//
+//    @ConditionalOnBean(name = "dynamicSecurityService")
+//    @Bean
+//    public DynamicSecurityMetadataSource dynamicSecurityMetadataSource() {
+//        return new DynamicSecurityMetadataSource();
+//    }
+//
+//}

+ 30 - 30
src/main/java/com/macro/mall/tiny/security/util/AuthUtil.java

@@ -1,30 +1,30 @@
-package com.macro.mall.tiny.security.util;
-
-import com.macro.mall.tiny.domain.AdminUserDetails;
-import org.springframework.security.core.context.SecurityContextHolder;
-
-/**
- * @author gjs
- * @description
- * @date 2021/3/29 22:01
- */
-public class AuthUtil {
-
-    public static final String COVER = "/cover";
-    public static final String ACCESS = "/visit";
-    public static final String DELETE = "/delete";
-
-    public static boolean checkAccess(AdminUserDetails userDetails, String resource) {
-        for (String url : userDetails.getResourceUrlList()) {
-            if (resource.equals(url)) {
-                return true;
-            }
-        }
-        return false;
-    }
-
-    public static boolean checkAccess(String resource) {
-        AdminUserDetails userDetails = (AdminUserDetails) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
-        return checkAccess(userDetails, resource);
-    }
-}
+//package com.macro.mall.tiny.security.util;
+//
+//import com.macro.mall.tiny.domain.AdminUserDetails;
+//import org.springframework.security.core.context.SecurityContextHolder;
+//
+///**
+// * @author gjs
+// * @description
+// * @date 2021/3/29 22:01
+// */
+//public class AuthUtil {
+//
+//    public static final String COVER = "/cover";
+//    public static final String ACCESS = "/visit";
+//    public static final String DELETE = "/delete";
+//
+//    public static boolean checkAccess(AdminUserDetails userDetails, String resource) {
+//        for (String url : userDetails.getResourceUrlList()) {
+//            if (resource.equals(url)) {
+//                return true;
+//            }
+//        }
+//        return false;
+//    }
+//
+//    public static boolean checkAccess(String resource) {
+//        AdminUserDetails userDetails = (AdminUserDetails) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
+//        return checkAccess(userDetails, resource);
+//    }
+//}

+ 170 - 170
src/main/java/com/macro/mall/tiny/security/util/JwtTokenUtil.java

@@ -1,170 +1,170 @@
-package com.macro.mall.security.util;
-
-import cn.hutool.core.date.DateUtil;
-import cn.hutool.core.util.StrUtil;
-import io.jsonwebtoken.Claims;
-import io.jsonwebtoken.Jwts;
-import io.jsonwebtoken.SignatureAlgorithm;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.security.core.userdetails.UserDetails;
-
-import java.util.Date;
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * JwtToken生成的工具类
- * JWT token的格式:header.payload.signature
- * header的格式(算法、token的类型):
- * {"alg": "HS512","typ": "JWT"}
- * payload的格式(用户名、创建时间、生成时间):
- * {"sub":"wang","created":1489079981393,"exp":1489684781}
- * signature的生成算法:
- * HMACSHA512(base64UrlEncode(header) + "." +base64UrlEncode(payload),secret)
- * Created by macro on 2018/4/26.
- */
-public class JwtTokenUtil {
-    private static final Logger LOGGER = LoggerFactory.getLogger(JwtTokenUtil.class);
-    private static final String CLAIM_KEY_USERNAME = "sub";
-    private static final String CLAIM_KEY_CREATED = "created";
-    @Value("${jwt.secret}")
-    private String secret;
-    @Value("${jwt.expiration}")
-    private Long expiration;
-    @Value("${jwt.tokenHead}")
-    private String tokenHead;
-
-    /**
-     * 根据负责生成JWT的token
-     */
-    private String generateToken(Map<String, Object> claims) {
-        return Jwts.builder()
-                .setClaims(claims)
-                .setExpiration(generateExpirationDate())
-                .signWith(SignatureAlgorithm.HS512, secret)
-                .compact();
-    }
-
-    /**
-     * 从token中获取JWT中的负载
-     */
-    private Claims getClaimsFromToken(String token) {
-        Claims claims = null;
-        try {
-            claims = Jwts.parser()
-                    .setSigningKey(secret)
-                    .parseClaimsJws(token)
-                    .getBody();
-        } catch (Exception e) {
-            LOGGER.info("JWT格式验证失败:{}", token);
-        }
-        return claims;
-    }
-
-    /**
-     * 生成token的过期时间
-     */
-    private Date generateExpirationDate() {
-        return new Date(System.currentTimeMillis() + expiration * 1000);
-    }
-
-    /**
-     * 从token中获取登录用户名
-     */
-    public String getUserNameFromToken(String token) {
-        String username;
-        try {
-            Claims claims = getClaimsFromToken(token);
-            username = claims.getSubject();
-        } catch (Exception e) {
-            username = null;
-        }
-        return username;
-    }
-
-    /**
-     * 验证token是否还有效
-     *
-     * @param token       客户端传入的token
-     * @param userDetails 从数据库中查询出来的用户信息
-     */
-    public boolean validateToken(String token, UserDetails userDetails) {
-        String username = getUserNameFromToken(token);
-        return username.equals(userDetails.getUsername()) && !isTokenExpired(token);
-    }
-
-    /**
-     * 判断token是否已经失效
-     */
-    private boolean isTokenExpired(String token) {
-        Date expiredDate = getExpiredDateFromToken(token);
-        return expiredDate.before(new Date());
-    }
-
-    /**
-     * 从token中获取过期时间
-     */
-    private Date getExpiredDateFromToken(String token) {
-        Claims claims = getClaimsFromToken(token);
-        return claims.getExpiration();
-    }
-
-    /**
-     * 根据用户信息生成token
-     */
-    public String generateToken(UserDetails userDetails) {
-        Map<String, Object> claims = new HashMap<>();
-        claims.put(CLAIM_KEY_USERNAME, userDetails.getUsername());
-        claims.put(CLAIM_KEY_CREATED, new Date());
-        return generateToken(claims);
-    }
-
-    /**
-     * 当原来的token没过期时是可以刷新的
-     *
-     * @param oldToken 带tokenHead的token
-     */
-    public String refreshHeadToken(String oldToken) {
-        if(StrUtil.isEmpty(oldToken)){
-            return null;
-        }
-        String token = oldToken.substring(tokenHead.length());
-        if(StrUtil.isEmpty(token)){
-            return null;
-        }
-        //token校验不通过
-        Claims claims = getClaimsFromToken(token);
-        if(claims==null){
-            return null;
-        }
-        //如果token已经过期,不支持刷新
-        if(isTokenExpired(token)){
-            return null;
-        }
-        //如果token在30分钟之内刚刷新过,返回原token
-        if(tokenRefreshJustBefore(token,30*60)){
-            return token;
-        }else{
-            claims.put(CLAIM_KEY_CREATED, new Date());
-            return generateToken(claims);
-        }
-    }
-
-    /**
-     * 判断token在指定时间内是否刚刚刷新过
-     * @param token 原token
-     * @param time 指定时间(秒)
-     */
-    private boolean tokenRefreshJustBefore(String token, int time) {
-        Claims claims = getClaimsFromToken(token);
-        Date created = claims.get(CLAIM_KEY_CREATED, Date.class);
-        Date refreshDate = new Date();
-        //刷新时间在创建时间的指定时间内
-        if(refreshDate.after(created)&&refreshDate.before(DateUtil.offsetSecond(created,time))){
-            return true;
-        }
-        return false;
-    }
-}
+//package com.macro.mall.security.util;
+//
+//import cn.hutool.core.date.DateUtil;
+//import cn.hutool.core.util.StrUtil;
+//import io.jsonwebtoken.Claims;
+//import io.jsonwebtoken.Jwts;
+//import io.jsonwebtoken.SignatureAlgorithm;
+//import org.slf4j.Logger;
+//import org.slf4j.LoggerFactory;
+//import org.springframework.beans.factory.annotation.Value;
+//import org.springframework.security.core.userdetails.UserDetails;
+//
+//import java.util.Date;
+//import java.util.HashMap;
+//import java.util.Map;
+//
+///**
+// * JwtToken生成的工具类
+// * JWT token的格式:header.payload.signature
+// * header的格式(算法、token的类型):
+// * {"alg": "HS512","typ": "JWT"}
+// * payload的格式(用户名、创建时间、生成时间):
+// * {"sub":"wang","created":1489079981393,"exp":1489684781}
+// * signature的生成算法:
+// * HMACSHA512(base64UrlEncode(header) + "." +base64UrlEncode(payload),secret)
+// * Created by macro on 2018/4/26.
+// */
+//public class JwtTokenUtil {
+//    private static final Logger LOGGER = LoggerFactory.getLogger(JwtTokenUtil.class);
+//    private static final String CLAIM_KEY_USERNAME = "sub";
+//    private static final String CLAIM_KEY_CREATED = "created";
+//    @Value("${jwt.secret}")
+//    private String secret;
+//    @Value("${jwt.expiration}")
+//    private Long expiration;
+//    @Value("${jwt.tokenHead}")
+//    private String tokenHead;
+//
+//    /**
+//     * 根据负责生成JWT的token
+//     */
+//    private String generateToken(Map<String, Object> claims) {
+//        return Jwts.builder()
+//                .setClaims(claims)
+//                .setExpiration(generateExpirationDate())
+//                .signWith(SignatureAlgorithm.HS512, secret)
+//                .compact();
+//    }
+//
+//    /**
+//     * 从token中获取JWT中的负载
+//     */
+//    private Claims getClaimsFromToken(String token) {
+//        Claims claims = null;
+//        try {
+//            claims = Jwts.parser()
+//                    .setSigningKey(secret)
+//                    .parseClaimsJws(token)
+//                    .getBody();
+//        } catch (Exception e) {
+//            LOGGER.info("JWT格式验证失败:{}", token);
+//        }
+//        return claims;
+//    }
+//
+//    /**
+//     * 生成token的过期时间
+//     */
+//    private Date generateExpirationDate() {
+//        return new Date(System.currentTimeMillis() + expiration * 1000);
+//    }
+//
+//    /**
+//     * 从token中获取登录用户名
+//     */
+//    public String getUserNameFromToken(String token) {
+//        String username;
+//        try {
+//            Claims claims = getClaimsFromToken(token);
+//            username = claims.getSubject();
+//        } catch (Exception e) {
+//            username = null;
+//        }
+//        return username;
+//    }
+//
+//    /**
+//     * 验证token是否还有效
+//     *
+//     * @param token       客户端传入的token
+//     * @param userDetails 从数据库中查询出来的用户信息
+//     */
+//    public boolean validateToken(String token, UserDetails userDetails) {
+//        String username = getUserNameFromToken(token);
+//        return username.equals(userDetails.getUsername()) && !isTokenExpired(token);
+//    }
+//
+//    /**
+//     * 判断token是否已经失效
+//     */
+//    private boolean isTokenExpired(String token) {
+//        Date expiredDate = getExpiredDateFromToken(token);
+//        return expiredDate.before(new Date());
+//    }
+//
+//    /**
+//     * 从token中获取过期时间
+//     */
+//    private Date getExpiredDateFromToken(String token) {
+//        Claims claims = getClaimsFromToken(token);
+//        return claims.getExpiration();
+//    }
+//
+//    /**
+//     * 根据用户信息生成token
+//     */
+//    public String generateToken(UserDetails userDetails) {
+//        Map<String, Object> claims = new HashMap<>();
+//        claims.put(CLAIM_KEY_USERNAME, userDetails.getUsername());
+//        claims.put(CLAIM_KEY_CREATED, new Date());
+//        return generateToken(claims);
+//    }
+//
+//    /**
+//     * 当原来的token没过期时是可以刷新的
+//     *
+//     * @param oldToken 带tokenHead的token
+//     */
+//    public String refreshHeadToken(String oldToken) {
+//        if(StrUtil.isEmpty(oldToken)){
+//            return null;
+//        }
+//        String token = oldToken.substring(tokenHead.length());
+//        if(StrUtil.isEmpty(token)){
+//            return null;
+//        }
+//        //token校验不通过
+//        Claims claims = getClaimsFromToken(token);
+//        if(claims==null){
+//            return null;
+//        }
+//        //如果token已经过期,不支持刷新
+//        if(isTokenExpired(token)){
+//            return null;
+//        }
+//        //如果token在30分钟之内刚刷新过,返回原token
+//        if(tokenRefreshJustBefore(token,30*60)){
+//            return token;
+//        }else{
+//            claims.put(CLAIM_KEY_CREATED, new Date());
+//            return generateToken(claims);
+//        }
+//    }
+//
+//    /**
+//     * 判断token在指定时间内是否刚刚刷新过
+//     * @param token 原token
+//     * @param time 指定时间(秒)
+//     */
+//    private boolean tokenRefreshJustBefore(String token, int time) {
+//        Claims claims = getClaimsFromToken(token);
+//        Date created = claims.get(CLAIM_KEY_CREATED, Date.class);
+//        Date refreshDate = new Date();
+//        //刷新时间在创建时间的指定时间内
+//        if(refreshDate.after(created)&&refreshDate.before(DateUtil.offsetSecond(created,time))){
+//            return true;
+//        }
+//        return false;
+//    }
+//}

+ 23 - 0
src/main/java/com/macro/mall/tiny/security/util/ShiroAuthUtil.java

@@ -0,0 +1,23 @@
+package com.macro.mall.tiny.security.util;//package com.macro.mall.tiny.security.util;
+
+import org.apache.shiro.SecurityUtils;
+import org.apache.shiro.subject.Subject;
+
+/**
+ * @author gjs
+ * @description
+ * @date 2021/3/29 22:01
+ */
+public class ShiroAuthUtil {
+
+    public static final String ACCESS = "fileCollect:accessKeyFile";
+    public static final String EDIT = "fileCollect:editKeyFile";
+
+    public static boolean checkAccess(String permission) {
+        return SecurityUtils.getSubject().isPermitted(permission);
+    }
+
+    public static boolean checkAccess(Subject subject, String permission) {
+        return subject.isPermitted(permission);
+    }
+}

+ 44 - 44
src/main/java/com/macro/mall/tiny/security/util/SpringUtil.java

@@ -1,44 +1,44 @@
-package com.macro.mall.security.util;
-
-import org.springframework.beans.BeansException;
-import org.springframework.context.ApplicationContext;
-import org.springframework.context.ApplicationContextAware;
-import org.springframework.stereotype.Component;
-
-/**
- * Spring工具类
- * Created by macro on 2020/3/3.
- */
-@Component
-public class SpringUtil implements ApplicationContextAware {
-
-    private static ApplicationContext applicationContext;
-
-    // 获取applicationContext
-    public static ApplicationContext getApplicationContext() {
-        return applicationContext;
-    }
-
-    @Override
-    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
-        if (SpringUtil.applicationContext == null) {
-            SpringUtil.applicationContext = applicationContext;
-        }
-    }
-
-    // 通过name获取Bean
-    public static Object getBean(String name) {
-        return getApplicationContext().getBean(name);
-    }
-
-    // 通过class获取Bean
-    public static <T> T getBean(Class<T> clazz) {
-        return getApplicationContext().getBean(clazz);
-    }
-
-    // 通过name,以及Clazz返回指定的Bean
-    public static <T> T getBean(String name, Class<T> clazz) {
-        return getApplicationContext().getBean(name, clazz);
-    }
-
-}
+//package com.macro.mall.security.util;
+//
+//import org.springframework.beans.BeansException;
+//import org.springframework.context.ApplicationContext;
+//import org.springframework.context.ApplicationContextAware;
+//import org.springframework.stereotype.Component;
+//
+///**
+// * Spring工具类
+// * Created by macro on 2020/3/3.
+// */
+//@Component
+//public class SpringUtil implements ApplicationContextAware {
+//
+//    private static ApplicationContext applicationContext;
+//
+//    // 获取applicationContext
+//    public static ApplicationContext getApplicationContext() {
+//        return applicationContext;
+//    }
+//
+//    @Override
+//    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
+//        if (SpringUtil.applicationContext == null) {
+//            SpringUtil.applicationContext = applicationContext;
+//        }
+//    }
+//
+//    // 通过name获取Bean
+//    public static Object getBean(String name) {
+//        return getApplicationContext().getBean(name);
+//    }
+//
+//    // 通过class获取Bean
+//    public static <T> T getBean(Class<T> clazz) {
+//        return getApplicationContext().getBean(clazz);
+//    }
+//
+//    // 通过name,以及Clazz返回指定的Bean
+//    public static <T> T getBean(String name, Class<T> clazz) {
+//        return getApplicationContext().getBean(name, clazz);
+//    }
+//
+//}

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

@@ -13,4 +13,17 @@ spring:
 logging:
   level:
     root: info
-    com.macro.mall: debug
+    com.macro.mall: debug
+
+
+com:
+  keystar:
+  shiro:
+  jwt-encrypt: RG0xYUtaa2YyIzhAZ1U0OVlr
+  shiro-security-cache-info: 47.107.126.107:16733
+#  shiro-security-cache-password: keystar.Redis@107#
+  application-key: 398688e7-2ce0-4165-bb18-856bff2ca4b4
+  anon-urls:
+#    - /eprdms/meteorology/webSocket/openSensor
+#    - /eprdms/meteorology/restart/delete
+#    - /eprdms/meteorology/restart/get

+ 3 - 3
src/main/resources/mapper/business/BLineMapper.xml.bak

@@ -7,7 +7,7 @@
 <!--               l.name,-->
 <!--               l.province_id,-->
 <!--               p.province,-->
-<!--               l.creator_id,-->
+<!--               l.creator_name,-->
 <!--               l.create_time,-->
 <!--               t.id            t_id,-->
 <!--               t.sort          t_sort,-->
@@ -30,7 +30,7 @@
 <!--               l.name,-->
 <!--               l.province_id,-->
 <!--               p.province,-->
-<!--               l.creator_id,-->
+<!--               l.creator_name,-->
 <!--               l.create_time,-->
 <!--               t.id            t_id,-->
 <!--               t.sort          t_sort,-->
@@ -58,7 +58,7 @@
 <!--        <result column="name" property="name"/>-->
 <!--        <result column="province_id" property="provinceId"/>-->
 <!--        <result column="province" property="province"/>-->
-<!--        <result column="creator_id" property="creatorId"/>-->
+<!--        <result column="creator_name" property="creatorName"/>-->
 <!--        <result column="create_time" property="createTime"/>-->
 <!--        <collection property="towerList" ofType="com.macro.mall.tiny.modules.business.model.BTower" column="id">-->
 <!--            <id column="t_id" property="id"/>-->

+ 5 - 5
src/main/resources/mapper/business/KrBLineMapper.xml

@@ -14,7 +14,7 @@
                l.service_begintime,
                l.begin_tower,
                l.end_tower,
-               l.creator_id,
+               l.creator_name,
                l.create_time,
                t.id                t_id,
                t.line_id           t_line_id,
@@ -57,7 +57,7 @@
                l.service_begintime,
                l.begin_tower,
                l.end_tower,
-               l.creator_id,
+               l.creator_name,
                l.create_time,
                t.id                t_id,
                t.line_id           t_line_id,
@@ -99,7 +99,7 @@
         l.service_begintime,
         l.begin_tower,
         l.end_tower,
-        l.creator_id,
+        l.creator_name,
         l.create_time,
         t.id t_id,
         t.line_id t_line_id,
@@ -151,7 +151,7 @@
         l.service_begintime,
         l.begin_tower,
         l.end_tower,
-        l.creator_id,
+        l.creator_name,
         l.create_time
         FROM kr_b_line l
         LEFT JOIN kr_b_region_province p ON l.province_id = p.province_id
@@ -180,7 +180,7 @@
         <result column="service_begintime" property="serviceBegintime"/>
         <result column="begin_tower" property="beginTower"/>
         <result column="end_tower" property="endTower"/>
-        <result column="creator_id" property="creatorId"/>
+        <result column="creator_name" property="creatorName"/>
         <result column="create_time" property="createTime"/>
         <collection property="towerList" ofType="com.macro.mall.tiny.modules.business.model.KrBTower" column="id">
             <id column="t_id" property="id"/>

+ 3 - 5
src/main/resources/mapper/business/KrBLineUploadLogMapper.xml

@@ -6,13 +6,11 @@
         SELECT ul.id,
                ul.line_id,
                l.line_name line_name,
-               ul.uploader_id,
-               a.username uploader_name,
+               ul.uploader_name,
                ul.upload_time,
                ul.status
         FROM kr_b_line_upload_log ul
                  LEFT JOIN kr_b_line l ON ul.line_id = l.id
-                 LEFT JOIN ums_admin a ON ul.uploader_id = a.id
         ORDER BY ul.id DESC
         LIMIT #{limit};
     </select>
@@ -21,7 +19,7 @@
     <resultMap id="BaseResultMap" type="com.macro.mall.tiny.modules.business.model.KrBLineUploadLog">
         <id column="id" property="id" />
         <result column="line_name" property="lineName" />
-        <result column="uploader_id" property="uploaderId" />
+        <result column="uploader_name" property="uploaderName" />
         <result column="upload_time" property="uploadTime" />
         <result column="status" property="status" />
         <result column="warn_msg" property="warnMsg" />
@@ -32,7 +30,7 @@
         <id column="id" property="id" />
         <result column="line_id" property="lineId" />
         <result column="line_name" property="lineName" />
-        <result column="uploader_id" property="uploaderId" />
+        <result column="uploader_name" property="uploaderName" />
         <result column="uploader_name" property="uploaderName" />
         <result column="upload_time" property="uploadTime" />
         <result column="status" property="status" />

+ 4 - 4
src/main/resources/mapper/business/KrBTowerMapper.xml

@@ -23,7 +23,7 @@
         service_begintime,
         remark,
         has_file,
-        creator_id,
+        creator_name,
         create_time
         )
         VALUES
@@ -48,7 +48,7 @@
             #{item.serviceBegintime},
             #{item.remark},
             #{item.hasFile},
-            #{item.creatorId},
+            #{item.creatorName},
             #{item.createTime}
             )
         </foreach>
@@ -72,7 +72,7 @@
         remark = VALUES(remark),
         remark = VALUES(remark),
         has_file = VALUES(has_file),
-        creator_id = VALUES(creator_id),
+        creator_name = VALUES(creator_name),
         create_time = VALUES(create_time);
 
     </insert>
@@ -99,7 +99,7 @@
         <result column="service_begintime" property="serviceBegintime"/>
         <result column="remark" property="remark"/>
         <result column="has_file" property="hasFile"/>
-        <result column="creator_id" property="creatorId"/>
+        <result column="creator_name" property="creatorName"/>
         <result column="create_time" property="createTime"/>
     </resultMap>
 

Alguns ficheiros não foram mostrados porque muitos ficheiros mudaram neste diff