ソースを参照

Merge branch 'dev-meta' of xiongzhu/raex_back into master

sunkean 2 年 前
コミット
d6c6abf910

+ 2 - 1
src/main/java/com/izouma/nineth/repo/MetaTaskNewRepo.java

@@ -17,7 +17,8 @@ public interface MetaTaskNewRepo extends JpaRepository<MetaTaskNew, Long>, JpaSp
 
     MetaTaskNew findByIdAndDel(Long id, boolean del);
 
-    List<MetaTaskNew> findAllByAutoReceiveAndDel(boolean autoReceive, boolean del);
+    @Query(value = "select m1 from MetaTaskNew m1 where m1.autoReceive = true and m1.del = false and m1.id not in (select m2.taskId from MetaTaskToUserNew m2 where m2.userId = ?1 and m2.del = false)")
+    List<MetaTaskNew> findUnReceivedAndAutoReceivedTask(Long userId);
 
     List<MetaTaskNew> findAllByPublishAndDel(boolean publish, boolean del);
 

+ 0 - 2
src/main/java/com/izouma/nineth/repo/MetaTaskToUserNewRepo.java

@@ -12,8 +12,6 @@ public interface MetaTaskToUserNewRepo extends JpaRepository<MetaTaskToUserNew,
 
     MetaTaskToUserNew findByUserIdAndTaskIdAndAtomTaskIdAndDel(Long userId, Long taskId, Long atomTaskId, boolean del);
 
-    MetaTaskToUserNew findByUserIdAndTaskIdAndDel(Long userId, Long taskId, boolean del);
-
     List<MetaTaskToUserNew> findAllByUserIdAndStatusAndDelAndAtomTaskIdIn(Long userId, MetaTaskStatus status, boolean del, List<Long> atomTaskIds);
 
     MetaTaskToUserNew findByIdAndDel(Long id, boolean del);

+ 6 - 11
src/main/java/com/izouma/nineth/service/MetaTaskToUserNewService.java

@@ -1,5 +1,6 @@
 package com.izouma.nineth.service;
 
+import cn.hutool.core.collection.CollectionUtil;
 import com.alibaba.excel.util.CollectionUtils;
 import com.izouma.nineth.config.Constants;
 import com.izouma.nineth.domain.*;
@@ -23,7 +24,6 @@ import javax.transaction.Transactional;
 import java.time.LocalDateTime;
 import java.util.List;
 import java.util.Objects;
-import java.util.concurrent.atomic.AtomicBoolean;
 
 @Service
 @AllArgsConstructor
@@ -51,13 +51,10 @@ public class MetaTaskToUserNewService {
     @Transactional
     public MetaRestResult<Void> autoReceiveTask() {
         Long userId = SecurityUtils.getAuthenticatedUser().getId();
-        List<MetaTaskNew> metaTaskNews = metaTaskNewRepo.findAllByAutoReceiveAndDel(true, false);
-        AtomicBoolean exist = new AtomicBoolean(false);
-        metaTaskNews.forEach(metaTaskNew -> {
-            MetaTaskToUserNew metaTaskToUserNew = metaTaskToUserNewRepo.findByUserIdAndTaskIdAndDel(userId, metaTaskNew.getId(), false);
-            if (Objects.isNull(metaTaskToUserNew)) {
-                exist.set(true);
-                metaTaskToUserNew = new MetaTaskToUserNew();
+        List<MetaTaskNew> metaTaskNews = metaTaskNewRepo.findUnReceivedAndAutoReceivedTask(userId);
+        if (CollectionUtil.isNotEmpty(metaTaskNews)) {
+            metaTaskNews.forEach(metaTaskNew -> {
+                MetaTaskToUserNew metaTaskToUserNew = new MetaTaskToUserNew();
                 metaTaskToUserNew.setUserId(userId);
                 metaTaskToUserNew.setTaskId(metaTaskNew.getId());
                 // 设置主动领取第一个索引的基础任务
@@ -83,9 +80,7 @@ public class MetaTaskToUserNewService {
                 if (Constants.MetaRestCode.success != result.getCode()) {
                     throw new BusinessException(result.getMessage());
                 }
-            }
-        });
-        if (exist.get()) {
+            });
             return MetaRestResult.returnSuccess("主动任务领取成功");
         }
         return MetaRestResult.returnSuccess("玩家主动领取任务已经全部领取");