|
@@ -59,7 +59,9 @@ import com.sqx.modules.message.service.MessageService;
|
|
|
import com.sqx.modules.myCollection.entity.MyCollection;
|
|
import com.sqx.modules.myCollection.entity.MyCollection;
|
|
|
import com.sqx.modules.myCollection.service.MyCollectionService;
|
|
import com.sqx.modules.myCollection.service.MyCollectionService;
|
|
|
import com.sqx.modules.resumes.entity.Company;
|
|
import com.sqx.modules.resumes.entity.Company;
|
|
|
|
|
+import com.sqx.modules.resumes.entity.PostPush;
|
|
|
import com.sqx.modules.resumes.service.CompanyService;
|
|
import com.sqx.modules.resumes.service.CompanyService;
|
|
|
|
|
+import com.sqx.modules.resumes.service.PostPushService;
|
|
|
import com.sqx.modules.sendRecord.entity.SendRecord;
|
|
import com.sqx.modules.sendRecord.entity.SendRecord;
|
|
|
import com.sqx.modules.sendRecord.service.SendRecordService;
|
|
import com.sqx.modules.sendRecord.service.SendRecordService;
|
|
|
import com.sqx.modules.utils.HttpClientUtil;
|
|
import com.sqx.modules.utils.HttpClientUtil;
|
|
@@ -78,9 +80,12 @@ import weixin.popular.util.JsonUtil;
|
|
|
import java.io.IOException;
|
|
import java.io.IOException;
|
|
|
import java.math.BigDecimal;
|
|
import java.math.BigDecimal;
|
|
|
import java.text.SimpleDateFormat;
|
|
import java.text.SimpleDateFormat;
|
|
|
|
|
+import java.time.LocalDate;
|
|
|
import java.time.LocalDateTime;
|
|
import java.time.LocalDateTime;
|
|
|
|
|
+import java.time.LocalTime;
|
|
|
import java.time.format.DateTimeFormatter;
|
|
import java.time.format.DateTimeFormatter;
|
|
|
import java.util.*;
|
|
import java.util.*;
|
|
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
* 用户
|
|
* 用户
|
|
@@ -128,6 +133,8 @@ public class UserServiceImpl extends ServiceImpl<UserDao, UserEntity> implements
|
|
|
private ChatContentService chatContentService;
|
|
private ChatContentService chatContentService;
|
|
|
@Autowired
|
|
@Autowired
|
|
|
private InterviewRecordService interviewRecordService;
|
|
private InterviewRecordService interviewRecordService;
|
|
|
|
|
+ @Autowired
|
|
|
|
|
+ private PostPushService postPushService;
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
|
public UserEntity queryByPhone(String phone) {
|
|
public UserEntity queryByPhone(String phone) {
|
|
@@ -1154,23 +1161,26 @@ public class UserServiceImpl extends ServiceImpl<UserDao, UserEntity> implements
|
|
|
QueryWrapper<MyCollection> queryWrapper =new QueryWrapper<MyCollection>().eq("user_id",userId);
|
|
QueryWrapper<MyCollection> queryWrapper =new QueryWrapper<MyCollection>().eq("user_id",userId);
|
|
|
QueryWrapper<SendRecord> queryWrapper1 =new QueryWrapper<>();
|
|
QueryWrapper<SendRecord> queryWrapper1 =new QueryWrapper<>();
|
|
|
QueryWrapper<InterviewRecord>queryWrapper2 =new QueryWrapper<>();
|
|
QueryWrapper<InterviewRecord>queryWrapper2 =new QueryWrapper<>();
|
|
|
- //个人
|
|
|
|
|
|
|
+ QueryWrapper<ChatConversation> queryWrapper3 =new QueryWrapper<>();
|
|
|
|
|
+
|
|
|
if (userEntity.getUserType() == 1) {
|
|
if (userEntity.getUserType() == 1) {
|
|
|
wrapper.eq("browse_type", 1);
|
|
wrapper.eq("browse_type", 1);
|
|
|
queryWrapper.eq("type",1);
|
|
queryWrapper.eq("type",1);
|
|
|
queryWrapper1.eq("user_id",userId);
|
|
queryWrapper1.eq("user_id",userId);
|
|
|
queryWrapper2.eq("interviewer_id",userId);
|
|
queryWrapper2.eq("interviewer_id",userId);
|
|
|
|
|
+ queryWrapper3.eq("use_id",userId);
|
|
|
//企业
|
|
//企业
|
|
|
} else {
|
|
} else {
|
|
|
wrapper.eq("browse_type", 2);
|
|
wrapper.eq("browse_type", 2);
|
|
|
queryWrapper.eq("type",2);
|
|
queryWrapper.eq("type",2);
|
|
|
queryWrapper1.eq("company_user_id",userId);
|
|
queryWrapper1.eq("company_user_id",userId);
|
|
|
queryWrapper2.eq("user_id",userId);
|
|
queryWrapper2.eq("user_id",userId);
|
|
|
|
|
+ queryWrapper3.eq("focused_user_id",userId);
|
|
|
}
|
|
}
|
|
|
int browseCount = userBrowseService.count(wrapper);
|
|
int browseCount = userBrowseService.count(wrapper);
|
|
|
int collectionCount = collectionService.count(queryWrapper);
|
|
int collectionCount = collectionService.count(queryWrapper);
|
|
|
int deliveryCount = sendRecordService.count(queryWrapper1);
|
|
int deliveryCount = sendRecordService.count(queryWrapper1);
|
|
|
- int chatCount = chatConversationService.count(new QueryWrapper<ChatConversation>().eq("user_id",userId));
|
|
|
|
|
|
|
+ int chatCount = chatConversationService.count();
|
|
|
int interviewCount = interviewRecordService.count(queryWrapper2);
|
|
int interviewCount = interviewRecordService.count(queryWrapper2);
|
|
|
//浏览记录
|
|
//浏览记录
|
|
|
map.put("browseCount", browseCount);
|
|
map.put("browseCount", browseCount);
|
|
@@ -1478,4 +1488,81 @@ public class UserServiceImpl extends ServiceImpl<UserDao, UserEntity> implements
|
|
|
return Result.success();
|
|
return Result.success();
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-}
|
|
|
|
|
|
|
+ @Override
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 获取指定用户的今日招聘数据
|
|
|
|
|
+ * @param userId 用户ID(企业用户,对应user_type=2)
|
|
|
|
|
+ * @return 包含各指标今日数据及较昨日变化的Map
|
|
|
|
|
+ */
|
|
|
|
|
+ public HashMap<String, Object> userYesterdayData(Long userId) {
|
|
|
|
|
+ HashMap<String, Object> resultMap = new HashMap<>();
|
|
|
|
|
+
|
|
|
|
|
+ // 1. 定义时间范围:今日00:00:00至23:59:59
|
|
|
|
|
+ LocalDateTime todayStart = LocalDateTime.of(LocalDate.now(), LocalTime.MIN);
|
|
|
|
|
+ LocalDateTime todayEnd = LocalDateTime.of(LocalDate.now(), LocalTime.MAX);
|
|
|
|
|
+
|
|
|
|
|
+ // 2. 定义昨日时间范围:昨日00:00:00至23:59:59(用于计算较昨日变化)
|
|
|
|
|
+ LocalDateTime yesterdayStart = LocalDateTime.of(LocalDate.now().minusDays(1), LocalTime.MIN);
|
|
|
|
|
+ LocalDateTime yesterdayEnd = LocalDateTime.of(LocalDate.now().minusDays(1), LocalTime.MAX);
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ // 4. 统计各指标今日数据及昨日数据
|
|
|
|
|
+ // 4.1 我看过(当前企业查看的求职者数量)
|
|
|
|
|
+ int todayISaw = userBrowseService.count(new QueryWrapper<UserBrowse>().eq("user_id",userId).eq("browse_type",2).between("update_time",todayStart,todayEnd));
|
|
|
|
|
+ int yesterdayISaw = userBrowseService.count(new QueryWrapper<UserBrowse>().eq("user_id",userId).eq("browse_type",2).between("update_time",yesterdayStart,yesterdayEnd));
|
|
|
|
|
+ resultMap.put("iSaw", todayISaw);
|
|
|
|
|
+ resultMap.put("tyIsaw",todayISaw-yesterdayISaw);
|
|
|
|
|
+
|
|
|
|
|
+ // 4.2 看过我(求职者查看当前企业的数量)
|
|
|
|
|
+ List<Object> postIdObjs = postPushService.listObjs(
|
|
|
|
|
+ new QueryWrapper<PostPush>()
|
|
|
|
|
+ .eq("user_id", userId) // 筛选“我发布的岗位”
|
|
|
|
|
+ .select("post_push_id")); // 只查岗位ID);
|
|
|
|
|
+ if (postIdObjs == null || postIdObjs.isEmpty()) {
|
|
|
|
|
+ resultMap.put("sawMe",0);
|
|
|
|
|
+ resultMap.put("tySawMe",0);
|
|
|
|
|
+ }
|
|
|
|
|
+ List<Long> myPostIds = postIdObjs.stream()
|
|
|
|
|
+ .map(obj -> Long.valueOf(obj.toString()))
|
|
|
|
|
+ .collect(Collectors.toList());
|
|
|
|
|
+ int todaySawMe = userBrowseService.count(new QueryWrapper<UserBrowse>().in("post_push_id",myPostIds).between("update_time",todayStart,todayEnd));
|
|
|
|
|
+ int yesterdaySawMe = userBrowseService.count(new QueryWrapper<UserBrowse>().in("post_push_id",myPostIds).between("update_time",yesterdayStart,yesterdayEnd));
|
|
|
|
|
+ resultMap.put("sawMe",todaySawMe);
|
|
|
|
|
+ resultMap.put("tySawMe",todaySawMe-yesterdaySawMe);
|
|
|
|
|
+
|
|
|
|
|
+ // 4.3 我沟通(企业主动发起的沟通数量)
|
|
|
|
|
+ int todayICommunicated =chatConversationService.count(new QueryWrapper<ChatConversation>().eq("focused_user_id",userId).eq("type",2).between("create_time",todayStart,todayEnd));
|
|
|
|
|
+ int yesterdayICommunicated = chatConversationService.count(new QueryWrapper<ChatConversation>().eq("focused_user_id",userId).eq("type",2).between("create_time",yesterdayStart,yesterdayEnd));
|
|
|
|
|
+ resultMap.put("iCommunicated",todayICommunicated);
|
|
|
|
|
+ resultMap.put("tyICommunicated",todayICommunicated-yesterdayICommunicated);
|
|
|
|
|
+ // 4.4 求职者沟通(求职者主动发起的沟通数量)
|
|
|
|
|
+ int todayCandidateCommunicated =chatConversationService.count(new QueryWrapper<ChatConversation>().eq("focused_user_id",userId).eq("type",1).between("create_time",todayStart,todayEnd));
|
|
|
|
|
+ int yesterdayCandidateCommunicated = chatConversationService.count(new QueryWrapper<ChatConversation>().eq("focused_user_id",userId).eq("type",1).between("create_time",yesterdayStart,yesterdayEnd));
|
|
|
|
|
+ resultMap.put("candidateCommunicated", todayCandidateCommunicated);
|
|
|
|
|
+ resultMap.put("tyCandidateCommunicated",todayCandidateCommunicated-yesterdayCandidateCommunicated);
|
|
|
|
|
+
|
|
|
|
|
+ // 4.5 收获简历(企业收到的简历数量,对应is_send_resumes=1)
|
|
|
|
|
+ int todayReceivedResumes = chatConversationService.count(new QueryWrapper<ChatConversation>().eq("focused_user_id",userId).eq("is_send_resumes",1).between("update_time",todayStart,todayEnd));
|
|
|
|
|
+ int yesterdayReceivedResumes =chatConversationService.count(new QueryWrapper<ChatConversation>().eq("focused_user_id",userId).eq("is_send_resumes",1).between("update_time",yesterdayStart,yesterdayEnd));
|
|
|
|
|
+ resultMap.put("receivedResumes", todayReceivedResumes);
|
|
|
|
|
+ resultMap.put("tyReceivedResumes",todayReceivedResumes-yesterdayReceivedResumes);
|
|
|
|
|
+
|
|
|
|
|
+ // 4.6 交换电话微信(电话/微信交换成功数量,对应is_send_phone=1或is_send_wx=1)
|
|
|
|
|
+ int todayExchangedContact = chatConversationService.count(new QueryWrapper<ChatConversation>().eq("focused_user_id",userId).and(qw -> qw.eq("is_send_phone", 1).or().eq("is_send_wx", 1)) .between("update_time",todayStart,todayEnd));
|
|
|
|
|
+ int yesterdayExchangedContact = chatConversationService.count(new QueryWrapper<ChatConversation>().eq("focused_user_id",userId).and(qw -> qw.eq("is_send_phone", 1).or().eq("is_send_wx", 1)) .between("update_time",todayStart,todayEnd));
|
|
|
|
|
+ resultMap.put("exchangedContact", todayExchangedContact);
|
|
|
|
|
+ resultMap.put("tyExchangeContact",todayExchangedContact-yesterdayExchangedContact);
|
|
|
|
|
+
|
|
|
|
|
+ // 4.7 接受面试(求职者接受面试的数量,需结合status字段定义)
|
|
|
|
|
+ int todayAcceptedInterview = interviewRecordService.count(new QueryWrapper<InterviewRecord>().eq("user_id",userId).eq("status",2).between("create_time",todayStart,todayEnd));
|
|
|
|
|
+ int yesterdayAcceptedInterview = interviewRecordService.count(new QueryWrapper<InterviewRecord>().eq("user_id",userId).eq("status",2).between("create_time",yesterdayStart,yesterdayEnd));
|
|
|
|
|
+ resultMap.put("acceptedInterview", todayAcceptedInterview);
|
|
|
|
|
+ resultMap.put("tyAcceptedInterview",todayAcceptedInterview-yesterdayAcceptedInterview);
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ return resultMap;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|