fix:修改iFrame字段为iframe,iFrame偶尔导致@setting注解读取失败问题

This commit is contained in:
zhangzhiqiang
2022-12-26 10:34:37 +08:00
parent 1801eba0f4
commit ce48bec077
7 changed files with 93 additions and 39 deletions

View File

@@ -0,0 +1,11 @@
package org.nl.common.domain.constant;
/*
* @author ZZQ
* @Date 2022/12/26 9:29 上午
*/
public class DictConstantPool {
public static final String DICT_SYS_CODE = "system_type";
public static final String DICT_SYS_NAME = "所属系统";
}

View File

@@ -79,7 +79,7 @@ public class MenuServiceImpl implements MenuService {
menuDto.setIcon(json.getString("icon"));
menuDto.setSubCount(json.getInteger("sub_count"));
menuDto.setIFrame("1".equals(json.getString("i_frame")));
menuDto.setIframe("1".equals(json.getString("i_frame")));
menuDto.setCache("1".equals(json.getString("cache")));
menuDto.setHidden("1".equals(json.getString("hidden")));
menuDto.setComponentName(json.getString("component_name"));
@@ -197,7 +197,7 @@ public class MenuServiceImpl implements MenuService {
throw new BadRequestException("上级不能为自己");
}
if (newMenu.getIFrame()) {
if (newMenu.getIframe()) {
String http = "http://", https = "https://";
if (!(newMenu.getPath().toLowerCase().startsWith(http) || newMenu.getPath().toLowerCase().startsWith(https))) {
throw new BadRequestException("外链必须以http://或者https://开头");
@@ -326,7 +326,7 @@ public class MenuServiceImpl implements MenuService {
menuVo.setPath(ObjectUtil.isEmpty(menuDTO.getPid()) ? "/" + menuDTO.getPath() : menuDTO.getPath());
menuVo.setHidden(menuDTO.getHidden());
// 如果不是外链
if (!menuDTO.getIFrame()) {
if (!menuDTO.getIframe()) {
if (ObjectUtil.isEmpty(menuDTO.getPid())) {
menuVo.setComponent(StrUtil.isEmpty(menuDTO.getComponent()) ? "Layout" : menuDTO.getComponent());
} else if (!ObjectUtil.isEmpty(menuDTO.getPid()) && "0".equals(menuDTO.getType())) {
@@ -346,7 +346,7 @@ public class MenuServiceImpl implements MenuService {
MenuVo menuVo1 = new MenuVo();
menuVo1.setMeta(menuVo.getMeta());
// 非外链
if (!menuDTO.getIFrame()) {
if (!menuDTO.getIframe()) {
menuVo1.setPath("index");
menuVo1.setName(menuVo.getName());
menuVo1.setComponent(menuVo.getComponent());

View File

@@ -97,7 +97,7 @@ public class SysMenuController {
@ApiOperation("新增菜单")
@PostMapping
@SaCheckPermission("menu:add")
public ResponseEntity<Object> create(@Validated @RequestBody SysMenu form) {
public ResponseEntity<Object> create(@RequestBody SysMenu form) {
iSysMenuService.create(form);
return new ResponseEntity<>(HttpStatus.CREATED);
}

View File

@@ -87,7 +87,7 @@ public class SysMenu implements Serializable {
/**
* 是否外链
*/
private Boolean iFrame;
private Boolean iframe;
/**
* 是否缓存

View File

@@ -46,7 +46,7 @@ public class MenuDto extends BaseDTO implements Serializable {
private Integer subCount;
private Boolean iFrame;
private Boolean iframe;
private Boolean cache;

View File

@@ -6,9 +6,11 @@ import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.google.common.collect.Lists;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.nl.common.domain.constant.DictConstantPool;
import org.nl.common.domain.query.PageQuery;
import org.nl.modules.common.exception.BadRequestException;
import org.nl.modules.common.utils.SecurityUtils;
@@ -21,7 +23,6 @@ import org.nl.system.service.dict.dao.mapper.SysDictMapper;
import org.nl.system.service.menu.dto.MenuDto;
import org.nl.system.service.menu.ISysMenuService;
import org.nl.system.service.menu.dao.SysMenu;
import org.nl.system.service.menu.dto.MenuQuery;
import org.nl.system.service.menu.dao.mapper.SysMenuMapper;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -41,6 +42,7 @@ import java.util.stream.Collectors;
@RequiredArgsConstructor
@Slf4j
public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> implements ISysMenuService {
private final SysMenuMapper baseMapper;
private final SysDictMapper sysDictMapper;
@@ -107,16 +109,19 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
@Transactional(rollbackFor = Exception.class)
@Override
public void create(SysMenu resources) {
if (resources.getPid().equals("0")) {
resources.setPid(null);
}
if (resources.getIFrame()) {
if (resources.getIframe()) {
String http = "http://", https = "https://";
if (!(resources.getPath().toLowerCase().startsWith(http) || resources.getPath().toLowerCase().startsWith(https))) {
throw new BadRequestException("外链必须以http://或者https://开头");
}
}
resources.setMenuId(IdUtil.getStringId());
if (resources.getPid().equals("0")) {
resources.setPid(null);
addSystemTypeDict(resources);
}
updateRootSystemType(resources);
baseMapper.insert(resources);
// 计算子节点数目
resources.setSubCount(0);
@@ -124,15 +129,52 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
updateSubCnt(resources.getPid());
}
private void addSystemTypeDict(SysMenu resources) {
Dict dict = sysDictMapper.selectOne(new QueryWrapper<Dict>().eq("code", DictConstantPool.DICT_SYS_CODE).orderByDesc("value").last("limit 1"));
Integer currentType = dict!=null?Integer.valueOf(dict.getValue())+1:1;
Dict currentSysType = new Dict();
currentSysType.setDictId(IdUtil.getStringId());
currentSysType.setCode(DictConstantPool.DICT_SYS_CODE);
currentSysType.setName(DictConstantPool.DICT_SYS_NAME);
currentSysType.setLabel(resources.getTitle());
currentSysType.setValue(String.valueOf(currentType));
currentSysType.setPara1(resources.getMenuId());
sysDictMapper.insert(currentSysType);
resources.setSystemType(String.valueOf(currentType));
}
private void updateRootSystemType(SysMenu sysMenu) {
String rootMenuId = this.findRootMenuId(sysMenu.getMenuId());
if (sysMenu.getMenuId().equals(rootMenuId)){
return;
}
SysMenu rootMenu = this.findById(rootMenuId);
sysMenu.setSystemType(rootMenu.getSystemType());
}
private String findRootMenuId(String menuId) {
SysMenu sysMenu = this.findById(menuId);
String pid = sysMenu.getPid();
if (StrUtil.isEmpty(pid)) {
return menuId;
} else {
return findRootMenuId(pid);
}
}
@Override
@Transactional(rollbackFor = Exception.class)
public void delete(Set<SysMenu> menuSet) {
List<String> pids = Lists.newArrayList();
for (SysMenu menu : menuSet) {
//解绑菜单
baseMapper.untiedMenu(menu.getMenuId());
baseMapper.deleteById(menu.getMenuId());
updateSubCnt(menu.getPid());
String pid = menu.getPid();
if (StringUtils.isNotEmpty(pid)){
pids.add(pid);
}
updateSubCnt(pid);
}
sysDictMapper.delete(new QueryWrapper<Dict>().in("para1", pids).eq("code", DictConstantPool.DICT_SYS_CODE));
}
@Transactional(rollbackFor = Exception.class)
@@ -142,7 +184,7 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
throw new BadRequestException("上级不能为自己");
}
SysMenu menu = baseMapper.selectById(resources.getMenuId());
if (resources.getIFrame()) {
if (resources.getIframe()) {
String http = "http://", https = "https://";
if (!(resources.getPath().toLowerCase().startsWith(http) || resources.getPath().toLowerCase().startsWith(https))) {
throw new BadRequestException("外链必须以http://或者https://开头");
@@ -150,6 +192,7 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
}
if (resources.getPid().equals("0")) {
resources.setPid(null);
addSystemTypeDict(resources);
}
// 记录的父节点ID
@@ -159,7 +202,7 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
menu.setComponent(resources.getComponent());
menu.setPath(resources.getPath());
menu.setIcon(resources.getIcon());
menu.setIFrame(resources.getIFrame());
menu.setIframe(resources.getIframe());
menu.setPid(resources.getPid());
menu.setMenuSort(resources.getMenuSort());
menu.setCache(resources.getCache());
@@ -205,7 +248,7 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
menuVo.setPath(ObjectUtil.isEmpty(menuDTO.getPid()) ? "/" + menuDTO.getPath() : menuDTO.getPath());
menuVo.setHidden(menuDTO.getHidden());
// 如果不是外链
if (!menuDTO.getIFrame()) {
if (!menuDTO.getIframe()) {
if (ObjectUtil.isEmpty(menuDTO.getPid())) {
menuVo.setComponent(StrUtil.isEmpty(menuDTO.getComponent()) ? "Layout" : menuDTO.getComponent());
} else if (!ObjectUtil.isEmpty(menuDTO.getPid()) && "0".equals(menuDTO.getType())) {
@@ -225,7 +268,7 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
MenuVo menuVo1 = new MenuVo();
menuVo1.setMeta(menuVo.getMeta());
// 非外链
if (!menuDTO.getIFrame()) {
if (!menuDTO.getIframe()) {
menuVo1.setPath("index");
menuVo1.setName(menuVo.getName());
menuVo1.setComponent(menuVo.getComponent());
@@ -297,7 +340,7 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
menuDto.setComponent(entity.getComponent());
menuDto.setPid(entity.getPid());
menuDto.setSubCount(entity.getSubCount());
menuDto.setIFrame(entity.getIFrame());
menuDto.setIframe(entity.getIframe());
menuDto.setCache(entity.getCache());
menuDto.setHidden(entity.getHidden());
menuDto.setComponentName(entity.getComponentName());
@@ -317,7 +360,7 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
@Override
public List<MenuVo> buildMenus(String systemType) {
Dict dict = sysDictMapper.selectOne(new QueryWrapper<Dict>().eq("code", "system_type").eq("value", systemType));
Dict dict = sysDictMapper.selectOne(new QueryWrapper<Dict>().eq("code", DictConstantPool.DICT_SYS_CODE).eq("value", systemType));
if (dict == null || StringUtils.isEmpty(dict.getPara1())){
throw new BadRequestException("获取对应的系统菜单不存在");
}
@@ -342,7 +385,7 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
menuVo.setPath(pid.equals(menuDTO.getPid())? "/" + menuDTO.getPath() : menuDTO.getPath());
menuVo.setHidden(menuDTO.getHidden());
// 如果不是外链
if (!menuDTO.getIFrame()) {
if (!menuDTO.getIframe()) {
if (pid.equals(menuDTO.getPid())) {
menuVo.setComponent(StrUtil.isEmpty(menuDTO.getComponent()) ? "Layout" : menuDTO.getComponent());
} else if (!pid.equals(menuDTO.getPid()) && "0".equals(menuDTO.getType())) {
@@ -362,7 +405,7 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
MenuVo menuVo1 = new MenuVo();
menuVo1.setMeta(menuVo.getMeta());
// 非外链
if (!menuDTO.getIFrame()) {
if (!menuDTO.getIframe()) {
menuVo1.setPath("index");
menuVo1.setName(menuVo.getName());
menuVo1.setComponent(menuVo.getComponent());