Browse Source

添加缓存

李进 2 years ago
parent
commit
e9b20672f8

+ 5 - 3
authorize-api-service/src/main/java/com/xy/entity/SysMenu.java

@@ -5,6 +5,8 @@ import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
 
+import java.io.Serializable;
+
 /**
  * <p>
  * 菜单表
@@ -16,14 +18,14 @@ import lombok.experimental.Accessors;
 @Data
 @Accessors(chain = true)
 @EqualsAndHashCode(callSuper = true)
-public class SysMenu extends BaseEntity2<SysMenu> {
+public class SysMenu extends BaseEntity2<SysMenu> implements Serializable {
 
     private static final long serialVersionUID = 1L;
 
     /**
-     * 父id;多个,分隔
+     * 父id
      */
-    private String paterId;
+    private Long paterId;
 
     /**
      * 系统id

+ 4 - 1
authorize-api-service/src/main/java/com/xy/entity/SysRoleMenu.java

@@ -30,5 +30,8 @@ public class SysRoleMenu extends BaseEntity<SysRoleMenu> {
      */
     private Long menuId;
 
-
+    /**
+     * 管理员数据查询权限
+     */
+    private Boolean selectIsAdmin;
 }

+ 0 - 10
authorize-api-service/src/main/java/com/xy/entity/SysSystem.java

@@ -35,16 +35,6 @@ public class SysSystem extends BaseEntity2<SysSystem> {
      */
     private String name;
 
-    /**
-     * 大类
-     */
-    private Integer type1;
-
-    /**
-     * 小类
-     */
-    private Integer type2;
-
     /**
      * 状态
      */

+ 6 - 2
authorize-api-service/src/main/java/com/xy/entity/SysSystemUserRole.java

@@ -26,8 +26,12 @@ public class SysSystemUserRole extends BaseEntity<SysSystemUserRole> {
     private Long systemUserId;
 
     /**
-     * 角色id;多个,分隔
+     * 角色id
      */
-    private String roleId;
+    private Long roleId;
 
+    /**
+     * 系统id
+     */
+    private Long sysId;
 }

+ 2 - 2
authorize-api-service/src/main/java/com/xy/entity/SysUserDept.java

@@ -26,9 +26,9 @@ public class SysUserDept extends BaseEntity<SysUserDept> {
     private Long workUserId;
 
     /**
-     * 部门id;多个,号分隔
+     * 部门id
      */
-    private String deptId;
+    private Long deptId;
 
     /**
      * 系统id

+ 2 - 2
authorize-api-service/src/main/java/com/xy/entity/SysUserRole.java

@@ -26,9 +26,9 @@ public class SysUserRole extends BaseEntity<SysUserRole> {
     private Long workUserId;
 
     /**
-     * 角色id;多个,分隔
+     * 角色id
      */
-    private String roleId;
+    private Long roleId;
 
     /**
      * 系统id

+ 29 - 0
authorize-api-service/src/main/java/com/xy/entity/join/SysMenuJoinSysRoleMenu.java

@@ -0,0 +1,29 @@
+package com.xy.entity.join;
+
+import com.xy.entity.SysMenu;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.util.List;
+
+@Data
+@Accessors(chain = true)
+public class SysMenuJoinSysRoleMenu extends SysMenu implements Serializable {
+
+    /**
+     * 角色id
+     */
+    private Long roleId;
+
+    /**
+     * 管理员数据查询权限
+     */
+    private Boolean selectIsAdmin;
+
+    /**
+     * 子级集合
+     */
+    private List<SysMenuJoinSysRoleMenu> sonSysMenu;
+
+}

+ 2 - 2
authorize-api-service/src/main/java/com/xy/mapper/SysMenuMapper.java

@@ -1,7 +1,7 @@
 package com.xy.mapper;
 
 import com.xy.entity.SysMenu;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import icu.mhb.mybatisplus.plugln.base.mapper.JoinBaseMapper;
 
 /**
  * <p>
@@ -11,6 +11,6 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  * @author lijin
  * @since 2022-12-09
  */
-public interface SysMenuMapper extends BaseMapper<SysMenu> {
+public interface SysMenuMapper extends JoinBaseMapper<SysMenu> {
 
 }

+ 2 - 2
authorize-api-service/src/main/java/com/xy/mapper/SysRoleMapper.java

@@ -1,7 +1,7 @@
 package com.xy.mapper;
 
 import com.xy.entity.SysRole;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import icu.mhb.mybatisplus.plugln.base.mapper.JoinBaseMapper;
 
 /**
  * <p>
@@ -11,6 +11,6 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  * @author lijin
  * @since 2022-12-09
  */
-public interface SysRoleMapper extends BaseMapper<SysRole> {
+public interface SysRoleMapper extends JoinBaseMapper<SysRole> {
 
 }

+ 2 - 2
authorize-api-service/src/main/java/com/xy/mapper/SysRoleMenuMapper.java

@@ -1,7 +1,7 @@
 package com.xy.mapper;
 
 import com.xy.entity.SysRoleMenu;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import icu.mhb.mybatisplus.plugln.base.mapper.JoinBaseMapper;
 
 /**
  * <p>
@@ -11,6 +11,6 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  * @author lijin
  * @since 2022-12-09
  */
-public interface SysRoleMenuMapper extends BaseMapper<SysRoleMenu> {
+public interface SysRoleMenuMapper extends JoinBaseMapper<SysRoleMenu> {
 
 }

+ 2 - 2
authorize-api-service/src/main/java/com/xy/mapper/SysSystemUserRoleMapper.java

@@ -1,7 +1,7 @@
 package com.xy.mapper;
 
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.xy.entity.SysSystemUserRole;
+import icu.mhb.mybatisplus.plugln.base.mapper.JoinBaseMapper;
 
 /**
  * <p>
@@ -11,5 +11,5 @@ import com.xy.entity.SysSystemUserRole;
  * @author lijin
  * @since 2022-12-09
  */
-public interface SysSystemUserRoleMapper extends BaseMapper<SysSystemUserRole> {
+public interface SysSystemUserRoleMapper extends JoinBaseMapper<SysSystemUserRole> {
 }

+ 125 - 0
authorize-api-service/src/main/java/com/xy/redis/RedisCache.java

@@ -0,0 +1,125 @@
+package com.xy.redis;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.xy.collections.list.JArrayList;
+import com.xy.collections.list.JList;
+import com.xy.collections.map.JMap;
+import com.xy.entity.*;
+import com.xy.entity.join.SysMenuJoinSysRoleMenu;
+import com.xy.mapper.SysMenuMapper;
+import com.xy.mapper.SysRoleMapper;
+import com.xy.mapper.SysSystemMapper;
+import com.xy.utils.Beans;
+import com.xy.utils.Emptys;
+import com.xy.utils.RedisService;
+import com.xy.utils.SpringBeanUtils;
+import icu.mhb.mybatisplus.plugln.core.JoinLambdaWrapper;
+import lombok.Data;
+import lombok.experimental.Accessors;
+import org.springframework.stereotype.Component;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@Component
+public class RedisCache {
+
+    private static String getKey(Long loginId) {
+        return String.format("%s:%d", "menu", loginId);
+    }
+
+    /**
+     * 缓存权限相关到redis
+     *
+     * @param loginId 登录id
+     */
+    public static void cache(Long loginId) {
+        SysSystemMapper sysSystemMapper = SpringBeanUtils.getBean(SysSystemMapper.class);
+        SysRoleMapper sysRoleMapper = SpringBeanUtils.getBean(SysRoleMapper.class);
+        SysMenuMapper sysMenuMapper = SpringBeanUtils.getBean(SysMenuMapper.class);
+        RedisService<List<CacheEntity>> roleMenuRedisService = SpringBeanUtils.getBean(RedisService.class);
+        //获取登录人所有系统
+        List<SysSystem> sysSystems = sysSystemMapper.selectList(new LambdaQueryWrapper<SysSystem>()
+                .eq(SysSystem::getSysUserId, loginId)
+                .eq(SysSystem::getStatus, true)
+        );
+        if (!Emptys.check(sysSystems)) {
+            return;
+        }
+        //获取登录人所有角色
+        JoinLambdaWrapper<SysRole> sysRoleJoinLambdaWrapper = new JoinLambdaWrapper<>(SysRole.class)
+                .eq(SysRole::getStatus, true)
+                .innerJoin(SysSystemUserRole.class, SysSystemUserRole::getRoleId, SysRole::getId)
+                .eq(SysSystemUserRole::getSystemUserId, loginId)
+                .end();
+        List<SysRole> sysRoles = sysRoleMapper.joinSelectList(sysRoleJoinLambdaWrapper, SysRole.class);
+        JList<Long> sysRoleIds = new JArrayList<>(sysRoles).getProperty(SysRole::getId);
+        if (sysRoleIds.size() == 0) {
+            return;
+        }
+        //获取登录人所有角色菜单
+        JoinLambdaWrapper<SysMenu> sysMenuJoinLambdaWrapper = new JoinLambdaWrapper<>(SysMenu.class)
+                .eq(SysMenu::getStatus, true)
+                .innerJoin(SysRoleMenu.class, SysRoleMenu::getMenuId, SysMenu::getId)
+                .selectAs(cb -> cb
+                        .add(SysRoleMenu::getSelectIsAdmin)
+                        .add(SysRoleMenu::getRoleId)
+                )
+                .in(SysRoleMenu::getRoleId, sysRoleIds)
+                .end();
+        List<SysMenuJoinSysRoleMenu> sysMenus = sysMenuMapper.joinSelectList(sysMenuJoinLambdaWrapper, SysMenuJoinSysRoleMenu.class);
+        JMap<Long, List<SysMenuJoinSysRoleMenu>> sysMenuMaps = new JArrayList<>(sysMenus).toMap(SysMenuJoinSysRoleMenu::getRoleId).group();
+        sysSystems.forEach(sysSystem -> {
+            List<CacheEntity> cacheEntitys = new ArrayList<>();
+            sysRoles.forEach(sysRole -> {
+                CacheEntity cacheEntity = new CacheEntity()
+                        .setRoleId(sysRole.getId())
+                        .setList(sysMenuMaps.get(sysRole.getId()));
+                cacheEntitys.add(cacheEntity);
+            });
+            roleMenuRedisService.setMap(getKey(loginId), sysSystem.getId().toString(), cacheEntitys);
+        });
+    }
+
+    /**
+     * 获取菜单树
+     *
+     * @param loginId  登录id
+     * @param systemId 系统id
+     * @return
+     */
+    public static List<SysMenuJoinSysRoleMenu> getMenuTree(Long loginId, Long systemId) {
+        //获取redis缓存
+        RedisService<List<CacheEntity>> roleMenuRedisService = SpringBeanUtils.getBean(RedisService.class);
+        List<CacheEntity> cacheEntities = roleMenuRedisService.getMap(getKey(loginId), systemId.toString());
+        //角色菜单累加
+        JList<SysMenuJoinSysRoleMenu> sysMenuJoinSysRoleMenus = new JArrayList<>();
+        cacheEntities.forEach(cacheEntity -> sysMenuJoinSysRoleMenus.addAll(cacheEntity.getList()));
+        //去重
+        sysMenuJoinSysRoleMenus.comparing(SysMenuJoinSysRoleMenu::getId);
+        //生成树
+        JList<SysMenuJoinSysRoleMenu> tops = sysMenuJoinSysRoleMenus.filter().isNull(SysMenuJoinSysRoleMenu::getPaterId).list();
+        for (SysMenuJoinSysRoleMenu top : tops) {
+            List<SysMenuJoinSysRoleMenu> tree = Beans.tree(top, sysMenuJoinSysRoleMenus, SysMenuJoinSysRoleMenu::getId, SysMenuJoinSysRoleMenu::getPaterId, SysMenuJoinSysRoleMenu::getSonSysMenu);
+            top.setSonSysMenu(tree);
+        }
+        return tops;
+    }
+
+    @Data
+    @Accessors(chain = true)
+    public static class CacheEntity {
+
+        /**
+         * 角色id
+         */
+        private Long roleId;
+
+        /**
+         * 菜单集合
+         */
+        private List<SysMenuJoinSysRoleMenu> list;
+
+    }
+
+}

+ 22 - 0
authorize-api-service/src/main/java/com/xy/redis/TestService.java

@@ -0,0 +1,22 @@
+package com.xy.redis;
+
+import com.xy.annotate.RestMappingController;
+import com.xy.entity.join.SysMenuJoinSysRoleMenu;
+import com.xy.utils.SaTokenUtils;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.GetMapping;
+
+import java.util.List;
+
+@Api(tags = "测试")
+@RestMappingController("test")
+public class TestService {
+
+    @ApiOperation("测试")
+    @GetMapping("test")
+    public List<SysMenuJoinSysRoleMenu> test() {
+        return RedisCache.getMenuTree(Long.parseLong(SaTokenUtils.getId().toString()), 1L);
+    }
+
+}

+ 42 - 3
authorize-api-service/src/main/java/com/xy/service/impl/SysSystemServiceImpl.java

@@ -1,12 +1,27 @@
 package com.xy.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.xy.dto.SysSystemDto;
 import com.xy.entity.SysSystem;
 import com.xy.mapper.SysSystemMapper;
 import com.xy.service.SysSystemService;
+import com.xy.utils.MybatisPlusQuery;
+import com.xy.utils.PageBean;
 import com.xy.utils.R;
+import com.xy.utils.SaTokenUtils;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+
+import static com.xy.utils.Beans.copy;
+import static com.xy.utils.PlusBeans.toIPage;
+import static com.xy.utils.PlusBeans.toPageBean;
 
 /**
  * <p>
@@ -17,11 +32,35 @@ import org.springframework.stereotype.Service;
  * @since 2022-12-09
  */
 @Service
+@Api(tags = "系统接口")
 @AllArgsConstructor
 public class SysSystemServiceImpl extends ServiceImpl<SysSystemMapper, SysSystem> implements SysSystemService {
 
-    @Override
-    public R<String> save() {
-        return null;
+    @PostMapping("save")
+    @ApiOperation("添加系统")
+    public R<Long> save(@RequestBody @Validated SysSystemDto.Save save) {
+        long count = count(new LambdaQueryWrapper<SysSystem>().eq(SysSystem::getCode, save.getCode()));
+        if (count > 0) {
+            return R.fail("标识已存在");
+        }
+        long loginId = Long.parseLong(SaTokenUtils.getId().toString());
+        SysSystem sysSystem = copy(SysSystem.class, save)
+                .create(loginId)
+                .setSysUserId(loginId);
+        save(sysSystem);
+        return R.ok(sysSystem.getId());
+    }
+
+    @PostMapping("page")
+    @ApiOperation("分页查询")
+    public R<PageBean<SysSystemDto.Vo>> page(@RequestBody SysSystemDto.Select select) {
+        long loginId = Long.parseLong(SaTokenUtils.getId().toString());
+        LambdaQueryWrapper<SysSystem> lambdaQueryWrapper = new MybatisPlusQuery().eqWrapper(select, SysSystem.class)
+                .ge(SysSystem::getCreateTime, select.getBeginCreateTime())
+                .le(SysSystem::getCreateTime, select.getEndCreateTime())
+                .like(SysSystem::getName)
+                .build();
+        IPage<SysSystem> page = page(toIPage(select.getPage()), lambdaQueryWrapper);
+        return R.ok(toPageBean(SysSystemDto.Vo.class, page));
     }
 }

+ 7 - 2
authorize-api-service/src/main/java/com/xy/service/impl/SysSystemUserServiceImpl.java

@@ -8,10 +8,12 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.xy.dto.SysSystemUserDto;
 import com.xy.entity.SysSystemUser;
 import com.xy.mapper.SysSystemUserMapper;
+import com.xy.redis.RedisCache;
 import com.xy.service.SysSystemUserService;
 import com.xy.utils.*;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
@@ -30,6 +32,7 @@ import static com.xy.utils.PlusBeans.toPageBean;
  * @since 2022-12-09
  */
 @Service
+@AllArgsConstructor
 @Api(tags = "权限用户接口")
 public class SysSystemUserServiceImpl extends ServiceImpl<SysSystemUserMapper, SysSystemUser> implements SysSystemUserService {
 
@@ -54,6 +57,8 @@ public class SysSystemUserServiceImpl extends ServiceImpl<SysSystemUserMapper, S
                 .setIsLogin(true);
         update.setId(sysSystemUser.getId());
         update(update);
+        //缓存权限相关到redis
+        RedisCache.cache(sysSystemUser.getId());
         return R.ok(StpUtil.getTokenValue());
     }
 
@@ -80,8 +85,8 @@ public class SysSystemUserServiceImpl extends ServiceImpl<SysSystemUserMapper, S
     @ApiOperation("分页查询")
     public R<PageBean<SysSystemUserDto.Vo>> page(@RequestBody SysSystemUserDto.Select select) {
         LambdaQueryWrapper<SysSystemUser> lambdaQueryWrapper = new MybatisPlusQuery().eqWrapper(select, SysSystemUser.class)
-                .ge(SysSystemUser::getCreateTime, select.getBeginCreateTime().atTime(0, 0, 0))
-                .le(SysSystemUser::getCreateTime, select.getEndCreateTime().atTime(23, 59, 59))
+                .ge(SysSystemUser::getCreateTime, select.getBeginCreateTime())
+                .le(SysSystemUser::getCreateTime, select.getEndCreateTime())
                 .build();
         IPage<SysSystemUser> page = page(toIPage(select.getPage()), lambdaQueryWrapper);
         return R.ok(toPageBean(SysSystemUserDto.Vo.class, page));

+ 78 - 0
authorize-api/src/main/java/com/xy/dto/SysSystemDto.java

@@ -1,11 +1,89 @@
 package com.xy.dto;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.xy.utils.PageBean;
 import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.experimental.Accessors;
 
+import javax.validation.constraints.NotBlank;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+
 @Data
 @ApiModel("系统交互类")
 @Accessors(chain = true)
 public class SysSystemDto {
+
+    @Data
+    @Accessors(chain = true)
+    @ApiModel("更新交互")
+    public static class Save {
+
+        @NotBlank(message = "code不能为空")
+        @ApiModelProperty("标识")
+        private String code;
+
+        @NotBlank(message = "name不能为空")
+        @ApiModelProperty("名称")
+        private String name;
+    }
+
+    @Data
+    @Accessors(chain = true)
+    @ApiModel("查询交互")
+    public static class Select extends Vo {
+        @ApiModelProperty("分页对象")
+        private PageBean page;
+
+        @JsonFormat(pattern = "yyyy-MM-dd")
+        @ApiModelProperty(value = "创建时间-起")
+        private LocalDate beginCreateTime;
+
+        @JsonFormat(pattern = "yyyy-MM-dd")
+        @ApiModelProperty(value = "创建时间-始")
+        private LocalDate endCreateTime;
+
+        public LocalDateTime getBeginCreateTime() {
+            return beginCreateTime == null ? null : beginCreateTime.atTime(0, 0, 0);
+        }
+
+        public LocalDateTime getEndCreateTime() {
+            return endCreateTime == null ? null : endCreateTime.atTime(23, 59, 59);
+        }
+    }
+
+    @Data
+    @Accessors(chain = true)
+    @ApiModel("返参类")
+    public static class Vo {
+
+        @ApiModelProperty("唯一标识")
+        private Long id;
+
+        @ApiModelProperty("创建时间")
+        private LocalDateTime createTime;
+
+        @ApiModelProperty("更新时间")
+        private LocalDateTime updateTime;
+
+        @ApiModelProperty("创建人")
+        private Long createUser;
+
+        @ApiModelProperty("更新人")
+        private Long updateUser;
+
+        @ApiModelProperty("权限用户id")
+        private Long sysUserId;
+
+        @ApiModelProperty("标识")
+        private String code;
+
+        @ApiModelProperty("名称")
+        private String name;
+
+        @ApiModelProperty("状态")
+        private Boolean status;
+    }
 }

+ 9 - 10
authorize-api/src/main/java/com/xy/dto/SysSystemUserDto.java

@@ -20,19 +20,10 @@ public class SysSystemUserDto {
     @Data
     @ApiModel("查询交互类")
     @Accessors(chain = true)
-    public static class Select {
+    public static class Select extends Vo {
         @ApiModelProperty("分页对象")
         private PageBean page;
 
-        @ApiModelProperty("唯一标识")
-        private Long id;
-
-        @ApiModelProperty("账号")
-        private String account;
-
-        @ApiModelProperty("状态 true=启用 false=封禁")
-        private Boolean status;
-
         @JsonFormat(pattern = "yyyy-MM-dd")
         @ApiModelProperty(value = "创建时间-起")
         private LocalDate beginCreateTime;
@@ -40,6 +31,14 @@ public class SysSystemUserDto {
         @JsonFormat(pattern = "yyyy-MM-dd")
         @ApiModelProperty(value = "创建时间-始")
         private LocalDate endCreateTime;
+
+        public LocalDateTime getBeginCreateTime() {
+            return beginCreateTime == null ? null : beginCreateTime.atTime(0, 0, 0);
+        }
+
+        public LocalDateTime getEndCreateTime() {
+            return endCreateTime == null ? null : endCreateTime.atTime(23, 59, 59);
+        }
     }
 
     @Data

+ 0 - 9
authorize-api/src/main/java/com/xy/service/SysSystemService.java

@@ -1,8 +1,6 @@
 package com.xy.service;
 
 import com.xy.annotate.RestMappingController;
-import com.xy.utils.R;
-import org.springframework.web.bind.annotation.PostMapping;
 
 /**
  * <p>
@@ -15,11 +13,4 @@ import org.springframework.web.bind.annotation.PostMapping;
 @RestMappingController("sys-system")
 public interface SysSystemService {
 
-    /**
-     * 新增
-     *
-     * @return
-     */
-    @PostMapping("save")
-    R<String> save();
 }

+ 121 - 0
sql/init.sql

@@ -0,0 +1,121 @@
+-- 新增权限系统管理员租户
+delete from sys_system_user where id = 1;
+insert into sys_system_user(id, account, password, create_time, update_time)
+values(1, 'xyadmin', 'e10adc3949ba59abbe56e057f20f883e', now(), now());
+
+-- 新增权限系统
+delete from sys_system where id = 1;
+insert into sys_system(id, sys_user_id, code, name, create_time, update_time)
+values(1, 1, 'xy_system', '兴元权限系统', now(), now());
+
+-- 新增权限系统管理员角色
+delete from sys_role where id = 1;
+insert into sys_role(id, sys_id, code, name, description, create_time, update_time)
+values(1, 1, 'xy_system_admin', '超级管理员', '超级管理员', now(), now());
+
+-- 新增权限系统权限用户角色关联
+delete from sys_system_user_role where id = 1;
+insert into sys_system_user_role(id, system_user_id, role_id, sys_id)
+values(1, 1, 1, 1);
+
+-- 新增权限系统菜单
+delete from sys_menu where id in(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23);
+insert into sys_menu(id, pater_id, sys_id, code, name, type, interface_uri, web_json, create_time, update_time)
+values(1, null, 1, 'authorize', '权限管理', 1, null, null, now(), now());
+
+insert into sys_menu(id, pater_id, sys_id, code, name, type, interface_uri, web_json, create_time, update_time)
+values(2, 1, 1, 'menu', '菜单管理', 1, null, null, now(), now());
+insert into sys_menu(id, pater_id, sys_id, code, name, type, interface_uri, web_json, create_time, update_time)
+values(3, 2, 1, 'menu_data', '菜单列表', 2, null, null, now(), now());
+insert into sys_menu(id, pater_id, sys_id, code, name, type, interface_uri, web_json, create_time, update_time)
+values(4, 3, 1, 'menu_add', '添加菜单', 3, null, null, now(), now());
+insert into sys_menu(id, pater_id, sys_id, code, name, type, interface_uri, web_json, create_time, update_time)
+values(5, 3, 1, 'menu_del', '删除菜单', 3, null, null, now(), now());
+insert into sys_menu(id, pater_id, sys_id, code, name, type, interface_uri, web_json, create_time, update_time)
+values(6, 3, 1, 'menu_edit', '编辑菜单', 3, null, null, now(), now());
+
+insert into sys_menu(id, pater_id, sys_id, code, name, type, interface_uri, web_json, create_time, update_time)
+values(7, 1, 1, 'role', '角色管理', 1, null, null, now(), now());
+insert into sys_menu(id, pater_id, sys_id, code, name, type, interface_uri, web_json, create_time, update_time)
+values(8, 7, 1, 'role_data', '角色列表', 2, null, null, now(), now());
+insert into sys_menu(id, pater_id, sys_id, code, name, type, interface_uri, web_json, create_time, update_time)
+values(9, 8, 1, 'role_add', '添加角色', 3, null, null, now(), now());
+insert into sys_menu(id, pater_id, sys_id, code, name, type, interface_uri, web_json, create_time, update_time)
+values(10, 8, 1, 'role_add', '删除角色', 3, null, null, now(), now());
+insert into sys_menu(id, pater_id, sys_id, code, name, type, interface_uri, web_json, create_time, update_time)
+values(11, 8, 1, 'role_menu', '分配菜单', 3, null, null, now(), now());
+insert into sys_menu(id, pater_id, sys_id, code, name, type, interface_uri, web_json, create_time, update_time)
+values(12, 8, 1, 'role_edit', '编辑角色', 3, null, null, now(), now());
+
+insert into sys_menu(id, pater_id, sys_id, code, name, type, interface_uri, web_json, create_time, update_time)
+values(13, 1, 1, 'system', '系统管理', 1, null, null, now(), now());
+insert into sys_menu(id, pater_id, sys_id, code, name, type, interface_uri, web_json, create_time, update_time)
+values(14, 13, 1, 'system_data', '系统列表', 2, null, null, now(), now());
+insert into sys_menu(id, pater_id, sys_id, code, name, type, interface_uri, web_json, create_time, update_time)
+values(15, 14, 1, 'system_add', '添加系统', 2, null, null, now(), now());
+insert into sys_menu(id, pater_id, sys_id, code, name, type, interface_uri, web_json, create_time, update_time)
+values(16, 14, 1, 'system_del', '删除系统', 2, null, null, now(), now());
+insert into sys_menu(id, pater_id, sys_id, code, name, type, interface_uri, web_json, create_time, update_time)
+values(17, 14, 1, 'system_edit', '编辑系统', 2, null, null, now(), now());
+
+insert into sys_menu(id, pater_id, sys_id, code, name, type, interface_uri, web_json, create_time, update_time)
+values(18, 1, 1, 'dept', '部门管理', 1, null, null, now(), now());
+insert into sys_menu(id, pater_id, sys_id, code, name, type, interface_uri, web_json, create_time, update_time)
+values(19, 18, 1, 'dept_data', '部门列表', 2, null, null, now(), now());
+insert into sys_menu(id, pater_id, sys_id, code, name, type, interface_uri, web_json, create_time, update_time)
+values(20, 19, 1, 'dept_add', '添加部门', 2, null, null, now(), now());
+insert into sys_menu(id, pater_id, sys_id, code, name, type, interface_uri, web_json, create_time, update_time)
+values(21, 19, 1, 'dept_del', '删除部门', 2, null, null, now(), now());
+insert into sys_menu(id, pater_id, sys_id, code, name, type, interface_uri, web_json, create_time, update_time)
+values(22, 19, 1, 'dept_edit', '编辑部门', 2, null, null, now(), now());
+insert into sys_menu(id, pater_id, sys_id, code, name, type, interface_uri, web_json, create_time, update_time)
+values(23, 19, 1, 'dept_role', '分配角色', 2, null, null, now(), now());
+
+-- 新增权限系统角色菜单关联
+delete from sys_role_menu where id in(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23);
+insert into sys_role_menu(id, role_id, menu_id, select_is_admin)
+values(1, 1, 1, true);
+insert into sys_role_menu(id, role_id, menu_id, select_is_admin)
+values(2, 1, 2, true);
+insert into sys_role_menu(id, role_id, menu_id, select_is_admin)
+values(3, 1, 3, true);
+insert into sys_role_menu(id, role_id, menu_id, select_is_admin)
+values(4, 1, 4, true);
+insert into sys_role_menu(id, role_id, menu_id, select_is_admin)
+values(5, 1, 5, true);
+insert into sys_role_menu(id, role_id, menu_id, select_is_admin)
+values(6, 1, 6, true);
+insert into sys_role_menu(id, role_id, menu_id, select_is_admin)
+values(7, 1, 7, true);
+insert into sys_role_menu(id, role_id, menu_id, select_is_admin)
+values(8, 1, 8, true);
+insert into sys_role_menu(id, role_id, menu_id, select_is_admin)
+values(9, 1, 9, true);
+insert into sys_role_menu(id, role_id, menu_id, select_is_admin)
+values(10, 1, 10, true);
+insert into sys_role_menu(id, role_id, menu_id, select_is_admin)
+values(11, 1, 11, true);
+insert into sys_role_menu(id, role_id, menu_id, select_is_admin)
+values(12, 1, 12, true);
+insert into sys_role_menu(id, role_id, menu_id, select_is_admin)
+values(13, 1, 13, true);
+insert into sys_role_menu(id, role_id, menu_id, select_is_admin)
+values(14, 1, 14, true);
+insert into sys_role_menu(id, role_id, menu_id, select_is_admin)
+values(15, 1, 15, true);
+insert into sys_role_menu(id, role_id, menu_id, select_is_admin)
+values(16, 1, 16, true);
+insert into sys_role_menu(id, role_id, menu_id, select_is_admin)
+values(17, 1, 17, true);
+insert into sys_role_menu(id, role_id, menu_id, select_is_admin)
+values(18, 1, 18, true);
+insert into sys_role_menu(id, role_id, menu_id, select_is_admin)
+values(19, 1, 19, true);
+insert into sys_role_menu(id, role_id, menu_id, select_is_admin)
+values(20, 1, 20, true);
+insert into sys_role_menu(id, role_id, menu_id, select_is_admin)
+values(21, 1, 21, true);
+insert into sys_role_menu(id, role_id, menu_id, select_is_admin)
+values(22, 1, 22, true);
+insert into sys_role_menu(id, role_id, menu_id, select_is_admin)
+values(23, 1, 23, true);