Просмотр исходного кода

Merge branch 'system-zyj' of uskycloud/usky-cloud into master

gez 2 лет назад
Родитель
Сommit
2b97a4d7c3
16 измененных файлов с 820 добавлено и 50 удалено
  1. 45 6
      base-modules/service-system/service-system-biz/src/main/java/com/usky/system/controller/web/SysMobileMenuController.java
  2. 76 0
      base-modules/service-system/service-system-biz/src/main/java/com/usky/system/controller/web/SysMobileRoleMenuController.java
  3. 32 0
      base-modules/service-system/service-system-biz/src/main/java/com/usky/system/domain/SysMobileRoleMenu.java
  4. 37 4
      base-modules/service-system/service-system-biz/src/main/java/com/usky/system/mapper/SysMobileMenuMapper.java
  5. 43 0
      base-modules/service-system/service-system-biz/src/main/java/com/usky/system/mapper/SysMobileRoleMenuMapper.java
  6. 2 2
      base-modules/service-system/service-system-biz/src/main/java/com/usky/system/mapper/SysUserMapper.java
  7. 53 2
      base-modules/service-system/service-system-biz/src/main/java/com/usky/system/service/SysMobileMenuService.java
  8. 32 0
      base-modules/service-system/service-system-biz/src/main/java/com/usky/system/service/SysMobileRoleMenuService.java
  9. 252 29
      base-modules/service-system/service-system-biz/src/main/java/com/usky/system/service/impl/SysMobileMenuServiceImpl.java
  10. 91 0
      base-modules/service-system/service-system-biz/src/main/java/com/usky/system/service/impl/SysMobileRoleMenuServiceImpl.java
  11. 6 0
      base-modules/service-system/service-system-biz/src/main/java/com/usky/system/service/impl/SysRoleServiceImpl.java
  12. 117 1
      base-modules/service-system/service-system-biz/src/main/resources/mapper/system/SysMobileMenuMapper.xml
  13. 28 0
      base-modules/service-system/service-system-biz/src/main/resources/mapper/system/SysMobileRoleMenuMapper.xml
  14. 2 2
      base-modules/service-system/service-system-biz/src/main/resources/mapper/system/SysUserMapper.xml
  15. 2 2
      base-modules/service-system/service-system-biz/src/main/resources/mapper/system/SysUserPostMapper.xml
  16. 2 2
      base-modules/service-system/service-system-biz/src/main/resources/mapper/system/SysUserRoleMapper.xml

+ 45 - 6
base-modules/service-system/service-system-biz/src/main/java/com/usky/system/controller/web/SysMobileMenuController.java

@@ -8,19 +8,21 @@ import com.usky.common.core.util.ServletUtils;
 import com.usky.common.core.util.StringUtils;
 import com.usky.common.security.service.TokenService;
 import com.usky.common.security.utils.SecurityUtils;
+import com.usky.system.domain.SysMenu;
 import com.usky.system.domain.SysMobileMenu;
+import com.usky.system.domain.SysUser;
 import com.usky.system.domain.constants.UserConstants;
 import com.usky.system.model.LoginUser;
+import com.usky.system.service.ISysUserService;
 import com.usky.system.service.SysMobileMenuService;
+import org.apache.catalina.security.SecurityUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
 import org.springframework.stereotype.Controller;
 
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Objects;
+import java.util.*;
 
 /**
  * <p>
@@ -37,6 +39,9 @@ public class SysMobileMenuController  extends BaseController {
     @Autowired
     private SysMobileMenuService sysMobileMenuService;
 
+    @Autowired
+    private ISysUserService userService;
+
     @Autowired
     private TokenService tokenService;
 
@@ -48,10 +53,20 @@ public class SysMobileMenuController  extends BaseController {
     }
 
     @GetMapping("getAppRouters")
-    public ApiResult getAppRouters(@RequestParam(value = "domain") String domain)
+    public ApiResult getAppRouters()
     {
-        List<SysMobileMenu> menus = sysMobileMenuService.moveAppRoute(domain);
-        return ApiResult.success(menus);
+        long userId = SecurityUtils.getUserId();
+        SysUser sysUser = userService.selectUserByIdOne(userId);
+
+        List<SysMobileMenu> menus = new ArrayList<>();
+        Integer i = SecurityUtils.getTenantId();
+        if("01".equals(sysUser.getUserType())){
+            menus = sysMobileMenuService.selectMenuTreeByUserIdOne(SecurityUtils.getTenantId());
+        }else{
+            menus = sysMobileMenuService.selectMenuTreeByUserId(userId);
+        }
+
+        return ApiResult.success(sysMobileMenuService.buildMenus(menus));
     }
 
     /**
@@ -75,6 +90,30 @@ public class SysMobileMenuController  extends BaseController {
         return ApiResult.success(sysMobileMenuService.selectMenuById(menuId));
     }
 
+    /**
+     * 移动端-角色管理-添加角色获取菜单下拉树列表
+     */
+    @GetMapping("/treeselect")
+    public ApiResult treeselect()
+    {
+        List<SysMobileMenu> menus = sysMobileMenuService.selectMenuListTwo();
+        return ApiResult.success(sysMobileMenuService.buildMenuTreeSelect(menus));
+    }
+
+    /**
+     * 加载对应角色菜单列表树
+     */
+    @GetMapping(value = "/roleMenuTreeselect/{roleId}")
+    public ApiResult roleMenuTreeselect(@PathVariable("roleId") Long roleId)
+    {
+        List<SysMobileMenu> menus = sysMobileMenuService.selectMenuListTwo();
+        Map<String,Object> ajax = new HashMap<>();
+        ajax.put("checkedKeys", sysMobileMenuService.selectMenuListByRoleId(roleId));
+        ajax.put("menus", sysMobileMenuService.buildMenuTreeSelect(menus));
+        return ApiResult.success(ajax);
+    }
+
+
     /**
      * 移动端系统管理-菜单管理-新增菜单
      */

+ 76 - 0
base-modules/service-system/service-system-biz/src/main/java/com/usky/system/controller/web/SysMobileRoleMenuController.java

@@ -0,0 +1,76 @@
+package com.usky.system.controller.web;
+
+
+import com.usky.common.core.bean.ApiResult;
+import com.usky.common.core.exception.BusinessErrorCode;
+import com.usky.common.security.utils.SecurityUtils;
+import com.usky.system.domain.SysRole;
+import com.usky.system.domain.constants.UserConstants;
+import com.usky.system.service.ISysRoleService;
+import com.usky.system.service.SysMobileRoleMenuService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ * <p>
+ * 移动端_角色和菜单关联表 前端控制器
+ * </p>
+ *
+ * @author JCB
+ * @since 2023-03-02
+ */
+@RestController
+@RequestMapping("/sysMobileRoleMenu")
+public class SysMobileRoleMenuController  extends BaseController{
+
+    @Autowired
+    private ISysRoleService roleService;
+
+    @Autowired
+    private SysMobileRoleMenuService mobileRoleMenuService;
+
+    /**
+     * 新增角色
+     */
+    @PostMapping
+    public ApiResult add(@Validated @RequestBody SysRole role)
+    {
+        if (UserConstants.NOT_UNIQUE.equals(roleService.checkRoleNameUnique(role)))
+        {
+            return ApiResult.error(BusinessErrorCode.BIZ_BUSINESS_ERROR.getCode(), "新增角色'" + role.getRoleName() + "'失败,角色名称已存在");
+        }
+        else if (UserConstants.NOT_UNIQUE.equals(roleService.checkRoleKeyUnique(role)))
+        {
+            return ApiResult.error(BusinessErrorCode.BIZ_BUSINESS_ERROR.getCode(), "新增角色'" + role.getRoleName() + "'失败,角色权限已存在");
+        }
+        role.setTenantId(SecurityUtils.getTenantId());
+        role.setCreateBy(SecurityUtils.getUsername());
+        return toAjax(mobileRoleMenuService.insertRole(role));
+
+    }
+
+    /**
+     * 修改保存角色
+     */
+    @PutMapping
+    public ApiResult edit(@Validated @RequestBody SysRole role)
+    {
+        roleService.checkRoleAllowed(role);
+        if (UserConstants.NOT_UNIQUE.equals(roleService.checkRoleNameUnique(role)))
+        {
+            return ApiResult.error(BusinessErrorCode.BIZ_BUSINESS_ERROR.getCode(), "修改角色'" + role.getRoleName() + "'失败,角色名称已存在");
+        }
+        else if (UserConstants.NOT_UNIQUE.equals(roleService.checkRoleKeyUnique(role)))
+        {
+            return ApiResult.error(BusinessErrorCode.BIZ_BUSINESS_ERROR.getCode(), "修改角色'" + role.getRoleName() + "'失败,角色权限已存在");
+        }
+        role.setUpdateBy(SecurityUtils.getUsername());
+        return toAjax(mobileRoleMenuService.updateRole(role));
+    }
+
+
+}
+

+ 32 - 0
base-modules/service-system/service-system-biz/src/main/java/com/usky/system/domain/SysMobileRoleMenu.java

@@ -0,0 +1,32 @@
+package com.usky.system.domain;
+
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ * 移动端_角色和菜单关联表
+ * </p>
+ *
+ * @author JCB
+ * @since 2023-03-02
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class SysMobileRoleMenu implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 角色ID
+     */
+    private Long roleId;
+
+    /**
+     * 菜单ID
+     */
+    private Long menuId;
+
+
+}

+ 37 - 4
base-modules/service-system/service-system-biz/src/main/java/com/usky/system/mapper/SysMobileMenuMapper.java

@@ -20,12 +20,45 @@ import java.util.List;
 public interface SysMobileMenuMapper extends CrudMapper<SysMobileMenu> {
 
     /**
-     * 查询菜单使用数量
+     * 根据租户查询系统菜单
      *
-     * @param menuId 菜单ID
-     * @return 结果
+     * @param tenantId 租户ID
+     * @return
+     */
+    public List<SysMobileMenu> selectMenuListOne(@Param("tenantId") Integer tenantId);
+
+    /**
+     * 获取所有菜单列表
+     *
+     * @return 菜单列表
+     */
+    public List<SysMobileMenu> selectMenuTreeAll();
+
+    /**
+     * 根据用户Id查询菜单
+     *
+     * @param userId 用户Id
+     * @return 菜单列表
+     */
+    public List<SysMobileMenu> selectMenuTreeByUserId(@Param("userId") long userId);
+
+    /**
+     * 根据租户Id查询菜单
+     *
+     * @param tenantId 租户Id
+     * @return 菜单列表
+     */
+    public List<SysMobileMenu> selectMenuTreeByUserIdOne(@Param("tenantId") Integer tenantId);
+
+    /**
+     * 根据角色ID查询菜单树信息
+     *
+     * @param roleId            角色ID
+     * @param menuCheckStrictly 菜单树选择项是否关联显示
+     * @return 选中菜单列表
      */
-    public int checkMenuExistRole(@Param("menuId") Long menuId);
+    public List<Integer> selectMenuListByRoleId(@Param("roleId") Long roleId,
+                                                @Param("menuCheckStrictly") boolean menuCheckStrictly);
 
     /**
      * 查询系统菜单列表

+ 43 - 0
base-modules/service-system/service-system-biz/src/main/java/com/usky/system/mapper/SysMobileRoleMenuMapper.java

@@ -0,0 +1,43 @@
+package com.usky.system.mapper;
+
+import com.usky.system.domain.SysMobileRoleMenu;
+import com.usky.common.mybatis.core.CrudMapper;
+import com.usky.system.domain.SysRoleMenu;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 移动端_角色和菜单关联表 Mapper 接口
+ * </p>
+ *
+ * @author JCB
+ * @since 2023-03-02
+ */
+public interface SysMobileRoleMenuMapper extends CrudMapper<SysMobileRoleMenu> {
+
+    /**
+     * 批量新增角色菜单信息
+     *
+     * @param roleMenuList 角色菜单列表
+     * @return 结果
+     */
+    public int batchMobileRoleMenu(List<SysMobileRoleMenu> roleMenuList);
+
+    /**
+     * 通过角色ID删除角色和菜单关联
+     *
+     * @param roleId 角色ID
+     * @return 结果
+     */
+    public int deleteMobileRoleMenuByRoleId(@Param("roleId") Long roleId);
+
+    /**
+     * 批量删除角色菜单关联信息
+     *
+     * @param roleId 需要删除的数据ID
+     * @return 结果
+     */
+    public int deleteMobileRoleMenu(@Param("roleId") Long[] roleId);
+}

+ 2 - 2
base-modules/service-system/service-system-biz/src/main/java/com/usky/system/mapper/SysUserMapper.java

@@ -105,10 +105,10 @@ public interface SysUserMapper extends CrudMapper<SysUser> {
     /**
      * 批量删除用户信息
      *
-     * @param userIds 需要删除的用户ID
+     * @param ids 需要删除的用户ID
      * @return 结果
      */
-    public int deleteUserByIds(Long[] userIds);
+    public int deleteUserByIds(@Param("ids") Long[] ids);
 
     /**
      * 校验用户名称是否唯一

+ 53 - 2
base-modules/service-system/service-system-biz/src/main/java/com/usky/system/service/SysMobileMenuService.java

@@ -3,6 +3,8 @@ package com.usky.system.service;
 import com.usky.system.domain.SysMenu;
 import com.usky.system.domain.SysMobileMenu;
 import com.usky.common.mybatis.core.CrudService;
+import com.usky.system.service.vo.RouterVo;
+import com.usky.system.service.vo.TreeMobileSelect;
 
 import java.util.List;
 
@@ -23,10 +25,59 @@ public interface SysMobileMenuService extends CrudService<SysMobileMenu> {
     List<SysMobileMenu> moveRoute();
 
     /**
-     * 手机APP-首页路由
+     * 根据用户Id获取菜单树信息
+     *
+     * @param userId 用户Id
+     * @return 菜单列表
+     */
+    List<SysMobileMenu> selectMenuTreeByUserId(Long userId);
+
+    /**
+     * 根据租户Id获取菜单树信息
+     *
+     * @param tenantId 租户Id
+     * @return 菜单列表
+     */
+    List<SysMobileMenu> selectMenuTreeByUserIdOne(Integer tenantId);
+
+    /**
+     * 根据角色ID查询菜单树信息
+     *
+     * @param roleId 角色ID
+     * @return 选中菜单列表
+     */
+    List<Integer> selectMenuListByRoleId(Long roleId);
+
+
+    /**
+     * 构建前端所需要树结构
+     *
+     * @param menus 菜单列表
+     * @return 树结构列表
+     */
+    public List<SysMobileMenu> buildMenuTree(List<SysMobileMenu> menus);
+
+    /**
+     * 构建前端路由所需要的菜单
+     *
+     * @param menus 菜单列表
+     * @return 路由列表
+     */
+    List<RouterVo> buildMenus(List<SysMobileMenu> menus);
+
+    /**
+     * 根据租户Id获取展示菜单列表
      * @return
      */
-    List<SysMobileMenu> moveAppRoute(String domain);
+    List<SysMobileMenu> selectMenuListTwo();
+
+    /**
+     * 构建前端所需要下拉树结构
+     *
+     * @param menus 菜单列表
+     * @return 下拉树结构列表
+     */
+    public List<TreeMobileSelect> buildMenuTreeSelect(List<SysMobileMenu> menus);
 
     /**
      * 根据用户查询系统菜单列表

+ 32 - 0
base-modules/service-system/service-system-biz/src/main/java/com/usky/system/service/SysMobileRoleMenuService.java

@@ -0,0 +1,32 @@
+package com.usky.system.service;
+
+import com.usky.system.domain.SysMobileRoleMenu;
+import com.usky.common.mybatis.core.CrudService;
+import com.usky.system.domain.SysRole;
+
+/**
+ * <p>
+ * 移动端_角色和菜单关联表 服务类
+ * </p>
+ *
+ * @author JCB
+ * @since 2023-03-02
+ */
+public interface SysMobileRoleMenuService extends CrudService<SysMobileRoleMenu> {
+
+    /**
+     * 新增保存角色信息
+     *
+     * @param role 角色信息
+     * @return 结果
+     */
+    public int insertRole(SysRole role);
+
+    /**
+     * 修改保存角色信息
+     *
+     * @param role 角色信息
+     * @return 结果
+     */
+    public int updateRole(SysRole role);
+}

+ 252 - 29
base-modules/service-system/service-system-biz/src/main/java/com/usky/system/service/impl/SysMobileMenuServiceImpl.java

@@ -10,6 +10,7 @@ import com.usky.system.controller.web.SysMenuController;
 import com.usky.system.domain.*;
 import com.usky.system.domain.constants.UserConstants;
 import com.usky.system.mapper.SysMobileMenuMapper;
+import com.usky.system.mapper.SysRoleMapper;
 import com.usky.system.mapper.SysRoleMenuMapper;
 import com.usky.system.service.SysMobileMenuService;
 import com.usky.common.mybatis.core.AbstractCrudService;
@@ -17,10 +18,12 @@ import com.usky.system.service.SysMobileTenantMenuService;
 import com.usky.system.service.SysTenantService;
 import com.usky.system.service.vo.MetaVo;
 import com.usky.system.service.vo.RouterVo;
+import com.usky.system.service.vo.TreeMobileSelect;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -40,10 +43,10 @@ public class SysMobileMenuServiceImpl extends AbstractCrudService<SysMobileMenuM
     private SysRoleMenuMapper sysRoleMenuMapper;
 
     @Autowired
-    private SysMobileTenantMenuService sysMobileTenantMenuService;
+    private SysRoleMapper roleMapper;
 
     @Autowired
-    private SysTenantService sysTenantService;
+    private SysMobileTenantMenuService sysMobileTenantMenuService;
 
     /**
      * 查询系统菜单列表
@@ -68,6 +71,57 @@ public class SysMobileMenuServiceImpl extends AbstractCrudService<SysMobileMenuM
         return menuList;
     }
 
+    /**
+     * 构建前端所需要树结构
+     *
+     * @param menus 菜单列表
+     * @return 树结构列表
+     */
+    @Override
+    public List<SysMobileMenu> buildMenuTree(List<SysMobileMenu> menus)
+    {
+        List<SysMobileMenu> returnList = new ArrayList<SysMobileMenu>();
+        List<Long> tempList = new ArrayList<Long>();
+        for (SysMobileMenu dept : menus)
+        {
+            tempList.add(dept.getMenuId());
+        }
+        for (Iterator<SysMobileMenu> iterator = menus.iterator(); iterator.hasNext();)
+        {
+            SysMobileMenu menu = (SysMobileMenu) iterator.next();
+            // 如果是顶级节点, 遍历该父节点的所有子节点
+            if (!tempList.contains(menu.getParentId()))
+            {
+                recursionFn(menus, menu);
+                returnList.add(menu);
+            }
+        }
+        if (returnList.isEmpty())
+        {
+            returnList = menus;
+        }
+        return returnList;
+    }
+
+    @Override
+    public List<SysMobileMenu> selectMenuListTwo(){
+        List<SysMobileMenu> list = sysMobileMenuMapper.selectMenuListOne(SecurityUtils.getTenantId());
+        return list;
+    }
+
+    /**
+     * 构建前端所需要下拉树结构
+     *
+     * @param menus 菜单列表
+     * @return 下拉树结构列表
+     */
+    @Override
+    public List<TreeMobileSelect> buildMenuTreeSelect(List<SysMobileMenu> menus)
+    {
+        List<SysMobileMenu> menuTrees = buildMenuTree(menus);
+        return menuTrees.stream().map(TreeMobileSelect::new).collect(Collectors.toList());
+    }
+
     /**
      * 根据菜单ID查询信息
      *
@@ -156,36 +210,102 @@ public class SysMobileMenuServiceImpl extends AbstractCrudService<SysMobileMenuM
         return list;
     }
 
+
+    /**
+     * 根据用户ID查询菜单
+     *
+     * @param userId 用户名称
+     * @return 菜单列表
+     */
     @Override
-    public List<SysMobileMenu> moveAppRoute(String domain){
-        List<SysMobileMenu> list = new ArrayList<>();
-        List<SysTenant> list1 = sysTenantService.getAppData(domain);
-
-        if(CollectionUtils.isNotEmpty(list1)){
-            Integer tenantId = list1.get(0).getId();
-            String platformId = list1.get(0).getSystemName();
-            LambdaQueryWrapper<SysMobileTenantMenu> query = Wrappers.lambdaQuery();
-            query.eq(SysMobileTenantMenu::getTenantId, tenantId);
-            List<SysMobileTenantMenu> tenantMenuList = sysMobileTenantMenuService.list(query);
-            if (CollectionUtils.isNotEmpty(tenantMenuList)){
-                List<Long> menuIdList = new ArrayList<>();
-                for (int i = 0; i < tenantMenuList.size(); i++) {
-                    menuIdList.add(tenantMenuList.get(i).getMenuId());
-                }
-                LambdaQueryWrapper<SysMobileMenu> queryOne = Wrappers.lambdaQuery();
-                queryOne.select(SysMobileMenu::getMenuId,SysMobileMenu::getMenuName,SysMobileMenu::getParentId,SysMobileMenu::getOrderNum,
-                        SysMobileMenu::getPath,SysMobileMenu::getComponent,SysMobileMenu::getIsFrame,SysMobileMenu::getIsCache,SysMobileMenu::getMenuType,
-                        SysMobileMenu::getVisible,SysMobileMenu::getStatus,SysMobileMenu::getPerms,SysMobileMenu::getIcon,SysMobileMenu::getCreateBy,
-                        SysMobileMenu::getCreateTime,SysMobileMenu::getUpdateBy,SysMobileMenu::getUpdateTime,SysMobileMenu::getRemark)
-                        .in(SysMobileMenu::getMenuId, menuIdList)
-                        .eq(SysMobileMenu::getVisible,0)
-                        .eq(SysMobileMenu::getStatus,0);
-                queryOne.orderByAsc(SysMobileMenu::getOrderNum);
-                List<SysMobileMenu> menuList = this.list(queryOne);
-                list = getChildPerms(menuList, 0);
+    public List<SysMobileMenu> selectMenuTreeByUserId(Long userId)
+    {
+        List<SysMobileMenu> menus = null;
+        if (1L == userId)
+        {
+            menus = sysMobileMenuMapper.selectMenuTreeAll();
+        }
+        else
+        {
+            menus = sysMobileMenuMapper.selectMenuTreeByUserId(userId);
+        }
+        return getChildPerms(menus, 0);
+    }
+
+
+    @Override
+    public List<SysMobileMenu> selectMenuTreeByUserIdOne(Integer tenantId){
+        List<SysMobileMenu> menus = sysMobileMenuMapper.selectMenuTreeByUserIdOne(tenantId);
+        return getChildPerms(menus, 0);
+    }
+
+    /**
+     * 根据角色ID查询菜单树信息
+     *
+     * @param roleId 角色ID
+     * @return 选中菜单列表
+     */
+    @Override
+    public List<Integer> selectMenuListByRoleId(Long roleId)
+    {
+        SysRole role = roleMapper.selectRoleById(roleId);
+        return sysMobileMenuMapper.selectMenuListByRoleId(roleId, role.isMenuCheckStrictly());
+    }
+
+    /**
+     * 构建前端路由所需要的菜单
+     *
+     * @param menus 菜单列表
+     * @return 路由列表
+     */
+    @Override
+    public List<RouterVo> buildMenus(List<SysMobileMenu> menus)
+    {
+        List<RouterVo> routers = new LinkedList<RouterVo>();
+        for (SysMobileMenu menu : menus)
+        {
+            RouterVo router = new RouterVo();
+            router.setHidden("1".equals(menu.getVisible()));
+            router.setName(getRouteName(menu));
+            router.setPath(getRouterPath(menu));
+            router.setComponent(getComponent(menu));
+            router.setMeta(new MetaVo(menu.getMenuName(), menu.getIcon(), StringUtils.equals("1", menu.getIsCache()), menu.getPath()));
+            List<SysMobileMenu> cMenus = menu.getChildren();
+            if (!cMenus.isEmpty() && cMenus.size() > 0 && UserConstants.TYPE_DIR.equals(menu.getMenuType()))
+            {
+                router.setAlwaysShow(true);
+                router.setRedirect("noRedirect");
+                router.setChildren(buildMenus(cMenus));
+            }
+            else if (isMenuFrame(menu))
+            {
+                router.setMeta(null);
+                List<RouterVo> childrenList = new ArrayList<RouterVo>();
+                RouterVo children = new RouterVo();
+                children.setPath(menu.getPath());
+                children.setComponent(menu.getComponent());
+                children.setName(StringUtils.capitalize(menu.getPath()));
+                children.setMeta(new MetaVo(menu.getMenuName(), menu.getIcon(), StringUtils.equals("1", menu.getIsCache()), menu.getPath()));
+                childrenList.add(children);
+                router.setChildren(childrenList);
+            }
+            else if (menu.getParentId().intValue() == 0 && isInnerLink(menu))
+            {
+                router.setMeta(new MetaVo(menu.getMenuName(), menu.getIcon()));
+                router.setPath("/inner");
+                List<RouterVo> childrenList = new ArrayList<RouterVo>();
+                RouterVo children = new RouterVo();
+                String routerPath = StringUtils.replaceEach(menu.getPath(), new String[] { Constants.HTTP, Constants.HTTPS }, new String[] { "", "" });
+                children.setPath(routerPath);
+                children.setComponent(UserConstants.INNER_LINK);
+                children.setName(StringUtils.capitalize(routerPath));
+                children.setMeta(new MetaVo(menu.getMenuName(), menu.getIcon(), menu.getPath()));
+                childrenList.add(children);
+                router.setChildren(childrenList);
             }
+            routers.add(router);
         }
-        return list;
+        return routers;
     }
 
     /**
@@ -284,4 +404,107 @@ public class SysMobileMenuServiceImpl extends AbstractCrudService<SysMobileMenuM
         return getChildList(list, t).size() > 0 ? true : false;
     }
 
+    /**
+     * 获取路由名称
+     *
+     * @param menu 菜单信息
+     * @return 路由名称
+     */
+    public String getRouteName(SysMobileMenu menu)
+    {
+        String routerName = StringUtils.capitalize(menu.getPath());
+        // 非外链并且是一级目录(类型为目录)
+        if (isMenuFrame(menu))
+        {
+            routerName = StringUtils.EMPTY;
+        }
+        return routerName;
+    }
+
+    /**
+     * 获取路由地址
+     *
+     * @param menu 菜单信息
+     * @return 路由地址
+     */
+    public String getRouterPath(SysMobileMenu menu)
+    {
+        String routerPath = menu.getPath();
+        // 内链打开外网方式
+        if (menu.getParentId().intValue() != 0 && isInnerLink(menu))
+        {
+            routerPath = StringUtils.replaceEach(routerPath, new String[] { Constants.HTTP, Constants.HTTPS }, new String[] { "", "" });
+        }
+        // 非外链并且是一级目录(类型为目录)
+        if (0 == menu.getParentId().intValue() && UserConstants.TYPE_DIR.equals(menu.getMenuType())
+                && UserConstants.NO_FRAME.equals(menu.getIsFrame()))
+        {
+            routerPath = "/" + menu.getPath();
+        }
+        // 非外链并且是一级目录(类型为菜单)
+        else if (isMenuFrame(menu))
+        {
+            routerPath = "/";
+        }
+        return routerPath;
+    }
+
+    /**
+     * 获取组件信息
+     *
+     * @param menu 菜单信息
+     * @return 组件信息
+     */
+    public String getComponent(SysMobileMenu menu)
+    {
+        String component = UserConstants.LAYOUT;
+        if (StringUtils.isNotEmpty(menu.getComponent()) && !isMenuFrame(menu))
+        {
+            component = menu.getComponent();
+        }
+        else if (StringUtils.isEmpty(menu.getComponent()) && menu.getParentId().intValue() != 0 && isInnerLink(menu))
+        {
+            component = UserConstants.INNER_LINK;
+        }
+        else if (StringUtils.isEmpty(menu.getComponent()) && isParentView(menu))
+        {
+            component = UserConstants.PARENT_VIEW;
+        }
+        return component;
+    }
+
+    /**
+     * 是否为菜单内部跳转
+     *
+     * @param menu 菜单信息
+     * @return 结果
+     */
+    public boolean isMenuFrame(SysMobileMenu menu)
+    {
+        return menu.getParentId().intValue() == 0 && UserConstants.TYPE_MENU.equals(menu.getMenuType())
+                && menu.getIsFrame().equals(UserConstants.NO_FRAME);
+    }
+
+    /**
+     * 是否为内链组件
+     *
+     * @param menu 菜单信息
+     * @return 结果
+     */
+    public boolean isInnerLink(SysMobileMenu menu)
+    {
+        return menu.getIsFrame().equals(UserConstants.NO_FRAME) && StringUtils.startsWithAny(menu.getPath(), Constants.HTTP, Constants.HTTPS);
+    }
+
+    /**
+     * 是否为parent_view组件
+     *
+     * @param menu 菜单信息
+     * @return 结果
+     */
+    public boolean isParentView(SysMobileMenu menu)
+    {
+        return menu.getParentId().intValue() != 0 && UserConstants.TYPE_DIR.equals(menu.getMenuType());
+    }
+
 }

+ 91 - 0
base-modules/service-system/service-system-biz/src/main/java/com/usky/system/service/impl/SysMobileRoleMenuServiceImpl.java

@@ -0,0 +1,91 @@
+package com.usky.system.service.impl;
+
+import com.usky.system.domain.SysMobileRoleMenu;
+import com.usky.system.domain.SysRole;
+import com.usky.system.mapper.SysMobileRoleMenuMapper;
+import com.usky.system.mapper.SysRoleMapper;
+import com.usky.system.service.SysMobileRoleMenuService;
+import com.usky.common.mybatis.core.AbstractCrudService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * <p>
+ * 移动端_角色和菜单关联表 服务实现类
+ * </p>
+ *
+ * @author JCB
+ * @since 2023-03-02
+ */
+@Service
+public class SysMobileRoleMenuServiceImpl extends AbstractCrudService<SysMobileRoleMenuMapper, SysMobileRoleMenu> implements SysMobileRoleMenuService {
+
+    @Autowired
+    private SysRoleMapper roleMapper;
+
+    @Autowired(required=false)
+    private SysMobileRoleMenuMapper sysMobileRoleMenuMapper;
+
+    /**
+     * 新增保存角色信息
+     *
+     * @param role 角色信息
+     * @return 结果
+     */
+    @Override
+    @Transactional
+    public int insertRole(SysRole role)
+    {
+        // 新增角色信息
+        roleMapper.insertRole(role);
+        return insertMobileRoleMenu(role);
+    }
+
+    /**
+     * 新增移动端角色菜单信息
+     *
+     * @param role 角色对象
+     */
+    public int insertMobileRoleMenu(SysRole role)
+    {
+        int rows = 1;
+        // 新增用户与角色管理
+        List<SysMobileRoleMenu> list = new ArrayList<SysMobileRoleMenu>();
+        if (null != role.getMenuIds() && role.getMenuIds().length > 0){
+            for (Long menuId : role.getMenuIds())
+            {
+                SysMobileRoleMenu rm = new SysMobileRoleMenu();
+                rm.setRoleId(role.getRoleId());
+                rm.setMenuId(menuId);
+                list.add(rm);
+            }
+        }
+        if (list.size() > 0)
+        {
+            rows = sysMobileRoleMenuMapper.batchMobileRoleMenu(list);
+        }
+        return rows;
+    }
+
+    /**
+     * 修改保存角色信息
+     *
+     * @param role 角色信息
+     * @return 结果
+     */
+    @Override
+    @Transactional
+    public int updateRole(SysRole role)
+    {
+        // 修改角色信息
+        roleMapper.updateRole(role);
+        // 删除角色与菜单关联
+        sysMobileRoleMenuMapper.deleteMobileRoleMenuByRoleId(role.getRoleId());
+        return insertMobileRoleMenu(role);
+    }
+}

+ 6 - 0
base-modules/service-system/service-system-biz/src/main/java/com/usky/system/service/impl/SysRoleServiceImpl.java

@@ -12,6 +12,7 @@ import com.usky.system.domain.constants.UserConstants;
 import com.usky.system.mapper.SysRoleDeptMapper;
 import com.usky.system.mapper.SysRoleMapper;
 import com.usky.system.mapper.SysRoleMenuMapper;
+import com.usky.system.mapper.SysMobileRoleMenuMapper;
 import com.usky.system.mapper.SysUserRoleMapper;
 import com.usky.system.service.ISysRoleService;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -34,6 +35,9 @@ public class SysRoleServiceImpl extends AbstractCrudService<SysRoleMapper, SysRo
     @Autowired
     private SysRoleMenuMapper roleMenuMapper;
 
+    @Autowired(required = false)
+    private SysMobileRoleMenuMapper sysMobileRoleMenuMapper;
+
     @Autowired
     private SysUserRoleMapper userRoleMapper;
 
@@ -346,6 +350,8 @@ public class SysRoleServiceImpl extends AbstractCrudService<SysRoleMapper, SysRo
         }
         // 删除角色与菜单关联
         roleMenuMapper.deleteRoleMenu(roleIds);
+        // 删除移动端角色与菜单关联
+        sysMobileRoleMenuMapper.deleteMobileRoleMenu(roleIds);
         // 删除角色与部门关联
         roleDeptMapper.deleteRoleDept(roleIds);
         return roleMapper.deleteRoleByIds(roleIds);

+ 117 - 1
base-modules/service-system/service-system-biz/src/main/resources/mapper/system/SysMobileMenuMapper.xml

@@ -62,6 +62,122 @@
         order by parent_id, order_num
     </select>
 
+    <select id="selectMenuListOne" resultType="com.usky.system.domain.SysMobileMenu">
+        SELECT
+        b.menu_id,
+        b.menu_name,
+        b.parent_id,
+        b.order_num,
+        b.path,
+        b.component,
+        b.is_frame,
+        b.is_cache,
+        b.menu_type,
+        b.visible,
+        b.status,
+        ifnull(b.perms, '') as perms,
+        b.icon,
+        b.create_time
+        FROM
+        sys_mobile_tenant_menu AS a
+        JOIN sys_mobile_menu AS b ON a.menu_id = b.menu_id
+        <where>
+            a.tenant_id = #{tenantId}
+            AND b.visible = 0
+            AND b.status = 0
+        </where>
+        order by parent_id, order_num
+    </select>
+
+    <select id="selectMenuTreeAll" resultMap="BaseResultMap">
+        select distinct m.menu_id,
+                        m.parent_id,
+                        m.menu_name,
+                        m.path,
+                        m.component,
+                        m.visible,
+                        m.status,
+                        ifnull(m.perms, '') as perms,
+                        m.is_frame,
+                        m.is_cache,
+                        m.menu_type,
+                        m.icon,
+                        m.order_num,
+                        m.create_time
+        from sys_mobile_menu m
+        where m.menu_type in ('M', 'C')
+          and m.status = 0
+        order by m.parent_id, m.order_num
+    </select>
+
+    <select id="selectMenuTreeByUserId" parameterType="Long" resultMap="BaseResultMap">
+        select distinct m.menu_id,
+                        m.parent_id,
+                        m.menu_name,
+                        m.path,
+                        m.component,
+                        m.visible,
+                        m.status,
+                        ifnull(m.perms, '') as perms,
+                        m.is_frame,
+                        m.is_cache,
+                        m.menu_type,
+                        m.icon,
+                        m.order_num,
+                        m.create_time
+        from sys_mobile_menu m
+                 left join sys_mobile_role_menu rm on m.menu_id = rm.menu_id
+                 left join sys_user_role ur on rm.role_id = ur.role_id
+                 left join sys_role ro on ur.role_id = ro.role_id
+                 left join sys_user u on ur.user_id = u.user_id
+        where u.user_id = #{userId}
+          and m.menu_type in ('M', 'C')
+          and m.status = 0
+          AND ro.status = 0
+        order by m.parent_id, m.order_num
+    </select>
+
+    <select id="selectMenuTreeByUserIdOne" resultMap="BaseResultMap">
+        SELECT
+            m.menu_id,
+            m.parent_id,
+            m.menu_name,
+            m.path,
+            m.component,
+            m.visible,
+            m. STATUS,
+            ifnull(m.perms, '') AS perms,
+            m.is_frame,
+            m.is_cache,
+            m.menu_type,
+            m.icon,
+            m.order_num,
+            m.create_time
+        FROM
+            sys_mobile_menu m
+                JOIN sys_mobile_tenant_menu t
+        WHERE
+            m.menu_id = t.menu_id
+          AND m.menu_type IN ('M', 'C')
+          AND m. STATUS = 0
+          AND t.tenant_id=#{tenantId}
+        ORDER BY
+            m.parent_id,
+            m.order_num
+    </select>
+
+    <select id="selectMenuListByRoleId" resultType="Integer">
+        select m.menu_id
+        from sys_mobile_menu m
+        left join sys_mobile_role_menu rm on m.menu_id = rm.menu_id
+        where rm.role_id = #{roleId}
+        <if test="menuCheckStrictly">
+            and m.menu_id not in (select m.parent_id from sys_mobile_menu m inner join sys_mobile_role_menu rm on m.menu_id =
+            rm.menu_id and rm.role_id = #{roleId})
+        </if>
+        order by m.parent_id, m.order_num
+    </select>
+
 
     <select id="selectMenuById" parameterType="Long" resultMap="BaseResultMap">
         <include refid="selectMobileMenuVo"/>
@@ -72,7 +188,7 @@
         select distinct m.menu_id, m.menu_name, m.parent_id, m.order_num, m.path, m.component, m.is_frame, m.is_cache, m.menu_type, m.visible, m.status,
         ifnull(m.perms,'') as perms, m.icon, m.create_by, m.create_time, m.update_by, m.update_time, m.remark
         from sys_mobile_menu m
-        left join sys_role_menu rm on m.menu_id = rm.menu_id
+        left join sys_mobile_role_menu rm on m.menu_id = rm.menu_id
         left join sys_user_role ur on rm.role_id = ur.role_id
         left join sys_role ro on ur.role_id = ro.role_id
         where ur.user_id = #{params.userId}

+ 28 - 0
base-modules/service-system/service-system-biz/src/main/resources/mapper/system/SysMobileRoleMenuMapper.xml

@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.usky.system.mapper.SysMobileRoleMenuMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.usky.system.domain.SysMobileRoleMenu">
+        <id column="role_id" property="roleId" />
+        <result column="menu_id" property="menuId" />
+    </resultMap>
+
+    <insert id="batchMobileRoleMenu">
+        insert into sys_mobile_role_menu(role_id, menu_id) values
+        <foreach item="item" index="index" collection="list" separator=",">
+            (#{item.roleId},#{item.menuId})
+        </foreach>
+    </insert>
+
+    <delete id="deleteMobileRoleMenuByRoleId" parameterType="Long">
+		delete from sys_mobile_role_menu where role_id=#{roleId}
+	</delete>
+
+    <delete id="deleteMobileRoleMenu">
+        delete from sys_mobile_role_menu where role_id in
+        <foreach collection="roleId" item="roleId" open="(" separator="," close=")">
+            #{roleId}
+        </foreach>
+    </delete>
+</mapper>

+ 2 - 2
base-modules/service-system/service-system-biz/src/main/resources/mapper/system/SysUserMapper.xml

@@ -241,8 +241,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  	
  	<delete id="deleteUserByIds" parameterType="Long">
  		update sys_user set del_flag = '2' where user_id in
- 		<foreach collection="array" item="userId" open="(" separator="," close=")">
- 			#{userId}
+ 		<foreach collection="ids" item="ids" open="(" separator="," close=")">
+ 			#{ids}
         </foreach> 
  	</delete>
 

+ 2 - 2
base-modules/service-system/service-system-biz/src/main/resources/mapper/system/SysUserPostMapper.xml

@@ -19,8 +19,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 	
 	<delete id="deleteUserPost" parameterType="Long">
  		delete from sys_user_post where user_id in
- 		<foreach collection="array" item="userId" open="(" separator="," close=")">
- 			#{userId}
+ 		<foreach collection="ids" item="ids" open="(" separator="," close=")">
+ 			#{ids}
         </foreach> 
  	</delete>
 	

+ 2 - 2
base-modules/service-system/service-system-biz/src/main/resources/mapper/system/SysUserRoleMapper.xml

@@ -19,8 +19,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 	
 	<delete id="deleteUserRole" parameterType="Long">
  		delete from sys_user_role where user_id in
- 		<foreach collection="array" item="userId" open="(" separator="," close=")">
- 			#{userId}
+ 		<foreach collection="ids" item="ids" open="(" separator="," close=")">
+ 			#{ids}
         </foreach> 
  	</delete>