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] //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 @@ + + + +