增加活动奖品列表
This commit is contained in:
parent
3f14fa244e
commit
e29fc767d9
@ -93,6 +93,14 @@ public interface SysActivityConfigClientApi {
|
||||
ResultResponse<List<ActivityConfigDTO>> listActivityConf(
|
||||
@RequestBody @Validated ActivityConfigBackQryCmd query);
|
||||
|
||||
/**
|
||||
* 查询有效的活动配置.
|
||||
*/
|
||||
@PostMapping("/conf/effective")
|
||||
ResultResponse<ActivityConfigDTO> effectiveActivityConf(
|
||||
@RequestBody @Validated ActivityConfigBackQryCmd query);
|
||||
|
||||
|
||||
/**
|
||||
* 获取模版信息.
|
||||
*/
|
||||
|
||||
@ -5,6 +5,7 @@ import com.red.circle.framework.dto.PageResult;
|
||||
import com.red.circle.framework.web.controller.BaseController;
|
||||
import com.red.circle.other.app.dto.clientobject.activity.UserCharmWealthContributeCO;
|
||||
import com.red.circle.other.app.dto.clientobject.activity.UserRankCO;
|
||||
import com.red.circle.other.app.dto.clientobject.sys.ActivityConfigVO;
|
||||
import com.red.circle.other.app.dto.cmd.activity.WeekKingQueenRankingQueryCmd;
|
||||
import com.red.circle.other.app.service.activity.WeekKingQueenService;
|
||||
import java.util.List;
|
||||
@ -43,6 +44,14 @@ public class WeekKingQueenController extends BaseController {
|
||||
return weekKingQueenService.listRanking(cmd);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取有效活动
|
||||
*/
|
||||
@GetMapping("/effective")
|
||||
public ActivityConfigVO getEffective(@Validated AppExtCommand cmd) {
|
||||
return weekKingQueenService.getEffectiveActivity(cmd);
|
||||
}
|
||||
|
||||
/**
|
||||
* 我本周贡献.
|
||||
*
|
||||
|
||||
@ -0,0 +1,152 @@
|
||||
package com.red.circle.other.app.command.activity.query;
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
import com.google.common.collect.Maps;
|
||||
import com.red.circle.common.business.dto.cmd.AppExtCommand;
|
||||
import com.red.circle.common.business.enums.PropsActivityRewardEnum;
|
||||
import com.red.circle.framework.core.asserts.ResponseAssert;
|
||||
import com.red.circle.other.app.dto.clientobject.sys.ActivityConfigRewardsCO;
|
||||
import com.red.circle.other.app.dto.clientobject.sys.ActivityConfigVO;
|
||||
import com.red.circle.other.inner.endpoint.material.gift.GiftConfigClient;
|
||||
import com.red.circle.other.inner.endpoint.material.props.BadgeSourceClient;
|
||||
import com.red.circle.other.inner.endpoint.material.props.PropsActivityRewardConfigClient;
|
||||
import com.red.circle.other.inner.endpoint.sys.SysActivityConfigClient;
|
||||
import com.red.circle.other.inner.model.cmd.material.BadgePictureMapQry;
|
||||
import com.red.circle.other.inner.model.cmd.sys.ActivityConfigBackQryCmd;
|
||||
import com.red.circle.other.inner.model.dto.material.BadgePictureConfigDTO;
|
||||
import com.red.circle.other.inner.model.dto.material.GiftConfigDTO;
|
||||
import com.red.circle.other.inner.model.dto.material.PropsActivityRewardConfigInfoDTO;
|
||||
import com.red.circle.other.inner.model.dto.sys.ActivityConfigDTO;
|
||||
import com.red.circle.other.inner.model.dto.sys.ActivityConfigRewardsDTO;
|
||||
import com.red.circle.other.inner.model.dto.sys.ActivityTemplateValueDTO;
|
||||
import com.red.circle.tool.core.collection.CollectionUtils;
|
||||
import com.red.circle.tool.core.text.StringUtils;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class WeekKingQueenActivityExe {
|
||||
private final SysActivityConfigClient sysActivityConfigClient;
|
||||
private final GiftConfigClient giftConfigClient;
|
||||
private final BadgeSourceClient badgeSourceClient;
|
||||
private final PropsActivityRewardConfigClient propsActivityRewardConfigClient;
|
||||
|
||||
public ActivityConfigVO getEffectiveActivity(AppExtCommand cmd) {
|
||||
ActivityConfigBackQryCmd query = new ActivityConfigBackQryCmd();
|
||||
query.setSysOrigin(cmd.getReqSysOrigin().getOrigin());
|
||||
ActivityConfigDTO activityConfigDTO = ResponseAssert.requiredSuccess(sysActivityConfigClient.effectiveActivityConf(query));
|
||||
|
||||
if (activityConfigDTO == null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
List<ActivityConfigDTO> activityConfigs = List.of(activityConfigDTO);
|
||||
Map<Long, ActivityTemplateValueDTO> templateValueMap = ResponseAssert.requiredSuccess(
|
||||
sysActivityConfigClient.mapByIds(
|
||||
activityConfigs.stream().map(ActivityConfigDTO::getTemplateId).collect(
|
||||
Collectors.toSet())));
|
||||
|
||||
Map<Long, List<PropsActivityRewardConfigInfoDTO>> rewardMaps = this.mapSourceGroup(
|
||||
cmd.getReqSysOrigin().getOrigin(), getRewardGroupIds(activityConfigs));
|
||||
|
||||
Map<Long, GiftConfigDTO> sysGiftConfigMap = ResponseAssert.requiredSuccess(
|
||||
giftConfigClient.mapByIds(
|
||||
activityConfigs.stream()
|
||||
.map(ActivityConfigDTO::getGiftIds)
|
||||
.filter(CollectionUtils::isNotEmpty)
|
||||
.flatMap(Collection::stream)
|
||||
.filter(Objects::nonNull)
|
||||
.map(Long::parseLong)
|
||||
.collect(Collectors.toSet())));
|
||||
|
||||
return activityConfigs.stream().map(conf ->
|
||||
new ActivityConfigVO()
|
||||
.setConfig(conf)
|
||||
.setButOneRewards(getRewards(rewardMaps, conf.getButOneRewards()))
|
||||
.setButTwoRewards(getRewards(rewardMaps, conf.getButTwoRewards()))
|
||||
.setTemplateName(Optional.ofNullable(templateValueMap.get(conf.getTemplateId()))
|
||||
.map(ActivityTemplateValueDTO::getName)
|
||||
.orElse(""))
|
||||
.setGifts(Optional.ofNullable(conf.getGiftIds())
|
||||
.map(giftIds -> giftIds.stream()
|
||||
.map(giftId -> sysGiftConfigMap.get(Long.parseLong(giftId)))
|
||||
.collect(Collectors.toList()))
|
||||
.orElseGet(Lists::newArrayList))
|
||||
.setStatus(conf.status())
|
||||
.setCountDown(conf.countDown())
|
||||
).toList().get(0);
|
||||
}
|
||||
|
||||
public Map<Long, List<PropsActivityRewardConfigInfoDTO>> mapSourceGroup(String sysOrigin,
|
||||
Set<Long> sourceGroupIds) {
|
||||
if (StringUtils.isBlank(sysOrigin) || CollectionUtils.isEmpty(sourceGroupIds)) {
|
||||
return Maps.newHashMap();
|
||||
}
|
||||
Map<Long, List<PropsActivityRewardConfigInfoDTO>> propsActivityRewardMap = ResponseAssert.requiredSuccess(
|
||||
propsActivityRewardConfigClient
|
||||
.mapByGroupIds(sourceGroupIds));
|
||||
Map<Long, BadgePictureConfigDTO> badgePictureMap = ResponseAssert.requiredSuccess(
|
||||
badgeSourceClient
|
||||
.mapPictureByIds(
|
||||
new BadgePictureMapQry()
|
||||
.setBadgeIds(getBadgeIds(propsActivityRewardMap))
|
||||
.setSysOrigin(sysOrigin)
|
||||
)
|
||||
);
|
||||
propsActivityRewardMap.values().stream().flatMap(Collection::stream)
|
||||
.filter(props -> Objects.equals(props.getType(),
|
||||
PropsActivityRewardEnum.BADGE.name()))
|
||||
.forEach(props -> {
|
||||
BadgePictureConfigDTO picture = badgePictureMap.get(Long.valueOf(props.getContent()));
|
||||
if (Objects.isNull(picture)) {
|
||||
return;
|
||||
}
|
||||
props.setCover(picture.getSelectUrl());
|
||||
props.setSourceUrl(picture.getAnimationUrl());
|
||||
});
|
||||
return propsActivityRewardMap;
|
||||
}
|
||||
|
||||
private Set<Long> getBadgeIds(
|
||||
Map<Long, List<PropsActivityRewardConfigInfoDTO>> propsActivityRewardMap) {
|
||||
return propsActivityRewardMap.values().stream().flatMap(Collection::stream)
|
||||
.filter(props -> Objects.equals(props.getType(),
|
||||
PropsActivityRewardEnum.BADGE.name()))
|
||||
.map(props -> Long.valueOf(props.getContent()))
|
||||
.collect(Collectors.toSet());
|
||||
}
|
||||
|
||||
private List<ActivityConfigRewardsCO> getRewards(
|
||||
Map<Long, List<PropsActivityRewardConfigInfoDTO>> rewardMaps,
|
||||
List<ActivityConfigRewardsDTO> rewardGroup) {
|
||||
return Optional.ofNullable(rewardGroup)
|
||||
.map(rewards -> rewards.stream().map(reward -> new ActivityConfigRewardsCO()
|
||||
.setRankRange(reward.getRankRange())
|
||||
.setResourceGroupId(reward.getResourceGroupId())
|
||||
.setRewards(rewardMaps.get(reward.getResourceGroupId()))
|
||||
).collect(Collectors.toList()))
|
||||
.orElseGet(Lists::newArrayList);
|
||||
}
|
||||
|
||||
|
||||
private Set<Long> getRewardGroupIds(List<ActivityConfigDTO> activityConfigs) {
|
||||
return Stream.of(activityConfigs.stream().map(ActivityConfigDTO::getButOneRewards)
|
||||
.filter(CollectionUtils::isNotEmpty)
|
||||
.flatMap(Collection::stream)
|
||||
.map(ActivityConfigRewardsDTO::getResourceGroupId)
|
||||
.collect(Collectors.toSet()),
|
||||
activityConfigs.stream().map(ActivityConfigDTO::getButTwoRewards)
|
||||
.filter(CollectionUtils::isNotEmpty)
|
||||
.flatMap(Collection::stream)
|
||||
.map(ActivityConfigRewardsDTO::getResourceGroupId)
|
||||
.collect(Collectors.toSet()))
|
||||
.flatMap(Collection::stream)
|
||||
.collect(Collectors.toSet());
|
||||
}
|
||||
|
||||
}
|
||||
@ -2,16 +2,14 @@ package com.red.circle.other.app.service.activity;
|
||||
|
||||
import com.red.circle.common.business.dto.cmd.AppExtCommand;
|
||||
import com.red.circle.framework.dto.PageResult;
|
||||
import com.red.circle.other.app.command.activity.query.ActivityRewardQueryExe;
|
||||
import com.red.circle.other.app.command.activity.query.WeekKingQueenCountDownQueryExe;
|
||||
import com.red.circle.other.app.command.activity.query.WeekKingQueenRankingQueryExe;
|
||||
import com.red.circle.other.app.command.activity.query.WeekKingQueenUserContributeQueryExe;
|
||||
import com.red.circle.other.app.command.activity.query.*;
|
||||
import com.red.circle.other.app.dto.clientobject.activity.UserCharmWealthContributeCO;
|
||||
import com.red.circle.other.app.dto.clientobject.activity.UserRankCO;
|
||||
import com.red.circle.other.app.dto.clientobject.sys.ActivityConfigVO;
|
||||
import com.red.circle.other.app.dto.cmd.activity.WeekKingQueenRankingQueryCmd;
|
||||
import java.util.List;
|
||||
|
||||
import java.util.*;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.data.domain.Page;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
@ -27,12 +25,18 @@ public class WeekKingQueenServiceImpl implements WeekKingQueenService {
|
||||
private final WeekKingQueenRankingQueryExe weekKingQueenRankingQueryExe;
|
||||
private final WeekKingQueenCountDownQueryExe weekKingQueenCountDownQueryExe;
|
||||
private final WeekKingQueenUserContributeQueryExe weekKingQueenUserContributeQueryExe;
|
||||
private final WeekKingQueenActivityExe weekKingQueenActivityExe;
|
||||
|
||||
@Override
|
||||
public PageResult<UserRankCO> listRanking(WeekKingQueenRankingQueryCmd cmd) {
|
||||
return weekKingQueenRankingQueryExe.execute(cmd);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ActivityConfigVO getEffectiveActivity(AppExtCommand cmd) {
|
||||
return weekKingQueenActivityExe.getEffectiveActivity(cmd);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String countDown() {
|
||||
return weekKingQueenCountDownQueryExe.execute();
|
||||
|
||||
@ -2,6 +2,7 @@ package com.red.circle.other.app.dto.clientobject.sys;
|
||||
|
||||
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
|
||||
import com.red.circle.other.inner.model.dto.material.PropsActivityRewardConfigInfoDTO;
|
||||
import com.red.circle.other.inner.model.dto.user.UserProfileDTO;
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
@ -35,6 +36,11 @@ public class ActivityConfigRewardsCO implements Serializable {
|
||||
*/
|
||||
private ActivityPropsGroupCO reward;
|
||||
|
||||
/**
|
||||
* 奖品信息.
|
||||
*/
|
||||
private List<PropsActivityRewardConfigInfoDTO> rewards;
|
||||
|
||||
/**
|
||||
* 获奖用户.
|
||||
*/
|
||||
|
||||
@ -0,0 +1,68 @@
|
||||
package com.red.circle.other.app.dto.clientobject.sys;
|
||||
|
||||
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
|
||||
import com.red.circle.other.inner.model.dto.material.GiftConfigDTO;
|
||||
import com.red.circle.other.inner.model.dto.sys.ActivityConfigDTO;
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 活动设置.
|
||||
*/
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
public class ActivityConfigVO implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 配置信息.
|
||||
*/
|
||||
private ActivityConfigDTO config;
|
||||
|
||||
/**
|
||||
* 资源组信息1.
|
||||
*/
|
||||
private List<ActivityConfigRewardsCO> butOneRewards;
|
||||
|
||||
/**
|
||||
* 资源组信息2.
|
||||
*/
|
||||
private List<ActivityConfigRewardsCO> butTwoRewards;
|
||||
|
||||
/**
|
||||
* 活动礼物,集合.
|
||||
*/
|
||||
private List<GiftConfigDTO> gifts;
|
||||
|
||||
/**
|
||||
* 模版名称.
|
||||
*/
|
||||
private String templateName;
|
||||
|
||||
/**
|
||||
* 创建人昵称.
|
||||
*/
|
||||
private String createUserName;
|
||||
|
||||
/**
|
||||
* 修改人昵称.
|
||||
*/
|
||||
@JsonSerialize(using = ToStringSerializer.class)
|
||||
private String updateUserName;
|
||||
|
||||
/**
|
||||
* 剩余时间.
|
||||
*/
|
||||
private Long countDown;
|
||||
|
||||
/**
|
||||
* 0 未开始,1 开始,2 已结束.
|
||||
*/
|
||||
private Integer status;
|
||||
|
||||
}
|
||||
@ -4,7 +4,10 @@ import com.red.circle.common.business.dto.cmd.AppExtCommand;
|
||||
import com.red.circle.framework.dto.PageResult;
|
||||
import com.red.circle.other.app.dto.clientobject.activity.UserCharmWealthContributeCO;
|
||||
import com.red.circle.other.app.dto.clientobject.activity.UserRankCO;
|
||||
import com.red.circle.other.app.dto.clientobject.sys.ActivityConfigVO;
|
||||
import com.red.circle.other.app.dto.cmd.activity.WeekKingQueenRankingQueryCmd;
|
||||
import com.red.circle.other.inner.model.dto.sys.ActivityConfigDTO;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
@ -16,6 +19,8 @@ public interface WeekKingQueenService {
|
||||
|
||||
PageResult<UserRankCO> listRanking(WeekKingQueenRankingQueryCmd cmd);
|
||||
|
||||
ActivityConfigVO getEffectiveActivity(AppExtCommand cmd);
|
||||
|
||||
String countDown();
|
||||
|
||||
UserCharmWealthContributeCO getUserContribute(AppExtCommand cmd);
|
||||
|
||||
@ -64,4 +64,8 @@ public interface ActivityConfigService {
|
||||
*/
|
||||
List<ActivityConfig> list(ActivityConfigBackQryCmd query);
|
||||
|
||||
/**
|
||||
* 查询有效i的活动配置
|
||||
*/
|
||||
ActivityConfig getEffectiveActivityConf(ActivityConfigBackQryCmd query);
|
||||
}
|
||||
|
||||
@ -222,4 +222,15 @@ public class ActivityConfigServiceImpl implements ActivityConfigService {
|
||||
, ActivityConfig.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ActivityConfig getEffectiveActivityConf(ActivityConfigBackQryCmd query) {
|
||||
Criteria criteria = Criteria.where("sysOrigin").is(query.getSysOrigin());
|
||||
criteria.and("endTime").gt(TimestampUtils.now());
|
||||
|
||||
return mongoTemplate.findOne(Query.query(criteria)
|
||||
.with(Sort.by(Sort.Order.desc("id")))
|
||||
.limit(1)
|
||||
, ActivityConfig.class);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -91,6 +91,11 @@ public class SysActivityConfigClientEndpoint implements SysActivityConfigClientA
|
||||
return ResultResponse.success(sysActivityConfigClientService.listActivityConf(query));
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResultResponse<ActivityConfigDTO> effectiveActivityConf(ActivityConfigBackQryCmd query) {
|
||||
return ResultResponse.success(sysActivityConfigClientService.getEffectiveActivityConf(query));
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResultResponse<Map<Long, ActivityTemplateValueDTO>> mapByIds(Set<Long> collect) {
|
||||
return ResultResponse.success(sysActivityConfigClientService.mapByIds(collect));
|
||||
|
||||
@ -67,6 +67,11 @@ public interface SysActivityConfigClientService {
|
||||
*/
|
||||
List<ActivityConfigDTO> listActivityConf(ActivityConfigBackQryCmd query);
|
||||
|
||||
/**
|
||||
* 查询有效的活动配置
|
||||
*/
|
||||
ActivityConfigDTO getEffectiveActivityConf(ActivityConfigBackQryCmd query);
|
||||
|
||||
/**
|
||||
* 获取模版信息.
|
||||
*/
|
||||
|
||||
@ -91,6 +91,11 @@ public class SysActivityConfigClientServiceImpl implements SysActivityConfigClie
|
||||
return sysActivityConfigInnerConvertor.toListActivityConf(activityConfigService.list(query));
|
||||
}
|
||||
|
||||
@Override
|
||||
public ActivityConfigDTO getEffectiveActivityConf(ActivityConfigBackQryCmd query) {
|
||||
return sysActivityConfigInnerConvertor.toActivityConfigDTO(activityConfigService.getEffectiveActivityConf(query));
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<Long, ActivityTemplateValueDTO> mapByIds(Set<Long> collect) {
|
||||
return sysActivityConfigInnerConvertor.toMapActivityTemplateValueDTO(
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user