| @@ -3,10 +3,16 @@ package com.ruoyi.web.controller.system; | |||||
| import com.ruoyi.common.annotation.Log; | import com.ruoyi.common.annotation.Log; | ||||
| import com.ruoyi.common.core.controller.BaseController; | import com.ruoyi.common.core.controller.BaseController; | ||||
| import com.ruoyi.common.core.domain.AjaxResult; | 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.core.page.TableDataInfo; | ||||
| import com.ruoyi.common.enums.BusinessType; | 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.poi.ExcelUtil; | ||||
| import com.ruoyi.common.utils.translation.TranslateUtils; | import com.ruoyi.common.utils.translation.TranslateUtils; | ||||
| import com.ruoyi.framework.web.service.TokenService; | |||||
| import com.ruoyi.system.domain.SysMenuapp; | import com.ruoyi.system.domain.SysMenuapp; | ||||
| import com.ruoyi.system.service.ISysMenuappService; | import com.ruoyi.system.service.ISysMenuappService; | ||||
| import org.springframework.beans.factory.annotation.Autowired; | import org.springframework.beans.factory.annotation.Autowired; | ||||
| @@ -15,7 +21,11 @@ import org.springframework.web.bind.annotation.*; | |||||
| import org.springframework.web.multipart.MultipartFile; | import org.springframework.web.multipart.MultipartFile; | ||||
| import javax.servlet.http.HttpServletResponse; | import javax.servlet.http.HttpServletResponse; | ||||
| import java.util.ArrayList; | |||||
| import java.util.Comparator; | |||||
| import java.util.List; | import java.util.List; | ||||
| import java.util.Map; | |||||
| import java.util.stream.Collectors; | |||||
| /** | /** | ||||
| * 手机菜单Controller | * 手机菜单Controller | ||||
| @@ -25,18 +35,20 @@ import java.util.List; | |||||
| */ | */ | ||||
| @RestController | @RestController | ||||
| @RequestMapping("/system/menuapp") | @RequestMapping("/system/menuapp") | ||||
| public class SysMenuappController extends BaseController | |||||
| { | |||||
| public class SysMenuappController extends BaseController { | |||||
| @Autowired | @Autowired | ||||
| private ISysMenuappService sysMenuappService; | private ISysMenuappService sysMenuappService; | ||||
| @Autowired | |||||
| private TokenService tokenService; | |||||
| /** | /** | ||||
| * 查询手机菜单列表 | * 查询手机菜单列表 | ||||
| */ | */ | ||||
| @PreAuthorize("@ss.hasPermi('system:menuapp:list')") | @PreAuthorize("@ss.hasPermi('system:menuapp:list')") | ||||
| @GetMapping("/list") | @GetMapping("/list") | ||||
| public TableDataInfo list(SysMenuapp sysMenuapp) | |||||
| { | |||||
| public TableDataInfo list(SysMenuapp sysMenuapp) { | |||||
| startPage(); | startPage(); | ||||
| List<SysMenuapp> list = sysMenuappService.selectSysMenuappList(sysMenuapp); | List<SysMenuapp> list = sysMenuappService.selectSysMenuappList(sysMenuapp); | ||||
| return getDataTable(list); | return getDataTable(list); | ||||
| @@ -49,8 +61,7 @@ public class SysMenuappController extends BaseController | |||||
| @PreAuthorize("@ss.hasPermi('system:menuapp:export')") | @PreAuthorize("@ss.hasPermi('system:menuapp:export')") | ||||
| @Log(title = "手机菜单", businessType = BusinessType.EXPORT) | @Log(title = "手机菜单", businessType = BusinessType.EXPORT) | ||||
| @PostMapping("/export") | @PostMapping("/export") | ||||
| public void export(HttpServletResponse response, SysMenuapp sysMenuapp) | |||||
| { | |||||
| public void export(HttpServletResponse response, SysMenuapp sysMenuapp) { | |||||
| List<SysMenuapp> list = sysMenuappService.selectSysMenuappList(sysMenuapp); | List<SysMenuapp> list = sysMenuappService.selectSysMenuappList(sysMenuapp); | ||||
| ExcelUtil<SysMenuapp> util = new ExcelUtil<SysMenuapp>(SysMenuapp.class); | ExcelUtil<SysMenuapp> util = new ExcelUtil<SysMenuapp>(SysMenuapp.class); | ||||
| util.exportExcel(response, list, "手机菜单数据"); | util.exportExcel(response, list, "手机菜单数据"); | ||||
| @@ -83,8 +94,7 @@ public class SysMenuappController extends BaseController | |||||
| */ | */ | ||||
| @PreAuthorize("@ss.hasPermi('system:menuapp:query')") | @PreAuthorize("@ss.hasPermi('system:menuapp:query')") | ||||
| @GetMapping(value = "/{id}") | @GetMapping(value = "/{id}") | ||||
| public AjaxResult getInfo(@PathVariable("id") Long id) | |||||
| { | |||||
| public AjaxResult getInfo(@PathVariable("id") Long id) { | |||||
| SysMenuapp detail = sysMenuappService.selectSysMenuappById(id); | SysMenuapp detail = sysMenuappService.selectSysMenuappById(id); | ||||
| TranslateUtils.translate(detail, false); | TranslateUtils.translate(detail, false); | ||||
| return success(detail); | return success(detail); | ||||
| @@ -96,8 +106,7 @@ public class SysMenuappController extends BaseController | |||||
| @PreAuthorize("@ss.hasPermi('system:menuapp:add')") | @PreAuthorize("@ss.hasPermi('system:menuapp:add')") | ||||
| @Log(title = "手机菜单", businessType = BusinessType.INSERT) | @Log(title = "手机菜单", businessType = BusinessType.INSERT) | ||||
| @PostMapping | @PostMapping | ||||
| public AjaxResult add(@RequestBody SysMenuapp sysMenuapp) | |||||
| { | |||||
| public AjaxResult add(@RequestBody SysMenuapp sysMenuapp) { | |||||
| return toAjax(sysMenuappService.insertSysMenuapp(sysMenuapp)); | return toAjax(sysMenuappService.insertSysMenuapp(sysMenuapp)); | ||||
| } | } | ||||
| @@ -107,8 +116,7 @@ public class SysMenuappController extends BaseController | |||||
| @PreAuthorize("@ss.hasPermi('system:menuapp:edit')") | @PreAuthorize("@ss.hasPermi('system:menuapp:edit')") | ||||
| @Log(title = "手机菜单", businessType = BusinessType.UPDATE) | @Log(title = "手机菜单", businessType = BusinessType.UPDATE) | ||||
| @PutMapping | @PutMapping | ||||
| public AjaxResult edit(@RequestBody SysMenuapp sysMenuapp) | |||||
| { | |||||
| public AjaxResult edit(@RequestBody SysMenuapp sysMenuapp) { | |||||
| return toAjax(sysMenuappService.updateSysMenuapp(sysMenuapp)); | return toAjax(sysMenuappService.updateSysMenuapp(sysMenuapp)); | ||||
| } | } | ||||
| @@ -117,11 +125,43 @@ public class SysMenuappController extends BaseController | |||||
| */ | */ | ||||
| @PreAuthorize("@ss.hasPermi('system:menuapp:remove')") | @PreAuthorize("@ss.hasPermi('system:menuapp:remove')") | ||||
| @Log(title = "手机菜单", businessType = BusinessType.DELETE) | @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)); | 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<SysMenuapp> list = sysMenuappService.selectSysMobileListByUserId(user.getUserId(), mp); | |||||
| return respMenus(list); | |||||
| } | |||||
| private AjaxResult respMenus(List<SysMenuapp> list) { | |||||
| int size = list.size(); | |||||
| List<SysDictData> modle_name = DictUtils.getDictCache("modle_type"); | |||||
| Map<String, Long> modleNameOrderMap = modle_name.stream().collect(Collectors.toMap(SysDictData::getDictValue, SysDictData::getDictSort)); | |||||
| Map<String, List<SysMenuapp>> groups = list.stream() | |||||
| .sorted(Comparator.comparing((x) -> modleNameOrderMap.get(((SysMenuapp) x).getModelType())) | |||||
| .thenComparing((x) -> ((SysMenuapp) x).getMenuNum())) | |||||
| .collect(Collectors.groupingBy(SysMenuapp::getModelType)); | |||||
| List<SysMenuapp> res = new ArrayList<>(); | |||||
| modle_name.forEach((x) -> { | |||||
| if(!groups.containsKey(x.getDictValue())) | |||||
| return; | |||||
| List<SysMenuapp> 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); | |||||
| } | |||||
| } | } | ||||
| @@ -1,18 +1,5 @@ | |||||
| package com.ruoyi.web.controller.system; | 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.annotation.Log; | ||||
| import com.ruoyi.common.core.controller.BaseController; | import com.ruoyi.common.core.controller.BaseController; | ||||
| import com.ruoyi.common.core.domain.AjaxResult; | 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.common.utils.poi.ExcelUtil; | ||||
| import com.ruoyi.framework.web.service.SysPermissionService; | import com.ruoyi.framework.web.service.SysPermissionService; | ||||
| import com.ruoyi.framework.web.service.TokenService; | 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.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 | * @author ruoyi | ||||
| */ | */ | ||||
| @RestController | @RestController | ||||
| @RequestMapping("/system/role") | @RequestMapping("/system/role") | ||||
| public class SysRoleController extends BaseController | |||||
| { | |||||
| public class SysRoleController extends BaseController { | |||||
| @Autowired | @Autowired | ||||
| private ISysRoleService roleService; | private ISysRoleService roleService; | ||||
| @@ -55,10 +48,17 @@ public class SysRoleController extends BaseController | |||||
| @Autowired | @Autowired | ||||
| private ISysDeptService deptService; | private ISysDeptService deptService; | ||||
| @Autowired | |||||
| private ISysRoleMenuappService roleMobileService; | |||||
| @Autowired | |||||
| private ISysMenuappService sysMenuappService; | |||||
| @PreAuthorize("@ss.hasPermi('system:role:list')") | @PreAuthorize("@ss.hasPermi('system:role:list')") | ||||
| @GetMapping("/list") | @GetMapping("/list") | ||||
| public TableDataInfo list(SysRole role) | |||||
| { | |||||
| public TableDataInfo list(SysRole role) { | |||||
| startPage(); | startPage(); | ||||
| List<SysRole> list = roleService.selectRoleList(role); | List<SysRole> list = roleService.selectRoleList(role); | ||||
| return getDataTable(list); | return getDataTable(list); | ||||
| @@ -67,8 +67,7 @@ public class SysRoleController extends BaseController | |||||
| @Log(title = "角色管理", businessType = BusinessType.EXPORT) | @Log(title = "角色管理", businessType = BusinessType.EXPORT) | ||||
| @PreAuthorize("@ss.hasPermi('system:role:export')") | @PreAuthorize("@ss.hasPermi('system:role:export')") | ||||
| @PostMapping("/export") | @PostMapping("/export") | ||||
| public void export(HttpServletResponse response, SysRole role) | |||||
| { | |||||
| public void export(HttpServletResponse response, SysRole role) { | |||||
| List<SysRole> list = roleService.selectRoleList(role); | List<SysRole> list = roleService.selectRoleList(role); | ||||
| ExcelUtil<SysRole> util = new ExcelUtil<SysRole>(SysRole.class); | ExcelUtil<SysRole> util = new ExcelUtil<SysRole>(SysRole.class); | ||||
| util.exportExcel(response, list, "角色数据"); | util.exportExcel(response, list, "角色数据"); | ||||
| @@ -79,8 +78,7 @@ public class SysRoleController extends BaseController | |||||
| */ | */ | ||||
| @PreAuthorize("@ss.hasPermi('system:role:query')") | @PreAuthorize("@ss.hasPermi('system:role:query')") | ||||
| @GetMapping(value = "/{roleId}") | @GetMapping(value = "/{roleId}") | ||||
| public AjaxResult getInfo(@PathVariable Long roleId) | |||||
| { | |||||
| public AjaxResult getInfo(@PathVariable Long roleId) { | |||||
| roleService.checkRoleDataScope(roleId); | roleService.checkRoleDataScope(roleId); | ||||
| return success(roleService.selectRoleById(roleId)); | return success(roleService.selectRoleById(roleId)); | ||||
| } | } | ||||
| @@ -91,14 +89,10 @@ public class SysRoleController extends BaseController | |||||
| @PreAuthorize("@ss.hasPermi('system:role:add')") | @PreAuthorize("@ss.hasPermi('system:role:add')") | ||||
| @Log(title = "角色管理", businessType = BusinessType.INSERT) | @Log(title = "角色管理", businessType = BusinessType.INSERT) | ||||
| @PostMapping | @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() + "'失败,角色名称已存在"); | return error("新增角色'" + role.getRoleName() + "'失败,角色名称已存在"); | ||||
| } | |||||
| else if (!roleService.checkRoleKeyUnique(role)) | |||||
| { | |||||
| } else if (!roleService.checkRoleKeyUnique(role)) { | |||||
| return error("新增角色'" + role.getRoleName() + "'失败,角色权限已存在"); | return error("新增角色'" + role.getRoleName() + "'失败,角色权限已存在"); | ||||
| } | } | ||||
| role.setCreateBy(getUsername()); | role.setCreateBy(getUsername()); | ||||
| @@ -112,26 +106,20 @@ public class SysRoleController extends BaseController | |||||
| @PreAuthorize("@ss.hasPermi('system:role:edit')") | @PreAuthorize("@ss.hasPermi('system:role:edit')") | ||||
| @Log(title = "角色管理", businessType = BusinessType.UPDATE) | @Log(title = "角色管理", businessType = BusinessType.UPDATE) | ||||
| @PutMapping | @PutMapping | ||||
| public AjaxResult edit(@Validated @RequestBody SysRole role) | |||||
| { | |||||
| public AjaxResult edit(@Validated @RequestBody SysRole role) { | |||||
| roleService.checkRoleAllowed(role); | roleService.checkRoleAllowed(role); | ||||
| roleService.checkRoleDataScope(role.getRoleId()); | roleService.checkRoleDataScope(role.getRoleId()); | ||||
| if (!roleService.checkRoleNameUnique(role)) | |||||
| { | |||||
| if (!roleService.checkRoleNameUnique(role)) { | |||||
| return error("修改角色'" + role.getRoleName() + "'失败,角色名称已存在"); | return error("修改角色'" + role.getRoleName() + "'失败,角色名称已存在"); | ||||
| } | |||||
| else if (!roleService.checkRoleKeyUnique(role)) | |||||
| { | |||||
| } else if (!roleService.checkRoleKeyUnique(role)) { | |||||
| return error("修改角色'" + role.getRoleName() + "'失败,角色权限已存在"); | return error("修改角色'" + role.getRoleName() + "'失败,角色权限已存在"); | ||||
| } | } | ||||
| role.setUpdateBy(getUsername()); | role.setUpdateBy(getUsername()); | ||||
| if (roleService.updateRole(role) > 0) | |||||
| { | |||||
| if (roleService.updateRole(role) > 0) { | |||||
| // 更新缓存用户权限 | // 更新缓存用户权限 | ||||
| LoginUser loginUser = getLoginUser(); | 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.setUser(userService.selectUserByUserName(loginUser.getUser().getUserName())); | ||||
| loginUser.setPermissions(permissionService.getMenuPermission(loginUser.getUser())); | loginUser.setPermissions(permissionService.getMenuPermission(loginUser.getUser())); | ||||
| tokenService.setLoginUser(loginUser); | tokenService.setLoginUser(loginUser); | ||||
| @@ -147,8 +135,7 @@ public class SysRoleController extends BaseController | |||||
| @PreAuthorize("@ss.hasPermi('system:role:edit')") | @PreAuthorize("@ss.hasPermi('system:role:edit')") | ||||
| @Log(title = "角色管理", businessType = BusinessType.UPDATE) | @Log(title = "角色管理", businessType = BusinessType.UPDATE) | ||||
| @PutMapping("/dataScope") | @PutMapping("/dataScope") | ||||
| public AjaxResult dataScope(@RequestBody SysRole role) | |||||
| { | |||||
| public AjaxResult dataScope(@RequestBody SysRole role) { | |||||
| roleService.checkRoleAllowed(role); | roleService.checkRoleAllowed(role); | ||||
| roleService.checkRoleDataScope(role.getRoleId()); | roleService.checkRoleDataScope(role.getRoleId()); | ||||
| return toAjax(roleService.authDataScope(role)); | return toAjax(roleService.authDataScope(role)); | ||||
| @@ -160,8 +147,7 @@ public class SysRoleController extends BaseController | |||||
| @PreAuthorize("@ss.hasPermi('system:role:edit')") | @PreAuthorize("@ss.hasPermi('system:role:edit')") | ||||
| @Log(title = "角色管理", businessType = BusinessType.UPDATE) | @Log(title = "角色管理", businessType = BusinessType.UPDATE) | ||||
| @PutMapping("/changeStatus") | @PutMapping("/changeStatus") | ||||
| public AjaxResult changeStatus(@RequestBody SysRole role) | |||||
| { | |||||
| public AjaxResult changeStatus(@RequestBody SysRole role) { | |||||
| roleService.checkRoleAllowed(role); | roleService.checkRoleAllowed(role); | ||||
| roleService.checkRoleDataScope(role.getRoleId()); | roleService.checkRoleDataScope(role.getRoleId()); | ||||
| role.setUpdateBy(getUsername()); | role.setUpdateBy(getUsername()); | ||||
| @@ -174,8 +160,7 @@ public class SysRoleController extends BaseController | |||||
| @PreAuthorize("@ss.hasPermi('system:role:remove')") | @PreAuthorize("@ss.hasPermi('system:role:remove')") | ||||
| @Log(title = "角色管理", businessType = BusinessType.DELETE) | @Log(title = "角色管理", businessType = BusinessType.DELETE) | ||||
| @DeleteMapping("/{roleIds}") | @DeleteMapping("/{roleIds}") | ||||
| public AjaxResult remove(@PathVariable Long[] roleIds) | |||||
| { | |||||
| public AjaxResult remove(@PathVariable Long[] roleIds) { | |||||
| return toAjax(roleService.deleteRoleByIds(roleIds)); | return toAjax(roleService.deleteRoleByIds(roleIds)); | ||||
| } | } | ||||
| @@ -184,8 +169,7 @@ public class SysRoleController extends BaseController | |||||
| */ | */ | ||||
| @PreAuthorize("@ss.hasPermi('system:role:query')") | @PreAuthorize("@ss.hasPermi('system:role:query')") | ||||
| @GetMapping("/optionselect") | @GetMapping("/optionselect") | ||||
| public AjaxResult optionselect() | |||||
| { | |||||
| public AjaxResult optionselect() { | |||||
| return success(roleService.selectRoleAll()); | return success(roleService.selectRoleAll()); | ||||
| } | } | ||||
| @@ -194,8 +178,7 @@ public class SysRoleController extends BaseController | |||||
| */ | */ | ||||
| @PreAuthorize("@ss.hasPermi('system:role:list')") | @PreAuthorize("@ss.hasPermi('system:role:list')") | ||||
| @GetMapping("/authUser/allocatedList") | @GetMapping("/authUser/allocatedList") | ||||
| public TableDataInfo allocatedList(SysUser user) | |||||
| { | |||||
| public TableDataInfo allocatedList(SysUser user) { | |||||
| startPage(); | startPage(); | ||||
| List<SysUser> list = userService.selectAllocatedList(user); | List<SysUser> list = userService.selectAllocatedList(user); | ||||
| return getDataTable(list); | return getDataTable(list); | ||||
| @@ -206,8 +189,7 @@ public class SysRoleController extends BaseController | |||||
| */ | */ | ||||
| @PreAuthorize("@ss.hasPermi('system:role:list')") | @PreAuthorize("@ss.hasPermi('system:role:list')") | ||||
| @GetMapping("/authUser/unallocatedList") | @GetMapping("/authUser/unallocatedList") | ||||
| public TableDataInfo unallocatedList(SysUser user) | |||||
| { | |||||
| public TableDataInfo unallocatedList(SysUser user) { | |||||
| startPage(); | startPage(); | ||||
| List<SysUser> list = userService.selectUnallocatedList(user); | List<SysUser> list = userService.selectUnallocatedList(user); | ||||
| return getDataTable(list); | return getDataTable(list); | ||||
| @@ -219,8 +201,7 @@ public class SysRoleController extends BaseController | |||||
| @PreAuthorize("@ss.hasPermi('system:role:edit')") | @PreAuthorize("@ss.hasPermi('system:role:edit')") | ||||
| @Log(title = "角色管理", businessType = BusinessType.GRANT) | @Log(title = "角色管理", businessType = BusinessType.GRANT) | ||||
| @PutMapping("/authUser/cancel") | @PutMapping("/authUser/cancel") | ||||
| public AjaxResult cancelAuthUser(@RequestBody SysUserRole userRole) | |||||
| { | |||||
| public AjaxResult cancelAuthUser(@RequestBody SysUserRole userRole) { | |||||
| return toAjax(roleService.deleteAuthUser(userRole)); | return toAjax(roleService.deleteAuthUser(userRole)); | ||||
| } | } | ||||
| @@ -230,8 +211,7 @@ public class SysRoleController extends BaseController | |||||
| @PreAuthorize("@ss.hasPermi('system:role:edit')") | @PreAuthorize("@ss.hasPermi('system:role:edit')") | ||||
| @Log(title = "角色管理", businessType = BusinessType.GRANT) | @Log(title = "角色管理", businessType = BusinessType.GRANT) | ||||
| @PutMapping("/authUser/cancelAll") | @PutMapping("/authUser/cancelAll") | ||||
| public AjaxResult cancelAuthUserAll(Long roleId, Long[] userIds) | |||||
| { | |||||
| public AjaxResult cancelAuthUserAll(Long roleId, Long[] userIds) { | |||||
| return toAjax(roleService.deleteAuthUsers(roleId, userIds)); | return toAjax(roleService.deleteAuthUsers(roleId, userIds)); | ||||
| } | } | ||||
| @@ -241,8 +221,7 @@ public class SysRoleController extends BaseController | |||||
| @PreAuthorize("@ss.hasPermi('system:role:edit')") | @PreAuthorize("@ss.hasPermi('system:role:edit')") | ||||
| @Log(title = "角色管理", businessType = BusinessType.GRANT) | @Log(title = "角色管理", businessType = BusinessType.GRANT) | ||||
| @PutMapping("/authUser/selectAll") | @PutMapping("/authUser/selectAll") | ||||
| public AjaxResult selectAuthUserAll(Long roleId, Long[] userIds) | |||||
| { | |||||
| public AjaxResult selectAuthUserAll(Long roleId, Long[] userIds) { | |||||
| roleService.checkRoleDataScope(roleId); | roleService.checkRoleDataScope(roleId); | ||||
| return toAjax(roleService.insertAuthUsers(roleId, userIds)); | return toAjax(roleService.insertAuthUsers(roleId, userIds)); | ||||
| } | } | ||||
| @@ -252,11 +231,64 @@ public class SysRoleController extends BaseController | |||||
| */ | */ | ||||
| @PreAuthorize("@ss.hasPermi('system:role:query')") | @PreAuthorize("@ss.hasPermi('system:role:query')") | ||||
| @GetMapping(value = "/deptTree/{roleId}") | @GetMapping(value = "/deptTree/{roleId}") | ||||
| public AjaxResult deptTree(@PathVariable("roleId") Long roleId) | |||||
| { | |||||
| public AjaxResult deptTree(@PathVariable("roleId") Long roleId) { | |||||
| AjaxResult ajax = AjaxResult.success(); | AjaxResult ajax = AjaxResult.success(); | ||||
| ajax.put("checkedKeys", deptService.selectDeptListByRoleId(roleId)); | ajax.put("checkedKeys", deptService.selectDeptListByRoleId(roleId)); | ||||
| ajax.put("depts", deptService.selectDeptTreeList(new SysDept())); | ajax.put("depts", deptService.selectDeptTreeList(new SysDept())); | ||||
| return ajax; | return ajax; | ||||
| } | } | ||||
| /** | |||||
| * 查询已分配手机菜单角色列表 | |||||
| */ | |||||
| //@PreAuthorize("@ss.hasPermi('system:role:list')") | |||||
| @GetMapping("/authApp/allocatedList") | |||||
| public TableDataInfo allocatedAppList(SysMenuapp app) { | |||||
| startPage(); | |||||
| List<SysMenuapp> list = sysMenuappService.selectAllocatedList(app); | |||||
| return getDataTable(list); | |||||
| } | |||||
| /** | |||||
| * 查询未分配手机菜单角色列表 | |||||
| */ | |||||
| //@PreAuthorize("@ss.hasPermi('system:role:list')") | |||||
| @GetMapping("/authApp/unallocatedList") | |||||
| public TableDataInfo unallocatedAppList(SysMenuapp app) { | |||||
| startPage(); | |||||
| List<SysMenuapp> 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)); | |||||
| } | |||||
| } | } | ||||
| @@ -1,104 +1,107 @@ | |||||
| package com.ruoyi.common.core.domain; | package com.ruoyi.common.core.domain; | ||||
| import java.util.HashMap; | |||||
| import java.util.Objects; | |||||
| import com.ruoyi.common.constant.HttpStatus; | import com.ruoyi.common.constant.HttpStatus; | ||||
| import com.ruoyi.common.utils.StringUtils; | import com.ruoyi.common.utils.StringUtils; | ||||
| import java.util.HashMap; | |||||
| import java.util.Objects; | |||||
| /** | /** | ||||
| * 操作消息提醒 | * 操作消息提醒 | ||||
| * | |||||
| * | |||||
| * @author ruoyi | * @author ruoyi | ||||
| */ | */ | ||||
| public class AjaxResult extends HashMap<String, Object> | |||||
| { | |||||
| public class AjaxResult extends HashMap<String, Object> { | |||||
| private static final long serialVersionUID = 1L; | private static final long serialVersionUID = 1L; | ||||
| /** 状态码 */ | |||||
| /** | |||||
| * 状态码 | |||||
| */ | |||||
| public static final String CODE_TAG = "code"; | public static final String CODE_TAG = "code"; | ||||
| /** 返回内容 */ | |||||
| /** | |||||
| * 返回内容 | |||||
| */ | |||||
| public static final String MSG_TAG = "msg"; | public static final String MSG_TAG = "msg"; | ||||
| /** 数据对象 */ | |||||
| /** | |||||
| * 数据对象 | |||||
| */ | |||||
| public static final String DATA_TAG = "data"; | public static final String DATA_TAG = "data"; | ||||
| /** | /** | ||||
| * 初始化一个新创建的 AjaxResult 对象,使其表示一个空消息。 | * 初始化一个新创建的 AjaxResult 对象,使其表示一个空消息。 | ||||
| */ | */ | ||||
| public AjaxResult() | |||||
| { | |||||
| public AjaxResult() { | |||||
| } | } | ||||
| /** | /** | ||||
| * 初始化一个新创建的 AjaxResult 对象 | * 初始化一个新创建的 AjaxResult 对象 | ||||
| * | |||||
| * | |||||
| * @param code 状态码 | * @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(CODE_TAG, code); | ||||
| super.put(MSG_TAG, msg); | super.put(MSG_TAG, msg); | ||||
| } | } | ||||
| /** | /** | ||||
| * 初始化一个新创建的 AjaxResult 对象 | * 初始化一个新创建的 AjaxResult 对象 | ||||
| * | |||||
| * | |||||
| * @param code 状态码 | * @param code 状态码 | ||||
| * @param msg 返回内容 | |||||
| * @param msg 返回内容 | |||||
| * @param data 数据对象 | * @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(CODE_TAG, code); | ||||
| super.put(MSG_TAG, msg); | super.put(MSG_TAG, msg); | ||||
| if (StringUtils.isNotNull(data)) | |||||
| { | |||||
| if (StringUtils.isNotNull(data)) { | |||||
| super.put(DATA_TAG, data); | super.put(DATA_TAG, data); | ||||
| } | } | ||||
| } | } | ||||
| public AjaxResult set(String name, Object val) { | |||||
| put(name, val); | |||||
| return this; | |||||
| } | |||||
| /** | /** | ||||
| * 返回成功消息 | * 返回成功消息 | ||||
| * | |||||
| * | |||||
| * @return 成功消息 | * @return 成功消息 | ||||
| */ | */ | ||||
| public static AjaxResult success() | |||||
| { | |||||
| public static AjaxResult success() { | |||||
| return AjaxResult.success("操作成功"); | return AjaxResult.success("操作成功"); | ||||
| } | } | ||||
| /** | /** | ||||
| * 返回成功数据 | * 返回成功数据 | ||||
| * | |||||
| * | |||||
| * @return 成功消息 | * @return 成功消息 | ||||
| */ | */ | ||||
| public static AjaxResult success(Object data) | |||||
| { | |||||
| public static AjaxResult success(Object data) { | |||||
| return AjaxResult.success("操作成功", data); | return AjaxResult.success("操作成功", data); | ||||
| } | } | ||||
| /** | /** | ||||
| * 返回成功消息 | * 返回成功消息 | ||||
| * | |||||
| * | |||||
| * @param msg 返回内容 | * @param msg 返回内容 | ||||
| * @return 成功消息 | * @return 成功消息 | ||||
| */ | */ | ||||
| public static AjaxResult success(String msg) | |||||
| { | |||||
| public static AjaxResult success(String msg) { | |||||
| return AjaxResult.success(msg, null); | return AjaxResult.success(msg, null); | ||||
| } | } | ||||
| /** | /** | ||||
| * 返回成功消息 | * 返回成功消息 | ||||
| * | |||||
| * @param msg 返回内容 | |||||
| * | |||||
| * @param msg 返回内容 | |||||
| * @param data 数据对象 | * @param data 数据对象 | ||||
| * @return 成功消息 | * @return 成功消息 | ||||
| */ | */ | ||||
| public static AjaxResult success(String msg, Object data) | |||||
| { | |||||
| public static AjaxResult success(String msg, Object data) { | |||||
| return new AjaxResult(HttpStatus.SUCCESS, msg, data); | return new AjaxResult(HttpStatus.SUCCESS, msg, data); | ||||
| } | } | ||||
| @@ -108,65 +111,59 @@ public class AjaxResult extends HashMap<String, Object> | |||||
| * @param msg 返回内容 | * @param msg 返回内容 | ||||
| * @return 警告消息 | * @return 警告消息 | ||||
| */ | */ | ||||
| public static AjaxResult warn(String msg) | |||||
| { | |||||
| public static AjaxResult warn(String msg) { | |||||
| return AjaxResult.warn(msg, null); | return AjaxResult.warn(msg, null); | ||||
| } | } | ||||
| /** | /** | ||||
| * 返回警告消息 | * 返回警告消息 | ||||
| * | * | ||||
| * @param msg 返回内容 | |||||
| * @param msg 返回内容 | |||||
| * @param data 数据对象 | * @param data 数据对象 | ||||
| * @return 警告消息 | * @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 new AjaxResult(HttpStatus.WARN, msg, data); | ||||
| } | } | ||||
| /** | /** | ||||
| * 返回错误消息 | * 返回错误消息 | ||||
| * | |||||
| * | |||||
| * @return 错误消息 | * @return 错误消息 | ||||
| */ | */ | ||||
| public static AjaxResult error() | |||||
| { | |||||
| public static AjaxResult error() { | |||||
| return AjaxResult.error("操作失败"); | return AjaxResult.error("操作失败"); | ||||
| } | } | ||||
| /** | /** | ||||
| * 返回错误消息 | * 返回错误消息 | ||||
| * | |||||
| * | |||||
| * @param msg 返回内容 | * @param msg 返回内容 | ||||
| * @return 错误消息 | * @return 错误消息 | ||||
| */ | */ | ||||
| public static AjaxResult error(String msg) | |||||
| { | |||||
| public static AjaxResult error(String msg) { | |||||
| return AjaxResult.error(msg, null); | return AjaxResult.error(msg, null); | ||||
| } | } | ||||
| /** | /** | ||||
| * 返回错误消息 | * 返回错误消息 | ||||
| * | |||||
| * @param msg 返回内容 | |||||
| * | |||||
| * @param msg 返回内容 | |||||
| * @param data 数据对象 | * @param data 数据对象 | ||||
| * @return 错误消息 | * @return 错误消息 | ||||
| */ | */ | ||||
| public static AjaxResult error(String msg, Object data) | |||||
| { | |||||
| public static AjaxResult error(String msg, Object data) { | |||||
| return new AjaxResult(HttpStatus.ERROR, msg, data); | return new AjaxResult(HttpStatus.ERROR, msg, data); | ||||
| } | } | ||||
| /** | /** | ||||
| * 返回错误消息 | * 返回错误消息 | ||||
| * | |||||
| * | |||||
| * @param code 状态码 | * @param code 状态码 | ||||
| * @param msg 返回内容 | |||||
| * @param msg 返回内容 | |||||
| * @return 错误消息 | * @return 错误消息 | ||||
| */ | */ | ||||
| public static AjaxResult error(int code, String msg) | |||||
| { | |||||
| public static AjaxResult error(int code, String msg) { | |||||
| return new AjaxResult(code, msg, null); | return new AjaxResult(code, msg, null); | ||||
| } | } | ||||
| @@ -175,8 +172,7 @@ public class AjaxResult extends HashMap<String, Object> | |||||
| * | * | ||||
| * @return 结果 | * @return 结果 | ||||
| */ | */ | ||||
| public boolean isSuccess() | |||||
| { | |||||
| public boolean isSuccess() { | |||||
| return Objects.equals(HttpStatus.SUCCESS, this.get(CODE_TAG)); | return Objects.equals(HttpStatus.SUCCESS, this.get(CODE_TAG)); | ||||
| } | } | ||||
| @@ -185,8 +181,7 @@ public class AjaxResult extends HashMap<String, Object> | |||||
| * | * | ||||
| * @return 结果 | * @return 结果 | ||||
| */ | */ | ||||
| public boolean isWarn() | |||||
| { | |||||
| public boolean isWarn() { | |||||
| return Objects.equals(HttpStatus.WARN, this.get(CODE_TAG)); | return Objects.equals(HttpStatus.WARN, this.get(CODE_TAG)); | ||||
| } | } | ||||
| @@ -195,21 +190,19 @@ public class AjaxResult extends HashMap<String, Object> | |||||
| * | * | ||||
| * @return 结果 | * @return 结果 | ||||
| */ | */ | ||||
| public boolean isError() | |||||
| { | |||||
| public boolean isError() { | |||||
| return Objects.equals(HttpStatus.ERROR, this.get(CODE_TAG)); | return Objects.equals(HttpStatus.ERROR, this.get(CODE_TAG)); | ||||
| } | } | ||||
| /** | /** | ||||
| * 方便链式调用 | * 方便链式调用 | ||||
| * | * | ||||
| * @param key 键 | |||||
| * @param key 键 | |||||
| * @param value 值 | * @param value 值 | ||||
| * @return 数据对象 | * @return 数据对象 | ||||
| */ | */ | ||||
| @Override | @Override | ||||
| public AjaxResult put(String key, Object value) | |||||
| { | |||||
| public AjaxResult put(String key, Object value) { | |||||
| super.put(key, value); | super.put(key, value); | ||||
| return this; | return this; | ||||
| } | } | ||||
| @@ -1,9 +1,11 @@ | |||||
| package com.ruoyi.system.domain; | 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.annotation.Excel; | ||||
| import com.ruoyi.common.core.domain.BaseEntity; | import com.ruoyi.common.core.domain.BaseEntity; | ||||
| import lombok.Data; | |||||
| import lombok.experimental.Accessors; | |||||
| import java.util.List; | |||||
| /** | /** | ||||
| * 手机菜单对象 sys_menuapp | * 手机菜单对象 sys_menuapp | ||||
| @@ -11,6 +13,8 @@ import com.ruoyi.common.core.domain.BaseEntity; | |||||
| * @author rongxin | * @author rongxin | ||||
| * @date 2025-09-02 | * @date 2025-09-02 | ||||
| */ | */ | ||||
| @Data | |||||
| @Accessors(chain = true) | |||||
| public class SysMenuapp extends BaseEntity | public class SysMenuapp extends BaseEntity | ||||
| { | { | ||||
| private static final long serialVersionUID = 1L; | private static final long serialVersionUID = 1L; | ||||
| @@ -42,91 +46,13 @@ public class SysMenuapp extends BaseEntity | |||||
| @Excel(name = "菜单状态", dictType = "sys_normal_disable") | @Excel(name = "菜单状态", dictType = "sys_normal_disable") | ||||
| private String menuStatus; | 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<SysMenuapp> menus; | |||||
| /** 角色ID */ | |||||
| private Long roleId; | |||||
| } | } | ||||
| @@ -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; | |||||
| } | |||||
| @@ -1,6 +1,7 @@ | |||||
| package com.ruoyi.system.mapper; | package com.ruoyi.system.mapper; | ||||
| import com.ruoyi.system.domain.SysMenuapp; | import com.ruoyi.system.domain.SysMenuapp; | ||||
| import org.apache.ibatis.annotations.Param; | |||||
| import java.util.List; | import java.util.List; | ||||
| @@ -28,6 +29,10 @@ public interface SysMenuappMapper | |||||
| */ | */ | ||||
| public List<SysMenuapp> selectSysMenuappList(SysMenuapp sysMenuapp); | public List<SysMenuapp> selectSysMenuappList(SysMenuapp sysMenuapp); | ||||
| public List<SysMenuapp> selectAllocatedList(SysMenuapp sysMenuapp); | |||||
| public List<SysMenuapp> selectUnallocatedList(SysMenuapp sysMenuapp); | |||||
| /** | /** | ||||
| * 新增手机菜单 | * 新增手机菜单 | ||||
| * | * | ||||
| @@ -75,4 +80,6 @@ public interface SysMenuappMapper | |||||
| * @return 结果 | * @return 结果 | ||||
| */ | */ | ||||
| public int deleteSysMenuappByIds(Long[] ids); | public int deleteSysMenuappByIds(Long[] ids); | ||||
| public List<SysMenuapp> selectSysMobileListByUserId(@Param("userId") Long userId, @Param("query") SysMenuapp query); | |||||
| } | } | ||||
| @@ -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<SysRoleMenuapp> selectSysRoleMenuappList(SysRoleMenuapp sysRoleMenuapp); | |||||
| /** | |||||
| * 新增角色和手机菜单关联 | |||||
| * | |||||
| * @param sysRoleMenuapp 角色和手机菜单关联 | |||||
| * @return 结果 | |||||
| */ | |||||
| public int insertSysRoleMenuapp(SysRoleMenuapp sysRoleMenuapp); | |||||
| /** | |||||
| * 批量新增角色和手机菜单关联 | |||||
| * | |||||
| * @param list 角色和手机菜单关联 | |||||
| * @return 结果 | |||||
| */ | |||||
| public int insertSysRoleMenuappBatch(List<SysRoleMenuapp> list); | |||||
| /** | |||||
| * 修改角色和手机菜单关联 | |||||
| * | |||||
| * @param sysRoleMenuapp 角色和手机菜单关联 | |||||
| * @return 结果 | |||||
| */ | |||||
| public int updateSysRoleMenuapp(SysRoleMenuapp sysRoleMenuapp); | |||||
| /** | |||||
| * 批量修改 角色和手机菜单关联 | |||||
| * | |||||
| * @param list 角色和手机菜单关联 | |||||
| * @return 结果 | |||||
| */ | |||||
| public int updateSysRoleMenuappBatch(List<SysRoleMenuapp> 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); | |||||
| } | |||||
| @@ -28,6 +28,10 @@ public interface ISysMenuappService | |||||
| */ | */ | ||||
| public List<SysMenuapp> selectSysMenuappList(SysMenuapp sysMenuapp); | public List<SysMenuapp> selectSysMenuappList(SysMenuapp sysMenuapp); | ||||
| public List<SysMenuapp> selectAllocatedList(SysMenuapp sysMenuapp); | |||||
| public List<SysMenuapp> selectUnallocatedList(SysMenuapp sysMenuapp); | |||||
| /** | /** | ||||
| * 导入手机菜单数据 | * 导入手机菜单数据 | ||||
| * | * | ||||
| @@ -85,4 +89,6 @@ public interface ISysMenuappService | |||||
| * @return 结果 | * @return 结果 | ||||
| */ | */ | ||||
| public int deleteSysMenuappById(Long id); | public int deleteSysMenuappById(Long id); | ||||
| public List<SysMenuapp> selectSysMobileListByUserId(Long userId, SysMenuapp query); | |||||
| } | } | ||||
| @@ -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<SysRoleMenuapp> selectSysRoleMenuappList(SysRoleMenuapp sysRoleMenuapp); | |||||
| /** | |||||
| * 新增角色和手机菜单关联 | |||||
| * | |||||
| * @param sysRoleMenuapp 角色和手机菜单关联 | |||||
| * @return 结果 | |||||
| */ | |||||
| public int insertSysRoleMenuapp(SysRoleMenuapp sysRoleMenuapp); | |||||
| /** | |||||
| * 批量新增角色和手机菜单关联 | |||||
| * | |||||
| * @param list 角色和手机菜单关联 | |||||
| * @return 结果 | |||||
| */ | |||||
| public int insertSysRoleMenuappBatch(List<SysRoleMenuapp> list); | |||||
| /** | |||||
| * 修改角色和手机菜单关联 | |||||
| * | |||||
| * @param sysRoleMenuapp 角色和手机菜单关联 | |||||
| * @return 结果 | |||||
| */ | |||||
| public int updateSysRoleMenuapp(SysRoleMenuapp sysRoleMenuapp); | |||||
| /** | |||||
| * 批量修改 角色和手机菜单关联 | |||||
| * | |||||
| * @param list 角色和手机菜单关联 | |||||
| * @return 结果 | |||||
| */ | |||||
| public int updateSysRoleMenuappBatch(List<SysRoleMenuapp> list); | |||||
| /** | |||||
| * 批量删除角色和手机菜单关联 | |||||
| * | |||||
| * @param roleIds 需要删除的角色和手机菜单关联主键集合 | |||||
| * @return 结果 | |||||
| */ | |||||
| public int deleteSysRoleMenuappByRoleIds(Long[] roleIds); | |||||
| /** | |||||
| * 删除角色和手机菜单关联信息 | |||||
| * | |||||
| * @param roleId 角色和手机菜单关联主键 | |||||
| * @return 结果 | |||||
| */ | |||||
| public int deleteSysRoleMenuappByRoleId(Long roleId); | |||||
| public int setupRoleMobiles(Long roleId, List<Long> mobileIds); | |||||
| public int deleteAuthApp(SysRoleMenuapp sysRoleMenuapp); | |||||
| public int deleteAuthApps(Long roleId, Long[] appIds); | |||||
| public int insertAuthApps(Long roleId, Long[] appIds); | |||||
| } | |||||
| @@ -51,6 +51,16 @@ public class SysMenuappServiceImpl implements ISysMenuappService | |||||
| return sysMenuappMapper.selectSysMenuappList(sysMenuapp); | return sysMenuappMapper.selectSysMenuappList(sysMenuapp); | ||||
| } | } | ||||
| @Override | |||||
| public List<SysMenuapp> selectAllocatedList(SysMenuapp sysMenuapp) { | |||||
| return sysMenuappMapper.selectAllocatedList(sysMenuapp); | |||||
| } | |||||
| @Override | |||||
| public List<SysMenuapp> selectUnallocatedList(SysMenuapp sysMenuapp) { | |||||
| return sysMenuappMapper.selectUnallocatedList(sysMenuapp); | |||||
| } | |||||
| /** | /** | ||||
| * 导入手机菜单数据 | * 导入手机菜单数据 | ||||
| * | * | ||||
| @@ -194,4 +204,9 @@ public class SysMenuappServiceImpl implements ISysMenuappService | |||||
| { | { | ||||
| return sysMenuappMapper.deleteSysMenuappById(id); | return sysMenuappMapper.deleteSysMenuappById(id); | ||||
| } | } | ||||
| @Override | |||||
| public List<SysMenuapp> selectSysMobileListByUserId(Long userId, SysMenuapp query) { | |||||
| return sysMenuappMapper.selectSysMobileListByUserId(userId, query); | |||||
| } | |||||
| } | } | ||||
| @@ -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<SysRoleMenuapp> 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<SysRoleMenuapp> list) { | |||||
| List<List<SysRoleMenuapp>> 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<SysRoleMenuapp> list) { | |||||
| List<List<SysRoleMenuapp>> 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<Long> mobileIds) { | |||||
| sysRoleMenuappMapper.deleteSysRoleMenuappByRoleId(roleId); | |||||
| if (CollectionUtil.isNotEmpty(mobileIds)) { | |||||
| List<SysRoleMenuapp> 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<SysRoleMenuapp> list = new ArrayList<SysRoleMenuapp>(); | |||||
| for (Long appId : appIds) | |||||
| { | |||||
| SysRoleMenuapp ur = new SysRoleMenuapp(); | |||||
| ur.setAppId(appId); | |||||
| ur.setRoleId(roleId); | |||||
| list.add(ur); | |||||
| } | |||||
| return sysRoleMenuappMapper.insertSysRoleMenuappBatch(list); | |||||
| } | |||||
| } | |||||
| @@ -149,4 +149,40 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" | |||||
| #{id} | #{id} | ||||
| </foreach> | </foreach> | ||||
| </delete> | </delete> | ||||
| <select id="selectAllocatedList" parameterType="SysMenuapp" resultMap="SysMenuappResult"> | |||||
| select u.id, u.model_type, u.menu_name, u.menu_url, u.menu_icon, u.menu_num, u.menu_status, u.remark | |||||
| from sys_menuapp u | |||||
| left join sys_role_menuapp ur on u.id = ur.app_id | |||||
| left join sys_role r on r.role_id = ur.role_id | |||||
| where r.role_id = #{roleId} | |||||
| </select> | |||||
| <select id="selectUnallocatedList" parameterType="SysMenuapp" resultMap="SysMenuappResult"> | |||||
| select u.id, u.model_type, u.menu_name, u.menu_url, u.menu_icon, u.menu_num, u.menu_status, u.remark | |||||
| from sys_menuapp u | |||||
| left join sys_role_menuapp ur on u.id = ur.app_id | |||||
| left join sys_role r on r.role_id = ur.role_id | |||||
| where u.id not in (select u.id from sys_menuapp u inner join sys_role_menuapp ur on u.id = ur.app_id and ur.role_id = #{roleId}) | |||||
| </select> | |||||
| <select id="selectSysMobileListByUserId" resultMap="SysMenuappResult"> | |||||
| SELECT t.id, t.identity_type, t.modle_name, t.menu_name, t.order_num, t.menu_icon, t.menu_url, t.url_para, t.sys_normal_disable, t.remark, t.create_by, t.create_time, t.update_by, t.update_time FROM sys_mobile t | |||||
| JOIN sys_role_mobile rm ON rm.mobile_id = t.id | |||||
| JOIN sys_user_role ur ON ur.role_id = rm.role_id | |||||
| JOIN sys_user u ON u.user_id = ur.user_id | |||||
| JOIN sys_role r ON r.role_id = ur.role_id | |||||
| <where> | |||||
| u.user_id = #{userId} | |||||
| AND t.sys_normal_disable = '0' | |||||
| AND r.status = '0' | |||||
| <if test="query != null"> | |||||
| <if test="query.identityType != null and query.identityType != ''"> and t.identity_type = #{query.identityType}</if> | |||||
| <if test="query.modleName != null and query.modleName != ''"> and t.modle_name = #{query.modleName}</if> | |||||
| <if test="query.menuName != null and query.menuName != ''"> and t.menu_name like concat('%', #{query.menuName}, '%')</if> | |||||
| </if> | |||||
| </where> | |||||
| </select> | |||||
| </mapper> | </mapper> | ||||
| @@ -0,0 +1,98 @@ | |||||
| <?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.ruoyi.system.mapper.SysRoleMenuappMapper"> | |||||
| <resultMap type="SysRoleMenuapp" id="SysRoleMenuappResult"> | |||||
| <result property="roleId" column="role_id" /> | |||||
| <result property="appId" column="app_id" /> | |||||
| </resultMap> | |||||
| <sql id="selectSysRoleMenuappVo"> | |||||
| select role_id, app_id from sys_role_menuapp | |||||
| </sql> | |||||
| <select id="selectSysRoleMenuappList" parameterType="SysRoleMenuapp" resultMap="SysRoleMenuappResult"> | |||||
| <include refid="selectSysRoleMenuappVo"/> | |||||
| <where> | |||||
| <if test="appId != null">and app_id = #{appId}</if> | |||||
| <if test="roleId != null">and role_id = #{roleId}</if> | |||||
| </where> | |||||
| </select> | |||||
| <select id="selectSysRoleMenuappByRoleId" parameterType="Long" resultMap="SysRoleMenuappResult"> | |||||
| <include refid="selectSysRoleMenuappVo"/> | |||||
| where role_id = #{roleId} | |||||
| </select> | |||||
| <insert id="insertSysRoleMenuapp" parameterType="SysRoleMenuapp"> | |||||
| insert into sys_role_menuapp | |||||
| <trim prefix="(" suffix=")" suffixOverrides=","> | |||||
| <if test="roleId != null">role_id,</if> | |||||
| <if test="appId != null">app_id,</if> | |||||
| </trim> | |||||
| <trim prefix="values (" suffix=")" suffixOverrides=","> | |||||
| <if test="roleId != null">#{roleId},</if> | |||||
| <if test="appId != null">#{appId},</if> | |||||
| </trim> | |||||
| </insert> | |||||
| <insert id="insertSysRoleMenuappBatch" parameterType="list" > | |||||
| insert into sys_role_menuapp | |||||
| <trim prefix="(" suffix=")" suffixOverrides=","> | |||||
| role_id, | |||||
| app_id, | |||||
| </trim> | |||||
| values | |||||
| <foreach item="item" collection="list" separator="," > | |||||
| <trim prefix="(" suffix=")" suffixOverrides=","> | |||||
| #{item.roleId}, | |||||
| #{item.appId}, | |||||
| </trim> | |||||
| </foreach> | |||||
| </insert> | |||||
| <update id="updateSysRoleMenuapp" parameterType="SysRoleMenuapp"> | |||||
| update sys_role_menuapp | |||||
| <trim prefix="SET" suffixOverrides=","> | |||||
| <if test="appId != null">app_id = #{appId},</if> | |||||
| </trim> | |||||
| where role_id = #{roleId} | |||||
| </update> | |||||
| <!--批量更新--> | |||||
| <update id="updateSysRoleMenuappBatch" parameterType="list" > | |||||
| <foreach collection="list" item="item" index="index" open="" close="" separator=";"> | |||||
| update sys_role_menuapp | |||||
| <set> | |||||
| <if test="item.appId != null">app_id = #{item.appId},</if> | |||||
| </set> | |||||
| where role_id = #{item.roleId} | |||||
| </foreach> | |||||
| </update> | |||||
| <delete id="deleteSysRoleMenuappByRoleId" parameterType="Long"> | |||||
| delete from sys_role_menuapp where role_id = #{roleId} | |||||
| </delete> | |||||
| <delete id="deleteSysRoleMenuappByRoleIds" parameterType="String"> | |||||
| delete from sys_role_menuapp where role_id in | |||||
| <foreach item="roleId" collection="array" open="(" separator="," close=")"> | |||||
| #{roleId} | |||||
| </foreach> | |||||
| </delete> | |||||
| <delete id="deleteAuthApp" parameterType="SysRoleMenuapp"> | |||||
| delete from sys_role_menuapp where app_id = #{appId} and role_id = #{roleId} | |||||
| </delete> | |||||
| <delete id="deleteAuthApps"> | |||||
| delete from sys_role_menuapp where role_id = #{roleId} and app_id in | |||||
| <foreach collection="appIds" item="appId" open="(" separator="," close=")"> | |||||
| #{appId} | |||||
| </foreach> | |||||
| </delete> | |||||
| </mapper> | |||||