Przeglądaj źródła

//offline

release_toaliyun_real
xiaohu 1 rok temu
rodzic
commit
8ddcbd2550
12 zmienionych plików z 195 dodań i 123 usunięć
  1. +38
    -0
      mallinkAdmin/src/main/resources/db/migration/V202501000000001.sql
  2. +6
    -0
      mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantItem.java
  3. +12
    -0
      mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantSettlement.java
  4. +1
    -1
      mallinkService/src/main/java/com/iformall/domain/vo/OfflineActivityItemStatistics.java
  5. +37
    -37
      mallinkService/src/main/java/com/iformall/enums/EnumOfflineActivityAwardsItemType.java
  6. +3
    -3
      mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityAwardsItemServiceImpl.java
  7. +70
    -71
      mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java
  8. +4
    -0
      mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantSettlementServiceImpl.java
  9. +2
    -3
      mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityItemServiceImpl.java
  10. +2
    -2
      mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityItemStatisticsServiceImpl.java
  11. +9
    -3
      mallinkService/src/main/resources/mapper/WxOfflineActivityGrantItemMapper.xml
  12. +11
    -3
      mallinkService/src/main/resources/mapper/WxOfflineActivityGrantSettlementMapper.xml

+ 38
- 0
mallinkAdmin/src/main/resources/db/migration/V202501000000001.sql Wyświetl plik

@@ -62,3 +62,41 @@ CREATE TABLE `wx_offline_activity_grant_item_record` (

ALTER TABLE `wx_offline_activity_grant_cash_back`
DROP COLUMN `calculation_mode`;


ALTER TABLE `wx_offline_activity_grant_item`
ADD COLUMN `grant_awards_mode` smallint(1) NULL COMMENT '发放奖励模式' AFTER `grant_id`;

update wx_offline_activity_grant_item set grant_awards_mode = 2
where award_itam_id in (select id from wx_offline_activity_awards_item where `type` = 2);
update wx_offline_activity_grant_item set grant_awards_mode = 1 where award_itam_id is null ;

ALTER TABLE `wx_offline_activity_grant_item`
MODIFY COLUMN `grant_awards_mode` smallint(1) NOT NULL COMMENT '发放奖励模式' AFTER `grant_id`;


ALTER TABLE `wx_offline_activity_grant_settlement`
ADD COLUMN `grant_item_id` bigint(20) NULL COMMENT '发放奖励记录id' AFTER `grant_id`,
ADD COLUMN `grant_awards_mode` smallint(20) NULL COMMENT '发放奖励模式' AFTER `grant_item_id`;

update wx_offline_activity_grant_settlement gs
left join wx_offline_activity_grant_item gi
on gs.grant_id = gi.grant_id and gs.activity_item_id = gi.activity_item_id and gs.award_itam_id = gi.award_itam_id
set gs.grant_item_id = gi.id,gs.grant_awards_mode = gi.grant_awards_mode
where gi.record_id is null;

update wx_offline_activity_grant_settlement gs
left join wx_offline_activity_grant_item gi
on gs.grant_id = gi.grant_id and gs.activity_item_id = gi.activity_item_id and gs.award_itam_id = gi.award_itam_id and gs.record_id = gi.record_id
set gs.grant_item_id = gi.id,gs.grant_awards_mode = gi.grant_awards_mode
where gi.record_id is not null;

ALTER TABLE `wx_offline_activity_grant_settlement`
MODIFY COLUMN `grant_item_id` bigint(20) NOT NULL COMMENT '发放奖励记录id' AFTER `grant_id`,
MODIFY COLUMN `grant_awards_mode` smallint(20) NOT NULL COMMENT '发放奖励模式' AFTER `grant_item_id`;







+ 6
- 0
mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantItem.java Wyświetl plik

@@ -34,6 +34,12 @@ public class WxOfflineActivityGrantItem extends TenantEntity {
@TableField(value = "grant_id")
private Long grantId;

/**
* 发放奖励模式
*/
@TableField(value = "grant_awards_mode")
private Integer grantAwardsMode;

/**
* 活动id
*/


+ 12
- 0
mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantSettlement.java Wyświetl plik

@@ -85,6 +85,18 @@ public class WxOfflineActivityGrantSettlement extends TenantEntity {
@TableField(value = "grant_id")
private Long grantId;

/**
* 发放奖励记录id
*/
@TableField(value = "grant_item_id")
private Long grantItemId;

/**
* 发放奖励模式
*/
@TableField(value = "grant_awards_mode")
private Integer grantAwardsMode;

/**
* 发放总价值
*/


+ 1
- 1
mallinkService/src/main/java/com/iformall/domain/vo/OfflineActivityItemStatistics.java Wyświetl plik

@@ -22,7 +22,7 @@ public class OfflineActivityItemStatistics implements Serializable {
private BigDecimal mallSumPrice;//商场承担
private BigDecimal merchantSumPrice;//商户承担

private BigDecimal cashSumMoney;//订单返现*
private BigDecimal cashSumMoney;//金额返现*
private BigDecimal cashSecondSumMoney;//联单返现*

}

+ 37
- 37
mallinkService/src/main/java/com/iformall/enums/EnumOfflineActivityAwardsItemType.java Wyświetl plik

@@ -1,37 +1,37 @@
package com.iformall.enums;
/**
* @author gongbiao
*/
public enum EnumOfflineActivityAwardsItemType {
FIRST(1, "基本奖项"),
SECOND(2, "第二奖项"),
;
public static EnumOfflineActivityAwardsItemType getEnum(Integer code) {
for (EnumOfflineActivityAwardsItemType value : values()) {
if (value.getCode().equals(code)) {
return value;
}
}
return null;
}
private Integer code;
private String message;
EnumOfflineActivityAwardsItemType(Integer code, String message) {
this.code = code;
this.message = message;
}
public Integer getCode() {
return code;
}
public String getMessage() {
return message;
}
}
//package com.iformall.enums;
//
//
///**
// * @author gongbiao
// */
//public enum EnumOfflineActivityAwardsItemType {
//
// FIRST(1, "基本奖项"),
// SECOND(2, "第二奖项"),
// ;
//
// public static EnumOfflineActivityAwardsItemType getEnum(Integer code) {
// for (EnumOfflineActivityAwardsItemType value : values()) {
// if (value.getCode().equals(code)) {
// return value;
// }
// }
// return null;
// }
//
// private Integer code;
// private String message;
//
// EnumOfflineActivityAwardsItemType(Integer code, String message) {
// this.code = code;
// this.message = message;
// }
//
// public Integer getCode() {
// return code;
// }
//
// public String getMessage() {
// return message;
// }
//}

+ 3
- 3
mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityAwardsItemServiceImpl.java Wyświetl plik

@@ -3,7 +3,7 @@ package com.iformall.service.impl;
import com.iformall.common.IdWorker;
import com.iformall.domain.po.WxOfflineActivityAwardsItem;
import com.iformall.domain.po.WxOfflineActivityItem;
import com.iformall.enums.EnumOfflineActivityAwardsItemType;
import com.iformall.enums.EnumOfflineActivityAwardsModeType;
import com.iformall.enums.EnumOfflineActivityType;
import com.iformall.service.WxOfflineActivityAwardsItemService;
import com.iformall.mapper.WxOfflineActivityAwardsItemMapper;
@@ -43,7 +43,7 @@ public class WxOfflineActivityAwardsItemServiceImpl implements WxOfflineActivity
}
awaItem.updateTenantInfo(activityItem);
awaItem.setActivityItemId(activityItem.getId());
awaItem.setType(EnumOfflineActivityAwardsItemType.FIRST.getCode());
awaItem.setType(EnumOfflineActivityAwardsModeType.AMOUNT.getCode());

if(EnumOfflineActivityType.LOTTERY_DRAW.getCode().equals(activityItem.getType())){
awaItem.setCashBackRatio(BigDecimal.ZERO);
@@ -73,7 +73,7 @@ public class WxOfflineActivityAwardsItemServiceImpl implements WxOfflineActivity
}
secondAwaItem.updateTenantInfo(activityItem);
secondAwaItem.setActivityItemId(activityItem.getId());
secondAwaItem.setType(EnumOfflineActivityAwardsItemType.SECOND.getCode());
secondAwaItem.setType(EnumOfflineActivityAwardsModeType.COUNT.getCode());

if(secondAwaItem.getCreateDate() == null){
secondAwaItem.setCreateDate(activityItem.getUpdateDate());


+ 70
- 71
mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java Wyświetl plik

@@ -219,7 +219,7 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity
handlerAwardsSharePrice(activityItem.getActivityAwardsItemList());

//处理发放奖项
handleGiftAwards(activityItem,activityItem.getRecordList());
handleGiftAwards(activityItem,wxOfflineActivityGrantAward.getRecordList());
activityItem.setIsMeet(true);
if(activityItem.getActivityGrantItemList() == null || activityItem.getActivityGrantItemList().isEmpty()){
activityItem.setIsMeet(false);
@@ -230,8 +230,6 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity
BigDecimal cashBackPriceTotal = BigDecimal.ZERO;
List<WxOfflineActivityGrantItem> grantItemList = new ArrayList<>();

BigDecimal orderMoneySum = activityItem.getRecordList().stream().map(WxOfflineActivityRecord::getOrderMoney).reduce(BigDecimal.ZERO, BigDecimal::add);

List<WxOfflineActivityAwardsItem> sortAwardsItemList = activityItem.getActivityAwardsItemList().stream().sorted(Comparator.comparing(WxOfflineActivityAwardsItem::getMinAmount)).collect(toList());
//单笔订单计算
if(EnumOfflineActivityMode.ONE.getCode().equals(activityItem.getModeType())){
@@ -285,7 +283,7 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity

}
}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(EnumOfflineActivityMode.CONDITION_SUM.getCode().equals(activityItem.getModeType())){
// if(activityItem.getRecordIds() != null && !activityItem.getRecordIds().isEmpty()){
// orderMoneySum = wxOfflineActivityGrantAward.getRecordList().stream()
@@ -312,13 +310,13 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity

}

Integer jointCount = getJointCount(activityItem,activityItem.getRecordList());
Integer jointCount = getJointCount(activityItem,wxOfflineActivityGrantAward.getRecordList());
if(jointCount != 0 && activityItem.getActivityAwardsItemSecondList() != null && !activityItem.getActivityAwardsItemSecondList().isEmpty()){
Map<Integer, WxOfflineActivityAwardsItem> jointCountMap = activityItem.getActivityAwardsItemSecondList().stream().collect(toMap(WxOfflineActivityAwardsItem::getMerchantCount, Function.identity()));
WxOfflineActivityAwardsItem grantAwardsSecondItem = jointCountMap.get(jointCount);
if(grantAwardsSecondItem != null){
//计算返现金额
BigDecimal cashBackPrice = orderMoneySum
BigDecimal cashBackPrice = wxOfflineActivityGrantAward.getOrderMoneySum()
.multiply(grantAwardsSecondItem.getCashBackRatio().divide(new BigDecimal(100)));
cashBackPriceTotal = cashBackPriceTotal.add(cashBackPrice);
}
@@ -408,6 +406,7 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity
}
}

//这里是联单, 按选择的订单计算
Integer jointCount = getJointCount(activityItem,recordList);
if(jointCount != 0){
Map<Integer, WxOfflineActivityAwardsModel> jointCountMap = activityItem.getActivityAwardsModelSecondList().stream().collect(toMap(WxOfflineActivityAwardsModel::getMerchantCount, Function.identity()));
@@ -425,6 +424,7 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity
}

private void handleGiftAwards(WxOfflineActivityItem activityItem, List<WxOfflineActivityRecord> recordList){
List<WxOfflineActivityGrantItem> grantItem = new ArrayList<>();
Map<Integer,WxOfflineActivityGrantItem> grantItemMap = new HashMap<>();

Map<Integer, WxOfflineActivityAwardsItem> awardsItemMap = activityItem.getActivityAwardsItemList().stream().collect(toMap(WxOfflineActivityAwardsItem::getGrade, Function.identity()));
@@ -442,27 +442,28 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity
break;
}
WxOfflineActivityGrantItem wxOfflineActivityGrantItem = grantItemMap.get(awardsGrade);
WxOfflineActivityAwardsItem awardsItem = awardsItemMap.get(awardsGrade);
if(wxOfflineActivityGrantItem != null){
wxOfflineActivityGrantItem.setAwardCount(wxOfflineActivityGrantItem.getAwardCount() + 1);
wxOfflineActivityGrantItem.setAwardPrice(awardsItem.getPrice().multiply(new BigDecimal(wxOfflineActivityGrantItem.getAwardCount())));
}else{
WxOfflineActivityAwardsItem awardsItem = awardsItemMap.get(awardsGrade);
if(awardsItem != null){
wxOfflineActivityGrantItem = createGrantItemFromGrant(activityItem, awardsItem);
wxOfflineActivityGrantItem = createGrantItemFromGrant(activityItem,EnumOfflineActivityAwardsModeType.AMOUNT, awardsItem);
grantItemMap.put(awardsGrade, wxOfflineActivityGrantItem);
}
}
}
}else{
BigDecimal orderMoneySum = recordList.stream().map(WxOfflineActivityRecord::getOrderMoney).reduce(BigDecimal.ZERO, BigDecimal::add);
// if(EnumOfflineActivityMode.CONDITION_SUM.getCode().equals(activityItem.getModeType())){
// if(activityItem.getRecordIds() != null && !activityItem.getRecordIds().isEmpty()){
// orderMoneySum = recordList.stream()
// .filter(record -> activityItem.getRecordIds().contains(record.getId()))
// .map(WxOfflineActivityRecord::getOrderMoney).reduce(BigDecimal.ZERO, BigDecimal::add);
// }else{
// orderMoneySum = BigDecimal.ZERO;
// }
// }
if(EnumOfflineActivityMode.CONDITION_SUM.getCode().equals(activityItem.getModeType())){
if(activityItem.getRecordIds() != null && !activityItem.getRecordIds().isEmpty()){
orderMoneySum = recordList.stream()
.filter(record -> activityItem.getRecordIds().contains(record.getId()))
.map(WxOfflineActivityRecord::getOrderMoney).reduce(BigDecimal.ZERO, BigDecimal::add);
}else{
orderMoneySum = BigDecimal.ZERO;
}
}
Integer awardsGrade = null;
for (WxOfflineActivityAwardsModel activityAwardsModel :activityItem.getActivityAwardsModelList()){
if((activityAwardsModel.getMinAmount() == null || orderMoneySum.compareTo(activityAwardsModel.getMinAmount()) >= 0)
@@ -473,33 +474,46 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity
if(awardsGrade != null){
WxOfflineActivityAwardsItem awardsItem = awardsItemMap.get(awardsGrade);
if(awardsItem != null){
WxOfflineActivityGrantItem wxOfflineActivityGrantItem = createGrantItemFromGrant(activityItem, awardsItem);
WxOfflineActivityGrantItem wxOfflineActivityGrantItem = createGrantItemFromGrant(activityItem,EnumOfflineActivityAwardsModeType.AMOUNT, awardsItem);
grantItemMap.put(awardsGrade, wxOfflineActivityGrantItem);
}
}
}

if(!grantItemMap.isEmpty()){
grantItem.addAll(grantItemMap.values());
}

//这里是联单, 按所有订单计算
WxOfflineActivityGrantItem wxOfflineActivityGrantItem = null;
Integer jointCount = getJointCount(activityItem,recordList);
if(jointCount != 0){
Map<Integer, WxOfflineActivityAwardsModel> jointCountMap = activityItem.getActivityAwardsModelSecondList().stream().collect(toMap(WxOfflineActivityAwardsModel::getMerchantCount, Function.identity()));
WxOfflineActivityAwardsModel activityAwardsModel = jointCountMap.get(jointCount);
if(activityAwardsModel != null && activityAwardsModel.getAwardsGrade() != null){
WxOfflineActivityGrantItem wxOfflineActivityGrantItem = grantItemMap.get(activityAwardsModel.getAwardsGrade());
if(wxOfflineActivityGrantItem != null){
wxOfflineActivityGrantItem.setAwardCount(wxOfflineActivityGrantItem.getAwardCount() + 1);
}else{
WxOfflineActivityAwardsItem awardsItem = awardsItemMap.get(activityAwardsModel.getAwardsGrade());
if(awardsItem != null){
wxOfflineActivityGrantItem = createGrantItemFromGrant(activityItem, awardsItem);
grantItemMap.put(activityAwardsModel.getAwardsGrade(), wxOfflineActivityGrantItem);
}
WxOfflineActivityAwardsItem awardsItem = awardsItemMap.get(activityAwardsModel.getAwardsGrade());
if(awardsItem != null){
wxOfflineActivityGrantItem = createGrantItemFromGrant(activityItem, EnumOfflineActivityAwardsModeType.COUNT,awardsItem);
}

// WxOfflineActivityGrantItem wxOfflineActivityGrantItem = grantItemMap.get(activityAwardsModel.getAwardsGrade());
// WxOfflineActivityAwardsItem awardsItem = awardsItemMap.get(activityAwardsModel.getAwardsGrade());
// if(wxOfflineActivityGrantItem != null){
// wxOfflineActivityGrantItem.setAwardCount(wxOfflineActivityGrantItem.getAwardCount() + 1);
// wxOfflineActivityGrantItem.setAwardPrice(awardsItem.getPrice().multiply(new BigDecimal(wxOfflineActivityGrantItem.getAwardCount())));
// }else{
// if(awardsItem != null){
// wxOfflineActivityGrantItem = createGrantItemFromGrant(activityItem, awardsItem);
// grantItemMap.put(activityAwardsModel.getAwardsGrade(), wxOfflineActivityGrantItem);
// }
// }
}
}

if(!grantItemMap.isEmpty()){
activityItem.setActivityGrantItemList(new ArrayList<>(grantItemMap.values()));
if(wxOfflineActivityGrantItem != null){
grantItem.add(wxOfflineActivityGrantItem);
}
activityItem.setActivityGrantItemList(grantItem);
}

private Integer getJointCount(WxOfflineActivityItem activityItem, List<WxOfflineActivityRecord> recordList){
@@ -519,8 +533,9 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity
return jointCount;
}

private WxOfflineActivityGrantItem createGrantItemFromGrant(WxOfflineActivityItem activityItem,WxOfflineActivityAwardsItem grantAwardsItem){
private WxOfflineActivityGrantItem createGrantItemFromGrant(WxOfflineActivityItem activityItem,EnumOfflineActivityAwardsModeType modeType,WxOfflineActivityAwardsItem grantAwardsItem){
WxOfflineActivityGrantItem grantItem = new WxOfflineActivityGrantItem();
grantItem.setGrantAwardsMode(modeType.getCode());
grantItem.setActivityItemId(activityItem.getId());
grantItem.setActivityItemName(activityItem.getName());
grantItem.setActivityItemType(activityItem.getType());
@@ -702,8 +717,7 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity
activityGrantItemList = grantActivityItem.getActivityGrantItemList();
}

if(EnumOfflineActivityType.LOTTERY_DRAW.getCode().equals(activityItem.getType())
|| EnumOfflineActivityType.GIFT.getCode().equals(activityItem.getType())){
if(EnumOfflineActivityType.LOTTERY_DRAW.getCode().equals(activityItem.getType())){
if(activityGrantItemList == null || activityGrantItemList.isEmpty()){
continue;
}
@@ -711,12 +725,12 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity
// throw new MallinkException(Result.ERROR, "活动项"+activityItem.getName()+"金额不满足");
// }

boolean isRepeat = activityGrantItemList.stream()
.collect(groupingBy(WxOfflineActivityGrantItem::getAwardItamId, counting()))
.entrySet().stream().anyMatch(e -> e.getValue() > 1);
if(isRepeat){
throw new MallinkException(Result.ERROR, "请检查活动奖项存在重复");
}
// boolean isRepeat = activityGrantItemList.stream()
// .collect(groupingBy(WxOfflineActivityGrantItem::getAwardItamId, counting()))
// .entrySet().stream().anyMatch(e -> e.getValue() > 1);
// if(isRepeat){
// throw new MallinkException(Result.ERROR, "请检查活动奖项存在重复");
// }

for (WxOfflineActivityGrantItem grantGrantItem : activityGrantItemList) {
if(grantGrantItem.getAwardItamId() == null){
@@ -726,45 +740,27 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity
if(awardsItem == null){
throw new MallinkException(Result.ERROR, "请检查活动"+activityItem.getName()+"奖项参数");
}
grantGrantItem.setGrantAwardsMode(EnumOfflineActivityAwardsModeType.AMOUNT.getCode());
handlerGrantItem(grantGrantItem,activity,activityItem,awardsItem);
}
activityItem.setActivityGrantItemList(activityGrantItemList);

}
// else if(EnumOfflineActivityType.GIFT.getCode().equals(activityItem.getType())){
// if(activityGrantItemList == null || activityGrantItemList.isEmpty()){
// continue;
// }
//
// boolean isRepeat = activityGrantItemList.stream()
// .collect(groupingBy(WxOfflineActivityGrantItem::getAwardItamId, counting()))
// .entrySet().stream().anyMatch(e -> e.getValue() > 1);
// if(isRepeat){
// throw new MallinkException(Result.ERROR, "请检查活动奖项存在重复");
// }
//
// for (WxOfflineActivityGrantItem grantGrantItem : activityGrantItemList) {
// if(grantGrantItem.getAwardItamId() == null){
// throw new MallinkException(Result.ERROR, "请检查活动"+activityItem.getName()+"奖项参数");
// }
// WxOfflineActivityAwardsItem awardsItem = awardsItemMap.get(grantGrantItem.getAwardItamId());
// if(awardsItem == null){
// throw new MallinkException(Result.ERROR, "请检查活动"+activityItem.getName()+"奖项参数");
// }
//
// handlerGrantItem(grantGrantItem,activity,activityItem,awardsItem);
// }
//
// activityItem.setActivityGrantItemList(activityGrantItemList);
//
// }
else if(EnumOfflineActivityType.GIFT.getCode().equals(activityItem.getType())){
handleGiftAwards(activityItem,wxOfflineActivityGrantAward.getRecordList());
if(activityItem.getActivityGrantItemList().isEmpty()){
continue;
}

for (WxOfflineActivityGrantItem grantGrantItem : activityItem.getActivityGrantItemList()) {
WxOfflineActivityAwardsItem awardsItem = awardsItemMap.get(grantGrantItem.getAwardItamId());
handlerGrantItem(grantGrantItem,activity,activityItem,awardsItem);
}
}
else if (EnumOfflineActivityType.CASHBACK.getCode().equals(activityItem.getType())) {
BigDecimal cashBackPriceTotal = BigDecimal.ZERO;
activityGrantItemList = new ArrayList<>();

BigDecimal orderMoneySum = activityItem.getRecordList().stream().map(WxOfflineActivityRecord::getOrderMoney).reduce(BigDecimal.ZERO, BigDecimal::add);

List<WxOfflineActivityAwardsItem> sortAwardsItemList = activityItem.getActivityAwardsItemList().stream().sorted(Comparator.comparing(WxOfflineActivityAwardsItem::getMinAmount)).collect(toList());
//单笔订单计算
if(EnumOfflineActivityMode.ONE.getCode().equals(activityItem.getModeType())){
@@ -779,6 +775,7 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity
if(grantAwardsItem != null){
WxOfflineActivityGrantItem grantGrantItem = new WxOfflineActivityGrantItem();
grantGrantItem.setRecordId(record.getId());
grantGrantItem.setGrantAwardsMode(EnumOfflineActivityAwardsModeType.AMOUNT.getCode());
//计算返现金额
BigDecimal cashBackPrice = record.getOrderMoney()
.multiply(grantAwardsItem.getCashBackRatio().divide(new BigDecimal(100)));
@@ -793,7 +790,7 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity

}
}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(EnumOfflineActivityMode.CONDITION_SUM.getCode().equals(activityItem.getModeType())){
// if(activityItem.getRecordIds() != null && !activityItem.getRecordIds().isEmpty()){
// orderMoneySum = wxOfflineActivityGrantAward.getRecordList().stream()
@@ -813,6 +810,7 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity
}
if(grantAwardsItem != null){
WxOfflineActivityGrantItem grantGrantItem = new WxOfflineActivityGrantItem();
grantGrantItem.setGrantAwardsMode(EnumOfflineActivityAwardsModeType.AMOUNT.getCode());
//计算返现金额
BigDecimal cashBackPrice = orderMoneySum
.multiply(grantAwardsItem.getCashBackRatio().divide(new BigDecimal(100)));
@@ -824,14 +822,15 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity
}
}

Integer jointCount = getJointCount(activityItem,activityItem.getRecordList());
Integer jointCount = getJointCount(activityItem,wxOfflineActivityGrantAward.getRecordList());
if(jointCount != 0 && activityItem.getActivityAwardsItemSecondList() != null && !activityItem.getActivityAwardsItemSecondList().isEmpty()){
Map<Integer, WxOfflineActivityAwardsItem> jointCountMap = activityItem.getActivityAwardsItemSecondList().stream().collect(toMap(WxOfflineActivityAwardsItem::getMerchantCount, Function.identity()));
WxOfflineActivityAwardsItem awardsSecondItem = jointCountMap.get(jointCount);
if(awardsSecondItem != null){
WxOfflineActivityGrantItem grantGrantItem = new WxOfflineActivityGrantItem();
grantGrantItem.setGrantAwardsMode(EnumOfflineActivityAwardsModeType.COUNT.getCode());
//计算返现金额
BigDecimal cashBackPrice = orderMoneySum
BigDecimal cashBackPrice = wxOfflineActivityGrantAward.getOrderMoneySum()
.multiply(awardsSecondItem.getCashBackRatio().divide(new BigDecimal(100)));
awardsSecondItem.setPrice(cashBackPrice);
handlerGrantItem(grantGrantItem,activity,activityItem,awardsSecondItem);


+ 4
- 0
mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantSettlementServiceImpl.java Wyświetl plik

@@ -116,6 +116,8 @@ public class WxOfflineActivityGrantSettlementServiceImpl implements WxOfflineAct
settlement.setActivityItemId(wxOfflineActivityGrantItem.getActivityItemId());
settlement.setAwardItamId(wxOfflineActivityGrantItem.getAwardItamId());
settlement.setGrantId(wxOfflineActivityGrantItem.getGrantId());
settlement.setGrantItemId(wxOfflineActivityGrantItem.getId());
settlement.setGrantAwardsMode(wxOfflineActivityGrantItem.getGrantAwardsMode());
settlement.setGrantPrice(wxOfflineActivityGrantItem.getAwardPrice());
settlement.setMallShareRate(wxOfflineActivityGrantItem.getMallShareRate());
settlement.setMerchantShareRate(wxOfflineActivityGrantItem.getMerchantShareRate());
@@ -145,6 +147,8 @@ public class WxOfflineActivityGrantSettlementServiceImpl implements WxOfflineAct
settlement.setActivityItemId(wxOfflineActivityGrantItem.getActivityItemId());
settlement.setAwardItamId(wxOfflineActivityGrantItem.getAwardItamId());
settlement.setGrantId(wxOfflineActivityGrantItem.getGrantId());
settlement.setGrantItemId(wxOfflineActivityGrantItem.getId());
settlement.setGrantAwardsMode(wxOfflineActivityGrantItem.getGrantAwardsMode());
settlement.setGrantPrice(wxOfflineActivityGrantItem.getAwardPrice());
settlement.setMallShareRate(wxOfflineActivityGrantItem.getMallShareRate());
settlement.setMerchantShareRate(wxOfflineActivityGrantItem.getMerchantShareRate());


+ 2
- 3
mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityItemServiceImpl.java Wyświetl plik

@@ -6,7 +6,6 @@ import com.iformall.domain.po.WxOfflineActivityAwardsItem;
import com.iformall.domain.po.WxOfflineActivityAwardsModel;
import com.iformall.domain.po.WxOfflineActivityItem;
import com.iformall.enums.EnumOfflineActivityAwardsModeType;
import com.iformall.enums.EnumOfflineActivityAwardsItemType;
import com.iformall.enums.EnumOfflineActivityAwardsRule;
import com.iformall.enums.EnumOfflineActivityType;
import com.iformall.service.WxOfflineActivityAwardsItemService;
@@ -93,8 +92,8 @@ public class WxOfflineActivityItemServiceImpl implements WxOfflineActivityItemSe
List<WxOfflineActivityAwardsItem> activityAwardsItemList = wxOfflineActivityAwardsItemService.getActivityAwardsItemList(item.getId(),tenantId);
if(EnumOfflineActivityType.CASHBACK.getCode().equals(item.getType())){
Map<Integer, List<WxOfflineActivityAwardsItem>> collect = activityAwardsItemList.stream().collect(Collectors.groupingBy(WxOfflineActivityAwardsItem::getType));
item.setActivityAwardsItemList(collect.get(EnumOfflineActivityAwardsItemType.FIRST.getCode()));
item.setActivityAwardsItemSecondList(collect.get(EnumOfflineActivityAwardsItemType.SECOND.getCode()));
item.setActivityAwardsItemList(collect.get(EnumOfflineActivityAwardsModeType.AMOUNT.getCode()));
item.setActivityAwardsItemSecondList(collect.get(EnumOfflineActivityAwardsModeType.COUNT.getCode()));
}else{
item.setActivityAwardsItemList(activityAwardsItemList);



+ 2
- 2
mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityItemStatisticsServiceImpl.java Wyświetl plik

@@ -3,7 +3,7 @@ package com.iformall.service.impl;
import com.iformall.common.Result;
import com.iformall.domain.po.*;
import com.iformall.domain.vo.*;
import com.iformall.enums.EnumOfflineActivityAwardsItemType;
import com.iformall.enums.EnumOfflineActivityAwardsModeType;
import com.iformall.enums.EnumOfflineActivityType;
import com.iformall.exception.MallinkException;
import com.iformall.mapper.*;
@@ -78,7 +78,7 @@ public class WxOfflineActivityItemStatisticsServiceImpl implements WxOfflineActi
WxOfflineActivityAwardsItem activityAwardsItemQ = new WxOfflineActivityAwardsItem();
activityAwardsItemQ.updateTenantInfo(activityItemStatisticsBo);
activityAwardsItemQ.setActivityItemId(activityItemStatisticsBo.getActivityItemId());
activityAwardsItemQ.setType(EnumOfflineActivityAwardsItemType.FIRST.getCode());
activityAwardsItemQ.setType(EnumOfflineActivityAwardsModeType.AMOUNT.getCode());
List<WxOfflineActivityAwardsItem> activityAwardsItemList = wxOfflineActivityAwardsItemMapper.findList(activityAwardsItemQ);
if(activityAwardsItemList != null && !activityAwardsItemList.isEmpty()) {
return activityAwardsItemList.stream().map(WxOfflineActivityAwardsItem::getId).collect(Collectors.toList());


+ 9
- 3
mallinkService/src/main/resources/mapper/WxOfflineActivityGrantItemMapper.xml Wyświetl plik

@@ -9,6 +9,8 @@
<result property="tenantId" column="tenant_id" jdbcType="VARCHAR"/>
<result property="parentTenantId" column="parent_tenant_id" jdbcType="VARCHAR"/>
<result property="grantId" column="grant_id" jdbcType="BIGINT"/>
<result property="grantAwardsMode" column="grant_awards_mode" jdbcType="SMALLINT"/>

<result property="activityId" column="activity_id" jdbcType="BIGINT"/>
<result property="activityName" column="activity_name" jdbcType="VARCHAR"/>
<result property="activityItemId" column="activity_item_id" jdbcType="BIGINT"/>
@@ -34,7 +36,7 @@

<sql id="allColumns">
id,tenant_id,parent_tenant_id,
grant_id,activity_id,activity_name,
grant_id,grant_awards_mode,activity_id,activity_name,
activity_item_id,activity_item_name,activity_item_type,
award_itam_id,award_name,award_grade,
award_min_amount,award_max_amount,awards_item_rule,cash_back_ratio,
@@ -61,6 +63,10 @@
and `grant_id` = #{grantId}
</if>

<if test=" null != grantAwardsMode">
and `grant_awards_mode` = #{grantAwardsMode}
</if>

<if test=" null != activityId">
and `activity_id` = #{activityId}
</if>
@@ -92,7 +98,7 @@
<insert id="insertList" parameterType="java.util.List">
insert into wx_offline_activity_grant_item
(id,
grant_id,activity_id,activity_name,
grant_id,grant_awards_mode,activity_id,activity_name,
activity_item_id,activity_item_name,activity_item_type,
award_itam_id,award_name,award_grade,
award_min_amount,award_max_amount,awards_item_rule,cash_back_ratio,
@@ -102,7 +108,7 @@
values
<foreach collection="grantItemList" item="item" index="index" separator=",">
(#{item.id,jdbcType=BIGINT},
#{item.grantId,jdbcType=BIGINT},#{item.activityId,jdbcType=BIGINT},#{item.activityName,jdbcType=VARCHAR},
#{item.grantId,jdbcType=BIGINT},#{item.grantAwardsMode,jdbcType=INTEGER},#{item.activityId,jdbcType=BIGINT},#{item.activityName,jdbcType=VARCHAR},
#{item.activityItemId,jdbcType=BIGINT},#{item.activityItemName,jdbcType=VARCHAR},#{item.activityItemType,jdbcType=INTEGER},
#{item.awardItamId,jdbcType=BIGINT},#{item.awardName,jdbcType=VARCHAR},#{item.awardGrade,jdbcType=INTEGER},
#{item.awardMinAmount,jdbcType=DECIMAL},#{item.awardMaxAmount,jdbcType=DECIMAL},#{item.awardsItemRule,jdbcType=INTEGER},#{item.cashBackRatio,jdbcType=DECIMAL},


+ 11
- 3
mallinkService/src/main/resources/mapper/WxOfflineActivityGrantSettlementMapper.xml Wyświetl plik

@@ -16,6 +16,8 @@
<result property="activityItemId" column="activity_item_id" jdbcType="BIGINT"/>
<result property="awardItamId" column="award_itam_id" jdbcType="BIGINT"/>
<result property="grantId" column="grant_id" jdbcType="BIGINT"/>
<result property="grantItemId" column="grant_item_id" jdbcType="BIGINT"/>
<result property="grantAwardsMode" column="grant_awards_mode" jdbcType="SMALLINT"/>
<result property="grantPrice" column="grant_price" jdbcType="DECIMAL"/>
<result property="mallShareRate" column="mall_share_rate" jdbcType="DECIMAL"/>
<result property="merchantShareRate" column="merchant_share_rate" jdbcType="DECIMAL"/>
@@ -32,7 +34,7 @@
id,tenant_id,parent_tenant_id,
record_id,order_no,order_money,
merchant_id,activity_id,activity_item_id,
award_itam_id,grant_id,grant_price,
award_itam_id,grant_id,grant_item_id,grant_awards_mode,grant_price,
mall_share_rate,merchant_share_rate,order_ratio,
real_grant_price,real_mall_share_price,real_merchant_share_price,
create_date,update_date
@@ -74,6 +76,12 @@
<if test=" null != grantId ">
and `grant_id` = #{grantId}
</if>
<if test=" null != grantItemId ">
and `grant_item_id` = #{grantItemId}
</if>
<if test=" null != grantAwardsMode">
and `grant_awards_mode` = #{grantAwardsMode}
</if>
<if test=" null != createDateBegin">
and `create_date` &gt;= #{createDateBegin}
</if>
@@ -110,7 +118,7 @@
(id,
record_id,order_no,order_money,
merchant_id,activity_id,activity_item_id,
award_itam_id,grant_id,grant_price,
award_itam_id,grant_id,grant_item_id,grant_awards_mode,grant_price,
mall_share_rate,merchant_share_rate,order_ratio,
real_grant_price,real_mall_share_price,real_merchant_share_price,
create_date,update_date)
@@ -119,7 +127,7 @@
(#{item.id,jdbcType=BIGINT},
#{item.recordId,jdbcType=BIGINT},#{item.orderNo,jdbcType=VARCHAR},#{item.orderMoney,jdbcType=DECIMAL},
#{item.merchantId,jdbcType=BIGINT},#{item.activityId,jdbcType=BIGINT},#{item.activityItemId,jdbcType=BIGINT},
#{item.awardItamId,jdbcType=BIGINT},#{item.grantId,jdbcType=BIGINT},#{item.grantPrice,jdbcType=DECIMAL},
#{item.awardItamId,jdbcType=BIGINT},#{item.grantId,jdbcType=BIGINT},#{item.grantItemId,jdbcType=BIGINT},#{item.grantAwardsMode,jdbcType=INTEGER},#{item.grantPrice,jdbcType=DECIMAL},
#{item.mallShareRate,jdbcType=DECIMAL},#{item.merchantShareRate,jdbcType=DECIMAL},#{item.orderRatio,jdbcType=DECIMAL},
#{item.realGrantPrice,jdbcType=DECIMAL},#{item.realMallSharePrice,jdbcType=DECIMAL},#{item.realMerchantSharePrice,jdbcType=DECIMAL},
#{item.createDate,jdbcType=TIMESTAMP},#{item.updateDate,jdbcType=TIMESTAMP})


Ładowanie…
Anuluj
Zapisz