MetaTaskToUserService.java 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. package com.izouma.nineth.service;
  2. import com.izouma.nineth.domain.MetaTask;
  3. import com.izouma.nineth.domain.MetaTaskToUser;
  4. import com.izouma.nineth.dto.MetaRestResult;
  5. import com.izouma.nineth.enums.MetaTaskStatus;
  6. import com.izouma.nineth.repo.MetaTaskRepo;
  7. import com.izouma.nineth.repo.MetaTaskToUserRepo;
  8. import lombok.AllArgsConstructor;
  9. import lombok.extern.slf4j.Slf4j;
  10. import org.springframework.stereotype.Service;
  11. import java.time.LocalDateTime;
  12. import java.util.Objects;
  13. @Service
  14. @AllArgsConstructor
  15. @Slf4j
  16. public class MetaTaskToUserService {
  17. private MetaTaskToUserRepo metaTaskToUserRepo;
  18. private MetaTaskRepo metaTaskRepo;
  19. public MetaRestResult<MetaTaskToUser> getTask(MetaTaskToUser metaTaskToUser) {
  20. if (Objects.nonNull(metaTaskToUser.getId())) {
  21. return MetaRestResult.returnError("参数不合法:id必须为空");
  22. }
  23. if (Objects.isNull(metaTaskToUser.getTaskId())) {
  24. return MetaRestResult.returnError("参数不合法:任务id不可为空");
  25. }
  26. if (Objects.isNull(metaTaskToUser.getUserId())) {
  27. return MetaRestResult.returnError("参数不合法:用户id不可为空");
  28. }
  29. MetaTask metaTask = metaTaskRepo.findByIdAndDel(metaTaskToUser.getTaskId(), false);
  30. if (Objects.isNull(metaTask)) {
  31. String errMsg = String.format("根据任务id[%S]查询不到任务详情", metaTaskToUser.getTaskId());
  32. log.info(errMsg);
  33. return MetaRestResult.returnError(errMsg);
  34. }
  35. if (Objects.isNull(metaTask.getType())) {
  36. String errMsg = String.format("任务[%S]缺少任务类型", metaTaskToUser.getTaskId());
  37. log.info(errMsg);
  38. return MetaRestResult.returnError(errMsg);
  39. }
  40. switch (metaTask.getType()) {
  41. case ONLY_ONE:
  42. MetaTaskToUser dbMetaTaskToUser = metaTaskToUserRepo.findByUserIdAndTaskIdAndDel(metaTaskToUser.getUserId(), metaTaskToUser.getTaskId(), false);
  43. if (Objects.nonNull(dbMetaTaskToUser)) {
  44. String errMsg = String.format("任务[%S]只允许领取一次,当前用户已在[%S]领取过该任务", metaTask.getName(), dbMetaTaskToUser.getGetTime());
  45. log.info(errMsg);
  46. return MetaRestResult.returnError(errMsg);
  47. }
  48. break;
  49. case DAILY:
  50. LocalDateTime now = LocalDateTime.now();
  51. LocalDateTime startTime = now.withHour(0).withMinute(0).withSecond(0);
  52. MetaTaskToUser dailyMetaTaskToUser = metaTaskToUserRepo.findByCondition(metaTaskToUser.getUserId(), metaTaskToUser.getTaskId(), startTime);
  53. if (Objects.nonNull(dailyMetaTaskToUser)) {
  54. String errMsg = String.format("任务[%S]每天只允许领取一次,当前用户已在[%S]领取过该任务", metaTask.getName(), dailyMetaTaskToUser.getGetTime());
  55. log.info(errMsg);
  56. return MetaRestResult.returnError(errMsg);
  57. }
  58. break;
  59. case MULTIPLE:
  60. break;
  61. default:
  62. return MetaRestResult.returnError(String.format("不存在的任务类型[%S]", metaTask.getType()));
  63. }
  64. metaTaskToUser.setGetTime(LocalDateTime.now());
  65. metaTaskToUser.setStatus(MetaTaskStatus.GET);
  66. return MetaRestResult.returnSuccess(metaTaskToUserRepo.save(metaTaskToUser));
  67. }
  68. }