From 663bddf7cc69d6fd4f72b3655963ffda75d0733f Mon Sep 17 00:00:00 2001 From: bynt Date: Fri, 17 Feb 2023 15:47:42 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9Edmp=E8=87=AA=E5=8A=A8?= =?UTF-8?q?=E5=88=86=E9=85=8D=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/baiye/http/DmpResponse.java | 1 - .../baiye/socket/filter/ApiLoggingFilter.java | 2 +- .../platform/service/TaskImeiService.java | 4 +- .../service/impl/TaskImeiServiceImpl.java | 10 +- .../api/TelephoneCallController.java | 6 +- .../main/java/com/baiye/util/CSVFileUtil.java | 9 +- .../baiye/model/entity/BaseClueMiddle.java | 11 +++ .../com/baiye/module/entity/ClueTalk.java | 5 + .../com/baiye/module/service/ClueService.java | 5 + .../module/service/impl/ClueServiceImpl.java | 98 ++++++++++++++----- .../java/com/baiye/task/MailSourceTask.java | 4 +- .../src/test/java/ImeiTest.java | 43 ++++++++ 12 files changed, 151 insertions(+), 47 deletions(-) create mode 100644 ad-platform-services/ad-platform-source/src/test/java/ImeiTest.java diff --git a/ad-platform-common/ad-platform-common-core/src/main/java/com/baiye/http/DmpResponse.java b/ad-platform-common/ad-platform-common-core/src/main/java/com/baiye/http/DmpResponse.java index e0f0e045..6cc9d95d 100644 --- a/ad-platform-common/ad-platform-common-core/src/main/java/com/baiye/http/DmpResponse.java +++ b/ad-platform-common/ad-platform-common-core/src/main/java/com/baiye/http/DmpResponse.java @@ -1,6 +1,5 @@ package com.baiye.http; -import com.baiye.http.DmpDataDTO; import lombok.Data; import java.util.List; diff --git a/ad-platform-gateway/src/main/java/com/baiye/socket/filter/ApiLoggingFilter.java b/ad-platform-gateway/src/main/java/com/baiye/socket/filter/ApiLoggingFilter.java index 756cb343..96e2321e 100644 --- a/ad-platform-gateway/src/main/java/com/baiye/socket/filter/ApiLoggingFilter.java +++ b/ad-platform-gateway/src/main/java/com/baiye/socket/filter/ApiLoggingFilter.java @@ -23,7 +23,7 @@ import java.util.List; @Component public class ApiLoggingFilter implements GlobalFilter, Ordered { - private static final String START_TIME = "startTime"; + private static final String START_TIME = "startTime"; /** * nginx 配置 diff --git a/ad-platform-manage/ad-platform-management/src/main/java/com/baiye/modules/platform/service/TaskImeiService.java b/ad-platform-manage/ad-platform-management/src/main/java/com/baiye/modules/platform/service/TaskImeiService.java index 3b54cbcc..82277940 100644 --- a/ad-platform-manage/ad-platform-management/src/main/java/com/baiye/modules/platform/service/TaskImeiService.java +++ b/ad-platform-manage/ad-platform-management/src/main/java/com/baiye/modules/platform/service/TaskImeiService.java @@ -58,11 +58,11 @@ public interface TaskImeiService { /** * 天统计条数 * - * @param userId + * @param taskId * @param num * @return */ - Integer countByUserIdAndDate(Long userId, Integer num); + Integer countByUserIdAndDate(Long taskId, Integer num); /** * 删除所有的Imei(删除公司) diff --git a/ad-platform-manage/ad-platform-management/src/main/java/com/baiye/modules/platform/service/impl/TaskImeiServiceImpl.java b/ad-platform-manage/ad-platform-management/src/main/java/com/baiye/modules/platform/service/impl/TaskImeiServiceImpl.java index bd33cbee..a6c17ce4 100644 --- a/ad-platform-manage/ad-platform-management/src/main/java/com/baiye/modules/platform/service/impl/TaskImeiServiceImpl.java +++ b/ad-platform-manage/ad-platform-management/src/main/java/com/baiye/modules/platform/service/impl/TaskImeiServiceImpl.java @@ -107,8 +107,8 @@ public class TaskImeiServiceImpl implements TaskImeiService { } @Override - public Integer countByUserIdAndDate(Long userId, Integer num) { - return taskImeiRepository.countByUserId(userId, num); + public Integer countByUserIdAndDate(Long taskId, Integer num) { + return taskImeiRepository.countByUserId(taskId, num); } @Override @@ -118,12 +118,14 @@ public class TaskImeiServiceImpl implements TaskImeiService { @Override public CommonResponse processingData(TaskImeiDTO taskImeiDTO) { + // imei去除重复重新组装 List dtoList = Lists.newArrayList(Sets.newHashSet(taskImeiDTO.getImeiList())); + + // 最大最小数量设置 if (dtoList.size() < DefaultNumberConstants.ONE_HUNDRED) { return CommonResponse.createByErrorCodeMessage (DefaultNumberConstants.ZERO_NUMBER, ResponseCode.SEND_MAIL_NUM_FRIEND.getDesc()); } - if (dtoList.size() >= DefaultNumberConstants.ONE_HUNDRED_THOUSAND) { return CommonResponse.createByErrorCodeMessage (DefaultNumberConstants.ZERO_NUMBER, ResponseCode.SEND_MAIL_MAX_NUM_FRIEND.getDesc()); @@ -136,12 +138,12 @@ public class TaskImeiServiceImpl implements TaskImeiService { (DefaultNumberConstants.ZERO_NUMBER, ResponseCode.BATCH_NUMBER_ALREADY_EXISTS.getDesc()); } } - dtoList.forEach(o -> o.setImei(AESUtils.decrypt(o.getImei(), deliveryProperties.getExchangePassword()))); // 过滤未解密完成的 List filterList = dtoList.stream().filter (o -> ObjectUtil.isNotNull(o.getImei())).collect(Collectors.toList()); if (CollUtil.isNotEmpty(filterList)) { + log.info("================ the exchange list size as {} =================", filterList.size()); String file = deliveryProperties.getFileUrl().concat(StrPool.SLASH).concat(taskImeiDTO.getBatchNo()); // 保存文件 String csvPath = file.concat(StrPool.DOT).concat(FileConstant.CSV_FILE_SUB_NAME); diff --git a/ad-platform-manage/ad-platform-management/src/main/java/com/baiye/modules/telemarkting/api/TelephoneCallController.java b/ad-platform-manage/ad-platform-management/src/main/java/com/baiye/modules/telemarkting/api/TelephoneCallController.java index 57ce3335..8a990f82 100644 --- a/ad-platform-manage/ad-platform-management/src/main/java/com/baiye/modules/telemarkting/api/TelephoneCallController.java +++ b/ad-platform-manage/ad-platform-management/src/main/java/com/baiye/modules/telemarkting/api/TelephoneCallController.java @@ -7,7 +7,6 @@ import cn.hutool.json.JSONUtil; import com.baiye.constant.DefaultNumberConstants; import com.baiye.exception.BadRequestException; import com.baiye.http.CommonResponse; -import com.baiye.model.dto.UserDto; import com.baiye.model.enums.ResponseCode; import com.baiye.modules.platform.domain.Company; import com.baiye.modules.platform.domain.Organize; @@ -23,7 +22,10 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; import java.util.Date; diff --git a/ad-platform-manage/ad-platform-management/src/main/java/com/baiye/util/CSVFileUtil.java b/ad-platform-manage/ad-platform-management/src/main/java/com/baiye/util/CSVFileUtil.java index 5d0de716..b38232c0 100644 --- a/ad-platform-manage/ad-platform-management/src/main/java/com/baiye/util/CSVFileUtil.java +++ b/ad-platform-manage/ad-platform-management/src/main/java/com/baiye/util/CSVFileUtil.java @@ -47,14 +47,10 @@ public class CSVFileUtil { } public static void main(String[] args) { - - - File file = new File("C:\\Users\\a\\Desktop\\1.csv"); List phoneList = Lists.newArrayList(); CsvReader reader = CsvUtil.getReader(); - // 解析文件 CsvData data = reader.read(file); @@ -62,11 +58,10 @@ public class CSVFileUtil { (clue.get(DefaultNumberConstants.TWO_NUMBER))); - // 去除重复 List phoneSets = Lists.newArrayList(Sets.newHashSet(phoneList)); - File csvFile = new File("C:\\Users\\a\\Desktop\\1-3-dmp.csv"); + File csvFile = new File("C:\\Users\\a\\Desktop\\2-14-001-dmp.csv"); //导入HuTool中CSV工具包的CsvWriter类 //设置导出字符类型, CHARSET_UTF_8 CsvWriter writer = CsvUtil.getWriter(csvFile, CharsetUtil.CHARSET_UTF_8); @@ -76,9 +71,7 @@ public class CSVFileUtil { if (MobileUtil.checkPhone(decrypt)) { writer.writeLine(decrypt); } - } writer.close(); - } } diff --git a/ad-platform-pojo/src/main/java/com/baiye/model/entity/BaseClueMiddle.java b/ad-platform-pojo/src/main/java/com/baiye/model/entity/BaseClueMiddle.java index 644d391b..8569fe2c 100644 --- a/ad-platform-pojo/src/main/java/com/baiye/model/entity/BaseClueMiddle.java +++ b/ad-platform-pojo/src/main/java/com/baiye/model/entity/BaseClueMiddle.java @@ -116,4 +116,15 @@ public class BaseClueMiddle implements Serializable { this.clueType = clueType; this.clueStageTime = clueStageTime; } + + public BaseClueMiddle(Long taskId, Integer memberStatus, Integer optimisticVersion, Integer clueStage, Integer clueCallStatus, Integer clueType, Date clueStageTime, Long memberId) { + this.clueStage = clueStage; + this.clueCallStatus = clueCallStatus; + this.taskId = taskId; + this.memberStatus = memberStatus; + this.optimisticVersion = optimisticVersion; + this.clueType = clueType; + this.clueStageTime = clueStageTime; + this.memberId = memberId; + } } diff --git a/ad-platform-services/ad-platform-source/src/main/java/com/baiye/module/entity/ClueTalk.java b/ad-platform-services/ad-platform-source/src/main/java/com/baiye/module/entity/ClueTalk.java index d24bd061..3849204e 100644 --- a/ad-platform-services/ad-platform-source/src/main/java/com/baiye/module/entity/ClueTalk.java +++ b/ad-platform-services/ad-platform-source/src/main/java/com/baiye/module/entity/ClueTalk.java @@ -41,6 +41,11 @@ public class ClueTalk extends BaseClueMiddle { this.clueId = clueId; } + + public ClueTalk(Long clueId, Long taskId, Integer memberStatus, Integer optimisticVersion, Integer clueStage, Integer clueCallStatus, Integer clueType, Date clueStageTime, Long memberId) { + super(taskId, memberStatus, optimisticVersion, clueStage, clueCallStatus, clueType, clueStageTime, memberId); + this.clueId = clueId; + } public ClueTalk(){ } diff --git a/ad-platform-services/ad-platform-source/src/main/java/com/baiye/module/service/ClueService.java b/ad-platform-services/ad-platform-source/src/main/java/com/baiye/module/service/ClueService.java index 5787697f..1e40b158 100644 --- a/ad-platform-services/ad-platform-source/src/main/java/com/baiye/module/service/ClueService.java +++ b/ad-platform-services/ad-platform-source/src/main/java/com/baiye/module/service/ClueService.java @@ -160,6 +160,11 @@ public interface ClueService { /** * 保存线索 + * @param tagList + * @param phoneList + * @param taskId + * @param userId + * @param num */ void saveClue(List tagList, List phoneList, Long taskId, Long userId, Integer num); diff --git a/ad-platform-services/ad-platform-source/src/main/java/com/baiye/module/service/impl/ClueServiceImpl.java b/ad-platform-services/ad-platform-source/src/main/java/com/baiye/module/service/impl/ClueServiceImpl.java index b03c1ad0..e516f74b 100644 --- a/ad-platform-services/ad-platform-source/src/main/java/com/baiye/module/service/impl/ClueServiceImpl.java +++ b/ad-platform-services/ad-platform-source/src/main/java/com/baiye/module/service/impl/ClueServiceImpl.java @@ -4,7 +4,6 @@ import cn.hutool.core.collection.CollUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; -import cn.hutool.json.JSONObject; import com.baiye.constant.*; import com.baiye.enums.ClueStageEnum; import com.baiye.exception.BadRequestException; @@ -22,6 +21,7 @@ import com.baiye.module.service.CompanyService; import com.baiye.module.service.dto.ClueRecordCriteria; import com.baiye.task.ClueBackupsTask; import com.baiye.util.*; +import com.google.common.collect.Lists; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang.StringUtils; @@ -31,7 +31,6 @@ import org.springframework.data.domain.Pageable; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import java.math.BigInteger; @@ -1022,37 +1021,82 @@ public class ClueServiceImpl implements ClueService { @Override public void saveClue(List tagList, List phoneList, Long taskId, Long userId, Integer num) { if (CollUtil.isNotEmpty(phoneList)) { - int clueNumber = DefaultNumberConstants.ZERO_NUMBER; - for (int i = 0; i < phoneList.size(); i++) { - String phone = phoneList.get(i); - if (StringUtils.isNotBlank(phone)) { - Boolean checkPhone = MobileUtil.checkPhone(phone); - if (Boolean.FALSE.equals(checkPhone)) { - log.error("============== the exchange phone as {} =====================", phone); - continue; + // 查询是否自动分配 + CommonResponse + response = taskClient.findTaskDistribution(taskId); + if (response.getStatus() == DefaultNumberConstants.ZERO_NUMBER) { + DynamicTaskDistributionDTO responseData = response.getData(); + // 开启了自动分配 + if (ObjectUtil.isNotNull(responseData.getIsOpen()) && + responseData.getIsOpen() == DefaultNumberConstants.ONE_NUMBER) { + List dtoList + = responseData.getDynamicTaskDistributionUserDTOS(); + if (CollUtil.isNotEmpty(dtoList)) { + DistributeDTO distributeDTO = new DistributeDTO(); + // 获取用户分配的资源 + List userIdList = Lists.newArrayList(); + List weights = Lists.newArrayList(); + dtoList.forEach(dto -> { + userIdList.add(dto.getId()); + weights.add(Double.valueOf(dto.getRatio())); + }); + List longList = phoneList.stream().map(s -> Long.parseLong(s.trim())).collect(Collectors.toList()); + int sum = dtoList.stream().mapToInt(DynamicTaskDistributionUserDTO::getRatio).sum(); + // 比率分配数据 + distributeDTO.setIsWeight(sum == DefaultNumberConstants.ONE_HUNDRED); + distributeDTO.setResourceList(longList); + distributeDTO.setDeptIds(userIdList); + distributeDTO.setWeights(weights); + // 发送请求分配数据 + CommonResponse> distributeResponse = assignDataClient.dataDistribution(distributeDTO); + if (distributeResponse.getStatus() == DefaultNumberConstants.ZERO_NUMBER) { + for (DistributeResponseDTO data : distributeResponse.getData()) { + // 判断是否包含数据 + if (CollUtil.isNotEmpty(data.getResponseList())) { + phoneList = data.getResponseList().stream().map(String::valueOf).collect(Collectors.toList()); + this.saveClueTalk(phoneList, tagList, taskId, userId, num, data.getDeptId(), DefaultNumberConstants.ONE_NUMBER); + } + } + } + return; } - Clue clue = new Clue(); - clue.setNid(phone); - clue.setCreateBy(userId); - clue.setCastInfo(tagList.get(i)); - clue.setOrigin(DefaultNumberConstants.SIX_NUMBER); - clue.setIsEncryption(DefaultNumberConstants.ONE_NUMBER); - Clue save = clueRepository.save(clue); - - ClueTalk clueTalk = new ClueTalk(save.getId(), taskId, 0, 0, 0, 0, num, new Date()); - clueTalkRepository.save(clueTalk); - clueNumber++; } } - if (clueNumber > DefaultNumberConstants.ZERO_NUMBER) { - log.info("================= the clueNumber as {} =================", clueNumber); - Company company = companyService.findByUserId(userId); - if (ObjectUtil.isNotNull(company)) { - companyService.updateBalanceByUserId(clueNumber, company); + this.saveClueTalk(phoneList, tagList, taskId, userId, num, null, DefaultNumberConstants.ZERO_NUMBER); + } + } + + private void saveClueTalk(List responseList, List tagList, Long taskId, Long userId, Integer num, Long memberId, Integer memberStatus) { + + int clueNumber = DefaultNumberConstants.ZERO_NUMBER; + for (int i = 0; i < responseList.size(); i++) { + String phone = responseList.get(i); + if (StringUtils.isNotBlank(phone)) { + Boolean checkPhone = MobileUtil.checkPhone(phone); + if (Boolean.FALSE.equals(checkPhone)) { + log.error("============== the exchange phone as {} =====================", phone); + continue; } + Clue clue = new Clue(); + clue.setNid(phone); + clue.setCreateBy(userId); + clue.setCastInfo(tagList.get(i)); + clue.setOrigin(DefaultNumberConstants.SIX_NUMBER); + clue.setIsEncryption(DefaultNumberConstants.ONE_NUMBER); + Clue save = clueRepository.save(clue); + ClueTalk clueTalk = new ClueTalk(save.getId(), taskId, memberStatus, 0, 0, 0, num, new Date(), memberId); + clueTalkRepository.save(clueTalk); + clueNumber++; + } + } + if (clueNumber > DefaultNumberConstants.ZERO_NUMBER) { + log.info("================= the clueNumber as {} =================", clueNumber); + Company company = companyService.findByUserId(userId); + if (ObjectUtil.isNotNull(company)) { + companyService.updateBalanceByUserId(clueNumber, company); } - log.info("================= save clue size as {} =================", phoneList.size()); } + log.info("================= save clue size as {} =================", responseList.size()); } /** diff --git a/ad-platform-services/ad-platform-source/src/main/java/com/baiye/task/MailSourceTask.java b/ad-platform-services/ad-platform-source/src/main/java/com/baiye/task/MailSourceTask.java index 877ff275..a4bdfe9d 100644 --- a/ad-platform-services/ad-platform-source/src/main/java/com/baiye/task/MailSourceTask.java +++ b/ad-platform-services/ad-platform-source/src/main/java/com/baiye/task/MailSourceTask.java @@ -178,7 +178,8 @@ public class MailSourceTask { map.put("status",DefaultNumberConstants.TWO_HUNDRED); map.put("msg", ResponseCode.SUCCESS.getDesc()); map.put("data",dmpResponse); - HttpUtil.post("", JSONUtil.toJsonStr(map)); + String post = HttpUtil.post("https://api.xiaolanben.com/blue-touch/api/v1/open/ad/dmp/exchange", JSONUtil.toJsonStr(map)); + log.info("=============== the send request result as {} =============",JSONUtil.toJsonStr(post)); deliveryRecordService.updateStatusByTaskName(DefaultNumberConstants.ONE_NUMBER, decryptList.size(), taskName); } } @@ -188,7 +189,6 @@ public class MailSourceTask { deliveryRecordService.updateStatusByTaskName(DefaultNumberConstants.ONE_NUMBER, decryptList.size(), taskName); downRecordClient.updatePath(deliveryProperties.getDmpDownPath().concat(filePath), byTaskName.getId()); } - } } } diff --git a/ad-platform-services/ad-platform-source/src/test/java/ImeiTest.java b/ad-platform-services/ad-platform-source/src/test/java/ImeiTest.java new file mode 100644 index 00000000..64207f18 --- /dev/null +++ b/ad-platform-services/ad-platform-source/src/test/java/ImeiTest.java @@ -0,0 +1,43 @@ +import com.baiye.AdPlatformSourceApplication; +import com.baiye.constant.DefaultNumberConstants; +import com.baiye.module.service.ClueService; +import com.google.common.collect.Lists; +import lombok.extern.slf4j.Slf4j; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit4.SpringRunner; + +import javax.annotation.Resource; +import java.util.List; + +/** + * @author Enzo + * @date : 2023/2/17 + */ + +@Slf4j +@RunWith(SpringRunner.class) +@SpringBootTest(classes = AdPlatformSourceApplication.class, + webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) +public class ImeiTest { + + + @Resource + private ClueService clueService; + + + @Test + public void getSetting() { + + List tagList = Lists.newArrayList(); + tagList.add("test"); + List decryptList = Lists.newArrayList(); + decryptList.add("13586541001"); + // 将imei转为线索 + clueService.saveClue(tagList, decryptList, 1611603012639428608L, + 574L , DefaultNumberConstants.FOUR_NUMBER); + + + } +}