Browse Source

每月任务

master
张彭杰 3 weeks ago
parent
commit
02fb70d764
3 changed files with 86 additions and 66 deletions
  1. 62
      dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/utc/UserTaskCompleteEventHandler.java
  2. 26
      dating-agency-mall-server/src/main/java/com/qniao/dam/query/tasktemplate/impl/TaskTemplateQueryServiceImpl.java
  3. 64
      dating-agency-mall-server/src/main/java/com/qniao/dam/query/utc/impl/UserTaskCompleteQueryServiceImpl.java

62
dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/utc/UserTaskCompleteEventHandler.java

@ -172,38 +172,40 @@ public class UserTaskCompleteEventHandler extends BaseApplicationService {
TaskTemplate taskTemplate = taskTemplateQueryService.queryBy(taskGroup, taskType, stageCode);
if (Objects.nonNull(taskTemplate)) {
Tuple tuple = taskTemplateQueryService.getTaskDate(taskType, liveMatchmaker.getCreateTime());
UserTaskComplete userTaskComplete = userTaskCompleteQueryService.queryBy(userId, taskTemplate.getId(), tuple.get(0), tuple.get(1));
if (Objects.isNull(userTaskComplete)) {
userTaskComplete = UserTaskComplete.init(userId, taskTemplate.getId(), tuple.get(0), tuple.get(1));
}
//未完成
if (!userTaskComplete.getCompleteStatus()) {
List<SubTaskTemplate> subTaskTemplateList = taskTemplateQueryService.getSubList(userTaskComplete.getTaskTemplateId());
if (CollUtil.isNotEmpty(subTaskTemplateList)) {
boolean completeStatus = true;
for (SubTaskTemplate subTaskTemplate : subTaskTemplateList) {
int completeCount = userDailyTaskProgressQueryService.count(userId, subTaskTemplate.getSubTaskType(), tuple.get(0), tuple.get(1));
if (completeCount < subTaskTemplate.getRequiredCount()) {
completeStatus = false;
break;
if (Objects.nonNull(tuple.get(0))) {
UserTaskComplete userTaskComplete = userTaskCompleteQueryService.queryBy(userId, taskTemplate.getId(), tuple.get(0), tuple.get(1));
if (Objects.isNull(userTaskComplete)) {
userTaskComplete = UserTaskComplete.init(userId, taskTemplate.getId(), tuple.get(0), tuple.get(1));
}
//未完成
if (!userTaskComplete.getCompleteStatus()) {
List<SubTaskTemplate> subTaskTemplateList = taskTemplateQueryService.getSubList(userTaskComplete.getTaskTemplateId());
if (CollUtil.isNotEmpty(subTaskTemplateList)) {
boolean completeStatus = true;
for (SubTaskTemplate subTaskTemplate : subTaskTemplateList) {
int completeCount = userDailyTaskProgressQueryService.count(userId, subTaskTemplate.getSubTaskType(), tuple.get(0), tuple.get(1));
if (completeCount < subTaskTemplate.getRequiredCount()) {
completeStatus = false;
break;
}
}
}
if (completeStatus) {
//已完成
BigDecimal revenue = new BigDecimal(taskTemplate.getRewardValue());
WalletAccount walletAccount = null;
if (revenue.compareTo(BigDecimal.ZERO) > 0) {
walletAccount = walletAccountQueryService.queryByType(userTaskComplete.getUserId(), IdentityTypeEnum.INDIVIDUAL);
BigDecimal originalBalance = walletAccount.getTotalBalance();
walletAccount.setAvailableBalance(walletAccount.getAvailableBalance().add(revenue));
walletAccount.setTotalBalance(walletAccount.getAvailableBalance().add(walletAccount.getFrozenBalance()));
WalletAccountRecord walletAccountRecord = WalletAccountRecord.build(TradeTypeEnum.TASK_REWARD, revenue, true, originalBalance, walletAccount.getTotalBalance());
walletAccount.setRecordList(Collections.singletonList(walletAccountRecord));
if (completeStatus) {
//已完成
BigDecimal revenue = new BigDecimal(taskTemplate.getRewardValue());
WalletAccount walletAccount = null;
if (revenue.compareTo(BigDecimal.ZERO) > 0) {
walletAccount = walletAccountQueryService.queryByType(userTaskComplete.getUserId(), IdentityTypeEnum.INDIVIDUAL);
BigDecimal originalBalance = walletAccount.getTotalBalance();
walletAccount.setAvailableBalance(walletAccount.getAvailableBalance().add(revenue));
walletAccount.setTotalBalance(walletAccount.getAvailableBalance().add(walletAccount.getFrozenBalance()));
WalletAccountRecord walletAccountRecord = WalletAccountRecord.build(TradeTypeEnum.TASK_REWARD, revenue, true, originalBalance, walletAccount.getTotalBalance());
walletAccount.setRecordList(Collections.singletonList(walletAccountRecord));
}
completeUserTaskCompleteDomainService.handle(userTaskComplete, walletAccount);
} else {
//未完成
userTaskCompleteAggregate.edit(userTaskComplete);
}
completeUserTaskCompleteDomainService.handle(userTaskComplete, walletAccount);
} else {
//未完成
userTaskCompleteAggregate.edit(userTaskComplete);
}
}
}

26
dating-agency-mall-server/src/main/java/com/qniao/dam/query/tasktemplate/impl/TaskTemplateQueryServiceImpl.java

@ -13,6 +13,7 @@ import com.qniao.dam.infrastructure.persistent.dao.tasktemplate.SubTaskTemplateD
import com.qniao.dam.infrastructure.persistent.dao.tasktemplate.TaskTemplateDao;
import com.qniao.dam.query.tasktemplate.TaskTemplateQueryService;
import com.qniao.framework.utils.TypeConvertUtils;
import com.sun.org.apache.bcel.internal.generic.IF_ACMPEQ;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
@ -48,15 +49,30 @@ public class TaskTemplateQueryServiceImpl implements TaskTemplateQueryService {
taskEndDate = LocalDate.now();
break;
case WEEKLY_TASK:
taskStartDate = LocalDate.now().with(TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY));
taskEndDate = LocalDate.now().with(TemporalAdjusters.nextOrSame(DayOfWeek.SUNDAY));
//暂时只有首周
//taskStartDate = LocalDate.now().with(TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY));
//taskEndDate = LocalDate.now().with(TemporalAdjusters.nextOrSame(DayOfWeek.SUNDAY));
taskStartDate = createTime.toLocalDate();
taskEndDate = taskStartDate.plusDays(7);
if (taskEndDate.isBefore(LocalDate.now())) {
taskStartDate = null;
taskEndDate = null;
}
break;
case MONTHLY_TASK:
LocalDate now = LocalDate.now();
taskStartDate = createTime.toLocalDate();
taskEndDate = taskStartDate.plusDays(30);
while (taskEndDate.isBefore(LocalDate.now())) {
taskStartDate = taskEndDate;
taskEndDate = taskStartDate.plusDays(30);
if (taskEndDate.isBefore(now)) {
taskStartDate = taskEndDate.plusDays(1);
if (taskStartDate.getYear() == now.getYear() && taskStartDate.getMonth() == now.getMonth() && taskEndDate.getDayOfMonth() != 1) {
taskStartDate = null;
taskEndDate = null;
} else {
taskStartDate = now.withDayOfMonth(1);
int lastDay = now.lengthOfMonth();
taskEndDate = now.withDayOfMonth(lastDay);
}
}
break;
}

64
dating-agency-mall-server/src/main/java/com/qniao/dam/query/utc/impl/UserTaskCompleteQueryServiceImpl.java

@ -52,39 +52,41 @@ public class UserTaskCompleteQueryServiceImpl implements UserTaskCompleteQuerySe
TaskGroupEnum taskGroup = liveMatchmakerQueryService.getTaskGroup(liveMatchmaker);
TaskTypeEnum taskType = TaskTypeEnum.get(queryParams.getTaskType());
Tuple tuple = taskTemplateQueryService.getTaskDate(taskType, liveMatchmaker.getCreateTime());
TaskStageEnum stageCode = TaskStageEnum.count(liveMatchmaker.getCreateTime().toLocalDate());
TaskTemplate taskTemplate = taskTemplateQueryService.queryBy(taskGroup, taskType, stageCode);
if (Objects.nonNull(taskTemplate)) {
UserTaskComplete userTaskComplete = queryBy(queryParams.getQueryUserId(), taskTemplate.getId(), tuple.get(0), tuple.get(1));
if (Objects.isNull(userTaskComplete)) {
vo = TypeConvertUtils.convert(taskTemplate, UserGetUserTaskCompleteVo.class);
vo.setTaskTemplateId(taskTemplate.getId());
vo.setTaskStartDate(tuple.get(0));
vo.setTaskEndDate(tuple.get(1));
} else {
vo = TypeConvertUtils.convert(taskTemplate, UserGetUserTaskCompleteVo.class);
vo.setTaskTemplateId(taskTemplate.getId());
vo.setTaskStartDate(tuple.get(0));
vo.setTaskEndDate(tuple.get(1));
vo.setUserTaskCompleteId(userTaskComplete.getId());
vo.setCompleteStatus(userTaskComplete.getCompleteStatus());
vo.setRewardReceiveStatus(userTaskComplete.getRewardReceiveStatus());
vo.setCompleteTime(userTaskComplete.getCompleteTime());
if (Objects.nonNull(tuple.get(0))){
TaskStageEnum stageCode = TaskStageEnum.count(liveMatchmaker.getCreateTime().toLocalDate());
TaskTemplate taskTemplate = taskTemplateQueryService.queryBy(taskGroup, taskType, stageCode);
if (Objects.nonNull(taskTemplate)) {
UserTaskComplete userTaskComplete = queryBy(queryParams.getQueryUserId(), taskTemplate.getId(), tuple.get(0), tuple.get(1));
if (Objects.isNull(userTaskComplete)) {
vo = TypeConvertUtils.convert(taskTemplate, UserGetUserTaskCompleteVo.class);
vo.setTaskTemplateId(taskTemplate.getId());
vo.setTaskStartDate(tuple.get(0));
vo.setTaskEndDate(tuple.get(1));
} else {
vo = TypeConvertUtils.convert(taskTemplate, UserGetUserTaskCompleteVo.class);
vo.setTaskTemplateId(taskTemplate.getId());
vo.setTaskStartDate(tuple.get(0));
vo.setTaskEndDate(tuple.get(1));
vo.setUserTaskCompleteId(userTaskComplete.getId());
vo.setCompleteStatus(userTaskComplete.getCompleteStatus());
vo.setRewardReceiveStatus(userTaskComplete.getRewardReceiveStatus());
vo.setCompleteTime(userTaskComplete.getCompleteTime());
}
}
}
if (Objects.nonNull(vo)) {
//补充子任务进度
List<SubTaskTemplate> subTaskTemplateList = taskTemplateQueryService.getSubList(taskTemplate.getId());
if (CollUtil.isNotEmpty(subTaskTemplateList)) {
List<UserGetUserSubTaskCompleteVo> subList = new ArrayList<>();
for (SubTaskTemplate subTaskTemplate : subTaskTemplateList) {
UserGetUserSubTaskCompleteVo subTaskCompleteVo = TypeConvertUtils.convert(subTaskTemplate, UserGetUserSubTaskCompleteVo.class);
int completeCount = userDailyTaskProgressQueryService.count(queryParams.getQueryUserId(), subTaskTemplate.getSubTaskType(), tuple.get(0), tuple.get(1));
subTaskCompleteVo.setCompleteCount(completeCount);
subTaskCompleteVo.setCompleteStatus(completeCount >= subTaskTemplate.getRequiredCount());
subList.add(subTaskCompleteVo);
if (Objects.nonNull(vo)) {
//补充子任务进度
List<SubTaskTemplate> subTaskTemplateList = taskTemplateQueryService.getSubList(taskTemplate.getId());
if (CollUtil.isNotEmpty(subTaskTemplateList)) {
List<UserGetUserSubTaskCompleteVo> subList = new ArrayList<>();
for (SubTaskTemplate subTaskTemplate : subTaskTemplateList) {
UserGetUserSubTaskCompleteVo subTaskCompleteVo = TypeConvertUtils.convert(subTaskTemplate, UserGetUserSubTaskCompleteVo.class);
int completeCount = userDailyTaskProgressQueryService.count(queryParams.getQueryUserId(), subTaskTemplate.getSubTaskType(), tuple.get(0), tuple.get(1));
subTaskCompleteVo.setCompleteCount(completeCount);
subTaskCompleteVo.setCompleteStatus(completeCount >= subTaskTemplate.getRequiredCount());
subList.add(subTaskCompleteVo);
}
vo.setSubList(subList);
}
vo.setSubList(subList);
}
}
}

Loading…
Cancel
Save