|
@@ -1,11 +1,13 @@
|
|
|
package com.qunzhixinxi.hnqz.admin.service.impl;
|
|
|
|
|
|
import cn.hutool.core.collection.CollUtil;
|
|
|
+import cn.hutool.core.util.IdUtil;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import com.google.common.collect.Lists;
|
|
|
import com.qunzhixinxi.hnqz.admin.api.entity.SysUserArea;
|
|
|
import com.qunzhixinxi.hnqz.admin.mapper.SysUserAreaMapper;
|
|
|
+import com.qunzhixinxi.hnqz.admin.mapper.SysUserAreaTempMapper;
|
|
|
import com.qunzhixinxi.hnqz.admin.service.SysUserAreaService;
|
|
|
import lombok.AllArgsConstructor;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
@@ -31,6 +33,8 @@ import java.util.stream.Collectors;
|
|
|
@AllArgsConstructor
|
|
|
public class SysUserAreaServiceImpl extends ServiceImpl<SysUserAreaMapper, SysUserArea> implements SysUserAreaService {
|
|
|
|
|
|
+ private final SysUserAreaTempMapper userAreaTempMapper;
|
|
|
+
|
|
|
/**
|
|
|
* 保存关系
|
|
|
*
|
|
@@ -82,19 +86,15 @@ public class SysUserAreaServiceImpl extends ServiceImpl<SysUserAreaMapper, SysUs
|
|
|
@Override
|
|
|
public List<Long> listAreaUser(Collection<Long> areaIds) {
|
|
|
|
|
|
- List<Long> source = new ArrayList<>(areaIds);
|
|
|
-
|
|
|
- int size = areaIds.size();
|
|
|
- int p;
|
|
|
- if (size < 300){
|
|
|
- p = 1;
|
|
|
- } else {
|
|
|
- p = size % 300 == 0 ? size / 300 : size / 300 + 1;
|
|
|
- }
|
|
|
+ String tableName = "sys_user_area_" + IdUtil.fastSimpleUUID();
|
|
|
+ userAreaTempMapper.createTempTable(tableName);
|
|
|
+ userAreaTempMapper.batchInsertTempData(tableName, areaIds);
|
|
|
+ userAreaTempMapper.dropTempTable(tableName);
|
|
|
|
|
|
- List<List<Long>> list = Lists.partition(source, p);
|
|
|
+ List<SysUserArea> sysUserAreas = this.baseMapper.listFromTempTable(tableName);
|
|
|
|
|
|
- return list.stream().flatMap(l -> this.list(Wrappers.<SysUserArea>lambdaQuery().in(SysUserArea::getAreaId, l)).stream()).map(SysUserArea::getUserId).distinct().collect(Collectors.toList());
|
|
|
+ // return this.list(Wrappers.<SysUserArea>lambdaQuery().in(SysUserArea::getAreaId, areaIds)).stream().map(SysUserArea::getUserId).distinct().collect(Collectors.toList());
|
|
|
+ return sysUserAreas.stream().map(SysUserArea::getUserId).distinct().collect(Collectors.toList());
|
|
|
}
|
|
|
|
|
|
/**
|