Преглед изворни кода

//OfflineActivity

release_toaliyun_real
xiaohu пре 1 година
родитељ
комит
2fe3f05469
5 измењених фајлова са 139 додато и 8 уклоњено
  1. +17
    -2
      mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivityGrantController.java
  2. +11
    -1
      mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityItem.java
  3. +12
    -0
      mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityRecord.java
  4. +2
    -0
      mallinkService/src/main/java/com/iformall/service/WxOfflineActivityGrantAwardService.java
  5. +97
    -5
      mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java

+ 17
- 2
mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivityGrantController.java Прегледај датотеку

@@ -87,11 +87,27 @@ public class WxOfflineActivityGrantController extends BaseController {
wxOfflineActivityGrantAwardService.recordExport(request,response,wxOfflineActivityRecord); wxOfflineActivityGrantAwardService.recordExport(request,response,wxOfflineActivityRecord);
} }


@ApiOperation("活动发放页面处理")
@PostMapping("grantAwardPage")
public ResultData grantAwardPage(@RequestBody WxOfflineActivityGrantAward wxOfflineActivityGrantAward) {
if(wxOfflineActivityGrantAward.getActivityId() == null){
return new ResultData(Result.ERROR,"活动ID为空");
}
if(wxOfflineActivityGrantAward.getRecordIds() == null || wxOfflineActivityGrantAward.getRecordIds().isEmpty()){
return new ResultData(Result.ERROR,"请选择订单");
}
TenantEntity tenantEntity = getTenantInfo();
wxOfflineActivityGrantAward.updateTenantInfo(tenantEntity);
wxOfflineActivityGrantAwardService.handlerGrantAwardPage(wxOfflineActivityGrantAward);
return new ResultData(wxOfflineActivityGrantAward);
}


@ApiOperation("活动发放") @ApiOperation("活动发放")
@PostMapping("grantAward") @PostMapping("grantAward")
public ResultData grantAward(@RequestBody WxOfflineActivityGrantAward wxOfflineActivityGrantAward) { public ResultData grantAward(@RequestBody WxOfflineActivityGrantAward wxOfflineActivityGrantAward) {
if(wxOfflineActivityGrantAward.getActivityId() == null){ if(wxOfflineActivityGrantAward.getActivityId() == null){
return new ResultData(Result.ERROR,"活动ID未空");
return new ResultData(Result.ERROR,"活动ID空");
} }
if(wxOfflineActivityGrantAward.getRecordIds() == null || wxOfflineActivityGrantAward.getRecordIds().isEmpty()){ if(wxOfflineActivityGrantAward.getRecordIds() == null || wxOfflineActivityGrantAward.getRecordIds().isEmpty()){
return new ResultData(Result.ERROR,"请选择订单"); return new ResultData(Result.ERROR,"请选择订单");
@@ -106,5 +122,4 @@ public class WxOfflineActivityGrantController extends BaseController {
return new ResultData(); return new ResultData();
} }



} }

+ 11
- 1
mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityItem.java Прегледај датотеку

@@ -57,7 +57,7 @@ public class WxOfflineActivityItem extends TenantEntity {
private Integer awardsItemPrice; private Integer awardsItemPrice;


/** /**
* 奖项数量限制
* 奖项数量限制(为0时无限制)
*/ */
@TableField(value = "awards_item_limit") @TableField(value = "awards_item_limit")
private Integer awardsItemLimit; private Integer awardsItemLimit;
@@ -91,6 +91,16 @@ public class WxOfflineActivityItem extends TenantEntity {
*/ */
@TableField(exist = false) @TableField(exist = false)
private List<WxOfflineActivityAwardsItem> activityAwardsItemList; private List<WxOfflineActivityAwardsItem> activityAwardsItemList;
/**
* 是否满足活动条件
*/
@TableField(exist = false)
private Boolean isMeet;
/**
* 实际获得奖项限制(为0时无限制)
*/
@TableField(exist = false)
private Integer realAwardsItemLimit;


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


+ 12
- 0
mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityRecord.java Прегледај датотеку

@@ -1,6 +1,8 @@
package com.iformall.domain.po; package com.iformall.domain.po;


import cn.afterturn.easypoi.excel.annotation.Excel; import cn.afterturn.easypoi.excel.annotation.Excel;
import com.alibaba.fastjson.JSON;
import com.aliyun.openservices.shade.org.apache.commons.lang3.StringUtils;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
@@ -88,6 +90,16 @@ public class WxOfflineActivityRecord extends TenantEntity {
*/ */
@TableField(value = "lottery_num") @TableField(value = "lottery_num")
private String lotteryNum; private String lotteryNum;
@TableField(exist = false)
private List<String> lotteryNumList;
public List<String> getLotteryNumList() {
if(StringUtils.isNotBlank(lotteryNum)){
try {
lotteryNumList = JSON.parseArray(lotteryNum, String.class);
}catch(Exception e){}
}
return lotteryNumList;
}


/** /**
* 抽奖券数量 * 抽奖券数量


+ 2
- 0
mallinkService/src/main/java/com/iformall/service/WxOfflineActivityGrantAwardService.java Прегледај датотеку

@@ -21,6 +21,8 @@ public interface WxOfflineActivityGrantAwardService {


List<WxOfflineActivityRecord> getRecordList(WxOfflineActivityRecord wxOfflineActivityRecord); List<WxOfflineActivityRecord> getRecordList(WxOfflineActivityRecord wxOfflineActivityRecord);


void handlerGrantAwardPage(WxOfflineActivityGrantAward wxOfflineActivityGrantAward);

void grantAward(WxOfflineActivityGrantAward wxOfflineActivityGrantAward); void grantAward(WxOfflineActivityGrantAward wxOfflineActivityGrantAward);


Map<String, Object> cusStatistics(TenantEntity tenantInfo); Map<String, Object> cusStatistics(TenantEntity tenantInfo);


+ 97
- 5
mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java Прегледај датотеку

@@ -1,5 +1,7 @@
package com.iformall.service.impl; package com.iformall.service.impl;


import com.alibaba.fastjson.JSON;
import com.aliyun.openservices.shade.org.apache.commons.lang3.StringUtils;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.iformall.common.IdWorker; import com.iformall.common.IdWorker;
import com.iformall.common.Result; import com.iformall.common.Result;
@@ -152,6 +154,77 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity
} }
} }


@Override
public void handlerGrantAwardPage(WxOfflineActivityGrantAward wxOfflineActivityGrantAward) {
WxOfflineActivity activity = wxOfflineActivityMapper.selectById(wxOfflineActivityGrantAward.getActivityId(), wxOfflineActivityGrantAward.getTenantId());
if(activity == null){
throw new MallinkException(Result.ERROR, "未查询到活动");
}
if(!EnumOfflineActivityStatus.ON_LINE.getCode().equals(activity.getStatus())){
throw new MallinkException(Result.ERROR, "请检查活动状态");
}
//订单合并
handlerGrantData(activity,wxOfflineActivityGrantAward,true);

//奖项处理
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())){

if(wxOfflineActivityGrantAward.getOrderMoneySum() < activityItem.getLimitMoney()){
activityItem.setIsMeet(false);
continue;
}
activityItem.setIsMeet(true);
//奖项限制数量
int limitCount = wxOfflineActivityGrantAward.getOrderMoneySum() / activityItem.getAwardsItemPrice();
if(activityItem.getAwardsItemLimit() != null && activityItem.getAwardsItemLimit() > 0
&& activityItem.getAwardsItemLimit() < limitCount){
limitCount = activityItem.getAwardsItemLimit();
}
activityItem.setRealAwardsItemLimit(limitCount);
}
else if(EnumOfflineActivityType.GIFT.getCode().equals(activityItem.getType())){
List<WxOfflineActivityAwardsItem> sortAwardsItemList = activityItem.getActivityAwardsItemList().stream().sorted(Comparator.comparingInt(WxOfflineActivityAwardsItem::getMinAmount)).collect(Collectors.toList());
WxOfflineActivityAwardsItem grantAwardsItem = null;
for(WxOfflineActivityAwardsItem awardsItem : sortAwardsItemList){
if(wxOfflineActivityGrantAward.getOrderMoneySum() > awardsItem.getMinAmount()
&& wxOfflineActivityGrantAward.getOrderMoneySum() < awardsItem.getMaxAmount()){
grantAwardsItem = awardsItem;
}
}
if(grantAwardsItem == null){
activityItem.setIsMeet(false);
continue;
}
activityItem.setIsMeet(true);
activityItem.setRealAwardsItemLimit(1);

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);
grantItem.setAwardPrice(grantAwardsItem.getPrice());
grantItem.setMoneyRule(grantAwardsItem.getMoneyRule());
grantItem.setMallShareRate(grantAwardsItem.getMallShareRate());
grantItem.setMerchantShareRate(grantAwardsItem.getMerchantShareRate());
activityItem.setActivityGrantItemList(Arrays.asList(grantItem));
}
else if (EnumOfflineActivityType.CASHBACK.getCode().equals(activityItem.getType())) {
activityItem.setIsMeet(true);
activityItem.setRealAwardsItemLimit(1);
}
}
}

@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void grantAward(WxOfflineActivityGrantAward wxOfflineActivityGrantAward) { public void grantAward(WxOfflineActivityGrantAward wxOfflineActivityGrantAward) {
@@ -164,7 +237,7 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity
throw new MallinkException(Result.ERROR, "请检查活动状态"); throw new MallinkException(Result.ERROR, "请检查活动状态");
} }


handlerGrantData(activity,wxOfflineActivityGrantAward);
handlerGrantData(activity,wxOfflineActivityGrantAward,false);
Date now = new Date(); Date now = new Date();
final IdWorker idWorker = IdWorker.get(); final IdWorker idWorker = IdWorker.get();
wxOfflineActivityGrantAward.setId(idWorker.nextId()); wxOfflineActivityGrantAward.setId(idWorker.nextId());
@@ -183,7 +256,7 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity
} }




private void handlerGrantData(WxOfflineActivity activity,WxOfflineActivityGrantAward wxOfflineActivityGrantAward){
private void handlerGrantData(WxOfflineActivity activity,WxOfflineActivityGrantAward wxOfflineActivityGrantAward,boolean isForPage){


List<WxOfflineActivityRecord> wxOfflineActivityRecords = wxOfflineActivityRecordMapper.selectBatchIds(wxOfflineActivityGrantAward.getRecordIds()); List<WxOfflineActivityRecord> wxOfflineActivityRecords = wxOfflineActivityRecordMapper.selectBatchIds(wxOfflineActivityGrantAward.getRecordIds());
if (wxOfflineActivityRecords == null || wxOfflineActivityRecords.isEmpty()) { if (wxOfflineActivityRecords == null || wxOfflineActivityRecords.isEmpty()) {
@@ -192,6 +265,10 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity
if(wxOfflineActivityRecords.stream().map(WxOfflineActivityRecord::getCusPhone).distinct().count() != 1){ if(wxOfflineActivityRecords.stream().map(WxOfflineActivityRecord::getCusPhone).distinct().count() != 1){
throw new MallinkException(Result.ERROR, "请检查活动订单用户是否为同一人"); throw new MallinkException(Result.ERROR, "请检查活动订单用户是否为同一人");
} }

Integer orderMoneySum = 0;
List<String> lotteryNumList = new ArrayList<>();
List<String> anniversaryLotteryNumList = new ArrayList<>();
for (WxOfflineActivityRecord record : wxOfflineActivityRecords) { for (WxOfflineActivityRecord record : wxOfflineActivityRecords) {
if(!EnumOfflineActivityRecordStatus.AUDI_SUCCESS.getCode().equals(record.getAuditStatus())){ if(!EnumOfflineActivityRecordStatus.AUDI_SUCCESS.getCode().equals(record.getAuditStatus())){
throw new MallinkException(Result.ERROR, "请检查活动订单审核状态"); throw new MallinkException(Result.ERROR, "请检查活动订单审核状态");
@@ -202,13 +279,27 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity
if(wxOfflineActivityRecordGrantMapper.selectGrantCount(activity.getTenantId(),activity.getId(),record.getId()) > 0){ if(wxOfflineActivityRecordGrantMapper.selectGrantCount(activity.getTenantId(),activity.getId(),record.getId()) > 0){
throw new MallinkException(Result.ERROR, "请检查订单是否已参与活动"); throw new MallinkException(Result.ERROR, "请检查订单是否已参与活动");
} }

orderMoneySum += record.getOrderMoney();
if(record.getLotteryNumList() != null && !record.getLotteryNumList().isEmpty()){
lotteryNumList.addAll(record.getLotteryNumList());
}
if(StringUtils.isNotBlank(record.getAnniversaryLotteryNum())){
anniversaryLotteryNumList.add(record.getAnniversaryLotteryNum());
}

} }
wxOfflineActivityGrantAward.setRecordList(wxOfflineActivityRecords); wxOfflineActivityGrantAward.setRecordList(wxOfflineActivityRecords);
wxOfflineActivityGrantAward.setActivityName(activity.getName()); wxOfflineActivityGrantAward.setActivityName(activity.getName());
wxOfflineActivityGrantAward.setCusName(wxOfflineActivityRecords.get(0).getCusName()); wxOfflineActivityGrantAward.setCusName(wxOfflineActivityRecords.get(0).getCusName());
wxOfflineActivityGrantAward.setCusPhone(wxOfflineActivityRecords.get(0).getCusPhone()); wxOfflineActivityGrantAward.setCusPhone(wxOfflineActivityRecords.get(0).getCusPhone());
wxOfflineActivityGrantAward.setOrderCount(wxOfflineActivityRecords.size()); wxOfflineActivityGrantAward.setOrderCount(wxOfflineActivityRecords.size());
wxOfflineActivityGrantAward.setOrderMoneySum(wxOfflineActivityRecords.stream().mapToInt(WxOfflineActivityRecord::getOrderMoney).sum());
wxOfflineActivityGrantAward.setOrderMoneySum(orderMoneySum);

if(isForPage){
wxOfflineActivityGrantAward.setLotteryNum(JSON.toJSONString(lotteryNumList));
wxOfflineActivityGrantAward.setAnniversaryLotteryNum(JSON.toJSONString(anniversaryLotteryNumList));
}
} }


private void handlerGrantItem(WxOfflineActivity activity, WxOfflineActivityGrantAward wxOfflineActivityGrantAward){ private void handlerGrantItem(WxOfflineActivity activity, WxOfflineActivityGrantAward wxOfflineActivityGrantAward){
@@ -216,7 +307,7 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity
List<WxOfflineActivityItem> activityItemList = wxOfflineActivityItemService.getActivityItemList(activity.getId(), activity.getTenantId()); List<WxOfflineActivityItem> activityItemList = wxOfflineActivityItemService.getActivityItemList(activity.getId(), activity.getTenantId());
Map<Long, WxOfflineActivityItem> activityItemMap = activityItemList.stream().collect(Collectors.toMap(WxOfflineActivityItem::getId, Function.identity())); Map<Long, WxOfflineActivityItem> activityItemMap = activityItemList.stream().collect(Collectors.toMap(WxOfflineActivityItem::getId, Function.identity()));


int i = 0;
int i = 0;//检查活动奖项
for (WxOfflineActivityItem grantActivityItem : wxOfflineActivityGrantAward.getActivityItemList()) { for (WxOfflineActivityItem grantActivityItem : wxOfflineActivityGrantAward.getActivityItemList()) {
if(grantActivityItem.getId() == null){ if(grantActivityItem.getId() == null){
throw new MallinkException(Result.ERROR, "请检查活动项参数"); throw new MallinkException(Result.ERROR, "请检查活动项参数");
@@ -247,7 +338,8 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity
} }
//奖项限制数量 //奖项限制数量
int limitCount = wxOfflineActivityGrantAward.getOrderMoneySum() / activityItem.getAwardsItemPrice(); int limitCount = wxOfflineActivityGrantAward.getOrderMoneySum() / activityItem.getAwardsItemPrice();
if(activityItem.getAwardsItemLimit() < limitCount){
if(activityItem.getAwardsItemLimit() != null && activityItem.getAwardsItemLimit() > 0
&& activityItem.getAwardsItemLimit() < limitCount){
limitCount = activityItem.getAwardsItemLimit(); limitCount = activityItem.getAwardsItemLimit();
} }
if(activityGrantItemList.stream().mapToInt(WxOfflineActivityGrantItem::getAwardCount).sum()>limitCount){ if(activityGrantItemList.stream().mapToInt(WxOfflineActivityGrantItem::getAwardCount).sum()>limitCount){


Loading…
Откажи
Сачувај