ct hace 1 día
padre
commit
280bbc0cf8

+ 27 - 19
fs-company/src/main/java/com/fs/company/controller/company/CompanyUserController.java

@@ -57,6 +57,7 @@ import org.springframework.web.multipart.MultipartFile;
 import java.net.URLEncoder;
 import java.nio.charset.StandardCharsets;
 import java.util.*;
+import java.util.concurrent.CompletableFuture;
 import java.util.stream.Collectors;
 
 
@@ -136,27 +137,34 @@ public class CompanyUserController extends BaseController {
     public TableDataInfo qwList(CompanyUserQwParam user) {
         LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
         user.setCompanyId(loginUser.getCompany().getCompanyId());
-        startPage();
         List<CompanyUserQwListVO> list = companyUserService.selectCompanyUserQwListVO(user);
-        for (CompanyUserQwListVO companyUserQwListVO : list) {
-            CompanyUserDelayTime companyUserDelayTime = companyUserDelayTimeService.selectCompanyUserDelayTimeByCompanyUser(companyUserQwListVO.getCompanyId(), companyUserQwListVO.getUserId());
-            if (ObjectUtil.isEmpty(companyUserDelayTime)) {
-                String json = configService.selectConfigByKey("course.config");
-                CourseConfig config = JSONUtil.toBean(json, CourseConfig.class);
-                companyUserQwListVO.setSendDelayTime(config.getSendDelayTime());
-            } else {
-                companyUserQwListVO.setSendDelayTime(companyUserDelayTime.getSendDelayTime());
-            }
-            //是否绑定
-            if(QwStatusEnum.BOUND.getCode() == companyUserQwListVO.getQwStatus()){
-                if(!companyUserQwListVO.getQwUserId().isEmpty()){
-                    Long[] ids = Arrays.stream(companyUserQwListVO.getQwUserId().split(","))
-                            .map(Long::parseLong)
-                            .toArray(Long[]::new);
-                    List<QwUserVO> qwUserVOS = qwUserService.selectQwUserVOByIds(ids);
-                    companyUserQwListVO.setQwUsers(qwUserVOS);
-                }
+        if (!list.isEmpty()){
+            String json = configService.selectConfigByKey("course.config");
+            CourseConfig config = JSONUtil.toBean(json, CourseConfig.class);
+            Long sendDelayTime = config.getSendDelayTime();
+            List<CompletableFuture<Void>> futures = new ArrayList<>();
+            for (CompanyUserQwListVO companyUserQwListVO : list) {
+                CompletableFuture<Void> future = CompletableFuture.runAsync(() -> {
+                    CompanyUserDelayTime companyUserDelayTime = companyUserDelayTimeService.selectCompanyUserDelayTimeByCompanyUser(companyUserQwListVO.getCompanyId(), companyUserQwListVO.getUserId());
+                    if (ObjectUtil.isEmpty(companyUserDelayTime)) {
+                        companyUserQwListVO.setSendDelayTime(sendDelayTime);
+                    } else {
+                        companyUserQwListVO.setSendDelayTime(companyUserDelayTime.getSendDelayTime());
+                    }
+                    //是否绑定
+                    if(QwStatusEnum.BOUND.getCode() == companyUserQwListVO.getQwStatus()){
+                        if(!companyUserQwListVO.getQwUserId().isEmpty()){
+                            Long[] ids = Arrays.stream(companyUserQwListVO.getQwUserId().split(","))
+                                    .map(Long::parseLong)
+                                    .toArray(Long[]::new);
+                            List<QwUserVO> qwUserVOS = qwUserService.selectQwUserVOByIds(ids);
+                            companyUserQwListVO.setQwUsers(qwUserVOS);
+                        }
+                    }
+                });
+                futures.add(future);
             }
+            CompletableFuture.allOf(futures.toArray(new CompletableFuture[0])).join();
         }
         return getDataTable(list);
     }

+ 4 - 0
fs-service/src/main/java/com/fs/company/param/CompanyUserQwParam.java

@@ -115,4 +115,8 @@ public class CompanyUserQwParam extends BaseEntity {
     private Long qwUserId;
 
     private Integer qwStatus;
+
+    private Integer pageNum;
+
+    private Integer pageSize;
 }

+ 5 - 5
fs-service/src/main/java/com/fs/company/service/impl/CompanyUserServiceImpl.java

@@ -52,6 +52,7 @@ import com.fs.system.service.ISysRoleService;
 import com.fs.system.service.ISysUserService;
 import com.fs.voice.utils.StringUtil;
 import com.fs.wxUser.domain.CompanyWxUser;
+import com.github.pagehelper.PageHelper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -670,14 +671,13 @@ public class CompanyUserServiceImpl implements ICompanyUserService
 //        if(!StringUtils.isEmpty(companyConfig.getConfigValue())){
 //            isAdminShow = Boolean.parseBoolean(companyConfig.getConfigValue());
 //        }
-        List<CompanyUserQwListVO> companyUserQwListVOS = companyUserMapper.selectCompanyUserQwListVO(user);
-        if(!isAdminShow){
+        if(isAdminShow){
             Company company = companyService.selectCompanyById(user.getCompanyId());
             Long userId = company.getUserId();
-            companyUserQwListVOS = companyUserQwListVOS.stream()
-                    .filter(vo -> !vo.getUserId().equals(userId))
-                    .collect(Collectors.toList());
+            user.setUserId(userId);
         }
+        PageHelper.startPage(user.getPageNum(), user.getPageSize());
+        List<CompanyUserQwListVO> companyUserQwListVOS = companyUserMapper.selectCompanyUserQwListVO(user);
         return companyUserQwListVOS;
     }
 

+ 15 - 10
fs-service/src/main/resources/mapper/company/CompanyUserMapper.xml

@@ -64,9 +64,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="qrCodeWecom" column="qr_code_wecom"/>
         <result property="jpushId" column="jpush_id"/>
         <result property="callerNo" column="caller_no"/>
-        <collection property="roleNames" ofType="java.lang.String" javaType="java.util.ArrayList">
-            <result column="role_name"/>
-        </collection>
+        <collection property="roleNames" ofType="java.lang.String" javaType="java.util.ArrayList"
+                    select="selectUserRoles" column="user_id"/>
     </resultMap>
 
     <resultMap id="deptResult" type="CompanyDept">
@@ -94,19 +93,17 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         u.avatar,
         u.qw_user_id,
         d.dept_name,
-        d.leader,
-        cr.role_name as role_name
+        d.leader
         from
         company_user u
         left join
         company_dept d on u.dept_id = d.dept_id
-        left join
-        company_user_role cur on u.user_id = cur.user_id
-        left join
-        company_role cr on cr.role_id = cur.role_id
+
         where
         u.del_flag = '0'
-
+        <if test="userId != null ">
+            AND u.user_id = #{userId}
+        </if>
         <if test="userName != null and userName != ''">
             AND u.user_name like concat('%', #{userName}, '%')
         </if>
@@ -147,6 +144,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         ${params.dataScope}
     </select>
 
+    <!-- 角色子查询 -->
+    <select id="selectUserRoles" resultType="java.lang.String">
+        SELECT cr.role_name
+        FROM company_user_role cur
+                 LEFT JOIN company_role cr ON cr.role_id = cur.role_id
+        WHERE cur.user_id = #{userId}
+    </select>
+
 
     <select id="selectCompanyUserList" parameterType="CompanyUser" resultMap="CompanyUserResult">
         select u.*, d.dept_name, d.leader from company_user u