diff --git a/manage/ad-platform-management/src/main/java/com/baiye/feign/SourceClueClient.java b/manage/ad-platform-management/src/main/java/com/baiye/feign/SourceClueClient.java index 7d9c1e39..1f443938 100644 --- a/manage/ad-platform-management/src/main/java/com/baiye/feign/SourceClueClient.java +++ b/manage/ad-platform-management/src/main/java/com/baiye/feign/SourceClueClient.java @@ -33,7 +33,7 @@ public interface SourceClueClient { @ApiOperation("小组id查询并分配组员资源") @PostMapping(API_PREFIX + "/queryOrganizeIdList") - void queryOrganizeIdList(@RequestBody ClueQueryCriteria clueQueryCriteria); + ResponseEntity queryOrganizeIdList(@RequestBody ClueQueryCriteria clueQueryCriteria); @ApiOperation("修改组") @GetMapping(API_PREFIX + "/updateOrganize") diff --git a/manage/ad-platform-management/src/main/java/com/baiye/feign/SourceClueClientFallback.java b/manage/ad-platform-management/src/main/java/com/baiye/feign/SourceClueClientFallback.java index 901b3344..ebe57300 100644 --- a/manage/ad-platform-management/src/main/java/com/baiye/feign/SourceClueClientFallback.java +++ b/manage/ad-platform-management/src/main/java/com/baiye/feign/SourceClueClientFallback.java @@ -25,8 +25,8 @@ public class SourceClueClientFallback implements SourceClueClient { } @Override - public void queryOrganizeIdList(ClueQueryCriteria clueQueryCriteria) { - + public ResponseEntity queryOrganizeIdList(ClueQueryCriteria clueQueryCriteria) { + return null; } @Override diff --git a/manage/ad-platform-management/src/main/java/com/baiye/modules/system/domain/TaskOrganize.java b/manage/ad-platform-management/src/main/java/com/baiye/modules/system/domain/TaskOrganize.java index 534c69ff..687750f6 100644 --- a/manage/ad-platform-management/src/main/java/com/baiye/modules/system/domain/TaskOrganize.java +++ b/manage/ad-platform-management/src/main/java/com/baiye/modules/system/domain/TaskOrganize.java @@ -6,6 +6,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; import org.hibernate.annotations.CreationTimestamp; import org.springframework.data.annotation.LastModifiedDate; +import org.springframework.data.jpa.domain.support.AuditingEntityListener; import javax.persistence.*; import java.sql.Timestamp; @@ -19,6 +20,7 @@ import java.util.Map; @Entity @Table(name = "tb_task_organize") @ApiModel(value = "Task") +@EntityListeners(AuditingEntityListener.class) public class TaskOrganize { @Id diff --git a/manage/ad-platform-management/src/main/java/com/baiye/modules/system/domain/User.java b/manage/ad-platform-management/src/main/java/com/baiye/modules/system/domain/User.java index ce94622a..a29a11da 100644 --- a/manage/ad-platform-management/src/main/java/com/baiye/modules/system/domain/User.java +++ b/manage/ad-platform-management/src/main/java/com/baiye/modules/system/domain/User.java @@ -60,10 +60,10 @@ public class User extends BaseEntity implements Serializable { inverseJoinColumns = {@JoinColumn(name = "job_id",referencedColumnName = "job_id")}) private Set jobs; - @OneToOne + /*@OneToOne @JoinColumn(name = "dept_id") @ApiModelProperty(value = "用户部门") - private Dept dept; + private Dept dept;*/ @NotBlank @Column(unique = true) diff --git a/manage/ad-platform-management/src/main/java/com/baiye/modules/system/service/dto/TaskOrganizeQueryCriteria.java b/manage/ad-platform-management/src/main/java/com/baiye/modules/system/service/dto/TaskOrganizeQueryCriteria.java index c67b7c1b..603616a8 100644 --- a/manage/ad-platform-management/src/main/java/com/baiye/modules/system/service/dto/TaskOrganizeQueryCriteria.java +++ b/manage/ad-platform-management/src/main/java/com/baiye/modules/system/service/dto/TaskOrganizeQueryCriteria.java @@ -4,6 +4,7 @@ import com.baiye.annotation.Query; import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import javax.persistence.Column; import java.sql.Timestamp; import java.util.List; @@ -35,6 +36,10 @@ public class TaskOrganizeQueryCriteria { @Query(type = Query.Type.BETWEEN) private List createTime; + @ApiModelProperty(value = "此次任务分配数量") + @Query(type = Query.Type.GREATER_THAN) + private Integer organizeTaskNum; + @ApiModelProperty(value = "标签名称") private List labelNameList; } diff --git a/manage/ad-platform-management/src/main/java/com/baiye/modules/system/service/impl/OrganizeServiceImpl.java b/manage/ad-platform-management/src/main/java/com/baiye/modules/system/service/impl/OrganizeServiceImpl.java index c817540d..0a77a374 100644 --- a/manage/ad-platform-management/src/main/java/com/baiye/modules/system/service/impl/OrganizeServiceImpl.java +++ b/manage/ad-platform-management/src/main/java/com/baiye/modules/system/service/impl/OrganizeServiceImpl.java @@ -11,6 +11,7 @@ import com.baiye.modules.system.domain.*; import com.baiye.modules.system.repository.*; import com.baiye.modules.system.service.OrganizeService; import com.baiye.modules.system.service.RoleService; +import com.baiye.modules.system.service.UserMessageService; import com.baiye.modules.system.service.UserService; import com.baiye.modules.system.service.dto.*; import com.baiye.modules.system.service.mapstruct.OrganizeMapper; @@ -18,10 +19,13 @@ import com.baiye.modules.system.service.mapstruct.OrganizeUserMapper; import com.baiye.modules.system.service.mapstruct.TaskOrganizeMapper; import com.baiye.util.*; import com.google.common.collect.Lists; +import feign.FeignException; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; +import org.springframework.data.domain.Sort; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Service; @@ -29,6 +33,7 @@ import org.springframework.transaction.annotation.Transactional; import java.util.*; import java.util.stream.Collectors; +import java.util.stream.Stream; @Service @RequiredArgsConstructor @@ -48,6 +53,7 @@ public class OrganizeServiceImpl implements OrganizeService { private final TaskOrganizeMapper taskOrganizeMapper; private final RoleService roleService; private final RedisUtils redisUtils; + private final UserMessageService userMessageService; /** * 新增小组 @@ -210,6 +216,7 @@ public class OrganizeServiceImpl implements OrganizeService { @Override @Transactional(rollbackFor = Exception.class) public ResponseEntity saveOrganizeDistribution(OrganizeSaveDTO organizeSaveDTO) { + List userIdList = new ArrayList<>(); List organizeIdList = new ArrayList<>(); List weights = new ArrayList<>(); // 验证组是否重复 @@ -243,6 +250,7 @@ public class OrganizeServiceImpl implements OrganizeService { List labelName = new ArrayList<>(new TreeSet<>(labelNameList)); task.setBaseLabel(labelName); task.setIsDistribution(1); + task.setUpdateTime(new Date()); taskRepository.save(task); // 分配任务引擎 DistributeDTO distributeDTO = new DistributeDTO(); @@ -250,11 +258,16 @@ public class OrganizeServiceImpl implements OrganizeService { distributeDTO.setResourceList(clueList); List data; distributeDTO.setWeights(weights); + distributeDTO.setIsWeight(true); data = assignDataClient.dataDistribution(distributeDTO).getData(); // 线索更新 if (data != null && data.size() > 0) { int index = 0; for (DistributeResponseDTO distributeResponseDTO : data) { + if (distributeResponseDTO.getResponseList().size() <= 0 ){ + String organizeName = organizeRepository.findOrganizeById(distributeResponseDTO.getDeptId()).getOrganizeName(); + throw new BadRequestException(organizeName + "比例过低,分配数不低于0"); + } sourceClueClient.batchUpdateOrganize(distributeResponseDTO); // 添加小组-任务关联信息 int organizeTaskNum = distributeResponseDTO.getResponseList().size(); @@ -269,8 +282,17 @@ public class OrganizeServiceImpl implements OrganizeService { taskOrganize.setRemark(organizeList.get(index).getRemark()); index++; taskOrganizeRepository.save(taskOrganize); + // 发送通知的用户id + OrganizeUser organizeUser = organizeUserRepository.findByOrganizeIdAndIsLeader(distributeResponseDTO.getDeptId(), true); + userIdList.add(organizeUser.getUserId()); } } + //发送通知 + userIdList.add(SecurityUtils.getCurrentUserId()); + MessageNotification messageNotification = new MessageNotification(); + messageNotification.setMessageType(2); + messageNotification.setMessageContext(task.getTaskName() + "分配成功"); + userMessageService.createUserMessage(userIdList,messageNotification); return new ResponseEntity<>(CommonResponse.createBySuccess(ResponseCode.SUCCESS), HttpStatus.OK); } @@ -343,11 +365,13 @@ public class OrganizeServiceImpl implements OrganizeService { @Override public Map queryLeaderTaskList(TaskOrganizeQueryCriteria taskOrganizeQueryCriteria, Pageable pageable) { + PageRequest pageRequest = PageRequest.of(pageable.getPageNumber(), pageable.getPageSize(), Sort.by(Sort.Direction.DESC, "updateTime")); Long currentUserId = SecurityUtils.getCurrentUserId(); Organize organize = organizeRepository.findOrganize(currentUserId); if (organize != null) { taskOrganizeQueryCriteria.setOrganizeId(organize.getId()); - Page page = taskOrganizeRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root, taskOrganizeQueryCriteria, criteriaBuilder), pageable); + taskOrganizeQueryCriteria.setOrganizeTaskNum(1); + Page page = taskOrganizeRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root, taskOrganizeQueryCriteria, criteriaBuilder), pageRequest); Page taskOrganizeDtos = page.map(taskOrganizeMapper::toDto); for (TaskOrganizeDto taskOrganizeDto : taskOrganizeDtos) { Task task = taskRepository.findById(taskOrganizeDto.getTaskId()).orElseGet(Task::new); @@ -387,18 +411,31 @@ public class OrganizeServiceImpl implements OrganizeService { clueQueryCriteria.setOrganizeId(organizeId); clueQueryCriteria.setUserIds(userIds); clueQueryCriteria.setTaskId(taskId); - sourceClueClient.queryOrganizeIdList(clueQueryCriteria); + ResponseEntity rse = sourceClueClient.queryOrganizeIdList(clueQueryCriteria); + if (rse.getBody() != null) { + Long userId = rse.getBody(); + UserDto user = userService.findById(userId); + throw new BadRequestException(user.getNickName() + "比例过低,分配数量不能低于0"); + } //修改小组任务信息 TaskOrganize updateTaskOrganize = taskOrganizeRepository.findByOrganizeIdAndTaskId(organizeId, taskId); updateTaskOrganize.setTaskStatus(1); updateTaskOrganize.setBeginTime(organizeMemberDistributionDTO.getBeginTime()); updateTaskOrganize.setEndTime(organizeMemberDistributionDTO.getEndTime()); + updateTaskOrganize.setUpdateTime(new Date()); if (organizeMemberDistributionDTO.getSourceLabel() != null) { List sourceLabelList = organizeMemberDistributionDTO.getSourceLabel(); List sourceLabe = new ArrayList<>(new TreeSet<>(sourceLabelList)); updateTaskOrganize.setOrganizeLabel(sourceLabe); } taskOrganizeRepository.save(updateTaskOrganize); + //发送通知 + userIds.add(SecurityUtils.getCurrentUserId()); + List userIdList = new ArrayList<>(userIds); + MessageNotification messageNotification = new MessageNotification(); + messageNotification.setMessageType(2); + messageNotification.setMessageContext(updateTaskOrganize.getOrganizeTaskName() + "分配成功"); + userMessageService.createUserMessage(userIdList,messageNotification); return new ResponseEntity<>(CommonResponse.createBySuccess(ResponseCode.SUCCESS), HttpStatus.OK); } diff --git a/manage/ad-platform-management/src/main/java/com/baiye/modules/system/service/impl/TaskServiceImpl.java b/manage/ad-platform-management/src/main/java/com/baiye/modules/system/service/impl/TaskServiceImpl.java index df6f46ac..f00b33e9 100644 --- a/manage/ad-platform-management/src/main/java/com/baiye/modules/system/service/impl/TaskServiceImpl.java +++ b/manage/ad-platform-management/src/main/java/com/baiye/modules/system/service/impl/TaskServiceImpl.java @@ -22,6 +22,7 @@ import com.baiye.util.SecurityUtils; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Sort; import org.springframework.http.HttpStatus; @@ -59,9 +60,9 @@ public class TaskServiceImpl implements TaskService { */ @Override public Object queryAll(TaskQueryCriteria taskQueryCriteria, Pageable pageable) { - Long userId = SecurityUtils.getCurrentUserId(); - taskQueryCriteria.setCreateBy(userId); - Page taskRepositoryAll = taskRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root, taskQueryCriteria, criteriaBuilder), pageable); + PageRequest pageRequest = PageRequest.of(pageable.getPageNumber(), pageable.getPageSize(), Sort.by(Sort.Direction.DESC, "updateTime")); + taskQueryCriteria.setCreateBy(SecurityUtils.getCurrentUserId()); + Page taskRepositoryAll = taskRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root, taskQueryCriteria, criteriaBuilder), pageRequest); Page map = taskRepositoryAll.map(taskMapper::toDto); for (TaskDto taskDto : map) { //任务下的小组信息加入 diff --git a/manage/ad-platform-management/src/main/java/com/baiye/modules/system/service/impl/UserServiceImpl.java b/manage/ad-platform-management/src/main/java/com/baiye/modules/system/service/impl/UserServiceImpl.java index 7a6417d5..074360c7 100644 --- a/manage/ad-platform-management/src/main/java/com/baiye/modules/system/service/impl/UserServiceImpl.java +++ b/manage/ad-platform-management/src/main/java/com/baiye/modules/system/service/impl/UserServiceImpl.java @@ -165,7 +165,7 @@ public class UserServiceImpl implements UserService { user.setEmail(resources.getEmail()); user.setEnabled(resources.getEnabled()); user.setRoles(resources.getRoles()); - user.setDept(resources.getDept()); +// user.setDept(resources.getDept()); user.setJobs(resources.getJobs()); user.setPhone(resources.getPhone()); user.setNickName(resources.getNickName()); diff --git a/services/ad-platform-source/src/main/java/com/baiye/module/controller/ClueController.java b/services/ad-platform-source/src/main/java/com/baiye/module/controller/ClueController.java index 7f216f48..e58adbff 100644 --- a/services/ad-platform-source/src/main/java/com/baiye/module/controller/ClueController.java +++ b/services/ad-platform-source/src/main/java/com/baiye/module/controller/ClueController.java @@ -70,8 +70,8 @@ public class ClueController { @ApiOperation("小组id查询并分配组员资源") @PostMapping("/queryOrganizeIdList") - public void queryOrganizeIdList(@RequestBody ClueQueryCriteria clueQueryCriteria) { - clueService.queryOrganizeIdList(clueQueryCriteria); + public ResponseEntity queryOrganizeIdList(@RequestBody ClueQueryCriteria clueQueryCriteria) { + return clueService.queryOrganizeIdList(clueQueryCriteria); } @ApiOperation("分页查询资源信息") diff --git a/services/ad-platform-source/src/main/java/com/baiye/module/service/ClueService.java b/services/ad-platform-source/src/main/java/com/baiye/module/service/ClueService.java index 42c753a0..5ebcb9ce 100644 --- a/services/ad-platform-source/src/main/java/com/baiye/module/service/ClueService.java +++ b/services/ad-platform-source/src/main/java/com/baiye/module/service/ClueService.java @@ -9,6 +9,7 @@ import com.baiye.module.entity.ClueRecord; import com.baiye.module.service.dto.ClueRecordCriteria; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; +import org.springframework.http.ResponseEntity; import javax.servlet.http.HttpServletResponse; import java.util.List; @@ -53,7 +54,7 @@ public interface ClueService { * @param clueQueryCriteria * @return */ - void queryOrganizeIdList(ClueQueryCriteria clueQueryCriteria); + ResponseEntity queryOrganizeIdList(ClueQueryCriteria clueQueryCriteria); /** * 分页查询资源信息 diff --git a/services/ad-platform-source/src/main/java/com/baiye/module/service/impl/ClueServiceImpl.java b/services/ad-platform-source/src/main/java/com/baiye/module/service/impl/ClueServiceImpl.java index a91b099b..2b06fad3 100644 --- a/services/ad-platform-source/src/main/java/com/baiye/module/service/impl/ClueServiceImpl.java +++ b/services/ad-platform-source/src/main/java/com/baiye/module/service/impl/ClueServiceImpl.java @@ -21,6 +21,8 @@ import org.apache.commons.lang.StringUtils; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Sort; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -92,7 +94,7 @@ public class ClueServiceImpl implements ClueService { */ @Override @Transactional(rollbackFor = Exception.class) - public void queryOrganizeIdList(ClueQueryCriteria clueQueryCriteria) { + public ResponseEntity queryOrganizeIdList(ClueQueryCriteria clueQueryCriteria) { //查询此小组下的所有资源id List clueMiddleList = new ArrayList<>(); @@ -114,6 +116,9 @@ public class ClueServiceImpl implements ClueService { for (Map> map : maps) { for (Long userId : map.keySet()) { List clueIdList = map.get(userId); + if (clueIdList.size() <= 0){ + return new ResponseEntity<>(userId, HttpStatus.OK); + } if (clueQueryCriteria.getMemberId() != null) { clueMiddleRepository.updateUserIdExceptStatus(clueIdList, userId); } else { @@ -122,6 +127,7 @@ public class ClueServiceImpl implements ClueService { } } } + return new ResponseEntity<>(HttpStatus.OK); } /**