权限修改

This commit is contained in:
张松 2025-05-26 13:52:00 +08:00
parent c32ecdf871
commit 073b561f40
11 changed files with 218 additions and 22 deletions

View File

@ -3,12 +3,14 @@ package com.czg.controller.admin;
import com.czg.account.dto.menu.MenuAddDTO; import com.czg.account.dto.menu.MenuAddDTO;
import com.czg.account.dto.menu.MenuDelDTO; import com.czg.account.dto.menu.MenuDelDTO;
import com.czg.account.dto.menu.MenuEditDTO; import com.czg.account.dto.menu.MenuEditDTO;
import com.czg.account.entity.CashMenu;
import com.czg.account.entity.SysMenu; import com.czg.account.entity.SysMenu;
import com.czg.account.service.SysMenuService; import com.czg.account.service.SysMenuService;
import com.czg.account.vo.MenuVO; import com.czg.account.vo.MenuVO;
import com.czg.annotation.SaAdminCheckPermission; import com.czg.annotation.SaAdminCheckPermission;
import com.czg.annotation.SaAdminCheckRole; import com.czg.annotation.SaAdminCheckRole;
import com.czg.resp.CzgResult; import com.czg.resp.CzgResult;
import com.czg.sa.StpKit;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@ -35,6 +37,16 @@ public class MenuController {
return CzgResult.success(menuService.getMenu()); return CzgResult.success(menuService.getMenu());
} }
/**
* 收银机菜单
* @return 所有菜单
*/
@GetMapping("/list/cash")
public CzgResult<List<CashMenu>> all() {
return CzgResult.success(menuService.getCashAll());
}
/** /**
* 获取所有菜单 * 获取所有菜单
* @return 菜单结构 * @return 菜单结构

View File

@ -33,6 +33,10 @@ public class MyStpLogic {
public static final StpLogic CLIENT_LOGIC = new StpLogic("client"); public static final StpLogic CLIENT_LOGIC = new StpLogic("client");
public static final StpLogic ADMIN_LOGIC = new StpLogic("admin"); public static final StpLogic ADMIN_LOGIC = new StpLogic("admin");
public Object isPC() {
return "PC".equals(SaHolder.getRequest().getHeader("Platformtype"));
}
public enum LoginType { public enum LoginType {
MANAGER, USER, STAFF MANAGER, USER, STAFF
} }

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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> {
}

View File

@ -2,6 +2,7 @@ package com.czg.account.service;
import com.czg.account.dto.menu.MenuAddDTO; import com.czg.account.dto.menu.MenuAddDTO;
import com.czg.account.dto.menu.MenuEditDTO; import com.czg.account.dto.menu.MenuEditDTO;
import com.czg.account.entity.CashMenu;
import com.czg.account.entity.SysMenu; import com.czg.account.entity.SysMenu;
import com.czg.account.vo.MenuVO; import com.czg.account.vo.MenuVO;
import com.mybatisflex.core.service.IService; import com.mybatisflex.core.service.IService;
@ -24,4 +25,6 @@ public interface SysMenuService extends IService<SysMenu> {
Boolean edit(MenuEditDTO menuEditDTO); Boolean edit(MenuEditDTO menuEditDTO);
List<CashMenu> getCashAll();
} }

View File

@ -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> {
}

View File

@ -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{
}

View File

@ -6,8 +6,10 @@ import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson2.JSONObject; import com.alibaba.fastjson2.JSONObject;
import com.czg.account.dto.menu.MenuAddDTO; import com.czg.account.dto.menu.MenuAddDTO;
import com.czg.account.dto.menu.MenuEditDTO; import com.czg.account.dto.menu.MenuEditDTO;
import com.czg.account.entity.CashMenu;
import com.czg.account.entity.SysMenu; import com.czg.account.entity.SysMenu;
import com.czg.account.entity.SysUsersRoles; import com.czg.account.entity.SysUsersRoles;
import com.czg.account.service.CashMenuService;
import com.czg.account.service.SysMenuService; import com.czg.account.service.SysMenuService;
import com.czg.account.vo.MenuVO; import com.czg.account.vo.MenuVO;
import com.czg.exception.ApiNotPrintException; import com.czg.exception.ApiNotPrintException;
@ -35,6 +37,8 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
private SysMenuMapper sysMenuMapper; private SysMenuMapper sysMenuMapper;
@Resource @Resource
private SysUsersRolesMapper sysUsersRolesMapper; private SysUsersRolesMapper sysUsersRolesMapper;
@Resource
private CashMenuService cashMenuService;
@Override @Override
public List<MenuVO> getMenu() { public List<MenuVO> getMenu() {
@ -177,4 +181,9 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
} }
return permissions; return permissions;
} }
@Override
public List<CashMenu> getCashAll() {
return cashMenuService.list();
}
} }

View File

@ -9,9 +9,11 @@ import com.czg.account.dto.menu.MenuApiInfoItemDTO;
import com.czg.account.dto.role.RoleAddDTO; import com.czg.account.dto.role.RoleAddDTO;
import com.czg.account.dto.role.RoleEditDTO; import com.czg.account.dto.role.RoleEditDTO;
import com.czg.account.dto.role.RolePermissionDTO; import com.czg.account.dto.role.RolePermissionDTO;
import com.czg.account.entity.CashMenu;
import com.czg.account.entity.SysMenu; import com.czg.account.entity.SysMenu;
import com.czg.account.entity.SysRole; import com.czg.account.entity.SysRole;
import com.czg.account.entity.SysRolesMenus; import com.czg.account.entity.SysRolesMenus;
import com.czg.account.service.CashMenuService;
import com.czg.account.service.SysMenuService; import com.czg.account.service.SysMenuService;
import com.czg.account.service.SysRoleService; import com.czg.account.service.SysRoleService;
import com.czg.account.service.SysRolesMenusService; import com.czg.account.service.SysRolesMenusService;
@ -43,6 +45,8 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> imp
private SysMenuService sysMenuService; private SysMenuService sysMenuService;
@Resource @Resource
private SysRolesMenusService sysRolesMenusService; private SysRolesMenusService sysRolesMenusService;
@Resource
private CashMenuService cashMenuService;
@Override @Override
public List<SysRole> getByUserId(Long id) { 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) { 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(); List<SysMenu> sysMenuList = sysMenuService.queryChain().in(SysMenu::getMenuId, menuIds).list();
if (sysMenuList.size() != menuIds.size()) { if (sysMenuList.size() != menuIds.size()) {
throw new ApiNotPrintException("菜单id包含错误id"); throw new ApiNotPrintException("菜单id包含错误id");
} }
ArrayList<MenuApiInfoItemDTO> apiPathList = new ArrayList<>();
sysMenuList.forEach(item -> { sysMenuList.forEach(item -> {
if (StrUtil.isNotBlank(item.getApiInfo())) { if (StrUtil.isNotBlank(item.getApiInfo())) {
List<MenuApiInfoItemDTO> itemDTOS = JSONArray.parseArray(item.getApiInfo()).toJavaList(MenuApiInfoItemDTO.class); 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) { for (SysMenu sysMenu : sysMenuList) {
long count = sysRolesMenusService.count(new QueryWrapper().eq(SysRolesMenus::getMenuId, sysMenu.getMenuId()) long count = sysRolesMenusService.count(new QueryWrapper().eq(SysRolesMenus::getMenuId, sysMenu.getMenuId())
.eq(SysRolesMenus::getRoleId, roleId) .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)); 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 @Override

View File

@ -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>