| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- package com.izouma.nineth.service;
- import com.izouma.nineth.domain.MetaTaskBind;
- import com.izouma.nineth.domain.MetaTaskNew;
- import com.izouma.nineth.dto.MetaRestResult;
- import com.izouma.nineth.dto.PageQuery;
- import com.izouma.nineth.enums.MetaTaskType;
- import com.izouma.nineth.exception.BusinessException;
- import com.izouma.nineth.repo.MetaTaskBindRepo;
- import com.izouma.nineth.repo.MetaTaskNewRepo;
- import com.izouma.nineth.utils.JpaUtils;
- import com.izouma.nineth.utils.ObjUtils;
- import lombok.AllArgsConstructor;
- import org.apache.commons.collections.CollectionUtils;
- import org.springframework.data.domain.Page;
- import org.springframework.stereotype.Service;
- import java.util.List;
- @Service
- @AllArgsConstructor
- public class MetaTaskNewService {
- private MetaTaskNewRepo metaTaskNewRepo;
- private MetaTaskBindRepo metaTaskBindRepo;
- public MetaTaskNew save(MetaTaskNew record) {
- if (record.getId() != null) {
- MetaTaskNew orig = metaTaskNewRepo.findById(record.getId()).orElseThrow(new BusinessException("无记录"));
- ObjUtils.merge(orig, record);
- MetaTaskNew save = metaTaskNewRepo.save(orig);
- saveMetaTaskBind(save.getId(), record);
- return save;
- }
- MetaTaskNew save = metaTaskNewRepo.save(record);
- saveMetaTaskBind(save.getId(), record);
- return save;
- }
- private void saveMetaTaskBind(Long taskId, MetaTaskNew record) {
- // 节点任务
- if (CollectionUtils.isNotEmpty(record.getMetaNodeTask())) {
- record.getMetaNodeTask().forEach(metaTaskBind -> {
- metaTaskBind.setTaskId(taskId);
- metaTaskBind.setType(MetaTaskType.NODE);
- });
- metaTaskBindRepo.saveAll(record.getMetaNodeTask());
- }
- // 支线任务
- if (CollectionUtils.isNotEmpty(record.getMetaBranchLineTask())) {
- record.getMetaBranchLineTask().forEach(metaTaskBind -> {
- metaTaskBind.setTaskId(taskId);
- metaTaskBind.setType(MetaTaskType.BRANCH_LINE);
- });
- metaTaskBindRepo.saveAll(record.getMetaBranchLineTask());
- }
- // 日常任务
- if (CollectionUtils.isNotEmpty(record.getMetaDailyTask())) {
- record.getMetaDailyTask().forEach(metaTaskBind -> {
- metaTaskBind.setTaskId(taskId);
- metaTaskBind.setType(MetaTaskType.DAILY);
- });
- metaTaskBindRepo.saveAll(record.getMetaDailyTask());
- }
- }
- public Page<MetaTaskNew> all(PageQuery pageQuery) {
- return metaTaskNewRepo.findAll(JpaUtils.toSpecification(pageQuery, MetaTaskNew.class), JpaUtils.toPageRequest(pageQuery));
- }
- public MetaTaskNew get(Long id) {
- MetaTaskNew metaTaskNew = metaTaskNewRepo.findById(id).orElseThrow(new BusinessException("无记录"));
- buildAtomTask(metaTaskNew);
- return metaTaskNew;
- }
- public MetaRestResult<List<MetaTaskNew>> canGet(Long userId, Long channelId) {
- List<MetaTaskNew> metaTaskNews = metaTaskNewRepo.canGet(userId, channelId);
- metaTaskNews.forEach(this::buildAtomTask);
- return MetaRestResult.returnSuccess(metaTaskNews);
- }
- private void buildAtomTask(MetaTaskNew metaTaskNew) {
- if (MetaTaskType.MAIN_LINE.equals(metaTaskNew.getType())) {
- List<MetaTaskBind> metaNodeTask = metaTaskBindRepo.findByTaskIdAndTypeAndDel(metaTaskNew.getId(), MetaTaskType.NODE, false);
- if (CollectionUtils.isNotEmpty(metaNodeTask)) {
- metaTaskNew.setMetaNodeTask(metaNodeTask);
- }
- List<MetaTaskBind> metaBranchLineTask = metaTaskBindRepo.findByTaskIdAndTypeAndDel(metaTaskNew.getId(), MetaTaskType.BRANCH_LINE, false);
- if (CollectionUtils.isNotEmpty(metaBranchLineTask)) {
- metaTaskNew.setMetaBranchLineTask(metaBranchLineTask);
- }
- return;
- }
- if (MetaTaskType.BRANCH_LINE.equals(metaTaskNew.getType())) {
- List<MetaTaskBind> metaBranchLineTask = metaTaskBindRepo.findByTaskIdAndTypeAndDel(metaTaskNew.getId(), MetaTaskType.BRANCH_LINE, false);
- if (CollectionUtils.isNotEmpty(metaBranchLineTask)) {
- metaTaskNew.setMetaBranchLineTask(metaBranchLineTask);
- }
- return;
- }
- if (MetaTaskType.DAILY.equals(metaTaskNew.getType())) {
- List<MetaTaskBind> metaDailyTask = metaTaskBindRepo.findByTaskIdAndTypeAndDel(metaTaskNew.getId(), MetaTaskType.DAILY, false);
- if (CollectionUtils.isNotEmpty(metaDailyTask)) {
- metaTaskNew.setMetaDailyTask(metaDailyTask);
- }
- }
- }
- }
|