Explorar o código

大版本更新

wuweihao %!s(int64=4) %!d(string=hai) anos
pai
achega
c8108fca58
Modificáronse 100 ficheiros con 1973 adicións e 1390 borrados
  1. 0 14
      .gitignore
  2. 0 10
      README.md
  3. 15 5
      gis_domain/pom.xml
  4. 26 0
      gis_admin/src/main/java/com/gis/admin/controller/ApiController.java
  5. 2 2
      gis_web/src/main/java/com/gis/controller/ExceptionController.java
  6. 64 12
      gis_admin/src/main/java/com/gis/controller/IndexController.java
  7. 6 8
      gis_admin/src/main/java/com/gis/controller/LogController.java
  8. 51 0
      gis_admin/src/main/java/com/gis/admin/controller/SysResourceController.java
  9. 22 33
      gis_admin/src/main/java/com/gis/controller/SysRoleController.java
  10. 106 0
      gis_admin/src/main/java/com/gis/admin/controller/SysUserController.java
  11. 1 1
      gis_admin/src/main/java/com/gis/entity/dto/LoginDto.java
  12. 2 2
      gis_admin/src/main/java/com/gis/entity/dto/PasswordRequest.java
  13. 1 3
      gis_domain/src/main/java/com/gis/domain/dto/RegisterDto.java
  14. 1 1
      gis_admin/src/main/java/com/gis/entity/dto/RoleDto.java
  15. 1 1
      gis_admin/src/main/java/com/gis/entity/dto/UserDto.java
  16. 63 0
      gis_admin/src/main/java/com/gis/admin/entity/po/SysResourceEntity.java
  17. 47 0
      gis_admin/src/main/java/com/gis/admin/entity/po/SysRoleEntity.java
  18. 64 0
      gis_admin/src/main/java/com/gis/admin/entity/po/SysUserEntity.java
  19. 12 0
      gis_admin/src/main/java/com/gis/admin/entity/vo/RoleVo.java
  20. 52 0
      gis_admin/src/main/java/com/gis/admin/mapper/SysResourceMapper.java
  21. 46 0
      gis_admin/src/main/java/com/gis/admin/mapper/SysRoleMapper.java
  22. 20 0
      gis_admin/src/main/java/com/gis/admin/mapper/SysUserMapper.java
  23. 35 0
      gis_admin/src/main/java/com/gis/admin/mapper/provider/SysRoleProvider.java
  24. 27 0
      gis_admin/src/main/java/com/gis/admin/service/SysResourceService.java
  25. 38 0
      gis_admin/src/main/java/com/gis/admin/service/SysRoleService.java
  26. 36 0
      gis_admin/src/main/java/com/gis/admin/service/SysUserService.java
  27. 153 0
      gis_admin/src/main/java/com/gis/admin/service/impl/SysResourceServiceImpl.java
  28. 178 0
      gis_admin/src/main/java/com/gis/admin/service/impl/SysRoleServiceImpl.java
  29. 214 0
      gis_admin/src/main/java/com/gis/admin/service/impl/SysUserServiceImpl.java
  30. 28 0
      gis_admin/src/main/java/com/gis/admin/shiro/JwtToken.java
  31. 267 0
      gis_admin/src/main/java/com/gis/admin/shiro/ShiroConfig.java
  32. 107 0
      gis_admin/src/main/java/com/gis/admin/tree/SysResourceTreeUtil.java
  33. 51 0
      gis_admin/src/main/java/com/gis/admin/tree/vo/SysResourceTree.java
  34. 0 141
      gis_admin/src/main/java/com/gis/controller/BaseController.java
  35. 0 162
      gis_admin/src/main/java/com/gis/controller/SysUserController.java
  36. 0 41
      gis_admin/src/main/java/com/gis/mapper/provider/LogProvider.java
  37. 0 140
      gis_admin/src/main/java/com/gis/shiro/JWTFilter.java
  38. 0 23
      gis_admin/src/main/java/com/gis/shiro/JWTToken.java
  39. 0 130
      gis_admin/src/main/java/com/gis/shiro/MyRealm.java
  40. 0 114
      gis_admin/src/main/java/com/gis/shiro/ShiroConfig.java
  41. 13 24
      gis_application/pom.xml
  42. 0 13
      gis_application/src/main/java/com/gis/ServletInitializer.java
  43. 2 4
      gis_application/src/main/resources/application-dev.properties
  44. 0 82
      gis_application/src/main/resources/application-pro.properties
  45. 0 77
      gis_application/src/main/resources/application-sit.properties
  46. 2 2
      gis_application/src/main/resources/application.properties
  47. 0 17
      gis_application/src/main/resources/data/images.json
  48. 0 11
      gis_application/src/main/resources/data/shutdown.sh
  49. 0 89
      gis_application/src/main/resources/data/someData.json
  50. 0 29
      gis_application/src/main/resources/data/start.sh
  51. 0 13
      gis_application/src/main/resources/data/win/startup.sh
  52. 0 11
      gis_application/src/main/resources/data/win/stop.sh
  53. 9 6
      gis_web/pom.xml
  54. 7 7
      gis_web/src/main/java/com/gis/controller/BarrageController.java
  55. 8 10
      gis_web/src/main/java/com/gis/controller/CommentController.java
  56. 8 8
      gis_web/src/main/java/com/gis/controller/GoodsController.java
  57. 8 8
      gis_web/src/main/java/com/gis/controller/MartyrController.java
  58. 5 5
      gis_web/src/main/java/com/gis/controller/MournController.java
  59. 8 8
      gis_web/src/main/java/com/gis/controller/NewsController.java
  60. 10 7
      gis_web/src/main/java/com/gis/controller/QuestionGroupController.java
  61. 6 6
      gis_web/src/main/java/com/gis/controller/SensitiveController.java
  62. 34 49
      gis_web/src/main/java/com/gis/controller/WebController.java
  63. 12 9
      gis_web/src/main/java/com/gis/controller/WebManageController.java
  64. 1 1
      gis_domain/src/main/java/com/gis/domain/dto/AuditDto.java
  65. 1 1
      gis_domain/src/main/java/com/gis/domain/dto/CommentDto.java
  66. 1 1
      gis_domain/src/main/java/com/gis/domain/dto/ContentDto.java
  67. 1 1
      gis_domain/src/main/java/com/gis/domain/dto/GoodsDto.java
  68. 1 1
      gis_domain/src/main/java/com/gis/domain/dto/MartyrDto.java
  69. 1 1
      gis_domain/src/main/java/com/gis/domain/dto/MournDto.java
  70. 1 1
      gis_domain/src/main/java/com/gis/domain/dto/NewsDto.java
  71. 1 1
      gis_domain/src/main/java/com/gis/domain/dto/NewsPageDataDto.java
  72. 1 3
      gis_domain/src/main/java/com/gis/domain/dto/QuestionAnswerDto.java
  73. 1 1
      gis_domain/src/main/java/com/gis/domain/dto/QuestionGroupDto.java
  74. 56 0
      gis_cms/src/main/java/com/gis/cms/entity/dto/RegisterDto.java
  75. 1 1
      gis_domain/src/main/java/com/gis/domain/dto/ResetPasswordDto.java
  76. 1 1
      gis_domain/src/main/java/com/gis/domain/dto/StatusPageDataDto.java
  77. 1 1
      gis_domain/src/main/java/com/gis/domain/dto/TypePageDateDto.java
  78. 1 2
      gis_domain/src/main/java/com/gis/domain/po/AuditLogEntity.java
  79. 1 1
      gis_domain/src/main/java/com/gis/domain/po/BarrageEntity.java
  80. 1 1
      gis_domain/src/main/java/com/gis/domain/po/CommentEntity.java
  81. 1 1
      gis_domain/src/main/java/com/gis/domain/po/FileEntity.java
  82. 1 1
      gis_domain/src/main/java/com/gis/domain/po/GoodsEntity.java
  83. 1 1
      gis_domain/src/main/java/com/gis/domain/po/MartyrEntity.java
  84. 1 1
      gis_domain/src/main/java/com/gis/domain/po/MournEntity.java
  85. 1 1
      gis_domain/src/main/java/com/gis/domain/po/NewsEntity.java
  86. 1 1
      gis_domain/src/main/java/com/gis/domain/po/QuestionAnswerEntity.java
  87. 1 1
      gis_domain/src/main/java/com/gis/domain/po/QuestionGroupEntity.java
  88. 1 1
      gis_domain/src/main/java/com/gis/domain/po/QuestionUserEntity.java
  89. 1 1
      gis_domain/src/main/java/com/gis/domain/po/SensitiveEntity.java
  90. 1 1
      gis_domain/src/main/java/com/gis/domain/vo/BarrageVo.java
  91. 1 1
      gis_domain/src/main/java/com/gis/domain/vo/CommentVo.java
  92. 2 2
      gis_mapper/src/main/java/com/gis/mapper/AuditLogMapper.java
  93. 4 4
      gis_mapper/src/main/java/com/gis/mapper/BarrageMapper.java
  94. 4 4
      gis_mapper/src/main/java/com/gis/mapper/CommentMapper.java
  95. 2 2
      gis_mapper/src/main/java/com/gis/mapper/FileMapper.java
  96. 4 4
      gis_mapper/src/main/java/com/gis/mapper/GoodsMapper.java
  97. 2 2
      gis_mapper/src/main/java/com/gis/mapper/MartyrMapper.java
  98. 2 2
      gis_mapper/src/main/java/com/gis/mapper/MournMapper.java
  99. 2 2
      gis_mapper/src/main/java/com/gis/mapper/NewsMapper.java
  100. 0 0
      gis_mapper/src/main/java/com/gis/mapper/QuestionAnswerMapper.java

+ 0 - 14
.gitignore

@@ -1,14 +0,0 @@
-# ---> Java
-*.class
-
-# Mobile Tools for Java (J2ME)
-.mtj.tmp/
-
-# Package Files #
-*.jar
-*.war
-*.ear
-
-# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
-hs_err_pid*
-

+ 0 - 10
README.md

@@ -1,10 +0,0 @@
-# army_xinjiang
-
-新疆军史馆
-
-
-需求: 角色权限
-
-      系统管理的角色: 角色key只能写死 , 权限控制到api级别, 系统管理可以使用角色key控制, 系统管理的可以,要预先设置且不能删除
-      内容管理角色: 权限控制到ui, 内容管理直接使用资源key
-

+ 15 - 5
gis_domain/pom.xml

@@ -1,15 +1,14 @@
-<?xml version="1.0" encoding="UTF-8"?>
 <project xmlns="http://maven.apache.org/POM/4.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
     <parent>
         <artifactId>army_xinjiang</artifactId>
         <groupId>com.gis</groupId>
         <version>1.0.0</version>
     </parent>
-    <modelVersion>4.0.0</modelVersion>
 
-    <artifactId>gis_domain</artifactId>
+    <modelVersion>4.0.0</modelVersion>
+    <artifactId>gis_admin</artifactId>
     <packaging>jar</packaging>
 
     <dependencies>
@@ -17,6 +16,17 @@
             <groupId>com.gis</groupId>
             <artifactId>gis_common</artifactId>
         </dependency>
+
+        <!-- shiro -->
+        <dependency>
+            <groupId>org.apache.shiro</groupId>
+            <artifactId>shiro-spring-boot-starter</artifactId>
+        </dependency>
+
     </dependencies>
 
-</project>
+
+
+
+
+</project>

+ 26 - 0
gis_admin/src/main/java/com/gis/admin/controller/ApiController.java

@@ -0,0 +1,26 @@
+package com.gis.admin.controller;
+
+import com.gis.common.util.Result;
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import springfox.documentation.annotations.ApiIgnore;
+
+import java.time.LocalDateTime;
+
+/**
+ * Created by owen on 2021/7/7 0007 8:27
+ */
+@ApiIgnore
+@Api(tags = "api-demo")
+@RestController
+@RequestMapping("api")
+public class ApiController {
+
+
+    @GetMapping("test")
+    public Result test(){
+        return Result.success("我是api: " +  LocalDateTime.now());
+    }
+}

+ 2 - 2
gis_web/src/main/java/com/gis/controller/ExceptionController.java

@@ -1,6 +1,6 @@
-package com.gis.controller;
+package com.gis.admin.controller;
 
-import com.gis.common.exception.BaseRuntimeException;
+import com.gis.common.base.exception.BaseRuntimeException;
 import com.gis.common.util.Result;
 import lombok.extern.log4j.Log4j2;
 import org.apache.shiro.ShiroException;

+ 64 - 12
gis_admin/src/main/java/com/gis/controller/IndexController.java

@@ -1,11 +1,16 @@
-package com.gis.controller;
+package com.gis.admin.controller;
 
+import com.gis.common.base.entity.po.LogEntity;
+import com.gis.common.base.service.LogService;
+import com.gis.common.constant.ConfigConstant;
 import com.gis.common.util.JwtUtil;
 import com.gis.common.util.PasswordUtils;
 import com.gis.common.util.Result;
-import com.gis.entity.dto.LoginDto;
-import com.gis.entity.po.SysUserEntity;
-import com.gis.service.SysUserService;
+import com.gis.admin.entity.po.SysUserEntity;
+import com.gis.admin.service.SysResourceService;
+import com.gis.admin.service.SysRoleService;
+import com.gis.admin.service.SysUserService;
+import com.gis.admin.entity.dto.LoginDto;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.log4j.Log4j2;
@@ -18,9 +23,12 @@ import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RestController;
 import springfox.documentation.annotations.ApiIgnore;
 
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
 import javax.validation.Valid;
 import java.time.LocalDateTime;
 import java.util.HashMap;
+import java.util.Set;
 import java.util.concurrent.TimeUnit;
 
 /**
@@ -29,18 +37,37 @@ import java.util.concurrent.TimeUnit;
 @Api(tags = "sys-登录")
 @RestController
 @Log4j2
-public class IndexController extends BaseController{
+public class IndexController {
 
+    @Autowired
+    private LogService logService;
 
     @Autowired
     private SysUserService userService;
 
     @Autowired
+    SysRoleService sysRoleService;
+
+    @Autowired
+    SysResourceService sysResourceService;
+
+    @Autowired
     private RedisTemplate<String, String> redisTemplate;
 
+    @Autowired
+    ConfigConstant configConstant;
+
+    @Resource
+    protected HttpServletRequest request;
+
+
+
+    // 目前是24h
+    private static Integer TOKEN_EXPIRE = 1000 * 60 * 60 * 24;
+
     @ApiOperation("登录")
     @PostMapping(value = "admin/login")
-    public Result login(@Valid @RequestBody LoginDto param) throws Exception {
+    public Result login(@Valid @RequestBody LoginDto param)  {
 
         // 1.获取用户
         SysUserEntity entity = userService.findByUserName(param.getUserName());
@@ -67,26 +94,31 @@ public class IndexController extends BaseController{
         }
 
         // 检查账号是否启用
-        if (entity.getStatus() != 1) {
+        if (entity.getIsDisable() != 0) {
             log.error("账号已停用: {}", entity.getUserName());
             return Result.failure("账号已停用");
         }
 
         // 创建新token
+        Long userId = entity.getId();
         HashMap<String, Object> tokenMap = new HashMap<>();
         tokenMap.put("userName", entity.getUserName());
-        tokenMap.put("id", entity.getId());
-
+        tokenMap.put("id", userId);
+        Object role = getRole(userId);
+        tokenMap.put("role", role);
         // 创建新token
         String token = JwtUtil.createJWT(TOKEN_EXPIRE, tokenMap);
 
+
         HashMap<String, Object> result = new HashMap<>();
         result.put("user", entity);
         result.put("token", token);
+        // 角色控制系统管理(sys_admin)、内容管理
+        result.put("role", role);
+
 
         // 保存操作日志
-        String remoteAddr = request.getRemoteAddr();
-//        saveLog(new LogEntity(entity.getId(),"登录管理","用户登录", remoteAddr));
+        saveLog(userId);
 
 
         // 更新到 redis, 有效期24h, 旧token无效, 做单用户登录
@@ -100,7 +132,7 @@ public class IndexController extends BaseController{
     @ApiOperation("退出")
     @GetMapping("admin/logout")
     public Result logout() {
-        String token = getToken();
+        String token = request.getHeader("token");
         if (StringUtils.isBlank(token)) {
             log.info("token is null");
         }
@@ -119,5 +151,25 @@ public class IndexController extends BaseController{
     }
 
 
+    /**
+     * 保存日志
+     * @param userId
+     */
+    private void saveLog(Long userId){
+        LogEntity entity = new LogEntity(userId, "登录管理", "用户登录", request.getRemoteAddr());
+        logService.save(entity);
+    }
+
+
+    /**
+     * 获取角色key
+     * @param userId
+     * @return
+     */
+    private Set<String> getRole(Long userId){
+        Set<String> roleKeys = sysRoleService.findRoleKeyByUserId(userId);
+        return roleKeys;
+    }
+
 
 }

+ 6 - 8
gis_admin/src/main/java/com/gis/controller/LogController.java

@@ -1,10 +1,10 @@
-package com.gis.controller;
+package com.gis.admin.controller;
 
 
 import com.gis.common.base.entity.dto.PageDateDto;
-import com.gis.common.util.Result;
 import com.gis.common.base.entity.vo.LogVo;
 import com.gis.common.base.service.LogService;
+import com.gis.common.util.Result;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.log4j.Log4j2;
@@ -24,9 +24,9 @@ import org.springframework.web.bind.annotation.RestController;
 @Log4j2
 @Api(tags = "sys-日志管理")
 @RestController
-@RequestMapping("manage/log")
+@RequestMapping("sys/log")
 @RequiresRoles(value = {"sys_admin"}, logical = Logical.OR)
-public class LogController extends BaseController {
+public class LogController  {
 
     @Autowired
     public LogService logService;
@@ -35,10 +35,8 @@ public class LogController extends BaseController {
     @ApiOperation("列表")
     @PostMapping("list")
     public Result<LogVo> list(@RequestBody PageDateDto param) {
-//        startPage(param);
-//        PageInfo<LogVo> page = new PageInfo<>(logService.search(param));
-//        return Result.success(page);
-        return Result.success();
+
+        return logService.search(param);
     }
 
 }

+ 51 - 0
gis_admin/src/main/java/com/gis/admin/controller/SysResourceController.java

@@ -0,0 +1,51 @@
+package com.gis.admin.controller;
+
+
+import com.gis.common.base.aop.WebControllerLog;
+import com.gis.common.util.Result;
+import com.gis.admin.service.SysResourceService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.apache.shiro.authz.annotation.RequiresRoles;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+
+/**
+ * Created by owen on 2021/7/6 0018 12:17common
+ * 日志管理,只有admin权限访问
+ */
+
+@Api(tags = "sys-资源管理")
+@RestController
+@RequestMapping("sys/resource")
+public class SysResourceController  {
+
+
+    @Autowired
+    SysResourceService entityService;
+
+    @RequiresRoles("sys_admin")
+    @ApiOperation("获取树资源")
+    @GetMapping("getTreeResource")
+    public Result getTreeResource() {
+        return entityService.getTreeResource();
+    }
+
+    @ApiOperation("获取用户权限资源树")
+    @GetMapping("getTreePermissions")
+    public Result getTreePermissions() {
+        return entityService.getTreeAllPermissionsByUserId();
+    }
+
+    @RequiresRoles("sys_admin")
+    @WebControllerLog(description = "资源管理-删除缓存", addDb = true)
+    @ApiOperation(value = "删除缓存", notes = "更新资源表,需要刷新缓存")
+    @GetMapping("refresh")
+    public Result refreshRedisResource() {
+        return entityService.refreshRedisResource();
+    }
+
+}

+ 22 - 33
gis_admin/src/main/java/com/gis/controller/SysRoleController.java

@@ -1,11 +1,10 @@
-package com.gis.controller;
+package com.gis.admin.controller;
 
 import com.gis.common.base.aop.WebControllerLog;
 import com.gis.common.base.entity.dto.PageDto;
 import com.gis.common.util.Result;
-import com.gis.entity.dto.RoleDto;
-import com.gis.service.SysResourceService;
-import com.gis.service.SysRoleService;
+import com.gis.admin.entity.dto.RoleDto;
+import com.gis.admin.service.SysRoleService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
@@ -23,68 +22,55 @@ import javax.validation.Valid;
 @Slf4j
 @Api(tags = "sys-角色管理")
 @RestController
-@RequestMapping("manage/role")
+@RequestMapping("sys/role")
 @RequiresRoles("sys_admin") //需要admin角色才可以访问此controller
-public class SysRoleController extends BaseController {
+public class SysRoleController  {
 
     @Autowired
     private SysRoleService roleService;
 
-    @Autowired
-    private SysResourceService resourceService;
-
 
     /**
      * 超级管理员角色只有一个
+     * @RequiresPermissions("admin:role:list")
      */
-//    @RequiresPermissions("admin:role:list")
     @WebControllerLog(description = "角色权限-查询列表")
     @ApiOperation("列表/搜索")
     @PostMapping("list")
     public Result list(@RequestBody PageDto param){
-        return roleService.search(param);
+        return roleService.listCount(param);
     }
 
-    /**
-     * 超级管理员角色只有一个
-     */
-//    @ApiOperation("获取角色")
-//    @GetMapping("")
-//    public Result find(){
-//        Condition condition = new Condition(SysRoleEntity.class);
-//        condition.and().andNotEqualTo("roleKey", "admin");
-//        List<SysRoleEntity> result = roleService.findAll(condition, "sort desc");
-//        return Result.success(result);
+//    @WebControllerLog(description = "角色权限-查询列表")
+//    @ApiOperation("列表/搜索(统计人数)")
+//    @PostMapping("listCount")
+//    public Result listCount(@RequestBody PageDto param){
+//        return roleService.listCount(param);
 //    }
 
-    @ApiOperation("获取资源")
-    @GetMapping("getResource")
-    public Result getResource() {
-        return resourceService.getResource();
-    }
-
-
-
 
     @ApiOperation("查询角色对应的权限")
     @GetMapping("detail/{id}")
     public Result detail(@PathVariable Long id) {
         return roleService.detail(id);
-
     }
 
 
-
     @WebControllerLog(description = "角色权限-新增/修改", addDb = true)
     @ApiOperation("新增或修改")
     @PostMapping("save")
     public Result save(@Valid @RequestBody RoleDto param){
         return roleService.saveEntity(param);
+    }
 
-
+    @WebControllerLog(description = "角色管理-角色启用/停用", addDb = true)
+    @ApiOperation(value = "角色启用/停用", notes = "isDisable-> 0:可用, 1:禁用")
+    @GetMapping("editStatus/{id}/{isDisable}")
+    public Result editStatus(@PathVariable Long id, @PathVariable Integer isDisable){
+        return roleService.editStatus(id, isDisable);
     }
 
-    @WebControllerLog(description = "角色权限-角色删除")
+    @WebControllerLog(description = "角色权限-角色删除", addDb = true)
     @ApiOperation("删除角色")
     @GetMapping("remove/{id}")
     public Result remove(@PathVariable Long id){
@@ -93,4 +79,7 @@ public class SysRoleController extends BaseController {
     }
 
 
+
+
+
 }

+ 106 - 0
gis_admin/src/main/java/com/gis/admin/controller/SysUserController.java

@@ -0,0 +1,106 @@
+package com.gis.admin.controller;
+
+
+import com.gis.common.base.aop.WebControllerLog;
+import com.gis.common.base.entity.dto.PageDto;
+import com.gis.common.util.Result;
+import com.gis.admin.entity.dto.PasswordDto;
+import com.gis.admin.entity.dto.UserDto;
+import com.gis.admin.entity.po.SysUserEntity;
+import com.gis.admin.service.SysUserService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.log4j.Log4j2;
+import org.apache.shiro.authz.annotation.Logical;
+import org.apache.shiro.authz.annotation.RequiresRoles;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+
+/**
+ * Created by owen on 2020/2/18 0018 12:17
+ */
+@Log4j2
+@Api(tags = "sys-用户管理")
+@RestController
+@RequestMapping("sys/user")
+public class SysUserController {
+
+    @Autowired
+    private SysUserService userService;
+
+    @RequiresRoles(value = {"sys_admin"}, logical = Logical.OR)
+    @ApiOperation("用户列表")
+    @PostMapping("list")
+    public Result<SysUserEntity> list(@RequestBody PageDto param) {
+        return userService.search(param);
+    }
+
+    @RequiresRoles(value = {"sys_admin"}, logical = Logical.OR)
+    @WebControllerLog(description = "用户管理-修改用户", addDb = true)
+    @ApiOperation("新增/修改用户信息")
+    @PostMapping("save")
+    public Result save(@Valid @RequestBody UserDto param) {
+        return userService.saveEntity(param);
+    }
+
+
+    @ApiOperation("查询用户信息")
+    @GetMapping("detail/{id}")
+    public Result<SysUserEntity> detail(@PathVariable Long id) {
+        SysUserEntity user = userService.findById(id);
+
+        if (user == null) {
+            log.error("用户不存在: {}", id);
+            return Result.failure("用户不存在");
+        }
+        return Result.success(user);
+    }
+
+    @WebControllerLog(description = "用户管理-修改密码", addDb = true)
+    @ApiOperation("修改密码")
+    @PostMapping("updatePwd")
+    public Result updatePwd(@Valid @RequestBody PasswordDto param) {
+        return userService.updatePwd(param);
+
+    }
+
+
+    @RequiresRoles(value = {"sys_admin"}, logical = Logical.OR)
+    @WebControllerLog(description = "用户管理-重置密码", addDb = true)
+    @ApiOperation("重置密码")
+    @GetMapping("resetPass/{id}")
+    public Result resetPass(@PathVariable Long id) {
+        return userService.resetPass(id);
+
+    }
+
+
+    @RequiresRoles(value = {"sys_admin"}, logical = Logical.OR)
+    @WebControllerLog(description = "用户管理-启用、停用账户")
+    @ApiOperation(value = "启用、停用账户", notes = "isDisable-> 0:可用, 1:禁用")
+    @GetMapping("editStatus/{id}/{isDisable}")
+    public Result editStatus(@PathVariable Long id, @PathVariable Integer isDisable) {
+        return userService.editStatus(id, isDisable);
+
+    }
+
+
+    @RequiresRoles(value = {"sys_admin"}, logical = Logical.OR)
+    @WebControllerLog(description = "用户管理-删除",addDb = true)
+    @ApiOperation("删除")
+    @GetMapping("removes/{ids}")
+    public Result removes(@PathVariable String ids) {
+        return userService.removes(ids);
+    }
+
+    @RequiresRoles(value = {"sys_admin"}, logical = Logical.OR)
+    @WebControllerLog(description = "用户管理-获取角色")
+    @ApiOperation("获取角色")
+    @GetMapping("getRole")
+    public Result getRole() {
+        return userService.getRole();
+    }
+}
+

+ 1 - 1
gis_admin/src/main/java/com/gis/entity/dto/LoginDto.java

@@ -1,4 +1,4 @@
-package com.gis.entity.dto;
+package com.gis.admin.entity.dto;
 
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;

+ 2 - 2
gis_admin/src/main/java/com/gis/entity/dto/PasswordRequest.java

@@ -1,4 +1,4 @@
-package com.gis.entity.dto;
+package com.gis.admin.entity.dto;
 
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -9,7 +9,7 @@ import javax.validation.constraints.NotBlank;
  * Created by owen on 2020/5/9 0009 12:20
  */
 @Data
-public class PasswordRequest {
+public class PasswordDto {
 
     @NotBlank(message = "旧密码不能为空")
     @ApiModelProperty(value = "旧密码", name = "oldPassword", required = true)

+ 1 - 3
gis_domain/src/main/java/com/gis/domain/dto/RegisterDto.java

@@ -1,11 +1,9 @@
-package com.gis.domain.dto;
+package com.gis.admin.entity.dto;
 
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import org.hibernate.validator.constraints.Length;
 
-import javax.validation.constraints.Max;
-import javax.validation.constraints.Min;
 import javax.validation.constraints.NotBlank;
 import javax.validation.constraints.NotNull;
 

+ 1 - 1
gis_admin/src/main/java/com/gis/entity/dto/RoleDto.java

@@ -1,4 +1,4 @@
-package com.gis.entity.dto;
+package com.gis.admin.entity.dto;
 
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;

+ 1 - 1
gis_admin/src/main/java/com/gis/entity/dto/UserDto.java

@@ -1,4 +1,4 @@
-package com.gis.entity.dto;
+package com.gis.admin.entity.dto;
 
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;

+ 63 - 0
gis_admin/src/main/java/com/gis/admin/entity/po/SysResourceEntity.java

@@ -0,0 +1,63 @@
+package com.gis.admin.entity.po;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import com.gis.common.base.entity.po.BaseEntity;
+import lombok.Data;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Table;
+import javax.persistence.Transient;
+import java.io.Serializable;
+
+/**
+ * Created by owen on 2021/6/28 0010 17:39
+ * 资源表
+ */
+
+@Data
+@Entity
+@Table(name = "sys_resource")
+public class SysResourceEntity extends BaseEntity implements Serializable {
+
+    /**
+     *
+     */
+    private static final long serialVersionUID = -293343757324080501L;
+
+    @Column(length = 50)
+    private String name;
+
+    // 描述
+    @JSONField(serialize = false)
+    @Column(name = "description")
+    private String description;
+
+    @JSONField(serialize = false)
+    @Column(name = "url")
+    private String url;
+
+//    @Column(length = 10)
+//    private String icon;
+
+//    @JSONField(serialize = false)
+    @Column(name = "resource_key")
+    private String resourceKey;
+
+    // 前端需要传menu、button
+    @Column(columnDefinition = "enum('menu','button')")
+    private String resourceType;
+
+    @Column(length = 2)
+    private Integer sort;
+
+    @Column(name = "parent_id")
+    private Long parentId;
+
+    /** 封装权限字段,不需要映射到数据库, 默认有全部权限*/
+    @Transient
+//    private Boolean authority ;
+    private Boolean authority = true;
+
+
+}

+ 47 - 0
gis_admin/src/main/java/com/gis/admin/entity/po/SysRoleEntity.java

@@ -0,0 +1,47 @@
+package com.gis.admin.entity.po;
+
+import com.gis.common.base.entity.po.BaseEntity;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.persistence.Entity;
+import javax.persistence.Table;
+import javax.persistence.Transient;
+import java.io.Serializable;
+
+/**
+ * Created by owen on 2021/6/28 0010 17:39
+ * 角色表
+ */
+
+@Data
+@Entity
+@Table(name = "sys_role")
+public class SysRoleEntity extends BaseEntity implements Serializable {
+
+
+    private static final long serialVersionUID = -8093446477843493946L;
+
+    @ApiModelProperty(value = "角色名称")
+    private String roleName;
+
+    @ApiModelProperty(value = "角色描述")
+    private String roleDesc;
+
+    /**
+     * roleKey,前缀sys_开头的数据不能删除
+     * 以下角色,在数据库定义好
+     */
+    @ApiModelProperty(value = "角色key", notes = "角色,sys_admin:系统管理员,sys_high:高级管理员, sys_normal:普通管理员, sys_visitor:游客,内部指定的角色,才用的上key")
+    private String roleKey;
+
+    @ApiModelProperty(value = "排序")
+    private String sort;
+
+    @ApiModelProperty(value = "状态 0:启用(默认值)  1:禁用")
+    private Integer isDisable;
+
+    @Transient
+    @ApiModelProperty(value = "该角色的用户数")
+    private Integer count;
+}

+ 64 - 0
gis_admin/src/main/java/com/gis/admin/entity/po/SysUserEntity.java

@@ -0,0 +1,64 @@
+package com.gis.admin.entity.po;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import com.gis.common.base.entity.po.BaseEntity;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.persistence.Entity;
+import javax.persistence.Table;
+import java.io.Serializable;
+
+/**
+ * 用户表
+ */
+@Data
+@Entity
+@Table(name = "sys_user")
+public class SysUserEntity extends BaseEntity implements Serializable {
+
+    private static final long serialVersionUID = -853504493430501564L;
+
+    @ApiModelProperty(value = "身份证号(军号)")
+    private String userName;
+
+    @JSONField(serialize = false)
+    private String password;
+
+    @ApiModelProperty(value = "真实姓名")
+    private String realName;
+
+    @ApiModelProperty(value = "昵称")
+    private String nickName;
+
+    @ApiModelProperty(value = "性别 0:男  1:女")
+    private Integer sex;
+
+    @ApiModelProperty(value = "电话")
+    private String phone;
+
+    @ApiModelProperty(value = "单位")
+    private String unit;
+
+//    @ApiModelProperty(value = "地址")
+//    private String address;
+
+//    @ApiModelProperty(value = "超级管理员,1:是, 0:否")
+//    private Integer sysManager;
+
+    @ApiModelProperty(value = "状态 0:启用(默认值)  1:禁用")
+    private Integer isDisable;
+
+//    @ApiModelProperty(value = "高清图url")
+//    private String img;
+
+    @ApiModelProperty(value = "缩略图url")
+    private String thumb;
+
+    @JSONField(serialize = false)
+    @ApiModelProperty(value = "角色,sys_admin:系统管理员,sys_high:高级管理员, sys_normal:普通管理员, sys_visitor:游客")
+    private String role;
+
+
+
+}

+ 12 - 0
gis_admin/src/main/java/com/gis/admin/entity/vo/RoleVo.java

@@ -0,0 +1,12 @@
+package com.gis.admin.entity.vo;
+
+import lombok.Data;
+
+/**
+ * Created by owen on 2021/7/8 0008 17:20
+ */
+@Data
+public class RoleVo {
+
+
+}

+ 52 - 0
gis_admin/src/main/java/com/gis/admin/mapper/SysResourceMapper.java

@@ -0,0 +1,52 @@
+package com.gis.admin.mapper;
+
+import com.gis.common.base.mapper.IBaseMapper;
+import com.gis.admin.entity.po.SysResourceEntity;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Select;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+
+/**
+ * Created by owen on 2020/2/18 0018 11:13
+ */
+@Mapper
+@Component
+public interface SysResourceMapper extends IBaseMapper<SysResourceEntity, Long> {
+
+//    @Select(value = "select * from sys_role_resource z left join sys_resource r ON z.resource_id = r.id where z.role_id= #{roleId}")
+//    List<SysResourceEntity> findRoleResourceByRoleId(Long roleId);
+
+
+    /**
+     * 根据用户id查询权限
+     * 没有left ,直接用join,就不会前后表关联了
+     */
+    @Select(value = "select b.id, b.name, b.parent_id, b.resource_type, b.resource_key from " +
+            "((sys_user u left join sys_user_role ur on u.id = ur.user_id) " +
+            " join sys_role r on r.id = ur.role_id) " +
+            " join sys_role_resource a on r.id = a.role_id " +
+            " join sys_resource b on b.id = a.resource_id WHERE u.id = #{userId}")
+    List<SysResourceEntity> findResourceByUserId(Long userId);
+
+    /** 根据角色id查询权限 */
+    @Select(value = "select b.id, b.name, b.parent_id, b.resource_type, b.resource_key from " +
+            " sys_role r join sys_role_resource a on r.id = a.role_id " +
+            " join sys_resource b on b.id = a.resource_id WHERE r.is_delete=0 and r.id = #{roleId}")
+    List<SysResourceEntity> findResourceByRoleId(Long roleId);
+
+    @Select(value = "select b.id from " +
+            "((sys_user u left join sys_user_role ur on u.id = ur.user_id) " +
+            " join sys_role r on r.id = ur.role_id) " +
+            " join sys_role_resource a on r.id = a.role_id " +
+            " join sys_resource b on b.id = a.resource_id WHERE u.id = #{userId}")
+    List<String> getAllIdByUserId(Long userId);
+
+    /** 根据角色id查询权限 */
+    @Select(value = "select b.id from " +
+            " sys_role r join sys_role_resource a on r.id = a.role_id " +
+            " join sys_resource b on b.id = a.resource_id WHERE r.is_delete=0 and r.id = #{roleId}")
+    List<String> getAllIdByRoleId(Long roleId);
+}

+ 46 - 0
gis_admin/src/main/java/com/gis/admin/mapper/SysRoleMapper.java

@@ -0,0 +1,46 @@
+package com.gis.admin.mapper;
+
+import com.gis.admin.mapper.provider.SysRoleProvider;
+import com.gis.common.base.entity.dto.PageDto;
+import com.gis.common.base.mapper.IBaseMapper;
+import com.gis.admin.entity.po.SysRoleEntity;
+import org.apache.ibatis.annotations.*;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.Set;
+
+/**
+ * Created by owen on 2020/2/18 0018 11:13
+ */
+@Component
+@Mapper
+public interface SysRoleMapper extends IBaseMapper<SysRoleEntity, Long> {
+
+
+    @Select(value = "insert into sys_role_resource (role_id, resource_id) values (#{roleId}, #{resourceId});")
+    void saveRoleResource(Long roleId, Long resourceId);
+
+    @Select(value = "delete from sys_role_resource where role_id=#{roleId}")
+    void deleteRoleResource(Long roleId);
+
+
+    @Select(value = "select z.role_key from sys_user_role ur left join sys_role z on z.id = ur.role_id where z.is_delete=0 and ur.user_id = #{userId}")
+    Set<String> findRoleKeyByUserId(Long userId);
+
+    @Delete(value = "delete from sys_user_role where user_id=#{userId}")
+    void deleteUserRoleByUserId(Long userId);
+
+    @Insert(value = "insert into sys_user_role (user_id, role_id) values (#{userId}, #{roleId})")
+    void saveUserRole(Long userId, Long roleId);
+
+    @Update("update sys_role set is_disable = #{isDisable} , update_time = NOW() where is_delete=0 and id = #{id} ")
+    void setIsDisable(Long id, Integer isDisable);
+
+//    @Select("SELECT a.*, count(*) as count " +
+//            "FROM sys_role a left JOIN sys_user_role b on b.role_id=a.id WHERE a.is_delete=0  GROUP BY a.id ")
+//    List<SysRoleEntity> listCount();
+
+    @SelectProvider(type = SysRoleProvider.class, method = "search")
+    List<SysRoleEntity> listCount(PageDto param);
+}

+ 20 - 0
gis_admin/src/main/java/com/gis/admin/mapper/SysUserMapper.java

@@ -0,0 +1,20 @@
+package com.gis.admin.mapper;
+
+
+import com.gis.common.base.mapper.IBaseMapper;
+import com.gis.admin.entity.po.SysUserEntity;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Select;
+import org.springframework.stereotype.Component;
+
+
+@Component
+@Mapper
+public interface SysUserMapper extends IBaseMapper<SysUserEntity, Long> {
+
+
+    @Select(value = "select * from sys_user where is_delete = '0' AND user_name= #{userName}")
+    SysUserEntity findByUserName(String userName);
+
+
+}

+ 35 - 0
gis_admin/src/main/java/com/gis/admin/mapper/provider/SysRoleProvider.java

@@ -0,0 +1,35 @@
+package com.gis.admin.mapper.provider;
+
+import com.gis.common.base.entity.dto.PageDto;
+import lombok.extern.log4j.Log4j2;
+import org.apache.commons.lang3.StringUtils;
+
+
+/**
+ * Created by owen on 2020/6/13 0013 10:56
+ */
+@Log4j2
+public class SysRoleProvider {
+
+    public String search(PageDto param) {
+        StringBuffer sql = new StringBuffer(
+                "select a.*, count(*) as count from sys_role a left JOIN sys_user_role b on b.role_id=a.id WHERE a.is_delete=0 ");
+
+        String searchKey = param.getSearchKey();
+        if (!StringUtils.isAllBlank(searchKey)) {
+            searchKey = StringUtils.trim(searchKey);
+            sql.append(" and ( a.role_name like '%").append(searchKey).append("%' )");
+        }
+
+        sql.append(" GROUP BY a.id");
+
+        sql.append(" order by a.create_time desc");
+        log.info("sql: {}", sql.toString());
+        return sql.toString();
+    }
+
+
+}
+
+
+

+ 27 - 0
gis_admin/src/main/java/com/gis/admin/service/SysResourceService.java

@@ -0,0 +1,27 @@
+package com.gis.admin.service;
+
+import com.gis.common.base.service.IBaseService;
+import com.gis.common.util.Result;
+import com.gis.admin.entity.po.SysResourceEntity;
+import com.gis.admin.tree.vo.SysResourceTree;
+
+import java.util.List;
+import java.util.Set;
+
+/**
+ * Created by owen on 2020/2/19 0019 10:22
+ */
+public interface SysResourceService extends IBaseService<SysResourceEntity, Long> {
+
+
+    Set<String> getPermissionByUserId(Long userId);
+
+    Result getTreeResource();
+
+    Result getTreeAllPermissionsByUserId();
+
+    Result refreshRedisResource();
+
+    List<SysResourceTree> getTreeAllPermissionsByRoleId(Long roleId);
+
+}

+ 38 - 0
gis_admin/src/main/java/com/gis/admin/service/SysRoleService.java

@@ -0,0 +1,38 @@
+package com.gis.admin.service;
+
+import com.gis.common.base.entity.dto.PageDto;
+import com.gis.common.base.service.IBaseService;
+import com.gis.common.util.Result;
+import com.gis.admin.entity.dto.RoleDto;
+import com.gis.admin.entity.po.SysRoleEntity;
+
+import java.util.Set;
+
+/**
+ * Created by owen on 2020/2/18 0018 11:36
+ */
+public interface SysRoleService extends IBaseService<SysRoleEntity, Long> {
+
+    void saveRoleResource(Long roleId, Long resourceId);
+
+    void deleteRoleResource(Long roleId);
+
+    Set<String> findRoleKeyByUserId(Long userId);
+
+    Result saveEntity(RoleDto param);
+
+    Result search(PageDto param);
+
+    void deleteUserRoleByUserId(Long userId);
+
+    void saveUserRole(Long userId, Long roleId);
+
+    Result remove(Long id);
+
+    Result detail(Long id);
+
+
+    Result editStatus(Long id, Integer isDisable);
+
+    Result listCount(PageDto param);
+}

+ 36 - 0
gis_admin/src/main/java/com/gis/admin/service/SysUserService.java

@@ -0,0 +1,36 @@
+package com.gis.admin.service;
+
+
+import com.gis.common.base.entity.dto.PageDto;
+import com.gis.common.base.service.IBaseService;
+import com.gis.common.util.Result;
+import com.gis.admin.entity.dto.PasswordDto;
+import com.gis.admin.entity.dto.UserDto;
+import com.gis.admin.entity.dto.RegisterDto;
+import com.gis.admin.entity.po.SysUserEntity;
+
+
+/**
+ * Created by owen on 2020/3/11 0011 16:14
+ */
+public interface SysUserService extends IBaseService<SysUserEntity, Long> {
+
+
+    SysUserEntity findByUserName(String userName);
+
+    Result saveEntity(UserDto param);
+
+    Result removes(String ids);
+
+    Result<SysUserEntity> search(PageDto param);
+
+    Result updatePwd(PasswordDto param);
+
+    Result resetPass(Long id);
+
+    Result editStatus(Long id, Integer isDisable);
+
+    Result register(RegisterDto param);
+
+    Result getRole();
+}

+ 153 - 0
gis_admin/src/main/java/com/gis/admin/service/impl/SysResourceServiceImpl.java

@@ -0,0 +1,153 @@
+package com.gis.admin.service.impl;
+
+import com.alibaba.fastjson.JSON;
+import com.gis.common.base.mapper.IBaseMapper;
+import com.gis.common.base.service.impl.IBaseServiceImpl;
+import com.gis.common.util.Result;
+import com.gis.admin.entity.po.SysResourceEntity;
+import com.gis.admin.mapper.SysResourceMapper;
+import com.gis.admin.service.SysResourceService;
+import com.gis.admin.service.SysRoleService;
+import com.gis.admin.tree.SysResourceTreeUtil;
+import com.gis.admin.tree.vo.SysResourceTree;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.*;
+import java.util.concurrent.TimeUnit;
+
+
+/**
+ * Created by owen on 2020/2/18 0018 11:37
+ */
+@Slf4j
+@Service
+@Transactional
+public class SysResourceServiceImpl extends IBaseServiceImpl<SysResourceEntity, Long> implements SysResourceService {
+
+    @Autowired
+    private SysResourceMapper resourceMapper;
+
+    @Autowired
+    SysRoleService sysRoleService;
+
+
+    @Override
+    public IBaseMapper<SysResourceEntity, Long> getBaseMapper() {
+        return this.resourceMapper;
+    }
+
+
+    private List<String> getAllIdByUserId(Long userId) {
+        return resourceMapper.getAllIdByUserId(userId);
+    }
+
+
+
+    @Override
+    public Set<String> getPermissionByUserId(Long userId) {
+        List<SysResourceEntity> list = resourceMapper.findResourceByUserId(userId);
+        Set<String> permissions = new HashSet<>();
+        for (SysResourceEntity i : list) {
+            permissions.add(i.getResourceKey());
+        }
+        return permissions;
+    }
+
+    @Override
+    public Result getTreeResource() {
+        List<SysResourceEntity> all = findCacheAll();
+        SysResourceTreeUtil tree = new SysResourceTreeUtil(all);
+        return Result.success(tree.buildTree());
+    }
+
+
+    /**
+     * 获取所有权限列表
+     * 会把所有权限都会列出来的,通过Authority判断是否有权限
+     *
+     * 只控制button
+     * @return
+     */
+    @Override
+    public Result getTreeAllPermissionsByUserId() {
+        Long userId = getTokenUserId();
+        SysResourceTreeUtil tree ;
+        List<SysResourceEntity> cacheAll = findCacheAll();
+
+        // 设置用户权限
+        List roles = getTokenRole();
+        // 系统管理员, 拥有所有权限
+        if (roles.contains("sys_admin")) {
+            tree = new SysResourceTreeUtil(cacheAll);
+        } else {
+            List<String> ids = getAllIdByUserId(userId);
+            tree = new SysResourceTreeUtil(getAllPer(ids));
+        }
+        return Result.success(tree.buildTree());
+    }
+
+
+    @Override
+    public List<SysResourceTree> getTreeAllPermissionsByRoleId(Long roleId) {
+        List<String> ids = getAllIdByRoleId(roleId);
+        List<SysResourceEntity> allPer = getAllPer(ids);
+        return new SysResourceTreeUtil(allPer).buildTree();
+    }
+
+    /**
+     * 处理authority 是否有权限
+     * @param perIds 有权限的id集合
+     * @return
+     */
+    private List<SysResourceEntity> getAllPer(List<String> perIds) {
+        List<SysResourceEntity> cacheAll = findCacheAll();
+        List<SysResourceEntity> results =  new ArrayList<>();
+        for (SysResourceEntity entity : cacheAll) {
+            // 默认是true, 把没有权限的对象设置false, 只对按钮设置
+            if (!perIds.contains(entity.getId().toString()) && entity.getResourceType().equals("button")) {
+                entity.setAuthority(false);
+            }
+            results.add(entity);
+        }
+        return results;
+    }
+
+
+    private List<String> getAllIdByRoleId(Long roleId) {
+        return resourceMapper.getAllIdByRoleId(roleId);
+    }
+
+    @Override
+    public Result refreshRedisResource() {
+        String resourceKey = configConstant.redisPrefix + "resource";
+        redisTemplate.delete(resourceKey);
+        return Result.success();
+    }
+
+
+
+    /**
+     * 获取db所有资源, authority默认true
+     * @return
+     */
+    private List<SysResourceEntity> findCacheAll(){
+        String resourceKey = configConstant.redisPrefix + "resource";
+        List<SysResourceEntity> resourceEntityAll = null;
+        String all = redisTemplate.opsForValue().get(resourceKey);
+        if (all != null) {
+            log.info("走缓存");
+            resourceEntityAll =  JSON.parseArray(all, SysResourceEntity.class);
+        } else {
+            log.info("从数据库获取");
+            resourceEntityAll = this.findAll();
+            // 直接存list.toString, 转list 时会异常, 存的时候处理一下
+            redisTemplate.opsForValue().set(resourceKey, JSON.toJSONString(resourceEntityAll), Long.parseLong("6"), TimeUnit.HOURS);
+        }
+        return resourceEntityAll;
+
+    }
+
+}

+ 178 - 0
gis_admin/src/main/java/com/gis/admin/service/impl/SysRoleServiceImpl.java

@@ -0,0 +1,178 @@
+package com.gis.admin.service.impl;
+
+import com.gis.common.base.entity.dto.PageDto;
+import com.gis.common.base.mapper.IBaseMapper;
+import com.gis.common.base.service.impl.IBaseServiceImpl;
+import com.gis.common.util.Result;
+import com.gis.admin.entity.dto.RoleDto;
+import com.gis.admin.entity.po.SysRoleEntity;
+import com.gis.admin.mapper.SysRoleMapper;
+import com.gis.admin.service.SysResourceService;
+import com.gis.admin.service.SysRoleService;
+import com.gis.admin.tree.vo.SysResourceTree;
+import com.github.pagehelper.PageInfo;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import tk.mybatis.mapper.entity.Condition;
+
+import java.time.LocalDateTime;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Set;
+
+
+/**
+ * Created by owen on 2020/2/18 0018 11:37
+ */
+@Slf4j
+@Service
+@Transactional(rollbackFor=Exception.class)
+public class SysRoleServiceImpl extends IBaseServiceImpl<SysRoleEntity, Long> implements SysRoleService {
+
+    @Autowired
+    private SysRoleMapper entityMapper;
+
+    @Override
+    public IBaseMapper<SysRoleEntity, Long> getBaseMapper() {
+        return this.entityMapper;
+    }
+
+    @Autowired
+    SysResourceService sysResourceService;
+
+
+    @Override
+    public void saveRoleResource(Long roleId, Long resourceId) {
+        entityMapper.saveRoleResource(roleId, resourceId);
+    }
+
+    @Override
+    public void deleteRoleResource(Long roleId) {
+        entityMapper.deleteRoleResource(roleId);
+    }
+
+
+    @Override
+    public Set<String> findRoleKeyByUserId(Long userId) {
+        return entityMapper.findRoleKeyByUserId(userId);
+    }
+
+    @Override
+    public Result saveEntity(RoleDto param) {
+        if (StringUtils.isBlank(param.getRoleName())){
+            log.error("角色名称不能为空");
+            return Result.failure("角色名称不能为空");
+        }
+
+        if (param.getResources() == null){
+            log.error("权限不能为空");
+            return Result.failure("权限不能为空");
+        }
+
+
+        SysRoleEntity roleEntity = null;
+        int n = 0;
+
+        if (param.getId() == null) {
+            roleEntity = new SysRoleEntity();
+            BeanUtils.copyProperties(param, roleEntity);
+            n = this.save(roleEntity);
+        } else {
+            roleEntity = this.findById(param.getId());
+            if (roleEntity == null) {
+                log.error("此角色不存在");
+                return Result.failure("此角色不存在");
+
+            }
+            BeanUtils.copyProperties(param, roleEntity);
+            roleEntity.setUpdateTime(LocalDateTime.now());
+            n = this.update(roleEntity);
+
+            // 每次修改,删除角色资源表信息,重新添加
+            this.deleteRoleResource(param.getId());
+        }
+
+        // 添加权限
+        if (n >= 0){
+            if (param.getResources() != null){
+                for (long i : param.getResources()) {
+                    this.saveRoleResource(roleEntity.getId(), i);
+                }
+                return Result.success();
+            }
+        }
+
+        return Result.failure("保存失败");
+    }
+
+    @Override
+    public Result search(PageDto param) {
+        startPage(param);
+        Condition condition = new Condition(SysRoleEntity.class);
+        // 参数名是属性
+        String searchKey = param.getSearchKey();
+        if (StringUtils.isNotBlank(searchKey)) {
+            condition.and().andLike("roleName", "%" + param.getSearchKey()+ "%");
+        }
+        // 排除系统管理员
+        condition.and().andNotEqualTo("roleKey", "sys_admin");
+        PageInfo<SysRoleEntity> pageInfo = this.findAll(condition, param.getPageNum(), param.getPageSize());
+        return Result.success(pageInfo);
+    }
+
+    @Override
+    public void deleteUserRoleByUserId(Long userId) {
+        entityMapper.deleteUserRoleByUserId(userId);
+    }
+
+    @Override
+    public void saveUserRole(Long userId, Long roleId) {
+        entityMapper.saveUserRole(userId, roleId);
+    }
+
+    @Override
+    public Result remove(Long id) {
+        SysRoleEntity roleEntity = this.findById(id);
+        if (roleEntity.getRoleKey().startsWith("sys_")) {
+            return Result.failure("系统预设角色不能删除");
+        }
+        // db数据真删除, 会把中间表数据也删除
+        this.deleteById(id);
+        return Result.success();
+    }
+
+    @Override
+    public Result detail(Long id) {
+        SysRoleEntity roleEntity = this.findById(id);
+        List<SysResourceTree> permission = new ArrayList<>();
+        if (roleEntity != null) {
+             permission = sysResourceService.getTreeAllPermissionsByRoleId(id);
+        }
+
+        HashMap<Object, Object> resultMap = new HashMap<>();
+        resultMap.put("role", roleEntity);
+        resultMap.put("permission", permission);
+
+        return Result.success(resultMap);
+    }
+
+    @Override
+    public Result editStatus(Long id, Integer isDisable) {
+        entityMapper.setIsDisable(id, isDisable);
+        return Result.success();
+    }
+
+    @Override
+    public Result listCount(PageDto param) {
+        startPage(param);
+        List<SysRoleEntity> lists = entityMapper.listCount(param);
+        return Result.success(new PageInfo<>(lists));
+    }
+
+
+}

+ 214 - 0
gis_admin/src/main/java/com/gis/admin/service/impl/SysUserServiceImpl.java

@@ -0,0 +1,214 @@
+package com.gis.admin.service.impl;
+
+import com.gis.admin.entity.po.SysRoleEntity;
+import com.gis.common.base.aop.WebControllerLog;
+import com.gis.common.base.entity.dto.PageDto;
+import com.gis.common.base.entity.po.LogEntity;
+import com.gis.common.base.mapper.IBaseMapper;
+import com.gis.common.base.service.LogService;
+import com.gis.common.base.service.impl.IBaseServiceImpl;
+import com.gis.common.util.JwtUtil;
+import com.gis.common.util.PasswordUtils;
+import com.gis.common.util.Result;
+import com.gis.admin.entity.dto.PasswordDto;
+import com.gis.admin.entity.dto.UserDto;
+import com.gis.admin.entity.dto.RegisterDto;
+import com.gis.admin.entity.po.SysUserEntity;
+import com.gis.admin.mapper.SysUserMapper;
+import com.gis.admin.service.SysRoleService;
+import com.gis.admin.service.SysUserService;
+import com.github.pagehelper.PageInfo;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import tk.mybatis.mapper.entity.Condition;
+
+import java.time.LocalDateTime;
+import java.util.List;
+import java.util.Set;
+
+
+/**
+ * Created by owen on 2021/6/29 0011 16:16
+ */
+@Slf4j
+@Service
+@Transactional
+public class SysUserServiceImpl extends IBaseServiceImpl<SysUserEntity, Long> implements SysUserService {
+
+    @Autowired
+    private SysUserMapper entityMapper;
+
+    @Autowired
+    SysRoleService sysRoleService;
+
+    @Autowired
+    LogService logService;
+
+    @Override
+    public IBaseMapper<SysUserEntity, Long> getBaseMapper() {
+        return this.entityMapper;
+    }
+
+    @Override
+    public SysUserEntity findByUserName(String userName) {
+        return entityMapper.findByUserName(userName);
+    }
+
+    @Override
+    public Result saveEntity(UserDto param) {
+        SysUserEntity entity = null;
+        Long id = param.getId();
+        if (id == null) {
+            entity = this.findByUserName(param.getUserName());
+            if (entity != null) {
+                return Result.failure("身份证号已存在");
+            }
+            entity = new SysUserEntity();
+            BeanUtils.copyProperties(param, entity);
+            entity.setPassword(PasswordUtils.encrypt(param.getUserName(), "123456", PasswordUtils.getStaticSalt()));
+            this.save(entity);
+            id = entity.getId();
+        } else {
+            entity = this.findById(id);
+            if (entity == null) {
+                log.error("用户不存在: {}", id);
+                return Result.failure("用户不存在");
+            }
+            BeanUtils.copyProperties(param, entity);
+            entity.setUpdateTime(LocalDateTime.now());
+            this.update(entity);
+
+            // 每次修改,删除用户角色表信息,重新添加
+            sysRoleService.deleteUserRoleByUserId(id);
+        }
+
+
+        // 更新用户角色表
+        Long roleId = param.getRoleId();
+        if (roleId != null) {
+            sysRoleService.saveUserRole(id, roleId);
+        }
+
+        return Result.success();
+    }
+
+    @Override
+    public Result removes(String ids) {
+
+        List<SysUserEntity> entityList = this.findByIds(ids);
+        for (SysUserEntity entity: entityList) {
+            Long id = entity.getId();
+            Set<String> roleKeys = sysRoleService.findRoleKeyByUserId(id);
+            if (roleKeys.contains("sys_admin")) {
+                log.error("管理员账户不能删除 {}", id);
+                return Result.failure("管理员账户不能删除");
+            }
+            entity.setIsDelete(1);
+            entity.setUpdateTime(LocalDateTime.now());
+            this.update(entity);
+        }
+
+        return Result.success();
+    }
+
+    @Override
+    public Result<SysUserEntity> search(PageDto param) {
+        startPage(param);
+        PageInfo<SysUserEntity> page = new PageInfo<>(this.findAll());
+        return Result.success(page);
+    }
+
+    @Override
+    public Result updatePwd(PasswordDto param) {
+        SysUserEntity user = this.findByUserName(JwtUtil.getUsername(getToken()));
+
+        // 验证原密码
+        Boolean isBoolean = PasswordUtils.decrypt(user.getPassword(), param.getOldPassword(), PasswordUtils.getStaticSalt());
+        if (!isBoolean) {
+            log.error("原始密码错误");
+            return Result.failure("原始密码错误");
+        }
+
+        user.setPassword(PasswordUtils.encrypt(user.getUserName(), param.getNewPassword(), PasswordUtils.getStaticSalt()));
+        user.setUpdateTime(LocalDateTime.now());
+        this.update(user);
+        return Result.success();
+    }
+
+    @Override
+    public Result resetPass(Long id) {
+        SysUserEntity user = this.findById(id);
+
+        if (user == null) {
+            log.error("用户不存在: {}", id);
+            return Result.failure("用户不存在");
+        }
+
+        user.setPassword(PasswordUtils.encrypt(user.getUserName(), "123456", PasswordUtils.getStaticSalt()));
+        user.setUpdateTime(LocalDateTime.now());
+        this.update(user);
+        return Result.success();
+    }
+
+    @Override
+    public Result editStatus(Long id, Integer isDisable) {
+
+        SysUserEntity user = this.findById(id);
+        if (user == null) {
+            log.error("用户不存在: {}", id);
+            return Result.failure("用户不存在");
+        }
+
+        if ("sys_admin".equals(user.getRole())) {
+            log.error("管理员账户不能停用/注销: {}", id);
+            return Result.failure("管理员账户不能停用/注销");
+        }
+
+        user.setIsDisable(isDisable);
+        user.setUpdateTime(LocalDateTime.now());
+        this.update(user);
+        return Result.success();
+    }
+
+    @Override
+    public Result register(RegisterDto param) {
+        if (!param.getPassword().equals(param.getVerifyPassword())) {
+            log.error("确认密码不一致");
+            return Result.failure("确认密码不一致");
+        }
+
+        SysUserEntity entity = this.findByUserName(param.getUserName());
+        if (entity != null) {
+            log.error("该身份证号已注册: {}", param.getUserName());
+            return Result.failure("该身份证号已注册");
+        }
+
+        entity = new SysUserEntity();
+        BeanUtils.copyProperties(param, entity);
+
+        entity.setPassword(PasswordUtils.encrypt(param.getUserName(), param.getPassword(), PasswordUtils.getStaticSalt()));
+        entity.setIsDisable(0);
+        this.save(entity);
+
+        // 设置默认角色, 2:sys_visitor游客角色
+//        int a = 1/0;
+        Long userId = entity.getId();
+        sysRoleService.saveUserRole(userId, Long.valueOf("2"));
+
+        // 保存操作日志
+        logService.save(new LogEntity(userId,"用户注册","新增用户", request.getRemoteAddr()));
+        return Result.success();
+    }
+
+    @Override
+    public Result getRole() {
+        Condition condition = new Condition(SysRoleEntity.class);
+        condition.and().andEqualTo("isEnabled", 1);
+        return Result.success(sysRoleService.findAll(condition));
+    }
+
+
+}

+ 28 - 0
gis_admin/src/main/java/com/gis/admin/shiro/JwtToken.java

@@ -0,0 +1,28 @@
+package com.gis.admin.shiro;
+ 
+import org.apache.shiro.authc.AuthenticationToken;
+
+/**
+ * @Author Scott
+ * @create 2018-07-12 15:19
+ * @desc
+ **/
+public class JwtToken implements AuthenticationToken {
+	
+	private static final long serialVersionUID = 1L;
+	private String token;
+ 
+    public JwtToken(String token) {
+        this.token = token;
+    }
+ 
+    @Override
+    public Object getPrincipal() {
+        return token;
+    }
+ 
+    @Override
+    public Object getCredentials() {
+        return token;
+    }
+}

+ 267 - 0
gis_admin/src/main/java/com/gis/admin/shiro/ShiroConfig.java

@@ -0,0 +1,267 @@
+package com.gis.admin.shiro;
+
+import com.gis.admin.shiro.filters.CustomShiroFilterFactoryBean;
+import com.gis.admin.shiro.filters.JwtFilter;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.shiro.mgt.DefaultSessionStorageEvaluator;
+import org.apache.shiro.mgt.DefaultSubjectDAO;
+import org.apache.shiro.mgt.SecurityManager;
+import org.apache.shiro.spring.LifecycleBeanPostProcessor;
+import org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor;
+import org.apache.shiro.spring.web.ShiroFilterFactoryBean;
+import org.apache.shiro.web.mgt.DefaultWebSecurityManager;
+import org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.DependsOn;
+import org.springframework.core.env.Environment;
+import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
+
+import javax.annotation.Resource;
+import javax.servlet.Filter;
+import java.util.*;
+
+/**
+ * @author: Scott
+ * @date: 2018/2/7
+ * @description: shiro 配置类
+ */
+
+@Slf4j
+@Configuration
+public class ShiroConfig {
+
+//    @Value("${jeecg.shiro.excludeUrls}")
+//    private String excludeUrls;
+    @Resource
+    LettuceConnectionFactory lettuceConnectionFactory;
+    @Autowired
+    private Environment env;
+
+
+    /**
+     * Filter Chain定义说明
+     *
+     * 1、一个URL可以配置多个Filter,使用逗号分隔
+     * 2、当设置多个过滤器时,全部验证通过,才视为通过
+     * 3、部分过滤器可指定参数,如perms,roles
+     */
+    @Bean("shiroFilter")
+    public ShiroFilterFactoryBean shiroFilter(SecurityManager securityManager) {
+        CustomShiroFilterFactoryBean shiroFilterFactoryBean = new CustomShiroFilterFactoryBean();
+        shiroFilterFactoryBean.setSecurityManager(securityManager);
+        // 拦截器
+        Map<String, String> filterChainDefinitionMap = new LinkedHashMap<String, String>();
+//        if(oConvertUtils.isNotEmpty(excludeUrls)){
+//            String[] permissionUrl = excludeUrls.split(",");
+//            for(String url : permissionUrl){
+//                filterChainDefinitionMap.put(url,"anon");
+//            }
+//        }
+        // 配置不会被拦截的链接 顺序判断
+//        filterChainDefinitionMap.put("/sys/cas/client/validateLogin", "anon"); //cas验证登录
+////        filterChainDefinitionMap.put("/sys/randomImage/**", "anon"); //登录验证码接口排除
+////        filterChainDefinitionMap.put("/sys/checkCaptcha", "anon"); //登录验证码接口排除
+////        filterChainDefinitionMap.put("/sys/login", "anon"); //登录接口排除
+////        filterChainDefinitionMap.put("/sys/mLogin", "anon"); //登录接口排除
+////        filterChainDefinitionMap.put("/sys/logout", "anon"); //登出接口排除
+////        filterChainDefinitionMap.put("/sys/thirdLogin/**", "anon"); //第三方登录
+////        filterChainDefinitionMap.put("/sys/getEncryptedString", "anon"); //获取加密串
+////        filterChainDefinitionMap.put("/sys/sms", "anon");//短信验证码
+////        filterChainDefinitionMap.put("/sys/phoneLogin", "anon");//手机登录
+////        filterChainDefinitionMap.put("/sys/user/checkOnlyUser", "anon");//校验用户是否存在
+////        filterChainDefinitionMap.put("/sys/user/register", "anon");//用户注册
+////        filterChainDefinitionMap.put("/sys/user/querySysUser", "anon");//根据手机号获取用户信息
+////        filterChainDefinitionMap.put("/sys/user/phoneVerification", "anon");//用户忘记密码验证手机号
+////        filterChainDefinitionMap.put("/sys/user/passwordChange", "anon");//用户更改密码
+////        filterChainDefinitionMap.put("/auth/2step-code", "anon");//登录验证码
+////        filterChainDefinitionMap.put("/sys/common/static/**", "anon");//图片预览 &下载文件不限制token
+////        filterChainDefinitionMap.put("/sys/common/pdf/**", "anon");//pdf预览
+////        filterChainDefinitionMap.put("/generic/**", "anon");//pdf预览需要文件
+
+        // 不拦截
+        filterChainDefinitionMap.put("/login", "anon");
+        filterChainDefinitionMap.put("/logout", "anon");
+        filterChainDefinitionMap.put("/admin", "anon");
+        filterChainDefinitionMap.put("/admin/login", "anon");
+        filterChainDefinitionMap.put("/test/**", "anon");
+        filterChainDefinitionMap.put("/api/**", "anon");
+
+        filterChainDefinitionMap.put("/", "anon");
+        filterChainDefinitionMap.put("/doc.html", "anon");
+        filterChainDefinitionMap.put("/doc.html#/**", "anon");
+        filterChainDefinitionMap.put("/**/*.js", "anon");
+        filterChainDefinitionMap.put("/**/*.css", "anon");
+        filterChainDefinitionMap.put("/**/*.html", "anon");
+        filterChainDefinitionMap.put("/**/*.svg", "anon");
+        filterChainDefinitionMap.put("/**/*.pdf", "anon");
+        filterChainDefinitionMap.put("/**/*.jpg", "anon");
+        filterChainDefinitionMap.put("/**/*.png", "anon");
+        filterChainDefinitionMap.put("/**/*.ico", "anon");
+
+        filterChainDefinitionMap.put("/**/*.ttf", "anon");
+        filterChainDefinitionMap.put("/**/*.woff", "anon");
+        filterChainDefinitionMap.put("/**/*.woff2", "anon");
+
+        // swagger 不拦截
+        filterChainDefinitionMap.put("/druid/**", "anon");
+        filterChainDefinitionMap.put("/swagger-ui.html", "anon");
+        filterChainDefinitionMap.put("/swagger**/**", "anon");
+        filterChainDefinitionMap.put("/swagger-resources/**", "anon");
+        filterChainDefinitionMap.put("/webjars/**", "anon");
+        filterChainDefinitionMap.put("/v2/**", "anon");
+
+
+        // update-begin--Author:sunjianlei Date:20210510 for:排除消息通告查看详情页面(用于第三方APP)
+        filterChainDefinitionMap.put("/sys/annountCement/show/**", "anon");
+        // update-end--Author:sunjianlei Date:20210510 for:排除消息通告查看详情页面(用于第三方APP)
+
+        //积木报表排除
+        filterChainDefinitionMap.put("/jmreport/**", "anon");
+        filterChainDefinitionMap.put("/**/*.js.map", "anon");
+        filterChainDefinitionMap.put("/**/*.css.map", "anon");
+        //大屏设计器排除
+        filterChainDefinitionMap.put("/bigscreen/**", "anon");
+
+        //测试示例
+        filterChainDefinitionMap.put("/test/bigScreen/**", "anon"); //大屏模板例子
+        //filterChainDefinitionMap.put("/test/jeecgDemo/rabbitMqClientTest/**", "anon"); //MQ测试
+        //filterChainDefinitionMap.put("/test/jeecgDemo/html", "anon"); //模板页面
+        //filterChainDefinitionMap.put("/test/jeecgDemo/redis/**", "anon"); //redis测试
+
+        //websocket排除
+        filterChainDefinitionMap.put("/websocket/**", "anon");//系统通知和公告
+        filterChainDefinitionMap.put("/newsWebsocket/**", "anon");//CMS模块
+        filterChainDefinitionMap.put("/vxeSocket/**", "anon");//JVxeTable无痕刷新示例
+
+
+        //性能监控  TODO 存在安全漏洞泄露TOEKN(durid连接池也有)
+        filterChainDefinitionMap.put("/actuator/**", "anon");
+
+        // 添加自己的过滤器并且取名为jwt
+        Map<String, Filter> filterMap = new HashMap<String, Filter>(1);
+        //如果cloudServer为空 则说明是单体 需要加载跨域配置
+        Object cloudServer = env.getProperty("");
+        filterMap.put("jwt", new JwtFilter(cloudServer==null));
+        shiroFilterFactoryBean.setFilters(filterMap);
+        // <!-- 过滤链定义,从上向下顺序执行,一般将/**放在最为下边
+        filterChainDefinitionMap.put("/**", "jwt");
+
+        // 未授权界面返回JSON
+        shiroFilterFactoryBean.setUnauthorizedUrl("/sys/common/403");
+        shiroFilterFactoryBean.setLoginUrl("/sys/common/403");
+        shiroFilterFactoryBean.setFilterChainDefinitionMap(filterChainDefinitionMap);
+        return shiroFilterFactoryBean;
+    }
+
+    @Bean("securityManager")
+    public DefaultWebSecurityManager securityManager(ShiroRealm myRealm) {
+        DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager();
+        securityManager.setRealm(myRealm);
+
+        /*
+         * 关闭shiro自带的session,详情见文档
+         * http://shiro.apache.org/session-management.html#SessionManagement-
+         * StatelessApplications%28Sessionless%29
+         */
+        DefaultSubjectDAO subjectDAO = new DefaultSubjectDAO();
+        DefaultSessionStorageEvaluator defaultSessionStorageEvaluator = new DefaultSessionStorageEvaluator();
+        defaultSessionStorageEvaluator.setSessionStorageEnabled(false);
+        subjectDAO.setSessionStorageEvaluator(defaultSessionStorageEvaluator);
+        securityManager.setSubjectDAO(subjectDAO);
+        //自定义缓存实现,使用redis
+//        securityManager.setCacheManager(redisCacheManager());
+        return securityManager;
+    }
+
+    /**
+     * 下面的代码是添加注解支持
+     * @return
+     */
+    @Bean
+    @DependsOn("lifecycleBeanPostProcessor")
+    public DefaultAdvisorAutoProxyCreator defaultAdvisorAutoProxyCreator() {
+        DefaultAdvisorAutoProxyCreator defaultAdvisorAutoProxyCreator = new DefaultAdvisorAutoProxyCreator();
+        defaultAdvisorAutoProxyCreator.setProxyTargetClass(true);
+        /**
+         * 解决重复代理问题 github#994
+         * 添加前缀判断 不匹配 任何Advisor
+         */
+        defaultAdvisorAutoProxyCreator.setUsePrefix(true);
+        defaultAdvisorAutoProxyCreator.setAdvisorBeanNamePrefix("_no_advisor");
+        return defaultAdvisorAutoProxyCreator;
+    }
+
+    @Bean
+    public static LifecycleBeanPostProcessor lifecycleBeanPostProcessor() {
+        return new LifecycleBeanPostProcessor();
+    }
+
+    @Bean
+    public AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor(DefaultWebSecurityManager securityManager) {
+        AuthorizationAttributeSourceAdvisor advisor = new AuthorizationAttributeSourceAdvisor();
+        advisor.setSecurityManager(securityManager);
+        return advisor;
+    }
+
+    /**
+     * cacheManager 缓存 redis实现
+     * 使用的是shiro-redis开源插件
+     *
+     * @return
+     */
+//    public RedisCacheManager redisCacheManager() {
+//        log.info("===============(1)创建缓存管理器RedisCacheManager");
+//        RedisCacheManager redisCacheManager = new RedisCacheManager();
+//        redisCacheManager.setRedisManager(redisManager());
+//        //redis中针对不同用户缓存(此处的id需要对应user实体中的id字段,用于唯一标识)
+//        redisCacheManager.setPrincipalIdFieldName("id");
+//        //用户权限信息缓存时间
+//        redisCacheManager.setExpire(200000);
+//        return redisCacheManager;
+//    }
+
+    /**
+     * 配置shiro redisManager
+     * 使用的是shiro-redis开源插件
+     *
+     * @return
+     */
+//    @Bean
+//    public IRedisManager redisManager() {
+//        log.info("===============(2)创建RedisManager,连接Redis..");
+//        IRedisManager manager;
+//        // redis 单机支持,在集群为空,或者集群无机器时候使用 add by jzyadmin@163.com
+//        if (lettuceConnectionFactory.getClusterConfiguration() == null || lettuceConnectionFactory.getClusterConfiguration().getClusterNodes().isEmpty()) {
+//            RedisManager redisManager = new RedisManager();
+//            redisManager.setHost(lettuceConnectionFactory.getHostName());
+//            redisManager.setPort(lettuceConnectionFactory.getPort());
+//            redisManager.setDatabase(lettuceConnectionFactory.getDatabase());
+//            redisManager.setTimeout(0);
+//            if (!StringUtils.isEmpty(lettuceConnectionFactory.getPassword())) {
+//                redisManager.setPassword(lettuceConnectionFactory.getPassword());
+//            }
+//            manager = redisManager;
+//        }else{
+//            // redis集群支持,优先使用集群配置
+//            RedisClusterManager redisManager = new RedisClusterManager();
+//            Set<HostAndPort> portSet = new HashSet<>();
+//            lettuceConnectionFactory.getClusterConfiguration().getClusterNodes().forEach(node -> portSet.add(new HostAndPort(node.getHost() , node.getPort())));
+//            //update-begin--Author:scott Date:20210531 for:修改集群模式下未设置redis密码的bug issues/I3QNIC
+//            if (oConvertUtils.isNotEmpty(lettuceConnectionFactory.getPassword())) {
+//                JedisCluster jedisCluster = new JedisCluster(portSet, 2000, 2000, 5,
+//                    lettuceConnectionFactory.getPassword(), new GenericObjectPoolConfig());
+//                redisManager.setPassword(lettuceConnectionFactory.getPassword());
+//                redisManager.setJedisCluster(jedisCluster);
+//            } else {
+//                JedisCluster jedisCluster = new JedisCluster(portSet);
+//                redisManager.setJedisCluster(jedisCluster);
+//            }
+//            //update-end--Author:scott Date:20210531 for:修改集群模式下未设置redis密码的bug issues/I3QNIC
+//            manager = redisManager;
+//        }
+//        return manager;
+//    }
+
+}

+ 107 - 0
gis_admin/src/main/java/com/gis/admin/tree/SysResourceTreeUtil.java

@@ -0,0 +1,107 @@
+package com.gis.admin.tree;
+
+import com.gis.admin.entity.po.SysResourceEntity;
+import com.gis.admin.tree.vo.SysResourceTree;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class SysResourceTreeUtil {
+
+    private List<SysResourceTree> resultNodes = new ArrayList<SysResourceTree>();//树形结构排序之后list内容
+
+    private List<SysResourceTree> nodes = new ArrayList<SysResourceTree>();
+    //传入list参数
+
+    public SysResourceTreeUtil(List<SysResourceEntity> nodesList) {//通过构造函数初始化
+        for (SysResourceEntity n : nodesList) {
+            SysResourceTree treeGrid = new SysResourceTree();
+            treeGrid.setId(n.getId());
+            treeGrid.setName(n.getName());
+//            treeGrid.setIcon(n.getIcon());
+            treeGrid.setUrl(n.getUrl());
+            treeGrid.setResourceKey(n.getResourceKey());
+            treeGrid.setResourceType(n.getResourceType());
+
+            if (n.getAuthority() != null){
+                treeGrid.setAuthority(n.getAuthority());
+            }
+
+            if (n.getParentId() != null) {
+                treeGrid.setParentId(n.getParentId());
+            }
+            nodes.add(treeGrid);
+        }
+    }
+
+    public SysResourceTreeUtil() {
+    }
+
+    /**
+     * 构建树形结构list
+     *
+     * @return 返回树形结构List列表
+     */
+    public List<SysResourceTree> buildTree() {
+        for (SysResourceTree node : nodes) {
+            Long id = node.getParentId();
+            if (id == null) {//通过循环一级节点 就可以通过递归获取二级以下节点
+                resultNodes.add(node);//添加一级节点
+//                node.setLevel(1);
+                build(node, node.getLevel());//递归获取二级、三级、。。。节点
+            }
+        }
+        return resultNodes;
+    }
+
+    /**
+     * 递归循环子节点
+     *
+     * @param node 当前节点
+     */
+    private void build(SysResourceTree node, int level) {
+        List<SysResourceTree> children = getChildren(node);
+        if (!children.isEmpty()) {//如果存在子节点
+            node.setChildren(children);
+//        	level++;
+            for (SysResourceTree child : children) {//将子节点遍历加入返回值中
+//        		child.setLevel(level);
+                build(child, child.getLevel());
+            }
+        }
+    }
+
+    /**
+     * @param node
+     * @return 返回
+     */
+    private List<SysResourceTree> getChildren(SysResourceTree node) {
+        List<SysResourceTree> children = new ArrayList<SysResourceTree>();
+        Long id = node.getId();
+        for (SysResourceTree child : nodes) {
+            if (id.equals(child.getParentId())) {//如果id等于父id
+                children.add(child);//将该节点加入循环列表中
+            }
+        }
+        return children;
+    }
+
+    public List<SysResourceTree> buildTree(List<SysResourceEntity> all, List<SysResourceEntity> in) {
+        for (SysResourceEntity n : all) {
+            SysResourceTree treeGrid = new SysResourceTree();
+            treeGrid.setId(n.getId());
+            treeGrid.setName(n.getName());
+            for (SysResourceEntity nin : in) {
+                if (nin.getId().equals(n.getId())) {
+                    treeGrid.setChecked(true);
+                }
+            }
+            if (n.getParentId() != null) {
+                treeGrid.setParentId(n.getParentId());
+            }
+            nodes.add(treeGrid);
+        }
+        return buildTree();
+    }
+
+}

+ 51 - 0
gis_admin/src/main/java/com/gis/admin/tree/vo/SysResourceTree.java

@@ -0,0 +1,51 @@
+package com.gis.admin.tree.vo;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class SysResourceTree {
+
+    private Long id;
+
+    private String name;
+
+    private Long parentId;
+
+    @JSONField(serialize = false)
+    private boolean checked = false;
+
+    @JSONField(serialize = false)
+    private boolean spread = false;
+
+    @JSONField(serialize = false)
+    private String isHeader = "0";
+
+    @JSONField(serialize = false)
+    private String url;
+
+    @JSONField(serialize = false)
+    private String icon;
+
+    @JSONField(serialize = false)
+    private String resourceKey;
+
+//    @JSONField(serialize = false)
+    private String resourceType;
+
+    @JSONField(serialize = false)
+    private String order = "1";
+
+    // 子菜单/或按钮
+    private List<SysResourceTree> children;
+
+    @JSONField(serialize = false)
+    private int level;
+
+    // 默认都没有权限
+    private boolean authority ;
+
+
+}

+ 0 - 141
gis_admin/src/main/java/com/gis/controller/BaseController.java

@@ -1,141 +0,0 @@
-package com.gis.controller;
-
-import cn.hutool.core.io.FileUtil;
-import com.gis.common.base.entity.dto.PageDto;
-import com.gis.common.constant.ConfigConstant;
-import com.gis.common.util.JwtUtil;
-import com.gis.service.SysUserService;
-import com.github.pagehelper.PageHelper;
-import lombok.extern.log4j.Log4j2;
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-
-import javax.annotation.Resource;
-import javax.servlet.http.HttpServletRequest;
-
-/**
- * Created by owen on 2020/2/20 0020 15:20
- */
-@Log4j2
-public class BaseController {
-
-    @Resource
-    protected HttpServletRequest request;
-
-    @Autowired
-    public SysUserService sysUserService;
-
-
-
-//    @Autowired
-//    private LogService logService;
-
-
-    @Autowired
-    ConfigConstant configConstant;
-
-
-
-    // 目前是24h
-    public static Integer TOKEN_EXPIRE = 1000 * 60 * 60 * 24;
-
-
-
-    /** 获取用户名*/
-    String getTokenUserName(){
-        String token = getToken();
-        return JwtUtil.getUsername(token);
-    }
-
-    /** 获取用户id*/
-    Long getTokenUserId(){
-        return JwtUtil.getUserId(getToken());
-    }
-
-
-
-    /** 获取header token */
-    String getToken(){
-        return request.getHeader("token");
-    }
-
-    /**
-     * 保存操作日志
-     */
-//    void saveLog(LogEntity param){
-//        // 保存数据库
-//        logService.save(param);
-//    }
-
-
-    /**
-     * 设置请求分页数据
-     */
-    void startPage(PageDto param){
-        Integer pageNum = param.getPageNum();
-        Integer pageSize = param.getPageSize();
-        if (pageNum == null || pageNum <= 0) {
-            pageNum = 1;
-        }
-
-        if (pageSize == null || pageSize <= 0) {
-            pageSize = 10;
-        }
-
-        PageHelper.startPage(pageNum, pageSize);
-
-    }
-
-    /**
-     * 截取文件路径
-     * @param path
-     * @return 物理位置
-     */
-/*    public String subStringAfter(String path){
-        log.info("input param: {}", path);
-        if (StringUtils.isNotBlank(path)) {
-            String s = StringUtils.substringAfter(path, "/data/");
-            log.info("filePath: {}", FILE_PATH + s);
-            return FILE_PATH + s;
-        }
-        return null;
-
-    }*/
-
-    /**
-     * 截取文件路径
-     * @param path
-     * @return 物理位置
-     */
-    public String subStringAfter(String path){
-        log.info("input param: {}", path);
-        if (StringUtils.isNotBlank(path)) {
-            String s = StringUtils.substringAfter(path, "/data/");
-            s = configConstant.serverBasePath + s;
-            log.info("filePath: {}", s);
-            return s;
-        }
-        return null;
-
-    }
-
-    /**
-     * FileUtil.del:删除空字符串会造成linux环境的Tomcat.lib删除
-     * 删除
-     * @param path
-     */
-    public void deleteFile(String path){
-        String filePath = subStringAfter(path);
-        if (FileUtil.isFile(filePath)) {
-            log.info("执行删除: {}", filePath);
-            FileUtil.del(filePath);
-            log.info("删除成功: {}", filePath);
-        }
-    }
-
-
-
-
-
-
-}

+ 0 - 162
gis_admin/src/main/java/com/gis/controller/SysUserController.java

@@ -1,162 +0,0 @@
-package com.gis.controller;
-
-
-import com.gis.common.util.PasswordUtils;
-import com.gis.common.util.Result;
-import com.gis.entity.dto.PasswordRequest;
-import com.gis.entity.dto.UserDto;
-import com.gis.entity.po.SysUserEntity;
-import com.gis.service.SysUserService;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import lombok.extern.log4j.Log4j2;
-import org.apache.shiro.authz.annotation.Logical;
-import org.apache.shiro.authz.annotation.RequiresRoles;
-import org.springframework.beans.BeanUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.data.redis.core.RedisTemplate;
-import org.springframework.transaction.annotation.Transactional;
-import org.springframework.web.bind.annotation.*;
-
-import javax.validation.Valid;
-import java.time.LocalDateTime;
-import java.util.List;
-
-
-/**
- * Created by owen on 2020/2/18 0018 12:17
- */
-@Log4j2
-@Api(tags = "sys-用户管理")
-@RestController
-@RequestMapping("manage/user")
-@Transactional
-public class SysUserController extends BaseController {
-
-    @Autowired
-    public SysUserService userService;
-
-    @Autowired
-    public RedisTemplate<Object, Object> redisTemplate;
-
-
-
-//    @RequiresRoles(value = {"sys_admin"}, logical = Logical.OR)
-//    @ApiOperation("用户列表")
-//    @PostMapping("list")
-//    public Result<SysUserEntity> list(@RequestBody UserPageDateDto param) {
-//        startPage(param);
-//        PageInfo<SysUserEntity> page = new PageInfo<>(userService.search(param));
-//        return Result.success(page);
-//    }
-
-//    @WebControllerLog(description = "用户管理-修改用户")
-    @ApiOperation("新增/修改用户信息")
-    @PostMapping("save")
-    public Result save(@Valid @RequestBody UserDto param) {
-        return userService.saveEntity(param);
-    }
-
-
-    @ApiOperation("查询用户信息")
-    @GetMapping("detail/{id}")
-    public Result<SysUserEntity> detail(@PathVariable Long id) {
-        SysUserEntity user = userService.findById(id);
-
-        if (user == null) {
-            log.error("用户不存在: {}", id);
-            return Result.failure("用户不存在");
-        }
-        return Result.success(user);
-    }
-
-//    @WebControllerLog(description = "用户管理-修改密码", addDb = true)
-    @ApiOperation("修改密码")
-    @PostMapping("updatePwd")
-    public Result updatePwd(@Valid @RequestBody PasswordRequest param) {
-
-        SysUserEntity user = userService.findByUserName(getTokenUserName());
-
-        // 验证原密码
-        Boolean isBoolean = PasswordUtils.decrypt(user.getPassword(), param.getOldPassword(), PasswordUtils.getStaticSalt());
-        if (!isBoolean) {
-            log.error("原始密码错误");
-            return Result.failure("原始密码错误");
-        }
-
-        user.setPassword(PasswordUtils.encrypt(user.getUserName(), param.getNewPassword(), PasswordUtils.getStaticSalt()));
-        user.setUpdateTime(LocalDateTime.now());
-        userService.update(user);
-        return Result.success();
-    }
-
-//    @WebControllerLog(description = "用户管理-重置密码")
-    @RequiresRoles(value = {"sys_admin"}, logical = Logical.OR)
-    @ApiOperation("重置密码")
-    @GetMapping("resetPass/{id}")
-    public Result resetPass(@PathVariable Long id) {
-        SysUserEntity user = userService.findById(id);
-
-        if (user == null) {
-            log.error("用户不存在: {}", id);
-            return Result.failure("用户不存在");
-        }
-
-        user.setPassword(PasswordUtils.encrypt(user.getUserName(), "123456", PasswordUtils.getStaticSalt()));
-        user.setUpdateTime(LocalDateTime.now());
-        userService.update(user);
-        return Result.success();
-    }
-
-//    @WebControllerLog(description = "用户管理-启用、停用、注销账户")
-    @RequiresRoles(value = {"sys_admin"}, logical = Logical.OR)
-    @ApiOperation("启用、停用、注销账户")
-    @GetMapping("setStatus/{id}/{status}")
-    public Result setStatus(@PathVariable Long id, @PathVariable Integer status) {
-
-        SysUserEntity user = userService.findById(id);
-        if (user == null) {
-            log.error("用户不存在: {}", id);
-            return Result.failure("用户不存在");
-        }
-
-        if ("sys_admin".equals(user.getRole())) {
-            log.error("管理员账户不能停用/注销: {}", id);
-            return Result.failure("管理员账户不能停用/注销");
-        }
-
-        user.setStatus(status);
-        user.setUpdateTime(LocalDateTime.now());
-        userService.update(user);
-        return Result.success();
-    }
-
-
-//    @WebControllerLog(description = "用户管理-删除")
-    @RequiresRoles(value = {"sys_admin"}, logical = Logical.OR)
-    @ApiOperation("删除")
-    @GetMapping("removes/{ids}")
-    public Result removes(@PathVariable String ids) {
-
-
-        List<SysUserEntity> entityList = userService.findByIds(ids);
-        for (SysUserEntity entity: entityList) {
-            if ("sys_admin".equals(entity.getRole())) {
-                log.error("管理员账户不能删除 {}", entity.getId());
-                return Result.failure("管理员账户不能删除");
-            }
-
-//                entity.setRecStatus("I");
-//            entity.setUpdateTime(LocalDateTime.now());
-//            userService.update(entity);
-
-//            deleteFile(entity.getImg());
-            deleteFile(entity.getThumb());
-            userService.delete(entity);
-        }
-
-        return Result.success();
-    }
-
-
-}

+ 0 - 41
gis_admin/src/main/java/com/gis/mapper/provider/LogProvider.java

@@ -1,41 +0,0 @@
-package com.gis.mapper.provider;
-
-import com.gis.common.base.entity.dto.PageDateDto;
-import lombok.extern.log4j.Log4j2;
-import org.apache.commons.lang3.StringUtils;
-
-
-/**
- * Created by owen on 2020/5/13.
- */
-@Log4j2
-public class LogProvider {
-
-    public String findBySearchKey(PageDateDto param){
-        StringBuffer sql = new StringBuffer(
-                "select z.type, z.description, z.create_time, z.ip, u.user_name from tb_log z left join sys_user u on z.user_id = u.id where z.is_delete = '0' ");
-
-
-        if(StringUtils.isNotBlank(param.getStartTime()) && StringUtils.isNotBlank(param.getEndTime())){
-
-            sql.append(" and z.create_time >= ").append("'").append(param.getStartTime()).append("'");
-            sql.append(" and z.create_time <= ").append("'").append(param.getEndTime()).append("'");
-        }
-
-        String searchKey = param.getSearchKey();
-        if(!StringUtils.isAllBlank(searchKey)){
-            searchKey = StringUtils.trim(searchKey);
-            sql.append(" and (");
-            sql.append("  u.user_name like '%").append(searchKey).append("%'");
-//            sql.append(" or ( z.description like '%").append(searchKey).append("%' )");
-            sql.append(" )");
-        }
-
-        sql.append(" order by z.create_time desc");
-        log.info("sql: {}", sql.toString());
-        return sql.toString();
-    }
-
-
-
-}

+ 0 - 140
gis_admin/src/main/java/com/gis/shiro/JWTFilter.java

@@ -1,140 +0,0 @@
-package com.gis.shiro;
-
-import com.alibaba.fastjson.JSONObject;
-import com.gis.common.exception.JwtAuthenticationException;
-import lombok.extern.log4j.Log4j2;
-import org.apache.shiro.web.filter.authc.BasicHttpAuthenticationFilter;
-import org.springframework.http.HttpStatus;
-import org.springframework.web.bind.annotation.RequestMethod;
-
-import javax.servlet.ServletOutputStream;
-import javax.servlet.ServletRequest;
-import javax.servlet.ServletResponse;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import java.io.IOException;
-import java.io.PrintWriter;
-import java.time.LocalDateTime;
-
-
-/**
- * 自定义拦截规则
- */
-@Log4j2
-public class JWTFilter extends BasicHttpAuthenticationFilter {
-
-    /**
-     * 执行登录验证
-     */
-    @Override
-    protected boolean executeLogin(ServletRequest request, ServletResponse response) {
-        HttpServletRequest httpServletRequest = (HttpServletRequest) request;
-        String authorization = httpServletRequest.getHeader("token");
-        JWTToken token = new JWTToken(authorization);
-
-        // 提交给realm进行登入,如果错误他会抛出异常并被捕获
-        getSubject(request, response).login(token);
-
-        // 如果没有抛出异常则代表登入成功,返回true
-        return true;
-    }
-
-    /**
-     * 这里我们详细说明下为什么最终返回的都是true,即允许访问
-     * 例如我们提供一个地址 GET /article
-     * 登入用户和游客看到的内容是不同的
-     * 如果在这里返回了false,请求会被直接拦截,用户看不到任何东西
-     * 所以我们在这里返回true,Controller中可以通过 subject.isAuthenticated() 来判断用户是否登入
-     * 如果有些资源只有登入用户才能访问,我们只需要在方法上面加上 @RequiresAuthentication 注解即可
-     * 但是这样做有一个缺点,就是不能够对GET,POST等请求进行分别过滤鉴权(因为我们重写了官方的方法),但实际上对应用影响不大
-     *
-     * owen:
-     *  return false ,表示全局拦截,必须登录才可以访问接口,除非配置了免拦截
-     *  "" @RequiresAuthentication 现在不需要配置这个注解来免登录
-     *
-     */
-    @Override
-    protected boolean isAccessAllowed(ServletRequest request, ServletResponse response, Object mappedValue) {
-        try {
-            executeLogin(request, response);
-            return true;
-        } catch (Exception e) {
-            /**
-             * 这个异常需要自己写,全局捕获不了
-             * 认证出现异常,传递错误信息msg
-             */
-            exceptionMsg(e, response);
-        }
-        // 前端没有响应,接收不到异常
-         return false;
-
-
-
-    }
-
-    /**
-     * 对跨域提供支持
-     * 只对需要token验证的有效,不需要验证的还是需要用注解处理一下
-     *
-     */
-    @Override
-    protected boolean preHandle(ServletRequest request, ServletResponse response) throws Exception {
-        HttpServletRequest httpServletRequest = (HttpServletRequest) request;
-        HttpServletResponse httpServletResponse = (HttpServletResponse) response;
-        httpServletResponse.setHeader("Access-control-Allow-Origin", httpServletRequest.getHeader("Origin"));
-        httpServletResponse.setHeader("Access-Control-Allow-Methods", "GET,POST,OPTIONS,PUT,DELETE");
-        httpServletResponse.setHeader("Access-Control-Allow-Headers", httpServletRequest.getHeader("Access-Control-Request-Headers"));
-        // 跨域时会首先发送一个option请求,这里我们给option请求直接返回正常状态
-        if (httpServletRequest.getMethod().equals(RequestMethod.OPTIONS.name())) {
-            httpServletResponse.setStatus(HttpStatus.OK.value());
-            return false;
-        }
-        return super.preHandle(request, response);
-    }
-
-
-    /**
-     * 无需转发,直接返回Response信息
-     *
-     */
-    private void writeResponse(ServletResponse response, JSONObject msg) {
-        response.setCharacterEncoding("UTF-8");
-        response.setContentType("application/json; charset=utf-8");
-        ServletOutputStream outputStream = null;
-        try {
-            outputStream = response.getOutputStream();
-        } catch (IOException e) {
-            e.printStackTrace();
-        }
-        assert outputStream != null;
-        PrintWriter printWriter = new PrintWriter(outputStream, true);
-        printWriter.write(msg.toString());//直接将json输出到页面
-        printWriter.flush();
-        printWriter.close();
-
-    }
-
-    /**
-     * 封装异常信息
-     */
-    private void exceptionMsg(Exception e, ServletResponse response) {
-        // 认证出现异常,传递错误信息msg
-        String msg = e.getMessage();
-        // 获取应用异常(该Cause是导致抛出此throwable(异常)的throwable(异常))
-        Throwable throwable = e.getCause();
-        JSONObject jsonObject = new JSONObject();
-        if (throwable instanceof JwtAuthenticationException) {
-            jsonObject.put("code", ((JwtAuthenticationException) throwable).getCode());
-            jsonObject.put("msg", ((JwtAuthenticationException) throwable).getMsg());
-        } else {
-            log.error(msg);
-            jsonObject.put("code", 5002);
-            jsonObject.put("msg", "token invalid");
-
-        }
-        jsonObject.put("timestamp", LocalDateTime.now());
-        // 直接返回Response信息
-        this.writeResponse(response, jsonObject);
-
-    }
-}

+ 0 - 23
gis_admin/src/main/java/com/gis/shiro/JWTToken.java

@@ -1,23 +0,0 @@
-package com.gis.shiro;
-
-import org.apache.shiro.authc.AuthenticationToken;
-
-public class JWTToken implements AuthenticationToken {
-
-    // 密钥
-    private String token;
-
-    public JWTToken(String token) {
-        this.token = token;
-    }
-
-    @Override
-    public Object getPrincipal() {
-        return token;
-    }
-
-    @Override
-    public Object getCredentials() {
-        return token;
-    }
-}

+ 0 - 130
gis_admin/src/main/java/com/gis/shiro/MyRealm.java

@@ -1,130 +0,0 @@
-package com.gis.shiro;
-
-import com.gis.common.constant.ConfigConstant;
-import com.gis.common.exception.JwtAuthenticationException;
-import com.gis.common.util.JwtUtil;
-import com.gis.entity.po.SysUserEntity;
-import com.gis.service.SysResourceService;
-import com.gis.service.SysUserService;
-import lombok.extern.log4j.Log4j2;
-import lombok.extern.slf4j.Slf4j;
-import org.apache.commons.lang3.StringUtils;
-import org.apache.shiro.authc.AuthenticationException;
-import org.apache.shiro.authc.AuthenticationInfo;
-import org.apache.shiro.authc.AuthenticationToken;
-import org.apache.shiro.authc.SimpleAuthenticationInfo;
-import org.apache.shiro.authz.AuthorizationInfo;
-import org.apache.shiro.authz.SimpleAuthorizationInfo;
-import org.apache.shiro.realm.AuthorizingRealm;
-import org.apache.shiro.subject.PrincipalCollection;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.data.redis.core.RedisTemplate;
-import org.springframework.stereotype.Service;
-
-import java.util.Set;
-
-/**
- * Created by owen on 2021/6/19 0019 10:22
- * 配置不校验的话,是不会走这个方法的
- */
-@Slf4j
-@Service
-public class MyRealm extends AuthorizingRealm {
-
-
-
-    @Autowired
-    private RedisTemplate<String, String> redisTemplate;
-
-    @Autowired
-    private SysUserService userService;
-
-    @Autowired
-    ConfigConstant configConstant;
-
-    @Autowired
-    SysResourceService sysResourceService;
-
-
-
-    /**
-     * 大坑!,必须重写此方法,不然Shiro会报错
-     */
-    @Override
-    public boolean supports(AuthenticationToken token) {
-        return token instanceof JWTToken;
-    }
-
-
-
-
-    /**
-     * 只有当需要检测用户权限的时候才会调用此方法,例如checkRole,checkPermission之类的
-     *
-     * principals: 是token
-     * 添加了角色、权限注解,才会调用此方法
-     */
-    @Override
-    protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) {
-        String username = JwtUtil.getUsername(principals.toString());
-
-        SysUserEntity dbUserEntity = userService.findByUserName(username);
-
-        SimpleAuthorizationInfo simpleAuthorizationInfo = new SimpleAuthorizationInfo();
-
-        // 设置角色权限
-        log.info("role: {}", dbUserEntity.getRole());
-        simpleAuthorizationInfo.addRole(dbUserEntity.getRole());
-        // 设置资源权限
-        Set<String> permissions = sysResourceService.getPermissionByUserId(dbUserEntity.getId());
-        log.info("permissions: {}", permissions);
-        simpleAuthorizationInfo.addStringPermissions(permissions);
-        return simpleAuthorizationInfo;
-    }
-
-
-    /**
-     * 默认使用此方法进行用户名正确与否验证,错误抛出异常即可。
-     */
-    @Override
-    protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken auth) throws AuthenticationException {
-        String token = (String) auth.getCredentials();
-
-        if (StringUtils.isBlank(token)) {
-            log.error("token is null ");
-            throw new JwtAuthenticationException(5001, "header token is null");
-        }
-
-
-        // 解密获得username,用于和数据库进行对比
-        String username = JwtUtil.getUsername(token);
-        if (username == null) {
-            log.error("error token username");
-            throw new JwtAuthenticationException(5001, "token invalid");
-        }
-
-        SysUserEntity userEntity = userService.findByUserName(username);
-        if (userEntity == null) {
-            log.error("error token userEntity");
-            throw new JwtAuthenticationException(5001, "User didn't existed!");
-        }
-
-        // 校验请求token是否跟redis token一致
-        // 校验请求token是否跟redis token一致
-        String redisToken = redisTemplate.opsForValue().get(configConstant.redisPrefix + token);
-
-        if (!token.equals(redisToken)) {
-            log.error("redis token is null");
-            throw new JwtAuthenticationException(5001, "redis token is null");
-
-        }
-
-
-        if (! JwtUtil.isVerify(token, username)) {
-            log.error("error token username or password");
-            throw new JwtAuthenticationException(5001, "token invalid");
-        }
-
-        return new SimpleAuthenticationInfo(token, token, "my_realm");
-    }
-}

+ 0 - 114
gis_admin/src/main/java/com/gis/shiro/ShiroConfig.java

@@ -1,114 +0,0 @@
-package com.gis.shiro;
-
-import lombok.extern.log4j.Log4j2;
-import org.apache.shiro.mgt.DefaultSessionStorageEvaluator;
-import org.apache.shiro.mgt.DefaultSubjectDAO;
-import org.apache.shiro.spring.LifecycleBeanPostProcessor;
-import org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor;
-import org.apache.shiro.spring.web.ShiroFilterFactoryBean;
-import org.apache.shiro.web.mgt.DefaultWebSecurityManager;
-import org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.context.annotation.DependsOn;
-
-import javax.servlet.Filter;
-import java.util.HashMap;
-import java.util.Map;
-
-@Log4j2
-@Configuration
-public class ShiroConfig {
-
-    @Bean("securityManager")
-    public DefaultWebSecurityManager getManager(MyRealm realm) {
-        DefaultWebSecurityManager manager = new DefaultWebSecurityManager();
-        // 使用自己的realm
-        manager.setRealm(realm);
-
-        /*
-         * 关闭shiro自带的session,详情见文档
-         * http://shiro.apache.org/session-management.html#SessionManagement-StatelessApplications%28Sessionless%29
-         */
-        DefaultSubjectDAO subjectDAO = new DefaultSubjectDAO();
-        DefaultSessionStorageEvaluator defaultSessionStorageEvaluator = new DefaultSessionStorageEvaluator();
-        defaultSessionStorageEvaluator.setSessionStorageEnabled(false);
-        subjectDAO.setSessionStorageEvaluator(defaultSessionStorageEvaluator);
-        manager.setSubjectDAO(subjectDAO);
-
-        return manager;
-    }
-
-    @Bean("shiroFilter")
-    public ShiroFilterFactoryBean factory(DefaultWebSecurityManager securityManager) {
-        ShiroFilterFactoryBean factoryBean = new ShiroFilterFactoryBean();
-
-        // 添加自己的过滤器并且取名为jwt
-        Map<String, Filter> filterMap = new HashMap<>();
-        filterMap.put("jwt", new JWTFilter());
-
-
-
-
-        factoryBean.setFilters(filterMap);
-
-        factoryBean.setSecurityManager(securityManager);
-        factoryBean.setUnauthorizedUrl("/401");
-
-        /*
-         * 自定义url规则
-         * http://shiro.apache.org/web.html#urls-
-         */
-        Map<String, String> filterRuleMap = new HashMap<>();
-
-        // 不拦截
-        filterRuleMap.put("/login", "anon");
-        filterRuleMap.put("/logout", "anon");
-        filterRuleMap.put("/admin", "anon");
-        filterRuleMap.put("/admin/login", "anon");
-        filterRuleMap.put("/test/**", "anon");
-
-
-        // swagger 不拦截
-        filterRuleMap.put("/swagger-resources/**", "anon");
-        filterRuleMap.put("/webjars/**", "anon");
-        filterRuleMap.put("/v2/**", "anon");
-        filterRuleMap.put("/swagger-ui.html/**", "anon");
-
-
-        // 所有请求通过我们自己的JWT Filter
-        filterRuleMap.put("/manage/**", "jwt");
-
-
-        // 访问401和404页面不通过我们的Filter
-        filterRuleMap.put("/401", "anon");
-        factoryBean.setFilterChainDefinitionMap(filterRuleMap);
-        return factoryBean;
-    }
-
-    /**
-     * 下面的代码是添加注解支持
-     */
-    @Bean
-    @DependsOn("lifecycleBeanPostProcessor")
-    public DefaultAdvisorAutoProxyCreator defaultAdvisorAutoProxyCreator() {
-        DefaultAdvisorAutoProxyCreator defaultAdvisorAutoProxyCreator = new DefaultAdvisorAutoProxyCreator();
-        // 强制使用cglib,防止重复代理和可能引起代理出错的问题
-        // https://zhuanlan.zhihu.com/p/29161098
-        defaultAdvisorAutoProxyCreator.setProxyTargetClass(true);
-        return defaultAdvisorAutoProxyCreator;
-    }
-
-    @Bean
-    public LifecycleBeanPostProcessor lifecycleBeanPostProcessor() {
-        return new LifecycleBeanPostProcessor();
-    }
-
-    @Bean
-    public AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor(DefaultWebSecurityManager securityManager) {
-        AuthorizationAttributeSourceAdvisor advisor = new AuthorizationAttributeSourceAdvisor();
-        advisor.setSecurityManager(securityManager);
-        return advisor;
-    }
-
-}

+ 13 - 24
gis_application/pom.xml

@@ -1,38 +1,31 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <parent>
-        <artifactId>army_zhengzhou</artifactId>
+        <artifactId>army_xinjiang</artifactId>
         <groupId>com.gis</groupId>
         <version>1.0.0</version>
     </parent>
+    <modelVersion>4.0.0</modelVersion>
 
-
-    <groupId>com.gis</groupId>
     <artifactId>gis_application</artifactId>
-    <version>1.0.0</version>
     <packaging>jar</packaging>
-    <name>gis_application</name>
-    <description>项目入口</description>
 
-
-    <properties>
-        <java.version>1.8</java.version>
-    </properties>
-
-    <!-- 包含controller层需要添加依赖到启动类配置文件-->
     <dependencies>
         <dependency>
             <groupId>com.gis</groupId>
-            <artifactId>gis_web</artifactId>
+            <artifactId>gis_admin</artifactId>
         </dependency>
 
         <dependency>
             <groupId>com.gis</groupId>
-            <artifactId>gis_admin</artifactId>
-            <version>1.0.0</version>
+            <artifactId>gis_scene</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>com.gis</groupId>
+            <artifactId>gis_cms</artifactId>
         </dependency>
     </dependencies>
 
@@ -43,10 +36,6 @@
                 <artifactId>spring-boot-maven-plugin</artifactId>
             </plugin>
         </plugins>
-        <!--<finalName>army_zhengzhou</finalName>-->
         <finalName>${parent.artifactId}</finalName>
     </build>
-
-
-
-</project>
+</project>

+ 0 - 13
gis_application/src/main/java/com/gis/ServletInitializer.java

@@ -1,13 +0,0 @@
-package com.gis;
-
-import org.springframework.boot.builder.SpringApplicationBuilder;
-import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
-
-public class ServletInitializer extends SpringBootServletInitializer {
-
-    @Override
-    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
-        return application.sources(GisApplication.class);
-    }
-
-}

+ 2 - 4
gis_application/src/main/resources/application-dev.properties

@@ -2,8 +2,6 @@
 #DB
 spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
 spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
-#spring.datasource.druid.url=jdbc:mysql://localhost:3306/${project.name}?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8
-#spring.datasource.druid.password=root
 spring.datasource.druid.username=root
 spring.datasource.druid.url=jdbc:mysql://8.135.106.227:3306/${project.en}?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8
 spring.datasource.druid.password=4dkk2021testproject%
@@ -50,7 +48,7 @@ spring.redis.jedis.pool.max-wait=-1ms
 
 
 #log
-logging.path=E:/javaProject/${project.en}_log
+logging.file.path=E:/javaProject/${project.en}_log
 logging.config=classpath:logback-spring.xml
 logging.level.com.gis=debug
 
@@ -66,7 +64,7 @@ spring.mvc.static-path-pattern=/**
 spring.resources.static-locations=file:${server.file.path}
 
 # swagger2 \u8BBE\u7F6E\u5168\u5C40\u5B57\u4F53\u683C\u5F0F\u4E3Autf-8
-swagger.package=com.gis.controller
+swagger.package=com.gis
 swagger.title=${project.sc}-dev
 swagger.description=${swagger.title}
 swagger.version=1.0

+ 0 - 82
gis_application/src/main/resources/application-pro.properties

@@ -1,82 +0,0 @@
-
-#DB # \u9879\u76EE\u6D4B\u8BD5\u670D\u52A1\u5668
-spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
-spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
-spring.datasource.druid.username=root
-#spring.datasource.druid.url=jdbc:mysql://192.168.0.239:3306/${project.en}?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8
-spring.datasource.druid.url=jdbc:mysql://localhost:3306/${project.en}?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8
-#spring.datasource.druid.url=jdbc:mysql://192.168.0.239:3306/army_zhengzhou?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8
-#spring.datasource.druid.password=4dkk2020test%
-spring.datasource.druid.password=4DAGE168
-
-
-
-
-# \u521D\u59CB\u8FDE\u63A5\u6570
-spring.datasource.druid.initial-size=5
-# \u6700\u5C0F\u8FDE\u63A5\u6C60\u6570\u91CF
-spring.datasource.druid.min-idle=10
-# \u6700\u5927\u8FDE\u63A5\u6C60\u6570\u91CF
-spring.datasource.druid.max-active=20
-# \u914D\u7F6E\u83B7\u53D6\u8FDE\u63A5\u7B49\u5F85\u8D85\u65F6\u7684\u65F6\u95F4
-spring.datasource.druid.max-wait=60000
-# \u914D\u7F6E\u95F4\u9694\u591A\u4E45\u624D\u8FDB\u884C\u4E00\u6B21\u68C0\u6D4B\uFF0C\u68C0\u6D4B\u9700\u8981\u5173\u95ED\u7684\u7A7A\u95F2\u8FDE\u63A5\uFF0C\u5355\u4F4D\u662F\u6BEB\u79D2
-spring.datasource.druid.time-between-eviction-runs-millis=60000
-# \u914D\u7F6E\u4E00\u4E2A\u8FDE\u63A5\u5728\u6C60\u4E2D\u6700\u5C0F\u751F\u5B58\u7684\u65F6\u95F4\uFF0C\u5355\u4F4D\u662F\u6BEB\u79D2
-spring.datasource.druid.min-evictable-idle-time-millis=30000
-# \u914D\u7F6E\u4E00\u4E2A\u8FDE\u63A5\u5728\u6C60\u4E2D\u6700\u5927\u751F\u5B58\u7684\u65F6\u95F4\uFF0C\u5355\u4F4D\u662F\u6BEB\u79D2
-spring.datasource.druid.max-evictable-idle-time-millis=90000
-# \u914D\u7F6E\u68C0\u6D4B\u8FDE\u63A5\u662F\u5426\u6709\u6548
-spring.datasource.druid.validation-query=SELECT 1 FROM DUAL
-spring.datasource.druid.test-while-idle=true
-spring.datasource.druid.test-on-borrow=false
-spring.datasource.druid.test-on-return=false
-spring.datasource.druid.web-stat-filter.enabled=true
-spring.datasource.druid.stat-view-servlet.enabled=true
-
-
-# Redis\u6570\u636E\u5E93\u7D22\u5F15\uFF08\u9ED8\u8BA4\u4E3A0\uFF09
-spring.redis.database=0
-spring.redis.host=127.0.0.1
-spring.redis.port=6379
-spring.redis.password=
-# \u8FDE\u63A5\u8D85\u65F6\u65F6\u95F4 \u5355\u4F4D ms\uFF08\u6BEB\u79D2\uFF09
-spring.redis.timeout=3000ms
-# \u8FDE\u63A5\u6C60\u4E2D\u7684\u6700\u5927\u7A7A\u95F2\u8FDE\u63A5\uFF0C\u9ED8\u8BA4\u503C\u4E5F\u662F8\u3002
-spring.redis.jedis.pool.max-idle=8
-#\u8FDE\u63A5\u6C60\u4E2D\u7684\u6700\u5C0F\u7A7A\u95F2\u8FDE\u63A5\uFF0C\u9ED8\u8BA4\u503C\u4E5F\u662F0\u3002
-spring.redis.jedis.pool.min-idle=0
-# \u5982\u679C\u8D4B\u503C\u4E3A-1\uFF0C\u5219\u8868\u793A\u4E0D\u9650\u5236\uFF1B\u5982\u679Cpool\u5DF2\u7ECF\u5206\u914D\u4E86maxActive\u4E2Ajedis\u5B9E\u4F8B\uFF0C\u5219\u6B64\u65F6pool\u7684\u72B6\u6001\u4E3Aexhausted(\u8017\u5C3D)\u3002
-spring.redis.jedis.pool.max-active=8
-# \u7B49\u5F85\u53EF\u7528\u8FDE\u63A5\u7684\u6700\u5927\u65F6\u95F4\uFF0C\u5355\u4F4D\u6BEB\u79D2\uFF0C\u9ED8\u8BA4\u503C\u4E3A-1\uFF0C\u8868\u793A\u6C38\u4E0D\u8D85\u65F6\u3002\u5982\u679C\u8D85\u8FC7\u7B49\u5F85\u65F6\u95F4\uFF0C\u5219\u76F4\u63A5\u629B\u51FAJedisConnectionException
-spring.redis.jedis.pool.max-wait=-1ms
-
-
-#log
-logging.path=/root/data/${project.en}_log
-logging.config=classpath:logback-spring.xml
-logging.level.com.gis=debug
-
-
-
-# file info
-server.file.path=/root/data/${project.en}_data
-
-## url prefix
-#server.url.prefix=/data/
-
-# swagger2 \u8BBE\u7F6E\u5168\u5C40\u5B57\u4F53\u683C\u5F0F\u4E3Autf-8
-swagger.package=com.gis.controller
-swagger.title=${project.sc}-pro
-swagger.description=${swagger.title}
-swagger.version=1.0
-
-
-# swagger login
-# \uFFFD\uFFFD\uFFFD\uFFFDbasic\uFFFD\uFFFD\u00BC\uFFFD\uFFFD\u05A4
-knife4j.basic.enable=true
-knife4j.basic.username=owen
-knife4j.basic.password=owen
-
-
-

+ 0 - 77
gis_application/src/main/resources/application-sit.properties

@@ -1,77 +0,0 @@
-
-#DB # \u9879\u76EE\u6D4B\u8BD5\u670D\u52A1\u5668
-spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
-spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
-spring.datasource.druid.url=jdbc:mysql://localhost:3306/${project.en}?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8
-spring.datasource.druid.username=root
-spring.datasource.druid.password=4dkk2021testproject%
-
-
-# \u521D\u59CB\u8FDE\u63A5\u6570
-spring.datasource.druid.initial-size=5
-# \u6700\u5C0F\u8FDE\u63A5\u6C60\u6570\u91CF
-spring.datasource.druid.min-idle=10
-# \u6700\u5927\u8FDE\u63A5\u6C60\u6570\u91CF
-spring.datasource.druid.max-active=20
-# \u914D\u7F6E\u83B7\u53D6\u8FDE\u63A5\u7B49\u5F85\u8D85\u65F6\u7684\u65F6\u95F4
-spring.datasource.druid.max-wait=60000
-# \u914D\u7F6E\u95F4\u9694\u591A\u4E45\u624D\u8FDB\u884C\u4E00\u6B21\u68C0\u6D4B\uFF0C\u68C0\u6D4B\u9700\u8981\u5173\u95ED\u7684\u7A7A\u95F2\u8FDE\u63A5\uFF0C\u5355\u4F4D\u662F\u6BEB\u79D2
-spring.datasource.druid.time-between-eviction-runs-millis=60000
-# \u914D\u7F6E\u4E00\u4E2A\u8FDE\u63A5\u5728\u6C60\u4E2D\u6700\u5C0F\u751F\u5B58\u7684\u65F6\u95F4\uFF0C\u5355\u4F4D\u662F\u6BEB\u79D2
-spring.datasource.druid.min-evictable-idle-time-millis=30000
-# \u914D\u7F6E\u4E00\u4E2A\u8FDE\u63A5\u5728\u6C60\u4E2D\u6700\u5927\u751F\u5B58\u7684\u65F6\u95F4\uFF0C\u5355\u4F4D\u662F\u6BEB\u79D2
-spring.datasource.druid.max-evictable-idle-time-millis=90000
-# \u914D\u7F6E\u68C0\u6D4B\u8FDE\u63A5\u662F\u5426\u6709\u6548
-spring.datasource.druid.validation-query=SELECT 1 FROM DUAL
-spring.datasource.druid.test-while-idle=true
-spring.datasource.druid.test-on-borrow=false
-spring.datasource.druid.test-on-return=false
-spring.datasource.druid.web-stat-filter.enabled=true
-spring.datasource.druid.stat-view-servlet.enabled=true
-
-
-# Redis\u6570\u636E\u5E93\u7D22\u5F15\uFF08\u9ED8\u8BA4\u4E3A0\uFF09
-spring.redis.database=0
-spring.redis.host=127.0.0.1
-spring.redis.port=6379
-spring.redis.password=
-# \u8FDE\u63A5\u8D85\u65F6\u65F6\u95F4 \u5355\u4F4D ms\uFF08\u6BEB\u79D2\uFF09
-spring.redis.timeout=3000ms
-# \u8FDE\u63A5\u6C60\u4E2D\u7684\u6700\u5927\u7A7A\u95F2\u8FDE\u63A5\uFF0C\u9ED8\u8BA4\u503C\u4E5F\u662F8\u3002
-spring.redis.jedis.pool.max-idle=8
-#\u8FDE\u63A5\u6C60\u4E2D\u7684\u6700\u5C0F\u7A7A\u95F2\u8FDE\u63A5\uFF0C\u9ED8\u8BA4\u503C\u4E5F\u662F0\u3002
-spring.redis.jedis.pool.min-idle=0
-# \u5982\u679C\u8D4B\u503C\u4E3A-1\uFF0C\u5219\u8868\u793A\u4E0D\u9650\u5236\uFF1B\u5982\u679Cpool\u5DF2\u7ECF\u5206\u914D\u4E86maxActive\u4E2Ajedis\u5B9E\u4F8B\uFF0C\u5219\u6B64\u65F6pool\u7684\u72B6\u6001\u4E3Aexhausted(\u8017\u5C3D)\u3002
-spring.redis.jedis.pool.max-active=8
-# \u7B49\u5F85\u53EF\u7528\u8FDE\u63A5\u7684\u6700\u5927\u65F6\u95F4\uFF0C\u5355\u4F4D\u6BEB\u79D2\uFF0C\u9ED8\u8BA4\u503C\u4E3A-1\uFF0C\u8868\u793A\u6C38\u4E0D\u8D85\u65F6\u3002\u5982\u679C\u8D85\u8FC7\u7B49\u5F85\u65F6\u95F4\uFF0C\u5219\u76F4\u63A5\u629B\u51FAJedisConnectionException
-spring.redis.jedis.pool.max-wait=-1ms
-
-
-#log
-logging.path=/root/data/${project.en}_log
-logging.config=classpath:logback-spring.xml
-logging.level.com.gis=debug
-
-
-
-# file info
-server.file.path=/root/data/${project.en}_data
-
-## url prefix
-#server.url.prefix=/data/
-
-# swagger2 \u8BBE\u7F6E\u5168\u5C40\u5B57\u4F53\u683C\u5F0F\u4E3Autf-8
-swagger.package=com.gis.controller
-swagger.title=${project.sc}-sit
-swagger.description=${swagger.title}
-swagger.version=1.0
-
-
-# swagger login
-# \uFFFD\uFFFD\uFFFD\uFFFDbasic\uFFFD\uFFFD\u00BC\uFFFD\uFFFD\u05A4
-#knife4j.basic.enable=true
-#knife4j.basic.username=owen
-#knife4j.basic.password=owen
-
-
-

+ 2 - 2
gis_application/src/main/resources/application.properties

@@ -1,10 +1,10 @@
-server.port=8002
+server.port=8003
 
 spring.profiles.active=dev
 
 # \u9879\u76EE\u540D\u79F0
 project.en=army_xinjiang
-project.sc=\u65B0\u7586\u6570\u5B57\u53F2\u9986
+project.sc=\u65B0\u7586\u6B66\u8B66\u519B\u53F2\u9986
 # redis token \u524D\u7F00
 redis.prefix=${project.en}_token_
 

+ 0 - 17
gis_application/src/main/resources/data/images.json

@@ -1,17 +0,0 @@
-
-{
-"metadata": "{\"camera_mode\":0,\"camera_position\":{\"x\":17.319578170776367,\"y\":0.5689632296562195,\"z\":30.42438507080078},\"camera_quaternion\":{\"x\":-0.0000020361233819675194,\"y\":0.9999978870169733,\"z\":-0.0012442941874225735,\"w\":-0.0016363646960161576},\"ortho_zoom\":-1,\"ss_zoom\":1,\"scan_id\":\"b1498df53a554a0bafec6646639964e6\",\"is_ortho\":false,\"floorVisibility\":[1]}",
-"created": "2019-04-12T01:15:48.811428Z",
-"modified": "2019-04-12T01:15:48.811961Z",
-"sid": "update",
-"name": "04.12.2019_09.15.38",
-"height": 1707,
-"width": 3034,
-"is_hero": true,
-"category": "user",
-"vision_generated_label": "",
-"vision_generated_name": "",
-"vision_image_index": -1,
-"created_by": 4084,
-"rating": null
-}

+ 0 - 11
gis_application/src/main/resources/data/shutdown.sh

@@ -1,11 +0,0 @@
-#!/bin/bash
-RESOURCE_NAME=army_zhengzhou.jar
-   tpid=`ps -ef|grep $RESOURCE_NAME|grep -v grep|grep -v kill|awk '{print $2}'`
-
-if [ ${tpid} ]; then
-echo 'Kill Process!'
-kill -9 $tpid
-else
-echo 'Stop Success!'
-fi
-

+ 0 - 89
gis_application/src/main/resources/data/someData.json

@@ -1,89 +0,0 @@
-{
-  "model": {
-    "sid": "zhengzhou",
-    "name": "526190409SZGX",
-    "status": "viewable",
-    "floors": "",
-    "metainfo": { "allowed_methods": ["GET", "OPTIONS", "HEAD"] },
-    "images": [
-      {
-        "metadata": "{\"camera_mode\":0,\"camera_position\":{\"x\":17.319578170776367,\"y\":0.5689632296562195,\"z\":30.42438507080078},\"camera_quaternion\":{\"x\":-0.0000020361233819675194,\"y\":0.9999978870169733,\"z\":-0.0012442941874225735,\"w\":-0.0016363646960161576},\"ortho_zoom\":-1,\"ss_zoom\":1,\"scan_id\":\"b1498df53a554a0bafec6646639964e6\",\"is_ortho\":false,\"floorVisibility\":[1]}",
-        "created": "2019-04-12T01:15:48.811428Z",
-        "modified": "2019-04-12T01:15:48.811961Z",
-        "sid": "3itPh3K83Bq",
-        "name": "04.12.2019_09.15.38",
-        "height": 1707,
-        "width": 3034,
-        "is_hero": true,
-        "category": "user",
-        "vision_generated_label": "",
-        "vision_generated_name": "",
-        "vision_image_index": -1,
-        "created_by": 4084,
-        "rating": null
-      }
-    ],
-    "job": { "uuid": "dacf7dfa24ae47fab8fcebfe4dc41ab9" },
-    "player_options": {
-      "presented_by": true,
-      "highlight_reel": true,
-      "floor_plan": true,
-      "tour_buttons": true,
-      "dollhouse": true,
-      "fast_transitions": false,
-      "autoplay": false,
-      "contact_email": true,
-      "address": true,
-      "contact_name": true,
-      "model_summary": true,
-      "contact_phone": true,
-      "model_name": true,
-      "external_url": true
-    },
-    "modified": "2019-04-12T06:39:16.940410Z",
-    "is_public": true,
-    "summary": "",
-    "presented_by": "",
-    "contact_name": "",
-    "contact_phone": "",
-    "formatted_contact_phone": "",
-    "contact_email": "",
-    "external_url": "",
-    "camera_start": {
-      "camera": {
-        "zoom": "-1",
-        "quaternion": ["0.7013", "-0.7026", "0.0907", "-0.08"]
-      },
-      "pano": { "uuid": "2" },
-      "mode": "0"
-    }
-  },
-  "files": { "templates": ["data/{{number}}/{{filename}}"] },
-  "name": "526190409SZGX",
-  "summary": "",
-  "hoticon": {
-    "default": "images/4dagePoint2.png",
-    "higt": "images/4dagePoint.png"
-  },
-  "camera_start": {
-    "camera": {
-      "zoom": "-1",
-      "quaternion": ["0.7013", "-0.7026", "0.0907", "-0.08"]
-    },
-    "pano": { "uuid": "2" },
-    "mode": "0"
-  },
-  "loadlogo": false,
-  "special": false,
-  "vision_version": false,
-  "hotImageScale": false,
-  "hideFloorMarker": false,
-  "hideMouseMarker": false,
-  "floorMarkerColor": "#4bcdfc",
-  "mouseMarkerColor": "#4bcdfc",
-  "momentTour": "walk",
-  "showHotListSta": false,
-  "hotIconScale": "1",
-  "supportsVR": false,
-  "weixinDesc": ""
-}

+ 0 - 29
gis_application/src/main/resources/data/start.sh

@@ -1,29 +0,0 @@
-#!/bin/sh
-RESOURCE_NAME=army_zhengzhou.jar
-tpid=`ps -ef|grep $RESOURCE_NAME|grep -v grep|grep -v kill|awk '{print $2}'`
-if [ ${tpid} ]; then
-echo 'Stop Process...'
-kill -15 $tpid
-fi
-
-sleep 5
-
-tpid=`ps -ef|grep $RESOURCE_NAME|grep -v grep|grep -v kill|awk '{print $2}'`
-
-if [ ${tpid} ]; then
-echo 'Kill Process!'
-kill -9 $tpid
-else
-echo 'Stop Success!'
-fi
-
-tpid=`ps -ef|grep $RESOURCE_NAME|grep -v grep|grep -v kill|awk '{print $2}'`
-if [ ${tpid} ]; then
-    echo 'App is running.'
-else
-    echo 'App is NOT running.'
-fi
-rm -f tpid
-nohup java -jar ./$RESOURCE_NAME --spring.profiles.active=pro   &
-echo $! > tpid
-echo Start Success!

+ 0 - 13
gis_application/src/main/resources/data/win/startup.sh

@@ -1,13 +0,0 @@
-#!/bin/sh
-RESOURCE_NAME=mp_to_age.jar
-rm -f tpid
-nohup java -jar ./$RESOURCE_NAME --spring.profiles.active=sit &
-echo $! > tpid
-echo Start Success!
-echo
-
-#tpid=`ps -ef|grep $RESOURCE_NAME|grep -v grep|grep -v kill|awk '{print $2}'`
-
-
-
-

+ 0 - 11
gis_application/src/main/resources/data/win/stop.sh

@@ -1,11 +0,0 @@
-#!/bin/bash
-RESOURCE_NAME=mp_to_age.jar
-   Pid=`awk '{print $1}' tpid`
-
-if [ ${Pid} ]; then
-kill -9 $Pid
-echo 'Kill Process!'
-else
-echo 'Stop failed!'
-fi
-

+ 9 - 6
gis_web/pom.xml

@@ -1,23 +1,26 @@
-<?xml version="1.0" encoding="UTF-8"?>
 <project xmlns="http://maven.apache.org/POM/4.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
     <parent>
         <artifactId>army_xinjiang</artifactId>
         <groupId>com.gis</groupId>
         <version>1.0.0</version>
     </parent>
-    <modelVersion>4.0.0</modelVersion>
 
-    <artifactId>gis_web</artifactId>
+    <modelVersion>4.0.0</modelVersion>
+    <artifactId>gis_cms</artifactId>
     <packaging>jar</packaging>
 
     <dependencies>
         <dependency>
             <groupId>com.gis</groupId>
-            <artifactId>gis_service</artifactId>
+            <artifactId>gis_admin</artifactId>
         </dependency>
+
     </dependencies>
 
 
-</project>
+
+
+
+</project>

+ 7 - 7
gis_web/src/main/java/com/gis/controller/BarrageController.java

@@ -1,12 +1,12 @@
-package com.gis.controller;
+package com.gis.cms.controller;
 
+import com.gis.cms.entity.po.BarrageEntity;
+import com.gis.cms.entity.vo.BarrageVo;
 import com.gis.common.base.aop.WebControllerLog;
 import com.gis.common.base.entity.dto.PageDateDto;
 import com.gis.common.util.Result;
-import com.gis.domain.dto.CommentDto;
-import com.gis.domain.po.BarrageEntity;
-import com.gis.domain.vo.BarrageVo;
-import com.gis.service.BarrageService;
+import com.gis.cms.entity.dto.CommentDto;
+import com.gis.cms.service.BarrageService;
 import com.github.pagehelper.PageInfo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -22,8 +22,8 @@ import javax.validation.Valid;
 @Slf4j
 @Api(tags = "弹幕管理")
 @RestController
-@RequestMapping("manage/barrage")
-public class BarrageController extends BaseController {
+@RequestMapping("cms/barrage")
+public class BarrageController  {
 
     @Autowired
     private BarrageService entityService;

+ 8 - 10
gis_web/src/main/java/com/gis/controller/CommentController.java

@@ -1,18 +1,16 @@
-package com.gis.controller;
+package com.gis.cms.controller;
 
+import com.gis.cms.entity.po.CommentEntity;
 import com.gis.common.base.aop.WebControllerLog;
 import com.gis.common.base.entity.dto.PageDateDto;
 import com.gis.common.util.Result;
-import com.gis.domain.dto.CommentDto;
-import com.gis.domain.po.CommentEntity;
-import com.gis.domain.vo.CommentVo;
-import com.gis.service.CommentService;
+import com.gis.cms.entity.dto.CommentDto;
+import com.gis.cms.entity.vo.CommentVo;
+import com.gis.cms.service.CommentService;
 import com.github.pagehelper.PageInfo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
-import org.apache.shiro.authz.annotation.Logical;
-import org.apache.shiro.authz.annotation.RequiresRoles;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
@@ -24,14 +22,14 @@ import javax.validation.Valid;
 @Slf4j
 @Api(tags = "留言管理")
 @RestController
-@RequestMapping("manage/comment")
-public class CommentController extends BaseController {
+@RequestMapping("cms/comment")
+public class CommentController  {
 
     @Autowired
     private CommentService entityService;
 
 
-    @RequiresRoles(value = {"sys_admin", "sys_high"}, logical = Logical.OR)
+//    @RequiresRoles(value = {"sys_admin", "sys_high"}, logical = Logical.OR)
     @ApiOperation("列表")
     @PostMapping("list")
     public Result<PageInfo<CommentVo>> list(@RequestBody PageDateDto param) {

+ 8 - 8
gis_web/src/main/java/com/gis/controller/GoodsController.java

@@ -1,12 +1,12 @@
-package com.gis.controller;
+package com.gis.cms.controller;
 
+import com.gis.cms.entity.dto.AuditDto;
+import com.gis.cms.entity.dto.TypePageDateDto;
+import com.gis.cms.entity.po.GoodsEntity;
 import com.gis.common.base.aop.WebControllerLog;
 import com.gis.common.util.Result;
-import com.gis.domain.dto.AuditDto;
-import com.gis.domain.dto.GoodsDto;
-import com.gis.domain.dto.TypePageDateDto;
-import com.gis.domain.po.GoodsEntity;
-import com.gis.service.GoodsService;
+import com.gis.cms.entity.dto.GoodsDto;
+import com.gis.cms.service.GoodsService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -20,8 +20,8 @@ import javax.validation.Valid;
  */
 @Api(tags = "精品典藏管理")
 @RestController
-@RequestMapping("manage/goods")
-public class GoodsController extends BaseController {
+@RequestMapping("cms/goods")
+public class GoodsController  {
 
     @Autowired
     private GoodsService entityService;

+ 8 - 8
gis_web/src/main/java/com/gis/controller/MartyrController.java

@@ -1,12 +1,12 @@
-package com.gis.controller;
+package com.gis.cms.controller;
 
+import com.gis.cms.entity.dto.MartyrDto;
+import com.gis.cms.entity.dto.StatusPageDataDto;
 import com.gis.common.base.aop.WebControllerLog;
 import com.gis.common.util.Result;
-import com.gis.domain.dto.AuditDto;
-import com.gis.domain.dto.MartyrDto;
-import com.gis.domain.dto.StatusPageDataDto;
-import com.gis.domain.po.MartyrEntity;
-import com.gis.service.MartyrService;
+import com.gis.cms.entity.dto.AuditDto;
+import com.gis.cms.entity.po.MartyrEntity;
+import com.gis.cms.service.MartyrService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
@@ -22,8 +22,8 @@ import javax.validation.Valid;
 @Slf4j
 @Api(tags = "烈士管理")
 @RestController
-@RequestMapping("manage/martyr")
-public class MartyrController extends BaseController {
+@RequestMapping("cms/martyr")
+public class MartyrController  {
 
     @Autowired
     private MartyrService entityService;

+ 5 - 5
gis_web/src/main/java/com/gis/controller/MournController.java

@@ -1,10 +1,10 @@
-package com.gis.controller;
+package com.gis.cms.controller;
 
 import com.gis.common.base.aop.WebControllerLog;
 import com.gis.common.base.entity.dto.PageDateDto;
 import com.gis.common.util.Result;
-import com.gis.domain.po.MournEntity;
-import com.gis.service.MournService;
+import com.gis.cms.entity.po.MournEntity;
+import com.gis.cms.service.MournService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
@@ -17,8 +17,8 @@ import org.springframework.web.bind.annotation.*;
 @Slf4j
 @Api(tags = "烈士悼念管理")
 @RestController
-@RequestMapping("manage/mourn")
-public class MournController extends BaseController {
+@RequestMapping("cms/mourn")
+public class MournController {
 
     @Autowired
     private MournService entityService;

+ 8 - 8
gis_web/src/main/java/com/gis/controller/NewsController.java

@@ -1,12 +1,12 @@
-package com.gis.controller;
+package com.gis.cms.controller;
 
+import com.gis.cms.entity.dto.NewsDto;
+import com.gis.cms.entity.dto.NewsPageDataDto;
 import com.gis.common.base.aop.WebControllerLog;
 import com.gis.common.util.Result;
-import com.gis.domain.dto.AuditDto;
-import com.gis.domain.dto.NewsDto;
-import com.gis.domain.dto.NewsPageDataDto;
-import com.gis.domain.po.NewsEntity;
-import com.gis.service.NewsService;
+import com.gis.cms.entity.dto.AuditDto;
+import com.gis.cms.entity.po.NewsEntity;
+import com.gis.cms.service.NewsService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
@@ -21,8 +21,8 @@ import javax.validation.Valid;
 @Slf4j
 @Api(tags = "知识管理")
 @RestController
-@RequestMapping("manage/news")
-public class NewsController extends BaseController {
+@RequestMapping("cms/news")
+public class NewsController  {
 
     @Autowired
     private NewsService entityService;

+ 10 - 7
gis_web/src/main/java/com/gis/controller/QuestionGroupController.java

@@ -1,11 +1,14 @@
-package com.gis.controller;
+package com.gis.cms.controller;
 
+import com.gis.cms.entity.dto.AuditDto;
+import com.gis.cms.entity.dto.QuestionAnswerDto;
+import com.gis.cms.entity.dto.QuestionGroupDto;
+import com.gis.cms.entity.dto.StatusPageDataDto;
+import com.gis.cms.entity.po.QuestionGroupEntity;
 import com.gis.common.base.aop.WebControllerLog;
 import com.gis.common.util.Result;
-import com.gis.domain.dto.*;
-import com.gis.domain.po.QuestionGroupEntity;
-import com.gis.service.QuestionAnswerService;
-import com.gis.service.QuestionGroupService;
+import com.gis.cms.service.QuestionAnswerService;
+import com.gis.cms.service.QuestionGroupService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
@@ -21,8 +24,8 @@ import java.util.List;
 @Slf4j
 @Api(tags = "题组管理")
 @RestController
-@RequestMapping("manage/questionGroup")
-public class QuestionGroupController extends BaseController {
+@RequestMapping("cms/questionGroup")
+public class QuestionGroupController  {
 
     @Autowired
     private QuestionGroupService entityService;

+ 6 - 6
gis_web/src/main/java/com/gis/controller/SensitiveController.java

@@ -1,11 +1,11 @@
-package com.gis.controller;
+package com.gis.cms.controller;
 
+import com.gis.cms.entity.dto.ContentDto;
 import com.gis.common.base.aop.WebControllerLog;
 import com.gis.common.base.entity.dto.PageDto;
 import com.gis.common.util.Result;
-import com.gis.domain.dto.ContentDto;
-import com.gis.domain.po.SensitiveEntity;
-import com.gis.service.SensitiveService;
+import com.gis.cms.entity.po.SensitiveEntity;
+import com.gis.cms.service.SensitiveService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
@@ -20,8 +20,8 @@ import javax.validation.Valid;
 @Slf4j
 @Api(tags = "敏感词管理")
 @RestController
-@RequestMapping("manage/sensitive")
-public class SensitiveController extends BaseController {
+@RequestMapping("cms/sensitive")
+public class SensitiveController  {
 
     @Autowired
     private SensitiveService entityService;

+ 34 - 49
gis_web/src/main/java/com/gis/controller/WebController.java

@@ -1,15 +1,22 @@
-package com.gis.controller;
-
+package com.gis.cms.controller;
+
+import com.gis.cms.entity.dto.NewsPageDataDto;
+import com.gis.admin.entity.dto.RegisterDto;
+import com.gis.cms.entity.dto.StatusPageDataDto;
+import com.gis.cms.service.BarrageService;
+import com.gis.cms.service.GoodsService;
+import com.gis.cms.service.MartyrService;
+import com.gis.cms.service.NewsService;
 import com.gis.common.base.aop.WebControllerLog;
 import com.gis.common.base.entity.dto.PageDateDto;
 import com.gis.common.base.entity.dto.PageDto;
 import com.gis.common.base.service.LogService;
 import com.gis.common.util.Result;
-import com.gis.domain.dto.*;
-import com.gis.domain.po.GoodsEntity;
-import com.gis.domain.po.MartyrEntity;
-import com.gis.domain.po.NewsEntity;
-import com.gis.service.*;
+import com.gis.cms.entity.dto.TypePageDateDto;
+import com.gis.admin.service.*;
+import com.gis.cms.entity.po.GoodsEntity;
+import com.gis.cms.entity.po.MartyrEntity;
+import com.gis.cms.entity.po.NewsEntity;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
@@ -17,8 +24,7 @@ import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
-import javax.annotation.Resource;
-import javax.servlet.http.HttpServletRequest;
+import javax.validation.Valid;
 
 
 /**
@@ -33,8 +39,8 @@ public class WebController {
     @Autowired
     BarrageService barrageService;
 
-    @Autowired
-    SceneService sceneService;
+//    @Autowired
+//    SceneService sceneService;
 
     @Autowired
     GoodsService goodsService;
@@ -45,14 +51,13 @@ public class WebController {
     @Autowired
     NewsService newsService;
 
-//    @Autowired
-//    SysUserService sysUserService;
+    @Autowired
+    SysUserService sysUserService;
 
     @Autowired
     LogService logService;
 
-    @Resource
-    HttpServletRequest request;
+
 
     @WebControllerLog(description = "门户网站-弹幕列表")
     @ApiOperation("弹幕-列表")
@@ -62,12 +67,12 @@ public class WebController {
     }
 
 
-    @WebControllerLog(description = "门户网站-场景点赞")
-    @ApiOperation("场景-点赞")
-    @GetMapping("scene/star/{id}")
-    public Result sceneStar(@PathVariable Long id){
-        return sceneService.addStar(id);
-    }
+//    @WebControllerLog(description = "门户网站-场景点赞")
+//    @ApiOperation("场景-点赞")
+//    @GetMapping("scene/star/{id}")
+//    public Result sceneStar(@PathVariable Long id){
+//        return sceneService.addStar(id);
+//    }
 
 
     @WebControllerLog(description = "门户网站-精品典藏列表(详情)")
@@ -101,34 +106,14 @@ public class WebController {
         return newsService.search(param, 1);
     }
 
-//    @WebControllerLog(description = "门户网站-用户注册")
-//    @ApiOperation("用户注册")
-//    @PostMapping("register")
-//    public Result register(@Valid @RequestBody RegisterDto param) {
-//
-//        if (!param.getPassword().equals(param.getVerifyPassword())) {
-//            log.error("确认密码不一致");
-//            return Result.failure("确认密码不一致");
-//        }
-//
-//        SysUserEntity entity = sysUserService.findByUserName(param.getUserName());
-//        if (entity != null) {
-//            log.error("该身份证号已注册: {}", param.getUserName());
-//            return Result.failure("该身份证号已注册");
-//        }
-//
-//        entity = new SysUserEntity();
-//        BeanUtils.copyProperties(param, entity);
-//
-//        entity.setPassword(PasswordUtils.encrypt(param.getUserName(), param.getPassword(), PasswordUtils.getStaticSalt()));
-//        entity.setStatus(1);
-//        entity.setRole("sys_visitor");
-//        sysUserService.save(entity);
-//
-//        // 保存操作日志
-//        logService.save(new LogEntity(entity.getId(),"用户注册","新增用户", request.getRemoteAddr()));
-//        return Result.success();
-//    }
+    @WebControllerLog(description = "门户网站-用户注册")
+    @ApiOperation("用户注册")
+    @PostMapping("register")
+    public Result register(@Valid @RequestBody RegisterDto param) {
+        return sysUserService.register(param);
+
+
+    }
 
 
 }

+ 12 - 9
gis_web/src/main/java/com/gis/controller/WebManageController.java

@@ -1,15 +1,18 @@
-package com.gis.controller;
+package com.gis.cms.controller;
 
+import com.gis.cms.entity.po.QuestionGroupEntity;
+import com.gis.cms.service.*;
 import com.gis.common.base.aop.WebControllerLog;
 import com.gis.common.base.entity.dto.PageDateDto;
 import com.gis.common.util.Result;
-import com.gis.domain.dto.CommentDto;
-import com.gis.domain.dto.MournDto;
-import com.gis.domain.dto.StatusPageDataDto;
-import com.gis.domain.po.QuestionGroupEntity;
-import com.gis.domain.vo.CommentVo;
-import com.gis.service.*;
-import io.swagger.annotations.*;
+import com.gis.cms.entity.dto.CommentDto;
+import com.gis.cms.entity.dto.MournDto;
+import com.gis.cms.entity.dto.StatusPageDataDto;
+import com.gis.cms.entity.vo.CommentVo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
@@ -23,7 +26,7 @@ import java.util.Map;
 @Slf4j
 @Api(tags = "门户网站(需要token)")
 @RestController
-@RequestMapping("manage/web")
+@RequestMapping("cms/web")
 public class WebManageController {
 
     @Autowired

+ 1 - 1
gis_domain/src/main/java/com/gis/domain/dto/AuditDto.java

@@ -1,4 +1,4 @@
-package com.gis.domain.dto;
+package com.gis.cms.entity.dto;
 
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;

+ 1 - 1
gis_domain/src/main/java/com/gis/domain/dto/CommentDto.java

@@ -1,4 +1,4 @@
-package com.gis.domain.dto;
+package com.gis.cms.entity.dto;
 
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;

+ 1 - 1
gis_domain/src/main/java/com/gis/domain/dto/ContentDto.java

@@ -1,4 +1,4 @@
-package com.gis.domain.dto;
+package com.gis.cms.entity.dto;
 
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;

+ 1 - 1
gis_domain/src/main/java/com/gis/domain/dto/GoodsDto.java

@@ -1,4 +1,4 @@
-package com.gis.domain.dto;
+package com.gis.cms.entity.dto;
 
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;

+ 1 - 1
gis_domain/src/main/java/com/gis/domain/dto/MartyrDto.java

@@ -1,4 +1,4 @@
-package com.gis.domain.dto;
+package com.gis.cms.entity.dto;
 
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;

+ 1 - 1
gis_domain/src/main/java/com/gis/domain/dto/MournDto.java

@@ -1,4 +1,4 @@
-package com.gis.domain.dto;
+package com.gis.cms.entity.dto;
 
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;

+ 1 - 1
gis_domain/src/main/java/com/gis/domain/dto/NewsDto.java

@@ -1,4 +1,4 @@
-package com.gis.domain.dto;
+package com.gis.cms.entity.dto;
 
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;

+ 1 - 1
gis_domain/src/main/java/com/gis/domain/dto/NewsPageDataDto.java

@@ -1,4 +1,4 @@
-package com.gis.domain.dto;
+package com.gis.cms.entity.dto;
 
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;

+ 1 - 3
gis_domain/src/main/java/com/gis/domain/dto/QuestionAnswerDto.java

@@ -1,10 +1,8 @@
-package com.gis.domain.dto;
+package com.gis.cms.entity.dto;
 
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
-import javax.validation.constraints.NotBlank;
-
 /**
  * Created by owen on 2021/6/24 0024 18:12
  */

+ 1 - 1
gis_domain/src/main/java/com/gis/domain/dto/QuestionGroupDto.java

@@ -1,4 +1,4 @@
-package com.gis.domain.dto;
+package com.gis.cms.entity.dto;
 
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;

+ 56 - 0
gis_cms/src/main/java/com/gis/cms/entity/dto/RegisterDto.java

@@ -0,0 +1,56 @@
+//package com.gis.entity.dto;
+//
+//import io.swagger.annotations.ApiModelProperty;
+//import lombok.Data;
+//import org.hibernate.validator.constraints.Length;
+//
+//import javax.validation.constraints.NotBlank;
+//import javax.validation.constraints.NotNull;
+//
+///**
+// * Created by owen on 2020/5/28 0028 16:36
+// * 游客注册
+// */
+//@Data
+//public class RegisterDto {
+//
+//    @NotBlank(message = "真实姓名不能为空")
+//    @ApiModelProperty(value = "真实姓名")
+//    private String realName;
+//
+//
+//    @NotBlank(message = "身份证号(军号)不能为空")
+//    @ApiModelProperty(value = "身份证号(军号)", required = true)
+//    private String userName;
+//
+//    @NotBlank(message = "昵称不能为空")
+//    @ApiModelProperty(value = "昵称")
+//    private String nickName;
+//
+//    @NotNull(message = "性别不能为空")
+//    @ApiModelProperty(value = "性别 0:男  1:女")
+//    private Integer sex;
+//
+//    @ApiModelProperty(value = "电话")
+//    private String phone;
+//
+////    @NotBlank(message = "单位不能为空")
+//    @ApiModelProperty(value = "单位")
+//    private String unit;
+//
+//    @ApiModelProperty(value = "地址")
+//    private String address;
+//
+//    @Length(min = 6,message = "长度不能小于6位")
+//    @Length(max = 12, message = "长度不能大于12位")
+//    @ApiModelProperty(value = "登录密码")
+//    private String password;
+//
+//    @Length(min = 6,message = "长度不能小于6位")
+//    @Length(max = 12, message = "长度不能大于12位")
+//    @ApiModelProperty(value = "确认密码")
+//    private String verifyPassword;
+//
+//
+//
+//}

+ 1 - 1
gis_domain/src/main/java/com/gis/domain/dto/ResetPasswordDto.java

@@ -1,4 +1,4 @@
-package com.gis.domain.dto;
+package com.gis.cms.entity.dto;
 
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;

+ 1 - 1
gis_domain/src/main/java/com/gis/domain/dto/StatusPageDataDto.java

@@ -1,4 +1,4 @@
-package com.gis.domain.dto;
+package com.gis.cms.entity.dto;
 
 import com.gis.common.base.entity.dto.PageDateDto;
 import io.swagger.annotations.ApiModelProperty;

+ 1 - 1
gis_domain/src/main/java/com/gis/domain/dto/TypePageDateDto.java

@@ -1,4 +1,4 @@
-package com.gis.domain.dto;
+package com.gis.cms.entity.dto;
 
 import com.gis.common.base.entity.dto.PageDateDto;
 import io.swagger.annotations.ApiModelProperty;

+ 1 - 2
gis_domain/src/main/java/com/gis/domain/po/AuditLogEntity.java

@@ -1,11 +1,10 @@
-package com.gis.domain.po;
+package com.gis.cms.entity.po;
 
 import com.gis.common.base.entity.po.BaseEntity;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 import javax.persistence.Table;
-import javax.persistence.Transient;
 import java.io.Serializable;
 
 /**

+ 1 - 1
gis_domain/src/main/java/com/gis/domain/po/BarrageEntity.java

@@ -1,4 +1,4 @@
-package com.gis.domain.po;
+package com.gis.cms.entity.po;
 
 import com.gis.common.base.entity.po.BaseEntity;
 import io.swagger.annotations.ApiModelProperty;

+ 1 - 1
gis_domain/src/main/java/com/gis/domain/po/CommentEntity.java

@@ -1,4 +1,4 @@
-package com.gis.domain.po;
+package com.gis.cms.entity.po;
 
 import com.gis.common.base.entity.po.BaseEntity;
 import io.swagger.annotations.ApiModelProperty;

+ 1 - 1
gis_domain/src/main/java/com/gis/domain/po/FileEntity.java

@@ -1,4 +1,4 @@
-package com.gis.domain.po;
+package com.gis.cms.entity.po;
 
 import com.gis.common.base.entity.po.BaseEntity;
 import io.swagger.annotations.ApiModelProperty;

+ 1 - 1
gis_domain/src/main/java/com/gis/domain/po/GoodsEntity.java

@@ -1,4 +1,4 @@
-package com.gis.domain.po;
+package com.gis.cms.entity.po;
 
 import com.gis.common.base.entity.po.BaseEntity;
 import io.swagger.annotations.ApiModelProperty;

+ 1 - 1
gis_domain/src/main/java/com/gis/domain/po/MartyrEntity.java

@@ -1,4 +1,4 @@
-package com.gis.domain.po;
+package com.gis.cms.entity.po;
 
 import com.gis.common.base.entity.po.BaseEntity;
 import io.swagger.annotations.ApiModelProperty;

+ 1 - 1
gis_domain/src/main/java/com/gis/domain/po/MournEntity.java

@@ -1,4 +1,4 @@
-package com.gis.domain.po;
+package com.gis.cms.entity.po;
 
 import com.gis.common.base.entity.po.BaseEntity;
 import io.swagger.annotations.ApiModelProperty;

+ 1 - 1
gis_domain/src/main/java/com/gis/domain/po/NewsEntity.java

@@ -1,4 +1,4 @@
-package com.gis.domain.po;
+package com.gis.cms.entity.po;
 
 import com.gis.common.base.entity.po.BaseEntity;
 import io.swagger.annotations.ApiModelProperty;

+ 1 - 1
gis_domain/src/main/java/com/gis/domain/po/QuestionAnswerEntity.java

@@ -1,4 +1,4 @@
-package com.gis.domain.po;
+package com.gis.cms.entity.po;
 
 import com.alibaba.fastjson.annotation.JSONField;
 import com.gis.common.base.entity.po.BaseEntity;

+ 1 - 1
gis_domain/src/main/java/com/gis/domain/po/QuestionGroupEntity.java

@@ -1,4 +1,4 @@
-package com.gis.domain.po;
+package com.gis.cms.entity.po;
 
 import com.gis.common.base.entity.po.BaseEntity;
 import io.swagger.annotations.ApiModelProperty;

+ 1 - 1
gis_domain/src/main/java/com/gis/domain/po/QuestionUserEntity.java

@@ -1,4 +1,4 @@
-package com.gis.domain.po;
+package com.gis.cms.entity.po;
 
 import com.gis.common.base.entity.po.BaseEntity;
 import io.swagger.annotations.ApiModelProperty;

+ 1 - 1
gis_domain/src/main/java/com/gis/domain/po/SensitiveEntity.java

@@ -1,4 +1,4 @@
-package com.gis.domain.po;
+package com.gis.cms.entity.po;
 
 import com.gis.common.base.entity.po.BaseEntity;
 import io.swagger.annotations.ApiModelProperty;

+ 1 - 1
gis_domain/src/main/java/com/gis/domain/vo/BarrageVo.java

@@ -1,4 +1,4 @@
-package com.gis.domain.vo;
+package com.gis.cms.entity.vo;
 
 import com.gis.common.base.entity.po.BaseEntity;
 import io.swagger.annotations.ApiModelProperty;

+ 1 - 1
gis_domain/src/main/java/com/gis/domain/vo/CommentVo.java

@@ -1,4 +1,4 @@
-package com.gis.domain.vo;
+package com.gis.cms.entity.vo;
 
 import com.gis.common.base.entity.po.BaseEntity;
 import io.swagger.annotations.ApiModelProperty;

+ 2 - 2
gis_mapper/src/main/java/com/gis/mapper/AuditLogMapper.java

@@ -1,8 +1,8 @@
-package com.gis.mapper;
+package com.gis.cms.mapper;
 
 
 import com.gis.common.base.mapper.IBaseMapper;
-import com.gis.domain.po.AuditLogEntity;
+import com.gis.cms.entity.po.AuditLogEntity;
 import org.apache.ibatis.annotations.Mapper;
 import org.springframework.stereotype.Component;
 

+ 4 - 4
gis_mapper/src/main/java/com/gis/mapper/BarrageMapper.java

@@ -1,11 +1,11 @@
-package com.gis.mapper;
+package com.gis.cms.mapper;
 
 
+import com.gis.cms.entity.po.BarrageEntity;
+import com.gis.cms.mapper.provider.BarrageProvider;
 import com.gis.common.base.entity.dto.PageDateDto;
 import com.gis.common.base.mapper.IBaseMapper;
-import com.gis.domain.po.BarrageEntity;
-import com.gis.domain.vo.BarrageVo;
-import com.gis.mapper.provider.BarrageProvider;
+import com.gis.cms.entity.vo.BarrageVo;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.SelectProvider;
 import org.springframework.stereotype.Component;

+ 4 - 4
gis_mapper/src/main/java/com/gis/mapper/CommentMapper.java

@@ -1,11 +1,11 @@
-package com.gis.mapper;
+package com.gis.cms.mapper;
 
 
 import com.gis.common.base.entity.dto.PageDateDto;
 import com.gis.common.base.mapper.IBaseMapper;
-import com.gis.domain.po.CommentEntity;
-import com.gis.domain.vo.CommentVo;
-import com.gis.mapper.provider.CommentProvider;
+import com.gis.cms.entity.po.CommentEntity;
+import com.gis.cms.entity.vo.CommentVo;
+import com.gis.cms.mapper.provider.CommentProvider;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Select;
 import org.apache.ibatis.annotations.SelectProvider;

+ 2 - 2
gis_mapper/src/main/java/com/gis/mapper/FileMapper.java

@@ -1,8 +1,8 @@
-package com.gis.mapper;
+package com.gis.cms.mapper;
 
 
+import com.gis.cms.entity.po.FileEntity;
 import com.gis.common.base.mapper.IBaseMapper;
-import com.gis.domain.po.FileEntity;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Select;
 import org.apache.ibatis.annotations.Update;

+ 4 - 4
gis_mapper/src/main/java/com/gis/mapper/GoodsMapper.java

@@ -1,10 +1,10 @@
-package com.gis.mapper;
+package com.gis.cms.mapper;
 
 
+import com.gis.cms.entity.po.GoodsEntity;
+import com.gis.cms.mapper.provider.GoodsProvider;
 import com.gis.common.base.mapper.IBaseMapper;
-import com.gis.domain.dto.TypePageDateDto;
-import com.gis.domain.po.GoodsEntity;
-import com.gis.mapper.provider.GoodsProvider;
+import com.gis.cms.entity.dto.TypePageDateDto;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.SelectProvider;
 import org.springframework.stereotype.Component;

+ 2 - 2
gis_mapper/src/main/java/com/gis/mapper/MartyrMapper.java

@@ -1,8 +1,8 @@
-package com.gis.mapper;
+package com.gis.cms.mapper;
 
 
 import com.gis.common.base.mapper.IBaseMapper;
-import com.gis.domain.po.MartyrEntity;
+import com.gis.cms.entity.po.MartyrEntity;
 import org.apache.ibatis.annotations.Mapper;
 import org.springframework.stereotype.Component;
 

+ 2 - 2
gis_mapper/src/main/java/com/gis/mapper/MournMapper.java

@@ -1,8 +1,8 @@
-package com.gis.mapper;
+package com.gis.cms.mapper;
 
 
 import com.gis.common.base.mapper.IBaseMapper;
-import com.gis.domain.po.MournEntity;
+import com.gis.cms.entity.po.MournEntity;
 import org.apache.ibatis.annotations.Mapper;
 import org.springframework.stereotype.Component;
 

+ 2 - 2
gis_mapper/src/main/java/com/gis/mapper/NewsMapper.java

@@ -1,8 +1,8 @@
-package com.gis.mapper;
+package com.gis.cms.mapper;
 
 
 import com.gis.common.base.mapper.IBaseMapper;
-import com.gis.domain.po.NewsEntity;
+import com.gis.cms.entity.po.NewsEntity;
 import org.apache.ibatis.annotations.Mapper;
 import org.springframework.stereotype.Component;
 

+ 0 - 0
gis_mapper/src/main/java/com/gis/mapper/QuestionAnswerMapper.java


Algúns arquivos non se mostraron porque demasiados arquivos cambiaron neste cambio