Browse Source

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

sunkean 2 years ago
parent
commit
45ea3312e3

+ 33 - 0
src/main/java/com/izouma/nineth/domain/MetaAtomTask.java

@@ -3,6 +3,7 @@ package com.izouma.nineth.domain;
 
 import com.alibaba.excel.annotation.ExcelProperty;
 import com.izouma.nineth.annotations.Searchable;
+import com.izouma.nineth.dto.MetaServiceResult;
 import com.izouma.nineth.enums.MetaAwardTypeEnum;
 import com.izouma.nineth.enums.MetaTaskTarget;
 import io.swagger.annotations.ApiModel;
@@ -10,11 +11,13 @@ import io.swagger.annotations.ApiModelProperty;
 import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.NoArgsConstructor;
+import org.apache.commons.lang3.StringUtils;
 
 import javax.persistence.Column;
 import javax.persistence.Entity;
 import javax.persistence.EnumType;
 import javax.persistence.Enumerated;
+import java.util.Objects;
 
 @Data
 @AllArgsConstructor
@@ -51,4 +54,34 @@ public class MetaAtomTask extends BaseEntity {
     @ExcelProperty("奖励配置")
     private String awardConfig;
 
+    /**
+     * 校验基础任务
+     *
+     * @param metaAtomTask 基础任务
+     * @return result
+     */
+    public static MetaServiceResult checkMetaAtomTask(MetaAtomTask metaAtomTask) {
+        if (Objects.isNull(metaAtomTask)) {
+            return MetaServiceResult.returnError("基础任务不存在");
+        }
+        if (StringUtils.isBlank(metaAtomTask.getName())) {
+            return MetaServiceResult.returnError(String.format("基础任务[%S]缺少任务名称", metaAtomTask.getId()));
+        }
+        if (Objects.isNull(metaAtomTask.getDetail())) {
+            return MetaServiceResult.returnError(String.format("基础任务[%S]缺少任务详情", metaAtomTask.getId()));
+        }
+        if (Objects.isNull(metaAtomTask.getTargetType())) {
+            return MetaServiceResult.returnError(String.format("基础任务[%S]缺少目标", metaAtomTask.getId()));
+        }
+        if (StringUtils.isBlank(metaAtomTask.getTargetConfig())) {
+            return MetaServiceResult.returnError(String.format("基础任务[%S]缺少目标配置", metaAtomTask.getId()));
+        }
+        if (Objects.isNull(metaAtomTask.getAwardType())) {
+            return MetaServiceResult.returnError(String.format("基础任务[%S]缺少奖励类型", metaAtomTask.getId()));
+        }
+        if (!metaAtomTask.getAwardType().equals(MetaAwardTypeEnum.NULL) && StringUtils.isBlank(metaAtomTask.getAwardConfig())) {
+            return MetaServiceResult.returnError(String.format("基础任务[%S]缺少奖励配置", metaAtomTask.getId()));
+        }
+        return MetaServiceResult.returnSuccess();
+    }
 }

+ 30 - 0
src/main/java/com/izouma/nineth/domain/MetaTaskNew.java

@@ -2,15 +2,18 @@ package com.izouma.nineth.domain;
 
 import com.alibaba.excel.annotation.ExcelProperty;
 import com.izouma.nineth.annotations.Searchable;
+import com.izouma.nineth.dto.MetaServiceResult;
 import com.izouma.nineth.enums.MetaTaskType;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.NoArgsConstructor;
+import org.apache.commons.lang3.StringUtils;
 
 import javax.persistence.*;
 import java.util.List;
+import java.util.Objects;
 
 @Data
 @AllArgsConstructor
@@ -56,4 +59,31 @@ public class MetaTaskNew extends BaseEntity {
     @Transient
     private List<MetaTaskBind> metaDailyTask;
 
+    /**
+     * 校验任务
+     *
+     * @param metaTaskNew 任务信息
+     * @return result
+     */
+    public static MetaServiceResult checkMetaTaskNew(MetaTaskNew metaTaskNew) {
+        if (Objects.isNull(metaTaskNew)) {
+            return MetaServiceResult.returnError("任务不存在");
+        }
+        if (!metaTaskNew.isPublish()) {
+            return MetaServiceResult.returnError("status error : task has not been published");
+        }
+        if (StringUtils.isBlank(metaTaskNew.getName())) {
+            return MetaServiceResult.returnError(String.format("任务[%S]缺少任务名称", metaTaskNew.getId()));
+        }
+        if (Objects.isNull(metaTaskNew.getDetail())) {
+            return MetaServiceResult.returnError(String.format("任务[%S]缺少任务详情", metaTaskNew.getId()));
+        }
+        if (Objects.isNull(metaTaskNew.getType())) {
+            return MetaServiceResult.returnError(String.format("任务[%S]缺少任务类型", metaTaskNew.getId()));
+        }
+        if (Objects.isNull(metaTaskNew.getChannelId())) {
+            return MetaServiceResult.returnError(String.format("任务[%S]缺少频道id", metaTaskNew.getId()));
+        }
+        return MetaServiceResult.returnSuccess();
+    }
 }

+ 4 - 0
src/main/java/com/izouma/nineth/repo/MetaTaskNewRepo.java

@@ -1,6 +1,7 @@
 package com.izouma.nineth.repo;
 
 import com.izouma.nineth.domain.MetaTaskNew;
+import com.izouma.nineth.enums.MetaTaskType;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
 import org.springframework.data.jpa.repository.Modifying;
@@ -27,4 +28,7 @@ public interface MetaTaskNewRepo extends JpaRepository<MetaTaskNew, Long>, JpaSp
 
     @Query(value = "select * from meta_task_new where del = false and publish = true and channel_id = ?2 and id not in (select task_id from meta_task_to_user where user_id = ?1)", nativeQuery = true)
     List<MetaTaskNew> canGet(Long userId, Long channelId);
+
+    @Query("select m.id from MetaTaskNew m where m.type = ?1 and m.del = false and m.publish = true")
+    List<Long> findDailyTaskIds(MetaTaskType type);
 }

+ 8 - 1
src/main/java/com/izouma/nineth/repo/MetaTaskToUserNewRepo.java

@@ -5,12 +5,15 @@ import com.izouma.nineth.domain.MetaTaskToUserNew;
 import com.izouma.nineth.enums.MetaTaskStatus;
 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 javax.transaction.Transactional;
 import java.util.List;
 
 public interface MetaTaskToUserNewRepo extends JpaRepository<MetaTaskToUserNew, Long>, JpaSpecificationExecutor<MetaTaskToUserNew> {
 
-    MetaTaskToUserNew findByUserIdAndTaskIdAndAtomTaskIdAndDel(Long userId, Long taskId, Long atomTaskId, boolean del);
+    MetaTaskToUserNew findByUserIdAndTaskIdAndAtomTaskIdAndChannelIdAndDel(Long userId, Long taskId, Long atomTaskId, Long channelId, boolean del);
 
     List<MetaTaskToUserNew> findAllByUserIdAndStatusAndDelAndAtomTaskIdIn(Long userId, MetaTaskStatus status, boolean del, List<Long> atomTaskIds);
 
@@ -18,4 +21,8 @@ public interface MetaTaskToUserNewRepo extends JpaRepository<MetaTaskToUserNew,
 
     List<MetaTaskToUserNew> findAllByUserIdAndChannelIdAndStatusAndDelAndTaskIdIn(Long userId, Long channelId, MetaTaskStatus status, boolean del, List<Long> taskIds);
 
+    @Query("update MetaTaskToUserNew m set m.status = ?1 where m.taskId in ?2")
+    @Modifying
+    @Transactional
+    void updateStatus(MetaTaskStatus status, List<Long> taskIds);
 }

+ 25 - 62
src/main/java/com/izouma/nineth/service/MetaTaskToUserNewService.java

@@ -1,6 +1,7 @@
 package com.izouma.nineth.service;
 
 import cn.hutool.core.collection.CollectionUtil;
+import com.alibaba.druid.support.json.JSONUtils;
 import com.alibaba.excel.util.CollectionUtils;
 import com.izouma.nineth.config.Constants;
 import com.izouma.nineth.domain.*;
@@ -18,6 +19,7 @@ import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.data.domain.Page;
+import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Service;
 
 import javax.transaction.Transactional;
@@ -96,13 +98,13 @@ public class MetaTaskToUserNewService {
             return MetaRestResult.returnError("Illegal parameter : atomTaskId can not be null");
         }
         MetaTaskNew metaTaskNew = metaTaskNewRepo.findByIdAndDel(metaTaskToUserNew.getTaskId(), false);
-        MetaServiceResult checkMetaTaskNewResult = checkMetaTaskNew(metaTaskNew);
+        MetaServiceResult checkMetaTaskNewResult = MetaTaskNew.checkMetaTaskNew(metaTaskNew);
         if (!checkMetaTaskNewResult.isSuccess()) {
             return MetaRestResult.returnError(checkMetaTaskNewResult.getMessage());
         }
         metaTaskToUserNew.setMetaTaskNew(metaTaskNew);
         MetaAtomTask metaAtomTask = metaAtomTaskRepo.findByIdAndDel(metaTaskToUserNew.getAtomTaskId(), false);
-        MetaServiceResult checkMetaAtomTaskResult = checkMetaAtomTask(metaAtomTask);
+        MetaServiceResult checkMetaAtomTaskResult = MetaAtomTask.checkMetaAtomTask(metaAtomTask);
         if (!checkMetaAtomTaskResult.isSuccess()) {
             return MetaRestResult.returnError(checkMetaAtomTaskResult.getMessage());
         }
@@ -113,8 +115,8 @@ public class MetaTaskToUserNewService {
         }
         // 判断当前玩家是否领取过基础任务
         MetaTaskToUserNew dbMetaTaskToUserNew = metaTaskToUserNewRepo
-                .findByUserIdAndTaskIdAndAtomTaskIdAndDel(metaTaskToUserNew.getUserId(), metaTaskToUserNew
-                        .getTaskId(), metaTaskToUserNew.getAtomTaskId(), false);
+                .findByUserIdAndTaskIdAndAtomTaskIdAndChannelIdAndDel(metaTaskToUserNew.getUserId(), metaTaskToUserNew
+                        .getTaskId(), metaTaskToUserNew.getAtomTaskId(), metaTaskNew.getChannelId(), false);
         if (Objects.nonNull(dbMetaTaskToUserNew)) {
             return MetaRestResult.returnError(String.format("当前用户已在[%S]领取过该任务", dbMetaTaskToUserNew.getGetTime()));
         }
@@ -161,13 +163,13 @@ public class MetaTaskToUserNewService {
 
     public MetaRestResult<MetaTaskToUserNew> setSingleProgress(MetaTaskToUserNew metaTaskToUserNew) {
         MetaAtomTask metaAtomTask = metaAtomTaskRepo.findByIdAndDel(metaTaskToUserNew.getAtomTaskId(), false);
-        MetaServiceResult checkMetaAtomTaskResult = checkMetaAtomTask(metaAtomTask);
+        MetaServiceResult checkMetaAtomTaskResult = MetaAtomTask.checkMetaAtomTask(metaAtomTask);
         if (!checkMetaAtomTaskResult.isSuccess()) {
             return MetaRestResult.returnError(checkMetaAtomTaskResult.getMessage());
         }
         metaTaskToUserNew.setMetaAtomTask(metaAtomTask);
         MetaTaskNew metaTaskNew = metaTaskNewRepo.findByIdAndDel(metaTaskToUserNew.getTaskId(), false);
-        MetaServiceResult checkMetaTaskNewResult = checkMetaTaskNew(metaTaskNew);
+        MetaServiceResult checkMetaTaskNewResult = MetaTaskNew.checkMetaTaskNew(metaTaskNew);
         if (!checkMetaTaskNewResult.isSuccess()) {
             return MetaRestResult.returnError(checkMetaTaskNewResult.getMessage());
         }
@@ -256,62 +258,6 @@ public class MetaTaskToUserNewService {
         }
     }
 
-    /**
-     * 校验基础任务
-     *
-     * @param metaAtomTask 基础任务
-     * @return result
-     */
-    private MetaServiceResult checkMetaAtomTask(MetaAtomTask metaAtomTask) {
-        if (Objects.isNull(metaAtomTask)) {
-            return MetaServiceResult.returnError("基础任务不存在");
-        }
-        if (StringUtils.isBlank(metaAtomTask.getName())) {
-            return MetaServiceResult.returnError(String.format("基础任务[%S]缺少任务名称", metaAtomTask.getId()));
-        }
-        if (Objects.isNull(metaAtomTask.getDetail())) {
-            return MetaServiceResult.returnError(String.format("基础任务[%S]缺少任务详情", metaAtomTask.getId()));
-        }
-        if (Objects.isNull(metaAtomTask.getTargetType())) {
-            return MetaServiceResult.returnError(String.format("基础任务[%S]缺少目标", metaAtomTask.getId()));
-        }
-        if (StringUtils.isBlank(metaAtomTask.getTargetConfig())) {
-            return MetaServiceResult.returnError(String.format("基础任务[%S]缺少目标配置", metaAtomTask.getId()));
-        }
-        if (Objects.isNull(metaAtomTask.getAwardType())) {
-            return MetaServiceResult.returnError(String.format("基础任务[%S]缺少奖励类型", metaAtomTask.getId()));
-        }
-        if (!metaAtomTask.getAwardType().equals(MetaAwardTypeEnum.NULL) && StringUtils.isBlank(metaAtomTask.getAwardConfig())) {
-            return MetaServiceResult.returnError(String.format("基础任务[%S]缺少奖励配置", metaAtomTask.getId()));
-        }
-        return MetaServiceResult.returnSuccess();
-    }
-
-    /**
-     * 校验任务
-     *
-     * @param metaTaskNew 任务信息
-     * @return result
-     */
-    public MetaServiceResult checkMetaTaskNew(MetaTaskNew metaTaskNew) {
-        if (Objects.isNull(metaTaskNew)) {
-            return MetaServiceResult.returnError("任务不存在");
-        }
-        if (!metaTaskNew.isPublish()) {
-            return MetaServiceResult.returnError("status error : task has not been published");
-        }
-        if (StringUtils.isBlank(metaTaskNew.getName())) {
-            return MetaServiceResult.returnError(String.format("任务[%S]缺少任务名称", metaTaskNew.getId()));
-        }
-        if (Objects.isNull(metaTaskNew.getDetail())) {
-            return MetaServiceResult.returnError(String.format("任务[%S]缺少任务详情", metaTaskNew.getId()));
-        }
-        if (Objects.isNull(metaTaskNew.getType())) {
-            return MetaServiceResult.returnError(String.format("任务[%S]缺少任务类型", metaTaskNew.getId()));
-        }
-        return MetaServiceResult.returnSuccess();
-    }
-
     /**
      * 道具奖励 构建道具信息
      *
@@ -331,4 +277,21 @@ public class MetaTaskToUserNewService {
         metaTaskToUserNew.setMetaProp(metaProp);
         return MetaServiceResult.returnSuccess();
     }
+
+    /**
+     * 每天凌晨刷新日常任务状态为执行中
+     */
+    @Scheduled(cron = "0 0 0 * * *")
+    @Transactional
+    public void handleDailyTask() {
+        // 查询所有已经发布的日常任务
+        List<Long> ids = metaTaskNewRepo.findDailyTaskIds(MetaTaskType.DAILY);
+        if (CollectionUtil.isEmpty(ids)) {
+            log.info(String.format("当前[%S]没有日常任务需要调整状态", LocalDateTime.now()));
+            return;
+        }
+        log.info(String.format("[%S]更新日常任务[%S]状态", LocalDateTime.now(), JSONUtils.toJSONString(ids)));
+        // 每日流程将所有日常任务状态全部调整为进行中
+        metaTaskToUserNewRepo.updateStatus(MetaTaskStatus.PROGRESS, ids);
+    }
 }

+ 17 - 9
src/main/java/com/izouma/nineth/service/MetaUserTaskAwardReceivedRecordNewService.java

@@ -1,6 +1,7 @@
 package com.izouma.nineth.service;
 
 import com.izouma.nineth.domain.MetaAtomTask;
+import com.izouma.nineth.domain.MetaTaskNew;
 import com.izouma.nineth.domain.MetaTaskToUserNew;
 import com.izouma.nineth.domain.MetaUserTaskAwardReceivedRecordNew;
 import com.izouma.nineth.dto.MetaAwardReceiveDTO;
@@ -10,6 +11,7 @@ import com.izouma.nineth.dto.PageQuery;
 import com.izouma.nineth.enums.MetaTaskStatus;
 import com.izouma.nineth.enums.MetaTaskTarget;
 import com.izouma.nineth.repo.MetaAtomTaskRepo;
+import com.izouma.nineth.repo.MetaTaskNewRepo;
 import com.izouma.nineth.repo.MetaTaskToUserNewRepo;
 import com.izouma.nineth.repo.MetaUserTaskAwardReceivedRecordNewRepo;
 import com.izouma.nineth.utils.JpaUtils;
@@ -29,6 +31,7 @@ public class MetaUserTaskAwardReceivedRecordNewService {
     private MetaUserTaskAwardReceivedRecordNewRepo metaUserTaskAwardReceivedRecordNewRepo;
     private MetaTaskToUserNewRepo                  metaTaskToUserNewRepo;
     private MetaAtomTaskRepo                       metaAtomTaskRepo;
+    private MetaTaskNewRepo                        metaTaskNewRepo;
     private MetaAwardReceiveService                metaAwardReceiveService;
 
     public Page<MetaUserTaskAwardReceivedRecordNew> all(PageQuery pageQuery) {
@@ -38,24 +41,29 @@ public class MetaUserTaskAwardReceivedRecordNewService {
     @Transactional
     public MetaRestResult<Void> receiveAward(Long taskId, Long atomTaskId) {
         Long userId = SecurityUtils.getAuthenticatedUser().getId();
+        MetaTaskNew metaTaskNew = metaTaskNewRepo.findByIdAndDel(taskId, false);
+        MetaServiceResult checkMetaTaskNewResult = MetaTaskNew.checkMetaTaskNew(metaTaskNew);
+        if (!checkMetaTaskNewResult.isSuccess()) {
+            return MetaRestResult.returnError(checkMetaTaskNewResult.getMessage());
+        }
         MetaAtomTask metaAtomTask = metaAtomTaskRepo.findByIdAndDel(atomTaskId, false);
-        if (Objects.isNull(metaAtomTask)) {
-            return MetaRestResult.returnError("奖励领取失败:基础任务不存在!");
+        MetaServiceResult checkMetaAtomTaskResult = MetaAtomTask.checkMetaAtomTask(metaAtomTask);
+        if (!checkMetaAtomTaskResult.isSuccess()) {
+            return MetaRestResult.returnError(checkMetaAtomTaskResult.getMessage());
         }
-        MetaTaskToUserNew metaTaskToUserNew = metaTaskToUserNewRepo.findByUserIdAndTaskIdAndAtomTaskIdAndDel(userId, taskId, atomTaskId, false);
+        MetaTaskToUserNew metaTaskToUserNew = metaTaskToUserNewRepo.findByUserIdAndTaskIdAndAtomTaskIdAndChannelIdAndDel(userId, taskId, atomTaskId, metaTaskNew.getChannelId(), false);
         if (Objects.isNull(metaTaskToUserNew)) {
-            return MetaRestResult.returnError("奖励领取失败:用户未领取过该任务!");
+            return MetaRestResult.returnError(String.format("奖励领取失败:用户[%S]在频道[%S]下未领取过该任务!", userId, metaTaskNew.getChannelId()));
+        }
+        if (MetaTaskStatus.PROGRESS.equals(metaTaskToUserNew.getStatus()) || MetaTaskStatus.FINISH.equals(metaTaskToUserNew.getStatus())) {
+            return MetaRestResult.returnError(String.format("奖励领取失败:当前任务状态为[%S]", metaTaskToUserNew.getStatus().getDescription()));
         }
         if (MetaTaskTarget.ON_LINE_TIME_DAILY.equals(metaAtomTask.getTargetType())) {
             MetaUserTaskAwardReceivedRecordNew metaUserTaskAwardReceivedRecordNew = metaUserTaskAwardReceivedRecordNewRepo.findByUserIdAndTaskIdAndAtomTaskIdAndDelAndReceivedTimeAfter(userId, taskId, atomTaskId, false, LocalDateTime.now().withHour(0).withMinute(0).withSecond(0));
             if (Objects.nonNull(metaUserTaskAwardReceivedRecordNew)) {
                 return MetaRestResult.returnError("奖励领取失败:用户今天已经领取过该任务奖励,不可重复领取!");
             }
-        }
-        if (!MetaTaskTarget.ON_LINE_TIME_DAILY.equals(metaAtomTask.getTargetType())) {
-            if (MetaTaskStatus.PROGRESS.equals(metaTaskToUserNew.getStatus()) || MetaTaskStatus.FINISH.equals(metaTaskToUserNew.getStatus())) {
-                return MetaRestResult.returnError(String.format("奖励领取失败:当前任务状态为[%S]", metaTaskToUserNew.getStatus().getDescription()));
-            }
+        } else {
             MetaUserTaskAwardReceivedRecordNew metaUserTaskAwardReceivedRecordNew = metaUserTaskAwardReceivedRecordNewRepo.findByUserIdAndTaskIdAndAtomTaskIdAndDel(userId, taskId, atomTaskId, false);
             if (Objects.nonNull(metaUserTaskAwardReceivedRecordNew)) {
                 return MetaRestResult.returnError("奖励领取失败:用户已经领取过该任务奖励,不可重复领取!");

+ 17 - 11
src/main/java/com/izouma/nineth/service/MetaUserTaskProgressNewService.java

@@ -56,7 +56,7 @@ public class MetaUserTaskProgressNewService {
         }
         // 校验任务
         MetaTaskNew metaTaskNew = metaTaskNewRepo.findByIdAndDel(metaTaskToUserNew.getTaskId(), false);
-        MetaServiceResult checkMetaTaskNewResult = metaTaskToUserNewService.checkMetaTaskNew(metaTaskNew);
+        MetaServiceResult checkMetaTaskNewResult = MetaTaskNew.checkMetaTaskNew(metaTaskNew);
         if (!checkMetaTaskNewResult.isSuccess()) {
             return MetaRestResult.returnError(checkMetaTaskNewResult.getMessage());
         }
@@ -98,17 +98,16 @@ public class MetaUserTaskProgressNewService {
             MetaUserTaskProgressNew dbMetaUserTaskProgressNew = metaUserTaskProgressNewRepo.findByMetaTaskToUserNewIdAndDelAndCreatedAtAfter(metaUserTaskProgressNew.getMetaTaskToUserNewId(), false, LocalDateTime.now().withHour(0).withMinute(0).withSecond(0));
             if (Objects.isNull(dbMetaUserTaskProgressNew)) {
                 metaUserTaskProgressNewRepo.save(metaUserTaskProgressNew);
-                // 该类型任务不存在完成
-                return MetaRestResult.returnSuccess(Integer.parseInt(metaUserTaskProgressNew.getRemark()) >= Integer.parseInt(value));
+            } else {
+                int remark = Integer.parseInt(metaUserTaskProgressNew.getRemark()) + Integer.parseInt(dbMetaUserTaskProgressNew.getRemark());
+                dbMetaUserTaskProgressNew.setRemark(String.valueOf(remark));
+                dbMetaUserTaskProgressNew.setProgressTime(LocalDateTime.now());
+                metaUserTaskProgressNewRepo.save(dbMetaUserTaskProgressNew);
             }
-            int remark = Integer.parseInt(metaUserTaskProgressNew.getRemark()) + Integer.parseInt(dbMetaUserTaskProgressNew.getRemark());
-            dbMetaUserTaskProgressNew.setRemark(String.valueOf(remark));
-            dbMetaUserTaskProgressNew.setProgressTime(LocalDateTime.now());
-            metaUserTaskProgressNewRepo.save(dbMetaUserTaskProgressNew);
-            return MetaRestResult.returnSuccess(Integer.parseInt(metaUserTaskProgressNew.getRemark()) >= Integer.parseInt(value));
-        }
-        // 保存进度
-        metaUserTaskProgressNewRepo.save(metaUserTaskProgressNew);
+        } else {
+            // 保存进度
+            metaUserTaskProgressNewRepo.save(metaUserTaskProgressNew);
+        }
         List<MetaUserTaskProgressNew> metaUserTaskProgressNews = metaUserTaskProgressNewRepo.findAllByMetaTaskToUserNewIdAndDel(metaUserTaskProgressNew.getMetaTaskToUserNewId(), false);
         // 是否完成任务
         switch (metaAtomTask.getTargetType()) {
@@ -127,6 +126,13 @@ public class MetaUserTaskProgressNewService {
                     return MetaRestResult.returnSuccess(true);
                 }
                 return MetaRestResult.returnSuccess(false);
+            case ON_LINE_TIME_DAILY:
+                MetaUserTaskProgressNew dbMetaUserTaskProgressNew = metaUserTaskProgressNewRepo.findByMetaTaskToUserNewIdAndDelAndCreatedAtAfter(metaUserTaskProgressNew.getMetaTaskToUserNewId(), false, LocalDateTime.now().withHour(0).withMinute(0).withSecond(0));
+                if (Integer.parseInt(dbMetaUserTaskProgressNew.getRemark()) >= Integer.parseInt(value)) {
+                    completeTask(metaTaskToUserNew);
+                    return MetaRestResult.returnSuccess(true);
+                }
+                return MetaRestResult.returnSuccess(false);
             default:
                 throw new BusinessException(String.format("不存在的任务类型[%S]", metaAtomTask.getTargetType()));
         }

+ 6 - 4
src/main/java/com/izouma/nineth/web/MetaTaskToUserNewController.java

@@ -6,6 +6,7 @@ import com.izouma.nineth.dto.PageQuery;
 import com.izouma.nineth.enums.MetaTaskStatus;
 import com.izouma.nineth.repo.MetaTaskToUserNewRepo;
 import com.izouma.nineth.service.MetaTaskToUserNewService;
+import com.izouma.nineth.utils.SecurityUtils;
 import com.izouma.nineth.utils.excel.ExcelUtils;
 import lombok.AllArgsConstructor;
 import org.springframework.data.domain.Page;
@@ -39,11 +40,12 @@ public class MetaTaskToUserNewController {
         return metaTaskToUserNewService.receiveTask(metaTaskToUserNew, true);
     }
 
-    @GetMapping("/{id}/findProgress")
-    public MetaRestResult<MetaTaskToUserNew> findProgress(@PathVariable Long id) {
-        MetaTaskToUserNew metaTaskToUserNew = metaTaskToUserNewRepo.findByIdAndDel(id, false);
+    @GetMapping("/{taskId}/{atomTaskId}/{channelId}/findProgress")
+    public MetaRestResult<MetaTaskToUserNew> findProgress(@PathVariable Long taskId, @PathVariable Long atomTaskId, @PathVariable Long channelId) {
+        Long userId = SecurityUtils.getAuthenticatedUser().getId();
+        MetaTaskToUserNew metaTaskToUserNew = metaTaskToUserNewRepo.findByUserIdAndTaskIdAndAtomTaskIdAndChannelIdAndDel(userId, taskId, atomTaskId, channelId, false);
         if (Objects.isNull(metaTaskToUserNew)) {
-            return MetaRestResult.returnError(String.format("根据id[%S]查询不到用户领取记录", id));
+            return MetaRestResult.returnError(String.format("根据任务id[%S]+基础任务id[%S]查询不到用户[%S]在频道[%S]下的领取记录", taskId, atomTaskId, userId, channelId));
         }
         return metaTaskToUserNewService.setSingleProgress(metaTaskToUserNew);
     }