diff --git a/core/core-backend/src/main/java/io/gisbi/application/system/controller/MenuController.java b/core/core-backend/src/main/java/io/gisbi/application/system/controller/MenuController.java index 5d2a346..b8d6038 100644 --- a/core/core-backend/src/main/java/io/gisbi/application/system/controller/MenuController.java +++ b/core/core-backend/src/main/java/io/gisbi/application/system/controller/MenuController.java @@ -166,4 +166,18 @@ public class MenuController { return ResponseResult.error(); } } + + /*********************************** + * 用途说明:获取分配权限 + * 参数说明 + * appId 系统id + * roleId 角色ID + * 返回值说明: 菜单结构树集合 + ***********************************/ + @PostMapping("/permissionAssignment") + @ResponseBody + public List> permissionAssignment(String appId, String roleId) { + + return menuService.permissionAssignment(appId,roleId); + } } diff --git a/core/core-backend/src/main/java/io/gisbi/application/system/controller/OrganizationController.java b/core/core-backend/src/main/java/io/gisbi/application/system/controller/OrganizationController.java index d588c71..86fd230 100644 --- a/core/core-backend/src/main/java/io/gisbi/application/system/controller/OrganizationController.java +++ b/core/core-backend/src/main/java/io/gisbi/application/system/controller/OrganizationController.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import io.gisbi.application.system.domain.Organization; import io.gisbi.application.system.service.IOrganizationService; +import io.gisbi.datasource.dao.auto.entity.QrtzSchedulerState; import io.gisbi.utils.AuthUtils; import jakarta.annotation.Resource; import org.springframework.web.bind.annotation.*; @@ -97,6 +98,25 @@ public class OrganizationController { return organizationService.getOrganizations(appId,orgtype, parentid, orgName); } + /*********************************** + * 用途说明:查询全部系统组织框架 + * 参数说明 + * appId 应用ID + * 返回值说明: 是否新增成功 + ***********************************/ + @PostMapping("/listOrganization") + @ResponseBody + public ResponseResult listOrganization(String appId) { + if (appId == null) { + return ResponseResult.error("应用ID不能为空"); + } + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(Organization::getAppId,appId); + queryWrapper.eq(Organization::getIsvaild,"1"); + List list = organizationService.list(queryWrapper); + return ResponseResult.successData(list); + } + /*********************************** * 用途说明:根据ID查询信息 * 参数说明 diff --git a/core/core-backend/src/main/java/io/gisbi/application/system/mapper/MenuMapper.java b/core/core-backend/src/main/java/io/gisbi/application/system/mapper/MenuMapper.java index 3221e64..5ab77b8 100644 --- a/core/core-backend/src/main/java/io/gisbi/application/system/mapper/MenuMapper.java +++ b/core/core-backend/src/main/java/io/gisbi/application/system/mapper/MenuMapper.java @@ -3,8 +3,15 @@ package io.gisbi.application.system.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import io.gisbi.application.system.domain.Menu; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; @Mapper public interface MenuMapper extends BaseMapper { + + @Select("select m.id FROM app_role_menu rm INNER JOIN app_menu m on rm.menuid = m.id where m.isdisplay = 1 AND rm.app_id = #{appid} AND rm.roleid = #{roleid} ORDER BY m.orderno ASC") + List selectMenuByRoleId( @Param("appid")String appId, @Param("roleid") String roleId); } diff --git a/core/core-backend/src/main/java/io/gisbi/application/system/mapper/UserMapper.java b/core/core-backend/src/main/java/io/gisbi/application/system/mapper/UserMapper.java index 1f4caa0..36ac7a6 100644 --- a/core/core-backend/src/main/java/io/gisbi/application/system/mapper/UserMapper.java +++ b/core/core-backend/src/main/java/io/gisbi/application/system/mapper/UserMapper.java @@ -56,13 +56,13 @@ public interface UserMapper extends BaseMapper { " u.status, u.lastmodifier, u.lastmodifydate\n" + "FROM app_user u\n" + "WHERE u.usertype != 0\n" + - "\n" + + "\n" + " AND u.orgid = #{orgid}\n" + "\n" + - "\n" + + "\n" + " AND u.app_id = #{appId}\n" + "\n" + - "\n" + + "\n" + " AND u.nickname LIKE CONCAT('%', #{nickname}, '%')\n" + "\n" + "ORDER BY u.lastmodifydate DESC" + diff --git a/core/core-backend/src/main/java/io/gisbi/application/system/service/IMenuService.java b/core/core-backend/src/main/java/io/gisbi/application/system/service/IMenuService.java index e3e6a11..0e7d950 100644 --- a/core/core-backend/src/main/java/io/gisbi/application/system/service/IMenuService.java +++ b/core/core-backend/src/main/java/io/gisbi/application/system/service/IMenuService.java @@ -40,4 +40,13 @@ public interface IMenuService extends IService { * 返回值说明: 是否删除成功 ***********************************/ boolean deleteMenuById(String id); + + /*********************************** + * 用途说明:获取分配权限 + * 参数说明 + * appId 系统id + * roleId 角色ID + * 返回值说明: 菜单结构树集合 + ***********************************/ + List> permissionAssignment(String appId ,String roleId); } diff --git a/core/core-backend/src/main/java/io/gisbi/application/system/service/IUserService.java b/core/core-backend/src/main/java/io/gisbi/application/system/service/IUserService.java index f18c867..84ae4d9 100644 --- a/core/core-backend/src/main/java/io/gisbi/application/system/service/IUserService.java +++ b/core/core-backend/src/main/java/io/gisbi/application/system/service/IUserService.java @@ -44,7 +44,7 @@ public interface IUserService extends IService { * page 分页条件 * 返回值说明: 用户信息集合 ***********************************/ - Page> queryUsers(String orgid, String nickname,String appId, Page page); + Page> queryUsers(String orgid,String appId, String nickname, Page page); /*********************************** * 用途说明:根据id删除用户 diff --git a/core/core-backend/src/main/java/io/gisbi/application/system/service/impl/MenuServiceImpl.java b/core/core-backend/src/main/java/io/gisbi/application/system/service/impl/MenuServiceImpl.java index 36003aa..f2c836a 100644 --- a/core/core-backend/src/main/java/io/gisbi/application/system/service/impl/MenuServiceImpl.java +++ b/core/core-backend/src/main/java/io/gisbi/application/system/service/impl/MenuServiceImpl.java @@ -1,6 +1,8 @@ package io.gisbi.application.system.service.impl; import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import io.gisbi.application.system.domain.Menu; @@ -180,6 +182,98 @@ public class MenuServiceImpl extends ServiceImpl implements IM return isOk; } + /*********************************** + * 用途说明:获取分配权限 + * 参数说明 + * appId 系统id + * roleId 角色ID + * 返回值说明: 菜单结构树集合 + ***********************************/ + @Override + public List> permissionAssignment(String appId ,String roleId) { + + + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(Menu::getAppId, appId).select(Menu::getId,Menu::getAppId,Menu::getType,Menu::getCode, + Menu::getParentid, Menu::getName).orderByAsc + (Menu::getOrderno); + List> listAll = + menuMapper.selectMaps(queryWrapper); + List listRole = + menuMapper.selectMenuByRoleId(appId,roleId); + for (Map map : listAll) { + String id = (String) map.get("id"); + if (listRole.contains(id)) { + map.put("checkinfo", true); + } else { + map.put("checkinfo", false); + } + + } + List> listTree = buildTrees(listAll); + return listTree; + } + + /********************************** + * 用途说明: 生成权菜单权限树 + * 参数说明 sysMenus + * 返回值说明: java.util.List> + ***********************************/ + public List> buildTrees(List> Menus) { + List> resultMenuList = new ArrayList<>(); + for (Map sysMenu : Menus) { + if ("0".equals(sysMenu.get("parentid"))) { + resultMenuList.add(sysMenu); + } + } + for (Map sysMenu : resultMenuList) { + List> menus = iterateMenus(Menus, + (String) sysMenu.get("id")); + for (Map menu : menus) { + if (!(boolean) menu.get("checkinfo")) { + sysMenu.put("checkinfo", false); + break; + } + } + sysMenu.put("children", menus); + } + return resultMenuList; + } + + /** + * 多级菜单查询方法 + * + * @param menuVoList 不包含最高层次菜单的菜单集合 + * @param pid 父类id + * @return + */ + public List> iterateMenus(List> menuVoList, String pid) { + List> result = new ArrayList<>(); + for (Map menu : menuVoList) { + //获取菜单的id + String menuid = (String) menu.get("id"); + //获取菜单的父id + String parentid = (String) menu.get("parentid"); + if (StrUtil.isNotBlank(parentid)) { + if (parentid.equals(pid)) { + //递归查询当前子菜单的子菜单 + List> iterateMenu = + iterateMenus(menuVoList, menuid); + for (Map map : iterateMenu) { + boolean checkinfo = (boolean) map.get("checkinfo"); + if (!checkinfo) { + menu.put("checkinfo", false); + } + } + menu.put("children", iterateMenu); + result.add(menu); + } + } + } + return result; + } + + //2 根据当前菜单id,查询菜单里面子菜单id,封装到list集合 private void selectPermissionChildById(String id, List idList) { //查询菜单里面子菜单id diff --git a/core/core-backend/src/main/java/io/gisbi/application/system/service/impl/OrganizationServiceImpl.java b/core/core-backend/src/main/java/io/gisbi/application/system/service/impl/OrganizationServiceImpl.java index fda4d79..3c2320a 100644 --- a/core/core-backend/src/main/java/io/gisbi/application/system/service/impl/OrganizationServiceImpl.java +++ b/core/core-backend/src/main/java/io/gisbi/application/system/service/impl/OrganizationServiceImpl.java @@ -53,6 +53,8 @@ public class OrganizationServiceImpl extends ServiceImpl> listMap = this.listMaps(queryWrapper.orderByAsc(Organization::getOrgcode)); if (listMap == null) { diff --git a/core/core-backend/src/main/java/io/gisbi/application/system/service/impl/UserServiceImpl.java b/core/core-backend/src/main/java/io/gisbi/application/system/service/impl/UserServiceImpl.java index 6e2af5f..46d6d29 100644 --- a/core/core-backend/src/main/java/io/gisbi/application/system/service/impl/UserServiceImpl.java +++ b/core/core-backend/src/main/java/io/gisbi/application/system/service/impl/UserServiceImpl.java @@ -164,7 +164,7 @@ public class UserServiceImpl extends ServiceImpl implements IU * 返回值说明: 用户信息集合 ***********************************/ @Override - public Page> queryUsers(String orgid, String nickname, String appId, Page page) { + public Page> queryUsers(String orgid, String appId, String nickname, Page page) { //当前用户类型 用户类型 0-管理员 1-普通用户 int usertype = 0;//currentUser.getUsertype();