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

//legionActivity

release_toaliyun_real
xiaohu 1 год назад
Родитель
Сommit
a56b768944
11 измененных файлов: 213 добавлений и 36 удалений
  1. +15
    -6
      mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivityGrantController.java
  2. +12
    -0
      mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityAwardsItem.java
  3. +39
    -1
      mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityItem.java
  4. +37
    -0
      mallinkService/src/main/java/com/iformall/enums/EnumOfflineActivityAwardsItemType.java
  5. +37
    -0
      mallinkService/src/main/java/com/iformall/enums/EnumOfflineActivityCalculationMode.java
  6. +1
    -1
      mallinkService/src/main/java/com/iformall/service/WxOfflineActivityAwardsItemService.java
  7. +21
    -5
      mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityAwardsItemServiceImpl.java
  8. +34
    -21
      mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java
  9. +11
    -2
      mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityItemServiceImpl.java
  10. +2
    -0
      mallinkService/src/main/resources/mapper/WxOfflineActivityAwardsItemMapper.xml
  11. +4
    -0
      mallinkService/src/main/resources/mapper/WxOfflineActivityItemMapper.xml

+ 15
- 6
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<WxOfflineActivityGrantAward> grantAwardList = wxOfflineActivityGrantAwardService.grantAwardDetail(wxOfflineActivityGrantAward);


+ 12
- 0
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;

/**
* 限制最小金额
*/


+ 39
- 1
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<WxOfflineActivityAwardsItem> activityAwardsItemList;
@TableField(exist = false)
private List<WxOfflineActivityAwardsItem> activityAwardsItemSecondList;
/**
* 是否满足活动条件
*/
@@ -110,4 +136,16 @@ public class WxOfflineActivityItem extends TenantEntity {
@TableField(exist = false)
private List<WxOfflineActivityGrantItem> activityGrantItemList;

/**
* 返现金额
*/
@TableField(exist = false)
private BigDecimal cashBackPrice;

/**
* 返现详情
*/
@TableField(exist = false)
private String cashBackMsg;

}

+ 37
- 0
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;
}
}

+ 37
- 0
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;
}
}

+ 1
- 1
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<WxOfflineActivityAwardsItem> activityAwardsItemList);
void saveOrUpdateFromActivityItem(WxOfflineActivityItem activityItem, List<WxOfflineActivityAwardsItem> activityAwardsItemList, List<WxOfflineActivityAwardsItem> activityAwardsItemSecondList);

List<WxOfflineActivityAwardsItem> getActivityAwardsItemList(Long activityItemId, String tenantId);
}

+ 21
- 5
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<WxOfflineActivityAwardsItem> activityAwardsItemList) {
public void saveOrUpdateFromActivityItem(WxOfflineActivityItem activityItem, List<WxOfflineActivityAwardsItem> activityAwardsItemList,
List<WxOfflineActivityAwardsItem> 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


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

@@ -173,6 +173,7 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity
//奖项处理
List<WxOfflineActivityItem> 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<WxOfflineActivityRecord> wxOfflineActivityRecords = wxOfflineActivityRecordMapper.selectBatchIds(wxOfflineActivityGrantAward.getRecordIds());
// List<WxOfflineActivityRecord> wxOfflineActivityRecords = wxOfflineActivityRecordMapper.selectBatchIds(wxOfflineActivityGrantAward.getRecordIds());
WxOfflineActivityRecord recordQ = new WxOfflineActivityRecord();
recordQ.updateTenantInfo(wxOfflineActivityGrantAward);
recordQ.setCusPhone(wxOfflineActivityGrantAward.getCusPhone());
List<WxOfflineActivityRecord> wxOfflineActivityRecords = wxOfflineActivityRecordMapper.findList(recordQ);
if (wxOfflineActivityRecords == null || wxOfflineActivityRecords.isEmpty()) {
throw new MallinkException(Result.ERROR, "未查询到活动订单");
}


+ 11
- 2
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<WxOfflineActivityItem> itemList = wxOfflineActivityItemMapper.findList(activityItemQuery);
for (WxOfflineActivityItem item : itemList) {
List<WxOfflineActivityAwardsItem> activityAwardsItemList = wxOfflineActivityAwardsItemService.getActivityAwardsItemList(item.getId(),tenantId);
item.setActivityAwardsItemList(activityAwardsItemList);
if(EnumOfflineActivityType.CASHBACK.getCode().equals(item.getType())){
Map<Integer, List<WxOfflineActivityAwardsItem>> collect = activityAwardsItemList.stream().collect(Collectors.groupingBy(WxOfflineActivityAwardsItem::getType));
item.setActivityAwardsItemList(collect.get(EnumOfflineActivityAwardsItemType.FIRST.getCode()));
item.setActivityAwardsItemSecondList(collect.get(EnumOfflineActivityAwardsItemType.SECOND.getCode()));
}else{
item.setActivityAwardsItemList(activityAwardsItemList);
}
}
return itemList;
}


+ 2
- 0
mallinkService/src/main/resources/mapper/WxOfflineActivityAwardsItemMapper.xml Просмотреть файл

@@ -9,8 +9,10 @@
<result property="tenantId" column="tenant_id" jdbcType="VARCHAR"/>
<result property="parentTenantId" column="parent_tenant_id" jdbcType="VARCHAR"/>
<result property="activityItemId" column="activity_item_id" jdbcType="BIGINT"/>
<result property="type" column="type" jdbcType="INTEGER"/>
<result property="name" column="name" jdbcType="VARCHAR"/>
<result property="grade" column="grade" jdbcType="INTEGER"/>
<result property="merchantCount" column="merchant_count" jdbcType="INTEGER"/>
<result property="minAmount" column="min_amount" jdbcType="DECIMAL"/>
<result property="maxAmount" column="max_amount" jdbcType="DECIMAL"/>
<result property="cashBackRatio" column="cash_back_ratio" jdbcType="DECIMAL"/>


+ 4
- 0
mallinkService/src/main/resources/mapper/WxOfflineActivityItemMapper.xml Просмотреть файл

@@ -16,6 +16,10 @@
<result property="awardsItemLimit" column="awards_item_limit" jdbcType="INTEGER"/>
<result property="awardsItemCount" column="awards_item_count" jdbcType="INTEGER"/>
<result property="awardsItemRule" column="awards_item_rule" jdbcType="SMALLINT"/>
<result property="calculationMode" column="calculation_mode" jdbcType="SMALLINT"/>
<result property="maxAmount" column="max_amount" jdbcType="DECIMAL"/>
<result property="startingTaxPoint" column="starting_tax_point" jdbcType="DECIMAL"/>
<result property="taxPoints" column="tax_points" jdbcType="DECIMAL"/>
<result property="createDate" column="create_date" jdbcType="TIMESTAMP"/>
<result property="updateDate" column="update_date" jdbcType="TIMESTAMP"/>
</resultMap>


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