roomDailyTask 更新
This commit is contained in:
parent
9fded39a3d
commit
05af847f40
@ -234,6 +234,16 @@ public enum UserErrorCode implements IResponseErrorCode {
|
|||||||
*/
|
*/
|
||||||
ACCOUNT_LOGOUT(4077, "Account has been deactivated"),
|
ACCOUNT_LOGOUT(4077, "Account has been deactivated"),
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 任务不存在.
|
||||||
|
*/
|
||||||
|
TASK_NOT_FOUND(4078, "Task not found"),
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 任务档位不存在.
|
||||||
|
*/
|
||||||
|
TASK_TIER_NOT_FOUND(4079, "Task tier not found"),
|
||||||
|
|
||||||
;
|
;
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -1,6 +1,7 @@
|
|||||||
package com.red.circle.other.adapter.app.task;
|
package com.red.circle.other.adapter.app.task;
|
||||||
|
|
||||||
import com.red.circle.common.business.dto.cmd.AppExtCommand;
|
import com.red.circle.common.business.dto.cmd.AppExtCommand;
|
||||||
|
import jakarta.validation.constraints.NotNull;
|
||||||
import com.red.circle.other.app.dto.clientobject.task.RoomDailyTaskCO;
|
import com.red.circle.other.app.dto.clientobject.task.RoomDailyTaskCO;
|
||||||
import com.red.circle.other.app.dto.clientobject.task.RoomDailyTaskClaimCO;
|
import com.red.circle.other.app.dto.clientobject.task.RoomDailyTaskClaimCO;
|
||||||
import com.red.circle.other.app.dto.cmd.task.RoomDailyTaskClaimCmd;
|
import com.red.circle.other.app.dto.cmd.task.RoomDailyTaskClaimCmd;
|
||||||
@ -28,8 +29,9 @@ public class RoomDailyTaskRestController {
|
|||||||
* @eo.method get
|
* @eo.method get
|
||||||
*/
|
*/
|
||||||
@GetMapping("/list")
|
@GetMapping("/list")
|
||||||
public List<RoomDailyTaskCO> getTaskList(AppExtCommand cmd) {
|
public List<RoomDailyTaskCO> getTaskList(AppExtCommand cmd,
|
||||||
return roomDailyTaskService.getTaskList(cmd.getReqUserId());
|
@RequestParam @NotNull(message = "任务分类不能为空") Integer taskCategory) {
|
||||||
|
return roomDailyTaskService.getTaskList(cmd.getReqUserId(), taskCategory);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
package com.red.circle.other.app.command.task;
|
package com.red.circle.other.app.command.task;
|
||||||
|
|
||||||
import com.red.circle.common.business.exception.BusinessException;
|
import com.red.circle.framework.core.asserts.ResponseAssert;
|
||||||
import com.red.circle.other.app.dto.clientobject.task.RoomDailyTaskClaimCO;
|
import com.red.circle.other.app.dto.clientobject.task.RoomDailyTaskClaimCO;
|
||||||
import com.red.circle.other.app.dto.cmd.task.RoomDailyTaskClaimCmd;
|
import com.red.circle.other.app.dto.cmd.task.RoomDailyTaskClaimCmd;
|
||||||
import com.red.circle.other.infra.database.rds.entity.task.RoomDailyTaskClaimRecord;
|
import com.red.circle.other.infra.database.rds.entity.task.RoomDailyTaskClaimRecord;
|
||||||
@ -8,6 +8,7 @@ import com.red.circle.other.infra.database.rds.entity.task.RoomDailyTaskConfig;
|
|||||||
import com.red.circle.other.infra.database.rds.entity.task.RoomDailyTaskProgress;
|
import com.red.circle.other.infra.database.rds.entity.task.RoomDailyTaskProgress;
|
||||||
import com.red.circle.other.infra.database.rds.entity.task.RoomDailyTaskTier;
|
import com.red.circle.other.infra.database.rds.entity.task.RoomDailyTaskTier;
|
||||||
import com.red.circle.other.infra.database.rds.service.RoomDailyTaskDatabaseService;
|
import com.red.circle.other.infra.database.rds.service.RoomDailyTaskDatabaseService;
|
||||||
|
import com.red.circle.other.inner.asserts.user.UserErrorCode;
|
||||||
import com.red.circle.tool.core.date.ZonedDateTimeAsiaRiyadhUtils;
|
import com.red.circle.tool.core.date.ZonedDateTimeAsiaRiyadhUtils;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
@ -36,27 +37,26 @@ public class RoomDailyTaskClaimExe {
|
|||||||
LocalDate today = ZonedDateTimeAsiaRiyadhUtils.now().toLocalDate();
|
LocalDate today = ZonedDateTimeAsiaRiyadhUtils.now().toLocalDate();
|
||||||
String bizNo = userId + ":" + taskCode + ":" + today + ":" + tierIndex;
|
String bizNo = userId + ":" + taskCode + ":" + today + ":" + tierIndex;
|
||||||
|
|
||||||
// 幂等校验
|
|
||||||
if (taskDatabaseService.existsClaimRecord(bizNo)) {
|
if (taskDatabaseService.existsClaimRecord(bizNo)) {
|
||||||
throw new BusinessException("该档位奖励已领取");
|
ResponseAssert.failure(UserErrorCode.AWARD_RECEIVED);
|
||||||
}
|
}
|
||||||
|
|
||||||
RoomDailyTaskConfig config = taskDatabaseService.getConfigByCode(taskCode);
|
RoomDailyTaskConfig config = taskDatabaseService.getConfigByCode(taskCode);
|
||||||
if (config == null) {
|
if (config == null) {
|
||||||
throw new BusinessException("任务不存在");
|
ResponseAssert.failure(UserErrorCode.TASK_NOT_FOUND);
|
||||||
}
|
}
|
||||||
|
|
||||||
RoomDailyTaskTier tier = taskDatabaseService.getTier(taskCode, tierIndex);
|
RoomDailyTaskTier tier = taskDatabaseService.getTier(taskCode, tierIndex);
|
||||||
if (tier == null) {
|
if (tier == null) {
|
||||||
throw new BusinessException("任务档位不存在");
|
ResponseAssert.failure(UserErrorCode.TASK_TIER_NOT_FOUND);
|
||||||
}
|
}
|
||||||
|
|
||||||
RoomDailyTaskProgress progress = taskDatabaseService.getProgress(userId, taskCode, today);
|
RoomDailyTaskProgress progress = taskDatabaseService.getProgress(userId, taskCode, today);
|
||||||
if (progress == null || progress.getMaxTierCompleted() < tierIndex) {
|
if (progress == null || progress.getMaxTierCompleted() < tierIndex) {
|
||||||
throw new BusinessException("该档位任务未完成");
|
ResponseAssert.failure(UserErrorCode.INCOMPLETE_TASK);
|
||||||
}
|
}
|
||||||
if (progress.getMaxTierClaimed() >= tierIndex) {
|
if (progress.getMaxTierClaimed() >= tierIndex) {
|
||||||
throw new BusinessException("该档位奖励已领取");
|
ResponseAssert.failure(UserErrorCode.AWARD_RECEIVED);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 更新领取状态
|
// 更新领取状态
|
||||||
|
|||||||
@ -26,8 +26,8 @@ public class RoomDailyTaskQueryExe {
|
|||||||
|
|
||||||
private final RoomDailyTaskDatabaseService taskDatabaseService;
|
private final RoomDailyTaskDatabaseService taskDatabaseService;
|
||||||
|
|
||||||
public List<RoomDailyTaskCO> execute(Long userId) {
|
public List<RoomDailyTaskCO> execute(Long userId, Integer taskCategory) {
|
||||||
List<RoomDailyTaskConfig> configs = taskDatabaseService.listEnabledConfigs();
|
List<RoomDailyTaskConfig> configs = taskDatabaseService.listEnabledConfigs(taskCategory);
|
||||||
if (CollectionUtils.isEmpty(configs)) {
|
if (CollectionUtils.isEmpty(configs)) {
|
||||||
return new ArrayList<>();
|
return new ArrayList<>();
|
||||||
}
|
}
|
||||||
|
|||||||
@ -18,8 +18,8 @@ public class RoomDailyTaskServiceImpl implements RoomDailyTaskService {
|
|||||||
private final RoomDailyTaskClaimExe claimExe;
|
private final RoomDailyTaskClaimExe claimExe;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<RoomDailyTaskCO> getTaskList(Long userId) {
|
public List<RoomDailyTaskCO> getTaskList(Long userId, Integer taskCategory) {
|
||||||
return queryExe.execute(userId);
|
return queryExe.execute(userId, taskCategory);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@ -8,7 +8,7 @@ import java.util.List;
|
|||||||
|
|
||||||
public interface RoomDailyTaskService {
|
public interface RoomDailyTaskService {
|
||||||
|
|
||||||
List<RoomDailyTaskCO> getTaskList(Long userId);
|
List<RoomDailyTaskCO> getTaskList(Long userId, Integer taskCategory);
|
||||||
|
|
||||||
RoomDailyTaskClaimCO claimReward(RoomDailyTaskClaimCmd cmd);
|
RoomDailyTaskClaimCO claimReward(RoomDailyTaskClaimCmd cmd);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -24,10 +24,11 @@ public class RoomDailyTaskDatabaseService {
|
|||||||
private final RoomDailyTaskProgressDAO progressDAO;
|
private final RoomDailyTaskProgressDAO progressDAO;
|
||||||
private final RoomDailyTaskClaimRecordDAO claimRecordDAO;
|
private final RoomDailyTaskClaimRecordDAO claimRecordDAO;
|
||||||
|
|
||||||
public List<RoomDailyTaskConfig> listEnabledConfigs() {
|
public List<RoomDailyTaskConfig> listEnabledConfigs(Integer taskCategory) {
|
||||||
return configDAO.selectList(
|
return configDAO.selectList(
|
||||||
new LambdaQueryWrapper<RoomDailyTaskConfig>()
|
new LambdaQueryWrapper<RoomDailyTaskConfig>()
|
||||||
.eq(RoomDailyTaskConfig::getStatus, 1)
|
.eq(RoomDailyTaskConfig::getStatus, 1)
|
||||||
|
.eq(RoomDailyTaskConfig::getTaskCategory, taskCategory)
|
||||||
.orderByAsc(RoomDailyTaskConfig::getSortOrder)
|
.orderByAsc(RoomDailyTaskConfig::getSortOrder)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user