Эх сурвалжийг харах

用户批量保存 拆分为 500 条每次; 新增SQL 脚本文件

zhulu 11 сар өмнө
parent
commit
afaa79e4dd

+ 20 - 0
project_data/sql/1.0.11/soc/soc.sql

@@ -0,0 +1,20 @@
+-- v 1.0.11 版本升级脚本
+
+alter table mediator_video_integrity_check
+    modify record_span longtext null comment '原始录像索引';
+alter table mediator_video_integrity_check_log
+    modify record_span longtext null comment '原始录像索引';
+
+delete from sys_config where config_key = 'TOKEN_LARGESCREEN_EXPIRETIME';
+INSERT INTO `sys_config`(config_name,config_key,config_value,config_type,create_by,create_time,update_by,update_time,remark)
+VALUES ('终端token过期时间(单位:分钟)', 'TOKEN_LARGESCREEN_EXPIRETIME', '1500', 'Y', null, null, '', null, null);
+
+delete from sys_config where config_key = 'TOKEN_WEB_EXPIRETIME';
+INSERT INTO `sys_config`(config_name,config_key,config_value,config_type,create_by,create_time,update_by,update_time,remark)
+VALUES ('web token过期时间(单位:分钟)', 'TOKEN_WEB_EXPIRETIME', '480', 'Y', null, null, '', null, null);
+
+delete from sys_config where config_key = 'TOKEN_APP_EXPIRETIME';
+INSERT INTO `sys_config`(config_name,config_key,config_value,config_type,create_by,create_time,update_by,update_time,remark)
+VALUES ('app token过期时间(单位:分钟)', 'TOKEN_APP_EXPIRETIME', '480', 'Y', null, null, '', null, null);
+
+-- 升级脚本执行完成

+ 18 - 1
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/impl/SysUserServiceImpl.java

@@ -666,7 +666,24 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
     @Override
     @Async
     public void batchSaveOrUpdate(List<SysUser> sysUserList) {
-        saveOrUpdateBatch(sysUserList);
+        if(ObjectUtil.isEmpty(sysUserList))
+        {
+            return;
+        }
+        // 同步人员数据较多25000条左右,直接一次保存事务和持锁时间较长容易锁表;改为500条一次
+        int batchSize = 500;
+        for (int i = 0; i < sysUserList.size(); i += batchSize) {
+            try{
+                int toIndex = Math.min(i + batchSize, sysUserList.size());
+                List<SysUser> subList = sysUserList.subList(i, toIndex);
+                saveOrUpdateBatch(subList);
+            }
+            catch (Exception ex)
+            {
+                log.error("同步人员批量保存 batchSaveOrUpdate ,失败原因:{}", ex.getMessage()+ex.getStackTrace());
+            }
+        }
+        // this.clearUserCache();
     }