MetaTaskNewService.java 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. package com.izouma.nineth.service;
  2. import com.izouma.nineth.domain.MetaTaskBind;
  3. import com.izouma.nineth.domain.MetaTaskNew;
  4. import com.izouma.nineth.dto.MetaRestResult;
  5. import com.izouma.nineth.dto.PageQuery;
  6. import com.izouma.nineth.enums.MetaTaskType;
  7. import com.izouma.nineth.exception.BusinessException;
  8. import com.izouma.nineth.repo.MetaTaskBindRepo;
  9. import com.izouma.nineth.repo.MetaTaskNewRepo;
  10. import com.izouma.nineth.utils.JpaUtils;
  11. import com.izouma.nineth.utils.ObjUtils;
  12. import lombok.AllArgsConstructor;
  13. import org.apache.commons.collections.CollectionUtils;
  14. import org.springframework.data.domain.Page;
  15. import org.springframework.stereotype.Service;
  16. import java.util.List;
  17. @Service
  18. @AllArgsConstructor
  19. public class MetaTaskNewService {
  20. private MetaTaskNewRepo metaTaskNewRepo;
  21. private MetaTaskBindRepo metaTaskBindRepo;
  22. public MetaTaskNew save(MetaTaskNew record) {
  23. if (record.getId() != null) {
  24. MetaTaskNew orig = metaTaskNewRepo.findById(record.getId()).orElseThrow(new BusinessException("无记录"));
  25. ObjUtils.merge(orig, record);
  26. MetaTaskNew save = metaTaskNewRepo.save(orig);
  27. saveMetaTaskBind(save.getId(), record);
  28. return save;
  29. }
  30. MetaTaskNew save = metaTaskNewRepo.save(record);
  31. saveMetaTaskBind(save.getId(), record);
  32. return save;
  33. }
  34. private void saveMetaTaskBind(Long taskId, MetaTaskNew record) {
  35. // 节点任务
  36. if (CollectionUtils.isNotEmpty(record.getMetaNodeTask())) {
  37. record.getMetaNodeTask().forEach(metaTaskBind -> {
  38. metaTaskBind.setTaskId(taskId);
  39. metaTaskBind.setType(MetaTaskType.NODE);
  40. });
  41. metaTaskBindRepo.saveAll(record.getMetaNodeTask());
  42. }
  43. // 支线任务
  44. if (CollectionUtils.isNotEmpty(record.getMetaBranchLineTask())) {
  45. record.getMetaBranchLineTask().forEach(metaTaskBind -> {
  46. metaTaskBind.setTaskId(taskId);
  47. metaTaskBind.setType(MetaTaskType.BRANCH_LINE);
  48. });
  49. metaTaskBindRepo.saveAll(record.getMetaBranchLineTask());
  50. }
  51. // 日常任务
  52. if (CollectionUtils.isNotEmpty(record.getMetaDailyTask())) {
  53. record.getMetaDailyTask().forEach(metaTaskBind -> {
  54. metaTaskBind.setTaskId(taskId);
  55. metaTaskBind.setType(MetaTaskType.DAILY);
  56. });
  57. metaTaskBindRepo.saveAll(record.getMetaDailyTask());
  58. }
  59. }
  60. public Page<MetaTaskNew> all(PageQuery pageQuery) {
  61. return metaTaskNewRepo.findAll(JpaUtils.toSpecification(pageQuery, MetaTaskNew.class), JpaUtils.toPageRequest(pageQuery));
  62. }
  63. public MetaTaskNew get(Long id) {
  64. MetaTaskNew metaTaskNew = metaTaskNewRepo.findById(id).orElseThrow(new BusinessException("无记录"));
  65. buildAtomTask(metaTaskNew);
  66. return metaTaskNew;
  67. }
  68. public MetaRestResult<List<MetaTaskNew>> canGet(Long userId, Long channelId) {
  69. List<MetaTaskNew> metaTaskNews = metaTaskNewRepo.canGet(userId, channelId);
  70. metaTaskNews.forEach(this::buildAtomTask);
  71. return MetaRestResult.returnSuccess(metaTaskNews);
  72. }
  73. private void buildAtomTask(MetaTaskNew metaTaskNew) {
  74. if (MetaTaskType.MAIN_LINE.equals(metaTaskNew.getType())) {
  75. List<MetaTaskBind> metaNodeTask = metaTaskBindRepo.findByTaskIdAndTypeAndDel(metaTaskNew.getId(), MetaTaskType.NODE, false);
  76. if (CollectionUtils.isNotEmpty(metaNodeTask)) {
  77. metaTaskNew.setMetaNodeTask(metaNodeTask);
  78. }
  79. List<MetaTaskBind> metaBranchLineTask = metaTaskBindRepo.findByTaskIdAndTypeAndDel(metaTaskNew.getId(), MetaTaskType.BRANCH_LINE, false);
  80. if (CollectionUtils.isNotEmpty(metaBranchLineTask)) {
  81. metaTaskNew.setMetaBranchLineTask(metaBranchLineTask);
  82. }
  83. return;
  84. }
  85. if (MetaTaskType.BRANCH_LINE.equals(metaTaskNew.getType())) {
  86. List<MetaTaskBind> metaBranchLineTask = metaTaskBindRepo.findByTaskIdAndTypeAndDel(metaTaskNew.getId(), MetaTaskType.BRANCH_LINE, false);
  87. if (CollectionUtils.isNotEmpty(metaBranchLineTask)) {
  88. metaTaskNew.setMetaBranchLineTask(metaBranchLineTask);
  89. }
  90. return;
  91. }
  92. if (MetaTaskType.DAILY.equals(metaTaskNew.getType())) {
  93. List<MetaTaskBind> metaDailyTask = metaTaskBindRepo.findByTaskIdAndTypeAndDel(metaTaskNew.getId(), MetaTaskType.DAILY, false);
  94. if (CollectionUtils.isNotEmpty(metaDailyTask)) {
  95. metaTaskNew.setMetaDailyTask(metaDailyTask);
  96. }
  97. }
  98. }
  99. }