Переглянути джерело

Merge remote-tracking branch 'origin/main'

Sakana 1 тиждень тому
батько
коміт
f27be733d3
14 змінених файлів з 243 додано та 65 видалено
  1. 0 2
      edu-travel-common/edu-travel-common-core/src/main/java/edu/travel/utils/tree/MyTreeUtil.java
  2. 0 2
      edu-travel-common/edu-travel-common-core/src/main/java/edu/travel/utils/tree/TreeNode.java
  3. 2 1
      edu-travel-remote/edu-travel-remote-tenant/src/main/java/edu/travel/remote/feign/mode/vo/tenant/EduTenantVo.java
  4. 2 2
      edu-travel-remote/edu-travel-remote-tenant/src/main/java/edu/travel/remote/feign/mode/vo/tenant/SysMenuExtraDataVo.java
  5. 8 8
      edu-travel-remote/edu-travel-remote-tenant/src/main/java/edu/travel/tenant/SysRoleRemoteController.java
  6. 5 0
      edu-travel-service/edu-travel-service-tenement/src/main/java/edu/travel/tenant/service/ISysMenuService.java
  7. 6 1
      edu-travel-service/edu-travel-service-tenement/src/main/java/edu/travel/tenant/service/ISysRoleService.java
  8. 33 6
      edu-travel-service/edu-travel-service-tenement/src/main/java/edu/travel/tenant/service/impl/ISysMenuServiceImpl.java
  9. 40 7
      edu-travel-service/edu-travel-service-tenement/src/main/java/edu/travel/tenant/service/impl/ISysRoleServiceImpl.java
  10. 2 2
      edu-travel-service/edu-travel-service-tenement/src/main/java/edu/travel/tenant/service/impl/ITenantServiceImpl.java
  11. 43 1
      edu-travel-service/edu-travel-service-tenement/src/main/java/edu/travel/tenant/web/SysMenuController.java
  12. 64 13
      edu-travel-service/edu-travel-service-tenement/src/main/java/edu/travel/tenant/web/SysRoleController.java
  13. 20 20
      edu-travel-service/edu-travel-service-tenement/src/main/java/edu/travel/tenant/web/TenantController.java
  14. 18 0
      pom.xml

+ 0 - 2
edu-travel-common/edu-travel-common-core/src/main/java/edu/travel/utils/tree/MyTreeUtil.java

@@ -6,8 +6,6 @@ import java.util.stream.Collectors;
 /**
  * 树形菜单构建工具
  *
- * @author Zee
- * @date 2023/7/20 0020 9:48
  */
 public class MyTreeUtil {
     /**

+ 0 - 2
edu-travel-common/edu-travel-common-core/src/main/java/edu/travel/utils/tree/TreeNode.java

@@ -8,8 +8,6 @@ import java.util.Objects;
 /**
  * 树结点
  *
- * @author Zee
- * @date 2023/7/20 0020 9:45
  */
 public abstract class TreeNode {
     /**

+ 2 - 1
edu-travel-remote/edu-travel-remote-tenant/src/main/java/edu/travel/remote/feign/mode/vo/tenant/EduTenantVo.java

@@ -3,6 +3,7 @@ package edu.travel.remote.feign.mode.vo.tenant;
 import edu.travel.entity.BaseEntity;
 import lombok.Data;
 
+import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
@@ -91,6 +92,6 @@ public class EduTenantVo extends BaseEntity {
     /**
      * 用户角色列表
      */
-    private List<Long> roleIdList;
+    private List<String> roleIds = new ArrayList<>();
 
 }

+ 2 - 2
edu-travel-remote/edu-travel-remote-tenant/src/main/java/edu/travel/remote/feign/mode/vo/tenant/SysMenuExtraDataVo.java

@@ -21,12 +21,12 @@ public class SysMenuExtraDataVo {
     /**
      * 主键id
      */
-    private Long id;
+    private String id;
 
     /**
      * 菜单id
      */
-    private Long menuId;
+    private String menuId;
 
     /**
      * 菜单图标名称

+ 8 - 8
edu-travel-remote/edu-travel-remote-tenant/src/main/java/edu/travel/tenant/SysRoleRemoteController.java

@@ -51,14 +51,14 @@ public interface SysRoleRemoteController extends RemoteBaseController<SysRoleVo,
 //    @PreAuthorize("hasRole('超级管理员')")
     public BaseResponse<Boolean> updateRoleAndMenusById( @RequestBody AddOrUpdateRoleDto addOrUpdateRoleDto);
 
-    /**
-     * 为角色分配菜单
-     * @param dto
-     * @return
-     */
-    @PostMapping("/assignMenusToRole")
-//    @PreAuthorize("hasRole('超级管理员')")
-    public BaseResponse<Boolean> assignMenusToRole(@RequestBody AssignRolesOrMenusDto dto);
+//    /**
+//     * 为角色分配菜单
+//     * @param dto
+//     * @return
+//     */
+//    @PostMapping("/assignMenusToRole")
+////    @PreAuthorize("hasRole('超级管理员')")
+//    public BaseResponse<Boolean> assignMenusToRole(@RequestBody AssignRolesOrMenusDto dto);
 
     /**
      * 更新角色菜单

+ 5 - 0
edu-travel-service/edu-travel-service-tenement/src/main/java/edu/travel/tenant/service/ISysMenuService.java

@@ -8,6 +8,7 @@ import edu.travel.remote.feign.mode.vo.tenant.SysMenuExtraDataVo;
 import edu.travel.tenant.entity.SysMenu;
 import edu.travel.tenant.entity.SysMenuExtraData;
 
+import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
 
@@ -23,4 +24,8 @@ public interface ISysMenuService extends IService<SysMenu> {
      List<MenuTreeVo> buildMenuTree(List<SysMenu> sysMenuList, List<SysMenuExtraDataVo> menuExtraDataList) ;
 
      List<MenuTreeVo> getMenuTreeListByIds(List<SysMenu> menuList);
+
+    void enableMenuByIds(HashSet<Long> longs);
+
+    void disableMenuByIds(HashSet<Long> longs);
 }

+ 6 - 1
edu-travel-service/edu-travel-service-tenement/src/main/java/edu/travel/tenant/service/ISysRoleService.java

@@ -19,9 +19,14 @@ public interface ISysRoleService extends IService<SysRole> {
 
     void updateRoleAndMenusById( AddOrUpdateRoleDto addOrUpdateRoleDto);
 
-    void assignMenusToRole(AssignRolesOrMenusDto dto, EduTenant principal);
+//    void assignMenusToRole(AssignRolesOrMenusDto dto, EduTenant principal);
 
     void updateMenusToRole(AssignRolesOrMenusDto assignRolesOrMenusDto, EduTenant principal);
 
     List<MenuTreeVo> getMenuTreeByRoleId(Long roleId);
+
+
+    void enableRoleByIds(Set<Long> list);
+
+    void disableRoleByIds(Set<Long> list);
 }

+ 33 - 6
edu-travel-service/edu-travel-service-tenement/src/main/java/edu/travel/tenant/service/impl/ISysMenuServiceImpl.java

@@ -5,6 +5,7 @@ import cn.hutool.core.lang.Assert;
 import cn.hutool.core.lang.Snowflake;
 import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import edu.travel.remote.feign.mode.dto.tenant.AddMenuDto;
 import edu.travel.remote.feign.mode.vo.tenant.AddMenuVo;
 import edu.travel.remote.feign.mode.vo.tenant.MenuTreeVo;
@@ -14,6 +15,7 @@ import edu.travel.service.SysServiceImpl;
 import edu.travel.tenant.entity.*;
 import edu.travel.tenant.mapper.SysMenuMapper;
 import edu.travel.tenant.service.*;
+import org.checkerframework.checker.units.qual.A;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.core.context.SecurityContextHolder;
 import org.springframework.stereotype.Service;
@@ -53,7 +55,7 @@ public class ISysMenuServiceImpl extends SysServiceImpl<SysMenuMapper, SysMenu>
         addMenuDto.getSysMenu().setId(new Snowflake(1, 1).nextId());
         super.save(BeanUtil.copyProperties(addMenuDto.getSysMenu(),SysMenu.class));
         SysMenuExtraData sysMenuExtraData;
-        if (ObjectUtil.isNotEmpty(addMenuDto.getSysMenuExtraData())){
+        if (ObjectUtil.isEmpty(addMenuDto.getSysMenuExtraData())){
             sysMenuExtraData = new SysMenuExtraData();
         }else {
             sysMenuExtraData = BeanUtil.copyProperties(addMenuDto.getSysMenuExtraData(), SysMenuExtraData.class);
@@ -97,14 +99,15 @@ public class ISysMenuServiceImpl extends SysServiceImpl<SysMenuMapper, SysMenu>
     public void updateMenuById(AddMenuDto updateMenuDto) {
         Assert.isTrue(ObjectUtil.isNotEmpty(updateMenuDto),"参数不能为空");
         Assert.isTrue(ObjectUtil.isNotEmpty(updateMenuDto.getSysMenu().getId()),"id不能为空");
-        Assert.isTrue(ObjectUtil.isNotEmpty(updateMenuDto.getSysMenuExtraData().getId()),"id不能为空");
+        Assert.isTrue(ObjectUtil.isNotEmpty(updateMenuDto.getSysMenuExtraData().getMenuId()),"menuid不能为空");
         Assert.isTrue(ObjectUtil.isNotEmpty(updateMenuDto.getSysMenu().getPath()),"页面路由不能为空");
         Assert.isTrue(ObjectUtil.isNotEmpty(updateMenuDto.getSysMenu().getComponent()),"组件路径不能为空");
-        SysMenuExtraData extraData = sysMenuExtraDataService.getById(updateMenuDto.getSysMenuExtraData().getId());
-        Assert.isTrue(Objects.equals(extraData.getId(), updateMenuDto.getSysMenuExtraData().getId()),"该附加信息与菜单不匹配");
+        SysMenuExtraData extraData = sysMenuExtraDataService.getOne(new LambdaQueryWrapper<SysMenuExtraData>().eq(SysMenuExtraData::getMenuId, updateMenuDto.getSysMenuExtraData().getMenuId()));
+        Assert.isTrue(Objects.equals(extraData.getMenuId(), updateMenuDto.getSysMenuExtraData().getMenuId()),"该附加信息与菜单不匹配");
         //保存菜单
         super.updateById(BeanUtil.copyProperties(updateMenuDto.getSysMenu(),SysMenu.class));
-        sysMenuExtraDataService.updateById(BeanUtil.copyProperties(updateMenuDto.getSysMenuExtraData(), SysMenuExtraData.class));
+        sysMenuExtraDataService.update(
+                BeanUtil.copyProperties(updateMenuDto.getSysMenuExtraData(), SysMenuExtraData.class),new LambdaQueryWrapper<SysMenuExtraData>().eq(SysMenuExtraData::getMenuId, updateMenuDto.getSysMenuExtraData().getMenuId()));
     }
 
     @Override
@@ -152,7 +155,7 @@ public class ISysMenuServiceImpl extends SysServiceImpl<SysMenuMapper, SysMenu>
 
         // 给菜单附加额外数据
         menuExtraDataList.forEach(extraData -> {
-            MenuTreeVo menuTreeVo = menuMap.get(extraData.getMenuId());
+            MenuTreeVo menuTreeVo = menuMap.get(Long.parseLong(extraData.getMenuId()));
             if (menuTreeVo != null) {
                 menuTreeVo.setExtraData(extraData);
             }
@@ -182,4 +185,28 @@ public class ISysMenuServiceImpl extends SysServiceImpl<SysMenuMapper, SysMenu>
         return treeList;
     }
 
+    @Override
+    public void enableMenuByIds(HashSet<Long> longs) {
+        Assert.isTrue(ObjectUtil.isNotEmpty(longs),"请选择想要删除的菜单");
+        List<SysMenu> list = this.list(new LambdaQueryWrapper<SysMenu>().in(SysMenu::getId,longs));
+        Assert.isFalse(list == null || list.size() != list.size(), "包含不存在的菜单");
+        list.forEach(sysMenu -> {
+            Assert.isFalse(sysMenu.getDeleteFlag() == 0,"包含已删除的菜单");
+            Assert.isFalse(sysMenu.getStatus() == 1,"包含已经启用的菜单");
+        });
+        this.update(new LambdaUpdateWrapper<SysMenu>().set(SysMenu::getStatus,1).in(SysMenu::getId,list));
+    }
+
+    @Override
+    public void disableMenuByIds(HashSet<Long> longs) {
+        Assert.isTrue(ObjectUtil.isNotEmpty(longs),"请选择想要删除的菜单");
+        List<SysMenu> list = this.list(new LambdaQueryWrapper<SysMenu>().in(SysMenu::getId,longs));
+        Assert.isFalse(list == null || list.size() != list.size(), "包含不存在的菜单");
+        list.forEach(sysMenu -> {
+            Assert.isFalse(sysMenu.getDeleteFlag() == 0,"包含已删除的菜单");
+            Assert.isFalse(sysMenu.getStatus() == 0,"包含已经禁用的菜单");
+        });
+        this.update(new LambdaUpdateWrapper<SysMenu>().set(SysMenu::getStatus,0).in(SysMenu::getId,list));
+    }
+
 }

+ 40 - 7
edu-travel-service/edu-travel-service-tenement/src/main/java/edu/travel/tenant/service/impl/ISysRoleServiceImpl.java

@@ -4,6 +4,7 @@ import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.lang.Assert;
 import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import edu.travel.remote.feign.mode.dto.tenant.AddOrUpdateRoleDto;
 import edu.travel.remote.feign.mode.dto.tenant.AssignRolesOrMenusDto;
 import edu.travel.remote.feign.mode.vo.tenant.MenuTreeVo;
@@ -111,12 +112,7 @@ public class ISysRoleServiceImpl extends SysServiceImpl<SysRoleMapper, SysRole>
         assign(assignRolesOrMenusDto, principal);
     }
 
-    @Override
-    @Transactional
-    public void assignMenusToRole(AssignRolesOrMenusDto dto, EduTenant principal) {
-        assignRolesToUserValidate(dto);
-        assign(dto,principal);
-    }
+
 
     @Override
     @Transactional
@@ -130,12 +126,49 @@ public class ISysRoleServiceImpl extends SysServiceImpl<SysRoleMapper, SysRole>
     public List<MenuTreeVo> getMenuTreeByRoleId(Long roleId) {
         Assert.isFalse(roleId==null,"参数不能为空");
         Assert.isTrue(ObjectUtil.isNotEmpty(this.getById(roleId)),"该角色不存在");
-        List<Long> longs = sysRoleMenuService.list(new LambdaQueryWrapper<SysRoleMenu>().eq(SysRoleMenu::getRoleId, roleId)).stream().map(sysRoleMenu -> sysRoleMenu.getMenuId()).collect(Collectors.toList());
+        List<SysRoleMenu> sysRoleMenus = sysRoleMenuService.list(new LambdaQueryWrapper<SysRoleMenu>().eq(SysRoleMenu::getRoleId, roleId));
+            if (ObjectUtil.isEmpty(sysRoleMenus)){
+            return new ArrayList<>();
+        }
+        List<Long> longs = sysRoleMenus.stream().map(sysRoleMenu -> sysRoleMenu.getMenuId()).collect(Collectors.toList());
         List<SysMenu> list = sysMenuService.list(new LambdaQueryWrapper<SysMenu>().in(SysMenu::getId, longs));
         List<MenuTreeVo> treeVoList = sysMenuService.getMenuTreeListByIds(list);
         return treeVoList;
     }
 
+    @Override
+    public void enableRoleByIds(Set<Long> list) {
+        Assert.isTrue(ObjectUtil.isNotEmpty(list),"请选择角色");
+        Long superRoleId = querySuperRoleId();
+        list.forEach(id->{
+            Assert.isFalse(superRoleId.equals(id),"不能操作超级管理员角色");
+        });
+        List<SysRole> roleList = this.list(new LambdaQueryWrapper<SysRole>().in(SysRole::getId, list));
+        Assert.isFalse(roleList == null || roleList.size() != list.size(), "包含不存在的角色");
+        roleList.forEach(sysRole -> {
+            Assert.isFalse(sysRole.getDeleteFlag() == 1, "包含已删除角色");
+            Assert.isFalse(sysRole.getStatus() == 1, "包含已经启用的角色");
+        });
+        this.update(new LambdaUpdateWrapper<SysRole>().set(SysRole::getStatus,1).in(SysRole::getId,list));
+
+    }
+
+    @Override
+    public void disableRoleByIds(Set<Long> list) {
+        Assert.isTrue(ObjectUtil.isNotEmpty(list),"请选择角色");
+        Long superRoleId = querySuperRoleId();
+        list.forEach(id->{
+            Assert.isFalse(superRoleId.equals(id),"不能操作超级管理员角色");
+        });
+        List<SysRole> roleList = this.list(new LambdaQueryWrapper<SysRole>().in(SysRole::getId, list));
+        Assert.isFalse(roleList == null || roleList.size() != list.size(), "包含不存在的角色");
+        roleList.forEach(sysRole -> {
+            Assert.isFalse(sysRole.getDeleteFlag() == 1, "包含已删除角色");
+            Assert.isFalse(sysRole.getStatus() == 0, "包含已经禁用的角色");
+        });
+        this.update(new LambdaUpdateWrapper<SysRole>().set(SysRole::getStatus,0).in(SysRole::getId,list));
+    }
+
     /**
      * 添加或修改角色参数验证 菜单验证
      */

+ 2 - 2
edu-travel-service/edu-travel-service-tenement/src/main/java/edu/travel/tenant/service/impl/ITenantServiceImpl.java

@@ -148,8 +148,8 @@ public class ITenantServiceImpl extends SysServiceImpl<EduTenantMapper, EduTenan
     private void validateRoleForAddTenant(AddOrUpdateTenantDto addOrUpdateTenantDto) {
         //角色validate
         if (!addOrUpdateTenantDto.getRoleIds().isEmpty()){
-            List<SysRole> roleList = sysRoleService.list(new LambdaQueryWrapper<SysRole>().in(SysRole::getId, addOrUpdateTenantDto.getRoleIds()));
-            Assert.isFalse(roleList == null || roleList.size() != addOrUpdateTenantDto.getRoleIds().size(), "包含不存在的角色");
+            List<Long> roleList = sysRoleService.list(new LambdaQueryWrapper<SysRole>().in(SysRole::getId, addOrUpdateTenantDto.getRoleIds())).stream().map(SysRole::getId).collect(Collectors.toList());
+            Assert.isFalse(roleList.size() != addOrUpdateTenantDto.getRoleIds().size(), "包含不存在的角色");
             Assert.isFalse(addOrUpdateTenantDto.getRoleIds()!=null && BeanUtil.copyToList(roleList,Long.class).contains(querySuperAdmin()),"不能分配超级管理员");
         }
     }

+ 43 - 1
edu-travel-service/edu-travel-service-tenement/src/main/java/edu/travel/tenant/web/SysMenuController.java

@@ -1,7 +1,9 @@
 package edu.travel.tenant.web;
 
+import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Assert;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import edu.travel.remote.feign.mode.dto.tenant.AddMenuDto;
@@ -85,7 +87,7 @@ public class SysMenuController extends BaseController<SysMenu> implements SysMen
 //@PreAuthorize("hasRole('超级管理员')")
     public BaseResponse<List<MenuTreeVo>> getMenuTreeListAll(SysMenuPageDto sysMenuPageDto) {
         IPage<SysMenu> page = new Page<>(sysMenuPageDto.getCurrentPage(), sysMenuPageDto.getPageSize());
-        IPage<SysMenu> sysMenuIPage = sysMenuService.page(page, new LambdaQueryWrapper<SysMenu>().eq(SysMenu::getDeleteFlag, 0).like(StringUtils.isNotBlank(sysMenuPageDto.getName()),SysMenu::getName,sysMenuPageDto.getName()));
+        IPage<SysMenu> sysMenuIPage = sysMenuService.page(page, new LambdaQueryWrapper<SysMenu>().eq(SysMenu::getDeleteFlag, 0).like(StringUtils.isNotBlank(sysMenuPageDto.getTitle()),SysMenu::getTitle,sysMenuPageDto.getTitle()));
         List<MenuTreeVo> treeList= sysMenuService.getMenuTreeListAll(sysMenuIPage.getRecords());
         return PageResponse.out(200, "success", treeList, (int) sysMenuIPage.getTotal(), (int) sysMenuIPage.getSize());
     }
@@ -102,4 +104,44 @@ public class SysMenuController extends BaseController<SysMenu> implements SysMen
         return new BaseResponse<>(200,"sucess",true);
     }
 
+    /**
+     * 启用菜单单个
+     * @param id
+     * @return
+     */
+    @PostMapping("/enableMenuSingle")
+    public BaseResponse enableMenuSingle(@RequestParam Long id) {
+        Assert.isTrue(ObjectUtil.isNotEmpty(id), "请选择菜单");
+        sysMenuService.enableMenuByIds(new HashSet<>(Collections.singletonList(id)));
+        return new BaseResponse<>(200,"sucess",true);
+    }
+
+    /**
+     * 启用菜单多个
+     */
+    @PostMapping("/enableMenuMulti")
+    public BaseResponse enableMenuMulti(@RequestBody List<Long> ids) {
+        sysMenuService.enableMenuByIds(new HashSet<Long>(ids));
+        return new BaseResponse<>(200,"sucess",true);
+    }
+
+    /**
+     * 禁用菜单单个
+     */
+    @PostMapping("/disableMenuSingle")
+    public BaseResponse disableMenuSingle(@RequestParam Long id) {
+        Assert.isTrue(ObjectUtil.isNotEmpty(id), "请选择菜单");
+        sysMenuService.disableMenuByIds(new HashSet<>(Collections.singletonList(id)));
+        return new BaseResponse<>(200,"sucess",true);
+    }
+
+    /**
+     * 禁用菜单多个
+     */
+    @PostMapping("/disableMenuMulti")
+    public BaseResponse disableMenuMulti(@RequestBody List<Long> ids) {
+        sysMenuService.disableMenuByIds(new HashSet<Long>(ids));
+        return new BaseResponse<>(200,"sucess",true);
+    }
+
 }

+ 64 - 13
edu-travel-service/edu-travel-service-tenement/src/main/java/edu/travel/tenant/web/SysRoleController.java

@@ -1,5 +1,7 @@
 package edu.travel.tenant.web;
 import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.lang.Assert;
+import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.cloud.commons.lang.StringUtils;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -23,6 +25,7 @@ import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.security.core.context.SecurityContextHolder;
 import org.springframework.web.bind.annotation.*;
 
+import java.util.Collections;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
@@ -157,21 +160,21 @@ public class SysRoleController extends BaseController<SysRole> implements SysRol
         return new BaseResponse<>(200,"success",true) ;
     }
 
-    /**
-     * 为角色分配菜单
-     * @param dto
-     * @return
-     */
-    @PostMapping("/assignMenusToRole")
-//    @PreAuthorize("hasRole('超级管理员')")
-    public BaseResponse<Boolean> assignMenusToRole(@RequestBody AssignRolesOrMenusDto dto) {
-        EduTenant principal = (EduTenant) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
-        sysRoleService.assignMenusToRole(dto,principal);
-        return new BaseResponse<>(200,"sucess",true);
-    }
+//    /**
+//     * 为角色分配菜单
+//     * @param dto
+//     * @return
+//     */
+//    @PostMapping("/assignMenusToRole")
+////    @PreAuthorize("hasRole('超级管理员')")
+//    public BaseResponse<Boolean> assignMenusToRole(@RequestBody AssignRolesOrMenusDto dto) {
+//        EduTenant principal = (EduTenant) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
+//        sysRoleService.assignMenusToRole(dto,principal);
+//        return new BaseResponse<>(200,"sucess",true);
+//    }
 
     /**
-     * 更新角色菜单
+     * 为角色分配菜单
      * @param assignRolesOrMenusDto
      * @return
      */
@@ -209,4 +212,52 @@ public class SysRoleController extends BaseController<SysRole> implements SysRol
         List<MenuTreeVo> menuTreeVos = sysRoleService.getMenuTreeByRoleId(roleId);
         return PageResponse.out(200, "success", menuTreeVos);
     }
+
+    /**
+     * 启用单个角色
+     * @param id
+     * @return
+     */
+    @PostMapping("/enableRoleSingle")
+    public BaseResponse enableRoleSingle(@RequestParam Long id){
+        Assert.isTrue(ObjectUtil.isNotEmpty(id), "请选择角色");
+        Set<Long> list = new HashSet<>(Collections.singletonList(id));
+        sysRoleService.enableRoleByIds(list);
+        return PageResponse.out(200,"success",true);
+    }
+
+    /**
+     * 启用多个角色
+     * @param ids
+     * @return
+     */
+    @PostMapping("/enableRoleMulti")
+    public BaseResponse enableRoleMulti(@RequestBody List<Long> ids){
+        sysRoleService.enableRoleByIds(new HashSet<Long>(ids));
+        return PageResponse.out(200,"success",true);
+    }
+
+    /**
+     * 禁用单个角色
+     * @param id
+     * @return
+     */
+    @PostMapping("/disableRoleSingle")
+    public BaseResponse disableRoleSingle(@RequestParam Long id){
+        Assert.isTrue(ObjectUtil.isNotEmpty(id), "请选择角色");
+        Set<Long> list = new HashSet<>(Collections.singletonList(id));
+        sysRoleService.disableRoleByIds(list);
+        return PageResponse.out(200,"success",true);
+    }
+
+    /**
+     * 禁用多个角色
+     * @param ids
+     * @return
+     */
+    @PostMapping("/disableRoleMulti")
+    public BaseResponse disableRoleMulti(@RequestBody List<Long> ids){
+        sysRoleService.disableRoleByIds(new HashSet<Long>(ids));
+        return PageResponse.out(200,"success",true);
+    }
 }

+ 20 - 20
edu-travel-service/edu-travel-service-tenement/src/main/java/edu/travel/tenant/web/TenantController.java

@@ -156,24 +156,26 @@ public class TenantController  extends BaseController<EduTenant> implements Tena
         LambdaQueryWrapper<EduTenant> queryWrapper = new LambdaQueryWrapper<EduTenant>()
                 .eq(EduTenant::getDeleteFlag, 0)
                 .eq(tenantDto.getId() != null, EduTenant::getId, tenantDto.getId())
-                .like(tenantDto.getTenantName() != null && !tenantDto.getTenantName().isEmpty(), EduTenant::getTenantName, tenantDto.getTenantName());
+                .eq(tenantDto.getUserStatus() != null, EduTenant::getUserStatus, tenantDto.getUserStatus())
+                .like(tenantDto.getTenantName() != null && !tenantDto.getTenantName().isEmpty(), EduTenant::getTenantName, tenantDto.getTenantName())
+                .like(tenantDto.getTenantPhone() != null && !tenantDto.getTenantPhone().isEmpty(), EduTenant::getTenantPhone, tenantDto.getTenantPhone());
         IPage<EduTenant> tenantIPage = tenantService.dictMapPage(page, queryWrapper);
         List<EduTenantVo> eduTenantVos = BeanUtil.copyToList(tenantIPage.getRecords(), EduTenantVo.class);
-        List<String> userIds = eduTenantVos.stream().map(EduTenantVo::getId).collect(Collectors.toList());
-        List<SysUserRole> roleList = sysUserRoleService.list(new LambdaQueryWrapper<SysUserRole>()
-                .in(SysUserRole::getUserId, userIds));
-        Map<Long, List<Long>> userRolesMap = roleList.stream()
-                .collect(Collectors.groupingBy(
-                        SysUserRole::getUserId,
-                        Collectors.mapping(SysUserRole::getRoleId, Collectors.toList())
-                ));
-        eduTenantVos.forEach(eduTenantVo -> {
-            List<Long> roleIds = userRolesMap.get(eduTenantVo.getId());
-            if (roleIds != null) {
-                eduTenantVo.setRoleIdList(roleIds);
-            }
-        });
-
+        if (eduTenantVos!=null && !eduTenantVos.isEmpty()) {
+            List<String> userIds = eduTenantVos.stream().map(EduTenantVo::getId).collect(Collectors.toList());
+            List<SysUserRole> roleList = sysUserRoleService.list(new LambdaQueryWrapper<SysUserRole>()
+                    .in(SysUserRole::getUserId, userIds));
+            Map<Long, List<Long>> userRolesMap = roleList.stream()
+                    .collect(Collectors.groupingBy(
+                            SysUserRole::getUserId,
+                            Collectors.mapping(SysUserRole::getRoleId, Collectors.toList())
+                    ));
+            eduTenantVos.forEach(eduTenantVo -> {
+                List<Long> roleIds = userRolesMap.get(Long.parseLong(eduTenantVo.getId()));
+                List<String> list = BeanUtil.copyToList(roleIds, String.class);
+                eduTenantVo.setRoleIds(list);
+            });
+        }
         return PageResponse.out(200, "success", eduTenantVos, (int) tenantIPage.getTotal(), (int) tenantIPage.getSize());
     }
 
@@ -250,8 +252,7 @@ public class TenantController  extends BaseController<EduTenant> implements Tena
 //    @PreAuthorize("hasRole('超级管理员')")
     public BaseResponse<Boolean> disableTenantById(Long id) {
         Assert.isTrue(ObjectUtil.isNotEmpty(id), "请选择用户");
-        Set<Long> list = new HashSet<>();
-        list.add(id);
+        Set<Long> list = new HashSet<>(Collections.singletonList(id));
         tenantService.disableTenantByIds(list);
         return PageResponse.out(200, "success", true);
     }
@@ -266,8 +267,7 @@ public class TenantController  extends BaseController<EduTenant> implements Tena
 //    @PreAuthorize("hasRole('超级管理员')")
     public BaseResponse<Boolean> enableTenantById(Long id) {
         Assert.isTrue(ObjectUtil.isNotEmpty(id), "请选择用户");
-        Set<Long> list = new HashSet<>();
-        list.add(id);
+        Set<Long> list = new HashSet<>(Collections.singletonList(id));
         tenantService.enableTenantByIds(list);
         return PageResponse.out(200, "success", true);
     }

+ 18 - 0
pom.xml

@@ -185,4 +185,22 @@
 
     </dependencies>
   </dependencyManagement>
+
+  <build>
+    <pluginManagement> <!-- 使用 pluginManagement 确保子模块继承插件配置 -->
+      <plugins>
+        <plugin>
+          <groupId>org.apache.maven.plugins</groupId>
+          <artifactId>maven-compiler-plugin</artifactId>
+          <version>3.8.1</version>
+          <configuration>
+            <source>1.8</source>
+            <target>1.8</target>
+          </configuration>
+        </plugin>
+      </plugins>
+    </pluginManagement>
+  </build>
+
+
 </project>