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

//activity v.2

release_toaliyun_real
xiaohu 1 год назад
Родитель
Сommit
968eea2a22
33 измененных файлов: 760 добавлений и 73 удалений
  1. +85
    -0
      mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoPrizeDrawActivityController.java
  2. +39
    -0
      mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivityGrant.java
  3. +2
    -26
      mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivityGrantAward.java
  4. +3
    -0
      mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivityGrantSettlement.java
  5. +3
    -0
      mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivityOrder.java
  6. +4
    -4
      mallinkService/src/main/java/com/iformall/domain/po/WxVtwoCashBackGrantAward.java
  7. +16
    -0
      mallinkService/src/main/java/com/iformall/domain/vo/WxVtwoActivityGrantRule.java
  8. +4
    -0
      mallinkService/src/main/java/com/iformall/mapper/WxVtwoActivityGrantAwardMapper.java
  9. +4
    -0
      mallinkService/src/main/java/com/iformall/mapper/WxVtwoActivityGrantOrderMapper.java
  10. +4
    -0
      mallinkService/src/main/java/com/iformall/mapper/WxVtwoActivityGrantSettlementMapper.java
  11. +6
    -0
      mallinkService/src/main/java/com/iformall/mapper/WxVtwoCashBackGrantAwardMapper.java
  12. +5
    -0
      mallinkService/src/main/java/com/iformall/service/WxVtwoActivityAwardService.java
  13. +4
    -0
      mallinkService/src/main/java/com/iformall/service/WxVtwoActivityGrantAwardService.java
  14. +4
    -0
      mallinkService/src/main/java/com/iformall/service/WxVtwoActivityGrantOrderService.java
  15. +4
    -0
      mallinkService/src/main/java/com/iformall/service/WxVtwoActivityGrantService.java
  16. +2
    -0
      mallinkService/src/main/java/com/iformall/service/WxVtwoActivityGrantSettlementService.java
  17. +4
    -0
      mallinkService/src/main/java/com/iformall/service/WxVtwoActivityOrderService.java
  18. +5
    -0
      mallinkService/src/main/java/com/iformall/service/WxVtwoCashBackAwardService.java
  19. +5
    -0
      mallinkService/src/main/java/com/iformall/service/WxVtwoPrizeDrawActivityService.java
  20. +18
    -0
      mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityAwardServiceImpl.java
  21. +70
    -0
      mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityGrantAwardServiceImpl.java
  22. +25
    -0
      mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityGrantOrderServiceImpl.java
  23. +64
    -0
      mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityGrantServiceImpl.java
  24. +107
    -1
      mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityGrantSettlementServiceImpl.java
  25. +42
    -0
      mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityOrderServiceImpl.java
  26. +1
    -7
      mallinkService/src/main/java/com/iformall/service/impl/WxVtwoAmountGiftActivityServiceImpl.java
  27. +1
    -4
      mallinkService/src/main/java/com/iformall/service/impl/WxVtwoCashBackActivityServiceImpl.java
  28. +17
    -3
      mallinkService/src/main/java/com/iformall/service/impl/WxVtwoCashBackAwardServiceImpl.java
  29. +122
    -14
      mallinkService/src/main/java/com/iformall/service/impl/WxVtwoPrizeDrawActivityServiceImpl.java
  30. +24
    -8
      mallinkService/src/main/resources/mapper/WxVtwoActivityGrantAwardMapper.xml
  31. +13
    -0
      mallinkService/src/main/resources/mapper/WxVtwoActivityGrantOrderMapper.xml
  32. +23
    -0
      mallinkService/src/main/resources/mapper/WxVtwoActivityGrantSettlementMapper.xml
  33. +30
    -6
      mallinkService/src/main/resources/mapper/WxVtwoCashBackGrantAwardMapper.xml

+ 85
- 0
mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoPrizeDrawActivityController.java Просмотреть файл

@@ -3,6 +3,7 @@ package com.iformall.controller.market;
import com.alibaba.fastjson.JSONObject;
import com.github.pagehelper.PageInfo;
import com.iformall.annotation.ApiVersion;
import com.iformall.common.ErrorCode;
import com.iformall.common.Result;
import com.iformall.common.ResultData;
import com.iformall.constant.SwaggerConstant;
@@ -228,4 +229,88 @@ public class WxVtwoPrizeDrawActivityController extends BaseController {
wxVtwoActivityOrderService.exportData(request,response,activityOrder,activity.getId());
}

@ApiVersion(group = SwaggerConstant.V_A_2_0)
@ApiOperation("活动发放页面处理")
@PostMapping("grantAwardPage")
public ResultData grantAwardPage(@RequestBody WxVtwoActivityGrant activityGrant) {
TenantEntity tenantEntity = getTenantInfo();
activityGrant.updateTenantInfo(tenantEntity);
if(activityGrant.getActivityId() == null){
return new ResultData(Result.ERROR,"活动ID为空");
}
if(activityGrant.getOrderIdList() == null || activityGrant.getOrderIdList().isEmpty()){
return new ResultData(Result.ERROR,"请选择订单");
}
WxVtwoPrizeDrawActivity prizeDrawActivity = wxVtwoPrizeDrawActivityService.getById(activityGrant.getActivityId(), activityGrant.getTenantId());
if(prizeDrawActivity == null){
return new ResultData(Result.ERROR,"查询不到活动");
}
if(!EnumOfflineActivityStatus.ON_LINE.getCode().equals(prizeDrawActivity.getStatus())){
throw new MallinkException(Result.ERROR, "请检查活动状态");
}
if(EnumOfflineActivityMode.CONDITION_SUM.getCode().equals(prizeDrawActivity.getAmountModel())){
if(activityGrant.getOrderFilterIdList() == null || activityGrant.getOrderFilterIdList().isEmpty()){
return new ResultData(Result.ERROR,"请筛选订单");
}
}else{
activityGrant.setOrderFilterIdList(null);
}
try{
wxVtwoPrizeDrawActivityService.handlerGrantAwardPage(prizeDrawActivity,activityGrant);
return new ResultData(activityGrant);
}catch(MallinkException e){
logger.error(e.getMessage());
return new ResultData(e.getErrorCode(), e.getMessage());
}catch(Exception e){
logger.error("异常:" + e);
return new ResultData(ErrorCode.SYS_SERVER_ERROR);
}
}


@ApiVersion(group = SwaggerConstant.V_A_2_0)
@ApiOperation("活动发放")
@PostMapping("grantAward")
public ResultData grantAward(@RequestBody WxVtwoActivityGrant activityGrant) {
TenantEntity tenantEntity = getTenantInfo();
activityGrant.updateTenantInfo(tenantEntity);
if(activityGrant.getActivityId() == null){
return new ResultData(Result.ERROR,"活动ID为空");
}
if(activityGrant.getOrderIdList() == null || activityGrant.getOrderIdList().isEmpty()){
return new ResultData(Result.ERROR,"请选择订单");
}
WxVtwoPrizeDrawActivity prizeDrawActivity = wxVtwoPrizeDrawActivityService.getById(activityGrant.getActivityId(), activityGrant.getTenantId());
if(prizeDrawActivity == null){
return new ResultData(Result.ERROR,"查询不到活动");
}
if(!EnumOfflineActivityStatus.ON_LINE.getCode().equals(prizeDrawActivity.getStatus())){
throw new MallinkException(Result.ERROR, "请检查活动状态");
}
if(EnumOfflineActivityMode.CONDITION_SUM.getCode().equals(prizeDrawActivity.getAmountModel())){
if(activityGrant.getOrderFilterIdList() == null || activityGrant.getOrderFilterIdList().isEmpty()){
return new ResultData(Result.ERROR,"请筛选订单");
}
}else{
activityGrant.setOrderFilterIdList(null);
}
if(activityGrant.getGrantAwardList() == null || activityGrant.getGrantAwardList().isEmpty()){
return new ResultData(Result.ERROR,"奖励项为空");
}
// if(StringUtils.isBlank(activityGrant.getSignImg())){
// return new ResultData(Result.ERROR,"签名为空");
// }
activityGrant.setCreateBy(getUserId());
try{
wxVtwoPrizeDrawActivityService.grantAward(prizeDrawActivity, activityGrant);
return new ResultData();
}catch(MallinkException e){
logger.error(e.getMessage());
return new ResultData(e.getErrorCode(), e.getMessage());
}catch(Exception e){
logger.error("异常:" + e);
return new ResultData(ErrorCode.SYS_SERVER_ERROR);
}
}

}

+ 39
- 0
mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivityGrant.java Просмотреть файл

@@ -1,5 +1,7 @@
package com.iformall.domain.po;

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.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
@@ -9,6 +11,7 @@ import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

import com.iformall.domain.vo.WxVtwoActivityGrantRule;
import lombok.Data;

/**
@@ -65,6 +68,18 @@ public class WxVtwoActivityGrant extends TenantEntity {
*/
@TableField(value = "lottery_num")
private String lotteryNum;
@TableField(exist = false)
private List<String> lotteryNumList;
public List<String> getLotteryNumList() {
if(StringUtils.isNotBlank(lotteryNum)){
try {
List<String> stringList = JSON.parseArray(lotteryNum, String.class);
stringList.removeIf(String::isEmpty);
lotteryNumList = stringList.isEmpty() ? null : stringList;
} catch (Exception e){}
}
return lotteryNumList;
}

/**
* 抽奖券数量
@@ -77,6 +92,18 @@ public class WxVtwoActivityGrant extends TenantEntity {
*/
@TableField(value = "anniversary_lottery_num")
private String anniversaryLotteryNum;
@TableField(exist = false)
private List<String> anniversaryLotteryNumList;
public List<String> getAnniversaryLotteryNumList() {
if(StringUtils.isNotBlank(anniversaryLotteryNum)){
try {
List<String> stringList = JSON.parseArray(anniversaryLotteryNum, String.class);
stringList.removeIf(String::isEmpty);
anniversaryLotteryNumList = stringList.isEmpty() ? null : stringList;
} catch (Exception e){}
}
return anniversaryLotteryNumList;
}

/**
* 实际领奖人
@@ -126,6 +153,9 @@ public class WxVtwoActivityGrant extends TenantEntity {
@TableField(value = "update_date")
private Date updateDate;

@TableField(exist = false)
private List<WxVtwoActivityGrantAward> grantAwardList;

@TableField(exist = false)
private List<Long> orderIdList;

@@ -134,4 +164,13 @@ public class WxVtwoActivityGrant extends TenantEntity {

@TableField(exist = false)
private List<WxVtwoActivityOrder> orderList;

@TableField(exist = false)
private List<WxVtwoActivityGrantRule> ruleList;

@TableField(exist = false)
private List<WxVtwoActivityAward> awardList;

@TableField(exist = false)
private Integer awardLimit;
}

+ 2
- 26
mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivityGrantAward.java Просмотреть файл

@@ -46,36 +46,12 @@ public class WxVtwoActivityGrantAward extends TenantEntity {
@TableField(value = "order_id")
private Long orderId;

/**
* 订单金额/总金额
*/
@TableField(value = "order_amount")
private BigDecimal orderAmount;

/**
* 金额/联单
*/
@TableField(value = "mode_type")
private Integer modeType;

/**
* 奖项限制最小金额
*/
@TableField(value = "min_amount")
private BigDecimal minAmount;

/**
* 奖项限制最大金额
*/
@TableField(value = "max_amount")
private BigDecimal maxAmount;

/**
* 联单笔数
*/
@TableField(value = "related_count")
private Integer relatedCount;

/**
* 奖项id
*/
@@ -115,8 +91,8 @@ public class WxVtwoActivityGrantAward extends TenantEntity {
/**
* 分担规则(0-商管 1-商户 2-分担)
*/
@TableField(value = "money_rule")
private Integer moneyRule;
@TableField(value = "share_rule")
private Integer shareRule;

/**
* 商管分担比例


+ 3
- 0
mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivityGrantSettlement.java Просмотреть файл

@@ -46,6 +46,9 @@ public class WxVtwoActivityGrantSettlement extends TenantEntity {
@TableField(value = "award_id")
private Long awardId;

@TableField(exist = false)
private Integer awardCount;

/**
* 发放总价值
*/


+ 3
- 0
mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivityOrder.java Просмотреть файл

@@ -257,4 +257,7 @@ public class WxVtwoActivityOrder extends TenantEntity {
*/
@TableField(exist = false)
private Integer isAmount;

@TableField(exist = false)
private BigDecimal orderRatio;
}

+ 4
- 4
mallinkService/src/main/java/com/iformall/domain/po/WxVtwoCashBackGrantAward.java Просмотреть файл

@@ -43,8 +43,8 @@ public class WxVtwoCashBackGrantAward extends TenantEntity {
/**
*
*/
@TableField(value = "record_id")
private Long recordId;
@TableField(value = "order_id")
private Long orderId;

/**
* 订单金额/总金额
@@ -109,8 +109,8 @@ public class WxVtwoCashBackGrantAward extends TenantEntity {
/**
* 分担规则(0-商管 1-商户 2-分担)
*/
@TableField(value = "money_rule")
private Integer moneyRule;
@TableField(value = "share_rule")
private Integer shareRule;

/**
* 商管分担比例


+ 16
- 0
mallinkService/src/main/java/com/iformall/domain/vo/WxVtwoActivityGrantRule.java Просмотреть файл

@@ -0,0 +1,16 @@
package com.iformall.domain.vo;

import com.iformall.domain.po.WxOfflineActivityRecord;
import lombok.Data;

import java.io.Serializable;

@Data
public class WxVtwoActivityGrantRule implements Serializable {

private Long orderId;
private Integer modeType;
private String name;
private Integer awardLimit;

}

+ 4
- 0
mallinkService/src/main/java/com/iformall/mapper/WxVtwoActivityGrantAwardMapper.java Просмотреть файл

@@ -3,6 +3,9 @@ package com.iformall.mapper;
import com.iformall.common.CommonMapper;
import com.iformall.domain.po.WxVtwoActivityGrantAward;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
* @author xiaohu
@@ -12,6 +15,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
*/
public interface WxVtwoActivityGrantAwardMapper extends CommonMapper<WxVtwoActivityGrantAward, Long> {

void insertList(@Param("grantAwardList")List<WxVtwoActivityGrantAward> grantAwardList);
}




+ 4
- 0
mallinkService/src/main/java/com/iformall/mapper/WxVtwoActivityGrantOrderMapper.java Просмотреть файл

@@ -3,6 +3,9 @@ package com.iformall.mapper;
import com.iformall.common.CommonMapper;
import com.iformall.domain.po.WxVtwoActivityGrantOrder;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
* @author xiaohu
@@ -12,6 +15,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
*/
public interface WxVtwoActivityGrantOrderMapper extends CommonMapper<WxVtwoActivityGrantOrder, Long> {

void insertList(@Param("grantOrderList")List<WxVtwoActivityGrantOrder> grantOrderList);
}




+ 4
- 0
mallinkService/src/main/java/com/iformall/mapper/WxVtwoActivityGrantSettlementMapper.java Просмотреть файл

@@ -3,6 +3,9 @@ package com.iformall.mapper;
import com.iformall.common.CommonMapper;
import com.iformall.domain.po.WxVtwoActivityGrantSettlement;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
* @author xiaohu
@@ -14,6 +17,7 @@ public interface WxVtwoActivityGrantSettlementMapper extends CommonMapper<WxVtwo

Integer getOrderCount(WxVtwoActivityGrantSettlement record);

void insertList(@Param("settlementList")List<WxVtwoActivityGrantSettlement> settlementList);
}




+ 6
- 0
mallinkService/src/main/java/com/iformall/mapper/WxVtwoCashBackGrantAwardMapper.java Просмотреть файл

@@ -1,8 +1,12 @@
package com.iformall.mapper;

import com.iformall.common.CommonMapper;
import com.iformall.domain.po.WxVtwoActivityGrantAward;
import com.iformall.domain.po.WxVtwoCashBackGrantAward;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
* @author xiaohu
@@ -12,6 +16,8 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
*/
public interface WxVtwoCashBackGrantAwardMapper extends CommonMapper<WxVtwoCashBackGrantAward, Long> {

void insertList(@Param("grantAwardList") List<WxVtwoCashBackGrantAward> grantAwardList);

}




+ 5
- 0
mallinkService/src/main/java/com/iformall/service/WxVtwoActivityAwardService.java Просмотреть файл

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
import com.iformall.domain.po.base.TenantEntity;

import java.util.List;
import java.util.Map;

/**
* @author xiaohu
@@ -14,4 +15,8 @@ import java.util.List;
public interface WxVtwoActivityAwardService extends IService<WxVtwoActivityAward> {

void saveFromActivity(TenantEntity tenantEntity, Long activityId, List<WxVtwoActivityAward> awardList);

List<WxVtwoActivityAward> findActivityAwardList(Long activityId, String tenantId);

Map<Long, WxVtwoActivityAward> findActivityAwardMap(Long activityId, String tenantId);
}

+ 4
- 0
mallinkService/src/main/java/com/iformall/service/WxVtwoActivityGrantAwardService.java Просмотреть файл

@@ -1,8 +1,11 @@
package com.iformall.service;

import com.iformall.domain.po.WxVtwoActivityGrant;
import com.iformall.domain.po.WxVtwoActivityGrantAward;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

/**
* @author xiaohu
* @description 针对表【wx_vtwo_activity_grant_award(线下活动发放奖励)】的数据库操作Service
@@ -10,4 +13,5 @@ import com.baomidou.mybatisplus.extension.service.IService;
*/
public interface WxVtwoActivityGrantAwardService extends IService<WxVtwoActivityGrantAward> {

void saveGrantAward(WxVtwoActivityGrant activityGrant);
}

+ 4
- 0
mallinkService/src/main/java/com/iformall/service/WxVtwoActivityGrantOrderService.java Просмотреть файл

@@ -2,6 +2,9 @@ package com.iformall.service;

import com.iformall.domain.po.WxVtwoActivityGrantOrder;
import com.baomidou.mybatisplus.extension.service.IService;
import com.iformall.domain.po.WxVtwoActivityOrder;

import java.util.List;

/**
* @author xiaohu
@@ -10,4 +13,5 @@ import com.baomidou.mybatisplus.extension.service.IService;
*/
public interface WxVtwoActivityGrantOrderService extends IService<WxVtwoActivityGrantOrder> {

void saveGrantOrder(Long grantId, Long activityId, List<WxVtwoActivityOrder> orderList);
}

+ 4
- 0
mallinkService/src/main/java/com/iformall/service/WxVtwoActivityGrantService.java Просмотреть файл

@@ -2,6 +2,9 @@ package com.iformall.service;

import com.iformall.domain.po.WxVtwoActivityGrant;
import com.baomidou.mybatisplus.extension.service.IService;
import com.iformall.domain.po.WxVtwoActivityOrder;

import java.util.List;

/**
* @author xiaohu
@@ -10,4 +13,5 @@ import com.baomidou.mybatisplus.extension.service.IService;
*/
public interface WxVtwoActivityGrantService extends IService<WxVtwoActivityGrant> {

void handleFromOrder(String activityName, WxVtwoActivityGrant activityGrant, List<WxVtwoActivityOrder> orderList, boolean isGrant);
}

+ 2
- 0
mallinkService/src/main/java/com/iformall/service/WxVtwoActivityGrantSettlementService.java Просмотреть файл

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

import com.iformall.domain.po.WxVtwoActivityGrant;
import com.iformall.domain.po.WxVtwoActivityGrantSettlement;
import com.baomidou.mybatisplus.extension.service.IService;

@@ -10,4 +11,5 @@ import com.baomidou.mybatisplus.extension.service.IService;
*/
public interface WxVtwoActivityGrantSettlementService extends IService<WxVtwoActivityGrantSettlement> {

void saveGrantSettlement(WxVtwoActivityGrant activityGrant);
}

+ 4
- 0
mallinkService/src/main/java/com/iformall/service/WxVtwoActivityOrderService.java Просмотреть файл

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

import com.github.pagehelper.PageInfo;
import com.iformall.domain.po.WxVtwoActivityGrant;
import com.iformall.domain.po.WxVtwoActivityOrder;
import com.baomidou.mybatisplus.extension.service.IService;
import com.iformall.domain.po.base.TenantEntity;
@@ -38,4 +39,7 @@ public interface WxVtwoActivityOrderService extends IService<WxVtwoActivityOrder

WxVtwoActivityOrder getlimitOne(WxVtwoActivityOrder activityOrder);

List<WxVtwoActivityOrder> findGrantOrder(TenantEntity tenantInfo, List<Long> idList, List<Long> filterIdList);

Integer getJointCount(Integer relatedModel, List<WxVtwoActivityOrder> orderList);
}

+ 5
- 0
mallinkService/src/main/java/com/iformall/service/WxVtwoCashBackAwardService.java Просмотреть файл

@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
import com.iformall.domain.po.base.TenantEntity;

import java.util.List;
import java.util.Map;

/**
* @author xiaohu
@@ -15,4 +16,8 @@ import java.util.List;
public interface WxVtwoCashBackAwardService extends IService<WxVtwoCashBackAward> {

void saveFromActivity(TenantEntity tenantEntity, Long activityId, List<WxVtwoCashBackAward> amountRulesObject, List<WxVtwoCashBackAward> relatedRulesObject);

List<WxVtwoCashBackAward> findActivityAwardList(Long activityId, String tenantId);

Map<Long, WxVtwoCashBackAward> findActivityAwardMap(Long activityId, String tenantId);
}

+ 5
- 0
mallinkService/src/main/java/com/iformall/service/WxVtwoPrizeDrawActivityService.java Просмотреть файл

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

import com.github.pagehelper.PageInfo;
import com.iformall.domain.po.WxVtwoActivityGrant;
import com.iformall.domain.po.WxVtwoActivityOrder;
import com.iformall.domain.po.WxVtwoPrizeDrawActivity;
import com.baomidou.mybatisplus.extension.service.IService;
@@ -25,4 +26,8 @@ public interface WxVtwoPrizeDrawActivityService extends IService<WxVtwoPrizeDraw
WxVtwoPrizeDrawActivity getById(Long id, String tenantId);

void handleSpecialTopicActivity(TenantEntity tenantEntity, WxVtwoSpecialTopicActivity activity);

void handlerGrantAwardPage(WxVtwoPrizeDrawActivity prizeDrawActivity, WxVtwoActivityGrant activityGrant);

void grantAward(WxVtwoPrizeDrawActivity prizeDrawActivity,WxVtwoActivityGrant activityGrant);
}

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

@@ -14,8 +14,12 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.math.BigDecimal;
import java.util.Collections;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;

/**
* @author xiaohu
@@ -51,6 +55,20 @@ public class WxVtwoActivityAwardServiceImpl extends ServiceImpl<WxVtwoActivityAw
}
wxVtwoActivityAwardMapper.insertList(awardList);
}

@Override
public List<WxVtwoActivityAward> findActivityAwardList(Long activityId, String tenantId) {
WxVtwoActivityAward activityAwardQ = new WxVtwoActivityAward();
activityAwardQ.setTenantId(tenantId);
activityAwardQ.setActivityId(activityId);
return wxVtwoActivityAwardMapper.findList(activityAwardQ);
}

@Override
public Map<Long, WxVtwoActivityAward> findActivityAwardMap(Long activityId, String tenantId) {
List<WxVtwoActivityAward> activityAwardList = this.findActivityAwardList(activityId, tenantId);
return activityAwardList.stream().collect(Collectors.toMap(WxVtwoActivityAward::getId, Function.identity()));
}
}




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

@@ -1,11 +1,26 @@
package com.iformall.service.impl;

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.iformall.common.IdWorker;
import com.iformall.common.Result;
import com.iformall.domain.po.WxVtwoActivityAward;
import com.iformall.domain.po.WxVtwoActivityGrant;
import com.iformall.domain.po.WxVtwoActivityGrantAward;
import com.iformall.exception.MallinkException;
import com.iformall.service.WxVtwoActivityAwardService;
import com.iformall.service.WxVtwoActivityGrantAwardService;
import com.iformall.mapper.WxVtwoActivityGrantAwardMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.List;
import java.util.Map;

import static java.util.stream.Collectors.counting;
import static java.util.stream.Collectors.groupingBy;

/**
* @author xiaohu
* @description 针对表【wx_vtwo_activity_grant_award(线下活动发放奖励)】的数据库操作Service实现
@@ -15,6 +30,61 @@ import org.springframework.stereotype.Service;
public class WxVtwoActivityGrantAwardServiceImpl extends ServiceImpl<WxVtwoActivityGrantAwardMapper, WxVtwoActivityGrantAward>
implements WxVtwoActivityGrantAwardService{

@Autowired
private WxVtwoActivityGrantAwardMapper wxVtwoActivityGrantAwardMapper;

@Autowired
private WxVtwoActivityAwardService wxVtwoActivityAwardService;

@Override
public void saveGrantAward(WxVtwoActivityGrant activityGrant) {

Map<Long, WxVtwoActivityAward> activityAwardMap = wxVtwoActivityAwardService.findActivityAwardMap(activityGrant.getActivityId(), activityGrant.getTenantId());

List<WxVtwoActivityGrantAward> grantAwardList = activityGrant.getGrantAwardList();
boolean isAwardId = grantAwardList.stream().anyMatch(grantAward -> grantAward.getAwardId() == null);
if(isAwardId){
throw new MallinkException(Result.ERROR, "请检查是否都选择奖项");
}
boolean isModeType = grantAwardList.stream().anyMatch(grantAward -> grantAward.getModeType() == null);
if(isModeType){
throw new MallinkException(Result.ERROR, "请检查奖项参数");
}
//所得奖项不能重复, 后续计算问题
boolean isRepeat = grantAwardList.stream()
.collect(groupingBy(e -> String.valueOf(e.getAwardId())+String.valueOf(e.getModeType())+String.valueOf(e.getOrderId()), counting()))
.entrySet().stream().anyMatch(e -> e.getValue() > 1);
if(isRepeat){
throw new MallinkException(Result.ERROR, "请检查奖项存在重复");
}

final IdWorker idWorker = IdWorker.get();
for(WxVtwoActivityGrantAward grantAward : grantAwardList){
grantAward.setAwardId(idWorker.nextId());
grantAward.updateTenantInfo(activityGrant);
grantAward.setActivityId(activityGrant.getActivityId());
grantAward.setActivityName(activityGrant.getActivityName());
grantAward.setGrantId(activityGrant.getId());
WxVtwoActivityAward activityAward = activityAwardMap.get(grantAward.getAwardId());
grantAward.setAwardGrade(activityAward.getGrade());
grantAward.setAwardName(activityAward.getName());
grantAward.setAwardPrice(activityAward.getPrice());
if(grantAward.getAwardCount() == null){
grantAward.setAwardCount(1);
}
grantAward.setGrantPrice(grantAward.getAwardPrice()
.multiply(new BigDecimal(grantAward.getAwardCount()))
.setScale(2, RoundingMode.HALF_UP));
grantAward.setShareRule(activityAward.getShareRule());
grantAward.setMallShareRate(activityAward.getMallShareRate());
grantAward.setMerchantShareRate(activityAward.getMerchantShareRate());
grantAward.setCreateDate(activityAward.getUpdateDate());
grantAward.setUpdateDate(activityAward.getUpdateDate());
}

wxVtwoActivityGrantAwardMapper.insertList(grantAwardList);
activityGrant.setGrantAwardList(grantAwardList);
}
}




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

@@ -1,11 +1,17 @@
package com.iformall.service.impl;

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.iformall.common.IdWorker;
import com.iformall.domain.po.WxVtwoActivityGrantOrder;
import com.iformall.domain.po.WxVtwoActivityOrder;
import com.iformall.service.WxVtwoActivityGrantOrderService;
import com.iformall.mapper.WxVtwoActivityGrantOrderMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.List;

/**
* @author xiaohu
* @description 针对表【wx_vtwo_activity_grant_order(线下活动发奖订单)】的数据库操作Service实现
@@ -15,6 +21,25 @@ import org.springframework.stereotype.Service;
public class WxVtwoActivityGrantOrderServiceImpl extends ServiceImpl<WxVtwoActivityGrantOrderMapper, WxVtwoActivityGrantOrder>
implements WxVtwoActivityGrantOrderService{

@Autowired
private WxVtwoActivityGrantOrderMapper wxVtwoActivityGrantOrderMapper;

@Override
public void saveGrantOrder(Long grantId, Long activityId, List<WxVtwoActivityOrder> orderList) {
List<WxVtwoActivityGrantOrder> grantOrderList = new ArrayList<>();
final IdWorker idWorker = IdWorker.get();
for (WxVtwoActivityOrder order : orderList) {
WxVtwoActivityGrantOrder grantOrder = new WxVtwoActivityGrantOrder();
grantOrder.setId(idWorker.nextId());
grantOrder.updateTenantInfo(order);
grantOrder.setGrantId(grantId);
grantOrder.setActivityId(activityId);
grantOrder.setOrderId(order.getId());
grantOrder.setIsAmount(order.getIsAmount());
grantOrderList.add(grantOrder);
}
wxVtwoActivityGrantOrderMapper.insertList(grantOrderList);
}
}




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

@@ -1,10 +1,24 @@
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.iformall.common.IdWorker;
import com.iformall.domain.po.WxVtwoActivityGrant;
import com.iformall.domain.po.WxVtwoActivityOrder;
import com.iformall.domain.po.WxVtwoPrizeDrawActivity;
import com.iformall.enums.EnumOfflineActivityMerchantType;
import com.iformall.enums.EnumOfflineActivityStatus;
import com.iformall.service.WxVtwoActivityGrantService;
import com.iformall.mapper.WxVtwoActivityGrantMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
* @author xiaohu
@@ -15,6 +29,56 @@ import org.springframework.stereotype.Service;
public class WxVtwoActivityGrantServiceImpl extends ServiceImpl<WxVtwoActivityGrantMapper, WxVtwoActivityGrant>
implements WxVtwoActivityGrantService{

@Autowired
private WxVtwoActivityGrantMapper wxVtwoActivityGrantMapper;

@Override
public void handleFromOrder(String activityName, WxVtwoActivityGrant activityGrant, List<WxVtwoActivityOrder> orderList, boolean isGrant) {
activityGrant.setActivityName(activityName);
activityGrant.setOrderList(orderList);
BigDecimal orderMoneySum = BigDecimal.ZERO;
List<String> lotteryNumList = new ArrayList<>();
int lotteryCount = 0;
List<String> anniversaryLotteryNumList = new ArrayList<>();
for (WxVtwoActivityOrder order : orderList) {
orderMoneySum = orderMoneySum.add(order.getOrderMoney());
if(order.getLotteryNumList() != null && !order.getLotteryNumList().isEmpty()){
lotteryNumList.addAll(order.getLotteryNumList());
}
if(order.getLotteryCount() != null){
lotteryCount = lotteryCount + order.getLotteryCount();
}
if(StringUtils.isNotBlank(order.getAnniversaryLotteryNum())){
anniversaryLotteryNumList.add(order.getAnniversaryLotteryNum());
}
}
activityGrant.setOrderMoneySum(orderMoneySum);
activityGrant.setOrderCount(orderList.size());
activityGrant.setCusName(orderList.get(0).getCusName());
activityGrant.setCusPhone(orderList.get(0).getCusPhone());
if(!isGrant){
activityGrant.setLotteryNum(JSON.toJSONString(lotteryNumList));
activityGrant.setLotteryCount(lotteryCount);
activityGrant.setAnniversaryLotteryNum(JSON.toJSONString(anniversaryLotteryNumList));
}
}

@Override
public boolean saveOrUpdate(WxVtwoActivityGrant activityGrant) {
Date now = new Date();
if(activityGrant.getId() == null){
final IdWorker idWorker = IdWorker.get();
activityGrant.setId(idWorker.nextId());
activityGrant.setCreateDate(now);
activityGrant.setCreateDate(now);
wxVtwoActivityGrantMapper.insert(activityGrant);
}
else{
activityGrant.setUpdateDate(now);
wxVtwoActivityGrantMapper.updateById(activityGrant);
}
return true;
}
}




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

@@ -1,11 +1,24 @@
package com.iformall.service.impl;

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.iformall.domain.po.WxVtwoActivityGrantSettlement;
import com.iformall.common.IdWorker;
import com.iformall.domain.po.*;
import com.iformall.enums.EnumOfflineActivityAwardsModeType;
import com.iformall.enums.EnumYesOrNo;
import com.iformall.service.WxVtwoActivityGrantSettlementService;
import com.iformall.mapper.WxVtwoActivityGrantSettlementMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;

/**
* @author xiaohu
* @description 针对表【wx_vtwo_activity_grant_settlement(线下活动发放奖励结算)】的数据库操作Service实现
@@ -15,6 +28,99 @@ import org.springframework.stereotype.Service;
public class WxVtwoActivityGrantSettlementServiceImpl extends ServiceImpl<WxVtwoActivityGrantSettlementMapper, WxVtwoActivityGrantSettlement>
implements WxVtwoActivityGrantSettlementService{

@Autowired
private WxVtwoActivityGrantSettlementMapper wxVtwoActivityGrantSettlementMapper;

@Override
public void saveGrantSettlement(WxVtwoActivityGrant activityGrant) {
List<WxVtwoActivityOrder> amountOrderList = activityGrant.getOrderList().stream().filter(o -> EnumYesOrNo.YES.getCode().equals(o.getIsAmount()))
.sorted(Comparator.comparing(WxVtwoActivityOrder::getOrderMoney).reversed()).collect(Collectors.toList());
List<WxVtwoActivityOrder> cmountOrderList = activityGrant.getOrderList().stream().sorted(Comparator.comparing(WxVtwoActivityOrder::getOrderMoney).reversed()).collect(Collectors.toList());

List<WxVtwoActivityGrantAward> grantAwardList = activityGrant.getGrantAwardList();
Map<Integer, List<WxVtwoActivityGrantAward>> grantAwardMap = grantAwardList.stream().collect(Collectors.groupingBy(WxVtwoActivityGrantAward::getModeType));
List<WxVtwoActivityGrantAward> amountGrantAwardList = grantAwardMap.get(EnumOfflineActivityAwardsModeType.AMOUNT.getCode());
List<WxVtwoActivityGrantAward> countGrantAwardList = grantAwardMap.get(EnumOfflineActivityAwardsModeType.COUNT.getCode());
List<WxVtwoActivityGrantSettlement> settlementList = new ArrayList<>();
final IdWorker idWorker = IdWorker.get();
if(amountGrantAwardList != null && !amountGrantAwardList.isEmpty()){
handleOrderRatio(amountOrderList);
Map<Long, WxVtwoActivityOrder> amountOrderMap = amountOrderList.stream().collect(Collectors.toMap(WxVtwoActivityOrder::getId, Function.identity()));
for (WxVtwoActivityGrantAward grant : amountGrantAwardList) {
if(grant.getOrderId() != null){
WxVtwoActivityOrder order = amountOrderMap.get(grant.getOrderId());
WxVtwoActivityGrantSettlement settlement = getGrantSettlement(grant,order,idWorker,true);
settlementList.add(settlement);
}else{
for (WxVtwoActivityOrder order : amountOrderList){
WxVtwoActivityGrantSettlement settlement = getGrantSettlement(grant,order,idWorker,false);
settlementList.add(settlement);
}
}
}
}
if(countGrantAwardList != null && !countGrantAwardList.isEmpty()){
handleOrderRatio(cmountOrderList);
for (WxVtwoActivityGrantAward grant : countGrantAwardList) {
for (WxVtwoActivityOrder order : amountOrderList){
WxVtwoActivityGrantSettlement settlement = getGrantSettlement(grant,order,idWorker,false);
settlementList.add(settlement);
}
}
}

wxVtwoActivityGrantSettlementMapper.insertList(settlementList);
}

private void handleOrderRatio(List<WxVtwoActivityOrder> orderList){
BigDecimal orderSumMoney = orderList.stream().map(WxVtwoActivityOrder::getOrderMoney).reduce(BigDecimal.ZERO, BigDecimal::add);
int size = orderList.size() - 1;
BigDecimal lastRatio = new BigDecimal(100);
for(int i=0; i<size; i++){
WxVtwoActivityOrder order = orderList.get(i);
BigDecimal orderRatio = order.getOrderMoney()
.divide(orderSumMoney,4, RoundingMode.HALF_UP)
.multiply(new BigDecimal(100));
order.setOrderRatio(orderRatio);
lastRatio = lastRatio.subtract(orderRatio);
}
orderList.get(size).setOrderRatio(lastRatio);
}

private WxVtwoActivityGrantSettlement getGrantSettlement(WxVtwoActivityGrantAward grant,WxVtwoActivityOrder order,IdWorker idWorker,boolean isOneOrder){
WxVtwoActivityGrantSettlement settlement = new WxVtwoActivityGrantSettlement();
settlement.setId(idWorker.nextId());
settlement.updateTenantInfo(grant);
settlement.setActivityId(grant.getActivityId());
settlement.setGrantId(grant.getGrantId());
settlement.setGrantAwardId(grant.getId());
settlement.setAwardId(grant.getAwardId());
settlement.setAwardCount(grant.getAwardCount());
settlement.setGrantPrice(grant.getGrantPrice());
settlement.setOrderId(order.getId());
settlement.setOrderNo(order.getOrderNo());
settlement.setOrderAmount(order.getOrderMoney());
settlement.setMerchantId(order.getMerchantId());
if(isOneOrder){
settlement.setOrderRatio(new BigDecimal(100));
}else{
settlement.setOrderRatio(order.getOrderRatio());
}
settlement.setOrderGrantPrice(settlement.getGrantPrice()
.multiply(settlement.getOrderRatio().divide(new BigDecimal(100)))
.setScale(2, RoundingMode.HALF_UP));
settlement.setMallShareRate(grant.getMallShareRate());
settlement.setMerchantShareRate(grant.getMerchantShareRate());
settlement.setOrderMallSharePrice(settlement.getOrderGrantPrice()
.multiply(settlement.getMallShareRate().divide(new BigDecimal(100)))
.setScale(2, RoundingMode.HALF_UP));
settlement.setOrderMerchantSharePrice(settlement.getOrderGrantPrice().subtract(settlement.getOrderMallSharePrice()));
settlement.setCreateDate(grant.getUpdateDate());
settlement.setUpdateDate(grant.getUpdateDate());
return settlement;
}


}




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

@@ -28,6 +28,8 @@ import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;

import static java.util.stream.Collectors.toList;

/**
* @author xiaohu
* @description 针对表【wx_vtwo_activity_order(线下活动参与登记)】的数据库操作Service实现
@@ -374,6 +376,46 @@ public class WxVtwoActivityOrderServiceImpl extends ServiceImpl<WxVtwoActivityOr
return wxVtwoActivityOrderMapper.selectLimitOne(activityOrder);
}

@Override
public List<WxVtwoActivityOrder> findGrantOrder(TenantEntity tenantInfo, List<Long> idList, List<Long> filterIdList) {
WxVtwoActivityOrder orderQ = new WxVtwoActivityOrder();
orderQ.updateTenantInfo(tenantInfo);
orderQ.setIds(idList);
List<WxVtwoActivityOrder> list = this.findList(orderQ, null);
if(filterIdList == null || filterIdList.isEmpty()){
for (WxVtwoActivityOrder order : list) {
order.setIsAmount(EnumYesOrNo.YES.getCode());
}
}else{
for (WxVtwoActivityOrder order : list) {
if(filterIdList.contains(order.getId())) {
order.setIsAmount(EnumYesOrNo.YES.getCode());
}else{
order.setIsAmount(EnumYesOrNo.NO.getCode());
}
}
}
return this.findList(orderQ,null);
}

@Override
public Integer getJointCount(Integer relatedModel, List<WxVtwoActivityOrder> orderList) {
Integer jointCount = 0;
if(orderList == null || orderList.isEmpty()){
return jointCount;
}
if(EnumOfflineActivityCountMode.MERCHANT_MODEL.getCode().equals(relatedModel)){
//商户联单
List<Long> merchantIds = orderList.stream().map(WxVtwoActivityOrder::getMerchantId).distinct().collect(toList());
jointCount = merchantIds.size();
}else if(EnumOfflineActivityCountMode.BUSINESS_MODEL.getCode().equals(relatedModel)){
//业态联单
List<Integer> businessIds = orderList.stream().map(WxVtwoActivityOrder::getBusinessId).distinct().collect(toList());
jointCount = businessIds.size();
}
return jointCount;
}

}




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

@@ -37,9 +37,6 @@ public class WxVtwoAmountGiftActivityServiceImpl extends ServiceImpl<WxVtwoAmoun
@Autowired
private WxVtwoAmountGiftActivityMapper wxVtwoAmountGiftActivityMapper;

@Autowired
private WxVtwoActivityAwardMapper wxVtwoActivityAwardMapper;

@Autowired
private WxVtwoActivityMerchantMapper wxVtwoActivityMerchantMapper;

@@ -208,10 +205,7 @@ public class WxVtwoAmountGiftActivityServiceImpl extends ServiceImpl<WxVtwoAmoun
amountGiftActivity.setRelatedRulesObject(JSONObject.parseArray(amountGiftActivity.getRelatedRules(), WxVtwoActivityRuleDetail.class));
}

WxVtwoActivityAward activityAwardQ = new WxVtwoActivityAward();
activityAwardQ.setTenantId(tenantId);
activityAwardQ.setActivityId(id);
List<WxVtwoActivityAward> activityAwardList = wxVtwoActivityAwardMapper.findList(activityAwardQ);
List<WxVtwoActivityAward> activityAwardList = wxVtwoActivityAwardService.findActivityAwardList(id, tenantId);
amountGiftActivity.setAwardList(activityAwardList);
if(!EnumOfflineActivityMerchantType.ALL.getCode().equals(amountGiftActivity.getMerchantRule())){
List<WxVtwoActivityMerchant> activityMerchantList = wxVtwoActivityMerchantService.getActivityMerchantList(id,tenantId);


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

@@ -37,9 +37,6 @@ public class WxVtwoCashBackActivityServiceImpl extends ServiceImpl<WxVtwoCashBac
@Autowired
private WxVtwoCashBackActivityMapper wxVtwoCashBackActivityMapper;

@Autowired
private WxVtwoCashBackAwardMapper wxVtwoCashBackAwardMapper;

@Autowired
private WxVtwoActivityMerchantMapper wxVtwoActivityMerchantMapper;

@@ -207,7 +204,7 @@ public class WxVtwoCashBackActivityServiceImpl extends ServiceImpl<WxVtwoCashBac
WxVtwoCashBackAward cashBackAwardQ = new WxVtwoCashBackAward();
cashBackAwardQ.setTenantId(tenantId);
cashBackAwardQ.setActivityId(id);
List<WxVtwoCashBackAward> activityAwardList = wxVtwoCashBackAwardMapper.findList(cashBackAwardQ);
List<WxVtwoCashBackAward> activityAwardList = wxVtwoCashBackAwardService.findActivityAwardList(id,tenantId);
Map<Integer, List<WxVtwoCashBackAward>> activityAwardMap = activityAwardList.stream().collect(Collectors.groupingBy(WxVtwoCashBackAward::getModelType));
cashBackActivity.setAmountRulesObject(activityAwardMap.get(EnumOfflineActivityAwardsModeType.AMOUNT.getCode()));
cashBackActivity.setRelatedRulesObject(activityAwardMap.get(EnumOfflineActivityAwardsModeType.COUNT.getCode()));


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

@@ -12,9 +12,9 @@ import com.iformall.mapper.WxVtwoCashBackAwardMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;

/**
* @author xiaohu
@@ -71,6 +71,20 @@ public class WxVtwoCashBackAwardServiceImpl extends ServiceImpl<WxVtwoCashBackAw

wxVtwoCashBackAwardMapper.insertList(awardList);
}

@Override
public List<WxVtwoCashBackAward> findActivityAwardList(Long activityId, String tenantId) {
WxVtwoCashBackAward cashBackAwardQ = new WxVtwoCashBackAward();
cashBackAwardQ.setTenantId(tenantId);
cashBackAwardQ.setActivityId(activityId);
return wxVtwoCashBackAwardMapper.findList(cashBackAwardQ);
}

@Override
public Map<Long, WxVtwoCashBackAward> findActivityAwardMap(Long activityId, String tenantId) {
List<WxVtwoCashBackAward> activityAwardList = this.findActivityAwardList(activityId, tenantId);
return activityAwardList.stream().collect(Collectors.toMap(WxVtwoCashBackAward::getId, Function.identity()));
}
}




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

@@ -12,10 +12,7 @@ import com.iformall.common.Result;
import com.iformall.domain.po.*;
import com.iformall.domain.po.base.BaseEntity;
import com.iformall.domain.po.base.TenantEntity;
import com.iformall.domain.vo.OfflineActivityRecordStatistics;
import com.iformall.domain.vo.WxVtwoActivityOrderStatistics;
import com.iformall.domain.vo.WxVtwoActivityRule;
import com.iformall.domain.vo.WxVtwoActivityRuleDetail;
import com.iformall.domain.vo.*;
import com.iformall.enums.*;
import com.iformall.exception.MallinkException;
import com.iformall.mapper.*;
@@ -27,9 +24,12 @@ import org.springframework.transaction.annotation.Transactional;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Collections;
import java.util.Date;
import java.util.List;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.*;
import java.util.function.Function;

import static java.util.stream.Collectors.*;

/**
* @author xiaohu
@@ -43,9 +43,6 @@ public class WxVtwoPrizeDrawActivityServiceImpl extends ServiceImpl<WxVtwoPrizeD
@Autowired
private WxVtwoPrizeDrawActivityMapper wxVtwoPrizeDrawActivityMapper;

@Autowired
private WxVtwoActivityAwardMapper wxVtwoActivityAwardMapper;

@Autowired
private WxVtwoActivityMerchantMapper wxVtwoActivityMerchantMapper;

@@ -64,9 +61,25 @@ public class WxVtwoPrizeDrawActivityServiceImpl extends ServiceImpl<WxVtwoPrizeD
@Autowired
private WxVtwoActivityMerchantService wxVtwoActivityMerchantService;

@Autowired
private WxVtwoActivityOrderService wxVtwoActivityOrderService;

@Autowired
private WxVtwoActivityGrantService wxVtwoActivityGrantService;

@Autowired
private WxVtwoActivityGrantOrderService wxVtwoActivityGrantOrderService;

@Autowired
private WxVtwoActivityGrantAwardService wxVtwoActivityGrantAwardService;

@Autowired
private WxVtwoActivityGrantSettlementService wxVtwoActivityGrantSettlementService;

@Autowired
private ExcelService excelService;


@Override
public PageInfo<WxVtwoPrizeDrawActivity> listAsPage(WxVtwoPrizeDrawActivity prizeDrawActivity, Integer pageNum, Integer pageSize) {
handlerQuery(prizeDrawActivity);
@@ -214,10 +227,7 @@ public class WxVtwoPrizeDrawActivityServiceImpl extends ServiceImpl<WxVtwoPrizeD
prizeDrawActivity.setRelatedRulesObject(JSONObject.parseArray(prizeDrawActivity.getRelatedRules(), WxVtwoActivityRuleDetail.class));
}

WxVtwoActivityAward activityAwardQ = new WxVtwoActivityAward();
activityAwardQ.setTenantId(tenantId);
activityAwardQ.setActivityId(id);
List<WxVtwoActivityAward> activityAwardList = wxVtwoActivityAwardMapper.findList(activityAwardQ);
List<WxVtwoActivityAward> activityAwardList = wxVtwoActivityAwardService.findActivityAwardList(id, tenantId);
prizeDrawActivity.setAwardList(activityAwardList);
if(!EnumOfflineActivityMerchantType.ALL.getCode().equals(prizeDrawActivity.getMerchantRule())){
List<WxVtwoActivityMerchant> activityMerchantList = wxVtwoActivityMerchantService.getActivityMerchantList(id,tenantId);
@@ -246,6 +256,104 @@ public class WxVtwoPrizeDrawActivityServiceImpl extends ServiceImpl<WxVtwoPrizeD
activity.setActivityStatus(prizeDrawActivity.getStatus());
}

@Override
public void handlerGrantAwardPage(WxVtwoPrizeDrawActivity prizeDrawActivity,WxVtwoActivityGrant activityGrant) {

List<WxVtwoActivityOrder> orderList = wxVtwoActivityOrderService.findGrantOrder(activityGrant,activityGrant.getOrderIdList(),activityGrant.getOrderFilterIdList());

wxVtwoActivityGrantService.handleFromOrder(prizeDrawActivity.getName(),activityGrant,orderList,false);

List<WxVtwoActivityAward> activityAwardList = wxVtwoActivityAwardService.findActivityAwardList(activityGrant.getActivityId(), activityGrant.getTenantId());
activityGrant.setAwardList(activityAwardList);

int limitCount = 0;
List<WxVtwoActivityGrantRule> grantRuleList = new ArrayList<>();
if(EnumOfflineActivityMode.ONE.getCode().equals(prizeDrawActivity.getAmountModel())){
for(WxVtwoActivityOrder order:orderList){
Integer order_limit = 0;
for (WxVtwoActivityRuleDetail rule :prizeDrawActivity.getAmountRulesObject().getRuleList()){
if((rule.getMinAmount() == null || order.getOrderMoney().compareTo(rule.getMinAmount()) >= 0)
&& (rule.getMaxAmount() == null || order.getOrderMoney().compareTo(rule.getMaxAmount()) <= 0)){
order_limit = rule.getAwardCount();
}
}
if(order_limit != null && order_limit > 0){
WxVtwoActivityGrantRule grantRule = new WxVtwoActivityGrantRule();
grantRule.setOrderId(order.getId());
grantRule.setModeType(EnumOfflineActivityAwardsModeType.AMOUNT.getCode());
grantRule.setName("订单抽奖("+order.getOrderNo()+")");
grantRule.setAwardLimit(order_limit);
grantRuleList.add(grantRule);

limitCount += order_limit;
}
}
}else{
BigDecimal orderMoneySum = orderList.stream().filter(order -> EnumYesOrNo.YES.getCode().equals(order.getIsAmount()))
.map(WxVtwoActivityOrder::getOrderMoney).reduce(BigDecimal.ZERO, BigDecimal::add);
BigDecimal limitAmount = prizeDrawActivity.getAmountRulesObject().getLimitAmount();
BigDecimal awardAmount = prizeDrawActivity.getAmountRulesObject().getAwardAmount();
if(limitAmount == null || orderMoneySum.compareTo(limitAmount) > 0){
if(awardAmount != null && awardAmount.compareTo(BigDecimal.ZERO) > 0){
Integer order_limit = orderMoneySum.divide(awardAmount,0, RoundingMode.HALF_DOWN).intValue();
if(order_limit > 0){
WxVtwoActivityGrantRule grantRule = new WxVtwoActivityGrantRule();
grantRule.setModeType(EnumOfflineActivityAwardsModeType.AMOUNT.getCode());
grantRule.setName("订单总金额抽奖");
grantRule.setAwardLimit(order_limit);
grantRuleList.add(grantRule);

limitCount += order_limit;
}
}
}
}

//联单
Integer jointCount = wxVtwoActivityOrderService.getJointCount(prizeDrawActivity.getRelatedModel(),orderList);
if(jointCount != 0){
Map<Integer, WxVtwoActivityRuleDetail> jointCountMap = prizeDrawActivity.getRelatedRulesObject().stream().collect(toMap(WxVtwoActivityRuleDetail::getRelatedCount, Function.identity()));
WxVtwoActivityRuleDetail relatedRule = jointCountMap.get(jointCount);
if(relatedRule != null && relatedRule.getAwardCount() != null){
Integer joint_limit = relatedRule.getAwardCount();
if(joint_limit > 0){
WxVtwoActivityGrantRule grantRule = new WxVtwoActivityGrantRule();
grantRule.setModeType(EnumOfflineActivityAwardsModeType.COUNT.getCode());
grantRule.setName("联单抽奖");
grantRule.setAwardLimit(joint_limit);
grantRuleList.add(grantRule);

limitCount += joint_limit;
}
}
}

if(prizeDrawActivity.getAwardsLimit() != null && prizeDrawActivity.getAwardsLimit() > 0
&& prizeDrawActivity.getAwardsLimit() < limitCount){
limitCount = prizeDrawActivity.getAwardsLimit();
}

activityGrant.setAwardLimit(limitCount);
activityGrant.setRuleList(grantRuleList);
}

@Override
@Transactional(rollbackFor = Exception.class)
public void grantAward(WxVtwoPrizeDrawActivity prizeDrawActivity,WxVtwoActivityGrant activityGrant) {

List<WxVtwoActivityOrder> orderList = wxVtwoActivityOrderService.findGrantOrder(activityGrant,activityGrant.getOrderIdList(),activityGrant.getOrderFilterIdList());

wxVtwoActivityGrantService.handleFromOrder(prizeDrawActivity.getName(),activityGrant,orderList,false);

wxVtwoActivityGrantService.saveOrUpdate(activityGrant);

wxVtwoActivityGrantOrderService.saveGrantOrder(activityGrant.getId(),activityGrant.getActivityId(),orderList);

wxVtwoActivityGrantAwardService.saveGrantAward(activityGrant);

wxVtwoActivityGrantSettlementService.saveGrantSettlement(activityGrant);
}

}




+ 24
- 8
mallinkService/src/main/resources/mapper/WxVtwoActivityGrantAwardMapper.xml Просмотреть файл

@@ -12,18 +12,14 @@
<result property="activityName" column="activity_name" jdbcType="VARCHAR"/>
<result property="grantId" column="grant_id" jdbcType="BIGINT"/>
<result property="orderId" column="order_id" jdbcType="BIGINT"/>
<result property="orderAmount" column="order_amount" jdbcType="DECIMAL"/>
<result property="modeType" column="mode_type" jdbcType="SMALLINT"/>
<result property="minAmount" column="min_amount" jdbcType="DECIMAL"/>
<result property="maxAmount" column="max_amount" jdbcType="DECIMAL"/>
<result property="relatedCount" column="related_count" jdbcType="INTEGER"/>
<result property="awardId" column="award_id" jdbcType="BIGINT"/>
<result property="awardGrade" column="award_grade" jdbcType="INTEGER"/>
<result property="awardName" column="award_name" jdbcType="VARCHAR"/>
<result property="awardPrice" column="award_price" jdbcType="DECIMAL"/>
<result property="awardCount" column="award_count" jdbcType="INTEGER"/>
<result property="grantPrice" column="grant_price" jdbcType="DECIMAL"/>
<result property="moneyRule" column="money_rule" jdbcType="SMALLINT"/>
<result property="shareRule" column="share_rule" jdbcType="SMALLINT"/>
<result property="mallShareRate" column="mall_share_rate" jdbcType="DECIMAL"/>
<result property="merchantShareRate" column="merchant_share_rate" jdbcType="DECIMAL"/>
<result property="status" column="status" jdbcType="SMALLINT"/>
@@ -34,11 +30,10 @@
<sql id="allColumns">
id,tenant_id,parent_tenant_id,
activity_id,activity_name,grant_id,
order_id,order_amount,mode_type,
min_amount,max_amount,related_count,
order_id,mode_type,
award_id,award_grade,award_name,
award_price,award_count,grant_price,
money_rule,mall_share_rate,merchant_share_rate,
share_rule,mall_share_rate,merchant_share_rate,
status,create_date,update_date
</sql>

@@ -91,4 +86,25 @@
select <include refid="allColumns" /> from wx_vtwo_activity_grant_award
where id = #{id} and tenant_id=#{tenantId}
</select>

<insert id="insertList" parameterType="java.util.List">
insert into wx_vtwo_activity_grant_award
(id,
activity_id,activity_name,grant_id,
order_id,mode_type,
award_id,award_grade,award_name,
award_price,award_count,grant_price,
share_rule,mall_share_rate,merchant_share_rate,
create_date,update_date)
values
<foreach collection="grantAwardList" item="item" index="index" separator=",">
(#{item.id,jdbcType=BIGINT},
#{item.activityId,jdbcType=BIGINT},#{item.activityName,jdbcType=VARCHAR},#{item.grantId,jdbcType=BIGINT},
#{item.orderId,jdbcType=BIGINT},#{item.modeType,jdbcType=SMALLINT},
#{item.awardId,jdbcType=BIGINT},#{item.awardGrade,jdbcType=INTEGER},#{item.awardName,jdbcType=VARCHAR},
#{item.awardPrice,jdbcType=DECIMAL},#{item.awardCount,jdbcType=INTEGER},#{item.grantPrice,jdbcType=DECIMAL},
#{item.shareRule,jdbcType=SMALLINT},#{item.mallShareRate,jdbcType=DECIMAL},#{item.merchantShareRate,jdbcType=DECIMAL},
#{item.createDate,jdbcType=TIMESTAMP},#{item.updateDate,jdbcType=TIMESTAMP})
</foreach>
</insert>
</mapper>

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

@@ -64,4 +64,17 @@
select <include refid="allColumns" /> from wx_vtwo_activity_grant_order
where id = #{id} and tenant_id=#{tenantId}
</select>

<insert id="insertList" parameterType="java.util.List">
insert into wx_vtwo_activity_grant_order
(id,
grant_id,activity_id,order_id,
is_amount, status)
values
<foreach collection="grantOrderList" item="item" index="index" separator=",">
(#{item.id,jdbcType=BIGINT},
#{item.grantId,jdbcType=BIGINT},#{item.activityId,jdbcType=BIGINT},#{item.orderId,jdbcType=BIGINT},
#{item.isAmount,jdbcType=SMALLINT},#{item.status,jdbcType=SMALLINT})
</foreach>
</insert>
</mapper>

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

@@ -92,4 +92,27 @@
FROM wx_vtwo_activity_grant_settlement
<include refid="dynamicWhereConditions" />
</select>

<insert id="insertList" parameterType="java.util.List">
insert into wx_vtwo_activity_grant_settlement
(id,
activity_id,grant_id,grant_award_id,
award_id,grant_price,order_id,
order_no,order_amount,merchant_id,
order_ratio,order_grant_price,mall_share_rate,
merchant_share_rate,order_mall_share_price,order_merchant_share_price,
tax_amount,create_date,
update_date)
values
<foreach collection="settlementList" item="item" index="index" separator=",">
(#{item.id,jdbcType=BIGINT},
#{item.activityId,jdbcType=BIGINT},#{item.grantId,jdbcType=BIGINT},#{item.grantAwardId,jdbcType=BIGINT},
#{item.awardId,jdbcType=BIGINT},#{item.grantPrice,jdbcType=DECIMAL},#{item.orderId,jdbcType=BIGINT},
#{item.orderNo,jdbcType=VARCHAR},#{item.orderAmount,jdbcType=DECIMAL},#{item.merchantId,jdbcType=BIGINT},
#{item.orderRatio,jdbcType=DECIMAL},#{item.orderGrantPrice,jdbcType=DECIMAL},#{item.mallShareRate,jdbcType=DECIMAL},
#{item.merchantShareRate,jdbcType=DECIMAL},#{item.orderMallSharePrice,jdbcType=DECIMAL},#{item.orderMerchantSharePrice,jdbcType=DECIMAL},
#{item.taxAmount,jdbcType=DECIMAL},#{item.createDate,jdbcType=TIMESTAMP},
#{item.updateDate,jdbcType=TIMESTAMP})
</foreach>
</insert>
</mapper>

+ 30
- 6
mallinkService/src/main/resources/mapper/WxVtwoCashBackGrantAwardMapper.xml Просмотреть файл

@@ -11,7 +11,7 @@
<result property="activityId" column="activity_id" jdbcType="BIGINT"/>
<result property="activityName" column="activity_name" jdbcType="VARCHAR"/>
<result property="grantId" column="grant_id" jdbcType="BIGINT"/>
<result property="recordId" column="record_id" jdbcType="BIGINT"/>
<result property="orderId" column="order_id" jdbcType="BIGINT"/>
<result property="orderAmount" column="order_amount" jdbcType="DECIMAL"/>
<result property="modeType" column="mode_type" jdbcType="SMALLINT"/>
<result property="minAmount" column="min_amount" jdbcType="DECIMAL"/>
@@ -22,7 +22,7 @@
<result property="cashBackRatio" column="cash_back_ratio" jdbcType="DECIMAL"/>
<result property="cashBackRule" column="cash_back_rule" jdbcType="SMALLINT"/>
<result property="cashBack" column="cash_back" jdbcType="DECIMAL"/>
<result property="moneyRule" column="money_rule" jdbcType="SMALLINT"/>
<result property="shareRule" column="share_rule" jdbcType="SMALLINT"/>
<result property="mallShareRate" column="mall_share_rate" jdbcType="DECIMAL"/>
<result property="merchantShareRate" column="merchant_share_rate" jdbcType="DECIMAL"/>
<result property="taxDeductionRules" column="tax_deduction_rules" jdbcType="VARCHAR"/>
@@ -35,10 +35,10 @@
<sql id="allColumns">
id,tenant_id,parent_tenant_id,
activity_id,activity_name,grant_id,
record_id,order_amount,mode_type,
order_id,order_amount,mode_type,
min_amount,max_amount,related_count,
award_id,award_name,cash_back_ratio,
cash_back_rule,cash_back,money_rule,
cash_back_rule,cash_back,share_rule,
mall_share_rate,merchant_share_rate,tax_deduction_rules,
tax_amount,status,create_date,
update_date
@@ -61,8 +61,8 @@
<if test=" null != grantId ">
and `grant_id` = #{grantId}
</if>
<if test=" null != recordId ">
and `record_id` = #{recordId}
<if test=" null != orderId ">
and `order_id` = #{orderId}
</if>

<if test=" null != ids ">
@@ -83,4 +83,28 @@
select <include refid="allColumns" /> from wx_vtwo_cash_back_grant_award
where id = #{id} and tenant_id=#{tenantId}
</select>

<insert id="insertList" parameterType="java.util.List">
insert into wx_vtwo_cash_back_grant_award
(id,
activity_id,activity_name,grant_id,
order_id,order_amount,mode_type,
min_amount,max_amount,related_count,
award_id,award_name,cash_back_ratio,
cash_back_rule,cash_back,share_rule,
mall_share_rate,merchant_share_rate,tax_deduction_rules,
tax_amount,create_date,
update_date)
values
<foreach collection="grantAwardList" item="item" index="index" separator=",">
(#{item.id,jdbcType=BIGINT},
#{item.activityId,jdbcType=BIGINT},#{item.activityName,jdbcType=VARCHAR},#{item.grantId,jdbcType=BIGINT},
#{item.orderId,jdbcType=BIGINT},#{item.orderAmount,jdbcType=DECIMAL},#{item.modeType,jdbcType=SMALLINT},
#{item.minAmount,jdbcType=DECIMAL},#{item.maxAmount,jdbcType=DECIMAL},#{item.relatedCount,jdbcType=INTEGER},
#{item.awardId,jdbcType=BIGINT},#{item.awardName,jdbcType=VARCHAR},#{item.cashBackRatio,jdbcType=DECIMAL},
#{item.cashBackRule,jdbcType=SMALLINT},#{item.cashBack,jdbcType=DECIMAL},#{item.shareRule,jdbcType=SMALLINT},
#{item.mallShareRate,jdbcType=DECIMAL},#{item.merchantShareRate,jdbcType=DECIMAL},#{item.taxDeductionRules,jdbcType=VARCHAR},
#{item.taxAmount,jdbcType=DECIMAL},#{item.createDate,jdbcType=TIMESTAMP},#{item.updateDate,jdbcType=TIMESTAMP})
</foreach>
</insert>
</mapper>

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