房间金币大放送-新增获取当前可领取奖励数量
This commit is contained in:
parent
2b0335cbc4
commit
e148da7e7f
@ -3,6 +3,7 @@ package com.red.circle.other.adapter.app.task;
|
||||
import com.red.circle.common.business.dto.cmd.AppExtCommand;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import com.red.circle.other.app.dto.clientobject.task.RoomDailyTaskClaimCO;
|
||||
import com.red.circle.other.app.dto.clientobject.task.RoomDailyTaskClaimableCountCO;
|
||||
import com.red.circle.other.app.dto.clientobject.task.RoomDailyTaskListCO;
|
||||
import com.red.circle.other.app.dto.cmd.task.RoomDailyTaskClaimCmd;
|
||||
import com.red.circle.other.app.service.task.RoomDailyTaskService;
|
||||
@ -44,4 +45,15 @@ public class RoomDailyTaskRestController {
|
||||
public RoomDailyTaskClaimCO claimReward(@RequestBody @Validated RoomDailyTaskClaimCmd cmd) {
|
||||
return roomDailyTaskService.claimReward(cmd);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取当前可领取奖励数量
|
||||
* @eo.name 获取可领取奖励数量
|
||||
* @eo.url /claimable-count
|
||||
* @eo.method get
|
||||
*/
|
||||
@GetMapping("/claimable-count")
|
||||
public RoomDailyTaskClaimableCountCO getClaimableCount(AppExtCommand cmd) {
|
||||
return roomDailyTaskService.getClaimableCount(cmd.getReqUserId());
|
||||
}
|
||||
}
|
||||
|
||||
@ -0,0 +1,34 @@
|
||||
package com.red.circle.other.app.command.task;
|
||||
|
||||
import com.red.circle.other.app.dto.clientobject.task.RoomDailyTaskClaimableCountCO;
|
||||
import com.red.circle.other.infra.database.rds.entity.task.RoomDailyTaskProgress;
|
||||
import com.red.circle.other.infra.database.rds.service.RoomDailyTaskDatabaseService;
|
||||
import com.red.circle.tool.core.date.ZonedDateTimeAsiaRiyadhUtils;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 查询用户当日可领取奖励数量
|
||||
*/
|
||||
@Component
|
||||
@RequiredArgsConstructor
|
||||
public class RoomDailyTaskClaimableCountQryExe {
|
||||
|
||||
private final RoomDailyTaskDatabaseService taskDatabaseService;
|
||||
|
||||
public RoomDailyTaskClaimableCountCO execute(Long userId) {
|
||||
LocalDate today = ZonedDateTimeAsiaRiyadhUtils.now().toLocalDate();
|
||||
List<RoomDailyTaskProgress> progressList = taskDatabaseService.listProgressByUser(userId, today);
|
||||
|
||||
int claimableCount = progressList.stream()
|
||||
.mapToInt(p -> Math.max(0, p.getMaxTierCompleted() - p.getMaxTierClaimed()))
|
||||
.sum();
|
||||
|
||||
RoomDailyTaskClaimableCountCO co = new RoomDailyTaskClaimableCountCO();
|
||||
co.setClaimableCount(claimableCount);
|
||||
return co;
|
||||
}
|
||||
}
|
||||
@ -1,8 +1,10 @@
|
||||
package com.red.circle.other.app.service.task;
|
||||
|
||||
import com.red.circle.other.app.command.task.RoomDailyTaskClaimExe;
|
||||
import com.red.circle.other.app.command.task.RoomDailyTaskClaimableCountQryExe;
|
||||
import com.red.circle.other.app.command.task.RoomDailyTaskQueryExe;
|
||||
import com.red.circle.other.app.dto.clientobject.task.RoomDailyTaskClaimCO;
|
||||
import com.red.circle.other.app.dto.clientobject.task.RoomDailyTaskClaimableCountCO;
|
||||
import com.red.circle.other.app.dto.clientobject.task.RoomDailyTaskListCO;
|
||||
import com.red.circle.other.app.dto.cmd.task.RoomDailyTaskClaimCmd;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
@ -14,6 +16,7 @@ public class RoomDailyTaskServiceImpl implements RoomDailyTaskService {
|
||||
|
||||
private final RoomDailyTaskQueryExe queryExe;
|
||||
private final RoomDailyTaskClaimExe claimExe;
|
||||
private final RoomDailyTaskClaimableCountQryExe claimableCountQryExe;
|
||||
|
||||
@Override
|
||||
public RoomDailyTaskListCO getTaskList(Long userId, Integer taskCategory) {
|
||||
@ -24,4 +27,9 @@ public class RoomDailyTaskServiceImpl implements RoomDailyTaskService {
|
||||
public RoomDailyTaskClaimCO claimReward(RoomDailyTaskClaimCmd cmd) {
|
||||
return claimExe.execute(cmd);
|
||||
}
|
||||
|
||||
@Override
|
||||
public RoomDailyTaskClaimableCountCO getClaimableCount(Long userId) {
|
||||
return claimableCountQryExe.execute(userId);
|
||||
}
|
||||
}
|
||||
|
||||
@ -0,0 +1,13 @@
|
||||
package com.red.circle.other.app.dto.clientobject.task;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* 每日任务可领取数量
|
||||
*/
|
||||
@Data
|
||||
public class RoomDailyTaskClaimableCountCO {
|
||||
|
||||
/** 可领取奖励数量(已完成未领取的档位总数) */
|
||||
private Integer claimableCount;
|
||||
}
|
||||
@ -1,6 +1,7 @@
|
||||
package com.red.circle.other.app.service.task;
|
||||
|
||||
import com.red.circle.other.app.dto.clientobject.task.RoomDailyTaskClaimCO;
|
||||
import com.red.circle.other.app.dto.clientobject.task.RoomDailyTaskClaimableCountCO;
|
||||
import com.red.circle.other.app.dto.clientobject.task.RoomDailyTaskListCO;
|
||||
import com.red.circle.other.app.dto.cmd.task.RoomDailyTaskClaimCmd;
|
||||
|
||||
@ -9,4 +10,6 @@ public interface RoomDailyTaskService {
|
||||
RoomDailyTaskListCO getTaskList(Long userId, Integer taskCategory);
|
||||
|
||||
RoomDailyTaskClaimCO claimReward(RoomDailyTaskClaimCmd cmd);
|
||||
|
||||
RoomDailyTaskClaimableCountCO getClaimableCount(Long userId);
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user