admin
2021-01-28 8c1c003c60d2f27b3c55e248451caeec7f2b5631
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
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.setId(bean.getId());
        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.setId(bean.getId());
            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.setId(bean.getId());
        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.setId(bean.getId());
        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;
    }
 
 
}