活动
This commit is contained in:
parent
40dfc9e002
commit
de823791af
@ -3,7 +3,9 @@ package com.red.circle.other.inner.endpoint.activity.api;
|
||||
import com.red.circle.framework.dto.PageResult;
|
||||
import com.red.circle.framework.dto.ResultResponse;
|
||||
import com.red.circle.other.inner.model.dto.activity.RoomContributionActivityCountDTO;
|
||||
import java.util.List;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
|
||||
/**
|
||||
@ -30,4 +32,32 @@ public interface RoomContributionActivityCountClientApi {
|
||||
@RequestParam("limitSize") Integer limitSize
|
||||
);
|
||||
|
||||
/**
|
||||
* 上周未发放奖励金币的房间流水数据.
|
||||
*/
|
||||
@GetMapping("/listLastWeek")
|
||||
ResultResponse<List<RoomContributionActivityCountDTO>> listLastWeek();
|
||||
|
||||
/**
|
||||
* 当前周房间流水排行榜.
|
||||
*/
|
||||
@GetMapping("/listCurrentWeek")
|
||||
ResultResponse<List<RoomContributionActivityCountDTO>> listCurrentWeek(
|
||||
@RequestParam(value = "limit", required = false) Integer limit
|
||||
);
|
||||
|
||||
/**
|
||||
* 指定房间当前周流水数据.
|
||||
*/
|
||||
@GetMapping("/currentWeek")
|
||||
ResultResponse<RoomContributionActivityCountDTO> getCurrentWeek(
|
||||
@RequestParam("roomId") Long roomId
|
||||
);
|
||||
|
||||
/**
|
||||
* 标记房间流水奖励金币已发放.
|
||||
*/
|
||||
@PostMapping("/rewardCoinsSent")
|
||||
ResultResponse<Boolean> updateRewardCoinsSent(@RequestParam("id") String id);
|
||||
|
||||
}
|
||||
|
||||
@ -50,6 +50,11 @@ public class RoomContributionActivityCountDTO extends DTO implements Serializabl
|
||||
*/
|
||||
private Boolean received;
|
||||
|
||||
/**
|
||||
* 奖励金币是否已发放.
|
||||
*/
|
||||
private Boolean rewardCoinsSent;
|
||||
|
||||
/**
|
||||
* 比例.
|
||||
*/
|
||||
|
||||
@ -298,7 +298,7 @@ public class ResidentInviteActivityServiceImpl implements ResidentInviteActivity
|
||||
private void validateConfig(InviteCampaignConfigSaveCmd cmd) {
|
||||
ResponseAssert.notNull(CommonErrorCode.DATA_ERROR, cmd.getAntiCheat());
|
||||
validateRewardItem("inviterBindReward", cmd.getInviterBindReward());
|
||||
validateRewardItem("inviteeBindReward", cmd.getInviteeBindReward());
|
||||
validateRewardItemOptional("inviteeBindReward", cmd.getInviteeBindReward());
|
||||
validateRuleItems(cmd.getInviteeRechargeRules());
|
||||
validateRuleItems(cmd.getInviterValidCountRules());
|
||||
validateRuleItems(cmd.getInviterTotalRechargeRules());
|
||||
@ -334,6 +334,13 @@ public class ResidentInviteActivityServiceImpl implements ResidentInviteActivity
|
||||
goldAmount > 0 || item.getRewardGroupId() != null);
|
||||
}
|
||||
|
||||
private void validateRewardItemOptional(String fieldName,
|
||||
InviteCampaignConfigSaveCmd.RewardItemCmd item) {
|
||||
ResponseAssert.notNull(CommonErrorCode.DATA_ERROR, item);
|
||||
long goldAmount = Optional.ofNullable(item.getGoldAmount()).orElse(0L);
|
||||
ResponseAssert.isTrue(CommonErrorCode.DATA_ERROR, goldAmount >= 0);
|
||||
}
|
||||
|
||||
private void validateReusableRuleIds(List<InviteCampaignRewardRule> existingRules,
|
||||
InviteCampaignConfigSaveCmd cmd) {
|
||||
Map<Long, InviteCampaignRewardRule> existingRuleMap = existingRules.stream()
|
||||
|
||||
@ -98,12 +98,15 @@ public interface RoomContributionActivityCountService {
|
||||
boolean updateRewardCoinsSent(String id);
|
||||
|
||||
/**
|
||||
* 获取所有房间上周贡献数据(未领取状态)
|
||||
*
|
||||
* @return 所有房间上周贡献数据列表
|
||||
* 获取所有房间上周未发放奖励金币的贡献数据.
|
||||
*/
|
||||
List<RoomContributionActivityCount> getAllRoomsLastWeekData();
|
||||
|
||||
/**
|
||||
* 获取当前周房间流水排行榜.
|
||||
*/
|
||||
List<RoomContributionActivityCount> getAllRoomsCurrentWeekData(Integer limit);
|
||||
|
||||
/**
|
||||
* 根据房间ID和日期查询数据
|
||||
*
|
||||
|
||||
@ -14,6 +14,7 @@ import com.red.circle.tool.core.date.ZonedDateTimeAsiaRiyadhUtils;
|
||||
import com.red.circle.tool.core.text.StringUtils;
|
||||
import java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.Comparator;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
@ -294,12 +295,32 @@ public class RoomContributionActivityCountServiceImpl implements
|
||||
@Override
|
||||
public List<RoomContributionActivityCount> getAllRoomsLastWeekData() {
|
||||
// 获取上周的 dateNumber
|
||||
Integer lastWeekDateNumber = ZonedDateTimeAsiaRiyadhUtils.getThisMonday() - 7;
|
||||
|
||||
Criteria criteria = Criteria.where("dateNumber").is(lastWeekDateNumber)
|
||||
.and("received").is(Boolean.FALSE);
|
||||
|
||||
return mongoTemplate.find(Query.query(criteria), RoomContributionActivityCount.class);
|
||||
Integer lastWeekDateNumber = Integer.parseInt(
|
||||
ZonedDateTimeAsiaRiyadhUtils.getLastWeekMonday()
|
||||
.format(DateTimeFormatter.ofPattern("yyyyMMdd"))
|
||||
);
|
||||
|
||||
Criteria criteria = new Criteria().andOperator(
|
||||
Criteria.where("dateNumber").is(lastWeekDateNumber),
|
||||
new Criteria().orOperator(
|
||||
Criteria.where("rewardCoinsSent").exists(false),
|
||||
Criteria.where("rewardCoinsSent").ne(Boolean.TRUE)
|
||||
)
|
||||
);
|
||||
|
||||
return mongoTemplate.find(
|
||||
Query.query(criteria).with(Sort.by(Sort.Order.desc("contributionValue"))),
|
||||
RoomContributionActivityCount.class
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<RoomContributionActivityCount> getAllRoomsCurrentWeekData(Integer limit) {
|
||||
Integer currentWeekDateNumber = ZonedDateTimeAsiaRiyadhUtils.getThisMonday();
|
||||
Query query = Query.query(Criteria.where("dateNumber").is(currentWeekDateNumber))
|
||||
.with(Sort.by(Sort.Order.desc("contributionValue")))
|
||||
.limit(normalizeRankingLimit(limit));
|
||||
return mongoTemplate.find(query, RoomContributionActivityCount.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -315,4 +336,11 @@ public class RoomContributionActivityCountServiceImpl implements
|
||||
return Optional.ofNullable(result);
|
||||
}
|
||||
|
||||
private int normalizeRankingLimit(Integer limit) {
|
||||
if (Objects.isNull(limit) || limit <= 0) {
|
||||
return 200;
|
||||
}
|
||||
return Math.min(limit, 1000);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -4,6 +4,7 @@ import com.red.circle.framework.core.convertor.ConvertorModel;
|
||||
import com.red.circle.framework.dto.PageResult;
|
||||
import com.red.circle.other.infra.database.mongo.entity.activity.RoomContributionActivityCount;
|
||||
import com.red.circle.other.inner.model.dto.activity.RoomContributionActivityCountDTO;
|
||||
import java.util.List;
|
||||
import org.mapstruct.Mapper;
|
||||
|
||||
/**
|
||||
@ -15,4 +16,10 @@ public interface RoomContributionActivityCountInnerConvertor {
|
||||
PageResult<RoomContributionActivityCountDTO> toPageRoomContributionActivityCountDTO(
|
||||
PageResult<RoomContributionActivityCount> pageResult);
|
||||
|
||||
List<RoomContributionActivityCountDTO> toListRoomContributionActivityCountDTO(
|
||||
List<RoomContributionActivityCount> list);
|
||||
|
||||
RoomContributionActivityCountDTO toRoomContributionActivityCountDTO(
|
||||
RoomContributionActivityCount item);
|
||||
|
||||
}
|
||||
|
||||
@ -5,6 +5,7 @@ import com.red.circle.framework.dto.ResultResponse;
|
||||
import com.red.circle.other.app.inner.service.activity.RoomContributionActivityCountClientService;
|
||||
import com.red.circle.other.inner.endpoint.activity.api.RoomContributionActivityCountClientApi;
|
||||
import com.red.circle.other.inner.model.dto.activity.RoomContributionActivityCountDTO;
|
||||
import java.util.List;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.http.MediaType;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
@ -33,4 +34,28 @@ public class RoomContributionActivityCountClientEndpoint implements
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResultResponse<List<RoomContributionActivityCountDTO>> listLastWeek() {
|
||||
return ResultResponse.success(roomContributionActivityCountClientService.listLastWeek());
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResultResponse<List<RoomContributionActivityCountDTO>> listCurrentWeek(Integer limit) {
|
||||
return ResultResponse.success(roomContributionActivityCountClientService.listCurrentWeek(limit));
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResultResponse<RoomContributionActivityCountDTO> getCurrentWeek(Long roomId) {
|
||||
return ResultResponse.success(
|
||||
roomContributionActivityCountClientService.getCurrentWeek(roomId)
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResultResponse<Boolean> updateRewardCoinsSent(String id) {
|
||||
return ResultResponse.success(
|
||||
roomContributionActivityCountClientService.updateRewardCoinsSent(id)
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -2,6 +2,7 @@ package com.red.circle.other.app.inner.service.activity;
|
||||
|
||||
import com.red.circle.framework.dto.PageResult;
|
||||
import com.red.circle.other.inner.model.dto.activity.RoomContributionActivityCountDTO;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 房间贡献.
|
||||
@ -22,4 +23,24 @@ public interface RoomContributionActivityCountClientService {
|
||||
PageResult<RoomContributionActivityCountDTO> pageReceived(Long roomId, Integer current,
|
||||
Integer limitSize);
|
||||
|
||||
/**
|
||||
* 上周未发放奖励金币的房间流水数据.
|
||||
*/
|
||||
List<RoomContributionActivityCountDTO> listLastWeek();
|
||||
|
||||
/**
|
||||
* 当前周房间流水排行榜.
|
||||
*/
|
||||
List<RoomContributionActivityCountDTO> listCurrentWeek(Integer limit);
|
||||
|
||||
/**
|
||||
* 指定房间当前周流水数据.
|
||||
*/
|
||||
RoomContributionActivityCountDTO getCurrentWeek(Long roomId);
|
||||
|
||||
/**
|
||||
* 标记房间流水奖励金币已发放.
|
||||
*/
|
||||
Boolean updateRewardCoinsSent(String id);
|
||||
|
||||
}
|
||||
|
||||
@ -5,6 +5,8 @@ import com.red.circle.other.app.inner.convertor.activity.RoomContributionActivit
|
||||
import com.red.circle.other.app.inner.service.activity.RoomContributionActivityCountClientService;
|
||||
import com.red.circle.other.infra.database.mongo.service.activity.RoomContributionActivityCountService;
|
||||
import com.red.circle.other.inner.model.dto.activity.RoomContributionActivityCountDTO;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@ -29,4 +31,33 @@ public class RoomContributionActivityCountClientServiceImpl implements
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<RoomContributionActivityCountDTO> listLastWeek() {
|
||||
return roomContributionActivityCountInnerConvertor.toListRoomContributionActivityCountDTO(
|
||||
roomContributionActivityCountService.getAllRoomsLastWeekData()
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<RoomContributionActivityCountDTO> listCurrentWeek(Integer limit) {
|
||||
return roomContributionActivityCountInnerConvertor.toListRoomContributionActivityCountDTO(
|
||||
roomContributionActivityCountService.getAllRoomsCurrentWeekData(limit)
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
public RoomContributionActivityCountDTO getCurrentWeek(Long roomId) {
|
||||
if (Objects.isNull(roomId)) {
|
||||
return null;
|
||||
}
|
||||
return roomContributionActivityCountInnerConvertor.toRoomContributionActivityCountDTO(
|
||||
roomContributionActivityCountService.getThisWeekData(roomId)
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean updateRewardCoinsSent(String id) {
|
||||
return roomContributionActivityCountService.updateRewardCoinsSent(id);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user