权限修改
This commit is contained in:
parent
c32ecdf871
commit
073b561f40
|
|
@ -3,12 +3,14 @@ package com.czg.controller.admin;
|
|||
import com.czg.account.dto.menu.MenuAddDTO;
|
||||
import com.czg.account.dto.menu.MenuDelDTO;
|
||||
import com.czg.account.dto.menu.MenuEditDTO;
|
||||
import com.czg.account.entity.CashMenu;
|
||||
import com.czg.account.entity.SysMenu;
|
||||
import com.czg.account.service.SysMenuService;
|
||||
import com.czg.account.vo.MenuVO;
|
||||
import com.czg.annotation.SaAdminCheckPermission;
|
||||
import com.czg.annotation.SaAdminCheckRole;
|
||||
import com.czg.resp.CzgResult;
|
||||
import com.czg.sa.StpKit;
|
||||
import jakarta.annotation.Resource;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
|
@ -35,6 +37,16 @@ public class MenuController {
|
|||
return CzgResult.success(menuService.getMenu());
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 收银机菜单
|
||||
* @return 所有菜单
|
||||
*/
|
||||
@GetMapping("/list/cash")
|
||||
public CzgResult<List<CashMenu>> all() {
|
||||
return CzgResult.success(menuService.getCashAll());
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取所有菜单
|
||||
* @return 菜单结构
|
||||
|
|
|
|||
|
|
@ -33,6 +33,10 @@ public class MyStpLogic {
|
|||
public static final StpLogic CLIENT_LOGIC = new StpLogic("client");
|
||||
public static final StpLogic ADMIN_LOGIC = new StpLogic("admin");
|
||||
|
||||
public Object isPC() {
|
||||
return "PC".equals(SaHolder.getRequest().getHeader("Platformtype"));
|
||||
}
|
||||
|
||||
public enum LoginType {
|
||||
MANAGER, USER, STAFF
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,32 @@
|
|||
|
||||
package com.czg.account.dto;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.io.Serial;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
/**
|
||||
* 实体类。
|
||||
*
|
||||
* @author zs
|
||||
* @since 2025-05-26
|
||||
*/
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class CashMenuDTO implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private Long menuId;
|
||||
|
||||
private String name;
|
||||
|
||||
private String component;
|
||||
|
||||
private String path;
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,43 @@
|
|||
package com.czg.account.entity;
|
||||
|
||||
import com.mybatisflex.annotation.Id;
|
||||
import com.mybatisflex.annotation.KeyType;
|
||||
import com.mybatisflex.annotation.Table;
|
||||
import java.io.Serializable;
|
||||
|
||||
import java.io.Serial;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
/**
|
||||
* 实体类。
|
||||
*
|
||||
* @author zs
|
||||
* @since 2025-05-26
|
||||
*/
|
||||
@Data
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@Table("sys_cash_menu")
|
||||
public class CashMenu implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@Id(keyType = KeyType.Auto)
|
||||
private Long menuId;
|
||||
|
||||
private String name;
|
||||
|
||||
private String component;
|
||||
|
||||
private String path;
|
||||
|
||||
private String icon;
|
||||
private String apiInfo;
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
package com.czg.account.service;
|
||||
|
||||
import com.mybatisflex.core.service.IService;
|
||||
import com.czg.account.entity.CashMenu;
|
||||
|
||||
/**
|
||||
* 服务层。
|
||||
*
|
||||
* @author zs
|
||||
* @since 2025-05-26
|
||||
*/
|
||||
public interface CashMenuService extends IService<CashMenu> {
|
||||
|
||||
}
|
||||
|
|
@ -2,6 +2,7 @@ package com.czg.account.service;
|
|||
|
||||
import com.czg.account.dto.menu.MenuAddDTO;
|
||||
import com.czg.account.dto.menu.MenuEditDTO;
|
||||
import com.czg.account.entity.CashMenu;
|
||||
import com.czg.account.entity.SysMenu;
|
||||
import com.czg.account.vo.MenuVO;
|
||||
import com.mybatisflex.core.service.IService;
|
||||
|
|
@ -24,4 +25,6 @@ public interface SysMenuService extends IService<SysMenu> {
|
|||
|
||||
Boolean edit(MenuEditDTO menuEditDTO);
|
||||
|
||||
List<CashMenu> getCashAll();
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,14 @@
|
|||
package com.czg.service.account.mapper;
|
||||
|
||||
import com.mybatisflex.core.BaseMapper;
|
||||
import com.czg.account.entity.CashMenu;
|
||||
|
||||
/**
|
||||
* 映射层。
|
||||
*
|
||||
* @author zs
|
||||
* @since 2025-05-26
|
||||
*/
|
||||
public interface CashMenuMapper extends BaseMapper<CashMenu> {
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
package com.czg.service.account.service.impl;
|
||||
|
||||
import com.mybatisflex.spring.service.impl.ServiceImpl;
|
||||
import com.czg.account.entity.CashMenu;
|
||||
import com.czg.account.service.CashMenuService;
|
||||
import com.czg.service.account.mapper.CashMenuMapper;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* 服务层实现。
|
||||
*
|
||||
* @author zs
|
||||
* @since 2025-05-26
|
||||
*/
|
||||
@Service
|
||||
public class CashMenuServiceImpl extends ServiceImpl<CashMenuMapper, CashMenu> implements CashMenuService{
|
||||
|
||||
}
|
||||
|
|
@ -6,8 +6,10 @@ import cn.hutool.core.util.StrUtil;
|
|||
import com.alibaba.fastjson2.JSONObject;
|
||||
import com.czg.account.dto.menu.MenuAddDTO;
|
||||
import com.czg.account.dto.menu.MenuEditDTO;
|
||||
import com.czg.account.entity.CashMenu;
|
||||
import com.czg.account.entity.SysMenu;
|
||||
import com.czg.account.entity.SysUsersRoles;
|
||||
import com.czg.account.service.CashMenuService;
|
||||
import com.czg.account.service.SysMenuService;
|
||||
import com.czg.account.vo.MenuVO;
|
||||
import com.czg.exception.ApiNotPrintException;
|
||||
|
|
@ -35,6 +37,8 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
|
|||
private SysMenuMapper sysMenuMapper;
|
||||
@Resource
|
||||
private SysUsersRolesMapper sysUsersRolesMapper;
|
||||
@Resource
|
||||
private CashMenuService cashMenuService;
|
||||
|
||||
@Override
|
||||
public List<MenuVO> getMenu() {
|
||||
|
|
@ -177,4 +181,9 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
|
|||
}
|
||||
return permissions;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<CashMenu> getCashAll() {
|
||||
return cashMenuService.list();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -9,9 +9,11 @@ import com.czg.account.dto.menu.MenuApiInfoItemDTO;
|
|||
import com.czg.account.dto.role.RoleAddDTO;
|
||||
import com.czg.account.dto.role.RoleEditDTO;
|
||||
import com.czg.account.dto.role.RolePermissionDTO;
|
||||
import com.czg.account.entity.CashMenu;
|
||||
import com.czg.account.entity.SysMenu;
|
||||
import com.czg.account.entity.SysRole;
|
||||
import com.czg.account.entity.SysRolesMenus;
|
||||
import com.czg.account.service.CashMenuService;
|
||||
import com.czg.account.service.SysMenuService;
|
||||
import com.czg.account.service.SysRoleService;
|
||||
import com.czg.account.service.SysRolesMenusService;
|
||||
|
|
@ -43,6 +45,8 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> imp
|
|||
private SysMenuService sysMenuService;
|
||||
@Resource
|
||||
private SysRolesMenusService sysRolesMenusService;
|
||||
@Resource
|
||||
private CashMenuService cashMenuService;
|
||||
|
||||
@Override
|
||||
public List<SysRole> getByUserId(Long id) {
|
||||
|
|
@ -125,12 +129,15 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> imp
|
|||
}
|
||||
|
||||
public boolean addMenu(Long roleId, List<Long> menuIds, boolean isAdmin) {
|
||||
ArrayList<MenuApiInfoItemDTO> apiPathList = new ArrayList<>();
|
||||
|
||||
ArrayList<SysRolesMenus> rolesMenus = new ArrayList<>();
|
||||
if (isAdmin) {
|
||||
List<SysMenu> sysMenuList = sysMenuService.queryChain().in(SysMenu::getMenuId, menuIds).list();
|
||||
if (sysMenuList.size() != menuIds.size()) {
|
||||
throw new ApiNotPrintException("菜单id包含错误id");
|
||||
}
|
||||
|
||||
ArrayList<MenuApiInfoItemDTO> apiPathList = new ArrayList<>();
|
||||
sysMenuList.forEach(item -> {
|
||||
if (StrUtil.isNotBlank(item.getApiInfo())) {
|
||||
List<MenuApiInfoItemDTO> itemDTOS = JSONArray.parseArray(item.getApiInfo()).toJavaList(MenuApiInfoItemDTO.class);
|
||||
|
|
@ -140,17 +147,6 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> imp
|
|||
}
|
||||
});
|
||||
|
||||
if (!apiPathList.isEmpty()) {
|
||||
String string = buildLikeSql(apiPathList, "url");
|
||||
QueryWrapper wrapper = new QueryWrapper();
|
||||
wrapper.where(string);
|
||||
List<SysMenu> sysMenus = sysMenuService.list(wrapper);
|
||||
if (!sysMenus.isEmpty()) {
|
||||
sysMenuList.addAll(sysMenus);
|
||||
}
|
||||
}
|
||||
|
||||
ArrayList<SysRolesMenus> rolesMenus = new ArrayList<>();
|
||||
for (SysMenu sysMenu : sysMenuList) {
|
||||
long count = sysRolesMenusService.count(new QueryWrapper().eq(SysRolesMenus::getMenuId, sysMenu.getMenuId())
|
||||
.eq(SysRolesMenus::getRoleId, roleId)
|
||||
|
|
@ -159,7 +155,51 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> imp
|
|||
rolesMenus.add(new SysRolesMenus(sysMenu.getMenuId(), roleId, isAdmin ? 0 : 1));
|
||||
}
|
||||
}
|
||||
return sysRolesMenusService.saveBatch(rolesMenus);
|
||||
}else {
|
||||
List<CashMenu> list = cashMenuService.queryChain().in(CashMenu::getMenuId, menuIds).list();
|
||||
if (list.size() != menuIds.size()) {
|
||||
throw new ApiNotPrintException("菜单id包含错误id");
|
||||
}
|
||||
|
||||
list.forEach(item -> {
|
||||
if (StrUtil.isNotBlank(item.getApiInfo())) {
|
||||
List<MenuApiInfoItemDTO> itemDTOS = JSONArray.parseArray(item.getApiInfo()).toJavaList(MenuApiInfoItemDTO.class);
|
||||
if (!itemDTOS.isEmpty()) {
|
||||
apiPathList.addAll(itemDTOS);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
for (CashMenu sysMenu : list) {
|
||||
long count = sysRolesMenusService.count(new QueryWrapper().eq(SysRolesMenus::getMenuId, sysMenu.getMenuId())
|
||||
.eq(SysRolesMenus::getRoleId, roleId)
|
||||
.eq(SysRolesMenus::getType, isAdmin ? 0 : 1));
|
||||
if (count == 0) {
|
||||
rolesMenus.add(new SysRolesMenus(sysMenu.getMenuId(), roleId, isAdmin ? 0 : 1));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (!apiPathList.isEmpty()) {
|
||||
String string = buildLikeSql(apiPathList, "url");
|
||||
QueryWrapper wrapper = new QueryWrapper();
|
||||
wrapper.where(string);
|
||||
List<SysMenu> sysMenus = sysMenuService.list(wrapper);
|
||||
if (!sysMenus.isEmpty()) {
|
||||
for (SysMenu sysMenu : sysMenus) {
|
||||
long count = sysRolesMenusService.count(new QueryWrapper().eq(SysRolesMenus::getMenuId, sysMenu.getMenuId())
|
||||
.eq(SysRolesMenus::getRoleId, roleId)
|
||||
.eq(SysRolesMenus::getType, isAdmin ? 0 : 1));
|
||||
if (count == 0) {
|
||||
rolesMenus.add(new SysRolesMenus(sysMenu.getMenuId(), roleId, isAdmin ? 0 : 1));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return rolesMenus.isEmpty() || sysRolesMenusService.saveBatch(rolesMenus);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -0,0 +1,7 @@
|
|||
<?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.czg.service.account.mapper.CashMenuMapper">
|
||||
|
||||
</mapper>
|
||||
Loading…
Reference in New Issue