|
|
@@ -42,23 +42,23 @@ public class MetaTaskToUserService {
|
|
|
|
|
|
public MetaRestResult<MetaTaskToUser> receiveTask(MetaTaskToUser metaTaskToUser) {
|
|
|
if (Objects.nonNull(metaTaskToUser.getId())) {
|
|
|
- return MetaRestResult.returnError("参数不合法:id必须为空");
|
|
|
+ return MetaRestResult.returnError("Illegal parameter : id must be null");
|
|
|
}
|
|
|
if (Objects.isNull(metaTaskToUser.getTaskId())) {
|
|
|
- return MetaRestResult.returnError("参数不合法:任务id不可为空");
|
|
|
+ return MetaRestResult.returnError("Illegal parameter : taskId can not be null");
|
|
|
}
|
|
|
if (Objects.isNull(metaTaskToUser.getUserId())) {
|
|
|
- return MetaRestResult.returnError("参数不合法:用户id不可为空");
|
|
|
+ return MetaRestResult.returnError("Illegal parameter : userId can not be null");
|
|
|
}
|
|
|
MetaTask metaTask = metaTaskRepo.findByIdAndDel(metaTaskToUser.getTaskId(), false);
|
|
|
if (Objects.isNull(metaTask)) {
|
|
|
return MetaRestResult.returnError(String.format("根据任务id[%S]查询不到任务详情", metaTaskToUser.getTaskId()));
|
|
|
}
|
|
|
if (!metaTask.isPublish()) {
|
|
|
- return MetaRestResult.returnError("当前任务还未发布,不可领取");
|
|
|
+ return MetaRestResult.returnError("status error : task has not been published");
|
|
|
}
|
|
|
if (metaTask.isFinish()) {
|
|
|
- return MetaRestResult.returnError("当前任务已经结束,不可领取");
|
|
|
+ return MetaRestResult.returnError("status error : task has been finished");
|
|
|
}
|
|
|
if (StringUtils.isBlank(metaTask.getName())) {
|
|
|
return MetaRestResult.returnError(String.format("任务[%S]缺少任务名称", metaTaskToUser.getTaskId()));
|
|
|
@@ -66,15 +66,22 @@ public class MetaTaskToUserService {
|
|
|
if (Objects.isNull(metaTask.getType())) {
|
|
|
return MetaRestResult.returnError(String.format("任务[%S]缺少任务类型", metaTaskToUser.getTaskId()));
|
|
|
}
|
|
|
+ if (Objects.isNull(metaTask.getDetail())) {
|
|
|
+ return MetaRestResult.returnError(String.format("任务[%S]缺少任务详情", metaTaskToUser.getTaskId()));
|
|
|
+ }
|
|
|
// 判断当前玩家是否领取过任务
|
|
|
MetaTaskToUser dbMetaTaskToUser = metaTaskToUserRepo.findByUserIdAndTaskIdAndDel(metaTaskToUser.getUserId(), metaTaskToUser.getTaskId(), false);
|
|
|
if (Objects.nonNull(dbMetaTaskToUser)) {
|
|
|
return MetaRestResult.returnError(String.format("当前用户已在[%S]领取过该任务[%S]", dbMetaTaskToUser.getGetTime(), metaTask.getName()));
|
|
|
}
|
|
|
+ if (Objects.nonNull(metaTask.getAwardPic())) {
|
|
|
+ metaTaskToUser.setAwardPic(metaTask.getAwardPic());
|
|
|
+ }
|
|
|
metaTaskToUser.setTaskName(metaTask.getName());
|
|
|
metaTaskToUser.setTaskType(metaTask.getType());
|
|
|
+ metaTaskToUser.setDetail(metaTask.getDetail());
|
|
|
metaTaskToUser.setGetTime(LocalDateTime.now());
|
|
|
- metaTaskToUser.setStatus(MetaTaskStatus.GET);
|
|
|
+ metaTaskToUser.setStatus(MetaTaskStatus.PROGRESS);
|
|
|
return MetaRestResult.returnSuccess(metaTaskToUserRepo.save(metaTaskToUser));
|
|
|
}
|
|
|
|
|
|
@@ -85,8 +92,18 @@ public class MetaTaskToUserService {
|
|
|
return MetaRestResult.returnSuccess(metaTaskToUsers);
|
|
|
}
|
|
|
|
|
|
+ public MetaRestResult<MetaTaskToUser> findProgress(Long id) {
|
|
|
+ MetaTaskToUser metaTaskToUsers = metaTaskToUserRepo.findByIdAndDel(id, false);
|
|
|
+ if (Objects.isNull(metaTaskToUsers)) {
|
|
|
+ return MetaRestResult.returnError(String.format("根据id[%S]查询不到用户领取记录", id));
|
|
|
+ }
|
|
|
+ setProgress(metaTaskToUsers);
|
|
|
+ return MetaRestResult.returnSuccess(metaTaskToUsers);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
/**
|
|
|
- * 计算任务进度
|
|
|
+ * 设置任务进度
|
|
|
*
|
|
|
* @param metaTaskToUser 参数
|
|
|
*/
|
|
|
@@ -95,98 +112,81 @@ public class MetaTaskToUserService {
|
|
|
if (Objects.isNull(metaTask)) {
|
|
|
log.error("任务信息为空");
|
|
|
}
|
|
|
- MetaTaskStatus status = metaTaskToUser.getStatus();
|
|
|
String value = metaTask.getValue();
|
|
|
switch (metaTaskToUser.getTaskType()) {
|
|
|
case SIGN_IN_SINGLE_DAY:
|
|
|
- if (MetaTaskStatus.GET.equals(status)) {
|
|
|
+ List<MetaUserTaskProgress> signInSingleDay = metaUserTaskProgressRepo.findAllByMetaTaskToUserIdAndDel(metaTaskToUser.getId(), false);
|
|
|
+ if (CollectionUtils.isEmpty(signInSingleDay)) {
|
|
|
metaTaskToUser.setProcess(PREFIX.concat("1"));
|
|
|
break;
|
|
|
}
|
|
|
- setCommonProgress(metaTaskToUser);
|
|
|
+ metaTaskToUser.setProcess(String.valueOf(signInSingleDay.size()).concat(" / 1"));
|
|
|
break;
|
|
|
case SIGN_IN_CONTINUOUS:
|
|
|
- if (MetaTaskStatus.GET.equals(status)) {
|
|
|
- metaTaskToUser.setProcess(PREFIX.concat("7"));
|
|
|
- break;
|
|
|
- }
|
|
|
- if (MetaTaskStatus.PROGRESS.equals(status)) {
|
|
|
- int num = countSignIn(value, metaTaskToUser);
|
|
|
- metaTaskToUser.setProcess(String.valueOf(num).concat(" / 7"));
|
|
|
- break;
|
|
|
- }
|
|
|
- setCommonProgress(metaTaskToUser);
|
|
|
+ int num = countSignIn(value, metaTaskToUser.getId());
|
|
|
+ metaTaskToUser.setProcess(String.valueOf(num).concat(" / 7"));
|
|
|
break;
|
|
|
case COLLECT_COLLECTION:
|
|
|
if (StringUtils.isBlank(value)) {
|
|
|
- log.error("请先配置藏品id");
|
|
|
+ String errMsg = "任务进度显示异常,缺少藏品id配置";
|
|
|
+ log.error(errMsg);
|
|
|
+ metaTaskToUser.setProcess(errMsg);
|
|
|
break;
|
|
|
}
|
|
|
- String[] split = value.split(",");
|
|
|
- if (MetaTaskStatus.GET.equals(status)) {
|
|
|
+ String[] split = value.split(" ");
|
|
|
+ List<MetaUserTaskProgress> collectCollection = metaUserTaskProgressRepo.findAllByMetaTaskToUserIdAndDel(metaTaskToUser.getId(), false);
|
|
|
+ if (CollectionUtils.isEmpty(collectCollection)) {
|
|
|
metaTaskToUser.setProcess(PREFIX.concat(String.valueOf(split.length)));
|
|
|
break;
|
|
|
}
|
|
|
- if (MetaTaskStatus.PROGRESS.equals(status)) {
|
|
|
- List<MetaUserTaskProgress> metaUserTaskProgresses = metaUserTaskProgressRepo.findAllByMetaTaskToUserIdAndDel(metaTaskToUser.getId(), false);
|
|
|
- if (CollectionUtils.isEmpty(metaUserTaskProgresses)) {
|
|
|
- metaTaskToUser.setProcess(PREFIX.concat(String.valueOf(split.length)));
|
|
|
- break;
|
|
|
- }
|
|
|
- metaTaskToUser.setProcess(String.valueOf(metaUserTaskProgresses.size()).concat(" / ").concat(String.valueOf(split.length)));
|
|
|
- }
|
|
|
- setCommonProgress(metaTaskToUser);
|
|
|
+ metaTaskToUser.setProcess(String.valueOf(collectCollection.size()).concat(" / ").concat(String.valueOf(split.length)));
|
|
|
break;
|
|
|
case ON_LINE_TIME_DAILY:
|
|
|
- if (MetaTaskStatus.GET.equals(status)) {
|
|
|
- metaTaskToUser.setProcess("0");
|
|
|
+ if (StringUtils.isBlank(value)) {
|
|
|
+ String errMsg = "任务进度显示异常,缺少在线时长配置";
|
|
|
+ log.error(errMsg);
|
|
|
+ metaTaskToUser.setProcess(errMsg);
|
|
|
break;
|
|
|
}
|
|
|
- if (MetaTaskStatus.PROGRESS.equals(status)) {
|
|
|
- MetaUserTaskProgress metaUserTaskProgress = metaUserTaskProgressRepo.findByMetaTaskToUserIdAndDelAndCreatedAtAfter(metaTaskToUser.getId(), false, LocalDateTime.now().withHour(0).withMinute(0).withSecond(0));
|
|
|
- if (Objects.isNull(metaUserTaskProgress)) {
|
|
|
- metaTaskToUser.setProcess("0");
|
|
|
- break;
|
|
|
- }
|
|
|
- metaTaskToUser.setProcess(metaUserTaskProgress.getRemark());
|
|
|
+ MetaUserTaskProgress onLineTimeDaily = metaUserTaskProgressRepo.findByMetaTaskToUserIdAndDelAndCreatedAtAfter(metaTaskToUser.getId(), false, LocalDateTime.now().withHour(0).withMinute(0).withSecond(0));
|
|
|
+ if (Objects.isNull(onLineTimeDaily)) {
|
|
|
+ metaTaskToUser.setProcess("0");
|
|
|
+ break;
|
|
|
}
|
|
|
- setCommonProgress(metaTaskToUser);
|
|
|
+ metaTaskToUser.setProcess(onLineTimeDaily.getRemark().concat(" / ").concat(value));
|
|
|
break;
|
|
|
case ACCUMULATE:
|
|
|
- if (MetaTaskStatus.GET.equals(status)) {
|
|
|
- metaTaskToUser.setProcess(PREFIX.concat(value));
|
|
|
+ if (StringUtils.isBlank(value)) {
|
|
|
+ String errMsg = "任务进度显示异常,缺少累计任务的数量配置";
|
|
|
+ log.error(errMsg);
|
|
|
+ metaTaskToUser.setProcess(errMsg);
|
|
|
break;
|
|
|
}
|
|
|
- if (MetaTaskStatus.PROGRESS.equals(status)) {
|
|
|
- List<MetaUserTaskProgress> metaUserTaskProgresses = metaUserTaskProgressRepo.findAllByMetaTaskToUserIdAndDel(metaTaskToUser.getId(), false);
|
|
|
- if (CollectionUtils.isEmpty(metaUserTaskProgresses)) {
|
|
|
- metaTaskToUser.setProcess(PREFIX.concat(value));
|
|
|
- break;
|
|
|
- }
|
|
|
- metaTaskToUser.setProcess(String.valueOf(metaUserTaskProgresses.size()).concat(" / ").concat(value));
|
|
|
+ List<MetaUserTaskProgress> accumulate = metaUserTaskProgressRepo.findAllByMetaTaskToUserIdAndDel(metaTaskToUser.getId(), false);
|
|
|
+ if (CollectionUtils.isEmpty(accumulate)) {
|
|
|
+ metaTaskToUser.setProcess(PREFIX.concat(value));
|
|
|
+ break;
|
|
|
}
|
|
|
- setCommonProgress(metaTaskToUser);
|
|
|
+ metaTaskToUser.setProcess(String.valueOf(accumulate.size()).concat(" / ").concat(value));
|
|
|
break;
|
|
|
default:
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- private void setCommonProgress(MetaTaskToUser metaTaskToUser) {
|
|
|
- if (MetaTaskStatus.COMPLETION.equals(metaTaskToUser.getStatus())) {
|
|
|
- metaTaskToUser.setProcess(MetaTaskStatus.COMPLETION.getDescription());
|
|
|
- return;
|
|
|
- }
|
|
|
- if (MetaTaskStatus.FINISH.equals(metaTaskToUser.getStatus())) {
|
|
|
- metaTaskToUser.setProcess(MetaTaskStatus.FINISH.getDescription());
|
|
|
- }
|
|
|
- }
|
|
|
|
|
|
- private int countSignIn(String value, MetaTaskToUser metaTaskToUser) {
|
|
|
+ /**
|
|
|
+ * 计算累计签到天数
|
|
|
+ *
|
|
|
+ * @param value 开始日期配置
|
|
|
+ * @param metaTaskToUserId 用户领取任务记录id
|
|
|
+ * @return 累计签到天数
|
|
|
+ */
|
|
|
+ private int countSignIn(String value, Long metaTaskToUserId) {
|
|
|
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
|
|
|
LocalDateTime startTime = LocalDate.parse(value, formatter).atStartOfDay();
|
|
|
LocalDateTime endTime = LocalDateTime.now();
|
|
|
- List<MetaUserTaskProgress> metaUserTaskProgresses = metaUserTaskProgressRepo.findAllByMetaTaskToUserIdAndDelAndCreatedAtBetweenOrderByCreatedAtDesc(metaTaskToUser.getId(), false, startTime, endTime);
|
|
|
+ List<MetaUserTaskProgress> metaUserTaskProgresses = metaUserTaskProgressRepo.findAllByMetaTaskToUserIdAndDelAndCreatedAtBetweenOrderByCreatedAtDesc(metaTaskToUserId, false, startTime, endTime);
|
|
|
int num = 0;
|
|
|
if (CollectionUtils.isEmpty(metaUserTaskProgresses)) {
|
|
|
return num;
|