|
@@ -846,8 +846,52 @@ public class FsUserServiceImpl implements IFsUserService {
|
|
|
return fsUserMapper.selectFsUserByUserIds(userIds, companyUserId);
|
|
return fsUserMapper.selectFsUserByUserIds(userIds, companyUserId);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+
|
|
|
@Override
|
|
@Override
|
|
|
public FsUserSummaryCountVO userSummaryCount(Long userId) {
|
|
public FsUserSummaryCountVO userSummaryCount(Long userId) {
|
|
|
|
|
+ // 判断是否是管理员
|
|
|
|
|
+ Long companyId;
|
|
|
|
|
+ CompanyUser companyUser = companyUserMapper.selectCompanyUserById(userId);
|
|
|
|
|
+ if (companyUser != null && companyUser.isAdmin()) {
|
|
|
|
|
+ userId = 0L;
|
|
|
|
|
+ companyId = companyUser.getCompanyId();
|
|
|
|
|
+ } else {
|
|
|
|
|
+ companyId = null;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 使用 CompletableFuture 异步执行两个查询
|
|
|
|
|
+
|
|
|
|
|
+ Long finalUserId = userId;
|
|
|
|
|
+ CompletableFuture<Integer> userTotalFuture = CompletableFuture.supplyAsync(() ->
|
|
|
|
|
+ fsUserMapper.getUserTotal(finalUserId, companyId));
|
|
|
|
|
+
|
|
|
|
|
+ CompletableFuture<Integer> todayNewUserFuture = CompletableFuture.supplyAsync(() ->
|
|
|
|
|
+ fsUserMapper.getTodayNewUser(finalUserId, companyId));
|
|
|
|
|
+
|
|
|
|
|
+ CompletableFuture<List<FsUserSummaryCountTagVO>> countTagList = CompletableFuture.supplyAsync(() ->
|
|
|
|
|
+ fsUserMapper.countTag(finalUserId, companyId));
|
|
|
|
|
+
|
|
|
|
|
+ // 等待查询结果并构建返回对象
|
|
|
|
|
+ FsUserSummaryCountVO fsUserSummaryCountVO = new FsUserSummaryCountVO();
|
|
|
|
|
+ try {
|
|
|
|
|
+ fsUserSummaryCountVO.setUserTotal(userTotalFuture.get());
|
|
|
|
|
+ fsUserSummaryCountVO.setTodayNewUser(todayNewUserFuture.get());
|
|
|
|
|
+ fsUserSummaryCountVO.setTagList(countTagList.get());
|
|
|
|
|
+
|
|
|
|
|
+ } catch (InterruptedException | ExecutionException e) {
|
|
|
|
|
+ logger.error("异步查询用户统计数据失败", e);
|
|
|
|
|
+ // 设置默认值
|
|
|
|
|
+ fsUserSummaryCountVO.setUserTotal(0);
|
|
|
|
|
+ fsUserSummaryCountVO.setTodayNewUser(0);
|
|
|
|
|
+ fsUserSummaryCountVO.setTagList(new ArrayList<>());
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ return fsUserSummaryCountVO;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ public FsUserSummaryCountVO userSummaryCountOld(Long userId) {
|
|
|
|
|
+ // 开始时间
|
|
|
|
|
+ long start = System.currentTimeMillis();
|
|
|
// 判断是否是管理员
|
|
// 判断是否是管理员
|
|
|
Long companyId = null;
|
|
Long companyId = null;
|
|
|
CompanyUser companyUser = companyUserMapper.selectCompanyUserById(userId);
|
|
CompanyUser companyUser = companyUserMapper.selectCompanyUserById(userId);
|
|
@@ -855,9 +899,24 @@ public class FsUserServiceImpl implements IFsUserService {
|
|
|
userId = 0L;
|
|
userId = 0L;
|
|
|
companyId = companyUser.getCompanyId();
|
|
companyId = companyUser.getCompanyId();
|
|
|
}
|
|
}
|
|
|
|
|
+ long start2 = System.currentTimeMillis();
|
|
|
|
|
+ logger.info("countUserSummary 执行耗时: {}ms", start2 - start);
|
|
|
|
|
+
|
|
|
|
|
+ // Integer getUserTotal(@Param("userId") Long userId, @Param("companyId") Long companyId);
|
|
|
|
|
+ //
|
|
|
|
|
+ // Integer getTodayNewUser(@Param("userId") Long userId, @Param("companyId") Long companyId);
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
FsUserSummaryCountVO fsUserSummaryCountVO = fsUserMapper.countUserSummary(userId, companyId);
|
|
FsUserSummaryCountVO fsUserSummaryCountVO = fsUserMapper.countUserSummary(userId, companyId);
|
|
|
|
|
+ long start3 =System.currentTimeMillis();
|
|
|
|
|
+ logger.info("countTag 执行耗时: {}ms", start3 - start2);
|
|
|
List<FsUserSummaryCountTagVO> countTagList = fsUserMapper.countTag(userId, companyId);
|
|
List<FsUserSummaryCountTagVO> countTagList = fsUserMapper.countTag(userId, companyId);
|
|
|
fsUserSummaryCountVO.setTagList(countTagList);
|
|
fsUserSummaryCountVO.setTagList(countTagList);
|
|
|
|
|
+
|
|
|
|
|
+ // 结束时间
|
|
|
|
|
+ long end = System.currentTimeMillis();
|
|
|
|
|
+ logger.info("countUserAnswerStats 执行耗时: {}ms", end - start3);
|
|
|
|
|
+
|
|
|
return fsUserSummaryCountVO;
|
|
return fsUserSummaryCountVO;
|
|
|
}
|
|
}
|
|
|
|
|
|