소스 검색

优化批量操作效率

mrbird 6 년 전
부모
커밋
ae80c00199

+ 0 - 17
febs-server/febs-server-system/src/main/java/cc/mrbird/febs/server/system/mapper/UserRoleMapper.java

@@ -2,23 +2,6 @@ package cc.mrbird.febs.server.system.mapper;
 
 import cc.mrbird.febs.common.entity.system.UserRole;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import org.apache.ibatis.annotations.Param;
 
 public interface UserRoleMapper extends BaseMapper<UserRole> {
-
-    /**
-     * 根据用户Id删除该用户的角色关系
-     *
-     * @param userId 用户 ID
-     * @return boolean
-     */
-    Boolean deleteByUserId(@Param("userId") Long userId);
-
-    /**
-     * 根据角色Id删除该角色的用户关系
-     *
-     * @param roleId 角色 ID
-     * @return boolean
-     */
-    Boolean deleteByRoleId(@Param("roleId") Long roleId);
 }

+ 5 - 4
febs-server/febs-server-system/src/main/java/cc/mrbird/febs/server/system/service/impl/DeptServiceImpl.java

@@ -4,6 +4,7 @@ import cc.mrbird.febs.common.entity.DeptTree;
 import cc.mrbird.febs.common.entity.constant.FebsConstant;
 import cc.mrbird.febs.common.entity.QueryRequest;
 import cc.mrbird.febs.common.entity.Tree;
+import cc.mrbird.febs.common.entity.constant.PageConstant;
 import cc.mrbird.febs.common.entity.system.Dept;
 import cc.mrbird.febs.common.utils.SortUtil;
 import cc.mrbird.febs.common.utils.TreeUtil;
@@ -36,12 +37,12 @@ public class DeptServiceImpl extends ServiceImpl<DeptMapper, Dept> implements ID
             buildTrees(trees, depts);
             List<? extends Tree> deptTree = TreeUtil.build(trees);
 
-            result.put("rows", deptTree);
-            result.put("total", depts.size());
+            result.put(PageConstant.ROWS, deptTree);
+            result.put(PageConstant.TOTAL, depts.size());
         } catch (Exception e) {
             log.error("获取部门列表失败", e);
-            result.put("rows", null);
-            result.put("total", 0);
+            result.put(PageConstant.ROWS, null);
+            result.put(PageConstant.TOTAL, 0);
         }
         return result;
     }

+ 5 - 4
febs-server/febs-server-system/src/main/java/cc/mrbird/febs/server/system/service/impl/EximportServiceImpl.java

@@ -3,12 +3,13 @@ package cc.mrbird.febs.server.system.service.impl;
 import cc.mrbird.febs.common.entity.QueryRequest;
 import cc.mrbird.febs.common.entity.system.Eximport;
 import cc.mrbird.febs.server.system.mapper.EximportMapper;
+import cc.mrbird.febs.server.system.properties.FebsServerSystemProperties;
 import cc.mrbird.febs.server.system.service.IEximportService;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Value;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;
@@ -23,8 +24,8 @@ import java.util.List;
 @Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class)
 public class EximportServiceImpl extends ServiceImpl<EximportMapper, Eximport> implements IEximportService {
 
-    @Value("${febs.max.batch.insert.num:1000}")
-    private int batchInsertMaxNum;
+    @Autowired
+    private FebsServerSystemProperties properties;
 
     @Override
     public IPage<Eximport> findEximports(QueryRequest request, Eximport eximport) {
@@ -35,7 +36,7 @@ public class EximportServiceImpl extends ServiceImpl<EximportMapper, Eximport> i
     @Override
     @Transactional
     public void batchInsert(List<Eximport> list) {
-        this.saveBatch(list, batchInsertMaxNum);
+        this.saveBatch(list, properties.getBatchInsertMaxNum());
     }
 
 }

+ 1 - 1
febs-server/febs-server-system/src/main/java/cc/mrbird/febs/server/system/service/impl/LoginLogServiceImpl.java

@@ -96,7 +96,7 @@ public class LoginLogServiceImpl extends ServiceImpl<LoginLogMapper, LoginLog> i
 
         QueryRequest request = new QueryRequest();
         request.setPageNum(1);
-        request.setPageSize(7);
+        request.setPageSize(7); // 近7日记录
 
         IPage<LoginLog> loginLogs = this.findLoginLogs(loginLog, request);
         return loginLogs.getRecords();

+ 5 - 4
febs-server/febs-server-system/src/main/java/cc/mrbird/febs/server/system/service/impl/MenuServiceImpl.java

@@ -2,6 +2,7 @@ package cc.mrbird.febs.server.system.service.impl;
 
 import cc.mrbird.febs.common.entity.MenuTree;
 import cc.mrbird.febs.common.entity.Tree;
+import cc.mrbird.febs.common.entity.constant.PageConstant;
 import cc.mrbird.febs.common.entity.router.RouterMeta;
 import cc.mrbird.febs.common.entity.router.VueRouter;
 import cc.mrbird.febs.common.entity.system.Menu;
@@ -48,17 +49,17 @@ public class MenuServiceImpl extends ServiceImpl<MenuMapper, Menu> implements IM
             buildTrees(trees, menus);
 
             if (StringUtils.equals(menu.getType(), Menu.TYPE_BUTTON)) {
-                result.put("rows", trees);
+                result.put(PageConstant.ROWS, trees);
             } else {
                 List<? extends Tree> menuTree = TreeUtil.build(trees);
-                result.put("rows", menuTree);
+                result.put(PageConstant.ROWS, menuTree);
             }
 
             result.put("total", menus.size());
         } catch (NumberFormatException e) {
             log.error("查询菜单失败", e);
-            result.put("rows", null);
-            result.put("total", 0);
+            result.put(PageConstant.ROWS, null);
+            result.put(PageConstant.TOTAL, 0);
         }
         return result;
     }

+ 7 - 4
febs-server/febs-server-system/src/main/java/cc/mrbird/febs/server/system/service/impl/RoleServiceImpl.java

@@ -20,6 +20,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Date;
 import java.util.List;
@@ -95,14 +96,16 @@ public class RoleServiceImpl extends ServiceImpl<RoleMapper, Role> implements IR
     }
 
     private void setRoleMenus(Role role, String[] menuIds) {
+        List<RoleMenu> roleMenus = new ArrayList<>();
         Arrays.stream(menuIds).forEach(menuId -> {
-            RoleMenu rm = new RoleMenu();
+            RoleMenu roleMenu = new RoleMenu();
             if (StringUtils.isNotBlank(menuId)) {
-                rm.setMenuId(Long.valueOf(menuId));
+                roleMenu.setMenuId(Long.valueOf(menuId));
             }
-            rm.setRoleId(role.getRoleId());
-            this.roleMenuService.save(rm);
+            roleMenu.setRoleId(role.getRoleId());
+            roleMenus.add(roleMenu);
         });
+        this.roleMenuService.saveBatch(roleMenus);
     }
 
 }

+ 17 - 15
febs-server/febs-server-system/src/main/java/cc/mrbird/febs/server/system/service/impl/UserRoleServiceImpl.java

@@ -17,22 +17,24 @@ import java.util.stream.Collectors;
 @Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class)
 public class UserRoleServiceImpl extends ServiceImpl<UserRoleMapper, UserRole> implements IUserRoleService {
 
-	@Override
-	@Transactional
-	public void deleteUserRolesByRoleId(String[] roleIds) {
-		Arrays.stream(roleIds).forEach(id -> baseMapper.deleteByRoleId(Long.valueOf(id)));
-	}
+    @Override
+    @Transactional
+    public void deleteUserRolesByRoleId(String[] roleIds) {
+        List<String> list = Arrays.asList(roleIds);
+        this.baseMapper.delete(new LambdaQueryWrapper<UserRole>().in(UserRole::getRoleId, list));
+    }
 
-	@Override
-	@Transactional
-	public void deleteUserRolesByUserId(String[] userIds) {
-		Arrays.stream(userIds).forEach(id -> baseMapper.deleteByUserId(Long.valueOf(id)));
-	}
+    @Override
+    @Transactional
+    public void deleteUserRolesByUserId(String[] userIds) {
+        List<String> list = Arrays.asList(userIds);
+        this.baseMapper.delete(new LambdaQueryWrapper<UserRole>().in(UserRole::getUserId, list));
+    }
 
-	@Override
-	public List<String> findUserIdsByRoleId(String[] roleIds) {
-		List<UserRole> list = baseMapper.selectList(new LambdaQueryWrapper<UserRole>().in(UserRole::getRoleId, String.join(",", roleIds)));
-		return list.stream().map(userRole -> String.valueOf(userRole.getUserId())).collect(Collectors.toList());
-	}
+    @Override
+    public List<String> findUserIdsByRoleId(String[] roleIds) {
+        List<UserRole> list = baseMapper.selectList(new LambdaQueryWrapper<UserRole>().in(UserRole::getRoleId, String.join(",", roleIds)));
+        return list.stream().map(userRole -> String.valueOf(userRole.getUserId())).collect(Collectors.toList());
+    }
 
 }

+ 13 - 10
febs-server/febs-server-system/src/main/java/cc/mrbird/febs/server/system/service/impl/UserServiceImpl.java

@@ -1,7 +1,7 @@
 package cc.mrbird.febs.server.system.service.impl;
 
-import cc.mrbird.febs.common.entity.constant.FebsConstant;
 import cc.mrbird.febs.common.entity.QueryRequest;
+import cc.mrbird.febs.common.entity.constant.FebsConstant;
 import cc.mrbird.febs.common.entity.system.SystemUser;
 import cc.mrbird.febs.common.entity.system.UserRole;
 import cc.mrbird.febs.common.utils.SortUtil;
@@ -20,6 +20,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Date;
 import java.util.List;
@@ -132,20 +133,22 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, SystemUser> impleme
     @Override
     @Transactional
     public void resetPassword(String[] usernames) {
-        for (String username : usernames) {
-            SystemUser user = new SystemUser();
-            user.setPassword(passwordEncoder.encode(SystemUser.DEFAULT_PASSWORD));
-            this.baseMapper.update(user, new LambdaQueryWrapper<SystemUser>().eq(SystemUser::getUsername, username));
-        }
+        SystemUser params = new SystemUser();
+        params.setPassword(passwordEncoder.encode(SystemUser.DEFAULT_PASSWORD));
+
+        List<String> list = Arrays.asList(usernames);
+        this.baseMapper.update(params, new LambdaQueryWrapper<SystemUser>().in(SystemUser::getUsername, list));
 
     }
 
     private void setUserRoles(SystemUser user, String[] roles) {
+        List<UserRole> userRoles = new ArrayList<>();
         Arrays.stream(roles).forEach(roleId -> {
-            UserRole ur = new UserRole();
-            ur.setUserId(user.getUserId());
-            ur.setRoleId(Long.valueOf(roleId));
-            userRoleService.save(ur);
+            UserRole userRole = new UserRole();
+            userRole.setUserId(user.getUserId());
+            userRole.setRoleId(Long.valueOf(roleId));
+            userRoles.add(userRole);
         });
+        userRoleService.saveBatch(userRoles);
     }
 }

+ 0 - 14
febs-server/febs-server-system/src/main/resources/mapper/system/UserRoleMapper.xml

@@ -1,14 +0,0 @@
-<?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="cc.mrbird.febs.server.system.mapper.UserRoleMapper">
-    <!--根据用户Id删除该用户的角色关系-->
-    <delete id="deleteByUserId">
-		DELETE FROM t_user_role WHERE user_id = #{userId}
-	</delete>
-
-    <!--根据角色Id删除该角色的用户关系-->
-    <delete id="deleteByRoleId">
-		DELETE FROM t_user_role WHERE role_id = #{roleId}
-	</delete>
-
-</mapper>