|
|
|
@@ -9,6 +9,7 @@ import com.iformall.common.Result; |
|
|
|
import com.iformall.domain.po.*; |
|
|
|
import com.iformall.domain.po.base.TenantEntity; |
|
|
|
import com.iformall.domain.vo.OfflineActivityGrantRecord; |
|
|
|
import com.iformall.domain.vo.OfflineActivityGrantRule; |
|
|
|
import com.iformall.domain.vo.OfflineActivityRecordStatistics; |
|
|
|
import com.iformall.enums.*; |
|
|
|
import com.iformall.exception.MallinkException; |
|
|
|
@@ -209,7 +210,7 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity |
|
|
|
|
|
|
|
//处理发奖数量 |
|
|
|
activityItem.setIsMeet(true); |
|
|
|
handleLotteryDrawCount(activityItem,wxOfflineActivityGrantAward.getRecordList()); |
|
|
|
handleLotteryDrawCount(activity,activityItem,wxOfflineActivityGrantAward.getRecordList()); |
|
|
|
if(activityItem.getRealAwardsItemLimit() == 0){ |
|
|
|
activityItem.setIsMeet(false); |
|
|
|
} |
|
|
|
@@ -251,25 +252,41 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
private void handleLotteryDrawCount(WxOfflineActivityItem activityItem, List<WxOfflineActivityRecord> recordList){ |
|
|
|
|
|
|
|
private void handleLotteryDrawCount(WxOfflineActivity activity, WxOfflineActivityItem activityItem, List<WxOfflineActivityRecord> recordList){ |
|
|
|
int limitCount = 0; |
|
|
|
List<OfflineActivityGrantRule> grantRuleList = new ArrayList<>(); |
|
|
|
|
|
|
|
if(EnumOfflineActivityMode.ONE.getCode().equals(activityItem.getModeType())){ |
|
|
|
for(WxOfflineActivityRecord record :recordList){ |
|
|
|
Integer record_count = 0; |
|
|
|
Integer record_limit_count = 0; |
|
|
|
for (WxOfflineActivityAwardsModel activityAwardsModel :activityItem.getActivityAwardsModelList()){ |
|
|
|
if((activityAwardsModel.getMinAmount() == null || record.getOrderMoney().compareTo(activityAwardsModel.getMinAmount()) >= 0) |
|
|
|
&& (activityAwardsModel.getMaxAmount() == null || record.getOrderMoney().compareTo(activityAwardsModel.getMaxAmount()) <= 0)){ |
|
|
|
record_count = activityAwardsModel.getAwardsCount(); |
|
|
|
record_limit_count = activityAwardsModel.getAwardsCount(); |
|
|
|
} |
|
|
|
} |
|
|
|
limitCount += record_count; |
|
|
|
if(record_limit_count > 0){ |
|
|
|
OfflineActivityGrantRule grantRule = new OfflineActivityGrantRule(); |
|
|
|
grantRule.setRecordId(record.getId()); |
|
|
|
grantRule.setRecord(record); |
|
|
|
handlerGrantRule(grantRule,EnumOfflineActivityAwardsModeType.AMOUNT,activity,activityItem,record_limit_count); |
|
|
|
grantRuleList.add(grantRule); |
|
|
|
|
|
|
|
limitCount += record_limit_count; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
}else{ |
|
|
|
BigDecimal orderMoneySum = activityItem.getRecordList().stream().map(WxOfflineActivityRecord::getOrderMoney).reduce(BigDecimal.ZERO, BigDecimal::add); |
|
|
|
if(activityItem.getAwardsItemPrice() != null && activityItem.getAwardsItemPrice().compareTo(BigDecimal.ZERO) > 0){ |
|
|
|
limitCount = orderMoneySum.divide(activityItem.getAwardsItemPrice(),0, RoundingMode.HALF_DOWN).intValue(); |
|
|
|
Integer order_limit_count = orderMoneySum.divide(activityItem.getAwardsItemPrice(),0, RoundingMode.HALF_DOWN).intValue(); |
|
|
|
if(order_limit_count > 0){ |
|
|
|
OfflineActivityGrantRule grantRule = new OfflineActivityGrantRule(); |
|
|
|
handlerGrantRule(grantRule,EnumOfflineActivityAwardsModeType.AMOUNT,activity,activityItem,order_limit_count); |
|
|
|
grantRuleList.add(grantRule); |
|
|
|
|
|
|
|
limitCount += order_limit_count; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
@@ -279,7 +296,14 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity |
|
|
|
Map<Integer, WxOfflineActivityAwardsModel> jointCountMap = activityItem.getActivityAwardsModelSecondList().stream().collect(toMap(WxOfflineActivityAwardsModel::getMerchantCount, Function.identity())); |
|
|
|
WxOfflineActivityAwardsModel activityAwardsModel = jointCountMap.get(jointCount); |
|
|
|
if(activityAwardsModel != null && activityAwardsModel.getAwardsCount() != null){ |
|
|
|
limitCount += activityAwardsModel.getAwardsCount(); |
|
|
|
Integer joint_limit_count = activityAwardsModel.getAwardsCount(); |
|
|
|
if(joint_limit_count > 0){ |
|
|
|
OfflineActivityGrantRule grantRule = new OfflineActivityGrantRule(); |
|
|
|
handlerGrantRule(grantRule,EnumOfflineActivityAwardsModeType.COUNT,activity,activityItem,joint_limit_count); |
|
|
|
grantRuleList.add(grantRule); |
|
|
|
|
|
|
|
limitCount += joint_limit_count; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
@@ -287,7 +311,9 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity |
|
|
|
&& activityItem.getAwardsItemLimit() < limitCount){ |
|
|
|
limitCount = activityItem.getAwardsItemLimit(); |
|
|
|
} |
|
|
|
|
|
|
|
activityItem.setRealAwardsItemLimit(limitCount); |
|
|
|
activityItem.setActivityGrantRuleList(grantRuleList); |
|
|
|
} |
|
|
|
|
|
|
|
private void handleGiftAwards(WxOfflineActivity activity, WxOfflineActivityItem activityItem, List<WxOfflineActivityRecord> recordList){ |
|
|
|
@@ -728,6 +754,16 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity |
|
|
|
wxOfflineActivityGrantAward.setActivityItemList(activityItemList); |
|
|
|
} |
|
|
|
|
|
|
|
private void handlerGrantRule(OfflineActivityGrantRule grantRule, EnumOfflineActivityAwardsModeType modeType,WxOfflineActivity activity,WxOfflineActivityItem activityItem,Integer awardsItemLimit){ |
|
|
|
grantRule.setGrantAwardsMode(modeType.getCode()); |
|
|
|
grantRule.setActivityId(activity.getId()); |
|
|
|
grantRule.setActivityName(activity.getName()); |
|
|
|
grantRule.setActivityItemId(activityItem.getId()); |
|
|
|
grantRule.setActivityItemName(activityItem.getName()); |
|
|
|
grantRule.setActivityItemType(activityItem.getType()); |
|
|
|
grantRule.setAwardsItemLimit(awardsItemLimit); |
|
|
|
} |
|
|
|
|
|
|
|
private void handlerGrantItem(WxOfflineActivityGrantItem grantGrantItem,EnumOfflineActivityAwardsModeType modeType,WxOfflineActivity activity,WxOfflineActivityItem activityItem,WxOfflineActivityAwardsItem awardsItem){ |
|
|
|
// grantGrantItem.setGrantId(wxOfflineActivityGrantAward.getId()); |
|
|
|
grantGrantItem.setGrantAwardsMode(modeType.getCode()); |
|
|
|
|