package com.ks.daylucky.util.factory.vo;
|
|
import com.google.gson.Gson;
|
import com.ks.daylucky.pojo.DO.ActivityExtraInfo;
|
import com.ks.daylucky.pojo.VO.admin.ActivityAdminVo;
|
import com.ks.lucky.pojo.DO.*;
|
import com.ks.lucky.pojo.DTO.ActivityAwardParams;
|
import com.ks.lucky.pojo.DTO.sponsorad.AlipayLifeAdInfo;
|
|
import java.math.BigDecimal;
|
import java.math.RoundingMode;
|
import java.util.ArrayList;
|
import java.util.List;
|
|
public class LuckyActivityFactory {
|
|
public static LuckyActivity create(Long sponsorId, ActivityAdminVo vo) {
|
LuckyActivity activity = createActivity(sponsorId, vo.getActivity());
|
activity.setAwardsList(createAwards(vo.getAwardInfo()));
|
activity.setSponsorInfo(createSponsorInfo(sponsorId, vo.getJoinInfo()));
|
activity.setOpenInfo(createOpenInfo(vo.getOpenInfo()));
|
return activity;
|
}
|
|
|
/**
|
* 附加信息
|
*
|
* @param bean
|
* @return
|
*/
|
public static ActivityExtraInfo getActivityExtra(ActivityAdminVo.OpenInfoBean bean) {
|
ActivityExtraInfo info = new ActivityExtraInfo();
|
info.setValidDay(bean.getDay());
|
return info;
|
}
|
|
|
/**
|
* 主活动
|
*
|
* @param sponsorId
|
* @param bean
|
* @return
|
*/
|
private static LuckyActivity createActivity(Long sponsorId, ActivityAdminVo.ActivityBean bean) {
|
LuckyActivity activity = new LuckyActivity();
|
activity.setSponsorId(sponsorId);
|
activity.setMaterialPoster(bean.getPoster());
|
activity.setMaxPersonCount(100000);
|
activity.setBannerList(createBannerList(bean));
|
return activity;
|
}
|
|
|
/**
|
* 奖项信息
|
*
|
* @param awardInfo
|
* @return
|
*/
|
private static List<LuckyActivityAwards> createAwards(List<ActivityAdminVo.AwardInfoBean> awardInfo) {
|
List<LuckyActivityAwards> awardsList = new ArrayList<>();
|
|
int level = 0;
|
for (ActivityAdminVo.AwardInfoBean bean : awardInfo) {
|
LuckyActivityAwards awards = new LuckyActivityAwards();
|
awards.setMaterial(createAwardMaterial(bean));
|
awards.setLevel(level++);
|
awards.setCount(bean.getData().getCount());
|
|
awards.setAwardWay(bean.getData().getType());
|
//支付宝红包
|
if (bean.getType().equalsIgnoreCase(LuckyActivityAwardMaterial.ActivityAwardMaterialType.alipayRedPackage.name())) {
|
String awardName = null;
|
switch (bean.getData().getType()) {
|
case LuckyActivityAwards.AWARD_WAY_DIVIDE:
|
BigDecimal percent = bean.getData().getTotal().divide(new BigDecimal(bean.getData().getCount()), 2, RoundingMode.FLOOR);
|
awardName = String.format("固定金额红包%s元×%s份", percent, bean.getData().getCount());
|
break;
|
case LuckyActivityAwards.AWARD_WAY_RANDOM:
|
awardName = String.format("随机金额红包共%s元,%s份", bean.getData().getTotal(), bean.getData().getCount());
|
break;
|
}
|
awards.setAwardName(awardName);
|
|
ActivityAwardParams params = new ActivityAwardParams(ActivityAwardParams.ActivityAwardTypeEnum.alipayRedPackage, bean.getData().getTotal());
|
awards.setAwardParams(new Gson().toJson(params));
|
}
|
awardsList.add(awards);
|
}
|
return awardsList;
|
}
|
|
/**
|
* 赞助信息
|
*
|
* @param sponsorId
|
* @param bean
|
* @return
|
*/
|
private static LuckyActivitySponsorInfo createSponsorInfo(Long sponsorId, ActivityAdminVo.JoinInfoBean bean) {
|
LuckyActivitySponsorInfo sponsorInfo = new LuckyActivitySponsorInfo();
|
sponsorInfo.setSponsorId(sponsorId);
|
sponsorInfo.setAd(createSponsorAd(sponsorId, bean));
|
sponsorInfo.setSponsors(new LuckySponsors(sponsorId));
|
return sponsorInfo;
|
}
|
|
|
/**
|
* 开奖信息
|
*
|
* @param bean
|
* @return
|
*/
|
private static LuckyActivityOpenInfo createOpenInfo(ActivityAdminVo.OpenInfoBean bean) {
|
LuckyActivityOpenInfo openInfo = new LuckyActivityOpenInfo();
|
openInfo.setOpenType(LuckyActivityOpenInfo.OPEN_TYPE_PERSON_AND_TIME);
|
openInfo.setMinPersonCount(bean.getMinPersonCount());
|
openInfo.setRemarks(bean.getDesc());
|
return openInfo;
|
}
|
|
|
private static List<LuckyActivityImage> createBannerList(ActivityAdminVo.ActivityBean bean) {
|
List<LuckyActivityImage> list = new ArrayList<>();
|
if (bean.getBannerList() == null || bean.getBannerList().size() == 0) {
|
return list;
|
}
|
int count = bean.getBannerList().size();
|
for (ActivityAdminVo.ActivityBean.BannerBean banner : bean.getBannerList()) {
|
LuckyActivityImage image = new LuckyActivityImage();
|
image.setId(banner.getId());
|
image.setUrl(banner.getUrl());
|
image.setType(LuckyActivityImage.LuckyImageType.banner);
|
image.setWeight(count--);
|
list.add(image);
|
}
|
return list;
|
}
|
|
|
private static LuckySponsorAd createSponsorAd(Long sponsorId, ActivityAdminVo.JoinInfoBean bean) {
|
LuckySponsorAd ad = new LuckySponsorAd();
|
//关注支付宝生活号
|
if (bean.getAdInfo().getType().equalsIgnoreCase(LuckySponsorAd.SponsorAdType.alipayLife.name())) {
|
AlipayLifeAdInfo alipayLifeAdInfo = new AlipayLifeAdInfo();
|
alipayLifeAdInfo.setMustAttention(bean.getMust() > 0);
|
alipayLifeAdInfo.setName(bean.getAdInfo().getData().getName());
|
alipayLifeAdInfo.setIcon(bean.getAdInfo().getData().getIcon());
|
alipayLifeAdInfo.setDesc(bean.getAdInfo().getData().getDesc());
|
alipayLifeAdInfo.setSceneId(bean.getAdInfo().getData().getSceneId());
|
ad.setAlipayLifeAdInfo(alipayLifeAdInfo);
|
}
|
ad.setDesc(bean.getDesc());
|
ad.setAdType(LuckySponsorAd.SponsorAdType.valueOf(bean.getAdInfo().getType()));
|
ad.setSponsorId(sponsorId);
|
return ad;
|
}
|
|
|
private static LuckyActivityAwardMaterial createAwardMaterial(ActivityAdminVo.AwardInfoBean bean) {
|
LuckyActivityAwardMaterial material = new LuckyActivityAwardMaterial();
|
material.setType(LuckyActivityAwardMaterial.ActivityAwardMaterialType.valueOf(bean.getType()));
|
return material;
|
}
|
|
|
}
|