feat(REQ-2106): 投放日志打印

This commit is contained in:
chenwenjian 2024-04-19 11:46:12 +08:00
parent 3b6edd3c02
commit 6a3dd0f82f
2 changed files with 11 additions and 3 deletions

View File

@ -1,8 +1,10 @@
package cn.axzo.nanopart.api.enums;
import cn.axzo.nanopart.api.dto.JoinedWorkspaceOuJob;
import cn.hutool.json.JSONUtil;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.util.CollectionUtils;
@ -18,6 +20,7 @@ import java.util.stream.Collectors;
* @version 1.0
* @date 2024/4/9 16:46
*/
@Slf4j
@Getter
@AllArgsConstructor
public enum MaterialTargetUserTypeEnum {
@ -34,6 +37,7 @@ public enum MaterialTargetUserTypeEnum {
public boolean isDeliverRequired(List<Long> workspaceIds, List<Long> ouIds, List<String> jobCodes, JoinedWorkspaceOuJob workspaceOuJob) {
// 若workspaceIds和jobCodes都为空则表示不限制否则需要满足配置的workspaceIds和jobCodes与用户加入的workspaceJob的keyvalue均存在交集
Map<Long, List<String>> workspaceJobMap = workspaceOuJob.getWorkspaceJobMap();
log.info("投放项目部:{},投放岗位岗位:{},用户加入项目部及担任岗位:{}", JSONUtil.toJsonStr(workspaceIds),JSONUtil.toJsonStr(jobCodes),JSONUtil.toJsonStr(workspaceJobMap));
return CollectionUtils.isEmpty(workspaceIds) ? CollectionUtils.isEmpty(jobCodes) || jobCodes.stream().anyMatch(jobCode -> workspaceJobMap.values().stream().flatMap(List::stream).distinct().collect(Collectors.toList()).contains(jobCode))
: workspaceIds.stream().anyMatch(workspaceId -> workspaceJobMap.get(workspaceId).stream().anyMatch(jobCodes::contains));
}
@ -44,6 +48,7 @@ public enum MaterialTargetUserTypeEnum {
public boolean isDeliverRequired(List<Long> workspaceIds, List<Long> ouIds, List<String> jobCodes, JoinedWorkspaceOuJob workspaceOuJob) {
// 若workspaceIds和jobCodes都为空则表示不限制否则需要满足配置的workspaceIds和jobCodes与用户加入的workspaceJob的keyvalue均存在交集
Map<Long, List<String>> ouJobMap = workspaceOuJob.getOuJobMap();
log.info("投放单位:{},投放岗位岗位:{},用户加入单位及担任岗位:{}", JSONUtil.toJsonStr(workspaceIds),JSONUtil.toJsonStr(jobCodes),JSONUtil.toJsonStr(ouJobMap));
return CollectionUtils.isEmpty(ouIds) ? CollectionUtils.isEmpty(jobCodes) || jobCodes.stream().anyMatch(jobCode -> ouJobMap.values().stream().flatMap(List::stream).distinct().collect(Collectors.toList()).contains(jobCode))
: ouIds.stream().anyMatch(ouId -> ouJobMap.get(ouId).stream().anyMatch(jobCodes::contains));
}

View File

@ -34,6 +34,7 @@ import cn.axzo.pokonyan.config.redis.RedisClient;
import cn.axzo.pokonyan.dao.converter.PageConverter;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DateUtil;
import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@ -113,6 +114,7 @@ public class MaterialServiceImpl extends ServiceImpl<MaterialDao, Material> impl
if (CollectionUtils.isEmpty(materialList)) {
return Collections.emptyList();
}
log.info("上架且有效广告位:{}", JSONUtil.toJsonStr(materialList));
// 获取当前登录用户加入的所有项目部单位及其在项目部或在单位下担任的岗位
JoinedWorkspaceOuJob personJoinedWorkspaceOuJob = getPersonJoinedWorkspaceOuJob(req.getPersonId());
@ -321,6 +323,7 @@ public class MaterialServiceImpl extends ServiceImpl<MaterialDao, Material> impl
String key = buildMaterialDisplayFrequencyKey(m, req.getPersonId());
if (RedisClient.KeyOps.hasKey(key)) {
int frequency = Integer.parseInt(RedisClient.StringOps.get(key));
log.info("{}已投放次数:{},素材最大投放次数:{}", req.getPersonId(), frequency, m.getMaxDisplayFrequency());
displayFrequencyFilter = frequency < m.getMaxDisplayFrequency();
if (displayFrequencyFilter) {
// 本次需要投放