活动
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.PageResult;
|
||||||
import com.red.circle.framework.dto.ResultResponse;
|
import com.red.circle.framework.dto.ResultResponse;
|
||||||
import com.red.circle.other.inner.model.dto.activity.RoomContributionActivityCountDTO;
|
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.GetMapping;
|
||||||
|
import org.springframework.web.bind.annotation.PostMapping;
|
||||||
import org.springframework.web.bind.annotation.RequestParam;
|
import org.springframework.web.bind.annotation.RequestParam;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -30,4 +32,32 @@ public interface RoomContributionActivityCountClientApi {
|
|||||||
@RequestParam("limitSize") Integer limitSize
|
@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 received;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 奖励金币是否已发放.
|
||||||
|
*/
|
||||||
|
private Boolean rewardCoinsSent;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 比例.
|
* 比例.
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -298,7 +298,7 @@ public class ResidentInviteActivityServiceImpl implements ResidentInviteActivity
|
|||||||
private void validateConfig(InviteCampaignConfigSaveCmd cmd) {
|
private void validateConfig(InviteCampaignConfigSaveCmd cmd) {
|
||||||
ResponseAssert.notNull(CommonErrorCode.DATA_ERROR, cmd.getAntiCheat());
|
ResponseAssert.notNull(CommonErrorCode.DATA_ERROR, cmd.getAntiCheat());
|
||||||
validateRewardItem("inviterBindReward", cmd.getInviterBindReward());
|
validateRewardItem("inviterBindReward", cmd.getInviterBindReward());
|
||||||
validateRewardItem("inviteeBindReward", cmd.getInviteeBindReward());
|
validateRewardItemOptional("inviteeBindReward", cmd.getInviteeBindReward());
|
||||||
validateRuleItems(cmd.getInviteeRechargeRules());
|
validateRuleItems(cmd.getInviteeRechargeRules());
|
||||||
validateRuleItems(cmd.getInviterValidCountRules());
|
validateRuleItems(cmd.getInviterValidCountRules());
|
||||||
validateRuleItems(cmd.getInviterTotalRechargeRules());
|
validateRuleItems(cmd.getInviterTotalRechargeRules());
|
||||||
@ -334,6 +334,13 @@ public class ResidentInviteActivityServiceImpl implements ResidentInviteActivity
|
|||||||
goldAmount > 0 || item.getRewardGroupId() != null);
|
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,
|
private void validateReusableRuleIds(List<InviteCampaignRewardRule> existingRules,
|
||||||
InviteCampaignConfigSaveCmd cmd) {
|
InviteCampaignConfigSaveCmd cmd) {
|
||||||
Map<Long, InviteCampaignRewardRule> existingRuleMap = existingRules.stream()
|
Map<Long, InviteCampaignRewardRule> existingRuleMap = existingRules.stream()
|
||||||
|
|||||||
@ -98,12 +98,15 @@ public interface RoomContributionActivityCountService {
|
|||||||
boolean updateRewardCoinsSent(String id);
|
boolean updateRewardCoinsSent(String id);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取所有房间上周贡献数据(未领取状态)
|
* 获取所有房间上周未发放奖励金币的贡献数据.
|
||||||
*
|
|
||||||
* @return 所有房间上周贡献数据列表
|
|
||||||
*/
|
*/
|
||||||
List<RoomContributionActivityCount> getAllRoomsLastWeekData();
|
List<RoomContributionActivityCount> getAllRoomsLastWeekData();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取当前周房间流水排行榜.
|
||||||
|
*/
|
||||||
|
List<RoomContributionActivityCount> getAllRoomsCurrentWeekData(Integer limit);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据房间ID和日期查询数据
|
* 根据房间ID和日期查询数据
|
||||||
*
|
*
|
||||||
|
|||||||
@ -14,6 +14,7 @@ import com.red.circle.tool.core.date.ZonedDateTimeAsiaRiyadhUtils;
|
|||||||
import com.red.circle.tool.core.text.StringUtils;
|
import com.red.circle.tool.core.text.StringUtils;
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.math.RoundingMode;
|
import java.math.RoundingMode;
|
||||||
|
import java.time.format.DateTimeFormatter;
|
||||||
import java.util.Comparator;
|
import java.util.Comparator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
@ -294,12 +295,32 @@ public class RoomContributionActivityCountServiceImpl implements
|
|||||||
@Override
|
@Override
|
||||||
public List<RoomContributionActivityCount> getAllRoomsLastWeekData() {
|
public List<RoomContributionActivityCount> getAllRoomsLastWeekData() {
|
||||||
// 获取上周的 dateNumber
|
// 获取上周的 dateNumber
|
||||||
Integer lastWeekDateNumber = ZonedDateTimeAsiaRiyadhUtils.getThisMonday() - 7;
|
Integer lastWeekDateNumber = Integer.parseInt(
|
||||||
|
ZonedDateTimeAsiaRiyadhUtils.getLastWeekMonday()
|
||||||
Criteria criteria = Criteria.where("dateNumber").is(lastWeekDateNumber)
|
.format(DateTimeFormatter.ofPattern("yyyyMMdd"))
|
||||||
.and("received").is(Boolean.FALSE);
|
);
|
||||||
|
|
||||||
return mongoTemplate.find(Query.query(criteria), RoomContributionActivityCount.class);
|
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
|
@Override
|
||||||
@ -315,4 +336,11 @@ public class RoomContributionActivityCountServiceImpl implements
|
|||||||
return Optional.ofNullable(result);
|
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.framework.dto.PageResult;
|
||||||
import com.red.circle.other.infra.database.mongo.entity.activity.RoomContributionActivityCount;
|
import com.red.circle.other.infra.database.mongo.entity.activity.RoomContributionActivityCount;
|
||||||
import com.red.circle.other.inner.model.dto.activity.RoomContributionActivityCountDTO;
|
import com.red.circle.other.inner.model.dto.activity.RoomContributionActivityCountDTO;
|
||||||
|
import java.util.List;
|
||||||
import org.mapstruct.Mapper;
|
import org.mapstruct.Mapper;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -15,4 +16,10 @@ public interface RoomContributionActivityCountInnerConvertor {
|
|||||||
PageResult<RoomContributionActivityCountDTO> toPageRoomContributionActivityCountDTO(
|
PageResult<RoomContributionActivityCountDTO> toPageRoomContributionActivityCountDTO(
|
||||||
PageResult<RoomContributionActivityCount> pageResult);
|
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.app.inner.service.activity.RoomContributionActivityCountClientService;
|
||||||
import com.red.circle.other.inner.endpoint.activity.api.RoomContributionActivityCountClientApi;
|
import com.red.circle.other.inner.endpoint.activity.api.RoomContributionActivityCountClientApi;
|
||||||
import com.red.circle.other.inner.model.dto.activity.RoomContributionActivityCountDTO;
|
import com.red.circle.other.inner.model.dto.activity.RoomContributionActivityCountDTO;
|
||||||
|
import java.util.List;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.springframework.http.MediaType;
|
import org.springframework.http.MediaType;
|
||||||
import org.springframework.validation.annotation.Validated;
|
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.framework.dto.PageResult;
|
||||||
import com.red.circle.other.inner.model.dto.activity.RoomContributionActivityCountDTO;
|
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,
|
PageResult<RoomContributionActivityCountDTO> pageReceived(Long roomId, Integer current,
|
||||||
Integer limitSize);
|
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.app.inner.service.activity.RoomContributionActivityCountClientService;
|
||||||
import com.red.circle.other.infra.database.mongo.service.activity.RoomContributionActivityCountService;
|
import com.red.circle.other.infra.database.mongo.service.activity.RoomContributionActivityCountService;
|
||||||
import com.red.circle.other.inner.model.dto.activity.RoomContributionActivityCountDTO;
|
import com.red.circle.other.inner.model.dto.activity.RoomContributionActivityCountDTO;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Objects;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.springframework.stereotype.Service;
|
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