diff --git a/ad-platform-manage/ad-platform-management/src/main/java/com/baiye/modules/telemarkting/api/PreTestController.java b/ad-platform-manage/ad-platform-management/src/main/java/com/baiye/modules/telemarkting/api/PreTestController.java index 0d8c9858..cd8ba7bd 100644 --- a/ad-platform-manage/ad-platform-management/src/main/java/com/baiye/modules/telemarkting/api/PreTestController.java +++ b/ad-platform-manage/ad-platform-management/src/main/java/com/baiye/modules/telemarkting/api/PreTestController.java @@ -1,7 +1,9 @@ package com.baiye.modules.telemarkting.api; +import com.baiye.annotation.Inner; import com.baiye.annotation.Log; import com.baiye.http.CommonResponse; +import com.baiye.model.dto.AddSourceDTO; import com.baiye.modules.telemarkting.entity.dto.PreTestActDTO; import com.baiye.modules.telemarkting.entity.dto.PreTestActQueryCriteria; import com.baiye.modules.telemarkting.service.PreTestService; @@ -18,6 +20,8 @@ import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; +import java.util.List; + /** * @author wjt * @date 2023/11/13 @@ -70,4 +74,15 @@ public class PreTestController { public CommonResponse accountQuery() { return CommonResponse.createBySuccess(preTestService.accountQuery()); } + + + @Inner + @PostMapping("/add/source") + @ApiOperation("预测试添加资源") + public CommonResponse addSource(@RequestBody AddSourceDTO source) { + return CommonResponse.createBySuccess(preTestService.sendDBData(source)); + } + + + } diff --git a/ad-platform-manage/ad-platform-management/src/main/java/com/baiye/modules/telemarkting/entity/dto/CallImportDTO.java b/ad-platform-manage/ad-platform-management/src/main/java/com/baiye/modules/telemarkting/entity/dto/CallImportDTO.java index 40be6520..06826c15 100644 --- a/ad-platform-manage/ad-platform-management/src/main/java/com/baiye/modules/telemarkting/entity/dto/CallImportDTO.java +++ b/ad-platform-manage/ad-platform-management/src/main/java/com/baiye/modules/telemarkting/entity/dto/CallImportDTO.java @@ -1,6 +1,6 @@ package com.baiye.modules.telemarkting.entity.dto; -import lombok.Data; +import lombok.*; import java.util.List; @@ -46,7 +46,19 @@ public class CallImportDTO { /** * 线索标识码 (例如:活动名+用户民+随机码) */ - private String variable; + private List variableList; } + + @Getter + @Setter + @AllArgsConstructor + @NoArgsConstructor + public static class Variable { + + private String field; + + + private String value; + } } diff --git a/ad-platform-manage/ad-platform-management/src/main/java/com/baiye/modules/telemarkting/service/PreTestService.java b/ad-platform-manage/ad-platform-management/src/main/java/com/baiye/modules/telemarkting/service/PreTestService.java index 935580a6..c4024740 100644 --- a/ad-platform-manage/ad-platform-management/src/main/java/com/baiye/modules/telemarkting/service/PreTestService.java +++ b/ad-platform-manage/ad-platform-management/src/main/java/com/baiye/modules/telemarkting/service/PreTestService.java @@ -1,10 +1,10 @@ package com.baiye.modules.telemarkting.service; +import com.baiye.model.dto.AddSourceDTO; import com.baiye.modules.telemarkting.entity.PreTestAccount; import com.baiye.modules.telemarkting.entity.dto.PreTestActDTO; import com.baiye.modules.telemarkting.entity.dto.PreTestActQueryCriteria; import org.springframework.data.domain.Pageable; -import org.springframework.web.multipart.MultipartFile; /** * @author wjt @@ -40,4 +40,12 @@ public interface PreTestService { * @return */ PreTestAccount accountQuery(); + + + /** + * 向大坝发送请求 + * @param source + * @return + */ + Boolean sendDBData(AddSourceDTO source); } diff --git a/ad-platform-manage/ad-platform-management/src/main/java/com/baiye/modules/telemarkting/service/impl/PreTestServiceImpl.java b/ad-platform-manage/ad-platform-management/src/main/java/com/baiye/modules/telemarkting/service/impl/PreTestServiceImpl.java index 6c322094..877bc51a 100644 --- a/ad-platform-manage/ad-platform-management/src/main/java/com/baiye/modules/telemarkting/service/impl/PreTestServiceImpl.java +++ b/ad-platform-manage/ad-platform-management/src/main/java/com/baiye/modules/telemarkting/service/impl/PreTestServiceImpl.java @@ -7,6 +7,7 @@ import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSONUtil; import com.baiye.exception.BadRequestException; +import com.baiye.model.dto.AddSourceDTO; import com.baiye.modules.platform.domain.Task; import com.baiye.modules.platform.domain.TaskTag; import com.baiye.modules.platform.httpRequest.AdBackRequestApi; @@ -24,6 +25,8 @@ import com.baiye.modules.telemarkting.service.PreTestService; import com.baiye.util.PageUtil; import com.baiye.util.QueryHelp; import com.baiye.util.SecurityUtils; +import com.google.common.collect.Lists; +import com.google.common.collect.Maps; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.data.domain.Page; @@ -34,7 +37,9 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; import java.util.stream.Collectors; /** @@ -150,15 +155,42 @@ public class PreTestServiceImpl implements PreTestService { return preTestAccount; } - public void sendDBData(Long taskId, Long userId, List sources) { + @Override + public Boolean sendDBData(AddSourceDTO source) { + Long userId = source.getUserId(); + Long taskId = source.getTaskId(); + Map clueMap = source.getClueMap(); PreTestAccount preTestAccount = preTestAccountRepository.findById(userId).orElseGet(PreTestAccount::new); PreTestAct preTestAct = preTestActRepository.findByTaskIdAndUserId(taskId, userId); - CallImportDTO callImportDTO = new CallImportDTO(); - callImportDTO.setAuthKey(preTestAccount.getToken()); - callImportDTO.setActName(preTestAct.getActName()); - callImportDTO.setActId(preTestAct.getActId()); - callImportDTO.setClientList(sources); - preTestReq.sendDaBa(callImportDTO); + if (ObjectUtil.isNotNull(preTestAct)) { + CallImportDTO callImportDTO = new CallImportDTO(); + callImportDTO.setAuthKey(preTestAccount.getToken()); + callImportDTO.setActName(preTestAct.getActName()); + callImportDTO.setActId(preTestAct.getActId()); + for (Map.Entry entry : clueMap.entrySet()) { + List sourceList = getSources(entry); + callImportDTO.setClientList(sourceList); + } + preTestReq.sendDaBa(callImportDTO); + log.info("===================== send pre-test request size {} . ===================== ",callImportDTO.getClientList().size()); + return Boolean.TRUE; + } + return Boolean.FALSE; } + private static List getSources(Map.Entry entry) { + List list = Lists.newArrayList(); + List sourceList = Lists.newArrayList(); + CallImportDTO.Source sources = new CallImportDTO.Source(); + CallImportDTO.Variable variable = new CallImportDTO.Variable(); + + variable.setField(entry.getKey().toString()); + variable.setValue(entry.getKey().toString()); + list.add(variable); + // 是否加密 + sources.setCellphone(entry.getValue()); + sources.setVariableList(list); + sourceList.add(sources); + return sourceList; + } } diff --git a/ad-platform-pojo/src/main/java/com/baiye/model/dto/AddSourceDTO.java b/ad-platform-pojo/src/main/java/com/baiye/model/dto/AddSourceDTO.java new file mode 100644 index 00000000..0e8fefd1 --- /dev/null +++ b/ad-platform-pojo/src/main/java/com/baiye/model/dto/AddSourceDTO.java @@ -0,0 +1,24 @@ +package com.baiye.model.dto; + +import lombok.Builder; +import lombok.Data; + +import java.io.Serializable; +import java.util.Map; + +/** + * @author Enzo + * @date : 2023/5/9 + */ +@Data +@Builder +public class AddSourceDTO implements Serializable { + + private Long taskId; + + private Long userId; + + private Map clueMap; + + +} diff --git a/ad-platform-services/ad-platform-source/src/main/java/com/baiye/feign/PreTestClient.java b/ad-platform-services/ad-platform-source/src/main/java/com/baiye/feign/PreTestClient.java new file mode 100644 index 00000000..74022dac --- /dev/null +++ b/ad-platform-services/ad-platform-source/src/main/java/com/baiye/feign/PreTestClient.java @@ -0,0 +1,32 @@ +package com.baiye.feign; + +import com.baiye.constant.SecurityConstants; +import com.baiye.feign.fallback.PreTestClientFallback; +import com.baiye.model.dto.AddSourceDTO; +import com.baiye.model.dto.AddWeChatFriendRecordDTO; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestHeader; + +/** + * @author Enzo + * @date 2022-7-1 + * 微信添加好友请求 + */ + +@FeignClient(value = "ad-platform-management",fallback = PreTestClientFallback.class) +public interface PreTestClient { + + + /** + * 查询组标签和任务标签 + * @param source + * @param from + * @return + */ + @GetMapping( "/api/add/source") + ResponseEntity addSource(@RequestBody AddSourceDTO source, @RequestHeader(SecurityConstants.FROM) String from); + +} diff --git a/ad-platform-services/ad-platform-source/src/main/java/com/baiye/feign/TaskClient.java b/ad-platform-services/ad-platform-source/src/main/java/com/baiye/feign/TaskClient.java index 40b1b0bd..72171504 100644 --- a/ad-platform-services/ad-platform-source/src/main/java/com/baiye/feign/TaskClient.java +++ b/ad-platform-services/ad-platform-source/src/main/java/com/baiye/feign/TaskClient.java @@ -1,6 +1,5 @@ package com.baiye.feign; -import com.baiye.annotation.Inner; import com.baiye.constant.SecurityConstants; import com.baiye.feign.fallback.TaskClientFallback; import com.baiye.http.CommonResponse; @@ -9,6 +8,7 @@ import com.baiye.model.dto.TaskQueryCriteria; import com.baiye.model.dto.TaskUserDTO; import com.baiye.module.entity.Task; import io.swagger.annotations.ApiOperation; +import org.springframework.cache.annotation.Cacheable; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; @@ -40,6 +40,7 @@ public interface TaskClient { @ApiOperation("查询任务详情") @GetMapping(PAY_PREFIX + "/queryDetails") + @Cacheable(value = "taskName", key = "'task:name:' + #p0") ResponseEntity queryDetails(@RequestParam("taskId") Long taskId); @ApiOperation("修改任务信息") diff --git a/ad-platform-services/ad-platform-source/src/main/java/com/baiye/feign/fallback/PreTestClientFallback.java b/ad-platform-services/ad-platform-source/src/main/java/com/baiye/feign/fallback/PreTestClientFallback.java new file mode 100644 index 00000000..0162c3db --- /dev/null +++ b/ad-platform-services/ad-platform-source/src/main/java/com/baiye/feign/fallback/PreTestClientFallback.java @@ -0,0 +1,21 @@ +package com.baiye.feign.fallback; + +import com.baiye.feign.PreTestClient; +import com.baiye.model.dto.AddSourceDTO; +import com.baiye.model.dto.AddWeChatFriendRecordDTO; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Component; + +/** + * 预测试回调 + * @author Enzo + */ +@Component +public class PreTestClientFallback implements PreTestClient { + + + @Override + public ResponseEntity addSource(AddSourceDTO source, String from) { + return null; + } +} 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 a352c39b..a4fcd5f9 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 @@ -10,6 +10,7 @@ import com.baiye.module.service.dto.ClueRecordCriteria; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; +import java.util.Collection; import java.util.List; import java.util.Map; import java.util.Set; @@ -229,4 +230,17 @@ public interface ClueService { * @return */ Boolean updateGenderByZid(String nid, Integer gender); + + /** + * 保存线索 + * @param onLineNotblackList + * @param tagList + * @param taskId + * @param userId + * @param number + * @param memberId + * @param status + * @return + */ + Map saveClueTalk(List onLineNotblackList, List tagList, Long taskId, Long userId, Integer number, Long memberId, Integer status); } 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 13b63528..407f79bc 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 @@ -26,6 +26,7 @@ import com.baiye.module.service.dto.ClueRecordCriteria; import com.baiye.task.ClueBackupsTask; import com.baiye.util.*; import com.google.common.collect.Lists; +import com.google.common.collect.Maps; import lombok.RequiredArgsConstructor; import org.apache.commons.lang.StringUtils; import org.springframework.beans.BeanUtils; @@ -1095,7 +1096,7 @@ public class ClueServiceImpl implements ClueService { if (CollUtil.isNotEmpty(data.getResponseList())) { phoneList = data.getResponseList().stream().map(String::valueOf).collect(Collectors.toList()); Integer integer = this.saveClueTalk - (phoneList, tagList, taskId, userId, num, data.getDeptId(), DefaultNumberConstants.ONE_NUMBER); + (phoneList, tagList, taskId, userId, num, data.getDeptId(), DefaultNumberConstants.ONE_NUMBER).size(); saveNumber += integer; } } @@ -1104,14 +1105,14 @@ public class ClueServiceImpl implements ClueService { } } } - return this.saveClueTalk(phoneList, tagList, taskId, userId, num, null, DefaultNumberConstants.ZERO_NUMBER); + return this.saveClueTalk(phoneList, tagList, taskId, userId, num, null, DefaultNumberConstants.ZERO_NUMBER).size(); } return DefaultNumberConstants.ZERO_NUMBER; } - private Integer saveClueTalk(List responseList, List tagList, Long taskId, Long userId, Integer num, Long memberId, Integer memberStatus) { - - int clueNumber = DefaultNumberConstants.ZERO_NUMBER; + @Override + public Map saveClueTalk(List responseList, List tagList, Long taskId, Long userId, Integer num, Long memberId, Integer memberStatus) { + Map map = Maps.newHashMap(); for (int i = 0; i < responseList.size(); i++) { String phone = responseList.get(i); if (StringUtils.isNotBlank(phone)) { @@ -1132,11 +1133,11 @@ public class ClueServiceImpl implements ClueService { Clue save = clueRepository.save(clue); ClueTalk clueTalk = new ClueTalk(save.getId(), taskId, memberStatus, 0, 0, 0, num, new Date(), memberId); clueTalkRepository.save(clueTalk); - clueNumber++; + map.put(save.getId(), phone); } } CommonLog.info("==============save clue size as: " + responseList.size()); - return clueNumber; + return map; } /** @@ -1202,4 +1203,6 @@ public class ClueServiceImpl implements ClueService { return clueRepository.updateGenderByNid(nid, gender) > DefaultNumberConstants.ZERO_NUMBER; } + + } diff --git a/ad-platform-services/ad-platform-source/src/main/java/com/baiye/module/service/impl/DmpCallbackServiceImpl.java b/ad-platform-services/ad-platform-source/src/main/java/com/baiye/module/service/impl/DmpCallbackServiceImpl.java index 8e238723..bea6a658 100644 --- a/ad-platform-services/ad-platform-source/src/main/java/com/baiye/module/service/impl/DmpCallbackServiceImpl.java +++ b/ad-platform-services/ad-platform-source/src/main/java/com/baiye/module/service/impl/DmpCallbackServiceImpl.java @@ -6,8 +6,6 @@ import cn.hutool.core.date.DatePattern; import cn.hutool.core.date.DateUtil; import cn.hutool.core.io.FileUtil; import cn.hutool.core.text.StrPool; -import cn.hutool.core.text.csv.CsvData; -import cn.hutool.core.text.csv.CsvReader; import cn.hutool.core.text.csv.CsvUtil; import cn.hutool.core.text.csv.CsvWriter; import cn.hutool.core.util.CharsetUtil; @@ -19,9 +17,11 @@ import com.baiye.constant.DefaultNumberConstants; import com.baiye.constant.FileConstant; import com.baiye.constant.SecurityConstants; import com.baiye.feign.DeliveryRecordClient; +import com.baiye.feign.PreTestClient; import com.baiye.feign.TaskClient; import com.baiye.http.CommonResponse; import com.baiye.http.ResponseCode; +import com.baiye.model.dto.AddSourceDTO; import com.baiye.module.dao.ClueTalkRepository; import com.baiye.module.entity.DeliveryRecord; import com.baiye.module.entity.Task; @@ -45,6 +45,7 @@ import org.springframework.transaction.annotation.Transactional; import java.io.File; import java.util.List; +import java.util.Map; import java.util.Objects; import java.util.Set; import java.util.concurrent.CompletableFuture; @@ -70,6 +71,8 @@ public class DmpCallbackServiceImpl implements DmpCallbackService { private final ClueService clueService; + private final PreTestClient preTestClient; + private final ClueTalkRepository clueTalkRepository; private final DeliveryProperties deliveryProperties; @@ -148,16 +151,29 @@ public class DmpCallbackServiceImpl implements DmpCallbackService { // 请求黑名单 List isNotblackList = IsBlackUtil.getNotblackList(decryptList); List onLineNotblackList = IsBlackUtil.getOnLineNotblackList(isNotblackList); + Task task = taskClient.queryDetails(taskId).getBody(); + + if (ObjectUtil.isNotNull(task) && + ObjectUtil.isNotNull(task.getIsForm()) && + task.getIsForm() == DefaultNumberConstants.EIGHT_NUMBER) { + Map longStringMap = clueService.saveClueTalk + (onLineNotblackList, tagList, taskId, byTaskName.getUserId(), DefaultNumberConstants.FOUR_NUMBER, + null, DefaultNumberConstants.ZERO_NUMBER); + AddSourceDTO build = AddSourceDTO.builder().clueMap(longStringMap).userId(byTaskName.getUserId()).taskId(taskId).build(); + preTestClient.addSource(build, SecurityConstants.FROM_IN); + return; + } + // 将imei转为线索 Integer saveNumer = clueService.saveClue(tagList, onLineNotblackList, byTaskName.getTaskId(), byTaskName.getUserId(), DefaultNumberConstants.FOUR_NUMBER); // 修改任务总条数 Integer taskNum = clueTalkRepository.findTaskNum(taskId); - Task task = new Task(); - task.setId(taskId); - task.setTotalNumber(taskNum); - task.setIsDistribution(DefaultNumberConstants.ONE_NUMBER); - taskClient.updateTask(task); + Task updateTask = new Task(); + updateTask.setId(taskId); + updateTask.setTotalNumber(taskNum); + updateTask.setIsDistribution(DefaultNumberConstants.ONE_NUMBER); + taskClient.updateTask(updateTask); deliveryRecordClient.updateQuantity(byTaskName.getUserId(), saveNumer, SecurityConstants.FROM_IN); deliveryRecordService.updateStatusByTaskName(DefaultNumberConstants.ONE_NUMBER, saveNumer, taskName); } @@ -179,7 +195,7 @@ public class DmpCallbackServiceImpl implements DmpCallbackService { Object objPath = redisUtils.get(CacheKey.DMP_DOWN_URL.concat(String.valueOf(byTaskName.getDownId()))); String path = ObjectUtil.isNotNull(objPath) ? String.valueOf(objPath) : deliveryRecordClient.queryPath - (byTaskName.getDownId(), SecurityConstants.FROM_IN).getBody(); + (byTaskName.getDownId(), SecurityConstants.FROM_IN).getBody(); if (ObjectUtil.isNotNull(path)) { // 解压文件 diff --git a/ad-platform-services/ad-platform-source/src/main/java/com/baiye/module/service/impl/ReportCrmServiceImpl.java b/ad-platform-services/ad-platform-source/src/main/java/com/baiye/module/service/impl/ReportCrmServiceImpl.java index 6c5f4f2f..320bd8dc 100644 --- a/ad-platform-services/ad-platform-source/src/main/java/com/baiye/module/service/impl/ReportCrmServiceImpl.java +++ b/ad-platform-services/ad-platform-source/src/main/java/com/baiye/module/service/impl/ReportCrmServiceImpl.java @@ -441,7 +441,7 @@ public class ReportCrmServiceImpl implements ReportCrmService { return taskSet; } - @Cacheable(value = "taskName", key = "'task:name:' + #p0") + public String findByTaskId(Long taskId) { Task body = taskClient.queryDetails(taskId).getBody(); if (body != null) {