| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- package com.izouma.nineth.service;
- import com.izouma.nineth.domain.MetaTask;
- import com.izouma.nineth.domain.MetaTaskToUser;
- import com.izouma.nineth.dto.MetaRestResult;
- import com.izouma.nineth.enums.MetaTaskStatus;
- import com.izouma.nineth.repo.MetaTaskRepo;
- import com.izouma.nineth.repo.MetaTaskToUserRepo;
- import lombok.AllArgsConstructor;
- import lombok.extern.slf4j.Slf4j;
- import org.springframework.stereotype.Service;
- import java.time.LocalDateTime;
- import java.util.Objects;
- @Service
- @AllArgsConstructor
- @Slf4j
- public class MetaTaskToUserService {
- private MetaTaskToUserRepo metaTaskToUserRepo;
- private MetaTaskRepo metaTaskRepo;
- public MetaRestResult<MetaTaskToUser> getTask(MetaTaskToUser metaTaskToUser) {
- if (Objects.nonNull(metaTaskToUser.getId())) {
- return MetaRestResult.returnError("参数不合法:id必须为空");
- }
- if (Objects.isNull(metaTaskToUser.getTaskId())) {
- return MetaRestResult.returnError("参数不合法:任务id不可为空");
- }
- if (Objects.isNull(metaTaskToUser.getUserId())) {
- return MetaRestResult.returnError("参数不合法:用户id不可为空");
- }
- MetaTask metaTask = metaTaskRepo.findByIdAndDel(metaTaskToUser.getTaskId(), false);
- if (Objects.isNull(metaTask)) {
- String errMsg = String.format("根据任务id[%S]查询不到任务详情", metaTaskToUser.getTaskId());
- log.info(errMsg);
- return MetaRestResult.returnError(errMsg);
- }
- if (Objects.isNull(metaTask.getType())) {
- String errMsg = String.format("任务[%S]缺少任务类型", metaTaskToUser.getTaskId());
- log.info(errMsg);
- return MetaRestResult.returnError(errMsg);
- }
- switch (metaTask.getType()) {
- case ONLY_ONE:
- MetaTaskToUser dbMetaTaskToUser = metaTaskToUserRepo.findByUserIdAndTaskIdAndDel(metaTaskToUser.getUserId(), metaTaskToUser.getTaskId(), false);
- if (Objects.nonNull(dbMetaTaskToUser)) {
- String errMsg = String.format("任务[%S]只允许领取一次,当前用户已在[%S]领取过该任务", metaTask.getName(), dbMetaTaskToUser.getGetTime());
- log.info(errMsg);
- return MetaRestResult.returnError(errMsg);
- }
- break;
- case DAILY:
- LocalDateTime now = LocalDateTime.now();
- LocalDateTime startTime = now.withHour(0).withMinute(0).withSecond(0);
- MetaTaskToUser dailyMetaTaskToUser = metaTaskToUserRepo.findByCondition(metaTaskToUser.getUserId(), metaTaskToUser.getTaskId(), startTime);
- if (Objects.nonNull(dailyMetaTaskToUser)) {
- String errMsg = String.format("任务[%S]每天只允许领取一次,当前用户已在[%S]领取过该任务", metaTask.getName(), dailyMetaTaskToUser.getGetTime());
- log.info(errMsg);
- return MetaRestResult.returnError(errMsg);
- }
- break;
- case MULTIPLE:
- break;
- default:
- return MetaRestResult.returnError(String.format("不存在的任务类型[%S]", metaTask.getType()));
- }
- metaTaskToUser.setGetTime(LocalDateTime.now());
- metaTaskToUser.setStatus(MetaTaskStatus.GET);
- return MetaRestResult.returnSuccess(metaTaskToUserRepo.save(metaTaskToUser));
- }
- }
|