From 8042fc746fda886079624ae680bba569e9bf6926 Mon Sep 17 00:00:00 2001 From: zzl <961867786@qq.com> Date: Tue, 2 Sep 2025 14:36:17 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A7=92=E8=89=B2=E6=8E=88=E6=9D=83=E6=89=8B?= =?UTF-8?q?=E6=9C=BA=E8=8F=9C=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../system/SysMenuappController.java | 70 ++++++-- .../controller/system/SysRoleController.java | 160 ++++++++++------- .../ruoyi/common/core/domain/AjaxResult.java | 115 ++++++------ .../com/ruoyi/system/domain/SysMenuapp.java | 104 ++--------- .../ruoyi/system/domain/SysRoleMenuapp.java | 25 +++ .../ruoyi/system/mapper/SysMenuappMapper.java | 7 + .../system/mapper/SysRoleMenuappMapper.java | 84 +++++++++ .../system/service/ISysMenuappService.java | 6 + .../service/ISysRoleMenuappService.java | 87 ++++++++++ .../service/impl/SysMenuappServiceImpl.java | 15 ++ .../impl/SysRoleMenuappServiceImpl.java | 164 ++++++++++++++++++ .../mapper/system/SysMenuappMapper.xml | 36 ++++ .../mapper/system/SysRoleMenuappMapper.xml | 98 +++++++++++ 13 files changed, 742 insertions(+), 229 deletions(-) create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/domain/SysRoleMenuapp.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRoleMenuappMapper.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/service/ISysRoleMenuappService.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysRoleMenuappServiceImpl.java create mode 100644 ruoyi-system/src/main/resources/mapper/system/SysRoleMenuappMapper.xml diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysMenuappController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysMenuappController.java index 134e96a..99b8ab6 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysMenuappController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysMenuappController.java @@ -3,10 +3,16 @@ package com.ruoyi.web.controller.system; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.core.domain.entity.SysDictData; +import com.ruoyi.common.core.domain.entity.SysUser; +import com.ruoyi.common.core.domain.model.LoginUser; import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.enums.BusinessType; +import com.ruoyi.common.utils.DictUtils; +import com.ruoyi.common.utils.ServletUtils; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.common.utils.translation.TranslateUtils; +import com.ruoyi.framework.web.service.TokenService; import com.ruoyi.system.domain.SysMenuapp; import com.ruoyi.system.service.ISysMenuappService; import org.springframework.beans.factory.annotation.Autowired; @@ -15,7 +21,11 @@ import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; +import java.util.ArrayList; +import java.util.Comparator; import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; /** * 手机菜单Controller @@ -25,18 +35,20 @@ import java.util.List; */ @RestController @RequestMapping("/system/menuapp") -public class SysMenuappController extends BaseController -{ +public class SysMenuappController extends BaseController { + @Autowired private ISysMenuappService sysMenuappService; + @Autowired + private TokenService tokenService; + /** * 查询手机菜单列表 */ @PreAuthorize("@ss.hasPermi('system:menuapp:list')") @GetMapping("/list") - public TableDataInfo list(SysMenuapp sysMenuapp) - { + public TableDataInfo list(SysMenuapp sysMenuapp) { startPage(); List list = sysMenuappService.selectSysMenuappList(sysMenuapp); return getDataTable(list); @@ -49,8 +61,7 @@ public class SysMenuappController extends BaseController @PreAuthorize("@ss.hasPermi('system:menuapp:export')") @Log(title = "手机菜单", businessType = BusinessType.EXPORT) @PostMapping("/export") - public void export(HttpServletResponse response, SysMenuapp sysMenuapp) - { + public void export(HttpServletResponse response, SysMenuapp sysMenuapp) { List list = sysMenuappService.selectSysMenuappList(sysMenuapp); ExcelUtil util = new ExcelUtil(SysMenuapp.class); util.exportExcel(response, list, "手机菜单数据"); @@ -83,8 +94,7 @@ public class SysMenuappController extends BaseController */ @PreAuthorize("@ss.hasPermi('system:menuapp:query')") @GetMapping(value = "/{id}") - public AjaxResult getInfo(@PathVariable("id") Long id) - { + public AjaxResult getInfo(@PathVariable("id") Long id) { SysMenuapp detail = sysMenuappService.selectSysMenuappById(id); TranslateUtils.translate(detail, false); return success(detail); @@ -96,8 +106,7 @@ public class SysMenuappController extends BaseController @PreAuthorize("@ss.hasPermi('system:menuapp:add')") @Log(title = "手机菜单", businessType = BusinessType.INSERT) @PostMapping - public AjaxResult add(@RequestBody SysMenuapp sysMenuapp) - { + public AjaxResult add(@RequestBody SysMenuapp sysMenuapp) { return toAjax(sysMenuappService.insertSysMenuapp(sysMenuapp)); } @@ -107,8 +116,7 @@ public class SysMenuappController extends BaseController @PreAuthorize("@ss.hasPermi('system:menuapp:edit')") @Log(title = "手机菜单", businessType = BusinessType.UPDATE) @PutMapping - public AjaxResult edit(@RequestBody SysMenuapp sysMenuapp) - { + public AjaxResult edit(@RequestBody SysMenuapp sysMenuapp) { return toAjax(sysMenuappService.updateSysMenuapp(sysMenuapp)); } @@ -117,11 +125,43 @@ public class SysMenuappController extends BaseController */ @PreAuthorize("@ss.hasPermi('system:menuapp:remove')") @Log(title = "手机菜单", businessType = BusinessType.DELETE) - @DeleteMapping("/{ids}") - public AjaxResult remove(@PathVariable Long[] ids) - { + @DeleteMapping("/{ids}") + public AjaxResult remove(@PathVariable Long[] ids) { return toAjax(sysMenuappService.deleteSysMenuappByIds(ids)); } + /** + * 手机端菜单渲染 + */ + @GetMapping("/menus") + public AjaxResult menus() { + SysMenuapp mp = new SysMenuapp(); + mp.setMenuStatus("0"); + LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest()); + SysUser user = loginUser.getUser(); + List list = sysMenuappService.selectSysMobileListByUserId(user.getUserId(), mp); + return respMenus(list); + } + + + private AjaxResult respMenus(List list) { + int size = list.size(); + List modle_name = DictUtils.getDictCache("modle_type"); + Map modleNameOrderMap = modle_name.stream().collect(Collectors.toMap(SysDictData::getDictValue, SysDictData::getDictSort)); + Map> groups = list.stream() + .sorted(Comparator.comparing((x) -> modleNameOrderMap.get(((SysMenuapp) x).getModelType())) + .thenComparing((x) -> ((SysMenuapp) x).getMenuNum())) + .collect(Collectors.groupingBy(SysMenuapp::getModelType)); + List res = new ArrayList<>(); + modle_name.forEach((x) -> { + if(!groups.containsKey(x.getDictValue())) + return; + List sysMobiles = groups.get(x.getDictValue()); + SysMenuapp item = new SysMenuapp(); + item.setModelType(x.getDictLabel()).setMenus(sysMobiles); + res.add(item); + }); + return AjaxResult.success(res).set("count", size); + } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysRoleController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysRoleController.java index 42d9e8f..10f1b86 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysRoleController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysRoleController.java @@ -1,18 +1,5 @@ package com.ruoyi.web.controller.system; -import java.util.List; -import javax.servlet.http.HttpServletResponse; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.DeleteMapping; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.PutMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.AjaxResult; @@ -26,20 +13,26 @@ import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.framework.web.service.SysPermissionService; import com.ruoyi.framework.web.service.TokenService; +import com.ruoyi.system.domain.SysMenuapp; +import com.ruoyi.system.domain.SysRoleMenuapp; import com.ruoyi.system.domain.SysUserRole; -import com.ruoyi.system.service.ISysDeptService; -import com.ruoyi.system.service.ISysRoleService; -import com.ruoyi.system.service.ISysUserService; +import com.ruoyi.system.service.*; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.util.List; /** * 角色信息 - * + * * @author ruoyi */ @RestController @RequestMapping("/system/role") -public class SysRoleController extends BaseController -{ +public class SysRoleController extends BaseController { @Autowired private ISysRoleService roleService; @@ -55,10 +48,17 @@ public class SysRoleController extends BaseController @Autowired private ISysDeptService deptService; + @Autowired + private ISysRoleMenuappService roleMobileService; + + @Autowired + private ISysMenuappService sysMenuappService; + + + @PreAuthorize("@ss.hasPermi('system:role:list')") @GetMapping("/list") - public TableDataInfo list(SysRole role) - { + public TableDataInfo list(SysRole role) { startPage(); List list = roleService.selectRoleList(role); return getDataTable(list); @@ -67,8 +67,7 @@ public class SysRoleController extends BaseController @Log(title = "角色管理", businessType = BusinessType.EXPORT) @PreAuthorize("@ss.hasPermi('system:role:export')") @PostMapping("/export") - public void export(HttpServletResponse response, SysRole role) - { + public void export(HttpServletResponse response, SysRole role) { List list = roleService.selectRoleList(role); ExcelUtil util = new ExcelUtil(SysRole.class); util.exportExcel(response, list, "角色数据"); @@ -79,8 +78,7 @@ public class SysRoleController extends BaseController */ @PreAuthorize("@ss.hasPermi('system:role:query')") @GetMapping(value = "/{roleId}") - public AjaxResult getInfo(@PathVariable Long roleId) - { + public AjaxResult getInfo(@PathVariable Long roleId) { roleService.checkRoleDataScope(roleId); return success(roleService.selectRoleById(roleId)); } @@ -91,14 +89,10 @@ public class SysRoleController extends BaseController @PreAuthorize("@ss.hasPermi('system:role:add')") @Log(title = "角色管理", businessType = BusinessType.INSERT) @PostMapping - public AjaxResult add(@Validated @RequestBody SysRole role) - { - if (!roleService.checkRoleNameUnique(role)) - { + public AjaxResult add(@Validated @RequestBody SysRole role) { + if (!roleService.checkRoleNameUnique(role)) { return error("新增角色'" + role.getRoleName() + "'失败,角色名称已存在"); - } - else if (!roleService.checkRoleKeyUnique(role)) - { + } else if (!roleService.checkRoleKeyUnique(role)) { return error("新增角色'" + role.getRoleName() + "'失败,角色权限已存在"); } role.setCreateBy(getUsername()); @@ -112,26 +106,20 @@ public class SysRoleController extends BaseController @PreAuthorize("@ss.hasPermi('system:role:edit')") @Log(title = "角色管理", businessType = BusinessType.UPDATE) @PutMapping - public AjaxResult edit(@Validated @RequestBody SysRole role) - { + public AjaxResult edit(@Validated @RequestBody SysRole role) { roleService.checkRoleAllowed(role); roleService.checkRoleDataScope(role.getRoleId()); - if (!roleService.checkRoleNameUnique(role)) - { + if (!roleService.checkRoleNameUnique(role)) { return error("修改角色'" + role.getRoleName() + "'失败,角色名称已存在"); - } - else if (!roleService.checkRoleKeyUnique(role)) - { + } else if (!roleService.checkRoleKeyUnique(role)) { return error("修改角色'" + role.getRoleName() + "'失败,角色权限已存在"); } role.setUpdateBy(getUsername()); - - if (roleService.updateRole(role) > 0) - { + + if (roleService.updateRole(role) > 0) { // 更新缓存用户权限 LoginUser loginUser = getLoginUser(); - if (StringUtils.isNotNull(loginUser.getUser()) && !loginUser.getUser().isAdmin()) - { + if (StringUtils.isNotNull(loginUser.getUser()) && !loginUser.getUser().isAdmin()) { loginUser.setUser(userService.selectUserByUserName(loginUser.getUser().getUserName())); loginUser.setPermissions(permissionService.getMenuPermission(loginUser.getUser())); tokenService.setLoginUser(loginUser); @@ -147,8 +135,7 @@ public class SysRoleController extends BaseController @PreAuthorize("@ss.hasPermi('system:role:edit')") @Log(title = "角色管理", businessType = BusinessType.UPDATE) @PutMapping("/dataScope") - public AjaxResult dataScope(@RequestBody SysRole role) - { + public AjaxResult dataScope(@RequestBody SysRole role) { roleService.checkRoleAllowed(role); roleService.checkRoleDataScope(role.getRoleId()); return toAjax(roleService.authDataScope(role)); @@ -160,8 +147,7 @@ public class SysRoleController extends BaseController @PreAuthorize("@ss.hasPermi('system:role:edit')") @Log(title = "角色管理", businessType = BusinessType.UPDATE) @PutMapping("/changeStatus") - public AjaxResult changeStatus(@RequestBody SysRole role) - { + public AjaxResult changeStatus(@RequestBody SysRole role) { roleService.checkRoleAllowed(role); roleService.checkRoleDataScope(role.getRoleId()); role.setUpdateBy(getUsername()); @@ -174,8 +160,7 @@ public class SysRoleController extends BaseController @PreAuthorize("@ss.hasPermi('system:role:remove')") @Log(title = "角色管理", businessType = BusinessType.DELETE) @DeleteMapping("/{roleIds}") - public AjaxResult remove(@PathVariable Long[] roleIds) - { + public AjaxResult remove(@PathVariable Long[] roleIds) { return toAjax(roleService.deleteRoleByIds(roleIds)); } @@ -184,8 +169,7 @@ public class SysRoleController extends BaseController */ @PreAuthorize("@ss.hasPermi('system:role:query')") @GetMapping("/optionselect") - public AjaxResult optionselect() - { + public AjaxResult optionselect() { return success(roleService.selectRoleAll()); } @@ -194,8 +178,7 @@ public class SysRoleController extends BaseController */ @PreAuthorize("@ss.hasPermi('system:role:list')") @GetMapping("/authUser/allocatedList") - public TableDataInfo allocatedList(SysUser user) - { + public TableDataInfo allocatedList(SysUser user) { startPage(); List list = userService.selectAllocatedList(user); return getDataTable(list); @@ -206,8 +189,7 @@ public class SysRoleController extends BaseController */ @PreAuthorize("@ss.hasPermi('system:role:list')") @GetMapping("/authUser/unallocatedList") - public TableDataInfo unallocatedList(SysUser user) - { + public TableDataInfo unallocatedList(SysUser user) { startPage(); List list = userService.selectUnallocatedList(user); return getDataTable(list); @@ -219,8 +201,7 @@ public class SysRoleController extends BaseController @PreAuthorize("@ss.hasPermi('system:role:edit')") @Log(title = "角色管理", businessType = BusinessType.GRANT) @PutMapping("/authUser/cancel") - public AjaxResult cancelAuthUser(@RequestBody SysUserRole userRole) - { + public AjaxResult cancelAuthUser(@RequestBody SysUserRole userRole) { return toAjax(roleService.deleteAuthUser(userRole)); } @@ -230,8 +211,7 @@ public class SysRoleController extends BaseController @PreAuthorize("@ss.hasPermi('system:role:edit')") @Log(title = "角色管理", businessType = BusinessType.GRANT) @PutMapping("/authUser/cancelAll") - public AjaxResult cancelAuthUserAll(Long roleId, Long[] userIds) - { + public AjaxResult cancelAuthUserAll(Long roleId, Long[] userIds) { return toAjax(roleService.deleteAuthUsers(roleId, userIds)); } @@ -241,8 +221,7 @@ public class SysRoleController extends BaseController @PreAuthorize("@ss.hasPermi('system:role:edit')") @Log(title = "角色管理", businessType = BusinessType.GRANT) @PutMapping("/authUser/selectAll") - public AjaxResult selectAuthUserAll(Long roleId, Long[] userIds) - { + public AjaxResult selectAuthUserAll(Long roleId, Long[] userIds) { roleService.checkRoleDataScope(roleId); return toAjax(roleService.insertAuthUsers(roleId, userIds)); } @@ -252,11 +231,64 @@ public class SysRoleController extends BaseController */ @PreAuthorize("@ss.hasPermi('system:role:query')") @GetMapping(value = "/deptTree/{roleId}") - public AjaxResult deptTree(@PathVariable("roleId") Long roleId) - { + public AjaxResult deptTree(@PathVariable("roleId") Long roleId) { AjaxResult ajax = AjaxResult.success(); ajax.put("checkedKeys", deptService.selectDeptListByRoleId(roleId)); ajax.put("depts", deptService.selectDeptTreeList(new SysDept())); return ajax; } + + /** + * 查询已分配手机菜单角色列表 + */ + //@PreAuthorize("@ss.hasPermi('system:role:list')") + @GetMapping("/authApp/allocatedList") + public TableDataInfo allocatedAppList(SysMenuapp app) { + startPage(); + List list = sysMenuappService.selectAllocatedList(app); + return getDataTable(list); + } + + /** + * 查询未分配手机菜单角色列表 + */ + //@PreAuthorize("@ss.hasPermi('system:role:list')") + @GetMapping("/authApp/unallocatedList") + public TableDataInfo unallocatedAppList(SysMenuapp app) { + startPage(); + List list = sysMenuappService.selectUnallocatedList(app); + return getDataTable(list); + } + + /** + * 取消授权手机菜单 + */ + //@PreAuthorize("@ss.hasPermi('system:role:edit')") + @Log(title = "角色管理", businessType = BusinessType.GRANT) + @PutMapping("/authApp/cancel") + public AjaxResult cancelAuthApp(@RequestBody SysRoleMenuapp sysRoleMenuapp) { + return toAjax(roleMobileService.deleteAuthApp(sysRoleMenuapp)); + } + + /** + * 批量取消授权手机菜单 + */ + //@PreAuthorize("@ss.hasPermi('system:role:edit')") + @Log(title = "角色管理", businessType = BusinessType.GRANT) + @PutMapping("/authApp/cancelAll") + public AjaxResult cancelAuthAppAll(Long roleId, Long[] appIds) { + return toAjax(roleMobileService.deleteAuthApps(roleId, appIds)); + } + + /** + * 批量选择手机菜单授权 + */ + //@PreAuthorize("@ss.hasPermi('system:role:edit')") + @Log(title = "角色管理", businessType = BusinessType.GRANT) + @PutMapping("/authApp/selectAll") + public AjaxResult selectAuthAppAll(Long roleId, Long[] appIds) { + return toAjax(roleMobileService.insertAuthApps(roleId, appIds)); + } + + } diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/AjaxResult.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/AjaxResult.java index a7abfe4..7eb932e 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/AjaxResult.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/AjaxResult.java @@ -1,104 +1,107 @@ package com.ruoyi.common.core.domain; -import java.util.HashMap; -import java.util.Objects; import com.ruoyi.common.constant.HttpStatus; import com.ruoyi.common.utils.StringUtils; +import java.util.HashMap; +import java.util.Objects; + /** * 操作消息提醒 - * + * * @author ruoyi */ -public class AjaxResult extends HashMap -{ +public class AjaxResult extends HashMap { private static final long serialVersionUID = 1L; - /** 状态码 */ + /** + * 状态码 + */ public static final String CODE_TAG = "code"; - /** 返回内容 */ + /** + * 返回内容 + */ public static final String MSG_TAG = "msg"; - /** 数据对象 */ + /** + * 数据对象 + */ public static final String DATA_TAG = "data"; /** * 初始化一个新创建的 AjaxResult 对象,使其表示一个空消息。 */ - public AjaxResult() - { + public AjaxResult() { } /** * 初始化一个新创建的 AjaxResult 对象 - * + * * @param code 状态码 - * @param msg 返回内容 + * @param msg 返回内容 */ - public AjaxResult(int code, String msg) - { + public AjaxResult(int code, String msg) { super.put(CODE_TAG, code); super.put(MSG_TAG, msg); } /** * 初始化一个新创建的 AjaxResult 对象 - * + * * @param code 状态码 - * @param msg 返回内容 + * @param msg 返回内容 * @param data 数据对象 */ - public AjaxResult(int code, String msg, Object data) - { + public AjaxResult(int code, String msg, Object data) { super.put(CODE_TAG, code); super.put(MSG_TAG, msg); - if (StringUtils.isNotNull(data)) - { + if (StringUtils.isNotNull(data)) { super.put(DATA_TAG, data); } } + public AjaxResult set(String name, Object val) { + put(name, val); + return this; + } + /** * 返回成功消息 - * + * * @return 成功消息 */ - public static AjaxResult success() - { + public static AjaxResult success() { return AjaxResult.success("操作成功"); } /** * 返回成功数据 - * + * * @return 成功消息 */ - public static AjaxResult success(Object data) - { + public static AjaxResult success(Object data) { return AjaxResult.success("操作成功", data); } /** * 返回成功消息 - * + * * @param msg 返回内容 * @return 成功消息 */ - public static AjaxResult success(String msg) - { + public static AjaxResult success(String msg) { return AjaxResult.success(msg, null); } /** * 返回成功消息 - * - * @param msg 返回内容 + * + * @param msg 返回内容 * @param data 数据对象 * @return 成功消息 */ - public static AjaxResult success(String msg, Object data) - { + public static AjaxResult success(String msg, Object data) { return new AjaxResult(HttpStatus.SUCCESS, msg, data); } @@ -108,65 +111,59 @@ public class AjaxResult extends HashMap * @param msg 返回内容 * @return 警告消息 */ - public static AjaxResult warn(String msg) - { + public static AjaxResult warn(String msg) { return AjaxResult.warn(msg, null); } /** * 返回警告消息 * - * @param msg 返回内容 + * @param msg 返回内容 * @param data 数据对象 * @return 警告消息 */ - public static AjaxResult warn(String msg, Object data) - { + public static AjaxResult warn(String msg, Object data) { return new AjaxResult(HttpStatus.WARN, msg, data); } /** * 返回错误消息 - * + * * @return 错误消息 */ - public static AjaxResult error() - { + public static AjaxResult error() { return AjaxResult.error("操作失败"); } /** * 返回错误消息 - * + * * @param msg 返回内容 * @return 错误消息 */ - public static AjaxResult error(String msg) - { + public static AjaxResult error(String msg) { return AjaxResult.error(msg, null); } /** * 返回错误消息 - * - * @param msg 返回内容 + * + * @param msg 返回内容 * @param data 数据对象 * @return 错误消息 */ - public static AjaxResult error(String msg, Object data) - { + public static AjaxResult error(String msg, Object data) { return new AjaxResult(HttpStatus.ERROR, msg, data); } /** * 返回错误消息 - * + * * @param code 状态码 - * @param msg 返回内容 + * @param msg 返回内容 * @return 错误消息 */ - public static AjaxResult error(int code, String msg) - { + public static AjaxResult error(int code, String msg) { return new AjaxResult(code, msg, null); } @@ -175,8 +172,7 @@ public class AjaxResult extends HashMap * * @return 结果 */ - public boolean isSuccess() - { + public boolean isSuccess() { return Objects.equals(HttpStatus.SUCCESS, this.get(CODE_TAG)); } @@ -185,8 +181,7 @@ public class AjaxResult extends HashMap * * @return 结果 */ - public boolean isWarn() - { + public boolean isWarn() { return Objects.equals(HttpStatus.WARN, this.get(CODE_TAG)); } @@ -195,21 +190,19 @@ public class AjaxResult extends HashMap * * @return 结果 */ - public boolean isError() - { + public boolean isError() { return Objects.equals(HttpStatus.ERROR, this.get(CODE_TAG)); } /** * 方便链式调用 * - * @param key 键 + * @param key 键 * @param value 值 * @return 数据对象 */ @Override - public AjaxResult put(String key, Object value) - { + public AjaxResult put(String key, Object value) { super.put(key, value); return this; } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysMenuapp.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysMenuapp.java index 5b218f9..40003cf 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysMenuapp.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysMenuapp.java @@ -1,9 +1,11 @@ package com.ruoyi.system.domain; -import org.apache.commons.lang3.builder.ToStringBuilder; -import org.apache.commons.lang3.builder.ToStringStyle; import com.ruoyi.common.annotation.Excel; import com.ruoyi.common.core.domain.BaseEntity; +import lombok.Data; +import lombok.experimental.Accessors; + +import java.util.List; /** * 手机菜单对象 sys_menuapp @@ -11,6 +13,8 @@ import com.ruoyi.common.core.domain.BaseEntity; * @author rongxin * @date 2025-09-02 */ +@Data +@Accessors(chain = true) public class SysMenuapp extends BaseEntity { private static final long serialVersionUID = 1L; @@ -42,91 +46,13 @@ public class SysMenuapp extends BaseEntity @Excel(name = "菜单状态", dictType = "sys_normal_disable") private String menuStatus; - public void setId(Long id) - { - this.id = id; - } - - public Long getId() - { - return id; - } - - public void setModelType(String modelType) - { - this.modelType = modelType; - } - - public String getModelType() - { - return modelType; - } - - public void setMenuName(String menuName) - { - this.menuName = menuName; - } - - public String getMenuName() - { - return menuName; - } - - public void setMenuUrl(String menuUrl) - { - this.menuUrl = menuUrl; - } - - public String getMenuUrl() - { - return menuUrl; - } - - public void setMenuIcon(String menuIcon) - { - this.menuIcon = menuIcon; - } - - public String getMenuIcon() - { - return menuIcon; - } - - public void setMenuNum(Integer menuNum) - { - this.menuNum = menuNum; - } - - public Integer getMenuNum() - { - return menuNum; - } - - public void setMenuStatus(String menuStatus) - { - this.menuStatus = menuStatus; - } - - public String getMenuStatus() - { - return menuStatus; - } - - @Override - public String toString() { - return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) - .append("id", getId()) - .append("modelType", getModelType()) - .append("menuName", getMenuName()) - .append("menuUrl", getMenuUrl()) - .append("menuIcon", getMenuIcon()) - .append("menuNum", getMenuNum()) - .append("menuStatus", getMenuStatus()) - .append("remark", getRemark()) - .append("createBy", getCreateBy()) - .append("createTime", getCreateTime()) - .append("updateBy", getUpdateBy()) - .append("updateTime", getUpdateTime()) - .toString(); - } + + + /** 菜单分组列表 */ + private List menus; + + /** 角色ID */ + private Long roleId; + + } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysRoleMenuapp.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysRoleMenuapp.java new file mode 100644 index 0000000..d4e5629 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysRoleMenuapp.java @@ -0,0 +1,25 @@ +package com.ruoyi.system.domain; + +import com.ruoyi.common.core.domain.BaseEntity; +import lombok.Data; +import lombok.experimental.Accessors; + +/** + * 角色和手机菜单关联对象 sys_role_menuapp + * + * @author rongxin + * @date 2025-09-02 + */ +@Data +@Accessors(chain = true) +public class SysRoleMenuapp extends BaseEntity { + + + /** 角色ID */ + private Long roleId; + + /** 菜单ID */ + private Long appId; + + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysMenuappMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysMenuappMapper.java index adf1513..633ea54 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysMenuappMapper.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysMenuappMapper.java @@ -1,6 +1,7 @@ package com.ruoyi.system.mapper; import com.ruoyi.system.domain.SysMenuapp; +import org.apache.ibatis.annotations.Param; import java.util.List; @@ -28,6 +29,10 @@ public interface SysMenuappMapper */ public List selectSysMenuappList(SysMenuapp sysMenuapp); + public List selectAllocatedList(SysMenuapp sysMenuapp); + + public List selectUnallocatedList(SysMenuapp sysMenuapp); + /** * 新增手机菜单 * @@ -75,4 +80,6 @@ public interface SysMenuappMapper * @return 结果 */ public int deleteSysMenuappByIds(Long[] ids); + + public List selectSysMobileListByUserId(@Param("userId") Long userId, @Param("query") SysMenuapp query); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRoleMenuappMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRoleMenuappMapper.java new file mode 100644 index 0000000..4cc8e12 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRoleMenuappMapper.java @@ -0,0 +1,84 @@ +package com.ruoyi.system.mapper; + +import com.ruoyi.system.domain.SysRoleMenuapp; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 角色和手机菜单关联Mapper接口 + * + * @author rongxin + * @date 2025-09-02 + */ +public interface SysRoleMenuappMapper +{ + /** + * 查询角色和手机菜单关联 + * + * @param roleId 角色和手机菜单关联主键 + * @return 角色和手机菜单关联 + */ + public SysRoleMenuapp selectSysRoleMenuappByRoleId(Long roleId); + + /** + * 查询角色和手机菜单关联列表 + * + * @param sysRoleMenuapp 角色和手机菜单关联 + * @return 角色和手机菜单关联集合 + */ + public List selectSysRoleMenuappList(SysRoleMenuapp sysRoleMenuapp); + + /** + * 新增角色和手机菜单关联 + * + * @param sysRoleMenuapp 角色和手机菜单关联 + * @return 结果 + */ + public int insertSysRoleMenuapp(SysRoleMenuapp sysRoleMenuapp); + + /** + * 批量新增角色和手机菜单关联 + * + * @param list 角色和手机菜单关联 + * @return 结果 + */ + public int insertSysRoleMenuappBatch(List list); + + /** + * 修改角色和手机菜单关联 + * + * @param sysRoleMenuapp 角色和手机菜单关联 + * @return 结果 + */ + public int updateSysRoleMenuapp(SysRoleMenuapp sysRoleMenuapp); + + /** + * 批量修改 角色和手机菜单关联 + * + * @param list 角色和手机菜单关联 + * @return 结果 + */ + public int updateSysRoleMenuappBatch(List list); + + /** + * 删除角色和手机菜单关联 + * + * @param roleId 角色和手机菜单关联主键 + * @return 结果 + */ + public int deleteSysRoleMenuappByRoleId(Long roleId); + + /** + * 批量删除角色和手机菜单关联 + * + * @param roleIds 需要删除的数据主键集合 + * @return 结果 + */ + public int deleteSysRoleMenuappByRoleIds(Long[] roleIds); + + public int deleteAuthApp(SysRoleMenuapp sysRoleMenuapp); + + public int deleteAuthApps(@Param("roleId") Long roleId, @Param("appIds") Long[] appIds); + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysMenuappService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysMenuappService.java index 94d7de3..6959ecb 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysMenuappService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysMenuappService.java @@ -28,6 +28,10 @@ public interface ISysMenuappService */ public List selectSysMenuappList(SysMenuapp sysMenuapp); + public List selectAllocatedList(SysMenuapp sysMenuapp); + + public List selectUnallocatedList(SysMenuapp sysMenuapp); + /** * 导入手机菜单数据 * @@ -85,4 +89,6 @@ public interface ISysMenuappService * @return 结果 */ public int deleteSysMenuappById(Long id); + + public List selectSysMobileListByUserId(Long userId, SysMenuapp query); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysRoleMenuappService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysRoleMenuappService.java new file mode 100644 index 0000000..c857389 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysRoleMenuappService.java @@ -0,0 +1,87 @@ +package com.ruoyi.system.service; + +import com.ruoyi.system.domain.SysRoleMenuapp; + +import java.util.List; + +/** + * 角色和手机菜单关联Service接口 + * + * @author rongxin + * @date 2025-09-02 + */ +public interface ISysRoleMenuappService +{ + /** + * 查询角色和手机菜单关联 + * + * @param roleId 角色和手机菜单关联主键 + * @return 角色和手机菜单关联 + */ + public SysRoleMenuapp selectSysRoleMenuappByRoleId(Long roleId); + + /** + * 查询角色和手机菜单关联列表 + * + * @param sysRoleMenuapp 角色和手机菜单关联 + * @return 角色和手机菜单关联集合 + */ + public List selectSysRoleMenuappList(SysRoleMenuapp sysRoleMenuapp); + + + /** + * 新增角色和手机菜单关联 + * + * @param sysRoleMenuapp 角色和手机菜单关联 + * @return 结果 + */ + public int insertSysRoleMenuapp(SysRoleMenuapp sysRoleMenuapp); + + /** + * 批量新增角色和手机菜单关联 + * + * @param list 角色和手机菜单关联 + * @return 结果 + */ + public int insertSysRoleMenuappBatch(List list); + + /** + * 修改角色和手机菜单关联 + * + * @param sysRoleMenuapp 角色和手机菜单关联 + * @return 结果 + */ + public int updateSysRoleMenuapp(SysRoleMenuapp sysRoleMenuapp); + + /** + * 批量修改 角色和手机菜单关联 + * + * @param list 角色和手机菜单关联 + * @return 结果 + */ + public int updateSysRoleMenuappBatch(List list); + + /** + * 批量删除角色和手机菜单关联 + * + * @param roleIds 需要删除的角色和手机菜单关联主键集合 + * @return 结果 + */ + public int deleteSysRoleMenuappByRoleIds(Long[] roleIds); + + /** + * 删除角色和手机菜单关联信息 + * + * @param roleId 角色和手机菜单关联主键 + * @return 结果 + */ + public int deleteSysRoleMenuappByRoleId(Long roleId); + + public int setupRoleMobiles(Long roleId, List mobileIds); + + public int deleteAuthApp(SysRoleMenuapp sysRoleMenuapp); + + public int deleteAuthApps(Long roleId, Long[] appIds); + + public int insertAuthApps(Long roleId, Long[] appIds); +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysMenuappServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysMenuappServiceImpl.java index 5bc4819..ef56c40 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysMenuappServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysMenuappServiceImpl.java @@ -51,6 +51,16 @@ public class SysMenuappServiceImpl implements ISysMenuappService return sysMenuappMapper.selectSysMenuappList(sysMenuapp); } + @Override + public List selectAllocatedList(SysMenuapp sysMenuapp) { + return sysMenuappMapper.selectAllocatedList(sysMenuapp); + } + + @Override + public List selectUnallocatedList(SysMenuapp sysMenuapp) { + return sysMenuappMapper.selectUnallocatedList(sysMenuapp); + } + /** * 导入手机菜单数据 * @@ -194,4 +204,9 @@ public class SysMenuappServiceImpl implements ISysMenuappService { return sysMenuappMapper.deleteSysMenuappById(id); } + + @Override + public List selectSysMobileListByUserId(Long userId, SysMenuapp query) { + return sysMenuappMapper.selectSysMobileListByUserId(userId, query); + } } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysRoleMenuappServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysRoleMenuappServiceImpl.java new file mode 100644 index 0000000..faa271f --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysRoleMenuappServiceImpl.java @@ -0,0 +1,164 @@ +package com.ruoyi.system.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.collection.ListUtil; +import com.ruoyi.system.domain.SysRoleMenuapp; +import com.ruoyi.system.mapper.SysRoleMenuappMapper; +import com.ruoyi.system.service.ISysRoleMenuappService; +import org.apache.commons.collections4.ListUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + +/** + * 角色和手机菜单关联Service业务层处理 + * + * @author rongxin + * @date 2025-09-02 + */ +@Service +public class SysRoleMenuappServiceImpl implements ISysRoleMenuappService { + @Autowired + private SysRoleMenuappMapper sysRoleMenuappMapper; + + /** + * 查询角色和手机菜单关联 + * + * @param roleId 角色和手机菜单关联主键 + * @return 角色和手机菜单关联 + */ + @Override + public SysRoleMenuapp selectSysRoleMenuappByRoleId(Long roleId) { + return sysRoleMenuappMapper.selectSysRoleMenuappByRoleId(roleId); + } + + /** + * 查询角色和手机菜单关联列表 + * + * @param sysRoleMenuapp 角色和手机菜单关联 + * @return 角色和手机菜单关联 + */ + @Override + public List selectSysRoleMenuappList(SysRoleMenuapp sysRoleMenuapp) { + return sysRoleMenuappMapper.selectSysRoleMenuappList(sysRoleMenuapp); + } + + + /** + * 新增角色和手机菜单关联 + * + * @param sysRoleMenuapp 角色和手机菜单关联 + * @return 结果 + */ + @Override + public int insertSysRoleMenuapp(SysRoleMenuapp sysRoleMenuapp) { + return sysRoleMenuappMapper.insertSysRoleMenuapp(sysRoleMenuapp); + } + + /** + * 批量新增角色和手机菜单关联 + * + * @param list 角色和手机菜单关联 + * @return 结果 + */ + @Override + @Transactional + public int insertSysRoleMenuappBatch(List list) { + List> splists = ListUtils.partition(list, 50); + splists.forEach(splist -> { + sysRoleMenuappMapper.insertSysRoleMenuappBatch(splist); + }); + return 1; + } + + /** + * 修改角色和手机菜单关联 + * + * @param sysRoleMenuapp 角色和手机菜单关联 + * @return 结果 + */ + @Override + public int updateSysRoleMenuapp(SysRoleMenuapp sysRoleMenuapp) { + return sysRoleMenuappMapper.updateSysRoleMenuapp(sysRoleMenuapp); + } + + /** + * 批量修改 角色和手机菜单关联 + * + * @param list 角色和手机菜单关联 + * @return 结果 + */ + @Override + @Transactional + public int updateSysRoleMenuappBatch(List list) { + List> splists = ListUtils.partition(list, 30); + splists.forEach(splist -> { + sysRoleMenuappMapper.updateSysRoleMenuappBatch(splist); + }); + return 1; + } + + /** + * 批量删除角色和手机菜单关联 + * + * @param roleIds 需要删除的角色和手机菜单关联主键 + * @return 结果 + */ + @Override + public int deleteSysRoleMenuappByRoleIds(Long[] roleIds) { + return sysRoleMenuappMapper.deleteSysRoleMenuappByRoleIds(roleIds); + } + + /** + * 删除角色和手机菜单关联信息 + * + * @param roleId 角色和手机菜单关联主键 + * @return 结果 + */ + @Override + public int deleteSysRoleMenuappByRoleId(Long roleId) { + return sysRoleMenuappMapper.deleteSysRoleMenuappByRoleId(roleId); + } + + + @Override + @Transactional(rollbackFor = Exception.class) + public int setupRoleMobiles(Long roleId, List mobileIds) { + + sysRoleMenuappMapper.deleteSysRoleMenuappByRoleId(roleId); + if (CollectionUtil.isNotEmpty(mobileIds)) { + List roles = mobileIds.stream().map((x) -> new SysRoleMenuapp().setRoleId(roleId).setAppId(x)).collect(Collectors.toList()); + ListUtil.split(roles, 50).forEach(sysRoleMenuappMapper::insertSysRoleMenuappBatch); + } + return 1; + } + + @Override + public int deleteAuthApp(SysRoleMenuapp sysRoleMenuapp) { + return sysRoleMenuappMapper.deleteAuthApp(sysRoleMenuapp); + } + + @Override + public int deleteAuthApps(Long roleId, Long[] appIds) { + return sysRoleMenuappMapper.deleteAuthApps(roleId, appIds); + } + + @Override + public int insertAuthApps(Long roleId, Long[] appIds) + { + // 新增用户与角色管理 + List list = new ArrayList(); + for (Long appId : appIds) + { + SysRoleMenuapp ur = new SysRoleMenuapp(); + ur.setAppId(appId); + ur.setRoleId(roleId); + list.add(ur); + } + return sysRoleMenuappMapper.insertSysRoleMenuappBatch(list); + } +} diff --git a/ruoyi-system/src/main/resources/mapper/system/SysMenuappMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysMenuappMapper.xml index acf3dc3..2be7acf 100644 --- a/ruoyi-system/src/main/resources/mapper/system/SysMenuappMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/system/SysMenuappMapper.xml @@ -149,4 +149,40 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{id} + + + + + + + + diff --git a/ruoyi-system/src/main/resources/mapper/system/SysRoleMenuappMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysRoleMenuappMapper.xml new file mode 100644 index 0000000..a525256 --- /dev/null +++ b/ruoyi-system/src/main/resources/mapper/system/SysRoleMenuappMapper.xml @@ -0,0 +1,98 @@ + + + + + + + + + + + select role_id, app_id from sys_role_menuapp + + + + + + + + insert into sys_role_menuapp + + role_id, + app_id, + + + #{roleId}, + #{appId}, + + + + + insert into sys_role_menuapp + + role_id, + app_id, + + values + + + #{item.roleId}, + #{item.appId}, + + + + + + update sys_role_menuapp + + app_id = #{appId}, + + where role_id = #{roleId} + + + + + + update sys_role_menuapp + + app_id = #{item.appId}, + + where role_id = #{item.roleId} + + + + + delete from sys_role_menuapp where role_id = #{roleId} + + + + delete from sys_role_menuapp where role_id in + + #{roleId} + + + + + delete from sys_role_menuapp where app_id = #{appId} and role_id = #{roleId} + + + + delete from sys_role_menuapp where role_id = #{roleId} and app_id in + + #{appId} + + + + +