Răsfoiți Sursa

优化接口

lixueqiang 6 luni în urmă
părinte
comite
bbfa5cf07a

+ 3 - 2
lxq-admin/src/main/java/com/lxq/admin/biz/controller/SysRoleController.java

@@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.lxq.common.core.constant.CacheConstants;
 import com.lxq.common.core.util.R;
 import com.lxq.common.log.annotation.SysLog;
+import com.lxq.system.biz.domain.vo.RoleEditVO;
 import com.lxq.system.biz.domain.vo.RoleVO;
 import com.lxq.system.biz.model.SysRole;
 import com.lxq.system.biz.service.SysRoleService;
@@ -80,8 +81,8 @@ public class SysRoleController {
 	@PutMapping("update")
 	@PreAuthorize("@pms.hasPermission('sys_role_edit')")
 	@CacheEvict(value = CacheConstants.ROLE_DETAILS, allEntries = true)
-	public R update(@Valid @RequestBody SysRole sysRole) {
-		return R.ok(sysRoleService.updateById(sysRole));
+	public R update(@Valid @RequestBody RoleEditVO sysRole) {
+		return R.ok(sysRoleService.updateByRole(sysRole));
 	}
 
 	/**

+ 1 - 2
lxq-admin/src/main/java/com/lxq/admin/biz/controller/SysUserController.java

@@ -31,7 +31,7 @@ import org.springframework.web.bind.annotation.*;
  */
 @RestController
 @AllArgsConstructor
-@RequestMapping("/user")
+@RequestMapping("/sysUSer")
 @Tag(description = "user", name = "用户管理模块")
 @SecurityRequirement(name = HttpHeaders.AUTHORIZATION)
 public class SysUserController {
@@ -158,7 +158,6 @@ public class SysUserController {
 	 */
 	@SysLog("修改个人信息")
 	@PutMapping("/edit")
-	@PreAuthorize("@pms.hasPermission('sys_user_edit')")
 	public R updateUserInfo(@Valid @RequestBody UserDTO userDto) {
 		return userService.updateUserInfo(userDto);
 	}

+ 5 - 5
lxq-common/lxq-common-core/src/main/java/com/lxq/common/core/constant/enums/MenuTypeEnum.java

@@ -15,19 +15,19 @@ import lombok.RequiredArgsConstructor;
 public enum MenuTypeEnum {
 
 	/**
-	 * 左侧菜单
+	 * 目录
 	 */
-	LEFT_MENU("0", "left"),
+	LEFT_MENU("0", "目录"),
 
 	/**
-	 * 顶部菜单
+	 * 菜单
 	 */
-	TOP_MENU("2", "top"),
+	TOP_MENU("1", "菜单"),
 
 	/**
 	 * 按钮
 	 */
-	BUTTON("1", "button");
+	BUTTON("2", "button");
 
 	/**
 	 * 类型

+ 20 - 0
lxq-system/src/main/java/com/lxq/system/biz/domain/vo/RoleEditVO.java

@@ -0,0 +1,20 @@
+package com.lxq.system.biz.domain.vo;
+
+import com.lxq.system.biz.model.SysRole;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * @author 没秃顶的码农
+ * @date 2021/2/10
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class RoleEditVO extends SysRole {
+
+	/**
+	 * 菜单列表
+	 */
+	private String[] permissions;
+
+}

+ 6 - 2
lxq-system/src/main/java/com/lxq/system/biz/model/SysMenu.java

@@ -56,7 +56,6 @@ public class SysMenu extends Model<SysMenu> {
 	/**
 	 * 父菜单ID
 	 */
-	@NotNull(message = "菜单父ID不能为空")
 	@Schema(description = "菜单父id")
 	private Long parentId;
 
@@ -72,6 +71,12 @@ public class SysMenu extends Model<SysMenu> {
 	@Schema(description = "前端路由标识路径")
 	private String path;
 
+	/**
+	 * 是否外链, 0是否,1是
+	 */
+	@Schema(description = "是否外链, 0是否,1是")
+	private String link;
+
 	/**
 	 * 菜单显示隐藏控制
 	 */
@@ -131,7 +136,6 @@ public class SysMenu extends Model<SysMenu> {
 	/**
 	 * 0--正常 1--删除
 	 */
-	@TableLogic
 	@TableField(fill = FieldFill.INSERT)
 	@Schema(description = "删除标记,1:已删除,0:正常")
 	private String delFlag;

+ 0 - 1
lxq-system/src/main/java/com/lxq/system/biz/model/SysPost.java

@@ -77,7 +77,6 @@ public class SysPost extends Model<SysPost> {
 	/**
 	 * 是否删除 -1:已删除 0:正常
 	 */
-	@TableLogic
 	@TableField(fill = FieldFill.INSERT)
 	@Schema(description = "是否删除  -1:已删除  0:正常")
 	private String delFlag;

+ 0 - 1
lxq-system/src/main/java/com/lxq/system/biz/model/SysRole.java

@@ -72,7 +72,6 @@ public class SysRole extends Model<SysRole> {
 	/**
 	 * 删除标识(0-正常,1-删除)
 	 */
-	@TableLogic
 	@TableField(fill = FieldFill.INSERT)
 	@Schema(description = "删除标记,1:已删除,0:正常")
 	private String delFlag;

+ 2 - 0
lxq-system/src/main/java/com/lxq/system/biz/service/SysRoleService.java

@@ -1,6 +1,7 @@
 package com.lxq.system.biz.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.lxq.system.biz.domain.vo.RoleEditVO;
 import com.lxq.system.biz.domain.vo.RoleExcelVO;
 import com.lxq.system.biz.domain.vo.RoleVO;
 import com.lxq.system.biz.model.SysRole;
@@ -52,4 +53,5 @@ public interface SysRoleService extends IService<SysRole> {
 	 */
 	List<RoleExcelVO> listRole();
 
+    Boolean updateByRole(RoleEditVO sysRole);
 }

+ 23 - 19
lxq-system/src/main/java/com/lxq/system/biz/service/impl/SysMenuServiceImpl.java

@@ -4,6 +4,7 @@ import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.lang.tree.Tree;
 import cn.hutool.core.lang.tree.TreeNode;
 import cn.hutool.core.lang.tree.TreeUtil;
+import cn.hutool.core.text.CharSequenceUtil;
 import cn.hutool.core.util.BooleanUtil;
 import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
@@ -88,21 +89,21 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
 
 		List<TreeNode<Long>> collect = baseMapper
 			.selectList(Wrappers.<SysMenu>lambdaQuery()
-				.like(StrUtil.isNotBlank(menuName), SysMenu::getName, menuName)
-				.eq(StrUtil.isNotBlank(type), SysMenu::getMenuType, type)
+				.like(CharSequenceUtil.isNotBlank(menuName), SysMenu::getName, menuName)
+				.eq(CharSequenceUtil.isNotBlank(type), SysMenu::getMenuType, type)
 				.orderByAsc(SysMenu::getSortOrder))
 			.stream()
 			.map(getNodeFunction(null))
-			.collect(Collectors.toList());
+			.toList();
 
 		// 模糊查询 不组装树结构 直接返回 表格方便编辑
-		if (StrUtil.isNotBlank(menuName)) {
+		if (CharSequenceUtil.isNotBlank(menuName)) {
 			return collect.stream().map(node -> {
 				Tree<Long> tree = new Tree<>();
 				tree.putAll(node.getExtra());
 				BeanUtils.copyProperties(node, tree);
 				return tree;
-			}).collect(Collectors.toList());
+			}).toList();
 		}
 
 		return TreeUtil.build(collect, parent);
@@ -125,7 +126,7 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
 		List<TreeNode<Long>> collect = all.stream()
 			.filter(menuTypePredicate(type))
 			.map(getNodeFunction(permissions))
-			.collect(Collectors.toList());
+			.toList();
 
 		Long parent = parentId == null ? CommonConstants.MENU_TREE_ROOT_ID : parentId;
 		return TreeUtil.build(collect, parent);
@@ -141,26 +142,29 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
 			node.setWeight(menu.getSortOrder());
 			// 扩展属性
 			Map<String, Object> extra = new HashMap<>();
-			extra.put("path", menu.getPath());
-			extra.put("menuType", menu.getMenuType());
-			if(permissions != null){
-				extra.put("permission", permissions.get(menu.getMenuId()));
-			}else{
-				extra.put("permission", menu.getPermission());
+
+			if(Boolean.TRUE.equals(BooleanUtil.toBooleanObject(menu.getEmbedded()))){
+
+				extra.put("component", "IFrameView");
+				extra.put("path", "/system/iframe");
+			}else {
+				extra.put("component", menu.getPath());
+				extra.put("path", menu.getPath());
 			}
-			extra.put("sortOrder", menu.getSortOrder());
+			extra.put("menuType", menu.getMenuType());
+			extra.put("permission", menu.getPermission());
 
 			// 适配 vue3
 			Map<String, Object> meta = new HashMap<>();
 			meta.put("title", menu.getName());
-			meta.put("isLink", menu.getPath() != null && menu.getPath().startsWith("feign") ? menu.getPath() : "");
-			meta.put("isHide", !BooleanUtil.toBooleanObject(menu.getVisible()));
-			meta.put("isKeepAlive", BooleanUtil.toBooleanObject(menu.getKeepAlive()));
-			meta.put("isAffix", false);
+			meta.put("link", Boolean.TRUE.equals(BooleanUtil.toBooleanObject(menu.getLink())) ? menu.getPath() : "");
+			meta.put("hideInMenu", BooleanUtil.toBooleanObject(menu.getVisible()));
+			meta.put("keepAlive", BooleanUtil.toBooleanObject(menu.getKeepAlive()));
+			meta.put("affixTab", false);
 			meta.put("isIframe", BooleanUtil.toBooleanObject(menu.getEmbedded()));
+			meta.put("iframeSrc", Boolean.TRUE.equals(BooleanUtil.toBooleanObject(menu.getEmbedded())) ? menu.getPath() : "");
 			meta.put("icon", menu.getIcon());
-			// 增加英文
-			meta.put("enName", menu.getEnName());
+			meta.put("order", menu.getSortOrder());
 
 			extra.put("meta", meta);
 			node.setExtra(extra);

+ 5 - 3
lxq-system/src/main/java/com/lxq/system/biz/service/impl/SysRoleMenuServiceImpl.java

@@ -1,5 +1,7 @@
 package com.lxq.system.biz.service.impl;
 
+import cn.hutool.core.text.CharSequenceUtil;
+import cn.hutool.core.text.StrPool;
 import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -42,15 +44,15 @@ public class SysRoleMenuServiceImpl extends ServiceImpl<SysRoleMenuMapper, SysRo
 	public Boolean saveRoleMenus(Long roleId, String menuIds) {
 		this.remove(Wrappers.<SysRoleMenu>query().lambda().eq(SysRoleMenu::getRoleId, roleId));
 
-		if (StrUtil.isBlank(menuIds)) {
+		if (CharSequenceUtil.isBlank(menuIds)) {
 			return Boolean.TRUE;
 		}
-		List<SysRoleMenu> roleMenuList = Arrays.stream(menuIds.split(StrUtil.COMMA)).map(menuId -> {
+		List<SysRoleMenu> roleMenuList = Arrays.stream(menuIds.split(StrPool.COMMA)).map(menuId -> {
 			SysRoleMenu roleMenu = new SysRoleMenu();
 			roleMenu.setRoleId(roleId);
 			roleMenu.setMenuId(Long.valueOf(menuId));
 			return roleMenu;
-		}).collect(Collectors.toList());
+		}).toList();
 
 		// 清空userinfo
 		cacheManager.getCache(CacheConstants.USER_DETAILS).clear();

+ 17 - 0
lxq-system/src/main/java/com/lxq/system/biz/service/impl/SysRoleServiceImpl.java

@@ -2,8 +2,10 @@ package com.lxq.system.biz.service.impl;
 
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.text.StrPool;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.lxq.system.biz.domain.vo.RoleEditVO;
 import com.lxq.system.biz.domain.vo.RoleExcelVO;
 import com.lxq.system.biz.domain.vo.RoleVO;
 import com.lxq.system.biz.mapper.SysRoleMapper;
@@ -17,6 +19,7 @@ import org.springframework.cache.annotation.Cacheable;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.util.Arrays;
 import java.util.List;
 import java.util.stream.Collectors;
 
@@ -89,6 +92,20 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> impl
 		}).collect(Collectors.toList());
 	}
 
+	@Override
+	@Transactional
+	public Boolean updateByRole(RoleEditVO sysRole) {
+
+		//更新权限
+		if(sysRole.getPermissions().length > 0){
+			RoleVO roleVO = new RoleVO();
+			roleVO.setRoleId(sysRole.getRoleId());
+			roleVO.setMenuIds(String.join(StrPool.COMMA, sysRole.getPermissions()));
+			updateRoleMenus(roleVO);
+		}
+		return updateById(sysRole);
+	}
+
 
 	/**
 	 * 插入excel Role

+ 17 - 21
lxq-system/src/main/java/com/lxq/system/biz/service/impl/SysUserServiceImpl.java

@@ -1,7 +1,7 @@
 package com.lxq.system.biz.service.impl;
 
 import cn.hutool.core.collection.CollUtil;
-import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.text.CharSequenceUtil;
 import cn.hutool.core.util.ArrayUtil;
 import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -19,10 +19,10 @@ import com.lxq.common.security.util.SecurityUtils;
 import com.lxq.system.biz.domain.dto.UserDTO;
 import com.lxq.system.biz.domain.dto.UserInfo;
 import com.lxq.system.biz.domain.vo.UserVO;
-import com.lxq.system.biz.model.*;
 import com.lxq.system.biz.mapper.SysUserMapper;
 import com.lxq.system.biz.mapper.SysUserPostMapper;
 import com.lxq.system.biz.mapper.SysUserRoleMapper;
+import com.lxq.system.biz.model.*;
 import com.lxq.system.biz.service.SysMenuService;
 import com.lxq.system.biz.service.SysPublicParamService;
 import com.lxq.system.biz.service.SysRoleService;
@@ -40,7 +40,6 @@ import org.springframework.transaction.annotation.Transactional;
 
 import java.time.LocalDateTime;
 import java.util.*;
-import java.util.stream.Collectors;
 
 /**
  * sys用户服务
@@ -81,17 +80,15 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
 		sysUser.setCreateBy(userDto.getUsername());
 		sysUser.setPassword(ENCODER.encode(userDto.getPassword()));
 		List<SysUser> list = this.list(new LambdaQueryWrapper<SysUser>().eq(SysUser::getUsername, userDto.getUsername()));
-		AssertUtil.isTrue(CollectionUtil.isEmpty(list),"用户名称已经存在!");
+		AssertUtil.isTrue(CollUtil.isEmpty(list),"用户名称已经存在!");
 		baseMapper.insert(sysUser);
 		// 保存用户岗位信息
-		Optional.ofNullable(userDto.getPost()).ifPresent(posts -> {
-			posts.stream().map(postId -> {
-				SysUserPost userPost = new SysUserPost();
-				userPost.setUserId(sysUser.getUserId());
-				userPost.setPostId(postId);
-				return userPost;
-			}).forEach(sysUserPostMapper::insert);
-		});
+		Optional.ofNullable(userDto.getPost()).ifPresent(posts -> posts.stream().map(postId -> {
+			SysUserPost userPost = new SysUserPost();
+			userPost.setUserId(sysUser.getUserId());
+			userPost.setPostId(postId);
+			return userPost;
+		}).forEach(sysUserPostMapper::insert));
 		// 如果角色为空,赋默认角色
 		if (CollUtil.isEmpty(userDto.getRole())) {
 			// 获取默认角色编码
@@ -133,7 +130,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
 		List<Long> roleIds = sysRoleService.findRolesByUserId(sysUser.getUserId())
 			.stream()
 			.map(SysRole::getRoleId)
-			.collect(Collectors.toList());
+			.toList();
 		userInfo.setRoles(ArrayUtil.toArray(roleIds, Long.class));
 
 		// 设置权限列表(menu.permission)
@@ -154,7 +151,6 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
 	 * 分页查询用户信息(含有角色信息)
 	 * @param page 分页对象
 	 * @param userDTO 参数列表
-	 * @return
 	 */
 	@Override
 	public IPage getUsersWithRolePage(Page page, UserDTO userDTO) {
@@ -196,11 +192,10 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
 	@Override
 	@CacheEvict(value = CacheConstants.USER_DETAILS, key = "#userDto.username")
 	public R<Boolean> updateUserInfo(UserDTO userDto) {
-		UserVO userVO = baseMapper.getUserVoByUsername(userDto.getUsername());
 
 		SysUser sysUser = new SysUser();
 		sysUser.setPhone(userDto.getPhone());
-		sysUser.setUserId(userVO.getUserId());
+		sysUser.setUserId(SecurityUtils.getUser().getId());
 		sysUser.setAvatar(userDto.getAvatar());
 		sysUser.setNickname(userDto.getNickname());
 		sysUser.setName(userDto.getName());
@@ -218,8 +213,8 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
 		SysUser sysUser = new SysUser();
 		BeanUtils.copyProperties(userDto, sysUser);
 		sysUser.setUpdateTime(LocalDateTime.now());
-		if (StrUtil.isNotBlank(userDto.getNewPwd()) && !user.getPassword().equals(userDto.getNewPwd())) {
-			sysUser.setPassword(ENCODER.encode(userDto.getNewPwd()));
+		if (CharSequenceUtil.isNotBlank(userDto.getPassword()) && !user.getPassword().equals(userDto.getPassword())) {
+			sysUser.setPassword(ENCODER.encode(userDto.getPassword()));
 		}
 		this.updateById(sysUser);
 
@@ -262,12 +257,13 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
 	@Override
 	@CacheEvict(value = CacheConstants.USER_DETAILS, key = "#userDto.username")
 	public R changePassword(UserDTO userDto) {
-		UserVO userVO = baseMapper.getUserVoByUsername(userDto.getUsername());
+
+		SysUser userVO = getById(SecurityUtils.getUser().getId());
 		if (Objects.isNull(userVO)) {
 			return R.failed("用户不存在");
 		}
 
-		if (StrUtil.isEmpty(userDto.getPassword())) {
+		if (CharSequenceUtil.isEmpty(userDto.getPassword())) {
 			return R.failed("原密码不能为空");
 		}
 
@@ -276,7 +272,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
 			return R.failed(ErrorTypeEnum.SYS_USER_UPDATE_PASSWORD_ERROR);
 		}
 
-		if (StrUtil.isEmpty(userDto.getNewPwd())) {
+		if (CharSequenceUtil.isEmpty(userDto.getNewPwd())) {
 			return R.failed("新密码不能为空");
 		}
 		String password = ENCODER.encode(userDto.getNewPwd());

+ 3 - 1
lxq-system/src/main/resources/mapper/SysMenuMapper.xml

@@ -20,6 +20,7 @@
 		<result column="del_flag" property="delFlag"/>
 		<result column="embedded" property="embedded"/>
 		<result column="visible" property="visible"/>
+		<result column="link" property="link"/>
 	</resultMap>
 
 	<!--通过角色查询菜单信息-->
@@ -38,7 +39,8 @@
 			   sys_menu.update_time,
 			   sys_menu.del_flag,
 			   sys_menu.embedded,
-			   sys_menu.visible
+			   sys_menu.visible,
+			   sys_menu.link
 		FROM sys_menu
 					 LEFT JOIN sys_role_menu ON sys_menu.menu_id = sys_role_menu.menu_id
 		WHERE sys_menu.del_flag = '0'