From afd297adeb914bdb89c06086608466fc9cce82ae Mon Sep 17 00:00:00 2001 From: yqy Date: Tue, 10 Jan 2023 14:53:41 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=88=A0=E9=99=A4=E7=94=A8?= =?UTF-8?q?=E6=88=B7=E9=80=BB=E8=BE=91=E5=92=8C=E5=BC=80=E6=94=BE=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E6=8E=88=E6=9D=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../platform/rest/OrganizeController.java | 7 ++ .../modules/platform/rest/TaskController.java | 15 +--- .../platform/service/OrganizeService.java | 5 ++ .../modules/platform/service/TaskService.java | 5 -- .../service/impl/OrganizeServiceImpl.java | 39 ++++++++- .../service/impl/TaskServiceImpl.java | 27 ------- .../system/service/impl/UserServiceImpl.java | 30 +++---- .../telemarkting/entity/AllCallInfo.java | 50 +----------- .../java/com/baiye/model/dto/DelUserDTO.java | 2 +- .../baiye/model/entity/BaseAllCallInfo.java | 65 +++++++++++++++ .../java/com/baiye/model/entity/BaseTask.java | 1 + .../com/baiye/api/AssignDataController.java | 2 + .../main/java/com/baiye/feign/TaskClient.java | 13 ++- .../feign/fallback/TaskClientFallback.java | 12 +-- .../module/dao/AllCallInfoRepository.java | 20 +++++ .../baiye/module/dao/CallClueRepository.java | 22 +++++ .../java/com/baiye/module/dao/ClueJpa.java | 9 ++- .../module/dao/ClueMiddleRepository.java | 31 ------- .../com/baiye/module/dao/ClueRepository.java | 2 - .../baiye/module/dao/ClueTalkRepository.java | 7 ++ .../module/dao/PublicCluePoolRepository.java | 6 ++ .../module/dao/TurnoverRecordRepository.java | 6 ++ .../com/baiye/module/entity/AllCallInfo.java | 29 +++++++ .../com/baiye/module/entity/CallClueInfo.java | 41 ++++++++++ .../com/baiye/module/service/ClueService.java | 5 -- .../module/service/impl/ClueServiceImpl.java | 81 +++++++++++-------- .../service/impl/FormSourceServiceImpl.java | 2 +- .../service/impl/ReportCrmServiceImpl.java | 4 +- .../service/impl/ReportTokerServiceImpl.java | 4 +- .../java/com/baiye/task/ClueBackupsTask.java | 7 +- .../java/com/baiye/task/FileAnalysisTask.java | 15 ++-- .../java/com/baiye/task/MailSourceTask.java | 2 +- .../java/com/baiye/task/OceanEngineSync.java | 2 +- 33 files changed, 352 insertions(+), 216 deletions(-) create mode 100644 ad-platform-pojo/src/main/java/com/baiye/model/entity/BaseAllCallInfo.java create mode 100644 ad-platform-services/ad-platform-source/src/main/java/com/baiye/module/dao/AllCallInfoRepository.java create mode 100644 ad-platform-services/ad-platform-source/src/main/java/com/baiye/module/dao/CallClueRepository.java create mode 100644 ad-platform-services/ad-platform-source/src/main/java/com/baiye/module/entity/AllCallInfo.java create mode 100644 ad-platform-services/ad-platform-source/src/main/java/com/baiye/module/entity/CallClueInfo.java diff --git a/ad-platform-manage/ad-platform-management/src/main/java/com/baiye/modules/platform/rest/OrganizeController.java b/ad-platform-manage/ad-platform-management/src/main/java/com/baiye/modules/platform/rest/OrganizeController.java index fa4b25ee..97c8d5ca 100644 --- a/ad-platform-manage/ad-platform-management/src/main/java/com/baiye/modules/platform/rest/OrganizeController.java +++ b/ad-platform-manage/ad-platform-management/src/main/java/com/baiye/modules/platform/rest/OrganizeController.java @@ -1,5 +1,6 @@ package com.baiye.modules.platform.rest; +import com.baiye.annotation.Inner; import com.baiye.http.CommonResponse; import com.baiye.http.ResponseCode; import com.baiye.model.dto.ClueDto; @@ -145,6 +146,12 @@ public class OrganizeController { return new ResponseEntity<>(organizeService.selectMemberList(organizeQueryCriteria), HttpStatus.OK); } + @ApiOperation("根据删除用户,查询可用角色的用户") + @GetMapping("/findDelUser") + public ResponseEntity findDelUser(@RequestParam("userId") Long userId) { + return new ResponseEntity<>(organizeService.findDelUser(userId), HttpStatus.OK); + } + @ApiOperation("查询所有的组和组线索数量") @GetMapping("/selectAll") public ResponseEntity selectAllOrganize() { diff --git a/ad-platform-manage/ad-platform-management/src/main/java/com/baiye/modules/platform/rest/TaskController.java b/ad-platform-manage/ad-platform-management/src/main/java/com/baiye/modules/platform/rest/TaskController.java index c6a96e6f..ec97142d 100644 --- a/ad-platform-manage/ad-platform-management/src/main/java/com/baiye/modules/platform/rest/TaskController.java +++ b/ad-platform-manage/ad-platform-management/src/main/java/com/baiye/modules/platform/rest/TaskController.java @@ -61,14 +61,12 @@ public class TaskController { @ApiOperation("查询任务列表") @GetMapping("/list") - @Inner(value = false) public ResponseEntity list(TaskQueryCriteria taskQueryCriteria) { return new ResponseEntity<>(taskService.list(taskQueryCriteria), HttpStatus.OK); } @ApiOperation("查询任务详情") @GetMapping("/queryDetails") - @Inner public ResponseEntity queryDetails(@RequestParam("taskId") Long taskId) { return new ResponseEntity<>(taskService.queryDetails(taskId), HttpStatus.OK); } @@ -85,7 +83,7 @@ public class TaskController { return new ResponseEntity<>(taskService.findTaskLabel(userId), HttpStatus.OK); } - @Inner + @Inner(value = false) @ApiOperation("修改任务信息") @PostMapping("/update") public CommonResponse updateTask(@RequestBody Task task) { @@ -100,14 +98,7 @@ public class TaskController { return CommonResponse.createBySuccess(); } - @ApiOperation("删除动态任务") - @GetMapping("/delDynamic") - public CommonResponse delDynamicTask(@RequestParam("taskId") Long taskId) { - taskService.delTask(taskId); - return CommonResponse.createBySuccess(); - } - - @Inner + @Inner(value = false) @ApiOperation("websocket发送错误信息") @GetMapping("/sendErrMessage") public void sendErrMessage(String errorMessage, Long userId) { @@ -128,7 +119,7 @@ public class TaskController { return CommonResponse.createBySuccessMessage("操作成功"); } - @Inner + @Inner(value = false) @ApiOperation("查询动态任务(自动)分配比率") @GetMapping("/findTaskDistribution") public CommonResponse findTaskDistribution(@RequestParam("taskId") Long taskId) { diff --git a/ad-platform-manage/ad-platform-management/src/main/java/com/baiye/modules/platform/service/OrganizeService.java b/ad-platform-manage/ad-platform-management/src/main/java/com/baiye/modules/platform/service/OrganizeService.java index 8e7e198d..0449b927 100644 --- a/ad-platform-manage/ad-platform-management/src/main/java/com/baiye/modules/platform/service/OrganizeService.java +++ b/ad-platform-manage/ad-platform-management/src/main/java/com/baiye/modules/platform/service/OrganizeService.java @@ -96,6 +96,11 @@ public interface OrganizeService { */ List selectMemberList(OrganizeQueryCriteria organizeQueryCriteria); + /** + * 根据删除用户,查询可用角色的用户 + */ + Object findDelUser(Long userId); + /** * 查询所有组 */ diff --git a/ad-platform-manage/ad-platform-management/src/main/java/com/baiye/modules/platform/service/TaskService.java b/ad-platform-manage/ad-platform-management/src/main/java/com/baiye/modules/platform/service/TaskService.java index e98f2125..53efdea7 100644 --- a/ad-platform-manage/ad-platform-management/src/main/java/com/baiye/modules/platform/service/TaskService.java +++ b/ad-platform-manage/ad-platform-management/src/main/java/com/baiye/modules/platform/service/TaskService.java @@ -70,11 +70,6 @@ public interface TaskService { */ void delTask(Long taskId); - /** - * 删除动态任务 - */ -// void delDynamicTask(Long taskId); - /** * 发送错误信息 */ diff --git a/ad-platform-manage/ad-platform-management/src/main/java/com/baiye/modules/platform/service/impl/OrganizeServiceImpl.java b/ad-platform-manage/ad-platform-management/src/main/java/com/baiye/modules/platform/service/impl/OrganizeServiceImpl.java index 6ae18217..22f3e5a9 100644 --- a/ad-platform-manage/ad-platform-management/src/main/java/com/baiye/modules/platform/service/impl/OrganizeServiceImpl.java +++ b/ad-platform-manage/ad-platform-management/src/main/java/com/baiye/modules/platform/service/impl/OrganizeServiceImpl.java @@ -18,6 +18,7 @@ import com.baiye.modules.platform.service.mapstruct.OrganizeMapper; import com.baiye.modules.platform.service.mapstruct.OrganizeUserMapper; import com.baiye.modules.platform.service.mapstruct.TaskOrganizeMapper; import com.baiye.modules.system.domain.User; +import com.baiye.modules.system.dto.UserQueryCriteria; import com.baiye.modules.system.repository.UserRepository; import com.baiye.modules.system.service.RoleService; import com.baiye.modules.system.service.UserService; @@ -39,6 +40,7 @@ import org.springframework.transaction.annotation.Transactional; import java.util.*; import java.util.stream.Collectors; +import java.util.stream.Stream; @Service @RequiredArgsConstructor @@ -549,10 +551,11 @@ public class OrganizeServiceImpl implements OrganizeService { // 判断角色,管理员只查组长角色的用户 if (roleId.equals(RoleNumberConstants.MINUS_EIGHT_NUMBER) || roleId.equals(RoleNumberConstants.MINUS_TEN_NUMBER)) { roles.add(RoleNumberConstants.MINUS_NINE_NUMBER); + roles.add(RoleNumberConstants.MINUS_TEN_NUMBER); } else { roles.add(RoleNumberConstants.MINUS_FIVE_NUMBER); } - //查询角色下所有用户 + //查询本公司-角色下所有用户 List userDtoList = userService.findByManager(roles); //查询所有组员 List organizeUserAll = organizeUserRepository.findAll(); @@ -567,6 +570,40 @@ public class OrganizeServiceImpl implements OrganizeService { return userDtos; } + @Override + public Object findDelUser(Long userId) { + UserDto userInfo = userService.findUserInfo(userId); + List delRoleIdList = userInfo.getRoles().stream().map(RoleSmallDto::getId).collect(Collectors.toList()); + UserQueryCriteria userQueryCriteria = new UserQueryCriteria(); + userQueryCriteria.setCompanyId(userInfo.getCompanyId()); + List userDtoList = userService.queryAll(userQueryCriteria); + //筛选本公司下相同角色的用户 + List list = new ArrayList<>(); + for (UserDto userDto : userDtoList) { + Set roles = userDto.getRoles(); + for (RoleSmallDto role : roles) { + if (delRoleIdList.contains(role.getId())) { + list.add(userDto); + break; + } + } + } + //查询所有组员,去重后返回(去重删除人不同组的,还有删除者本人) + List organizeUserAll = organizeUserRepository.findAll(); + OrganizeUser organizeUser = organizeUserAll.stream().filter(org -> org.getUserId().equals(userId)).findAny().orElseGet(OrganizeUser::new); + Set delUserIdList = organizeUserAll.stream() + .filter(org -> !org.getOrganizeId().equals(organizeUser.getOrganizeId())) + .map(OrganizeUser::getUserId).collect(Collectors.toSet()); + delUserIdList.add(userId); + //如果删除小组用户是呼叫员,也可以查询出组长,把资源转给组长 + Set returnUserDto = list.stream().filter(users -> !delUserIdList.contains(users.getId())).collect(Collectors.toSet()); + if (delRoleIdList.contains(RoleNumberConstants.MINUS_FIVE_NUMBER)) { + UserDto userDto = userDtoList.stream().filter(user -> user.getId().equals(organizeUser.getCreateBy())).findAny().orElseGet(UserDto::new); + returnUserDto.add(userDto); + } + return returnUserDto; + } + @Override public List selectAllOrganize() { return organizeRepository.findAll(); diff --git a/ad-platform-manage/ad-platform-management/src/main/java/com/baiye/modules/platform/service/impl/TaskServiceImpl.java b/ad-platform-manage/ad-platform-management/src/main/java/com/baiye/modules/platform/service/impl/TaskServiceImpl.java index d607be67..8991b4f1 100644 --- a/ad-platform-manage/ad-platform-management/src/main/java/com/baiye/modules/platform/service/impl/TaskServiceImpl.java +++ b/ad-platform-manage/ad-platform-management/src/main/java/com/baiye/modules/platform/service/impl/TaskServiceImpl.java @@ -73,7 +73,6 @@ public class TaskServiceImpl implements TaskService { public void saveTask(Task task) { if (task.getId() == null) task.setId(IdUtil.getSnowflake(workerId, datacenterId).nextId()); if (CollUtil.isNotEmpty(task.getOrganizeList())) task.setOrganizeList(task.getOrganizeList()); - task.setCreateBy(SecurityUtils.getCurrentUserId()); task.setIsDistribution(DefaultNumberConstants.ZERO_NUMBER); taskRepository.save(task); } @@ -391,22 +390,6 @@ public class TaskServiceImpl implements TaskService { } } -// @Override -// @Transactional(rollbackOn = Exception.class) -// public void delTask(Long taskId) { -// List taskOrganizeList = taskOrganizeRepository.findByTaskId(taskId); -// if (CollUtil.isNotEmpty(taskOrganizeList)) { -// throw new BadRequestException("任务已分配,无法删除"); -// } -// taskRepository.deleteById(taskId); -// Set taskIdList = new HashSet<>(); -// taskIdList.add(taskId); -// sourceClueClient.delClueAll(taskIdList); -// } - - /** - * TODO:任务删除 - */ @Override @Transactional(rollbackOn = Exception.class) public void delTask(Long taskId) { @@ -434,16 +417,6 @@ public class TaskServiceImpl implements TaskService { webSocketServer.sendMessage(message, userId); } -// @Override -// public void delDynamicTask(Long taskId) { -// Task task = taskRepository.findById(taskId).orElseGet(Task::new); -// if (task.getTotalNumber() == null || task.getTotalNumber() == 0) { -// taskRepository.deleteById(taskId); -// } else { -// throw new BadRequestException("任务已导入资源,无法删除"); -// } -// } - @Override public void updateTaskEncryption(Long taskId) { Task task = taskRepository.findById(taskId).orElseGet(Task::new); diff --git a/ad-platform-manage/ad-platform-management/src/main/java/com/baiye/modules/system/service/impl/UserServiceImpl.java b/ad-platform-manage/ad-platform-management/src/main/java/com/baiye/modules/system/service/impl/UserServiceImpl.java index fa6f019b..cf920c80 100644 --- a/ad-platform-manage/ad-platform-management/src/main/java/com/baiye/modules/system/service/impl/UserServiceImpl.java +++ b/ad-platform-manage/ad-platform-management/src/main/java/com/baiye/modules/system/service/impl/UserServiceImpl.java @@ -56,6 +56,7 @@ import org.springframework.cache.annotation.CacheEvict; import org.springframework.cache.annotation.Cacheable; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; +import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.stereotype.Service; @@ -213,7 +214,6 @@ public class UserServiceImpl implements UserService { companyDto.setCompanyType(userDTO.getCompanyType()); companyDto.setStatus(DefaultNumberConstants.ZERO_NUMBER); companyId = companyService.createCompany(companyDto).getId(); - } companyId = companyId != null ? companyId : SecurityUtils.getCompanyId(); @@ -236,8 +236,6 @@ public class UserServiceImpl implements UserService { //todo 如果是管理员 则创建任务 if (flag) { - //todo 新建标签组 - Long labelOrganizeId = labelOrganizeService.saveDefault(userCreateResult.getId()); if (userDTO.getCompanyType() != null && userDTO.getCompanyType() == 1) { //抖音(飞鱼) createTask(userCreateResult.getId(), "抖音任务", DefaultNumberConstants.THREE_NUMBER); @@ -555,6 +553,9 @@ public class UserServiceImpl implements UserService { Boolean isDel = delUserDTO.getIsDel(); UserDto user = findById(userId); Set roleIds = user.getRoles().stream().map(RoleSmallDto::getId).collect(Collectors.toSet()); + Set replaceRoleIds = new HashSet<>(); + if (replaceUserId != null) + replaceRoleIds = findById(replaceUserId).getRoles().stream().map(RoleSmallDto::getId).collect(Collectors.toSet()); // 一: 删除业务管理员账号(删除公司) if (roleIds.contains(RoleNumberConstants.MINUS_EIGHT_NUMBER) || roleIds.contains(RoleNumberConstants.MINUS_TEN_NUMBER)) { UserQueryCriteria userQueryCriteria = new UserQueryCriteria(); @@ -563,9 +564,7 @@ public class UserServiceImpl implements UserService { Set userIds = userDtos.stream().map(UserDto::getId).collect(Collectors.toSet()); Set taskIds = taskRepository.findByCreateBy(userId).stream().map(Task::getId).collect(Collectors.toSet()); //1、清理缓存 删除用户 - for (UserDto userDto : userDtos) { - delCaches(userDto.getId(), userDto.getUsername()); - } + for (UserDto userDto : userDtos) this.delCaches(userDto.getId(), userDto.getUsername()); userRepository.deleteAllByIdIn(userIds); //2、删除公司信息 companyService.deleteCompanyByCompanyId(user.getCompanyId()); @@ -585,27 +584,28 @@ public class UserServiceImpl implements UserService { taskUserDistributionRepository.deleteAllByUserIdIn(userIds); //10、删除资源相关数据 ResponseEntity response = sourceClueClient.delClueAll(taskIds); - if (response.getStatusCode().value() != 200) { + if (response.getStatusCode().value() != DefaultNumberConstants.TWO_HUNDRED) throw new BadRequestException("删除失败"); - } //TODO 删除逻辑待补充? return; } else if (roleIds.contains(RoleNumberConstants.MINUS_NINE_NUMBER)) { - // 二: 删除组长 + // 二: 删除或者替换组长 if (replaceUserId == null) throw new BadRequestException("请选择替换组长"); + if (CollUtil.isNotEmpty(replaceRoleIds) && !roleIds.contains(RoleNumberConstants.MINUS_NINE_NUMBER)) + throw new BadRequestException("请选择组长角色的用户"); organizeUserRepository.updateUser(userId, replaceUserId); organizeUserRepository.updateCreateBy(replaceUserId, userId); this.sourceDel(isDel, userId, replaceUserId); } else if (roleIds.contains(RoleNumberConstants.MINUS_FIVE_NUMBER)) { - // 三: 删除业务员 - if (isDel) { - organizeUserRepository.deleteByUserId(userId); - this.sourceDel(true, userId, replaceUserId); - } else { + // 三: 删除或者替换业务员 + if (isDel) organizeUserRepository.deleteByUserId(userId); + else { if (replaceUserId == null) throw new BadRequestException("请选择替换人员"); + if (CollUtil.isNotEmpty(replaceRoleIds) && !roleIds.contains(RoleNumberConstants.MINUS_FIVE_NUMBER)) + throw new BadRequestException("请选择业务管理员角色的用户"); organizeUserRepository.updateUser(userId, replaceUserId); - this.sourceDel(false, userId, replaceUserId); } + this.sourceDel(isDel, userId, replaceUserId); } // 清理缓存 delCaches(userId, user.getUsername()); diff --git a/ad-platform-manage/ad-platform-management/src/main/java/com/baiye/modules/telemarkting/entity/AllCallInfo.java b/ad-platform-manage/ad-platform-management/src/main/java/com/baiye/modules/telemarkting/entity/AllCallInfo.java index 9ab90d6c..4142e967 100644 --- a/ad-platform-manage/ad-platform-management/src/main/java/com/baiye/modules/telemarkting/entity/AllCallInfo.java +++ b/ad-platform-manage/ad-platform-management/src/main/java/com/baiye/modules/telemarkting/entity/AllCallInfo.java @@ -1,14 +1,12 @@ package com.baiye.modules.telemarkting.entity; +import com.baiye.model.entity.BaseAllCallInfo; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; -import org.springframework.data.annotation.LastModifiedDate; import org.springframework.data.jpa.domain.support.AuditingEntityListener; import javax.persistence.*; -import java.io.Serializable; -import java.util.Date; /** * @author wujingtao @@ -20,7 +18,7 @@ import java.util.Date; @Entity @Table(name = "tb_call_info") @EntityListeners(AuditingEntityListener.class) -public class AllCallInfo implements Serializable { +public class AllCallInfo extends BaseAllCallInfo { private static final long serialVersionUID = -4568384407605608189L; @Id @@ -28,48 +26,4 @@ public class AllCallInfo implements Serializable { @Column(name = "id") @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; - - @Column(name = "status") - @ApiModelProperty(value = "状态") - private Integer status; - - @Column(name = "type") - @ApiModelProperty(value = "类型") - private Integer type; - - @Column(name = "session_id") - @ApiModelProperty(value = "回调的sessionId") - private String sessionId; - @Column(name = "request_id") - @ApiModelProperty(value = "请求的唯一id") - private String requestId; - - @Column(name = "clue_id") - @ApiModelProperty(value = "线索id") - private Long clueId; - @Column(name = "clue_type") - @ApiModelProperty(value = "线索类型") - private Integer clueType; - @Column(name = "member_id") - @ApiModelProperty(value = "所属人id") - private Long memberId; - - @LastModifiedDate - @Column(name = "create_time") - @ApiModelProperty(value = "创建时间") - private Date createTime; - - @Column(name = "duration") - @ApiModelProperty(value = "通话时长") - private Integer duration = 0; - - - @Column(name = "record_flag") - @ApiModelProperty(value = "该字段用于录音标识 0:未有 1:有") - private Integer recordFlag; - - @Column(name = "record_file_download_url") - @ApiModelProperty(value = "录音下载地址") - private String recordFileDownloadUrl; - } diff --git a/ad-platform-pojo/src/main/java/com/baiye/model/dto/DelUserDTO.java b/ad-platform-pojo/src/main/java/com/baiye/model/dto/DelUserDTO.java index 81bf1487..ca53b2c4 100644 --- a/ad-platform-pojo/src/main/java/com/baiye/model/dto/DelUserDTO.java +++ b/ad-platform-pojo/src/main/java/com/baiye/model/dto/DelUserDTO.java @@ -12,6 +12,6 @@ public class DelUserDTO { @ApiModelProperty("替换人用户ID") private Long replaceUserId; - @ApiModelProperty("是否删除") + @ApiModelProperty("是否删除资源") private Boolean isDel; } diff --git a/ad-platform-pojo/src/main/java/com/baiye/model/entity/BaseAllCallInfo.java b/ad-platform-pojo/src/main/java/com/baiye/model/entity/BaseAllCallInfo.java new file mode 100644 index 00000000..f34166b8 --- /dev/null +++ b/ad-platform-pojo/src/main/java/com/baiye/model/entity/BaseAllCallInfo.java @@ -0,0 +1,65 @@ +package com.baiye.model.entity; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.data.annotation.LastModifiedDate; +import org.springframework.data.jpa.domain.support.AuditingEntityListener; + +import javax.persistence.*; +import java.io.Serializable; +import java.util.Date; + +/** + * @author wujingtao + * @date 2022/02/10 + * 所有呼叫记录 + */ +@EntityListeners(AuditingEntityListener.class) +@Data +@MappedSuperclass +public class BaseAllCallInfo implements Serializable { + + @Column(name = "status") + @ApiModelProperty(value = "状态") + private Integer status; + + @Column(name = "type") + @ApiModelProperty(value = "类型") + private Integer type; + + @Column(name = "session_id") + @ApiModelProperty(value = "回调的sessionId") + private String sessionId; + @Column(name = "request_id") + @ApiModelProperty(value = "请求的唯一id") + private String requestId; + + @Column(name = "clue_id") + @ApiModelProperty(value = "线索id") + private Long clueId; + @Column(name = "clue_type") + @ApiModelProperty(value = "线索类型") + private Integer clueType; + @Column(name = "member_id") + @ApiModelProperty(value = "所属人id") + private Long memberId; + + @LastModifiedDate + @Column(name = "create_time") + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @Column(name = "duration") + @ApiModelProperty(value = "通话时长") + private Integer duration = 0; + + + @Column(name = "record_flag") + @ApiModelProperty(value = "该字段用于录音标识 0:未有 1:有") + private Integer recordFlag; + + @Column(name = "record_file_download_url") + @ApiModelProperty(value = "录音下载地址") + private String recordFileDownloadUrl; + +} diff --git a/ad-platform-pojo/src/main/java/com/baiye/model/entity/BaseTask.java b/ad-platform-pojo/src/main/java/com/baiye/model/entity/BaseTask.java index faa7a8fe..ff4e2242 100644 --- a/ad-platform-pojo/src/main/java/com/baiye/model/entity/BaseTask.java +++ b/ad-platform-pojo/src/main/java/com/baiye/model/entity/BaseTask.java @@ -58,6 +58,7 @@ public class BaseTask implements Serializable { @ApiModelProperty(value = "创建人") @Column(name = "create_by") + @NotNull(groups = AddGroup.class, message = "用户不能为空") private Long createBy; @ApiModelProperty(value = "更新人") diff --git a/ad-platform-services/ad-platform-service/src/main/java/com/baiye/api/AssignDataController.java b/ad-platform-services/ad-platform-service/src/main/java/com/baiye/api/AssignDataController.java index fb20c9fc..662e4978 100644 --- a/ad-platform-services/ad-platform-service/src/main/java/com/baiye/api/AssignDataController.java +++ b/ad-platform-services/ad-platform-service/src/main/java/com/baiye/api/AssignDataController.java @@ -2,6 +2,7 @@ package com.baiye.api; import cn.hutool.core.date.DateUtil; import cn.hutool.json.JSONUtil; +import com.baiye.annotation.Inner; import com.baiye.http.CommonResponse; import com.baiye.model.dto.DistributeDTO; import com.baiye.model.dto.DistributeResponseDTO; @@ -32,6 +33,7 @@ public class AssignDataController { private final AssignDataService assignDataService; + @Inner(value = false) @ApiOperation(value = "分配资源") @PostMapping("/allocation") public CommonResponse> resourceAllocation(@Validated @RequestBody DistributeDTO distribution) { 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 44decda2..6de92755 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.constant.SecurityConstants; import com.baiye.feign.fallback.TaskClientFallback; import com.baiye.http.CommonResponse; import com.baiye.model.dto.DynamicTaskDistributionDTO; @@ -22,7 +21,7 @@ public interface TaskClient { @ApiOperation("添加任务") @PostMapping(value = PAY_PREFIX + "/saveTask") - ResponseEntity saveTask(@RequestBody Task task, @RequestHeader(SecurityConstants.FROM) String from); + ResponseEntity saveTask(@RequestBody Task task); @ApiOperation("查询任务列表") @PostMapping(PAY_PREFIX + "/query") @@ -34,25 +33,25 @@ public interface TaskClient { @ApiOperation("websocket发送错误信息") @GetMapping(PAY_PREFIX + "/sendErrMessage") - void sendErrMessage(@RequestParam("errorMessage") String errorMessage, @RequestParam("userId") Long userId, @RequestHeader(SecurityConstants.FROM) String from); + void sendErrMessage(@RequestParam("errorMessage") String errorMessage, @RequestParam("userId") Long userId); @ApiOperation("查询任务详情") @GetMapping(PAY_PREFIX + "/queryDetails") - ResponseEntity queryDetails(@RequestParam("taskId") Long taskId,@RequestHeader(SecurityConstants.FROM) String from); + ResponseEntity queryDetails(@RequestParam("taskId") Long taskId); @ApiOperation("修改任务信息") @PostMapping(PAY_PREFIX + "/update") - CommonResponse updateTask(@RequestBody Task task, @RequestHeader(SecurityConstants.FROM) String from); + CommonResponse updateTask(@RequestBody Task task); @ApiOperation("查询动态任务(自动)分配比率") @GetMapping(PAY_PREFIX + "/findTaskDistribution") - CommonResponse findTaskDistribution(@RequestParam("taskId") Long taskId, @RequestHeader(SecurityConstants.FROM) String from); + CommonResponse findTaskDistribution(@RequestParam("taskId") Long taskId); @ApiOperation("查询任务列表") @GetMapping(PAY_PREFIX + "/list") ResponseEntity list(@RequestParam("isForms") List isForms, @RequestParam("createBy") Long createBy, - @RequestParam("isDistribution") Integer isDistribution, @RequestHeader(SecurityConstants.FROM) String from); + @RequestParam("isDistribution") Integer isDistribution); /** * 查询任务的缓存信息 diff --git a/ad-platform-services/ad-platform-source/src/main/java/com/baiye/feign/fallback/TaskClientFallback.java b/ad-platform-services/ad-platform-source/src/main/java/com/baiye/feign/fallback/TaskClientFallback.java index 67694759..95baf35e 100644 --- a/ad-platform-services/ad-platform-source/src/main/java/com/baiye/feign/fallback/TaskClientFallback.java +++ b/ad-platform-services/ad-platform-source/src/main/java/com/baiye/feign/fallback/TaskClientFallback.java @@ -17,7 +17,7 @@ import java.util.Set; @Component public class TaskClientFallback implements TaskClient { @Override - public ResponseEntity saveTask(Task task, String from) { + public ResponseEntity saveTask(Task task) { return null; } @@ -32,27 +32,27 @@ public class TaskClientFallback implements TaskClient { } @Override - public void sendErrMessage(String errorMessage, Long userId, String from) { + public void sendErrMessage(String errorMessage, Long userId) { } @Override - public ResponseEntity queryDetails(Long taskId, String from) { + public ResponseEntity queryDetails(Long taskId) { return null; } @Override - public CommonResponse updateTask(Task task, String from) { + public CommonResponse updateTask(Task task) { return null; } @Override - public CommonResponse findTaskDistribution(Long taskId, String from) { + public CommonResponse findTaskDistribution(Long taskId) { return null; } @Override - public ResponseEntity list(List isForms, Long createBy, Integer isDistribution, String from) { + public ResponseEntity list(List isForms, Long createBy, Integer isDistribution) { return null; } @Override diff --git a/ad-platform-services/ad-platform-source/src/main/java/com/baiye/module/dao/AllCallInfoRepository.java b/ad-platform-services/ad-platform-source/src/main/java/com/baiye/module/dao/AllCallInfoRepository.java new file mode 100644 index 00000000..a2a476fb --- /dev/null +++ b/ad-platform-services/ad-platform-source/src/main/java/com/baiye/module/dao/AllCallInfoRepository.java @@ -0,0 +1,20 @@ +package com.baiye.module.dao; + +import com.baiye.module.entity.AllCallInfo; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.JpaSpecificationExecutor; +import org.springframework.data.jpa.repository.Modifying; +import org.springframework.data.jpa.repository.Query; +import org.springframework.stereotype.Repository; + +import java.util.List; +import java.util.Set; + +/** + * @author wujingtao + * @date 2022/02/10 + */ +@Repository +public interface AllCallInfoRepository extends JpaRepository, JpaSpecificationExecutor { + void deleteAllByClueIdIn(Set clueIds); +} diff --git a/ad-platform-services/ad-platform-source/src/main/java/com/baiye/module/dao/CallClueRepository.java b/ad-platform-services/ad-platform-source/src/main/java/com/baiye/module/dao/CallClueRepository.java new file mode 100644 index 00000000..ee453ea1 --- /dev/null +++ b/ad-platform-services/ad-platform-source/src/main/java/com/baiye/module/dao/CallClueRepository.java @@ -0,0 +1,22 @@ +package com.baiye.module.dao; + +import com.baiye.module.entity.CallClueInfo; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.JpaSpecificationExecutor; +import org.springframework.data.jpa.repository.Modifying; +import org.springframework.data.jpa.repository.Query; +import org.springframework.stereotype.Repository; + +import java.util.List; +import java.util.Set; + +/** + * @author wjt + * @date 2021/12/13 + */ +@Repository +public interface CallClueRepository extends JpaRepository, JpaSpecificationExecutor { + void deleteByTaskIdIn(Set taskIds); + + void deleteAllByClueIdIn(Set clueIds); +} diff --git a/ad-platform-services/ad-platform-source/src/main/java/com/baiye/module/dao/ClueJpa.java b/ad-platform-services/ad-platform-source/src/main/java/com/baiye/module/dao/ClueJpa.java index 659c199e..8b9e5bbd 100644 --- a/ad-platform-services/ad-platform-source/src/main/java/com/baiye/module/dao/ClueJpa.java +++ b/ad-platform-services/ad-platform-source/src/main/java/com/baiye/module/dao/ClueJpa.java @@ -127,9 +127,9 @@ public class ClueJpa { List newestCallTimeList = clueQueryCriteria.getNewestCallTime(); List createTime = clueQueryCriteria.getCreateTime(); - if (clueQueryCriteria.getTaskIds() == null && clueQueryCriteria.getTaskName() != null) { - return entityManager.createNativeQuery(sql.toString()).getResultList(); - } +// if (clueQueryCriteria.getTaskIds() == null && clueQueryCriteria.getTaskName() != null) { +// return entityManager.createNativeQuery(sql.toString()).getResultList(); +// } if (id != null) { sql.append("and c.id = :id "); } @@ -390,7 +390,8 @@ public class ClueJpa { } public Long getPoolCount(PublicCluePoolQueryCriteria clueQueryCriteria) { - StringBuilder sql = new StringBuilder("select count(*) as countNum from tb_public_clue_pool as p left join tb_clue_middle as cm on p.clue_id=cm.clue_id where 1=1 "); + StringBuilder sql = new StringBuilder("select count(*) as countNum from tb_public_clue_pool as p left join tb_clue_middle as cm on p.clue_id=cm.clue_id " + + "left join tb_clue as c on c.id =p.clue_id where 1=1"); List confirmReceipt = getCluePoolListCondition(clueQueryCriteria, sql, null); long count = 0L; for (Object obj : confirmReceipt) { diff --git a/ad-platform-services/ad-platform-source/src/main/java/com/baiye/module/dao/ClueMiddleRepository.java b/ad-platform-services/ad-platform-source/src/main/java/com/baiye/module/dao/ClueMiddleRepository.java index 4e42086d..fd236b3e 100644 --- a/ad-platform-services/ad-platform-source/src/main/java/com/baiye/module/dao/ClueMiddleRepository.java +++ b/ad-platform-services/ad-platform-source/src/main/java/com/baiye/module/dao/ClueMiddleRepository.java @@ -56,9 +56,6 @@ public interface ClueMiddleRepository extends JpaRepository, J /** * 组员用户ID查询 - * - * @param memberId - * @return */ List findByMemberId(Long memberId); @@ -67,12 +64,6 @@ public interface ClueMiddleRepository extends JpaRepository, J */ List findByTaskIdAndOrganizeId(Long taskId, Long organizeId); - /** - * 查询版本号 - */ - @Query(value = " select optimistic_version from tb_clue_middle where clue_id = ?1 ", nativeQuery = true) - Integer lookUpOptimisticVersion(Long clueId); - @Query(value = "select clue_id from tb_clue_middle where member_id = ?1 limit 0 ,1 ", nativeQuery = true) Long judgeMember(Long memberId); @@ -83,24 +74,8 @@ public interface ClueMiddleRepository extends JpaRepository, J @Query(value = "select count(*) from tb_clue_middle where task_id = ?1", nativeQuery = true) Integer findTaskNum(Long taskId); - /** - * Id批量删除 - * - * @param clueIdSet - */ - void deleteAllByClueIdIn(Set clueIdSet); - - /** - * 根据任务id批量查询 - * - * @param taskIds - */ - List findByTaskIdIn(Set taskIds); - /** * 删除所有任务相关 - * - * @param taskIds */ void deleteByTaskIdIn(Set taskIds); @@ -108,9 +83,6 @@ public interface ClueMiddleRepository extends JpaRepository, J @Query(value = " update tb_clue_middle set member_id = ?2, member_status = 1 where clue_id in ?1 ", nativeQuery = true) void updateMemberIdByClueIdIn(List clueIdList, Long userId); - @Query(value = "select clue_id from tb_clue_middle where task_id = ?1", nativeQuery = true) - Set findByTaskIdReturnClueId(Long taskId); - /** * 根据条件查询线索 */ @@ -157,9 +129,6 @@ public interface ClueMiddleRepository extends JpaRepository, J /** * 查询公司下所有线索 - * - * @param userId - * @return */ @Query(value = " select tcm.* from tb_clue_middle as tcm left join tb_clue as tc on tcm.clue_id =tc.id" + " where tc.create_by = ?1", nativeQuery = true) diff --git a/ad-platform-services/ad-platform-source/src/main/java/com/baiye/module/dao/ClueRepository.java b/ad-platform-services/ad-platform-source/src/main/java/com/baiye/module/dao/ClueRepository.java index c2aa6d51..34919b14 100644 --- a/ad-platform-services/ad-platform-source/src/main/java/com/baiye/module/dao/ClueRepository.java +++ b/ad-platform-services/ad-platform-source/src/main/java/com/baiye/module/dao/ClueRepository.java @@ -12,8 +12,6 @@ import java.util.Set; public interface ClueRepository extends JpaRepository, JpaSpecificationExecutor { /** * Id批量删除 - * - * @param clueIdList */ void deleteAllByIdIn(Set clueIdList); } diff --git a/ad-platform-services/ad-platform-source/src/main/java/com/baiye/module/dao/ClueTalkRepository.java b/ad-platform-services/ad-platform-source/src/main/java/com/baiye/module/dao/ClueTalkRepository.java index e2846f02..8602ca46 100644 --- a/ad-platform-services/ad-platform-source/src/main/java/com/baiye/module/dao/ClueTalkRepository.java +++ b/ad-platform-services/ad-platform-source/src/main/java/com/baiye/module/dao/ClueTalkRepository.java @@ -76,4 +76,11 @@ public interface ClueTalkRepository extends JpaRepository, JpaSp @Modifying @Query(value = " update tb_clue_talk set member_id = ?2 where member_id = ?1 ", nativeQuery = true) void updateMember(Long userId, Long replaceUserId); + + void deleteByTaskIdIn(Set taskIds); + + /** + * 根据分配人用户ID删除 + */ + void deleteByMemberId(Long userId); } diff --git a/ad-platform-services/ad-platform-source/src/main/java/com/baiye/module/dao/PublicCluePoolRepository.java b/ad-platform-services/ad-platform-source/src/main/java/com/baiye/module/dao/PublicCluePoolRepository.java index b188c6f4..5dbefa03 100644 --- a/ad-platform-services/ad-platform-source/src/main/java/com/baiye/module/dao/PublicCluePoolRepository.java +++ b/ad-platform-services/ad-platform-source/src/main/java/com/baiye/module/dao/PublicCluePoolRepository.java @@ -9,6 +9,7 @@ import org.springframework.data.jpa.repository.Query; import org.springframework.stereotype.Repository; import java.util.List; +import java.util.Set; /** * @author wjt @@ -37,4 +38,9 @@ public interface PublicCluePoolRepository extends JpaRepository clueIds); } diff --git a/ad-platform-services/ad-platform-source/src/main/java/com/baiye/module/dao/TurnoverRecordRepository.java b/ad-platform-services/ad-platform-source/src/main/java/com/baiye/module/dao/TurnoverRecordRepository.java index a7996f27..a522d497 100644 --- a/ad-platform-services/ad-platform-source/src/main/java/com/baiye/module/dao/TurnoverRecordRepository.java +++ b/ad-platform-services/ad-platform-source/src/main/java/com/baiye/module/dao/TurnoverRecordRepository.java @@ -7,6 +7,7 @@ import org.springframework.data.jpa.repository.JpaSpecificationExecutor; import org.springframework.data.jpa.repository.Query; import java.util.List; +import java.util.Set; /** * @author jt @@ -50,4 +51,9 @@ public interface TurnoverRecordRepository extends JpaRepository findTimeOutByAndTurnoverTimeAndStatus(String beninTime, Integer status); + + /** + * 资源ID批量删除 + */ + void deleteAllByClueIdIn(Set clueIds); } diff --git a/ad-platform-services/ad-platform-source/src/main/java/com/baiye/module/entity/AllCallInfo.java b/ad-platform-services/ad-platform-source/src/main/java/com/baiye/module/entity/AllCallInfo.java new file mode 100644 index 00000000..ac085119 --- /dev/null +++ b/ad-platform-services/ad-platform-source/src/main/java/com/baiye/module/entity/AllCallInfo.java @@ -0,0 +1,29 @@ +package com.baiye.module.entity; + +import com.baiye.model.entity.BaseAllCallInfo; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; +import org.springframework.data.jpa.domain.support.AuditingEntityListener; + +import javax.persistence.*; + +/** + * @author wujingtao + * @date 2022/02/10 + * 所有呼叫记录 + */ +@Getter +@Setter +@Entity +@Table(name = "tb_call_info") +@EntityListeners(AuditingEntityListener.class) +public class AllCallInfo extends BaseAllCallInfo { + + private static final long serialVersionUID = -4568384407605608189L; + @Id + @ApiModelProperty(value = "主键id(自动递增)") + @Column(name = "id") + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; +} diff --git a/ad-platform-services/ad-platform-source/src/main/java/com/baiye/module/entity/CallClueInfo.java b/ad-platform-services/ad-platform-source/src/main/java/com/baiye/module/entity/CallClueInfo.java new file mode 100644 index 00000000..c6dc0ea9 --- /dev/null +++ b/ad-platform-services/ad-platform-source/src/main/java/com/baiye/module/entity/CallClueInfo.java @@ -0,0 +1,41 @@ +package com.baiye.module.entity; + +import cn.hutool.core.date.DatePattern; +import com.baiye.model.entity.BaseCallClueInfo; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; +import org.springframework.data.annotation.LastModifiedDate; +import org.springframework.data.jpa.domain.support.AuditingEntityListener; + +import javax.persistence.*; +import java.io.Serializable; +import java.util.Date; + +/** + * @author wjt + * @date 2021/12/13 + * 线索中间表 + */ +@Entity +@Getter +@Setter +@Table(name = "tb_call_clue") +@EntityListeners(AuditingEntityListener.class) +public class CallClueInfo extends BaseCallClueInfo implements Serializable { + private static final long serialVersionUID = -2063303635710762496L; + + @Id + @Column(name = "clue_id") + private Long clueId; + + @LastModifiedDate + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = DatePattern.NORM_DATETIME_PATTERN, timezone = "GMT+8") + @Column(name = "create_time") + private Date createTime; + + @Transient + @ApiModelProperty(value = "通话总时长") + private Integer breatheTotalDuration; +} 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 dc2893ac..5787697f 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 @@ -61,11 +61,6 @@ public interface ClueService { */ List query(ClueQueryCriteria clueQueryCriteria); -// /** -// * 导出资源(客户列表) -// */ -// void exportClueList(HttpServletResponse response, ClueQueryCriteria clueQueryCriteria); - /** * 更新资源信息 */ 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 8d4b6843..ef248c2a 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 @@ -58,6 +58,10 @@ public class ClueServiceImpl implements ClueService { private final WeChatAddFriendClient weChatAddFriendClient; private final OceanEngineClueIdRepository oceanEngineClueIdRepository; private final ClueFailRecordRepository clueFailRecordRepository; + private final TurnoverRecordRepository turnoverRecordRepository; + private final PublicCluePoolRepository publicCluePoolRepository; + private final CallClueRepository callClueRepository; + private final AllCallInfoRepository allCallInfoRepository; private final AssignDataClient assignDataClient; private final CompanyService companyService; @@ -461,7 +465,7 @@ public class ClueServiceImpl implements ClueService { } if (taskNum == null || taskNum == 0) { try { - taskClient.sendErrMessage("导入资源合规条数0条,请检查文件重新导入", userId, SecurityConstants.FROM_IN); + taskClient.sendErrMessage("导入资源合规条数0条,请检查文件重新导入", userId); } catch (Exception e) { throw new BadRequestException("发送websocket失败"); } @@ -480,7 +484,7 @@ public class ClueServiceImpl implements ClueService { task.setTaskType(DefaultNumberConstants.ONE_NUMBER); task.setIsForm(DefaultNumberConstants.FIVE_NUMBER); } - ResponseEntity response = taskClient.saveTask(task, SecurityConstants.FROM_IN); + ResponseEntity response = taskClient.saveTask(task); if (response.getStatusCode().value() != 200) throw new BadRequestException("创建任务失败"); } @@ -491,20 +495,20 @@ public class ClueServiceImpl implements ClueService { ClueQueryCriteria clueQueryCriteria = new ClueQueryCriteria(); clueQueryCriteria.setTaskIds(taskIds); List clueList = clueJpa.getClueList(clueQueryCriteria, null); + List talkClueList = clueJpa.getTalkClueList(clueQueryCriteria, null); + clueList.addAll(talkClueList); Set clueIds = clueList.stream().map(ClueDto::getId).collect(Collectors.toSet()); Set clueRecordId = clueRecordRepository.findByTaskIdIn(taskIds).stream().map(ClueRecord::getId).collect(Collectors.toSet()); - //1、备份数据 - clueBackupsTask.clueBackups(clueList); - //2、删除资源数据 - clueRepository.deleteAllByIdIn(clueIds); - //3、删除资源-任务关联表 + //1、删除备份数据 + this.delete(clueList, clueIds); + //2、删除资源-任务关联表 clueMiddleRepository.deleteByTaskIdIn(taskIds); - //4、删除上传记录 + //3、删除上传记录 clueRecordRepository.deleteByTaskIdIn(taskIds); - //5、删除上传记录中错误资源数据 + //4、删除上传记录中错误资源数据 clueFailRecordRepository.deleteAllByRecordIdIn(clueRecordId); - //6、删除跟进记录 - conductRecordRepository.deleteAllByClueIdIn(clueIds); + //5、删除拓客或者DMP资源数据 + clueTalkRepository.deleteByTaskIdIn(taskIds); } return true; } @@ -517,16 +521,30 @@ public class ClueServiceImpl implements ClueService { List clueAll = clueJpa.getClueList(clueQueryCriteria, null); Set clueIds = clueAll.stream().map(ClueDto::getId).collect(Collectors.toSet()); Set taskIds = clueAll.stream().map(ClueDto::getTaskId).collect(Collectors.toSet()); + //1、删除备份数据 + this.delete(clueAll, clueIds); + //2、删除资源-任务关联表 + clueMiddleRepository.deleteByMemberId(userId); + //3、删除拓客或者DMP资源数据 + clueTalkRepository.deleteByMemberId(userId); + return clueMiddleRepository.findTaskIdCount(taskIds); + } + + public void delete(List clueAll, Set clueIds){ //1、备份数据 clueBackupsTask.clueBackups(clueAll); //2、删除资源数据 clueRepository.deleteAllByIdIn(clueIds); - //3、删除资源-任务关联表 - clueMiddleRepository.deleteByMemberId(userId); - //4、删除跟进记录 + //3、删除跟进记录 conductRecordRepository.deleteAllByClueIdIn(clueIds); - // TODO 事务是否提交后进行的方法? - return taskCount(taskIds); + //4、删除回款信息 + turnoverRecordRepository.deleteAllByClueIdIn(clueIds); + //5、删除公海资源 + publicCluePoolRepository.deleteAllByClueIdIn(clueIds); + //6、删除详细通话记录 + allCallInfoRepository.deleteAllByClueIdIn(clueIds); + //7、删除通话记录 + callClueRepository.deleteAllByClueIdIn(clueIds); } @Override @@ -576,6 +594,7 @@ public class ClueServiceImpl implements ClueService { clueTalk.setMemberId(null); clueTalk.setOrganizeId(null); clueTalk.setClueStage(0); + clueTalk.setLabelTime(null); clueList.add(clueTalk); } else { throw new BadRequestException("存在已通话资源,无法撤回"); @@ -594,6 +613,7 @@ public class ClueServiceImpl implements ClueService { clueMiddle.setMemberId(null); clueMiddle.setOrganizeId(null); clueMiddle.setClueStage(0); + clueMiddle.setLabelTime(null); clueList.add(clueMiddle); } else { throw new BadRequestException("存在已通话资源,无法撤回"); @@ -684,11 +704,6 @@ public class ClueServiceImpl implements ClueService { ClueMiddle clueMiddle = new ClueMiddle(); clueMiddle.setMemberStatus(DefaultNumberConstants.ZERO_NUMBER); - if (flag) { - clueMiddle.setMemberId(dynamicTaskDto.getUserId()); - clueMiddle.setMemberStatus(DefaultNumberConstants.ONE_NUMBER); - } - clueMiddle.setClueId(save.getId()); clueMiddle.setTaskId(taskId); clueMiddle.setOptimisticVersion(DefaultNumberConstants.ZERO_NUMBER); @@ -700,16 +715,22 @@ public class ClueServiceImpl implements ClueService { } //查询任务信息 - ResponseEntity response = taskClient.queryDetails(taskId, SecurityConstants.FROM_IN); + ResponseEntity response = taskClient.queryDetails(taskId); if (response.getStatusCode().value() != 200 || response.getBody() == null) { throw new BadRequestException("查询错误"); } Task task = response.getBody(); task.setTotalNumber(task.getTotalNumber() + 1); task.setIsDistribution(1); - taskClient.updateTask(task, SecurityConstants.FROM_IN); + taskClient.updateTask(task); clueMiddle.setClueType(task.getIsForm()); + if (flag) { + clueMiddle.setMemberId(dynamicTaskDto.getUserId()); + clueMiddle.setMemberStatus(DefaultNumberConstants.ONE_NUMBER); + } clueMiddleRepository.save(clueMiddle); + // 自动分配手动上传的任务 + if (!flag && task.getIsOpen() == 1) this.dynamicTaskDistribution(task.getId(), task.getIsForm()); } @Override @@ -800,7 +821,7 @@ public class ClueServiceImpl implements ClueService { Task crmTask = new Task(); crmTask.setId(crmTaskId); crmTask.setTotalNumber(crmTotalNumber + 1); - taskClient.updateTask(crmTask, SecurityConstants.FROM_IN); + taskClient.updateTask(crmTask); //初始化线索 ClueMiddle clueMiddle = new ClueMiddle(); @@ -827,7 +848,7 @@ public class ClueServiceImpl implements ClueService { } else { clueIds = clueMiddleRepository.findByTaskIdAndMemberStatus(taskId, DefaultNumberConstants.ZERO_NUMBER); } - CommonResponse response = taskClient.findTaskDistribution(taskId, SecurityConstants.FROM_IN); + CommonResponse response = taskClient.findTaskDistribution(taskId); if (response.getStatus() == DefaultNumberConstants.ZERO_NUMBER) { DynamicTaskDistributionDTO dynamicTaskDistributionDTO = response.getData(); @@ -975,7 +996,7 @@ public class ClueServiceImpl implements ClueService { String taskNameKey = KeyFieldConstants.TASK_NAME_KEY + taskId; String str = (String) redisUtils.get(taskNameKey); if (StringUtils.isEmpty(str) || "null".equals(str)) { - ResponseEntity response = taskClient.queryDetails(taskId, SecurityConstants.FROM_IN); + ResponseEntity response = taskClient.queryDetails(taskId); if (response.getStatusCode().value() != 200) { throw new BadRequestException("查询错误"); } @@ -1020,14 +1041,6 @@ public class ClueServiceImpl implements ClueService { } } - /** - * 查询任务数量,返回Map - */ - @Transactional(propagation = Propagation.REQUIRES_NEW, rollbackFor = Exception.class) - public Map taskCount(Set taskIds) { - return clueMiddleRepository.findTaskIdCount(taskIds); - } - /** * 分配 */ diff --git a/ad-platform-services/ad-platform-source/src/main/java/com/baiye/module/service/impl/FormSourceServiceImpl.java b/ad-platform-services/ad-platform-source/src/main/java/com/baiye/module/service/impl/FormSourceServiceImpl.java index 20387008..96971f62 100644 --- a/ad-platform-services/ad-platform-source/src/main/java/com/baiye/module/service/impl/FormSourceServiceImpl.java +++ b/ad-platform-services/ad-platform-source/src/main/java/com/baiye/module/service/impl/FormSourceServiceImpl.java @@ -118,7 +118,7 @@ public class FormSourceServiceImpl implements FormSourceService { task.setId(taskId); task.setTotalNumber(taskNum); task.setIsDistribution(1); - taskClient.updateTask(task, SecurityConstants.FROM_IN); + taskClient.updateTask(task); map.put("status", 0); map.put("msg", "推送成功"); 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 ad162b92..b7bd00ce 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 @@ -426,7 +426,7 @@ public class ReportCrmServiceImpl implements ReportCrmService { if (userId == null) { throw new BadRequestException("参数异常,缺失用户id"); } - Object taskInfos = taskClient.list(Arrays.asList(ClueTypeConstants.SCREEN_TYPE), userId, DefaultNumberConstants.ONE_NUMBER, SecurityConstants.FROM_IN).getBody(); + Object taskInfos = taskClient.list(Arrays.asList(ClueTypeConstants.SCREEN_TYPE), userId, DefaultNumberConstants.ONE_NUMBER).getBody(); List taskSet = new ArrayList<>(); JSONArray taskList = JSONUtil.parseArray(taskInfos); if (CollUtil.isNotEmpty(taskList)) { @@ -443,7 +443,7 @@ public class ReportCrmServiceImpl implements ReportCrmService { @Cacheable(value = "taskName", key = "'task:name:' + #p0") public String findByTaskId(Long taskId) { - Task body = taskClient.queryDetails(taskId, SecurityConstants.FROM_IN).getBody(); + Task body = taskClient.queryDetails(taskId).getBody(); if (body != null) { return body.getTaskName(); } diff --git a/ad-platform-services/ad-platform-source/src/main/java/com/baiye/module/service/impl/ReportTokerServiceImpl.java b/ad-platform-services/ad-platform-source/src/main/java/com/baiye/module/service/impl/ReportTokerServiceImpl.java index 06a335c0..f28c5b97 100644 --- a/ad-platform-services/ad-platform-source/src/main/java/com/baiye/module/service/impl/ReportTokerServiceImpl.java +++ b/ad-platform-services/ad-platform-source/src/main/java/com/baiye/module/service/impl/ReportTokerServiceImpl.java @@ -350,7 +350,7 @@ public class ReportTokerServiceImpl implements ReportTokerService { @Cacheable(value = "taskName", key = "'task:name:' + #p0") public String findByTaskId(Long taskId) { - Task body = taskClient.queryDetails(taskId, SecurityConstants.FROM_IN).getBody(); + Task body = taskClient.queryDetails(taskId).getBody(); if (body != null) { return body.getTaskName(); } @@ -504,7 +504,7 @@ public class ReportTokerServiceImpl implements ReportTokerService { if (userId == null) { throw new BadRequestException("参数异常,缺失用户id"); } - Object taskInfos = taskClient.list(Arrays.asList(ClueTypeConstants.TOKER_TYPE), userId, DefaultNumberConstants.ONE_NUMBER, SecurityConstants.FROM_IN).getBody(); + Object taskInfos = taskClient.list(Arrays.asList(ClueTypeConstants.TOKER_TYPE), userId, DefaultNumberConstants.ONE_NUMBER).getBody(); List taskSet = new ArrayList<>(); JSONArray taskList = JSONUtil.parseArray(taskInfos); if (CollUtil.isNotEmpty(taskList)) { diff --git a/ad-platform-services/ad-platform-source/src/main/java/com/baiye/task/ClueBackupsTask.java b/ad-platform-services/ad-platform-source/src/main/java/com/baiye/task/ClueBackupsTask.java index 5a00dede..2643d2d0 100644 --- a/ad-platform-services/ad-platform-source/src/main/java/com/baiye/task/ClueBackupsTask.java +++ b/ad-platform-services/ad-platform-source/src/main/java/com/baiye/task/ClueBackupsTask.java @@ -1,6 +1,7 @@ package com.baiye.task; import cn.hutool.core.collection.CollUtil; +import com.baiye.constant.FileConstant; import com.baiye.model.dto.ClueDto; import com.baiye.module.dao.ClueBackupsRepository; import com.baiye.module.entity.Clue; @@ -34,8 +35,12 @@ public class ClueBackupsTask { ClueBackups clueBackups = new ClueBackups(); BeanUtils.copyProperties(clue, clueBackups,"createTime"); list.add(clueBackups); + if (list.size() >= FileConstant.ONE_THOUSAND_NUMBER){ + clueBackupsRepository.saveAll(list); + list.clear(); + } } - clueBackupsRepository.saveAll(list); + if (CollUtil.isNotEmpty(list)) clueBackupsRepository.saveAll(list); } } } diff --git a/ad-platform-services/ad-platform-source/src/main/java/com/baiye/task/FileAnalysisTask.java b/ad-platform-services/ad-platform-source/src/main/java/com/baiye/task/FileAnalysisTask.java index e84e6e78..5c5466ec 100644 --- a/ad-platform-services/ad-platform-source/src/main/java/com/baiye/task/FileAnalysisTask.java +++ b/ad-platform-services/ad-platform-source/src/main/java/com/baiye/task/FileAnalysisTask.java @@ -85,28 +85,23 @@ public class FileAnalysisTask { } } } catch (Exception e) { - taskClient.sendErrMessage("导入资源错误,请检查数据格式后重新导入", clueRecords.get(0).getCreateBy(), SecurityConstants.FROM_IN); + taskClient.sendErrMessage("导入资源错误,请检查数据格式后重新导入", clueRecords.get(0).getCreateBy()); //导入文件记录失败修改状态 updateList(clueRecords); e.printStackTrace(); throw new BadRequestException("=========读取资源错误============"); } - //动态任务不需要创建任务,更新后结束方法(拓客任务不指定任务ID就也要新建任务) + //动态任务不需要创建任务,更新数据后return结束(注:拓客任务不指定任务ID也要新建任务) Integer uploadType = clueRecords.get(0).getUploadType(); if (uploadType == FileConstant.FIVE_NUMBER || (uploadType == FileConstant.SIX_NUMBER && !isCreateTask)) { Long taskId = clueRecords.get(0).getTaskId(); - Integer taskNum; - - if (uploadType == FileConstant.SIX_NUMBER) { - taskNum = clueTalkRepository.findTaskNum(taskId); - } else { - taskNum = clueMiddleRepository.findTaskNum(taskId); - } + Integer taskNum = clueMiddleRepository.findTaskNum(taskId); + if (uploadType == FileConstant.SIX_NUMBER) taskNum = clueTalkRepository.findTaskNum(taskId); Task task = new Task(); task.setId(taskId); task.setTotalNumber(taskNum); task.setIsDistribution(1); - taskClient.updateTask(task, SecurityConstants.FROM_IN); + taskClient.updateTask(task); // 查看此任务是否开启自动分配,开启了就分配掉 clueService.dynamicTaskDistribution(taskId, uploadType); return; 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 4affbfbc..9237d3b5 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 @@ -153,7 +153,7 @@ public class MailSourceTask { // 删除邮件 删除文件 FileUtil.del(path); FileUtil.del(unzipPath); - taskClient.updateTask(task, SecurityConstants.FROM_IN); + taskClient.updateTask(task); deliveryRecordService.updateStatusByTaskName(DefaultNumberConstants.ONE_NUMBER, taskName); log.info("============== message parsing succeeded file path as {} unzip path as {} ===============", path, unzipPath); } diff --git a/ad-platform-services/ad-platform-source/src/main/java/com/baiye/task/OceanEngineSync.java b/ad-platform-services/ad-platform-source/src/main/java/com/baiye/task/OceanEngineSync.java index 54fb4249..9101dc75 100644 --- a/ad-platform-services/ad-platform-source/src/main/java/com/baiye/task/OceanEngineSync.java +++ b/ad-platform-services/ad-platform-source/src/main/java/com/baiye/task/OceanEngineSync.java @@ -167,7 +167,7 @@ public class OceanEngineSync { task.setId(taskId); task.setTotalNumber(taskNum); task.setIsDistribution(1); - taskClient.updateTask(task, SecurityConstants.FROM_IN); + taskClient.updateTask(task); OceanEngineClueId oceanEngineClueId = new OceanEngineClueId(); oceanEngineClueId.setLocalClueId(save.getId());