Răsfoiți Sursa

:zap: 修复系统管理部分bug

smallchill 7 ani în urmă
părinte
comite
9ece38eb6d

+ 1 - 1
doc/sql/bladex-saber-mysql.sql

@@ -264,7 +264,7 @@ CREATE TABLE `blade_role`  (
 -- Records of blade_role
 -- ----------------------------
 BEGIN;
-INSERT INTO `blade_role` VALUES (1, '000000', 0, '超级管理员', 1, 'administrator', 0);
+INSERT INTO `blade_role` VALUES (1, '000000', 0, '超级管理员', 1, 'administrator', 0), (2, '000000', 0, '用户', 2, 'user', 0);
 COMMIT;
 
 -- ----------------------------

+ 1 - 1
doc/sql/bladex-sword-mysql.sql

@@ -264,7 +264,7 @@ CREATE TABLE `blade_role`  (
 -- Records of blade_role
 -- ----------------------------
 BEGIN;
-INSERT INTO `blade_role` VALUES (1, '000000', 0, '超级管理员', 1, 'administrator', 0);
+INSERT INTO `blade_role` VALUES (1, '000000', 0, '超级管理员', 1, 'administrator', 0), (2, '000000', 0, '用户', 2, 'user', 0);
 COMMIT;
 
 -- ----------------------------

+ 5 - 0
pom.xml

@@ -97,6 +97,11 @@
             <artifactId>spring-boot-devtools</artifactId>
             <optional>true</optional>
         </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-test</artifactId>
+            <scope>test</scope>
+        </dependency>
     </dependencies>
 
     <build>

+ 21 - 0
src/main/java/org/springblade/core/secure/utils/SecureUtil.java

@@ -164,6 +164,27 @@ public class SecureUtil {
 		return (null == user) ? StringPool.EMPTY : user.getUserName();
 	}
 
+	/**
+	 * 获取用户角色
+	 *
+	 * @return userName
+	 */
+	public static String getUserRole() {
+		BladeUser user = getUser();
+		return (null == user) ? StringPool.EMPTY : user.getRoleName();
+	}
+
+	/**
+	 * 获取用角色
+	 *
+	 * @param request request
+	 * @return userName
+	 */
+	public static String getUserRole(HttpServletRequest request) {
+		BladeUser user = getUser(request);
+		return (null == user) ? StringPool.EMPTY : user.getRoleName();
+	}
+
 	/**
 	 * 获取租户编号
 	 *

+ 2 - 6
src/main/java/org/springblade/modules/system/controller/UserController.java

@@ -29,7 +29,6 @@ import org.springblade.core.mp.support.Query;
 import org.springblade.core.secure.BladeUser;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.constant.BladeConstant;
-import org.springblade.core.tool.utils.DigestUtil;
 import org.springblade.core.tool.utils.Func;
 import org.springblade.modules.system.entity.User;
 import org.springblade.modules.system.service.IDictService;
@@ -83,16 +82,14 @@ public class UserController {
 		UserWrapper userWrapper = new UserWrapper(userService, dictService);
 		return R.data(userWrapper.pageVO(pages));
 	}
+
 	/**
 	 * 新增或修改
 	 */
 	@PostMapping("/submit")
 	@ApiOperation(value = "新增或修改", notes = "传入User", position = 3)
 	public R submit(@Valid @RequestBody User user) {
-		if (Func.isNotEmpty(user.getPassword())) {
-			user.setPassword(DigestUtil.encrypt(user.getPassword()));
-		}
-		return R.status(userService.saveOrUpdate(user));
+		return R.status(userService.submit(user));
 	}
 
 	/**
@@ -113,7 +110,6 @@ public class UserController {
 		return R.status(userService.deleteLogic(Func.toIntList(ids)));
 	}
 
-
 	/**
 	 * 设置菜单权限
 	 *

+ 2 - 1
src/main/java/org/springblade/modules/system/mapper/RoleMapper.java

@@ -43,8 +43,9 @@ public interface RoleMapper extends BaseMapper<Role> {
 	 * 获取树形节点
 	 *
 	 * @param tenantCode
+	 * @param excludeRole
 	 * @return
 	 */
-	List<RoleVO> tree(String tenantCode);
+	List<RoleVO> tree(String tenantCode, String excludeRole);
 
 }

+ 5 - 2
src/main/java/org/springblade/modules/system/mapper/RoleMapper.xml

@@ -32,8 +32,11 @@
 
     <select id="tree" resultMap="treeNodeResultMap">
         select id, parent_id, role_name as title, id as 'value', id as 'key' from blade_role where is_deleted = 0
-        <if test="_parameter!=null">
-            and tenant_code = #{_parameter}
+        <if test="param1!=null">
+            and tenant_code = #{param1}
+        </if>
+        <if test="param2!=null">
+            and role_alias &lt;&gt; #{param2}
         </if>
     </select>
 

+ 1 - 1
src/main/java/org/springblade/modules/system/mapper/UserMapper.xml

@@ -46,7 +46,7 @@
         FROM
             blade_user
         WHERE
-            tenant_code = #{param1} and account = #{param2} AND password = #{param3}
+            tenant_code = #{param1} and account = #{param2} and password = #{param3} and is_deleted = 0
     </select>
 
     <select id="getRoleName" resultType="java.lang.String">

+ 7 - 0
src/main/java/org/springblade/modules/system/service/IUserService.java

@@ -31,6 +31,13 @@ import java.util.List;
  */
 public interface IUserService extends BaseService<User> {
 
+	/**
+	 * 新增或修改用户
+	 * @param user
+	 * @return
+	 */
+	boolean submit(User user);
+
 	/**
 	 * 自定义分页
 	 *

+ 10 - 1
src/main/java/org/springblade/modules/system/service/impl/RoleServiceImpl.java

@@ -20,7 +20,11 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import lombok.AllArgsConstructor;
+import org.springblade.core.secure.utils.SecureUtil;
+import org.springblade.core.tool.constant.RoleConstant;
 import org.springblade.core.tool.node.ForestNodeMerger;
+import org.springblade.core.tool.utils.CollectionUtil;
+import org.springblade.core.tool.utils.Func;
 import org.springblade.modules.system.entity.Role;
 import org.springblade.modules.system.entity.RoleMenu;
 import org.springblade.modules.system.mapper.RoleMapper;
@@ -53,7 +57,12 @@ public class RoleServiceImpl extends ServiceImpl<RoleMapper, Role> implements IR
 
 	@Override
 	public List<RoleVO> tree(String tenantCode) {
-		return ForestNodeMerger.merge(baseMapper.tree(tenantCode));
+		String userRole = SecureUtil.getUserRole();
+		String excludeRole = null;
+		if (!CollectionUtil.contains(Func.toStrArray(userRole), RoleConstant.ADMIN)) {
+			excludeRole = RoleConstant.ADMIN;
+		}
+		return ForestNodeMerger.merge(baseMapper.tree(tenantCode, excludeRole));
 	}
 
 	@Override

+ 13 - 0
src/main/java/org/springblade/modules/system/service/impl/UserServiceImpl.java

@@ -19,6 +19,7 @@ package org.springblade.modules.system.service.impl;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.exceptions.ApiException;
 import org.springblade.common.constant.CommonConstant;
 import org.springblade.core.mp.base.BaseServiceImpl;
 import org.springblade.core.tool.utils.DigestUtil;
@@ -40,6 +41,18 @@ import java.util.List;
 @Service
 public class UserServiceImpl extends BaseServiceImpl<UserMapper, User> implements IUserService {
 
+	@Override
+	public boolean submit(User user) {
+		if (Func.isNotEmpty(user.getPassword())) {
+			user.setPassword(DigestUtil.encrypt(user.getPassword()));
+		}
+		Integer cnt = baseMapper.selectCount(Wrappers.<User>query().lambda().eq(User::getTenantCode, user.getTenantCode()).eq(User::getAccount, user.getAccount()));
+		if (cnt > 0) {
+			throw new ApiException("当前用户已存在!");
+		}
+		return saveOrUpdate(user);
+	}
+
 	@Override
 	public IPage<User> selectUserPage(IPage<User> page, User user) {
 		return page.setRecords(baseMapper.selectUserPage(page, user));