Просмотр исходного кода

//offline

release_toaliyun_real
xiaohu 1 год назад
Родитель
Сommit
e3d3a63eaf
3 измененных файлов: 75 добавлений и 8 удалений
  1. +7
    -0
      mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityItem.java
  2. +24
    -0
      mallinkService/src/main/java/com/iformall/domain/vo/OfflineActivityGrantRule.java
  3. +44
    -8
      mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java

+ 7
- 0
mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityItem.java Просмотреть файл

@@ -9,6 +9,7 @@ import java.util.Date;
import java.util.List; import java.util.List;


import com.iformall.domain.po.base.TenantEntity; import com.iformall.domain.po.base.TenantEntity;
import com.iformall.domain.vo.OfflineActivityGrantRule;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import lombok.ToString; import lombok.ToString;
@@ -150,6 +151,12 @@ public class WxOfflineActivityItem extends TenantEntity {
@TableField(exist = false) @TableField(exist = false)
private Integer realAwardsItemLimit; private Integer realAwardsItemLimit;


/**
* 发放奖项规则
*/
@TableField(exist = false)
private List<OfflineActivityGrantRule> activityGrantRuleList;

/** /**
* 发放奖项 * 发放奖项
*/ */


+ 24
- 0
mallinkService/src/main/java/com/iformall/domain/vo/OfflineActivityGrantRule.java Просмотреть файл

@@ -0,0 +1,24 @@
package com.iformall.domain.vo;

import com.iformall.domain.po.WxOfflineActivityRecord;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

@Data
public class OfflineActivityGrantRule implements Serializable {

private static final long serialVersionUID = 1L;
private Integer grantAwardsMode;
private Long activityId;
private String activityName;
private Long activityItemId;
private String activityItemName;
private Integer activityItemType;
private Integer awardsItemLimit;
private Long recordId;
private WxOfflineActivityRecord record;

}

+ 44
- 8
mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java Просмотреть файл

@@ -9,6 +9,7 @@ import com.iformall.common.Result;
import com.iformall.domain.po.*; import com.iformall.domain.po.*;
import com.iformall.domain.po.base.TenantEntity; import com.iformall.domain.po.base.TenantEntity;
import com.iformall.domain.vo.OfflineActivityGrantRecord; import com.iformall.domain.vo.OfflineActivityGrantRecord;
import com.iformall.domain.vo.OfflineActivityGrantRule;
import com.iformall.domain.vo.OfflineActivityRecordStatistics; import com.iformall.domain.vo.OfflineActivityRecordStatistics;
import com.iformall.enums.*; import com.iformall.enums.*;
import com.iformall.exception.MallinkException; import com.iformall.exception.MallinkException;
@@ -209,7 +210,7 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity


//处理发奖数量 //处理发奖数量
activityItem.setIsMeet(true); activityItem.setIsMeet(true);
handleLotteryDrawCount(activityItem,wxOfflineActivityGrantAward.getRecordList());
handleLotteryDrawCount(activity,activityItem,wxOfflineActivityGrantAward.getRecordList());
if(activityItem.getRealAwardsItemLimit() == 0){ if(activityItem.getRealAwardsItemLimit() == 0){
activityItem.setIsMeet(false); 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; int limitCount = 0;
List<OfflineActivityGrantRule> grantRuleList = new ArrayList<>();

if(EnumOfflineActivityMode.ONE.getCode().equals(activityItem.getModeType())){ if(EnumOfflineActivityMode.ONE.getCode().equals(activityItem.getModeType())){
for(WxOfflineActivityRecord record :recordList){ for(WxOfflineActivityRecord record :recordList){
Integer record_count = 0;
Integer record_limit_count = 0;
for (WxOfflineActivityAwardsModel activityAwardsModel :activityItem.getActivityAwardsModelList()){ for (WxOfflineActivityAwardsModel activityAwardsModel :activityItem.getActivityAwardsModelList()){
if((activityAwardsModel.getMinAmount() == null || record.getOrderMoney().compareTo(activityAwardsModel.getMinAmount()) >= 0) if((activityAwardsModel.getMinAmount() == null || record.getOrderMoney().compareTo(activityAwardsModel.getMinAmount()) >= 0)
&& (activityAwardsModel.getMaxAmount() == null || record.getOrderMoney().compareTo(activityAwardsModel.getMaxAmount()) <= 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{ }else{
BigDecimal orderMoneySum = activityItem.getRecordList().stream().map(WxOfflineActivityRecord::getOrderMoney).reduce(BigDecimal.ZERO, BigDecimal::add); BigDecimal orderMoneySum = activityItem.getRecordList().stream().map(WxOfflineActivityRecord::getOrderMoney).reduce(BigDecimal.ZERO, BigDecimal::add);
if(activityItem.getAwardsItemPrice() != null && activityItem.getAwardsItemPrice().compareTo(BigDecimal.ZERO) > 0){ 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())); Map<Integer, WxOfflineActivityAwardsModel> jointCountMap = activityItem.getActivityAwardsModelSecondList().stream().collect(toMap(WxOfflineActivityAwardsModel::getMerchantCount, Function.identity()));
WxOfflineActivityAwardsModel activityAwardsModel = jointCountMap.get(jointCount); WxOfflineActivityAwardsModel activityAwardsModel = jointCountMap.get(jointCount);
if(activityAwardsModel != null && activityAwardsModel.getAwardsCount() != null){ 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){ && activityItem.getAwardsItemLimit() < limitCount){
limitCount = activityItem.getAwardsItemLimit(); limitCount = activityItem.getAwardsItemLimit();
} }

activityItem.setRealAwardsItemLimit(limitCount); activityItem.setRealAwardsItemLimit(limitCount);
activityItem.setActivityGrantRuleList(grantRuleList);
} }


private void handleGiftAwards(WxOfflineActivity activity, WxOfflineActivityItem activityItem, List<WxOfflineActivityRecord> recordList){ private void handleGiftAwards(WxOfflineActivity activity, WxOfflineActivityItem activityItem, List<WxOfflineActivityRecord> recordList){
@@ -728,6 +754,16 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity
wxOfflineActivityGrantAward.setActivityItemList(activityItemList); 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){ private void handlerGrantItem(WxOfflineActivityGrantItem grantGrantItem,EnumOfflineActivityAwardsModeType modeType,WxOfflineActivity activity,WxOfflineActivityItem activityItem,WxOfflineActivityAwardsItem awardsItem){
// grantGrantItem.setGrantId(wxOfflineActivityGrantAward.getId()); // grantGrantItem.setGrantId(wxOfflineActivityGrantAward.getId());
grantGrantItem.setGrantAwardsMode(modeType.getCode()); grantGrantItem.setGrantAwardsMode(modeType.getCode());


Загрузка…
Отмена
Сохранить