李进 пре 2 година
родитељ
комит
6b1952cf53

+ 0 - 15
authorize-api-service/src/main/java/com/xy/annotation/IsAdmin.java

@@ -1,15 +0,0 @@
-package com.xy.annotation;
-
-import java.lang.annotation.*;
-
-/**
- * 检查当前登录人是否是管理员
- *
- * @author lijin
- */
-@Target({ElementType.METHOD})
-@Retention(RetentionPolicy.RUNTIME)
-@Documented
-public @interface IsAdmin {
-
-}

+ 0 - 17
authorize-api-service/src/main/java/com/xy/annotation/aspet/CommAset.java

@@ -1,8 +1,6 @@
 package com.xy.annotation.aspet;
 
 import com.xy.annotation.CheckSysId;
-import com.xy.annotation.IsAdmin;
-import com.xy.error.CommRuntimeException;
 import com.xy.redis.RedisCache;
 import com.xy.utils.Reflect;
 import com.xy.utils.Tuple;
@@ -39,19 +37,4 @@ public class CommAset {
         }
         return result;
     }
-
-    @Around("@annotation(isAdmin)")
-    public Object isAdmin(ProceedingJoinPoint joinPoint, IsAdmin isAdmin) throws Throwable {
-        Object[] args = joinPoint.getArgs();
-        Object result;
-        try {
-            if (!RedisCache.isAdmin()) {
-                throw new CommRuntimeException("权限不足");
-            }
-            result = joinPoint.proceed(args);
-        } catch (Exception e) {
-            throw e;
-        }
-        return result;
-    }
 }

+ 2 - 2
authorize-api-service/src/main/java/com/xy/consts/CommConsts.java

@@ -8,8 +8,8 @@ public class CommConsts {
     public static final String ADMIN_ROLE_CODE = "xy_admin";
 
     /**
-     * 管理员角色ID号
+     * 管理员用户ID
      */
-    public static final Long ADMIN_ROLE_ID = 1L;
+    public static final Long ADMIN_USER_ID = 1L;
 
 }

+ 0 - 1
authorize-api-service/src/main/java/com/xy/entity/SysDeptRelation.java

@@ -31,5 +31,4 @@ public class SysDeptRelation extends Model<SysDeptRelation> {
      */
     private Long sysId;
 
-    
 }

+ 12 - 15
authorize-api-service/src/main/java/com/xy/redis/RedisCache.java

@@ -352,20 +352,17 @@ public class RedisCache {
      * @param loginId 登录id
      * @return
      */
-    public static Boolean isAdmin(Long loginId) {
-        AtomicReference<Boolean> result = new AtomicReference<>(false);
-        Map<String, List<CacheEntity>> map = getRedisService().getMap(getKey(loginId));
-        map.forEach((s, cacheEntities) -> {
-            if (!Emptys.check(cacheEntities)) {
-                return;
-            }
-            for (CacheEntity cacheEntity : cacheEntities) {
-                if (CommConsts.ADMIN_ROLE_CODE.equals(cacheEntity.getRoleCode())) {
-                    result.set(true);
-                }
+    public static Boolean isAdmin(Long loginId, Long systemId) {
+        List<CacheEntity> cacheEntities = getRedisService().getMap(getKey(loginId), systemId.toString());
+        if (!Emptys.check(cacheEntities)) {
+            return false;
+        }
+        for (CacheEntity cacheEntity : cacheEntities) {
+            if (CommConsts.ADMIN_ROLE_CODE.equals(cacheEntity.getRoleCode())) {
+                return true;
             }
-        });
-        return result.get();
+        }
+        return false;
     }
 
     /**
@@ -373,8 +370,8 @@ public class RedisCache {
      *
      * @return
      */
-    public static Boolean isAdmin() {
-        return isAdmin(SaTokenUtils.getId(Long.class));
+    public static Boolean isAdmin(Long systemId) {
+        return isAdmin(SaTokenUtils.getId(Long.class), systemId);
     }
 
     /**

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

@@ -3,15 +3,16 @@ package com.xy.service.impl;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.xy.annotation.CheckSysId;
-import com.xy.annotation.IsAdmin;
 import com.xy.collections.list.JArrayList;
 import com.xy.collections.list.JList;
 import com.xy.consts.CommConsts;
 import com.xy.dto.SysMenuDto;
 import com.xy.entity.SysMenu;
+import com.xy.entity.SysRole;
 import com.xy.entity.SysRoleMenu;
 import com.xy.entity.join.SysMenuJoinSysRoleMenu;
 import com.xy.mapper.SysMenuMapper;
+import com.xy.mapper.SysRoleMapper;
 import com.xy.mapper.SysRoleMenuMapper;
 import com.xy.redis.RedisCache;
 import com.xy.service.SysMenuService;
@@ -43,6 +44,8 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
 
     private SysRoleMenuMapper sysRoleMenuMapper;
 
+    private SysRoleMapper sysRoleMapper;
+
     @Override
     @CheckSysId
     @ApiOperation("用户菜单树")
@@ -58,7 +61,6 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
         return R.ok(list);
     }
 
-    @IsAdmin
     @Override
     @ApiOperation("全部菜单树")
     public R<List<SysMenuDto.Vo>> menu(SysMenuDto.WorkMenu workMenu) {
@@ -71,7 +73,6 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
         return R.ok(list);
     }
 
-    @IsAdmin
     @Override
     @ApiOperation("添加菜单")
     public R save(SysMenuDto.Save save) {
@@ -88,17 +89,17 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
         SysMenu sysMenu = copy(SysMenu.class, save)
                 .create(longId);
         save(sysMenu);
-        //角色赋予管理员
+        //赋予管理员角色菜单
+        SysRole sysRole = sysRoleMapper.selectOne(new LambdaQueryWrapper<SysRole>().eq(SysRole::getSysId, save.getSysId()).eq(SysRole::getCode, CommConsts.ADMIN_ROLE_CODE));
         SysRoleMenu sysRoleMenu = new SysRoleMenu()
                 .createId()
                 .setMenuId(sysMenu.getId())
-                .setRoleId(CommConsts.ADMIN_ROLE_ID)
+                .setRoleId(sysRole.getId())
                 .setSelectIsAdmin(true);
         sysRoleMenuMapper.insert(sysRoleMenu);
         return R.ok();
     }
 
-    @IsAdmin
     @Override
     @ApiOperation("修改菜单")
     public R update(SysMenuDto.Update update) {
@@ -109,7 +110,6 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
         return R.ok();
     }
 
-    @IsAdmin
     @Override
     @ApiOperation("删除菜单")
     public R del(SysMenuDto.Del del) {

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

@@ -48,7 +48,7 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> impl
     private final SysUserRoleService sysUserRoleService;
 
     @Override
-    public R<Boolean> saveOrUpdate(SysRoleDto sysRoleDto) {
+    public R<Long> saveOrUpdate(SysRoleDto sysRoleDto) {
         Long id = sysRoleDto.getId();
         long currentUser = Long.parseLong(SaTokenUtils.getId().toString());
         LambdaQueryWrapper<SysRole> lqw = new LambdaQueryWrapper<SysRole>()
@@ -64,8 +64,8 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> impl
         }
 
         SysRole sysRole = copy(SysRole.class, sysRoleDto).saveOrUpdate(currentUser, sysRoleDto.getSysId());
-
-        return R.ok(saveOrUpdate(sysRole));
+        saveOrUpdate(sysRole);
+        return R.ok(sysRole.getId());
     }
 
     @Override

+ 21 - 9
authorize-api-service/src/main/java/com/xy/service/impl/SysSystemServiceImpl.java

@@ -3,16 +3,14 @@ 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.annotation.IsAdmin;
-import com.xy.collections.list.JArrayList;
-import com.xy.collections.list.JList;
+import com.xy.consts.CommConsts;
+import com.xy.dto.SysRoleDto;
 import com.xy.dto.SysSystemDto;
-import com.xy.dto.SysSystemValueDto;
 import com.xy.entity.*;
 import com.xy.mapper.*;
 import com.xy.redis.RedisCache;
+import com.xy.service.SysRoleService;
 import com.xy.service.SysSystemService;
-import com.xy.service.SysSystemValueService;
 import com.xy.utils.MybatisPlusQuery;
 import com.xy.utils.PageBean;
 import com.xy.utils.R;
@@ -60,22 +58,38 @@ public class SysSystemServiceImpl extends ServiceImpl<SysSystemMapper, SysSystem
 
     private SysDeptMapper sysDeptMapper;
 
-    @IsAdmin
+    private SysRoleService sysRoleService;
+
     @Override
     @ApiOperation("添加系统")
+    @Transactional(rollbackFor = Exception.class)
     public R<Long> save(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);
         save(sysSystem);
+        //增加管理员角色
+        R<Long> r = sysRoleService.saveOrUpdate(new SysRoleDto()
+                .setSysId(sysSystem.getId())
+                .setCode(CommConsts.ADMIN_ROLE_CODE)
+                .setName("超级管理员")
+        );
+        //赋予用户管理员
+        SysUserRole sysUserRole = new SysUserRole()
+                .createId()
+                .setRoleId(r.getData())
+                .setSysId(sysSystem.getId())
+                .setWorkUserId(CommConsts.ADMIN_USER_ID);
+        sysUserRoleMapper.insert(sysUserRole);
         return R.ok(sysSystem.getId());
     }
 
-    @IsAdmin
     @Override
     @ApiOperation("修改系统")
     public R update(SysSystemDto.Update update) {
@@ -99,7 +113,6 @@ public class SysSystemServiceImpl extends ServiceImpl<SysSystemMapper, SysSystem
         return R.ok(copy(SysSystemDto.Vo.class, list));
     }
 
-    @IsAdmin
     @Override
     @ApiOperation("分页查询")
     public R<PageBean<SysSystemDto.Vo>> page(SysSystemDto.PageSelect pageSelect) {
@@ -114,7 +127,6 @@ public class SysSystemServiceImpl extends ServiceImpl<SysSystemMapper, SysSystem
         return R.ok(toPageBean(SysSystemDto.Vo.class, page));
     }
 
-    @IsAdmin
     @Override
     @ApiOperation("删除系统")
     @Transactional(rollbackFor = Exception.class)

+ 0 - 5
authorize-api-service/src/main/java/com/xy/service/impl/SysSystemValueServiceImpl.java

@@ -3,7 +3,6 @@ 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.annotation.IsAdmin;
 import com.xy.dto.SysSystemValueDto;
 import com.xy.entity.SysSystemValue;
 import com.xy.mapper.SysSystemValueMapper;
@@ -35,7 +34,6 @@ import static com.xy.utils.PlusBeans.toPageBean;
 @Api(tags = "系统属性接口")
 public class SysSystemValueServiceImpl extends ServiceImpl<SysSystemValueMapper, SysSystemValue> implements SysSystemValueService {
 
-    @IsAdmin
     @Override
     @ApiOperation("添加")
     public R<Boolean> save(@RequestBody @Validated SysSystemValueDto.Save save) {
@@ -52,7 +50,6 @@ public class SysSystemValueServiceImpl extends ServiceImpl<SysSystemValueMapper,
         return R.ok();
     }
 
-    @IsAdmin
     @Override
     @ApiOperation("分页查询")
     public R<PageBean<SysSystemValueDto.Vo>> page(SysSystemValueDto.Select select) {
@@ -64,7 +61,6 @@ public class SysSystemValueServiceImpl extends ServiceImpl<SysSystemValueMapper,
         return R.ok(toPageBean(SysSystemValueDto.Vo.class, page));
     }
 
-    @IsAdmin
     @Override
     @ApiOperation("修改")
     public R update(@RequestBody @Validated SysSystemValueDto.Update update) {
@@ -73,7 +69,6 @@ public class SysSystemValueServiceImpl extends ServiceImpl<SysSystemValueMapper,
         return R.ok();
     }
 
-    @IsAdmin
     @Override
     @ApiOperation("删除")
     public R del(@RequestBody @Validated SysSystemValueDto.Del del) {

+ 3 - 3
authorize-api/src/main/java/com/xy/dto/SysDict/SysDictDto.java

@@ -1,11 +1,14 @@
 package com.xy.dto.SysDict;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import com.xy.vo.BaseVo;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.experimental.Accessors;
 
+import java.time.LocalDateTime;
+
 /**
  * <p>
  * 字典类型
@@ -34,13 +37,10 @@ public class SysDictDto extends BaseVo {
 
     @ApiModelProperty("是否是系统内置")
     private Boolean systemFlag;
-
-   
     @ApiModelProperty("创建人")
     private Long createUser;
 
     @ApiModelProperty("更新人")
     private Long updateUser;
 
-
 }

+ 1 - 1
authorize-api/src/main/java/com/xy/service/SysRoleService.java

@@ -29,7 +29,7 @@ public interface SysRoleService {
      */
     @ApiOperation(value = "新增、更新角色信息", notes = "新增、更新角色信息")
     @PostMapping("saveOrUpdate")
-    R<Boolean> saveOrUpdate(@Valid @RequestBody SysRoleDto sysRoleDto);
+    R<Long> saveOrUpdate(@Valid @RequestBody SysRoleDto sysRoleDto);
 
     /**
      * 批量删除角色

+ 4 - 3
authorize-api/src/main/java/com/xy/vo/SysDictVo.java

@@ -1,10 +1,13 @@
 package com.xy.vo;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.experimental.Accessors;
 
+import java.time.LocalDateTime;
+
 /**
  * <p>
  * 字典类型
@@ -18,7 +21,7 @@ import lombok.experimental.Accessors;
 @ApiModel("字典类型")
 public class SysDictVo extends BaseVo {
 
-
+ 
     @ApiModelProperty("ID")
     private Long id;
 
@@ -34,12 +37,10 @@ public class SysDictVo extends BaseVo {
     @ApiModelProperty("是否是系统内置")
     private Boolean systemFlag;
 
- 
     @ApiModelProperty("创建人")
     private Long createUser;
 
     @ApiModelProperty("更新人")
     private Long updateUser;
 
-
 }

+ 2 - 2
authorize-start/src/main/resources/bootstrap.yml

@@ -36,8 +36,8 @@ sa-token:
   enablePermission: false
   # 需要过滤的url
   exclude-paths:
-    - /**/sys-system-user/login
-    - /**/sys-system-user/register
+    - /**/sysWorkUser/register
+    - /**/sysWorkUser/login
     - /**/captcha/**
     - /**/xy-captcha/**
     - /**/actuator/dynamic-tp

+ 2 - 2
sql/init.sql

@@ -5,8 +5,8 @@ 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, create_user, update_user)
-values(1, 1, 'xy_system', '兴元权限系统', now(), now(), 1, 1);
+insert into sys_system(id, code, name, create_time, update_time, create_user, update_user)
+values(1, 'xy_system', '兴元权限系统', now(), now(), 1, 1);
 
 -- 新增角色
 delete from sys_role where id = 1;