From a56b7689446ac5bae018771ad2019cc199af3fe7 Mon Sep 17 00:00:00 2001 From: xiaohu <1901900812@qq.com> Date: Thu, 7 Nov 2024 16:03:30 +0800 Subject: [PATCH 01/13] //legionActivity --- .../WxOfflineActivityGrantController.java | 21 +++++-- .../po/WxOfflineActivityAwardsItem.java | 12 ++++ .../domain/po/WxOfflineActivityItem.java | 40 +++++++++++++- .../EnumOfflineActivityAwardsItemType.java | 37 +++++++++++++ .../EnumOfflineActivityCalculationMode.java | 37 +++++++++++++ .../WxOfflineActivityAwardsItemService.java | 2 +- ...xOfflineActivityAwardsItemServiceImpl.java | 26 +++++++-- ...xOfflineActivityGrantAwardServiceImpl.java | 55 ++++++++++++------- .../WxOfflineActivityItemServiceImpl.java | 13 ++++- .../WxOfflineActivityAwardsItemMapper.xml | 2 + .../mapper/WxOfflineActivityItemMapper.xml | 4 ++ 11 files changed, 213 insertions(+), 36 deletions(-) create mode 100644 mallinkService/src/main/java/com/iformall/enums/EnumOfflineActivityAwardsItemType.java create mode 100644 mallinkService/src/main/java/com/iformall/enums/EnumOfflineActivityCalculationMode.java diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivityGrantController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivityGrantController.java index 68da935d0..45ea3a053 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivityGrantController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivityGrantController.java @@ -94,8 +94,11 @@ public class WxOfflineActivityGrantController extends BaseController { if(wxOfflineActivityGrantAward.getActivityId() == null){ return new ResultData(Result.ERROR,"活动ID为空"); } - if(wxOfflineActivityGrantAward.getRecordIds() == null || wxOfflineActivityGrantAward.getRecordIds().isEmpty()){ - return new ResultData(Result.ERROR,"请选择订单"); +// if(wxOfflineActivityGrantAward.getRecordIds() == null || wxOfflineActivityGrantAward.getRecordIds().isEmpty()){ +// return new ResultData(Result.ERROR,"请选择订单"); +// } + if(StringUtil.isBlank(wxOfflineActivityGrantAward.getCusPhone())){ + throw new MallinkException(Result.ERROR,"用户手机号为空"); } TenantEntity tenantEntity = getTenantInfo(); wxOfflineActivityGrantAward.updateTenantInfo(tenantEntity); @@ -110,8 +113,11 @@ public class WxOfflineActivityGrantController extends BaseController { if(wxOfflineActivityGrantAward.getActivityId() == null){ return new ResultData(Result.ERROR,"活动ID为空"); } - if(wxOfflineActivityGrantAward.getRecordIds() == null || wxOfflineActivityGrantAward.getRecordIds().isEmpty()){ - return new ResultData(Result.ERROR,"请选择订单"); +// if(wxOfflineActivityGrantAward.getRecordIds() == null || wxOfflineActivityGrantAward.getRecordIds().isEmpty()){ +// return new ResultData(Result.ERROR,"请选择订单"); +// } + if(StringUtil.isBlank(wxOfflineActivityGrantAward.getCusPhone())){ + throw new MallinkException(Result.ERROR,"用户手机号为空"); } // if(StringUtil.isBlank(wxOfflineActivityGrantAward.getSignImg())){ // return new ResultData(Result.ERROR,"签名为空"); @@ -138,9 +144,12 @@ public class WxOfflineActivityGrantController extends BaseController { if(wxOfflineActivityGrantAward.getActivityId() == null){ return new ResultData(Result.ERROR,"活动ID为空"); } - if(wxOfflineActivityGrantAward.getRecordId() == null){ - return new ResultData(Result.ERROR,"订单ID为空"); + if(StringUtil.isBlank(wxOfflineActivityGrantAward.getCusPhone())){ + throw new MallinkException(Result.ERROR,"用户手机号为空"); } +// if(wxOfflineActivityGrantAward.getRecordId() == null){ +// return new ResultData(Result.ERROR,"订单ID为空"); +// } TenantEntity tenantInfo = getTenantInfo(); wxOfflineActivityGrantAward.updateTenantInfo(tenantInfo); List grantAwardList = wxOfflineActivityGrantAwardService.grantAwardDetail(wxOfflineActivityGrantAward); diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityAwardsItem.java b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityAwardsItem.java index dc95ebc54..50d9e9dcf 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityAwardsItem.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityAwardsItem.java @@ -32,6 +32,12 @@ public class WxOfflineActivityAwardsItem extends TenantEntity { @TableField(value = "activity_item_id") private Long activityItemId; + /** + * 奖项类型 + */ + @TableField(value = "type") + private Integer type; + /** * 奖项名称 */ @@ -44,6 +50,12 @@ public class WxOfflineActivityAwardsItem extends TenantEntity { @TableField(value = "grade") private Integer grade; + /** + * 联单笔数 + */ + @TableField(value = "merchant_count") + private Integer merchantCount; + /** * 限制最小金额 */ diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityItem.java b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityItem.java index 16c1978d2..0e6b3506a 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityItem.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityItem.java @@ -71,11 +71,35 @@ public class WxOfflineActivityItem extends TenantEntity { private Integer awardsItemCount; /** - * 奖项计算规则(0代表无规则) + * 返现奖项计算规则(0代表无规则) */ @TableField(value = "awards_item_rule") private Integer awardsItemRule; + /** + * 返现计算模式 + */ + @TableField(value = "calculation_mode") + private Integer calculationMode; + + /** + * 返现封顶金额 + */ + @TableField(value = "max_amount") + private BigDecimal maxAmount; + + /** + * 返现起征税点金额 + */ + @TableField(value = "starting_tax_point") + private BigDecimal startingTaxPoint; + + /** + * 返现税点比例 + */ + @TableField(value = "tax_points") + private BigDecimal taxPoints; + /** * 创建时间 */ @@ -93,6 +117,8 @@ public class WxOfflineActivityItem extends TenantEntity { */ @TableField(exist = false) private List activityAwardsItemList; + @TableField(exist = false) + private List activityAwardsItemSecondList; /** * 是否满足活动条件 */ @@ -110,4 +136,16 @@ public class WxOfflineActivityItem extends TenantEntity { @TableField(exist = false) private List activityGrantItemList; + /** + * 返现金额 + */ + @TableField(exist = false) + private BigDecimal cashBackPrice; + + /** + * 返现详情 + */ + @TableField(exist = false) + private String cashBackMsg; + } \ No newline at end of file diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumOfflineActivityAwardsItemType.java b/mallinkService/src/main/java/com/iformall/enums/EnumOfflineActivityAwardsItemType.java new file mode 100644 index 000000000..0d41b696e --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/enums/EnumOfflineActivityAwardsItemType.java @@ -0,0 +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; + } +} diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumOfflineActivityCalculationMode.java b/mallinkService/src/main/java/com/iformall/enums/EnumOfflineActivityCalculationMode.java new file mode 100644 index 000000000..7073d9a5f --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/enums/EnumOfflineActivityCalculationMode.java @@ -0,0 +1,37 @@ +package com.iformall.enums; + + +/** + * @author gongbiao + */ +public enum EnumOfflineActivityCalculationMode { + + ONE(1, "单笔订单计算"), + SUM(2, "订单总额计算"), + ; + + public static EnumOfflineActivityCalculationMode getEnum(Integer code) { + for (EnumOfflineActivityCalculationMode value : values()) { + if (value.getCode().equals(code)) { + return value; + } + } + return null; + } + + private Integer code; + private String message; + + EnumOfflineActivityCalculationMode(Integer code, String message) { + this.code = code; + this.message = message; + } + + public Integer getCode() { + return code; + } + + public String getMessage() { + return message; + } +} diff --git a/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityAwardsItemService.java b/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityAwardsItemService.java index 9e5dbc3b5..90ff0e430 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityAwardsItemService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityAwardsItemService.java @@ -13,7 +13,7 @@ import java.util.List; */ public interface WxOfflineActivityAwardsItemService { - void saveOrUpdateFromActivityItem(WxOfflineActivityItem activityItem, List activityAwardsItemList); + void saveOrUpdateFromActivityItem(WxOfflineActivityItem activityItem, List activityAwardsItemList, List activityAwardsItemSecondList); List getActivityAwardsItemList(Long activityItemId, String tenantId); } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityAwardsItemServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityAwardsItemServiceImpl.java index 32ff8784c..55d975e65 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityAwardsItemServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityAwardsItemServiceImpl.java @@ -3,6 +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.EnumOfflineActivityType; import com.iformall.service.WxOfflineActivityAwardsItemService; import com.iformall.mapper.WxOfflineActivityAwardsItemMapper; @@ -25,19 +26,20 @@ public class WxOfflineActivityAwardsItemServiceImpl implements WxOfflineActivity WxOfflineActivityAwardsItemMapper wxOfflineActivityAwardsItemMapper; @Override - public void saveOrUpdateFromActivityItem(WxOfflineActivityItem activityItem, List activityAwardsItemList) { + public void saveOrUpdateFromActivityItem(WxOfflineActivityItem activityItem, List activityAwardsItemList, + List activityAwardsItemSecondList) { WxOfflineActivityAwardsItem activityAwardsItemDel = new WxOfflineActivityAwardsItem(); activityAwardsItemDel.updateTenantInfo(activityItem); activityAwardsItemDel.setActivityItemId(activityItem.getId()); wxOfflineActivityAwardsItemMapper.delete(activityAwardsItemDel); - + final IdWorker idWorker = IdWorker.get(); for (WxOfflineActivityAwardsItem awaItem : activityAwardsItemList) { if(awaItem.getId() == null){ - final IdWorker idWorker = IdWorker.get(); awaItem.setId(idWorker.nextId()); } awaItem.updateTenantInfo(activityItem); awaItem.setActivityItemId(activityItem.getId()); + awaItem.setType(EnumOfflineActivityAwardsItemType.FIRST.getCode()); if(EnumOfflineActivityType.LOTTERY_DRAW.getCode().equals(activityItem.getType())){ awaItem.setCashBackRatio(BigDecimal.ZERO); @@ -50,8 +52,6 @@ public class WxOfflineActivityAwardsItemServiceImpl implements WxOfflineActivity } else if (EnumOfflineActivityType.CASHBACK.getCode().equals(activityItem.getType())) { awaItem.setGrade(-1); - awaItem.setMinAmount(null); - awaItem.setMaxAmount(null); awaItem.setPrice(BigDecimal.ZERO); } if(awaItem.getPrice() == null){ @@ -63,6 +63,22 @@ public class WxOfflineActivityAwardsItemServiceImpl implements WxOfflineActivity awaItem.setUpdateDate(activityItem.getUpdateDate()); wxOfflineActivityAwardsItemMapper.insert(awaItem); } + if(activityAwardsItemSecondList != null && !activityAwardsItemSecondList.isEmpty()){ + for (WxOfflineActivityAwardsItem secondAwaItem : activityAwardsItemSecondList) { + if(secondAwaItem.getId() == null){ + secondAwaItem.setId(idWorker.nextId()); + } + secondAwaItem.updateTenantInfo(activityItem); + secondAwaItem.setActivityItemId(activityItem.getId()); + secondAwaItem.setType(EnumOfflineActivityAwardsItemType.SECOND.getCode()); + + if(secondAwaItem.getCreateDate() == null){ + secondAwaItem.setCreateDate(activityItem.getUpdateDate()); + } + secondAwaItem.setUpdateDate(activityItem.getUpdateDate()); + wxOfflineActivityAwardsItemMapper.insert(secondAwaItem); + } + } } @Override diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java index df8f3d9fb..d90f89d14 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java @@ -173,6 +173,7 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity //奖项处理 List activityItemList = wxOfflineActivityItemService.getActivityItemList(activity.getId(), activity.getTenantId()); wxOfflineActivityGrantAward.setActivityItemList(activityItemList); + for(WxOfflineActivityItem activityItem : wxOfflineActivityGrantAward.getActivityItemList()){ if(EnumOfflineActivityType.LOTTERY_DRAW.getCode().equals(activityItem.getType())){ @@ -233,28 +234,36 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity activityItem.setActivityGrantItemList(Collections.singletonList(grantItem)); } else if (EnumOfflineActivityType.CASHBACK.getCode().equals(activityItem.getType())) { - if(wxOfflineActivityGrantAward.getOrderMoneySum().compareTo(activityItem.getLimitMoney()) < 0){ - activityItem.setIsMeet(false); - continue; - } - activityItem.setIsMeet(true); - activityItem.setRealAwardsItemLimit(1); - for (WxOfflineActivityAwardsItem awardsItem : activityItem.getActivityAwardsItemList()) { - //计算返现金额 - BigDecimal cashBackPrice = wxOfflineActivityGrantAward.getOrderMoneySum() - .multiply(awardsItem.getCashBackRatio().divide(new BigDecimal(100))); - if(EnumOfflineActivityAwardsRule.DEF.getCode().equals(activityItem.getAwardsItemRule())){ - awardsItem.setPrice(cashBackPrice.setScale(2, RoundingMode.HALF_UP)); - } else if (EnumOfflineActivityAwardsRule.YUAN.getCode().equals(activityItem.getAwardsItemRule())) { - awardsItem.setPrice(cashBackPrice.setScale(0, RoundingMode.HALF_UP)); - }else if (EnumOfflineActivityAwardsRule.TEN.getCode().equals(activityItem.getAwardsItemRule())){ - BigDecimal cashBackPriceTen = cashBackPrice.divide(new BigDecimal(10)) - .setScale(0, RoundingMode.HALF_UP); - awardsItem.setPrice(cashBackPriceTen.multiply(new BigDecimal(10))); - } + BigDecimal cashBackPrice = BigDecimal.ZERO; + //单笔订单计算 + if(EnumOfflineActivityCalculationMode.ONE.getCode().equals(activityItem.getCalculationMode())){ + + }else{ + } + activityItem.setCashBackPrice(BigDecimal.ONE); +// if(wxOfflineActivityGrantAward.getOrderMoneySum().compareTo(activityItem.getLimitMoney()) < 0){ +// activityItem.setIsMeet(false); +// continue; +// } +// activityItem.setIsMeet(true); +// activityItem.setRealAwardsItemLimit(1); +// for (WxOfflineActivityAwardsItem awardsItem : activityItem.getActivityAwardsItemList()) { +// //计算返现金额 +// BigDecimal cashBackPrice = wxOfflineActivityGrantAward.getOrderMoneySum() +// .multiply(awardsItem.getCashBackRatio().divide(new BigDecimal(100))); +// if(EnumOfflineActivityAwardsRule.DEF.getCode().equals(activityItem.getAwardsItemRule())){ +// awardsItem.setPrice(cashBackPrice.setScale(2, RoundingMode.HALF_UP)); +// } else if (EnumOfflineActivityAwardsRule.YUAN.getCode().equals(activityItem.getAwardsItemRule())) { +// awardsItem.setPrice(cashBackPrice.setScale(0, RoundingMode.HALF_UP)); +// }else if (EnumOfflineActivityAwardsRule.TEN.getCode().equals(activityItem.getAwardsItemRule())){ +// BigDecimal cashBackPriceTen = cashBackPrice.divide(new BigDecimal(10)) +// .setScale(0, RoundingMode.HALF_UP); +// awardsItem.setPrice(cashBackPriceTen.multiply(new BigDecimal(10))); +// } +// } //计算商户商管分别承担金额 - handlerAwardsSharePrice(activityItem.getActivityAwardsItemList()); +// handlerAwardsSharePrice(activityItem.getActivityAwardsItemList()); } } } @@ -304,7 +313,11 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity private void handlerGrantData(WxOfflineActivity activity,WxOfflineActivityGrantAward wxOfflineActivityGrantAward,boolean isForPage){ - List wxOfflineActivityRecords = wxOfflineActivityRecordMapper.selectBatchIds(wxOfflineActivityGrantAward.getRecordIds()); +// List wxOfflineActivityRecords = wxOfflineActivityRecordMapper.selectBatchIds(wxOfflineActivityGrantAward.getRecordIds()); + WxOfflineActivityRecord recordQ = new WxOfflineActivityRecord(); + recordQ.updateTenantInfo(wxOfflineActivityGrantAward); + recordQ.setCusPhone(wxOfflineActivityGrantAward.getCusPhone()); + List wxOfflineActivityRecords = wxOfflineActivityRecordMapper.findList(recordQ); if (wxOfflineActivityRecords == null || wxOfflineActivityRecords.isEmpty()) { throw new MallinkException(Result.ERROR, "未查询到活动订单"); } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityItemServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityItemServiceImpl.java index c1631715c..ac4f88e64 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityItemServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityItemServiceImpl.java @@ -4,6 +4,7 @@ import com.iformall.common.IdWorker; import com.iformall.domain.po.WxOfflineActivity; import com.iformall.domain.po.WxOfflineActivityAwardsItem; import com.iformall.domain.po.WxOfflineActivityItem; +import com.iformall.enums.EnumOfflineActivityAwardsItemType; import com.iformall.enums.EnumOfflineActivityAwardsRule; import com.iformall.enums.EnumOfflineActivityType; import com.iformall.service.WxOfflineActivityAwardsItemService; @@ -15,6 +16,8 @@ import org.springframework.stereotype.Service; import java.math.BigDecimal; import java.util.Collections; import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; /** * @author xiaohu @@ -68,7 +71,7 @@ public class WxOfflineActivityItemServiceImpl implements WxOfflineActivityItemSe wxOfflineActivityItemMapper.insert(activityItem); //处理奖项 - wxOfflineActivityAwardsItemService.saveOrUpdateFromActivityItem(activityItem,activityItem.getActivityAwardsItemList()); + wxOfflineActivityAwardsItemService.saveOrUpdateFromActivityItem(activityItem,activityItem.getActivityAwardsItemList(),activityItem.getActivityAwardsItemSecondList()); } } @@ -80,7 +83,13 @@ public class WxOfflineActivityItemServiceImpl implements WxOfflineActivityItemSe List itemList = wxOfflineActivityItemMapper.findList(activityItemQuery); for (WxOfflineActivityItem item : itemList) { List activityAwardsItemList = wxOfflineActivityAwardsItemService.getActivityAwardsItemList(item.getId(),tenantId); - item.setActivityAwardsItemList(activityAwardsItemList); + if(EnumOfflineActivityType.CASHBACK.getCode().equals(item.getType())){ + Map> collect = activityAwardsItemList.stream().collect(Collectors.groupingBy(WxOfflineActivityAwardsItem::getType)); + item.setActivityAwardsItemList(collect.get(EnumOfflineActivityAwardsItemType.FIRST.getCode())); + item.setActivityAwardsItemSecondList(collect.get(EnumOfflineActivityAwardsItemType.SECOND.getCode())); + }else{ + item.setActivityAwardsItemList(activityAwardsItemList); + } } return itemList; } diff --git a/mallinkService/src/main/resources/mapper/WxOfflineActivityAwardsItemMapper.xml b/mallinkService/src/main/resources/mapper/WxOfflineActivityAwardsItemMapper.xml index 89779a391..69660f3bc 100644 --- a/mallinkService/src/main/resources/mapper/WxOfflineActivityAwardsItemMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxOfflineActivityAwardsItemMapper.xml @@ -9,8 +9,10 @@ + + diff --git a/mallinkService/src/main/resources/mapper/WxOfflineActivityItemMapper.xml b/mallinkService/src/main/resources/mapper/WxOfflineActivityItemMapper.xml index 24d7fae53..b5f366410 100644 --- a/mallinkService/src/main/resources/mapper/WxOfflineActivityItemMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxOfflineActivityItemMapper.xml @@ -16,6 +16,10 @@ + + + + From 4a782822ece8f3d11d9355d3e375ef91aacafb7b Mon Sep 17 00:00:00 2001 From: xiaohu <1901900812@qq.com> Date: Fri, 8 Nov 2024 02:14:40 +0800 Subject: [PATCH 02/13] //legionActivity --- .../domain/po/WxOfflineActivityGrantItem.java | 3 + ...xOfflineActivityGrantAwardServiceImpl.java | 255 +++++++++++++++--- ...WxOfflineActivityGrantItemServiceImpl.java | 24 +- ...ineActivityGrantSettlementServiceImpl.java | 78 ++++-- .../WxOfflineActivityAwardsItemMapper.xml | 2 +- .../WxOfflineActivityGrantItemMapper.xml | 7 +- .../mapper/WxOfflineActivityItemMapper.xml | 2 +- 7 files changed, 289 insertions(+), 82 deletions(-) diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantItem.java b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantItem.java index 7bd378699..af59c7f25 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantItem.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantItem.java @@ -152,4 +152,7 @@ public class WxOfflineActivityGrantItem extends TenantEntity { @TableField(value = "update_date") private Date updateDate; + @TableField(value = "record_id") + private Long recordId; + } \ No newline at end of file diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java index d90f89d14..fdd3103e4 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java @@ -234,36 +234,121 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity activityItem.setActivityGrantItemList(Collections.singletonList(grantItem)); } else if (EnumOfflineActivityType.CASHBACK.getCode().equals(activityItem.getType())) { - BigDecimal cashBackPrice = BigDecimal.ZERO; + BigDecimal cashBackPriceTotal = BigDecimal.ZERO; + List grantItemList = new ArrayList<>(); + + List sortAwardsItemList = activityItem.getActivityAwardsItemList().stream().sorted(Comparator.comparing(WxOfflineActivityAwardsItem::getMinAmount)).collect(toList()); //单笔订单计算 if(EnumOfflineActivityCalculationMode.ONE.getCode().equals(activityItem.getCalculationMode())){ + for (WxOfflineActivityRecord record : wxOfflineActivityGrantAward.getRecordList()){ + WxOfflineActivityAwardsItem grantAwardsItem = null; + for(WxOfflineActivityAwardsItem awardsItem : sortAwardsItemList){ + if((awardsItem.getMinAmount() == null || record.getOrderMoney().compareTo(awardsItem.getMinAmount()) >= 0) + && (awardsItem.getMaxAmount() == null || record.getOrderMoney().compareTo(awardsItem.getMaxAmount()) <= 0)){ + grantAwardsItem = awardsItem; + } + } + if(grantAwardsItem == null){ + continue; + } +// WxOfflineActivityGrantItem grantItem = new WxOfflineActivityGrantItem(); +// grantItem.setActivityItemId(activityItem.getId()); +// grantItem.setActivityItemName(activityItem.getName()); +// grantItem.setActivityItemType(activityItem.getType()); +// grantItem.setAwardItamId(grantAwardsItem.getId()); +// grantItem.setAwardName(grantAwardsItem.getName()); +// grantItem.setAwardGrade(grantAwardsItem.getGrade()); +// grantItem.setAwardMinAmount(grantAwardsItem.getMinAmount()); +// grantItem.setAwardMaxAmount(grantAwardsItem.getMaxAmount()); +// grantItem.setAwardsItemRule(activityItem.getAwardsItemRule()); +// grantItem.setAwardCount(1); +// +// //计算返现金额 +// BigDecimal cashBackPrice = record.getOrderMoney() +// .multiply(grantAwardsItem.getCashBackRatio().divide(new BigDecimal(100))); +// if(EnumOfflineActivityAwardsRule.DEF.getCode().equals(activityItem.getAwardsItemRule())){ +// grantItem.setAwardPrice(cashBackPrice.setScale(2, RoundingMode.HALF_UP)); +// } else if (EnumOfflineActivityAwardsRule.YUAN.getCode().equals(activityItem.getAwardsItemRule())){ +// grantItem.setAwardPrice(cashBackPrice.setScale(0, RoundingMode.HALF_UP)); +// }else if (EnumOfflineActivityAwardsRule.TEN.getCode().equals(activityItem.getAwardsItemRule())){ +// BigDecimal cashBackPriceTen = cashBackPrice.divide(new BigDecimal(10)) +// .setScale(0, RoundingMode.HALF_UP); +// grantItem.setAwardPrice(cashBackPriceTen.multiply(new BigDecimal(10))); +// } +// grantItem.setMoneyRule(grantAwardsItem.getMoneyRule()); +// grantItem.setMallShareRate(grantAwardsItem.getMallShareRate()); +// grantItem.setMallSharePrice(grantAwardsItem.getMallSharePrice()); +//// grantItem.setMerchantShareRate(grantAwardsItem.getMerchantShareRate()); +//// grantItem.setMerchantSharePrice(grantAwardsItem.getMerchantSharePrice()); +// grantItemList.add(grantItem); + + //计算返现金额 + BigDecimal cashBackPrice = record.getOrderMoney() + .multiply(grantAwardsItem.getCashBackRatio().divide(new BigDecimal(100))); + if(EnumOfflineActivityAwardsRule.DEF.getCode().equals(activityItem.getAwardsItemRule())){ + cashBackPrice = cashBackPrice.setScale(2, RoundingMode.HALF_UP); + } else if (EnumOfflineActivityAwardsRule.YUAN.getCode().equals(activityItem.getAwardsItemRule())) { + cashBackPrice = cashBackPrice.setScale(0, RoundingMode.HALF_UP); + }else if (EnumOfflineActivityAwardsRule.TEN.getCode().equals(activityItem.getAwardsItemRule())){ + cashBackPrice = cashBackPrice.divide(new BigDecimal(10)) + .setScale(0, RoundingMode.HALF_UP).multiply(new BigDecimal(10)); + } + cashBackPriceTotal = cashBackPriceTotal.add(cashBackPrice); + } }else{ + WxOfflineActivityAwardsItem grantAwardsItem = null; + for(WxOfflineActivityAwardsItem awardsItem : sortAwardsItemList){ + if((awardsItem.getMinAmount() == null || wxOfflineActivityGrantAward.getOrderMoneySum().compareTo(awardsItem.getMinAmount()) >= 0) + && (awardsItem.getMaxAmount() == null || wxOfflineActivityGrantAward.getOrderMoneySum().compareTo(awardsItem.getMaxAmount()) <= 0)){ + grantAwardsItem = awardsItem; + } + } + if(grantAwardsItem == null){ + continue; + } + //计算返现金额 + BigDecimal cashBackPrice = wxOfflineActivityGrantAward.getOrderMoneySum() + .multiply(grantAwardsItem.getCashBackRatio().divide(new BigDecimal(100))); + if(EnumOfflineActivityAwardsRule.DEF.getCode().equals(activityItem.getAwardsItemRule())){ + cashBackPrice = cashBackPrice.setScale(2, RoundingMode.HALF_UP); + } else if (EnumOfflineActivityAwardsRule.YUAN.getCode().equals(activityItem.getAwardsItemRule())) { + cashBackPrice = cashBackPrice.setScale(0, RoundingMode.HALF_UP); + }else if (EnumOfflineActivityAwardsRule.TEN.getCode().equals(activityItem.getAwardsItemRule())){ + cashBackPrice = cashBackPrice.divide(new BigDecimal(10)) + .setScale(0, RoundingMode.HALF_UP).multiply(new BigDecimal(10)); + } + cashBackPriceTotal = cashBackPriceTotal.add(cashBackPrice); } - activityItem.setCashBackPrice(BigDecimal.ONE); -// if(wxOfflineActivityGrantAward.getOrderMoneySum().compareTo(activityItem.getLimitMoney()) < 0){ -// activityItem.setIsMeet(false); -// continue; -// } -// activityItem.setIsMeet(true); -// activityItem.setRealAwardsItemLimit(1); -// for (WxOfflineActivityAwardsItem awardsItem : activityItem.getActivityAwardsItemList()) { -// //计算返现金额 -// BigDecimal cashBackPrice = wxOfflineActivityGrantAward.getOrderMoneySum() -// .multiply(awardsItem.getCashBackRatio().divide(new BigDecimal(100))); -// if(EnumOfflineActivityAwardsRule.DEF.getCode().equals(activityItem.getAwardsItemRule())){ -// awardsItem.setPrice(cashBackPrice.setScale(2, RoundingMode.HALF_UP)); -// } else if (EnumOfflineActivityAwardsRule.YUAN.getCode().equals(activityItem.getAwardsItemRule())) { -// awardsItem.setPrice(cashBackPrice.setScale(0, RoundingMode.HALF_UP)); -// }else if (EnumOfflineActivityAwardsRule.TEN.getCode().equals(activityItem.getAwardsItemRule())){ -// BigDecimal cashBackPriceTen = cashBackPrice.divide(new BigDecimal(10)) -// .setScale(0, RoundingMode.HALF_UP); -// awardsItem.setPrice(cashBackPriceTen.multiply(new BigDecimal(10))); -// } -// } - //计算商户商管分别承担金额 -// handlerAwardsSharePrice(activityItem.getActivityAwardsItemList()); + + if(activityItem.getActivityAwardsItemSecondList() != null && !activityItem.getActivityAwardsItemSecondList().isEmpty()){ + List merchantIds = wxOfflineActivityGrantAward.getRecordList().stream().map(WxOfflineActivityRecord::getMerchantId).distinct().collect(toList()); + Map collect = activityItem.getActivityAwardsItemSecondList().stream().collect(toMap(WxOfflineActivityAwardsItem::getMerchantCount, Function.identity())); + WxOfflineActivityAwardsItem grantAwardsSecondItem = collect.get(merchantIds.size()); + if(grantAwardsSecondItem == null){ + continue; + } + //计算返现金额 + BigDecimal cashBackPrice = wxOfflineActivityGrantAward.getOrderMoneySum() + .multiply(grantAwardsSecondItem.getCashBackRatio().divide(new BigDecimal(100))); + if(EnumOfflineActivityAwardsRule.DEF.getCode().equals(activityItem.getAwardsItemRule())){ + cashBackPrice = cashBackPrice.setScale(2, RoundingMode.HALF_UP); + } else if (EnumOfflineActivityAwardsRule.YUAN.getCode().equals(activityItem.getAwardsItemRule())) { + cashBackPrice = cashBackPrice.setScale(0, RoundingMode.HALF_UP); + }else if (EnumOfflineActivityAwardsRule.TEN.getCode().equals(activityItem.getAwardsItemRule())){ + cashBackPrice = cashBackPrice.divide(new BigDecimal(10)) + .setScale(0, RoundingMode.HALF_UP).multiply(new BigDecimal(10)); + } + cashBackPriceTotal = cashBackPriceTotal.add(cashBackPrice); + } + + if(activityItem.getMaxAmount().compareTo(cashBackPriceTotal) >= 0){ + activityItem.setCashBackPrice(cashBackPriceTotal); + }else{ + activityItem.setCashBackPrice(activityItem.getMaxAmount()); + } + } } } @@ -384,10 +469,10 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity throw new MallinkException(Result.ERROR, "请检查活动项参数"); } List activityGrantItemList = grantActivityItem.getActivityGrantItemList(); - if(activityGrantItemList == null || activityGrantItemList.isEmpty()){ - continue; -// throw new MallinkException(Result.ERROR, "请检查活动奖项参数"); - } +// if(activityGrantItemList == null || activityGrantItemList.isEmpty()){ +// continue; +//// throw new MallinkException(Result.ERROR, "请检查活动奖项参数"); +// } boolean isRepeat = activityGrantItemList.stream() .collect(groupingBy(WxOfflineActivityGrantItem::getAwardItamId, counting())) .entrySet().stream().anyMatch(e -> e.getValue() > 1); @@ -397,12 +482,7 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity Map awardsItemMap = activityItem.getActivityAwardsItemList().stream().collect(toMap(WxOfflineActivityAwardsItem::getId, Function.identity())); - for (WxOfflineActivityGrantItem grantGrantItem : activityGrantItemList) { - i++; - if(grantGrantItem.getAwardCount() == null){ - grantGrantItem.setAwardCount(1); - } - } + if(EnumOfflineActivityType.LOTTERY_DRAW.getCode().equals(activityItem.getType())){ @@ -460,20 +540,109 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity } else if (EnumOfflineActivityType.CASHBACK.getCode().equals(activityItem.getType())) { - if(activityGrantItemList.size() != 1){ - throw new MallinkException(Result.ERROR, "请检查活动"+activityItem.getName()+"奖项参数"); + BigDecimal cashBackPriceTotal = BigDecimal.ZERO; + List grantItemList = new ArrayList<>(); + + List sortAwardsItemList = activityItem.getActivityAwardsItemList().stream().sorted(Comparator.comparing(WxOfflineActivityAwardsItem::getMinAmount)).collect(toList()); + //单笔订单计算 + if(EnumOfflineActivityCalculationMode.ONE.getCode().equals(activityItem.getCalculationMode())){ + for (WxOfflineActivityRecord record : wxOfflineActivityGrantAward.getRecordList()){ + WxOfflineActivityAwardsItem grantAwardsItem = null; + for(WxOfflineActivityAwardsItem awardsItem : sortAwardsItemList){ + if((awardsItem.getMinAmount() == null || record.getOrderMoney().compareTo(awardsItem.getMinAmount()) >= 0) + && (awardsItem.getMaxAmount() == null || record.getOrderMoney().compareTo(awardsItem.getMaxAmount()) <= 0)){ + grantAwardsItem = awardsItem; + } + } + if(grantAwardsItem == null){ + continue; + } + + WxOfflineActivityGrantItem grantGrantItem = new WxOfflineActivityGrantItem(); + grantGrantItem.setRecordId(record.getId()); + //计算返现金额 + BigDecimal cashBackPrice = record.getOrderMoney() + .multiply(grantAwardsItem.getCashBackRatio().divide(new BigDecimal(100))); + + grantAwardsItem.setPrice(cashBackPrice); + handlerGrantItem(grantGrantItem,activity,activityItem,grantAwardsItem); + + grantItemList.add(grantGrantItem); + + cashBackPriceTotal = cashBackPriceTotal.add(cashBackPrice); + } + }else{ + + WxOfflineActivityAwardsItem grantAwardsItem = null; + for(WxOfflineActivityAwardsItem awardsItem : sortAwardsItemList){ + if((awardsItem.getMinAmount() == null || wxOfflineActivityGrantAward.getOrderMoneySum().compareTo(awardsItem.getMinAmount()) >= 0) + && (awardsItem.getMaxAmount() == null || wxOfflineActivityGrantAward.getOrderMoneySum().compareTo(awardsItem.getMaxAmount()) <= 0)){ + grantAwardsItem = awardsItem; + } + } + if(grantAwardsItem == null){ + continue; + } + WxOfflineActivityGrantItem grantGrantItem = new WxOfflineActivityGrantItem(); + //计算返现金额 + BigDecimal cashBackPrice = wxOfflineActivityGrantAward.getOrderMoneySum() + .multiply(grantAwardsItem.getCashBackRatio().divide(new BigDecimal(100))); + grantAwardsItem.setPrice(cashBackPrice); + handlerGrantItem(grantGrantItem,activity,activityItem,grantAwardsItem); + + grantItemList.add(grantGrantItem); + cashBackPriceTotal = cashBackPriceTotal.add(cashBackPrice); } - WxOfflineActivityGrantItem grantGrantItem = activityGrantItemList.get(0); - if(grantGrantItem.getAwardItamId() == null){ - throw new MallinkException(Result.ERROR, "请检查活动"+activityItem.getName()+"奖项参数"); + + if(activityItem.getActivityAwardsItemSecondList() != null && !activityItem.getActivityAwardsItemSecondList().isEmpty()){ + List merchantIds = wxOfflineActivityGrantAward.getRecordList().stream().map(WxOfflineActivityRecord::getMerchantId).distinct().collect(toList()); + Map collect = activityItem.getActivityAwardsItemSecondList().stream().collect(toMap(WxOfflineActivityAwardsItem::getMerchantCount, Function.identity())); + WxOfflineActivityAwardsItem grantAwardsSecondItem = collect.get(merchantIds.size()); + if(grantAwardsSecondItem == null){ + continue; + } + WxOfflineActivityGrantItem grantGrantItem = new WxOfflineActivityGrantItem(); + //计算返现金额 + BigDecimal cashBackPrice = wxOfflineActivityGrantAward.getOrderMoneySum() + .multiply(grantAwardsSecondItem.getCashBackRatio().divide(new BigDecimal(100))); + grantAwardsSecondItem.setPrice(cashBackPrice); + handlerGrantItem(grantGrantItem,activity,activityItem,grantAwardsSecondItem); + + grantItemList.add(grantGrantItem); + cashBackPriceTotal = cashBackPriceTotal.add(cashBackPrice); } - WxOfflineActivityAwardsItem awardsItem = awardsItemMap.get(grantGrantItem.getAwardItamId()); - if(awardsItem == null){ - throw new MallinkException(Result.ERROR, "请检查活动"+activityItem.getName()+"奖项参数"); + + BigDecimal prop = BigDecimal.ONE; + if(activityItem.getMaxAmount().compareTo(cashBackPriceTotal) >= 0){ + activityItem.setCashBackPrice(cashBackPriceTotal); + }else{ + prop = activityItem.getMaxAmount().divide(cashBackPriceTotal).setScale(4, RoundingMode.HALF_UP);; + activityItem.setCashBackPrice(activityItem.getMaxAmount()); + } + for (WxOfflineActivityGrantItem grantItem:grantItemList){ + if(EnumOfflineActivityAwardsRule.DEF.getCode().equals(activityItem.getAwardsItemRule())){ + grantItem.setAwardPrice(grantItem.getAwardPrice().multiply(prop).multiply(prop).setScale(2, RoundingMode.HALF_UP)); + activityItem.setCashBackPrice(activityItem.getCashBackPrice().setScale(2, RoundingMode.HALF_UP)); + } else if (EnumOfflineActivityAwardsRule.YUAN.getCode().equals(activityItem.getAwardsItemRule())) { + grantItem.setAwardPrice(grantItem.getAwardPrice().multiply(prop).multiply(prop).setScale(0, RoundingMode.HALF_UP)); + activityItem.setCashBackPrice(activityItem.getCashBackPrice().setScale(0, RoundingMode.HALF_UP)); + }else if (EnumOfflineActivityAwardsRule.TEN.getCode().equals(activityItem.getAwardsItemRule())){ + grantItem.setAwardPrice(grantItem.getAwardPrice().multiply(prop).multiply(prop).divide(new BigDecimal(10)) + .setScale(0, RoundingMode.HALF_UP).multiply(new BigDecimal(10))); + activityItem.setCashBackPrice(activityItem.getCashBackPrice().divide(new BigDecimal(10)) + .setScale(0, RoundingMode.HALF_UP).multiply(new BigDecimal(10))); + } } - handlerGrantItem(grantGrantItem,activity,activityItem,awardsItem); + grantActivityItem.setActivityGrantItemList(grantItemList); + + } + for (WxOfflineActivityGrantItem grantGrantItem : grantActivityItem.getActivityGrantItemList()) { + i++; + if(grantGrantItem.getAwardCount() == null){ + grantGrantItem.setAwardCount(1); + } } } if(i == 0){ diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantItemServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantItemServiceImpl.java index 5d1ff180e..954d76923 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantItemServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantItemServiceImpl.java @@ -44,18 +44,18 @@ public class WxOfflineActivityGrantItemServiceImpl implements WxOfflineActivityG grantGrantItem.updateTenantInfo(wxOfflineActivityGrantAward); grantGrantItem.setCreateDate(now); grantGrantItem.setUpdateDate(now); - if(EnumOfflineActivityType.CASHBACK.getCode().equals(grantGrantItem.getActivityItemType())){ - BigDecimal awardPrice = wxOfflineActivityGrantAward.getOrderMoneySum() - .multiply(grantGrantItem.getCashBackRatio().divide(new BigDecimal(100))); - if(EnumOfflineActivityAwardsRule.DEF.getCode().equals(grantGrantItem.getAwardsItemRule())){ - grantGrantItem.setAwardPrice(awardPrice.setScale(2, BigDecimal.ROUND_HALF_UP)); - } else if (EnumOfflineActivityAwardsRule.YUAN.getCode().equals(grantGrantItem.getAwardsItemRule())) { - grantGrantItem.setAwardPrice(awardPrice.setScale(0, BigDecimal.ROUND_HALF_UP)); - }else if (EnumOfflineActivityAwardsRule.TEN.getCode().equals(grantGrantItem.getAwardsItemRule())){ - BigDecimal awardPriceTen = awardPrice.divide(new BigDecimal(10)).setScale(0, BigDecimal.ROUND_HALF_UP); - grantGrantItem.setAwardPrice(awardPriceTen.multiply(new BigDecimal(10))); - } - } +// if(EnumOfflineActivityType.CASHBACK.getCode().equals(grantGrantItem.getActivityItemType())){ +// BigDecimal awardPrice = wxOfflineActivityGrantAward.getOrderMoneySum() +// .multiply(grantGrantItem.getCashBackRatio().divide(new BigDecimal(100))); +// if(EnumOfflineActivityAwardsRule.DEF.getCode().equals(grantGrantItem.getAwardsItemRule())){ +// grantGrantItem.setAwardPrice(awardPrice.setScale(2, BigDecimal.ROUND_HALF_UP)); +// } else if (EnumOfflineActivityAwardsRule.YUAN.getCode().equals(grantGrantItem.getAwardsItemRule())) { +// grantGrantItem.setAwardPrice(awardPrice.setScale(0, BigDecimal.ROUND_HALF_UP)); +// }else if (EnumOfflineActivityAwardsRule.TEN.getCode().equals(grantGrantItem.getAwardsItemRule())){ +// BigDecimal awardPriceTen = awardPrice.divide(new BigDecimal(10)).setScale(0, BigDecimal.ROUND_HALF_UP); +// grantGrantItem.setAwardPrice(awardPriceTen.multiply(new BigDecimal(10))); +// } +// } rantItemList.add(grantGrantItem); } } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantSettlementServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantSettlementServiceImpl.java index fabce08af..eae46410a 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantSettlementServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantSettlementServiceImpl.java @@ -26,6 +26,7 @@ import java.math.BigDecimal; import java.math.RoundingMode; import java.text.NumberFormat; import java.util.*; +import java.util.function.Function; import java.util.stream.Collectors; /** @@ -55,6 +56,7 @@ public class WxOfflineActivityGrantSettlementServiceImpl implements WxOfflineAct List settlementList = new ArrayList<>(); final IdWorker idWorker = IdWorker.get(); Date now = new Date(); + Map recordMap = wxOfflineActivityGrantAward.getRecordList().stream().collect(Collectors.toMap(WxOfflineActivityRecord::getId, Function.identity())); //获取订单占比(占比最少的订单用减法,尽量减少误差) List recordDescList = wxOfflineActivityGrantAward.getRecordList().stream().sorted(Comparator.comparing(WxOfflineActivityRecord::getOrderMoney).reversed()).collect(Collectors.toList()); int size = recordDescList.size() - 1; @@ -75,11 +77,13 @@ public class WxOfflineActivityGrantSettlementServiceImpl implements WxOfflineAct } for (WxOfflineActivityGrantItem wxOfflineActivityGrantItem : activityItem.getActivityGrantItemList()) { List itemSettlementList = new ArrayList<>(); - for (WxOfflineActivityRecord record : recordDescList){ + if(wxOfflineActivityGrantItem.getRecordId() != null){ WxOfflineActivityGrantSettlement settlement = new WxOfflineActivityGrantSettlement(); settlement.setId(idWorker.nextId()); settlement.updateTenantInfo(wxOfflineActivityGrantItem); + WxOfflineActivityRecord record = recordMap.get(wxOfflineActivityGrantItem.getRecordId()); + settlement.setRecordId(record.getId()); settlement.setOrderNo(record.getOrderNo()); settlement.setOrderMoney(record.getOrderMoney()); @@ -92,34 +96,64 @@ public class WxOfflineActivityGrantSettlementServiceImpl implements WxOfflineAct settlement.setGrantPrice(wxOfflineActivityGrantItem.getAwardPrice()); settlement.setMallShareRate(wxOfflineActivityGrantItem.getMallShareRate()); settlement.setMerchantShareRate(wxOfflineActivityGrantItem.getMerchantShareRate()); - settlement.setOrderRatio(record.getOrderRatio()); + settlement.setOrderRatio(new BigDecimal(100)); - settlement.setCreateDate(now); - settlement.setUpdateDate(now); - itemSettlementList.add(settlement); - } - //计算订单分担金额,(占比最少的订单用减法,尽量减少误差) - int itemSize = itemSettlementList.size() - 1; - BigDecimal lastGrantPrice = wxOfflineActivityGrantItem.getAwardPrice(); - for (int i = 0; i < itemSize; i++) { - WxOfflineActivityGrantSettlement settlement = itemSettlementList.get(i); - BigDecimal realGrantPrice = wxOfflineActivityGrantItem.getAwardPrice() - .multiply(settlement.getOrderRatio().divide(new BigDecimal(100))) - .setScale(2, RoundingMode.HALF_UP); - settlement.setRealGrantPrice(realGrantPrice); + settlement.setRealGrantPrice(settlement.getGrantPrice()); settlement.setRealMallSharePrice(settlement.getRealGrantPrice() .multiply(settlement.getMallShareRate().divide(new BigDecimal(100))) .setScale(2, RoundingMode.HALF_UP)); settlement.setRealMerchantSharePrice(settlement.getRealGrantPrice().subtract(settlement.getRealMallSharePrice())); - lastGrantPrice = lastGrantPrice.subtract(realGrantPrice); + settlement.setCreateDate(now); + settlement.setUpdateDate(now); + itemSettlementList.add(settlement); + }else{ + for (WxOfflineActivityRecord record : recordDescList){ + WxOfflineActivityGrantSettlement settlement = new WxOfflineActivityGrantSettlement(); + settlement.setId(idWorker.nextId()); + settlement.updateTenantInfo(wxOfflineActivityGrantItem); + + settlement.setRecordId(record.getId()); + settlement.setOrderNo(record.getOrderNo()); + settlement.setOrderMoney(record.getOrderMoney()); + settlement.setMerchantId(record.getMerchantId()); + + settlement.setActivityId(wxOfflineActivityGrantItem.getActivityId()); + settlement.setActivityItemId(wxOfflineActivityGrantItem.getActivityItemId()); + settlement.setAwardItamId(wxOfflineActivityGrantItem.getAwardItamId()); + settlement.setGrantId(wxOfflineActivityGrantItem.getGrantId()); + settlement.setGrantPrice(wxOfflineActivityGrantItem.getAwardPrice()); + settlement.setMallShareRate(wxOfflineActivityGrantItem.getMallShareRate()); + settlement.setMerchantShareRate(wxOfflineActivityGrantItem.getMerchantShareRate()); + settlement.setOrderRatio(record.getOrderRatio()); + + settlement.setCreateDate(now); + settlement.setUpdateDate(now); + itemSettlementList.add(settlement); + } + //计算订单分担金额,(占比最少的订单用减法,尽量减少误差) + int itemSize = itemSettlementList.size() - 1; + BigDecimal lastGrantPrice = wxOfflineActivityGrantItem.getAwardPrice(); + for (int i = 0; i < itemSize; i++) { + WxOfflineActivityGrantSettlement settlement = itemSettlementList.get(i); + BigDecimal realGrantPrice = wxOfflineActivityGrantItem.getAwardPrice() + .multiply(settlement.getOrderRatio().divide(new BigDecimal(100))) + .setScale(2, RoundingMode.HALF_UP); + settlement.setRealGrantPrice(realGrantPrice); + settlement.setRealMallSharePrice(settlement.getRealGrantPrice() + .multiply(settlement.getMallShareRate().divide(new BigDecimal(100))) + .setScale(2, RoundingMode.HALF_UP)); + settlement.setRealMerchantSharePrice(settlement.getRealGrantPrice().subtract(settlement.getRealMallSharePrice())); + + lastGrantPrice = lastGrantPrice.subtract(realGrantPrice); + } + WxOfflineActivityGrantSettlement lastSettlement = itemSettlementList.get(itemSize); + lastSettlement.setRealGrantPrice(lastGrantPrice); + lastSettlement.setRealMallSharePrice(lastSettlement.getRealGrantPrice() + .multiply(lastSettlement.getMallShareRate().divide(new BigDecimal(100))) + .setScale(2, RoundingMode.HALF_UP)); + lastSettlement.setRealMerchantSharePrice(lastSettlement.getRealGrantPrice().subtract(lastSettlement.getRealMallSharePrice())); } - WxOfflineActivityGrantSettlement lastSettlement = itemSettlementList.get(itemSize); - lastSettlement.setRealGrantPrice(lastGrantPrice); - lastSettlement.setRealMallSharePrice(lastSettlement.getRealGrantPrice() - .multiply(lastSettlement.getMallShareRate().divide(new BigDecimal(100))) - .setScale(2, RoundingMode.HALF_UP)); - lastSettlement.setRealMerchantSharePrice(lastSettlement.getRealGrantPrice().subtract(lastSettlement.getRealMallSharePrice())); settlementList.addAll(itemSettlementList); diff --git a/mallinkService/src/main/resources/mapper/WxOfflineActivityAwardsItemMapper.xml b/mallinkService/src/main/resources/mapper/WxOfflineActivityAwardsItemMapper.xml index 69660f3bc..622ee0742 100644 --- a/mallinkService/src/main/resources/mapper/WxOfflineActivityAwardsItemMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxOfflineActivityAwardsItemMapper.xml @@ -26,7 +26,7 @@ id,tenant_id,parent_tenant_id, - activity_item_id,`name`,grade, + activity_item_id,`name`,grade,merchant_count, min_amount,max_amount,cash_back_ratio,price, money_rule,mall_share_rate,merchant_share_rate, create_date,update_date diff --git a/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantItemMapper.xml b/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantItemMapper.xml index e1d55ecc4..9c60b0bf9 100644 --- a/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantItemMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantItemMapper.xml @@ -28,6 +28,7 @@ + @@ -38,7 +39,7 @@ award_min_amount,award_max_amount,awards_item_rule,cash_back_ratio, award_price,award_count,money_rule, mall_share_rate,merchant_share_rate, - create_date,update_date + create_date,update_date,record_id @@ -92,7 +93,7 @@ award_min_amount,award_max_amount,awards_item_rule,cash_back_ratio, award_price,award_count,money_rule, mall_share_rate,merchant_share_rate, - create_date,update_date) + create_date,update_date,record_id) values (#{item.id,jdbcType=BIGINT}, @@ -102,7 +103,7 @@ #{item.awardMinAmount,jdbcType=DECIMAL},#{item.awardMaxAmount,jdbcType=DECIMAL},#{item.awardsItemRule,jdbcType=INTEGER},#{item.cashBackRatio,jdbcType=DECIMAL}, #{item.awardPrice,jdbcType=DECIMAL},#{item.awardCount,jdbcType=INTEGER},#{item.moneyRule,jdbcType=INTEGER}, #{item.mallShareRate,jdbcType=DECIMAL},#{item.merchantShareRate,jdbcType=DECIMAL}, - #{item.createDate,jdbcType=TIMESTAMP},#{item.updateDate,jdbcType=TIMESTAMP}) + #{item.createDate,jdbcType=TIMESTAMP},#{item.updateDate,jdbcType=TIMESTAMP},#{item.recordId,jdbcType=BIGINT}) diff --git a/mallinkService/src/main/resources/mapper/WxOfflineActivityItemMapper.xml b/mallinkService/src/main/resources/mapper/WxOfflineActivityItemMapper.xml index b5f366410..35490ea2f 100644 --- a/mallinkService/src/main/resources/mapper/WxOfflineActivityItemMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxOfflineActivityItemMapper.xml @@ -28,7 +28,7 @@ id,tenant_id,parent_tenant_id, activity_id,`type`,`name`, limit_money,awards_item_price,awards_item_limit,awards_item_count, - awards_item_rule,create_date,update_date + awards_item_rule,calculation_mode,max_amount,starting_tax_point,tax_points,create_date,update_date From 02a367cbf1d6eafbb14408fefa16934af593d3a5 Mon Sep 17 00:00:00 2001 From: xiaohu <1901900812@qq.com> Date: Fri, 8 Nov 2024 11:19:29 +0800 Subject: [PATCH 03/13] //offlineActivity --- ...WxOfflineActivitySettlementController.java | 3 + .../po/WxOfflineActivityGrantAward.java | 6 + .../po/WxOfflineActivityGrantCashBack.java | 119 +++++++++++++ .../domain/po/WxOfflineActivityGrantItem.java | 6 + .../po/WxOfflineActivityGrantSettlement.java | 6 + .../domain/po/WxOfflineActivityItem.java | 6 + .../domain/vo/OfflineActivitySettlement.java | 2 + .../WxOfflineActivityGrantAwardMapper.java | 4 + .../WxOfflineActivityGrantCashBackMapper.java | 24 +++ .../WxOfflineActivityGrantItemMapper.java | 3 + ...xOfflineActivityGrantSettlementMapper.java | 3 + ...xOfflineActivityGrantAwardServiceImpl.java | 165 +++++++++++++----- ...WxOfflineActivityGrantItemServiceImpl.java | 43 +++-- ...ineActivityGrantSettlementServiceImpl.java | 6 +- .../WxOfflineActivityRecordServiceImpl.java | 1 + .../impl/WxOfflineActivityServiceImpl.java | 1 + .../WxOfflineActivityGrantAwardMapper.xml | 21 +++ .../WxOfflineActivityGrantCashBackMapper.xml | 95 ++++++++++ .../WxOfflineActivityGrantItemMapper.xml | 16 ++ ...WxOfflineActivityGrantSettlementMapper.xml | 18 ++ 20 files changed, 493 insertions(+), 55 deletions(-) create mode 100644 mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantCashBack.java create mode 100644 mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityGrantCashBackMapper.java create mode 100644 mallinkService/src/main/resources/mapper/WxOfflineActivityGrantCashBackMapper.xml diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivitySettlementController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivitySettlementController.java index e299767f3..717f92204 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivitySettlementController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivitySettlementController.java @@ -8,6 +8,7 @@ import com.iformall.domain.po.*; import com.iformall.domain.po.base.BaseEntity.SortField; import com.iformall.domain.po.base.TenantEntity; import com.iformall.domain.vo.OfflineActivitySettlement; +import com.iformall.enums.EnumYesOrNo; import com.iformall.exception.MallinkException; import com.iformall.service.WxOfflineActivityGrantAwardService; import com.iformall.service.WxOfflineActivityGrantSettlementService; @@ -131,6 +132,7 @@ public class WxOfflineActivitySettlementController extends BaseController { TenantEntity tenantInfo = getTenantInfo(); grantSettlement.updateTenantInfo(tenantInfo); + grantSettlement.setStatus(EnumYesOrNo.YES.getCode()); List recordList = wxOfflineActivityGrantSettlementService.findList(grantSettlement); return new ResultData(recordList); @@ -147,6 +149,7 @@ public class WxOfflineActivitySettlementController extends BaseController { } TenantEntity tenantInfo = getTenantInfo(); grantSettlement.updateTenantInfo(tenantInfo); + grantSettlement.setStatus(EnumYesOrNo.YES.getCode()); wxOfflineActivityGrantSettlementService.exportData(request,response,grantSettlement); } diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantAward.java b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantAward.java index ef02730a5..82b7f5362 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantAward.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantAward.java @@ -161,4 +161,10 @@ public class WxOfflineActivityGrantAward extends TenantEntity{ @TableField(exist = false) private List activityItemList; + + /** + * 是否有效 + */ + @TableField(value = "status") + private Integer status; } \ No newline at end of file diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantCashBack.java b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantCashBack.java new file mode 100644 index 000000000..22ae0a1ae --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantCashBack.java @@ -0,0 +1,119 @@ +package com.iformall.domain.po; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.iformall.domain.po.base.TenantEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * 线下活动发放奖励 + * @TableName wx_offline_activity_grant_cash_back + */ +@TableName(value ="wx_offline_activity_grant_cash_back") +@Data +@ToString(callSuper = true) +@EqualsAndHashCode(callSuper = true) +public class WxOfflineActivityGrantCashBack extends TenantEntity { + /** + * + */ + @TableId(value = "id") + private Long id; + + /** + * 发放id + */ + @TableField(value = "grant_id") + private Long grantId; + + /** + * 活动id + */ + @TableField(value = "activity_id") + private Long activityId; + + /** + * 活动名称 + */ + @TableField(value = "activity_name") + private String activityName; + + /** + * 活动项id + */ + @TableField(value = "activity_item_id") + private Long activityItemId; + + /** + * 活动项名称 + */ + @TableField(value = "activity_item_name") + private String activityItemName; + + /** + * 活动项类型 + */ + @TableField(value = "activity_item_type") + private Integer activityItemType; + + /** + * 返现奖项计算规则(0代表无规则) + */ + @TableField(value = "awards_item_rule") + private Integer awardsItemRule; + + /** + * 返现计算模式 + */ + @TableField(value = "calculation_mode") + private Integer calculationMode; + + /** + * 返现封顶金额 + */ + @TableField(value = "max_amount") + private BigDecimal maxAmount; + + /** + * 返现起征税点金额 + */ + @TableField(value = "starting_tax_point") + private BigDecimal startingTaxPoint; + + /** + * 返现税点比例 + */ + @TableField(value = "tax_points") + private BigDecimal taxPoints; + + /** + * 返现金额 + */ + @TableField(value = "cash_back_price") + private BigDecimal cashBackPrice; + + /** + * 税收 + */ + @TableField(value = "tax_points_amount") + private BigDecimal taxPointsAmount; + + /** + * 创建时间 + */ + @TableField(value = "create_date") + private Date createDate; + + /** + * 更新时间 + */ + @TableField(value = "update_date") + private Date updateDate; + +} \ No newline at end of file diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantItem.java b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantItem.java index af59c7f25..2aacca789 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantItem.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantItem.java @@ -155,4 +155,10 @@ public class WxOfflineActivityGrantItem extends TenantEntity { @TableField(value = "record_id") private Long recordId; + /** + * 是否有效 + */ + @TableField(value = "status") + private Integer status; + } \ No newline at end of file diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantSettlement.java b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantSettlement.java index 71430bf2a..0cd97296f 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantSettlement.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantSettlement.java @@ -148,4 +148,10 @@ public class WxOfflineActivityGrantSettlement extends TenantEntity { @TableField(value = "update_date") private Date updateDate; + /** + * 是否有效 + */ + @TableField(value = "status") + private Integer status; + } \ No newline at end of file diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityItem.java b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityItem.java index 0e6b3506a..4781a9440 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityItem.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityItem.java @@ -136,6 +136,12 @@ public class WxOfflineActivityItem extends TenantEntity { @TableField(exist = false) private List activityGrantItemList; + /** + * 返现汇总 + */ + @TableField(exist = false) + private WxOfflineActivityGrantCashBack activityGrantCashBack; + /** * 返现金额 */ diff --git a/mallinkService/src/main/java/com/iformall/domain/vo/OfflineActivitySettlement.java b/mallinkService/src/main/java/com/iformall/domain/vo/OfflineActivitySettlement.java index c1cd8cd96..3842ee2c0 100644 --- a/mallinkService/src/main/java/com/iformall/domain/vo/OfflineActivitySettlement.java +++ b/mallinkService/src/main/java/com/iformall/domain/vo/OfflineActivitySettlement.java @@ -28,4 +28,6 @@ public class OfflineActivitySettlement extends TenantEntity { private BigDecimal sumMallPrice; @SortColumn(column = "sumMerchantPrice") private BigDecimal sumMerchantPrice; + + private Integer status; } diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityGrantAwardMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityGrantAwardMapper.java index 1699085fa..ebcf544d0 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityGrantAwardMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityGrantAwardMapper.java @@ -21,6 +21,10 @@ public interface WxOfflineActivityGrantAwardMapper extends CommonMapper findList(WxOfflineActivityGrantAward grantAwardQ); + + void updateStatusNo(WxOfflineActivityGrantAward grantAwardUpd); + + Long getLastId(WxOfflineActivityGrantAward wxOfflineActivityGrantAward); } diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityGrantCashBackMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityGrantCashBackMapper.java new file mode 100644 index 000000000..5e71f76b2 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityGrantCashBackMapper.java @@ -0,0 +1,24 @@ +package com.iformall.mapper; + +import com.iformall.common.CommonMapper; +import com.iformall.domain.po.WxOfflineActivityGrantAward; +import com.iformall.domain.po.WxOfflineActivityGrantCashBack; +import com.iformall.domain.po.WxOfflineActivityGrantItem; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** +* @author xiaohu +* @description 针对表【wx_offline_activity_grant_item(线下活动发放奖励)】的数据库操作Mapper +* @createDate 2024-08-09 00:13:44 +* @Entity com.iformall.domain.po.WxOfflineActivityGrantItem +*/ +public interface WxOfflineActivityGrantCashBackMapper extends CommonMapper { + + List findList(WxOfflineActivityGrantCashBack offlineActivityGrantCashBack); + + void insertList(List cashBackList); +} + + diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityGrantItemMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityGrantItemMapper.java index 991ed2d0e..54234f022 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityGrantItemMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityGrantItemMapper.java @@ -1,6 +1,7 @@ package com.iformall.mapper; import com.iformall.common.CommonMapper; +import com.iformall.domain.po.WxOfflineActivityGrantAward; import com.iformall.domain.po.WxOfflineActivityGrantItem; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; @@ -20,6 +21,8 @@ public interface WxOfflineActivityGrantItemMapper extends CommonMapper findList(WxOfflineActivityGrantItem grantItemQ); + + void updateStatusNo(WxOfflineActivityGrantAward wxOfflineActivityGrantAward); } diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityGrantSettlementMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityGrantSettlementMapper.java index 659345249..be33e673f 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityGrantSettlementMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityGrantSettlementMapper.java @@ -1,6 +1,7 @@ package com.iformall.mapper; import com.iformall.common.CommonMapper; +import com.iformall.domain.po.WxOfflineActivityGrantAward; import com.iformall.domain.po.WxOfflineActivityGrantSettlement; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.iformall.domain.vo.OfflineActivitySettlement; @@ -24,6 +25,8 @@ public interface WxOfflineActivityGrantSettlementMapper extends CommonMapper getActivitySettlement(OfflineActivitySettlement settlement); List findList(WxOfflineActivityGrantSettlement settlement); + + void updateStatusNo(WxOfflineActivityGrantAward wxOfflineActivityGrantAward); } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java index fdd3103e4..24a0636fb 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java @@ -4,6 +4,7 @@ import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity; import cn.afterturn.easypoi.excel.entity.vo.BaseEntityTypeConstants; import com.alibaba.fastjson.JSON; import com.aliyun.openservices.shade.org.apache.commons.lang3.StringUtils; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.iformall.common.IdWorker; import com.iformall.common.Result; @@ -52,6 +53,9 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity @Autowired private WxOfflineActivityGrantItemMapper wxOfflineActivityGrantItemMapper; + @Autowired + private WxOfflineActivityGrantCashBackMapper wxOfflineActivityGrantCashBackMapper; + @Autowired WxOfflineActivityMapper wxOfflineActivityMapper; @@ -286,14 +290,6 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity //计算返现金额 BigDecimal cashBackPrice = record.getOrderMoney() .multiply(grantAwardsItem.getCashBackRatio().divide(new BigDecimal(100))); - if(EnumOfflineActivityAwardsRule.DEF.getCode().equals(activityItem.getAwardsItemRule())){ - cashBackPrice = cashBackPrice.setScale(2, RoundingMode.HALF_UP); - } else if (EnumOfflineActivityAwardsRule.YUAN.getCode().equals(activityItem.getAwardsItemRule())) { - cashBackPrice = cashBackPrice.setScale(0, RoundingMode.HALF_UP); - }else if (EnumOfflineActivityAwardsRule.TEN.getCode().equals(activityItem.getAwardsItemRule())){ - cashBackPrice = cashBackPrice.divide(new BigDecimal(10)) - .setScale(0, RoundingMode.HALF_UP).multiply(new BigDecimal(10)); - } cashBackPriceTotal = cashBackPriceTotal.add(cashBackPrice); } }else{ @@ -311,14 +307,6 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity //计算返现金额 BigDecimal cashBackPrice = wxOfflineActivityGrantAward.getOrderMoneySum() .multiply(grantAwardsItem.getCashBackRatio().divide(new BigDecimal(100))); - if(EnumOfflineActivityAwardsRule.DEF.getCode().equals(activityItem.getAwardsItemRule())){ - cashBackPrice = cashBackPrice.setScale(2, RoundingMode.HALF_UP); - } else if (EnumOfflineActivityAwardsRule.YUAN.getCode().equals(activityItem.getAwardsItemRule())) { - cashBackPrice = cashBackPrice.setScale(0, RoundingMode.HALF_UP); - }else if (EnumOfflineActivityAwardsRule.TEN.getCode().equals(activityItem.getAwardsItemRule())){ - cashBackPrice = cashBackPrice.divide(new BigDecimal(10)) - .setScale(0, RoundingMode.HALF_UP).multiply(new BigDecimal(10)); - } cashBackPriceTotal = cashBackPriceTotal.add(cashBackPrice); } @@ -332,27 +320,77 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity //计算返现金额 BigDecimal cashBackPrice = wxOfflineActivityGrantAward.getOrderMoneySum() .multiply(grantAwardsSecondItem.getCashBackRatio().divide(new BigDecimal(100))); - if(EnumOfflineActivityAwardsRule.DEF.getCode().equals(activityItem.getAwardsItemRule())){ - cashBackPrice = cashBackPrice.setScale(2, RoundingMode.HALF_UP); - } else if (EnumOfflineActivityAwardsRule.YUAN.getCode().equals(activityItem.getAwardsItemRule())) { - cashBackPrice = cashBackPrice.setScale(0, RoundingMode.HALF_UP); - }else if (EnumOfflineActivityAwardsRule.TEN.getCode().equals(activityItem.getAwardsItemRule())){ - cashBackPrice = cashBackPrice.divide(new BigDecimal(10)) - .setScale(0, RoundingMode.HALF_UP).multiply(new BigDecimal(10)); - } cashBackPriceTotal = cashBackPriceTotal.add(cashBackPrice); } - if(activityItem.getMaxAmount().compareTo(cashBackPriceTotal) >= 0){ - activityItem.setCashBackPrice(cashBackPriceTotal); - }else{ - activityItem.setCashBackPrice(activityItem.getMaxAmount()); + if(cashBackPriceTotal.compareTo(activityItem.getMaxAmount()) >= 0){ + cashBackPriceTotal = activityItem.getMaxAmount(); + } + if(EnumOfflineActivityAwardsRule.DEF.getCode().equals(activityItem.getAwardsItemRule())){ + cashBackPriceTotal = cashBackPriceTotal.setScale(2, RoundingMode.HALF_UP); + } else if (EnumOfflineActivityAwardsRule.YUAN.getCode().equals(activityItem.getAwardsItemRule())) { + cashBackPriceTotal = cashBackPriceTotal.setScale(0, RoundingMode.HALF_UP); + }else if (EnumOfflineActivityAwardsRule.TEN.getCode().equals(activityItem.getAwardsItemRule())){ + cashBackPriceTotal = cashBackPriceTotal.divide(new BigDecimal(10)) + .setScale(0, RoundingMode.HALF_UP).multiply(new BigDecimal(10)); } + WxOfflineActivityGrantCashBack activityGrantCashBack = new WxOfflineActivityGrantCashBack(); + activityGrantCashBack.setActivityId(activity.getId()); + activityGrantCashBack.setActivityName(activity.getName()); + activityGrantCashBack.setActivityItemId(activityItem.getId()); + activityGrantCashBack.setActivityItemName(activityItem.getName()); + activityGrantCashBack.setActivityItemType(activityItem.getType()); + activityGrantCashBack.setAwardsItemRule(activityItem.getAwardsItemRule()); + activityGrantCashBack.setCalculationMode(activityItem.getCalculationMode()); + activityGrantCashBack.setMaxAmount(activityItem.getMaxAmount()); + activityGrantCashBack.setStartingTaxPoint(activityItem.getStartingTaxPoint()); + activityGrantCashBack.setTaxPoints(activityItem.getTaxPoints()); + activityGrantCashBack.setCashBackPrice(cashBackPriceTotal); + activityGrantCashBack.setTaxPointsAmount(BigDecimal.ZERO); + if(activityGrantCashBack.getCashBackPrice().compareTo(activityGrantCashBack.getStartingTaxPoint()) > 0){ + activityGrantCashBack.setTaxPointsAmount(activityGrantCashBack.getCashBackPrice().subtract(activityGrantCashBack.getTaxPoints()) + .divide(new BigDecimal(100)).setScale(2, RoundingMode.HALF_UP)); + } + activityItem.setActivityGrantCashBack(activityGrantCashBack); + activityItem.setCashBackPrice(activityGrantCashBack.getCashBackPrice().subtract(activityGrantCashBack.getTaxPointsAmount())); + + WxOfflineActivityGrantCashBack lastActivityGrantCashBack = getLastActivityGrantCashBack(wxOfflineActivityGrantAward, activity.getId(), activityItem.getId()); + if(lastActivityGrantCashBack != null){ + BigDecimal subtracted = lastActivityGrantCashBack.getCashBackPrice().subtract(lastActivityGrantCashBack.getTaxPointsAmount()); + String msg = "已返现:"+subtracted+"元 "; + if(subtracted.compareTo(activityItem.getCashBackPrice()) > 0){ + msg += "顾客应退:"+subtracted.subtract(activityItem.getCashBackPrice())+"元 "; + }else{ + msg += "应补顾客:"+activityItem.getCashBackPrice().subtract(subtracted)+"元 "; + } + if(lastActivityGrantCashBack.getTaxPointsAmount().compareTo(activityGrantCashBack.getTaxPointsAmount()) > 0){ + msg += "税款退还:"+lastActivityGrantCashBack.getTaxPointsAmount().subtract(activityGrantCashBack.getTaxPointsAmount())+"元 "; + }else{ + msg += "顾客补税:"+activityGrantCashBack.getTaxPointsAmount().subtract(lastActivityGrantCashBack.getTaxPointsAmount())+"元 "; + } + activityItem.setCashBackMsg(msg); + } + + } } } + private WxOfflineActivityGrantCashBack getLastActivityGrantCashBack(WxOfflineActivityGrantAward wxOfflineActivityGrantAward,Long activityId,Long activityItemId){ + Long grantId = wxOfflineActivityGrantAwardMapper.getLastId(wxOfflineActivityGrantAward); + if(grantId == null){ + return null; + } + + WxOfflineActivityGrantCashBack cashBackQ = new WxOfflineActivityGrantCashBack(); + cashBackQ.updateTenantInfo(wxOfflineActivityGrantAward); + cashBackQ.setGrantId(grantId); + cashBackQ.setActivityId(activityId); + cashBackQ.setActivityItemId(activityItemId); + return wxOfflineActivityGrantCashBackMapper.selectOne(new QueryWrapper<>(cashBackQ)); + } + private void handlerAwardsSharePrice(List awardsItemList){ if(awardsItemList == null || awardsItemList.isEmpty()){ return; @@ -385,6 +423,16 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity wxOfflineActivityGrantAward.setUpdateDate(now); wxOfflineActivityGrantAwardMapper.insert(wxOfflineActivityGrantAward); + //失效 + WxOfflineActivityGrantAward upd = new WxOfflineActivityGrantAward(); + upd.setId(wxOfflineActivityGrantAward.getId()); + upd.updateTenantInfo(wxOfflineActivityGrantAward); + upd.setStatus(EnumYesOrNo.NO.getCode()); + upd.setActivityId(activity.getId()); + upd.setCusPhone(wxOfflineActivityGrantAward.getCusPhone()); + upd.setUpdateDate(now); + wxOfflineActivityGrantAwardMapper.updateStatusNo(upd); + wxOfflineActivityRecordGrantService.insertFromGrantAward(wxOfflineActivityGrantAward); //处理奖项 @@ -401,6 +449,7 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity // List wxOfflineActivityRecords = wxOfflineActivityRecordMapper.selectBatchIds(wxOfflineActivityGrantAward.getRecordIds()); WxOfflineActivityRecord recordQ = new WxOfflineActivityRecord(); recordQ.updateTenantInfo(wxOfflineActivityGrantAward); + recordQ.setActivityId(activity.getId()); recordQ.setCusPhone(wxOfflineActivityGrantAward.getCusPhone()); List wxOfflineActivityRecords = wxOfflineActivityRecordMapper.findList(recordQ); if (wxOfflineActivityRecords == null || wxOfflineActivityRecords.isEmpty()) { @@ -613,28 +662,48 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity } BigDecimal prop = BigDecimal.ONE; - if(activityItem.getMaxAmount().compareTo(cashBackPriceTotal) >= 0){ - activityItem.setCashBackPrice(cashBackPriceTotal); - }else{ + if(cashBackPriceTotal.compareTo(activityItem.getMaxAmount()) >= 0){ prop = activityItem.getMaxAmount().divide(cashBackPriceTotal).setScale(4, RoundingMode.HALF_UP);; - activityItem.setCashBackPrice(activityItem.getMaxAmount()); + cashBackPriceTotal = activityItem.getMaxAmount(); + } + if(EnumOfflineActivityAwardsRule.DEF.getCode().equals(activityItem.getAwardsItemRule())){ + cashBackPriceTotal = cashBackPriceTotal.setScale(2, RoundingMode.HALF_UP); + } else if (EnumOfflineActivityAwardsRule.YUAN.getCode().equals(activityItem.getAwardsItemRule())) { + cashBackPriceTotal = cashBackPriceTotal.setScale(0, RoundingMode.HALF_UP); + }else if (EnumOfflineActivityAwardsRule.TEN.getCode().equals(activityItem.getAwardsItemRule())){ + cashBackPriceTotal = cashBackPriceTotal.divide(new BigDecimal(10)) + .setScale(0, RoundingMode.HALF_UP).multiply(new BigDecimal(10)); } for (WxOfflineActivityGrantItem grantItem:grantItemList){ if(EnumOfflineActivityAwardsRule.DEF.getCode().equals(activityItem.getAwardsItemRule())){ - grantItem.setAwardPrice(grantItem.getAwardPrice().multiply(prop).multiply(prop).setScale(2, RoundingMode.HALF_UP)); - activityItem.setCashBackPrice(activityItem.getCashBackPrice().setScale(2, RoundingMode.HALF_UP)); + grantItem.setAwardPrice(grantItem.getAwardPrice().multiply(prop).setScale(2, RoundingMode.HALF_UP)); } else if (EnumOfflineActivityAwardsRule.YUAN.getCode().equals(activityItem.getAwardsItemRule())) { grantItem.setAwardPrice(grantItem.getAwardPrice().multiply(prop).multiply(prop).setScale(0, RoundingMode.HALF_UP)); - activityItem.setCashBackPrice(activityItem.getCashBackPrice().setScale(0, RoundingMode.HALF_UP)); }else if (EnumOfflineActivityAwardsRule.TEN.getCode().equals(activityItem.getAwardsItemRule())){ grantItem.setAwardPrice(grantItem.getAwardPrice().multiply(prop).multiply(prop).divide(new BigDecimal(10)) .setScale(0, RoundingMode.HALF_UP).multiply(new BigDecimal(10))); - activityItem.setCashBackPrice(activityItem.getCashBackPrice().divide(new BigDecimal(10)) - .setScale(0, RoundingMode.HALF_UP).multiply(new BigDecimal(10))); } } grantActivityItem.setActivityGrantItemList(grantItemList); + WxOfflineActivityGrantCashBack activityGrantCashBack = new WxOfflineActivityGrantCashBack(); + activityGrantCashBack.setActivityId(activity.getId()); + activityGrantCashBack.setActivityName(activity.getName()); + activityGrantCashBack.setActivityItemId(activityItem.getId()); + activityGrantCashBack.setActivityItemName(activityItem.getName()); + activityGrantCashBack.setActivityItemType(activityItem.getType()); + activityGrantCashBack.setAwardsItemRule(activityItem.getAwardsItemRule()); + activityGrantCashBack.setCalculationMode(activityItem.getCalculationMode()); + activityGrantCashBack.setMaxAmount(activityItem.getMaxAmount()); + activityGrantCashBack.setStartingTaxPoint(activityItem.getStartingTaxPoint()); + activityGrantCashBack.setTaxPoints(activityItem.getTaxPoints()); + activityGrantCashBack.setCashBackPrice(cashBackPriceTotal); + activityGrantCashBack.setTaxPointsAmount(BigDecimal.ZERO); + if(activityGrantCashBack.getCashBackPrice().compareTo(activityGrantCashBack.getStartingTaxPoint()) > 0){ + activityGrantCashBack.setTaxPointsAmount(activityGrantCashBack.getCashBackPrice().subtract(activityGrantCashBack.getTaxPoints()) + .divide(new BigDecimal(100)).setScale(2, RoundingMode.HALF_UP)); + } + grantActivityItem.setActivityGrantCashBack(activityGrantCashBack); } @@ -687,6 +756,7 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity //最近30天数据 WxOfflineActivityGrantAward grantAwardQ = new WxOfflineActivityGrantAward(); grantAwardQ.updateTenantInfo(tenantInfo); + grantAwardQ.setStatus(EnumYesOrNo.YES.getCode()); grantAwardQ.setCreateDateBegin(DateUtils.stringToDate(monthStartdate)); Integer monthCount = wxOfflineActivityGrantAwardMapper.getCusCount(grantAwardQ); //一周前的昨天 @@ -732,18 +802,26 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity @Override public List grantAwardDetail(WxOfflineActivityGrantAward wxOfflineActivityGrantAward) { - List grantIds = wxOfflineActivityRecordGrantMapper.selectGrantId(wxOfflineActivityGrantAward.getTenantId(),wxOfflineActivityGrantAward.getActivityId(),wxOfflineActivityGrantAward.getRecordId()); - if(grantIds == null || grantIds.isEmpty()){ - return null; - } +// List grantIds = wxOfflineActivityRecordGrantMapper.selectGrantId(wxOfflineActivityGrantAward.getTenantId(),wxOfflineActivityGrantAward.getActivityId(),wxOfflineActivityGrantAward.getRecordId()); +// if(grantIds == null || grantIds.isEmpty()){ +// return null; +// } WxOfflineActivityGrantAward grantAwardQ = new WxOfflineActivityGrantAward(); grantAwardQ.updateTenantInfo(wxOfflineActivityGrantAward); - grantAwardQ.setIds(grantIds); +// grantAwardQ.setIds(grantIds); + grantAwardQ.setActivityId(wxOfflineActivityGrantAward.getActivityId()); + grantAwardQ.setCusPhone(wxOfflineActivityGrantAward.getCusPhone()); List grantAwardList = wxOfflineActivityGrantAwardMapper.findList(grantAwardQ); for (WxOfflineActivityGrantAward grantAward : grantAwardList) { //获取奖项 List activityItemList = wxOfflineActivityItemService.getActivityItemList(grantAward.getActivityId(), grantAward.getTenantId()); grantAward.setActivityItemList(activityItemList); + //获取返现汇总 + WxOfflineActivityGrantCashBack cashBackQ = new WxOfflineActivityGrantCashBack(); + cashBackQ.updateTenantInfo(grantAward); + cashBackQ.setGrantId(grantAward.getId()); + List cashBackList = wxOfflineActivityGrantCashBackMapper.findList(cashBackQ); + Map cashBackMap = cashBackList.stream().collect(Collectors.toMap(WxOfflineActivityGrantCashBack::getActivityItemId, Function.identity())); //获取实际获得奖项 WxOfflineActivityGrantItem grantItemQ = new WxOfflineActivityGrantItem(); grantItemQ.updateTenantInfo(grantAward); @@ -751,6 +829,7 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity List grantItemList = wxOfflineActivityGrantItemMapper.findList(grantItemQ); Map> activityItemGrantMap = grantItemList.stream().collect(groupingBy(WxOfflineActivityGrantItem::getActivityItemId)); for (WxOfflineActivityItem activityItem : grantAward.getActivityItemList()) { + activityItem.setActivityGrantCashBack(cashBackMap.get(activityItem.getId())); List grantActivityItemList = activityItemGrantMap.get(activityItem.getId()); if (grantActivityItemList == null || grantActivityItemList.isEmpty()) { activityItem.setIsMeet(false); @@ -783,6 +862,7 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity WxOfflineActivityGrantAward grantAwardQ = new WxOfflineActivityGrantAward(); grantAwardQ.updateTenantInfo(wxOfflineActivity); grantAwardQ.setActivityId(wxOfflineActivity.getId()); + grantAwardQ.setStatus(EnumYesOrNo.YES.getCode()); List grantAwardList = wxOfflineActivityGrantAwardMapper.findList(grantAwardQ); if(grantAwardList != null){ WxMerchant merchantQ = new WxMerchant(); @@ -796,6 +876,7 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity WxOfflineActivityGrantItem grantItemQ = new WxOfflineActivityGrantItem(); grantItemQ.updateTenantInfo(wxOfflineActivity); grantItemQ.setActivityId(wxOfflineActivity.getId()); + grantItemQ.setStatus(EnumYesOrNo.YES.getCode()); List grantItem = wxOfflineActivityGrantItemMapper.findList(grantItemQ); Map> grantItemMap = grantItem.stream().collect(groupingBy(WxOfflineActivityGrantItem::getGrantId)); List grantRecordList = wxOfflineActivityRecordGrantMapper.findGrantRecordList(wxOfflineActivity.getId(),wxOfflineActivity.getTenantId()); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantItemServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantItemServiceImpl.java index 954d76923..698fdc573 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantItemServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantItemServiceImpl.java @@ -3,11 +3,13 @@ package com.iformall.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.iformall.common.IdWorker; import com.iformall.domain.po.WxOfflineActivityGrantAward; +import com.iformall.domain.po.WxOfflineActivityGrantCashBack; import com.iformall.domain.po.WxOfflineActivityGrantItem; import com.iformall.domain.po.WxOfflineActivityItem; import com.iformall.enums.EnumOfflineActivityAwardsMoneyRule; import com.iformall.enums.EnumOfflineActivityAwardsRule; import com.iformall.enums.EnumOfflineActivityType; +import com.iformall.mapper.WxOfflineActivityGrantCashBackMapper; import com.iformall.service.WxOfflineActivityGrantItemService; import com.iformall.mapper.WxOfflineActivityGrantItemMapper; import org.springframework.beans.factory.annotation.Autowired; @@ -29,21 +31,23 @@ public class WxOfflineActivityGrantItemServiceImpl implements WxOfflineActivityG @Autowired private WxOfflineActivityGrantItemMapper wxOfflineActivityGrantItemMapper; + @Autowired + private WxOfflineActivityGrantCashBackMapper wxOfflineActivityGrantCashBackMapper; + @Override public void insertFromGrantAward(WxOfflineActivityGrantAward wxOfflineActivityGrantAward) { - List rantItemList = new ArrayList<>(); + List grantItemList = new ArrayList<>(); + List cashBackList = new ArrayList<>(); final IdWorker idWorker = IdWorker.get(); Date now = new Date(); for (WxOfflineActivityItem activityItem : wxOfflineActivityGrantAward.getActivityItemList()) { - if(activityItem.getActivityGrantItemList() == null){ - continue; - } - for (WxOfflineActivityGrantItem grantGrantItem : activityItem.getActivityGrantItemList()) { - grantGrantItem.setGrantId(wxOfflineActivityGrantAward.getId()); - grantGrantItem.setId(idWorker.nextId()); - grantGrantItem.updateTenantInfo(wxOfflineActivityGrantAward); - grantGrantItem.setCreateDate(now); - grantGrantItem.setUpdateDate(now); + if(activityItem.getActivityGrantItemList() != null){ + for (WxOfflineActivityGrantItem grantGrantItem : activityItem.getActivityGrantItemList()) { + grantGrantItem.setGrantId(wxOfflineActivityGrantAward.getId()); + grantGrantItem.setId(idWorker.nextId()); + grantGrantItem.updateTenantInfo(wxOfflineActivityGrantAward); + grantGrantItem.setCreateDate(now); + grantGrantItem.setUpdateDate(now); // if(EnumOfflineActivityType.CASHBACK.getCode().equals(grantGrantItem.getActivityItemType())){ // BigDecimal awardPrice = wxOfflineActivityGrantAward.getOrderMoneySum() // .multiply(grantGrantItem.getCashBackRatio().divide(new BigDecimal(100))); @@ -56,10 +60,25 @@ public class WxOfflineActivityGrantItemServiceImpl implements WxOfflineActivityG // grantGrantItem.setAwardPrice(awardPriceTen.multiply(new BigDecimal(10))); // } // } - rantItemList.add(grantGrantItem); + grantItemList.add(grantGrantItem); + } + } + + if(activityItem.getActivityGrantCashBack() != null){ + WxOfflineActivityGrantCashBack activityGrantCashBack = activityItem.getActivityGrantCashBack(); + activityGrantCashBack.setGrantId(wxOfflineActivityGrantAward.getId()); + activityGrantCashBack.setId(idWorker.nextId()); + activityGrantCashBack.updateTenantInfo(wxOfflineActivityGrantAward); + activityGrantCashBack.setCreateDate(now); + activityGrantCashBack.setUpdateDate(now); + cashBackList.add(activityGrantCashBack); } } - wxOfflineActivityGrantItemMapper.insertList(rantItemList); + wxOfflineActivityGrantItemMapper.insertList(grantItemList); + + wxOfflineActivityGrantItemMapper.updateStatusNo(wxOfflineActivityGrantAward); + + if(!cashBackList.isEmpty()) wxOfflineActivityGrantCashBackMapper.insertList(cashBackList); } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantSettlementServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantSettlementServiceImpl.java index eae46410a..f68a16dca 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantSettlementServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantSettlementServiceImpl.java @@ -161,6 +161,7 @@ public class WxOfflineActivityGrantSettlementServiceImpl implements WxOfflineAct } wxOfflineActivityGrantSettlementMapper.insertList(settlementList); + wxOfflineActivityGrantSettlementMapper.updateStatusNo(wxOfflineActivityGrantAward); } @Override @@ -177,6 +178,7 @@ public class WxOfflineActivityGrantSettlementServiceImpl implements WxOfflineAct //最近30天 WxOfflineActivityGrantSettlement settlement = new WxOfflineActivityGrantSettlement(); settlement.updateTenantInfo(tenantInfo); + settlement.setStatus(EnumYesOrNo.YES.getCode()); settlement.setCreateDateBegin(DateUtils.stringToDate(monthStartdate)); OfflineActivitySettlementStatistics monthStatistics = wxOfflineActivityGrantSettlementMapper.settlementStatistics(settlement); //一周前的昨天 @@ -270,6 +272,7 @@ public class WxOfflineActivityGrantSettlementServiceImpl implements WxOfflineAct //获取结算相关 WxOfflineActivityGrantSettlement settlement = new WxOfflineActivityGrantSettlement(); settlement.updateTenantInfo(activity); + settlement.setStatus(EnumYesOrNo.YES.getCode()); settlement.setActivityId(activity.getId()); OfflineActivitySettlementStatistics settlementStatistics = wxOfflineActivityGrantSettlementMapper.settlementStatistics(settlement); activity.setGrantMershantCount(settlementStatistics.getMerchantCount()); @@ -294,7 +297,7 @@ public class WxOfflineActivityGrantSettlementServiceImpl implements WxOfflineAct record.setMerchantIdList(mids); } } - + record.setStatus(EnumYesOrNo.YES.getCode()); List activitySettlementList = wxOfflineActivityGrantSettlementMapper.getActivitySettlement(record); if (activitySettlementList != null && !activitySettlementList.isEmpty()) { @@ -325,6 +328,7 @@ public class WxOfflineActivityGrantSettlementServiceImpl implements WxOfflineAct }else{ result.put("merchantName",merchant.getName()); } + grantSettlement.setStatus(EnumYesOrNo.YES.getCode()); List activitySettlementList = wxOfflineActivityGrantSettlementMapper.getActivitySettlement(grantSettlement); if (activitySettlementList == null || activitySettlementList.isEmpty()) { result.put("recordCount",0); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityRecordServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityRecordServiceImpl.java index 478b3e730..4dcc079d6 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityRecordServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityRecordServiceImpl.java @@ -100,6 +100,7 @@ public class WxOfflineActivityRecordServiceImpl implements WxOfflineActivityReco } } if(awardQ != null){ + awardQ.setStatus(EnumYesOrNo.YES.getCode()); List rids = wxOfflineActivityGrantAwardMapper.getRecordIdList(awardQ); if (null == rids || rids.size() <= 0 ) { record.setId(-1L); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityServiceImpl.java index 29a9790fe..82c211c90 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityServiceImpl.java @@ -112,6 +112,7 @@ public class WxOfflineActivityServiceImpl implements WxOfflineActivityService{ WxOfflineActivityGrantItem grantItemQ = new WxOfflineActivityGrantItem(); grantItemQ.updateTenantInfo(activity); grantItemQ.setActivityId(activity.getId()); + grantItemQ.setStatus(EnumYesOrNo.YES.getCode()); activity.setGrantItemCount(wxOfflineActivityGrantItemMapper.getSumAwardCount(grantItemQ)); } diff --git a/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantAwardMapper.xml b/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantAwardMapper.xml index 406bc5e57..88a638355 100644 --- a/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantAwardMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantAwardMapper.xml @@ -22,6 +22,7 @@ + @@ -58,6 +59,9 @@ and `cus_phone` = #{cusPhone} + + and `status` = #{status} + and id in @@ -91,6 +95,9 @@ and `create_date` <= #{createDateEnd} + + and `status` = #{status} + @@ -113,6 +120,9 @@ and ga.`create_date` <= #{createDateEnd} + + and `status` = #{status} + and ga.create_by in @@ -124,4 +134,15 @@ + + + + + update wx_offline_activity_grant_award set status = #{status},update_date = #{updateDate} + where `activity_id` = #{activityId} and `cus_phone` = #{cusPhone} and `id` != #{id} + diff --git a/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantCashBackMapper.xml b/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantCashBackMapper.xml new file mode 100644 index 000000000..dd4820cd0 --- /dev/null +++ b/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantCashBackMapper.xml @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id,tenant_id,parent_tenant_id, + grant_id,activity_id,activity_name, + activity_item_id,activity_item_name,activity_item_type,awards_item_rule,calculation_mode, + create_date,update_date,max_amount,starting_tax_point,tax_points,cash_back_price,tax_points_amount + + + + where 1 = 1 + + + and `id` = #{id} + + + + and `tenant_id` = #{tenantId} + + + and `parent_tenant_id` = #{parentTenantId} + + + + and `grant_id` = #{grantId} + + + + and `activity_id` = #{activityId} + + + and `activity_item_id` = #{activityItemId} + + + + and id in + + #{idItem} + + + order by ${sortColumns} + + + + + + insert into wx_offline_activity_grant_item + (id, + grant_id,activity_id,activity_name, + activity_item_id,activity_item_name,activity_item_type, + awards_item_rule,calculation_mode, + create_date,update_date + ,max_amount,starting_tax_point,tax_points,cash_back_price,tax_points_amount) + values + + (#{item.id,jdbcType=BIGINT}, + #{item.grantId,jdbcType=BIGINT},#{item.activityId,jdbcType=BIGINT},#{item.activityName,jdbcType=VARCHAR}, + #{item.activityItemId,jdbcType=BIGINT},#{item.activityItemName,jdbcType=VARCHAR},#{item.activityItemType,jdbcType=INTEGER}, + #{item.awardsItemRule,jdbcType=INTEGER},#{item.calculationMode,jdbcType=INTEGER}, + #{item.createDate,jdbcType=TIMESTAMP},#{item.updateDate,jdbcType=TIMESTAMP}, + #{item.maxAmount,jdbcType=DECIMAL},#{item.startingTaxPoint,jdbcType=DECIMAL},#{item.taxPoints,jdbcType=DECIMAL},#{item.cashBackPrice,jdbcType=DECIMAL},#{item.taxPointsAmount,jdbcType=DECIMAL}) + + + + diff --git a/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantItemMapper.xml b/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantItemMapper.xml index 9c60b0bf9..184ef2a55 100644 --- a/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantItemMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantItemMapper.xml @@ -29,6 +29,7 @@ + @@ -70,6 +71,10 @@ and `award_itam_id` = #{awardItamId} + + and `status` = #{status} + + and id in @@ -119,6 +124,17 @@ and activity_id = #{activityId} + + + and `status` = #{status} + + + update wx_offline_activity_grant_item set status = 0,update_date = now() + where grant_id in ( + select id from wx_offline_activity_grant_award + where `activity_id` = #{activityId} and `cus_phone` = #{cusPhone} and `id` != #{id}) + + diff --git a/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantSettlementMapper.xml b/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantSettlementMapper.xml index dca024453..e6af0ff54 100644 --- a/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantSettlementMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantSettlementMapper.xml @@ -25,6 +25,7 @@ + @@ -80,6 +81,9 @@ and `create_date` <= #{createDateEnd} + + and `status` = #{status} + and merchant_id in @@ -149,6 +153,10 @@ and `create_date` <= #{createDateEnd} + + and `status` = #{status} + + @@ -174,6 +182,9 @@ and `merchant_id` = #{merchantId} + + and `status` = #{status} + and merchant_id in @@ -185,4 +196,11 @@ + + update wx_offline_activity_grant_settlement set status = 0,update_date = now() + where grant_id in ( + select id from wx_offline_activity_grant_award + where `activity_id` = #{activityId} and `cus_phone` = #{cusPhone} and `id` != #{id}) + + From 92be0d73b1d5df70641ed619e6a16f3ad64f56ba Mon Sep 17 00:00:00 2001 From: xiaohu <1901900812@qq.com> Date: Fri, 8 Nov 2024 11:26:51 +0800 Subject: [PATCH 04/13] //offlineActivity --- .../impl/WxOfflineActivityGrantAwardServiceImpl.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java index 24a0636fb..cf6418dd0 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java @@ -829,7 +829,12 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity List grantItemList = wxOfflineActivityGrantItemMapper.findList(grantItemQ); Map> activityItemGrantMap = grantItemList.stream().collect(groupingBy(WxOfflineActivityGrantItem::getActivityItemId)); for (WxOfflineActivityItem activityItem : grantAward.getActivityItemList()) { - activityItem.setActivityGrantCashBack(cashBackMap.get(activityItem.getId())); + WxOfflineActivityGrantCashBack cashBack = cashBackMap.get(activityItem.getId()); + if(cashBack != null){ + activityItem.setActivityGrantCashBack(cashBackMap.get(activityItem.getId())); + activityItem.setCashBackPrice(cashBack.getCashBackPrice().subtract(cashBack.getTaxPointsAmount())); + } + List grantActivityItemList = activityItemGrantMap.get(activityItem.getId()); if (grantActivityItemList == null || grantActivityItemList.isEmpty()) { activityItem.setIsMeet(false); From 7557a3880a52a77921680a73290ec4c2c3e4cf48 Mon Sep 17 00:00:00 2001 From: xiaohu <1901900812@qq.com> Date: Fri, 8 Nov 2024 11:36:09 +0800 Subject: [PATCH 05/13] //offlineActivity --- .../resources/mapper/WxOfflineActivityAwardsItemMapper.xml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/mallinkService/src/main/resources/mapper/WxOfflineActivityAwardsItemMapper.xml b/mallinkService/src/main/resources/mapper/WxOfflineActivityAwardsItemMapper.xml index 622ee0742..9165e9dec 100644 --- a/mallinkService/src/main/resources/mapper/WxOfflineActivityAwardsItemMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxOfflineActivityAwardsItemMapper.xml @@ -26,7 +26,7 @@ id,tenant_id,parent_tenant_id, - activity_item_id,`name`,grade,merchant_count, + activity_item_id,`type`,`name`,grade,merchant_count, min_amount,max_amount,cash_back_ratio,price, money_rule,mall_share_rate,merchant_share_rate, create_date,update_date @@ -50,6 +50,10 @@ and `activity_item_id` = #{activityItemId} + + and `type` = #{type} + + and `name` like concat('%', #{name},'%') From c204bb942d246167cf4e8949e9d51bf31271ed7a Mon Sep 17 00:00:00 2001 From: xiaohu <1901900812@qq.com> Date: Fri, 8 Nov 2024 13:21:03 +0800 Subject: [PATCH 06/13] //offlineActivity --- .../service/impl/WxOfflineActivityGrantAwardServiceImpl.java | 1 + 1 file changed, 1 insertion(+) diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java index cf6418dd0..2abcc252a 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java @@ -451,6 +451,7 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity recordQ.updateTenantInfo(wxOfflineActivityGrantAward); recordQ.setActivityId(activity.getId()); recordQ.setCusPhone(wxOfflineActivityGrantAward.getCusPhone()); + recordQ.setAuditStatus(EnumOfflineActivityRecordStatus.AUDI_SUCCESS.getCode()); List wxOfflineActivityRecords = wxOfflineActivityRecordMapper.findList(recordQ); if (wxOfflineActivityRecords == null || wxOfflineActivityRecords.isEmpty()) { throw new MallinkException(Result.ERROR, "未查询到活动订单"); From 79276d73f459c9e0fd620232893ac907caaf282d Mon Sep 17 00:00:00 2001 From: xiaohu <1901900812@qq.com> Date: Sat, 9 Nov 2024 02:34:23 +0800 Subject: [PATCH 07/13] //offlineActivity --- .../impl/WxOfflineActivityGrantAwardServiceImpl.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java index 2abcc252a..9c52cf9da 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java @@ -348,8 +348,9 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity activityGrantCashBack.setTaxPoints(activityItem.getTaxPoints()); activityGrantCashBack.setCashBackPrice(cashBackPriceTotal); activityGrantCashBack.setTaxPointsAmount(BigDecimal.ZERO); - if(activityGrantCashBack.getCashBackPrice().compareTo(activityGrantCashBack.getStartingTaxPoint()) > 0){ - activityGrantCashBack.setTaxPointsAmount(activityGrantCashBack.getCashBackPrice().subtract(activityGrantCashBack.getTaxPoints()) + if(activityGrantCashBack.getStartingTaxPoint() != null && activityGrantCashBack.getCashBackPrice().compareTo(activityGrantCashBack.getStartingTaxPoint()) > 0 + && activityGrantCashBack.getTaxPoints() != null){ + activityGrantCashBack.setTaxPointsAmount(activityGrantCashBack.getCashBackPrice().multiply(activityGrantCashBack.getTaxPoints()) .divide(new BigDecimal(100)).setScale(2, RoundingMode.HALF_UP)); } activityItem.setActivityGrantCashBack(activityGrantCashBack); @@ -700,8 +701,9 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity activityGrantCashBack.setTaxPoints(activityItem.getTaxPoints()); activityGrantCashBack.setCashBackPrice(cashBackPriceTotal); activityGrantCashBack.setTaxPointsAmount(BigDecimal.ZERO); - if(activityGrantCashBack.getCashBackPrice().compareTo(activityGrantCashBack.getStartingTaxPoint()) > 0){ - activityGrantCashBack.setTaxPointsAmount(activityGrantCashBack.getCashBackPrice().subtract(activityGrantCashBack.getTaxPoints()) + if(activityGrantCashBack.getStartingTaxPoint() != null && activityGrantCashBack.getCashBackPrice().compareTo(activityGrantCashBack.getStartingTaxPoint()) > 0 + && activityGrantCashBack.getTaxPoints() != null){ + activityGrantCashBack.setTaxPointsAmount(activityGrantCashBack.getCashBackPrice().multiply(activityGrantCashBack.getTaxPoints()) .divide(new BigDecimal(100)).setScale(2, RoundingMode.HALF_UP)); } grantActivityItem.setActivityGrantCashBack(activityGrantCashBack); From 60c8891c36f2c4175193a5031d9f0634156460c9 Mon Sep 17 00:00:00 2001 From: xiaohu <1901900812@qq.com> Date: Sat, 9 Nov 2024 02:51:51 +0800 Subject: [PATCH 08/13] //offlineActivity --- ...xOfflineActivityGrantAwardServiceImpl.java | 90 +++++++++---------- 1 file changed, 44 insertions(+), 46 deletions(-) diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java index 9c52cf9da..499738466 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java @@ -301,26 +301,25 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity grantAwardsItem = awardsItem; } } - if(grantAwardsItem == null){ - continue; + if(grantAwardsItem != null){ + //计算返现金额 + BigDecimal cashBackPrice = wxOfflineActivityGrantAward.getOrderMoneySum() + .multiply(grantAwardsItem.getCashBackRatio().divide(new BigDecimal(100))); + cashBackPriceTotal = cashBackPriceTotal.add(cashBackPrice); } - //计算返现金额 - BigDecimal cashBackPrice = wxOfflineActivityGrantAward.getOrderMoneySum() - .multiply(grantAwardsItem.getCashBackRatio().divide(new BigDecimal(100))); - cashBackPriceTotal = cashBackPriceTotal.add(cashBackPrice); + } if(activityItem.getActivityAwardsItemSecondList() != null && !activityItem.getActivityAwardsItemSecondList().isEmpty()){ List merchantIds = wxOfflineActivityGrantAward.getRecordList().stream().map(WxOfflineActivityRecord::getMerchantId).distinct().collect(toList()); Map collect = activityItem.getActivityAwardsItemSecondList().stream().collect(toMap(WxOfflineActivityAwardsItem::getMerchantCount, Function.identity())); WxOfflineActivityAwardsItem grantAwardsSecondItem = collect.get(merchantIds.size()); - if(grantAwardsSecondItem == null){ - continue; + if(grantAwardsSecondItem != null){ + //计算返现金额 + BigDecimal cashBackPrice = wxOfflineActivityGrantAward.getOrderMoneySum() + .multiply(grantAwardsSecondItem.getCashBackRatio().divide(new BigDecimal(100))); + cashBackPriceTotal = cashBackPriceTotal.add(cashBackPrice); } - //计算返现金额 - BigDecimal cashBackPrice = wxOfflineActivityGrantAward.getOrderMoneySum() - .multiply(grantAwardsSecondItem.getCashBackRatio().divide(new BigDecimal(100))); - cashBackPriceTotal = cashBackPriceTotal.add(cashBackPrice); } if(cashBackPriceTotal.compareTo(activityItem.getMaxAmount()) >= 0){ @@ -605,22 +604,21 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity grantAwardsItem = awardsItem; } } - if(grantAwardsItem == null){ - continue; - } + if(grantAwardsItem != null){ + WxOfflineActivityGrantItem grantGrantItem = new WxOfflineActivityGrantItem(); + grantGrantItem.setRecordId(record.getId()); + //计算返现金额 + BigDecimal cashBackPrice = record.getOrderMoney() + .multiply(grantAwardsItem.getCashBackRatio().divide(new BigDecimal(100))); - WxOfflineActivityGrantItem grantGrantItem = new WxOfflineActivityGrantItem(); - grantGrantItem.setRecordId(record.getId()); - //计算返现金额 - BigDecimal cashBackPrice = record.getOrderMoney() - .multiply(grantAwardsItem.getCashBackRatio().divide(new BigDecimal(100))); + grantAwardsItem.setPrice(cashBackPrice); + handlerGrantItem(grantGrantItem,activity,activityItem,grantAwardsItem); - grantAwardsItem.setPrice(cashBackPrice); - handlerGrantItem(grantGrantItem,activity,activityItem,grantAwardsItem); + grantItemList.add(grantGrantItem); - grantItemList.add(grantGrantItem); + cashBackPriceTotal = cashBackPriceTotal.add(cashBackPrice); + } - cashBackPriceTotal = cashBackPriceTotal.add(cashBackPrice); } }else{ @@ -631,36 +629,36 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity grantAwardsItem = awardsItem; } } - if(grantAwardsItem == null){ - continue; + if(grantAwardsItem != null){ + WxOfflineActivityGrantItem grantGrantItem = new WxOfflineActivityGrantItem(); + //计算返现金额 + BigDecimal cashBackPrice = wxOfflineActivityGrantAward.getOrderMoneySum() + .multiply(grantAwardsItem.getCashBackRatio().divide(new BigDecimal(100))); + grantAwardsItem.setPrice(cashBackPrice); + handlerGrantItem(grantGrantItem,activity,activityItem,grantAwardsItem); + + grantItemList.add(grantGrantItem); + cashBackPriceTotal = cashBackPriceTotal.add(cashBackPrice); } - WxOfflineActivityGrantItem grantGrantItem = new WxOfflineActivityGrantItem(); - //计算返现金额 - BigDecimal cashBackPrice = wxOfflineActivityGrantAward.getOrderMoneySum() - .multiply(grantAwardsItem.getCashBackRatio().divide(new BigDecimal(100))); - grantAwardsItem.setPrice(cashBackPrice); - handlerGrantItem(grantGrantItem,activity,activityItem,grantAwardsItem); - - grantItemList.add(grantGrantItem); - cashBackPriceTotal = cashBackPriceTotal.add(cashBackPrice); + } if(activityItem.getActivityAwardsItemSecondList() != null && !activityItem.getActivityAwardsItemSecondList().isEmpty()){ List merchantIds = wxOfflineActivityGrantAward.getRecordList().stream().map(WxOfflineActivityRecord::getMerchantId).distinct().collect(toList()); Map collect = activityItem.getActivityAwardsItemSecondList().stream().collect(toMap(WxOfflineActivityAwardsItem::getMerchantCount, Function.identity())); WxOfflineActivityAwardsItem grantAwardsSecondItem = collect.get(merchantIds.size()); - if(grantAwardsSecondItem == null){ - continue; + if(grantAwardsSecondItem != null){ + WxOfflineActivityGrantItem grantGrantItem = new WxOfflineActivityGrantItem(); + //计算返现金额 + BigDecimal cashBackPrice = wxOfflineActivityGrantAward.getOrderMoneySum() + .multiply(grantAwardsSecondItem.getCashBackRatio().divide(new BigDecimal(100))); + grantAwardsSecondItem.setPrice(cashBackPrice); + handlerGrantItem(grantGrantItem,activity,activityItem,grantAwardsSecondItem); + + grantItemList.add(grantGrantItem); + cashBackPriceTotal = cashBackPriceTotal.add(cashBackPrice); } - WxOfflineActivityGrantItem grantGrantItem = new WxOfflineActivityGrantItem(); - //计算返现金额 - BigDecimal cashBackPrice = wxOfflineActivityGrantAward.getOrderMoneySum() - .multiply(grantAwardsSecondItem.getCashBackRatio().divide(new BigDecimal(100))); - grantAwardsSecondItem.setPrice(cashBackPrice); - handlerGrantItem(grantGrantItem,activity,activityItem,grantAwardsSecondItem); - - grantItemList.add(grantGrantItem); - cashBackPriceTotal = cashBackPriceTotal.add(cashBackPrice); + } BigDecimal prop = BigDecimal.ONE; From 232771e7777bec65c9f65c3dce1dcaeb50b3b6f3 Mon Sep 17 00:00:00 2001 From: xiaohu <1901900812@qq.com> Date: Sat, 9 Nov 2024 04:49:24 +0800 Subject: [PATCH 09/13] //offlineActivity --- .../WxOfflineActivityGrantCashBackMapper.java | 2 +- ...xOfflineActivityGrantAwardServiceImpl.java | 92 ++++++++++--------- ...OfflineActivityRecordGrantServiceImpl.java | 4 +- .../WxOfflineActivityGrantCashBackMapper.xml | 4 +- 4 files changed, 54 insertions(+), 48 deletions(-) diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityGrantCashBackMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityGrantCashBackMapper.java index 5e71f76b2..33e4abe2d 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityGrantCashBackMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityGrantCashBackMapper.java @@ -18,7 +18,7 @@ public interface WxOfflineActivityGrantCashBackMapper extends CommonMapper findList(WxOfflineActivityGrantCashBack offlineActivityGrantCashBack); - void insertList(List cashBackList); + void insertList(@Param("cashBackList")List cashBackList); } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java index 499738466..a5cf1ac7a 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java @@ -505,40 +505,37 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity if(wxOfflineActivityGrantAward.getActivityItemList() == null){ throw new MallinkException(Result.ERROR, "请检查活动项参数"); } + Map grantActivityItemMap = wxOfflineActivityGrantAward.getActivityItemList().stream().collect(toMap(WxOfflineActivityItem::getId, Function.identity())); List activityItemList = wxOfflineActivityItemService.getActivityItemList(activity.getId(), activity.getTenantId()); - Map activityItemMap = activityItemList.stream().collect(toMap(WxOfflineActivityItem::getId, Function.identity())); int i = 0;//检查活动奖项 - for (WxOfflineActivityItem grantActivityItem : wxOfflineActivityGrantAward.getActivityItemList()) { - if(grantActivityItem.getId() == null){ - throw new MallinkException(Result.ERROR, "请检查活动项参数"); - } - WxOfflineActivityItem activityItem = activityItemMap.get(grantActivityItem.getId()); - if(activityItem == null){ - throw new MallinkException(Result.ERROR, "请检查活动项参数"); - } - List activityGrantItemList = grantActivityItem.getActivityGrantItemList(); -// if(activityGrantItemList == null || activityGrantItemList.isEmpty()){ -// continue; -//// 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, "请检查活动奖项存在重复"); - } - - Map awardsItemMap = activityItem.getActivityAwardsItemList().stream().collect(toMap(WxOfflineActivityAwardsItem::getId, Function.identity())); + for (WxOfflineActivityItem activityItem : activityItemList) { + Map awardsItemMap = activityItem.getActivityAwardsItemList().stream().collect(toMap(WxOfflineActivityAwardsItem::getId, Function.identity())); + //获取奖项 + WxOfflineActivityItem grantActivityItem = grantActivityItemMap.get(activityItem.getId()); + List activityGrantItemList = null; + if(grantActivityItem != null){ + activityGrantItemList = grantActivityItem.getActivityGrantItemList(); + } if(EnumOfflineActivityType.LOTTERY_DRAW.getCode().equals(activityItem.getType())){ - + if(activityGrantItemList == null || activityGrantItemList.isEmpty()){ + continue; + } if(wxOfflineActivityGrantAward.getOrderMoneySum().compareTo(activityItem.getLimitMoney()) < 0){ 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, "请检查活动奖项存在重复"); + } + //奖项限制数量 int limitCount = 0; if(activityItem.getAwardsItemPrice() != null && activityItem.getAwardsItemPrice().compareTo(BigDecimal.ZERO) > 0){ @@ -564,9 +561,14 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity handlerGrantItem(grantGrantItem,activity,activityItem,awardsItem); } + activityItem.setActivityGrantItemList(activityGrantItemList); } else if(EnumOfflineActivityType.GIFT.getCode().equals(activityItem.getType())){ + if(activityGrantItemList == null || activityGrantItemList.isEmpty()){ + continue; + } + if(activityGrantItemList.size() != 1){ throw new MallinkException(Result.ERROR, "请检查活动"+activityItem.getName()+"奖项参数"); } @@ -588,10 +590,12 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity handlerGrantItem(grantGrantItem,activity,activityItem,awardsItem); + activityItem.setActivityGrantItemList(activityGrantItemList); + } else if (EnumOfflineActivityType.CASHBACK.getCode().equals(activityItem.getType())) { BigDecimal cashBackPriceTotal = BigDecimal.ZERO; - List grantItemList = new ArrayList<>(); + activityGrantItemList = new ArrayList<>(); List sortAwardsItemList = activityItem.getActivityAwardsItemList().stream().sorted(Comparator.comparing(WxOfflineActivityAwardsItem::getMinAmount)).collect(toList()); //单笔订单计算 @@ -614,7 +618,7 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity grantAwardsItem.setPrice(cashBackPrice); handlerGrantItem(grantGrantItem,activity,activityItem,grantAwardsItem); - grantItemList.add(grantGrantItem); + activityGrantItemList.add(grantGrantItem); cashBackPriceTotal = cashBackPriceTotal.add(cashBackPrice); } @@ -637,7 +641,7 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity grantAwardsItem.setPrice(cashBackPrice); handlerGrantItem(grantGrantItem,activity,activityItem,grantAwardsItem); - grantItemList.add(grantGrantItem); + activityGrantItemList.add(grantGrantItem); cashBackPriceTotal = cashBackPriceTotal.add(cashBackPrice); } @@ -646,16 +650,16 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity if(activityItem.getActivityAwardsItemSecondList() != null && !activityItem.getActivityAwardsItemSecondList().isEmpty()){ List merchantIds = wxOfflineActivityGrantAward.getRecordList().stream().map(WxOfflineActivityRecord::getMerchantId).distinct().collect(toList()); Map collect = activityItem.getActivityAwardsItemSecondList().stream().collect(toMap(WxOfflineActivityAwardsItem::getMerchantCount, Function.identity())); - WxOfflineActivityAwardsItem grantAwardsSecondItem = collect.get(merchantIds.size()); - if(grantAwardsSecondItem != null){ + WxOfflineActivityAwardsItem awardsSecondItem = collect.get(merchantIds.size()); + if(awardsSecondItem != null){ WxOfflineActivityGrantItem grantGrantItem = new WxOfflineActivityGrantItem(); //计算返现金额 BigDecimal cashBackPrice = wxOfflineActivityGrantAward.getOrderMoneySum() - .multiply(grantAwardsSecondItem.getCashBackRatio().divide(new BigDecimal(100))); - grantAwardsSecondItem.setPrice(cashBackPrice); - handlerGrantItem(grantGrantItem,activity,activityItem,grantAwardsSecondItem); + .multiply(awardsSecondItem.getCashBackRatio().divide(new BigDecimal(100))); + awardsSecondItem.setPrice(cashBackPrice); + handlerGrantItem(grantGrantItem,activity,activityItem,awardsSecondItem); - grantItemList.add(grantGrantItem); + activityGrantItemList.add(grantGrantItem); cashBackPriceTotal = cashBackPriceTotal.add(cashBackPrice); } @@ -663,7 +667,7 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity BigDecimal prop = BigDecimal.ONE; if(cashBackPriceTotal.compareTo(activityItem.getMaxAmount()) >= 0){ - prop = activityItem.getMaxAmount().divide(cashBackPriceTotal).setScale(4, RoundingMode.HALF_UP);; + prop = activityItem.getMaxAmount().divide(cashBackPriceTotal,4,RoundingMode.HALF_UP); cashBackPriceTotal = activityItem.getMaxAmount(); } if(EnumOfflineActivityAwardsRule.DEF.getCode().equals(activityItem.getAwardsItemRule())){ @@ -674,18 +678,19 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity cashBackPriceTotal = cashBackPriceTotal.divide(new BigDecimal(10)) .setScale(0, RoundingMode.HALF_UP).multiply(new BigDecimal(10)); } - for (WxOfflineActivityGrantItem grantItem:grantItemList){ + for (WxOfflineActivityGrantItem grantItem:activityGrantItemList){ if(EnumOfflineActivityAwardsRule.DEF.getCode().equals(activityItem.getAwardsItemRule())){ grantItem.setAwardPrice(grantItem.getAwardPrice().multiply(prop).setScale(2, RoundingMode.HALF_UP)); } else if (EnumOfflineActivityAwardsRule.YUAN.getCode().equals(activityItem.getAwardsItemRule())) { - grantItem.setAwardPrice(grantItem.getAwardPrice().multiply(prop).multiply(prop).setScale(0, RoundingMode.HALF_UP)); + grantItem.setAwardPrice(grantItem.getAwardPrice().multiply(prop).setScale(0, RoundingMode.HALF_UP)); }else if (EnumOfflineActivityAwardsRule.TEN.getCode().equals(activityItem.getAwardsItemRule())){ - grantItem.setAwardPrice(grantItem.getAwardPrice().multiply(prop).multiply(prop).divide(new BigDecimal(10)) + grantItem.setAwardPrice(grantItem.getAwardPrice().multiply(prop).divide(new BigDecimal(10)) .setScale(0, RoundingMode.HALF_UP).multiply(new BigDecimal(10))); } } - grantActivityItem.setActivityGrantItemList(grantItemList); + activityItem.setActivityGrantItemList(activityGrantItemList); + WxOfflineActivityGrantCashBack activityGrantCashBack = new WxOfflineActivityGrantCashBack(); activityGrantCashBack.setActivityId(activity.getId()); activityGrantCashBack.setActivityName(activity.getName()); @@ -704,20 +709,18 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity activityGrantCashBack.setTaxPointsAmount(activityGrantCashBack.getCashBackPrice().multiply(activityGrantCashBack.getTaxPoints()) .divide(new BigDecimal(100)).setScale(2, RoundingMode.HALF_UP)); } - grantActivityItem.setActivityGrantCashBack(activityGrantCashBack); - + activityItem.setActivityGrantCashBack(activityGrantCashBack); } - for (WxOfflineActivityGrantItem grantGrantItem : grantActivityItem.getActivityGrantItemList()) { + for (WxOfflineActivityGrantItem grantGrantItem : activityItem.getActivityGrantItemList()) { i++; - if(grantGrantItem.getAwardCount() == null){ - grantGrantItem.setAwardCount(1); - } } } if(i == 0){ throw new MallinkException(Result.ERROR, "请检查是否有活动奖项"); } + + wxOfflineActivityGrantAward.setActivityItemList(activityItemList); } private void handlerGrantItem(WxOfflineActivityGrantItem grantGrantItem,WxOfflineActivity activity,WxOfflineActivityItem activityItem,WxOfflineActivityAwardsItem awardsItem){ @@ -734,6 +737,9 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity grantGrantItem.setAwardMaxAmount(awardsItem.getMaxAmount()); grantGrantItem.setAwardsItemRule(activityItem.getAwardsItemRule()); grantGrantItem.setCashBackRatio(awardsItem.getCashBackRatio()); + if(grantGrantItem.getAwardCount() == null){ + grantGrantItem.setAwardCount(1); + } grantGrantItem.setAwardPrice(awardsItem.getPrice() .multiply(new BigDecimal(grantGrantItem.getAwardCount())) .setScale(2, RoundingMode.HALF_UP)); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityRecordGrantServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityRecordGrantServiceImpl.java index de2e4df9e..3ea904648 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityRecordGrantServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityRecordGrantServiceImpl.java @@ -25,11 +25,11 @@ public class WxOfflineActivityRecordGrantServiceImpl implements WxOfflineActivit @Override public void insertFromGrantAward(WxOfflineActivityGrantAward wxOfflineActivityGrantAward) { List recordGrantList = new ArrayList<>(); - wxOfflineActivityGrantAward.getRecordIds().forEach(recordId ->{ + wxOfflineActivityGrantAward.getRecordList().forEach(record ->{ WxOfflineActivityRecordGrant recordGrant = new WxOfflineActivityRecordGrant(); recordGrant.updateTenantInfo(wxOfflineActivityGrantAward); recordGrant.setActivityId(wxOfflineActivityGrantAward.getActivityId()); - recordGrant.setRecordId(recordId); + recordGrant.setRecordId(record.getId()); recordGrant.setGrantId(wxOfflineActivityGrantAward.getId()); recordGrantList.add(recordGrant); diff --git a/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantCashBackMapper.xml b/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantCashBackMapper.xml index dd4820cd0..c78fce734 100644 --- a/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantCashBackMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantCashBackMapper.xml @@ -74,7 +74,7 @@ - insert into wx_offline_activity_grant_item + insert into wx_offline_activity_grant_cash_back (id, grant_id,activity_id,activity_name, activity_item_id,activity_item_name,activity_item_type, @@ -82,7 +82,7 @@ create_date,update_date ,max_amount,starting_tax_point,tax_points,cash_back_price,tax_points_amount) values - + (#{item.id,jdbcType=BIGINT}, #{item.grantId,jdbcType=BIGINT},#{item.activityId,jdbcType=BIGINT},#{item.activityName,jdbcType=VARCHAR}, #{item.activityItemId,jdbcType=BIGINT},#{item.activityItemName,jdbcType=VARCHAR},#{item.activityItemType,jdbcType=INTEGER}, From a6a7c1c56ec96b028cdc43d73983feb2ab2636d6 Mon Sep 17 00:00:00 2001 From: xiaohu <1901900812@qq.com> Date: Sat, 9 Nov 2024 11:58:07 +0800 Subject: [PATCH 10/13] //offlineActivity --- .../WxOfflineActivityGrantAwardServiceImpl.java | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java index a5cf1ac7a..5d500a5e0 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java @@ -252,8 +252,11 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity grantAwardsItem = awardsItem; } } - if(grantAwardsItem == null){ - continue; + if(grantAwardsItem != null){ + //计算返现金额 + BigDecimal cashBackPrice = record.getOrderMoney() + .multiply(grantAwardsItem.getCashBackRatio().divide(new BigDecimal(100))); + cashBackPriceTotal = cashBackPriceTotal.add(cashBackPrice); } // WxOfflineActivityGrantItem grantItem = new WxOfflineActivityGrantItem(); @@ -287,10 +290,7 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity //// grantItem.setMerchantSharePrice(grantAwardsItem.getMerchantSharePrice()); // grantItemList.add(grantItem); - //计算返现金额 - BigDecimal cashBackPrice = record.getOrderMoney() - .multiply(grantAwardsItem.getCashBackRatio().divide(new BigDecimal(100))); - cashBackPriceTotal = cashBackPriceTotal.add(cashBackPrice); + } }else{ @@ -352,6 +352,7 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity activityGrantCashBack.setTaxPointsAmount(activityGrantCashBack.getCashBackPrice().multiply(activityGrantCashBack.getTaxPoints()) .divide(new BigDecimal(100)).setScale(2, RoundingMode.HALF_UP)); } + activityItem.setIsMeet(true); activityItem.setActivityGrantCashBack(activityGrantCashBack); activityItem.setCashBackPrice(activityGrantCashBack.getCashBackPrice().subtract(activityGrantCashBack.getTaxPointsAmount())); From 9788cb0ec598b781201aafe65aab60665b4a9ef5 Mon Sep 17 00:00:00 2001 From: xiaohu <1901900812@qq.com> Date: Sat, 9 Nov 2024 23:09:57 +0800 Subject: [PATCH 11/13] //offlineActivity --- .../WxOfflineActivityRecordController.java | 5 +++-- .../domain/po/WxOfflineActivityRecord.java | 16 +++++++++++++--- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/mallinkBApi/src/main/java/com/iformall/controller/WxOfflineActivityRecordController.java b/mallinkBApi/src/main/java/com/iformall/controller/WxOfflineActivityRecordController.java index 45def129a..ba81c0a51 100644 --- a/mallinkBApi/src/main/java/com/iformall/controller/WxOfflineActivityRecordController.java +++ b/mallinkBApi/src/main/java/com/iformall/controller/WxOfflineActivityRecordController.java @@ -59,6 +59,9 @@ public class WxOfflineActivityRecordController extends BaseController { if (null == wxOfflineActivityRecord.getOrderMoney() ) { return new ResultData(Result.ERROR,"订单金额不能为空"); } + TenantEntity tenantEntity = getTenantInfo(); + wxOfflineActivityRecord.updateTenantInfo(tenantEntity); + if(wxOfflineActivityRecord.getId() != null){ WxOfflineActivityRecord record = wxOfflineActivityRecordService.getById(wxOfflineActivityRecord.getId(),wxOfflineActivityRecord.getTenantId()); if(!EnumOfflineActivityRecordStatus.AUDT_FAIL.getCode().equals(record.getAuditStatus())){ @@ -66,8 +69,6 @@ public class WxOfflineActivityRecordController extends BaseController { } wxOfflineActivityRecord.setAuditRemark(""); } - TenantEntity tenantEntity = getTenantInfo(); - wxOfflineActivityRecord.updateTenantInfo(tenantEntity); wxOfflineActivityRecord.setCreateBy(getMerchantBUserId()); wxOfflineActivityRecord.setMerchantId(getLoginBUser().getMerchantId()); wxOfflineActivityRecord.setAuditStatus(EnumOfflineActivityRecordStatus.AUDTING.getCode()); diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityRecord.java b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityRecord.java index 34178ad11..2f688e6de 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityRecord.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityRecord.java @@ -103,10 +103,20 @@ public class WxOfflineActivityRecord extends TenantEntity { } return lotteryNumList; } + @Excel(name = "抽奖券编码", width = 20, orderNum = "9") + @TableField(exist = false) + private String lotteryNumStr; + public String getLotteryNumStr() { + if(lotteryNumList != null && !lotteryNumList.isEmpty()){ + return String.join(",", lotteryNumList); + } + return lotteryNumStr; + } /** * 抽奖券数量 */ + @Excel(name = "抽奖券数量", width = 20, orderNum = "10") @TableField(value = "lottery_count") private Integer lotteryCount; @@ -164,14 +174,14 @@ public class WxOfflineActivityRecord extends TenantEntity { /** * 审批意见 */ - @Excel(name = "审核意见", width = 20, orderNum = "10") + @Excel(name = "审核意见", width = 20, orderNum = "12") @TableField(value = "audit_remark") private String auditRemark; /** * 审批状态 */ - @Excel(name = "审核状态", width = 20, orderNum = "9", replace = {"审核中_0", "已审批_1", "已驳回_2", "已退单_3", "已发奖_10"}) + @Excel(name = "审核状态", width = 20, orderNum = "13", replace = {"审核中_0", "已审批_1", "已驳回_2", "已退单_3", "已发奖_10"}) @TableField(value = "audit_status") private Integer auditStatus; @@ -187,7 +197,7 @@ public class WxOfflineActivityRecord extends TenantEntity { @TableField(value = "audit_by") private Long auditBy; - @Excel(name = "审核人", width = 20, orderNum = "12") + @Excel(name = "审核人", width = 20, orderNum = "14") @TableField(exist = false) private String auditByName; From 2ad0c4223ea85964230d553d5286383f027a22d5 Mon Sep 17 00:00:00 2001 From: xiaohu <1901900812@qq.com> Date: Sat, 9 Nov 2024 23:22:43 +0800 Subject: [PATCH 12/13] //offlineActivity --- .../java/com/iformall/domain/po/WxOfflineActivityRecord.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityRecord.java b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityRecord.java index 2f688e6de..d9bb934d6 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityRecord.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityRecord.java @@ -108,7 +108,7 @@ public class WxOfflineActivityRecord extends TenantEntity { private String lotteryNumStr; public String getLotteryNumStr() { if(lotteryNumList != null && !lotteryNumList.isEmpty()){ - return String.join(",", lotteryNumList); + lotteryNumStr = String.join(",", lotteryNumList); } return lotteryNumStr; } From b11c092a5e4d2afdfad04364d54a34d3bdf3724b Mon Sep 17 00:00:00 2001 From: xiaohu <1901900812@qq.com> Date: Sat, 9 Nov 2024 23:41:46 +0800 Subject: [PATCH 13/13] //offlineActivity --- .../java/com/iformall/domain/po/WxOfflineActivityRecord.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityRecord.java b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityRecord.java index d9bb934d6..d875371ec 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityRecord.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityRecord.java @@ -107,7 +107,7 @@ public class WxOfflineActivityRecord extends TenantEntity { @TableField(exist = false) private String lotteryNumStr; public String getLotteryNumStr() { - if(lotteryNumList != null && !lotteryNumList.isEmpty()){ + if(this.getLotteryNumList() != null && !lotteryNumList.isEmpty()){ lotteryNumStr = String.join(",", lotteryNumList); } return lotteryNumStr;