瀏覽代碼

:zap: user list

shc 9 月之前
父節點
當前提交
1f07867887

+ 8 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/mapper/SysUserAreaMapper.java

@@ -3,6 +3,10 @@ package com.qunzhixinxi.hnqz.admin.mapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.qunzhixinxi.hnqz.admin.api.entity.SysUserArea;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+
+import java.util.List;
 
 /**
  * 用户区域关系表mapper
@@ -14,6 +18,10 @@ import org.apache.ibatis.annotations.Mapper;
 @Mapper
 public interface SysUserAreaMapper extends BaseMapper<SysUserArea> {
 
+
+    @Select("SELECT * FROM sys_user_area ua LEFT JOIN ${tablename} t ON ua.area_id =t.id")
+    List<SysUserArea> listFromTempTable(@Param("tableName") String tableName);
+
 }
 
 

+ 24 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/mapper/SysUserAreaTempMapper.java

@@ -0,0 +1,24 @@
+package com.qunzhixinxi.hnqz.admin.mapper;
+
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 用户区域临时表mapper
+ *
+ * @author jimmy
+ * @date 2024-09-27 17:14
+ */
+@Mapper
+public interface SysUserAreaTempMapper {
+
+
+    void createTempTable(@Param(value = "tableName") String tableName);
+
+    void batchInsertTempData(@Param(value = "tableName") String tableName,
+                             @Param(value = "list") Collection<Long> userIds);
+    void dropTempTable(@Param(value = "tableName") String tableName);
+}

+ 11 - 11
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/impl/SysUserAreaServiceImpl.java

@@ -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());
     }
 
     /**

+ 25 - 0
hnqz-upms/hnqz-upms-biz/src/main/resources/mapper/SysUserAreaTmepMapper.xml

@@ -0,0 +1,25 @@
+<?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="com.qunzhixinxi.hnqz.admin.mapper.SysUserAreaTempMapper">
+
+
+  <update id="createTempTable">
+    DROP TEMPORARY TABLE IF EXISTS ${tableName};
+    CREATE TEMPORARY TABLE ${tableName}
+    (
+      `id` BIGINT NOT NULL
+    )
+  </update>
+
+  <insert id="batchInsertTempData">
+    INSERT INTO ${tableName}(id) VALUES
+    <foreach collection="list" item="item" separator="," open="(" close=")">
+      #{item}
+    </foreach>
+  </insert>
+
+	<delete id="dropTempTable">
+		DROP TEMPORARY TABLE IF EXISTS ${tableName}
+	</delete>
+</mapper>