LeafAverageStrategy.java
3.69 KB
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
package com.zhaoonline.coupen.generator.distribute;
import com.zhaoonline.coupen.bean.*;
import com.zhaoonline.coupen.utils.Utils;
import org.springframework.util.ObjectUtils;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
/**
* Created by ZhaoOnline<br/>
* User: yangyoupeng<br/>
* Date: 2016/12/15<br/>
* Time: 10:20<br/>
* Description:此测试适用于。将每一个大红包的金额。按照所需帮拆好友的数目,再划分若干等分
*/
public class LeafAverageStrategy implements DistributeStrategy {
private static final String STRATEGY_NAME="iavr";
AverageStrategy averageStatragy=new AverageStrategy();
@Override
public CoupenContext<LeafCoupenEntity,HelpOpenCoupenSeed> distribute(CommonCoupenSeed seed) {
if(ObjectUtils.isEmpty(seed)){
return CoupenContext.empty();
}
CoupenContext<CommonCoupenEntity,CommonCoupenSeed> contextOfSeed= averageStatragy.distribute(seed);
HelpOpenCoupenSeed helpOpenCoupenSeed=null;
if(contextOfSeed.getSeed() instanceof HelpOpenCoupenSeed){
helpOpenCoupenSeed=(HelpOpenCoupenSeed)contextOfSeed.getSeed();
}
List<CommonCoupenEntity> coupenListFromSeed=contextOfSeed.getCoupens();
List<LeafCoupenEntity> newCreatedCoupens=new ArrayList<LeafCoupenEntity>();
//帮拆的朋友个数
Integer helperCount=helpOpenCoupenSeed.getHelperCount();
HelpOpenType helpOpenType=helpOpenCoupenSeed.getHelpOpenType();
switch (helpOpenType){
case VALIDE_LAST_TIME:{
for(CommonCoupenEntity coupenEntity:coupenListFromSeed){
LeafCoupenEntity leafCoupenEntity=new LeafCoupenEntity();
leafCoupenEntity.setParentCoupen(coupenEntity);
leafCoupenEntity.setSeed(helpOpenCoupenSeed);
leafCoupenEntity.setAmount(coupenEntity.getAmount());
leafCoupenEntity.setCoupenID(generateCoupenID());
newCreatedCoupens.add(leafCoupenEntity);
}
break;
}
case VALIDE_ON_TIME:{
for(CommonCoupenEntity coupenEntity:coupenListFromSeed){
BigDecimal amountPerChildCoupne= amountPerCoupen(coupenEntity.getAmount(),helpOpenCoupenSeed.getHelperCount());
for(int i=0;i< helperCount.intValue();i++){
LeafCoupenEntity leafCoupenEntity=new LeafCoupenEntity();
leafCoupenEntity.setParentCoupen(coupenEntity);
leafCoupenEntity.setSeed(helpOpenCoupenSeed);
leafCoupenEntity.setAmount(amountPerChildCoupne);
leafCoupenEntity.setCoupenID(generateCoupenID());
newCreatedCoupens.add(leafCoupenEntity);
}
};
break;
}
default:{
break;
}
}
CoupenContext<LeafCoupenEntity,HelpOpenCoupenSeed> newContext= new CoupenContext<LeafCoupenEntity,HelpOpenCoupenSeed>();
newContext.setCoupens(newCreatedCoupens);
newContext.setSeed(helpOpenCoupenSeed);
return newContext;
}
/** 计算每个红包的金额
* @param totalAmount
* @param divideCount
* @return
*/
private BigDecimal amountPerCoupen(BigDecimal totalAmount,Integer divideCount){
return totalAmount.divide(new BigDecimal(divideCount),3,BigDecimal.ROUND_HALF_UP);
}
@Override
public String distributeName() {
return STRATEGY_NAME;
}
private String generateCoupenID(){
return Utils.getRandomForDate(STRATEGY_NAME);
}
}