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

Merge branch 'release_toaliyun_real_activity_2' of https://git.malls.iformall.com/server/formallProject into release_toaliyun_real

release_toaliyun_real
xiaohu 1 год назад
Родитель
Сommit
bc7db68931
100 измененных файлов: 5536 добавлений и 377 удалений
  1. +4
    -4
      mallinkAdmin/src/main/java/com/iformall/controller/market/WxLegionActivityOrderController.java
  2. +0
    -1
      mallinkAdmin/src/main/java/com/iformall/controller/market/WxLegionActivityUserController.java
  3. +0
    -1
      mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivityController.java
  4. +8
    -8
      mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivityGrantController.java
  5. +2
    -2
      mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivityRecordController.java
  6. +0
    -1
      mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivitySettlementController.java
  7. +155
    -0
      mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoActivityOrderController.java
  8. +306
    -0
      mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoActivitySpecialTopicController.java
  9. +200
    -7
      mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoAmountGiftActivityController.java
  10. +202
    -9
      mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoCashBackActivityController.java
  11. +196
    -4
      mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoPrizeDrawActivityController.java
  12. +2
    -2
      mallinkAdmin/src/main/resources/db/migration/V202505000000001.sql
  13. +448
    -0
      mallinkAdmin/src/main/resources/db/migration/V202505000000002.sql
  14. +0
    -1
      mallinkBApi/src/main/java/com/iformall/controller/WxLegionActivityController.java
  15. +3
    -3
      mallinkBApi/src/main/java/com/iformall/controller/WxLegionActivityOrderController.java
  16. +4
    -4
      mallinkBApi/src/main/java/com/iformall/controller/WxLegionActivityUserController.java
  17. +101
    -101
      mallinkBApi/src/main/java/com/iformall/controller/WxOfflineActivityRecordController.java
  18. +106
    -0
      mallinkBApi/src/main/java/com/iformall/controller/WxVtwoActivityOrderController.java
  19. +60
    -0
      mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivityGrant.java
  20. +11
    -26
      mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivityGrantAward.java
  21. +14
    -5
      mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivityGrantExport.java
  22. +6
    -0
      mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivityGrantOrder.java
  23. +19
    -0
      mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivityGrantSettlement.java
  24. +65
    -7
      mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivityOrder.java
  25. +30
    -0
      mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivitySpecialTopic.java
  26. +1
    -1
      mallinkService/src/main/java/com/iformall/domain/po/WxVtwoAmountGiftActivity.java
  27. +4
    -2
      mallinkService/src/main/java/com/iformall/domain/po/WxVtwoCashBackActivity.java
  28. +1
    -1
      mallinkService/src/main/java/com/iformall/domain/po/WxVtwoCashBackAward.java
  29. +53
    -7
      mallinkService/src/main/java/com/iformall/domain/po/WxVtwoCashBackGrant.java
  30. +13
    -4
      mallinkService/src/main/java/com/iformall/domain/po/WxVtwoCashBackGrantAward.java
  31. +1
    -1
      mallinkService/src/main/java/com/iformall/domain/po/WxVtwoPrizeDrawActivity.java
  32. +10
    -0
      mallinkService/src/main/java/com/iformall/domain/po/WxVtwoSpecialTopicActivity.java
  33. +27
    -0
      mallinkService/src/main/java/com/iformall/domain/vo/WxVtwoActivityCreditRule.java
  34. +16
    -0
      mallinkService/src/main/java/com/iformall/domain/vo/WxVtwoActivityGrantRule.java
  35. +1
    -1
      mallinkService/src/main/java/com/iformall/domain/vo/WxVtwoActivityOrderStatistics.java
  36. +22
    -0
      mallinkService/src/main/java/com/iformall/domain/vo/WxVtwoActivityStatisticsVo.java
  37. +23
    -0
      mallinkService/src/main/java/com/iformall/domain/vo/WxVtwoAwardGrantStatistics.java
  38. +28
    -0
      mallinkService/src/main/java/com/iformall/domain/vo/WxVtwoAwardStatistics.java
  39. +22
    -0
      mallinkService/src/main/java/com/iformall/domain/vo/WxVtwoMerchantSettlementStatistics.java
  40. +2
    -2
      mallinkService/src/main/java/com/iformall/domain/vo/WxVtwoOrderBusinessStatistics.java
  41. +1
    -1
      mallinkService/src/main/java/com/iformall/domain/vo/WxVtwoOrderCountStatistics.java
  42. +21
    -0
      mallinkService/src/main/java/com/iformall/domain/vo/WxVtwoSettlementStatistics.java
  43. +36
    -0
      mallinkService/src/main/java/com/iformall/enums/EnumVtwoActivityGrantStatus.java
  44. +13
    -0
      mallinkService/src/main/java/com/iformall/mapper/WxVtwoActivityGrantAwardMapper.java
  45. +6
    -0
      mallinkService/src/main/java/com/iformall/mapper/WxVtwoActivityGrantExportMapper.java
  46. +6
    -0
      mallinkService/src/main/java/com/iformall/mapper/WxVtwoActivityGrantMapper.java
  47. +4
    -0
      mallinkService/src/main/java/com/iformall/mapper/WxVtwoActivityGrantOrderMapper.java
  48. +16
    -1
      mallinkService/src/main/java/com/iformall/mapper/WxVtwoActivityGrantSettlementMapper.java
  49. +1
    -0
      mallinkService/src/main/java/com/iformall/mapper/WxVtwoActivityOrderMapper.java
  50. +12
    -0
      mallinkService/src/main/java/com/iformall/mapper/WxVtwoActivitySpecialTopicMapper.java
  51. +1
    -1
      mallinkService/src/main/java/com/iformall/mapper/WxVtwoCashBackAwardMapper.java
  52. +9
    -0
      mallinkService/src/main/java/com/iformall/mapper/WxVtwoCashBackGrantAwardMapper.java
  53. +6
    -0
      mallinkService/src/main/java/com/iformall/mapper/WxVtwoCashBackGrantMapper.java
  54. +8
    -0
      mallinkService/src/main/java/com/iformall/mapper/WxVtwoSpecialTopicActivityMapper.java
  55. +7
    -7
      mallinkService/src/main/java/com/iformall/service/WxLegionActivityOfflineConfigService.java
  56. +1
    -0
      mallinkService/src/main/java/com/iformall/service/WxOfflineActivityGrantSettlementService.java
  57. +5
    -0
      mallinkService/src/main/java/com/iformall/service/WxVtwoActivityAwardService.java
  58. +14
    -0
      mallinkService/src/main/java/com/iformall/service/WxVtwoActivityGrantAwardService.java
  59. +13
    -0
      mallinkService/src/main/java/com/iformall/service/WxVtwoActivityGrantExportService.java
  60. +4
    -0
      mallinkService/src/main/java/com/iformall/service/WxVtwoActivityGrantOrderService.java
  61. +12
    -0
      mallinkService/src/main/java/com/iformall/service/WxVtwoActivityGrantService.java
  62. +20
    -0
      mallinkService/src/main/java/com/iformall/service/WxVtwoActivityGrantSettlementService.java
  63. +22
    -0
      mallinkService/src/main/java/com/iformall/service/WxVtwoActivityGrantStatisticsService.java
  64. +49
    -0
      mallinkService/src/main/java/com/iformall/service/WxVtwoActivityOrderService.java
  65. +17
    -0
      mallinkService/src/main/java/com/iformall/service/WxVtwoActivitySpecialTopicService.java
  66. +14
    -2
      mallinkService/src/main/java/com/iformall/service/WxVtwoAmountGiftActivityService.java
  67. +14
    -2
      mallinkService/src/main/java/com/iformall/service/WxVtwoCashBackActivityService.java
  68. +7
    -0
      mallinkService/src/main/java/com/iformall/service/WxVtwoCashBackAwardService.java
  69. +12
    -0
      mallinkService/src/main/java/com/iformall/service/WxVtwoCashBackGrantAwardService.java
  70. +10
    -0
      mallinkService/src/main/java/com/iformall/service/WxVtwoCashBackGrantService.java
  71. +18
    -0
      mallinkService/src/main/java/com/iformall/service/WxVtwoPrizeDrawActivityService.java
  72. +5
    -0
      mallinkService/src/main/java/com/iformall/service/WxVtwoSpecialTopicActivityService.java
  73. +84
    -43
      mallinkService/src/main/java/com/iformall/service/impl/WxLegionActivityOfflineConfigServiceImpl.java
  74. +18
    -6
      mallinkService/src/main/java/com/iformall/service/impl/WxLegionActivityOrderServiceImpl.java
  75. +4
    -7
      mallinkService/src/main/java/com/iformall/service/impl/WxLegionActivityServiceImpl.java
  76. +18
    -0
      mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityAwardServiceImpl.java
  77. +103
    -0
      mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityGrantAwardServiceImpl.java
  78. +212
    -1
      mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityGrantExportServiceImpl.java
  79. +25
    -0
      mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityGrantOrderServiceImpl.java
  80. +94
    -0
      mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityGrantServiceImpl.java
  81. +253
    -1
      mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityGrantSettlementServiceImpl.java
  82. +216
    -0
      mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityGrantStatisticsServiceImpl.java
  83. +0
    -2
      mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityMerchantServiceImpl.java
  84. +488
    -3
      mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityOrderServiceImpl.java
  85. +171
    -1
      mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivitySpecialTopicServiceImpl.java
  86. +216
    -21
      mallinkService/src/main/java/com/iformall/service/impl/WxVtwoAmountGiftActivityServiceImpl.java
  87. +166
    -16
      mallinkService/src/main/java/com/iformall/service/impl/WxVtwoCashBackActivityServiceImpl.java
  88. +30
    -3
      mallinkService/src/main/java/com/iformall/service/impl/WxVtwoCashBackAwardServiceImpl.java
  89. +219
    -1
      mallinkService/src/main/java/com/iformall/service/impl/WxVtwoCashBackGrantAwardServiceImpl.java
  90. +86
    -0
      mallinkService/src/main/java/com/iformall/service/impl/WxVtwoCashBackGrantServiceImpl.java
  91. +234
    -24
      mallinkService/src/main/java/com/iformall/service/impl/WxVtwoPrizeDrawActivityServiceImpl.java
  92. +42
    -0
      mallinkService/src/main/java/com/iformall/service/impl/WxVtwoSpecialTopicActivityServiceImpl.java
  93. +57
    -8
      mallinkService/src/main/resources/mapper/WxVtwoActivityGrantAwardMapper.xml
  94. +44
    -9
      mallinkService/src/main/resources/mapper/WxVtwoActivityGrantExportMapper.xml
  95. +32
    -1
      mallinkService/src/main/resources/mapper/WxVtwoActivityGrantMapper.xml
  96. +19
    -2
      mallinkService/src/main/resources/mapper/WxVtwoActivityGrantOrderMapper.xml
  97. +103
    -0
      mallinkService/src/main/resources/mapper/WxVtwoActivityGrantSettlementMapper.xml
  98. +17
    -8
      mallinkService/src/main/resources/mapper/WxVtwoActivityOrderMapper.xml
  99. +34
    -0
      mallinkService/src/main/resources/mapper/WxVtwoActivitySpecialTopicMapper.xml
  100. +1
    -1
      mallinkService/src/main/resources/mapper/WxVtwoCashBackActivityMapper.xml

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

@@ -22,7 +22,7 @@ import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import jodd.util.StringUtil;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@@ -122,7 +122,7 @@ public class WxLegionActivityOrderController extends BaseController {
if(wxLegionActivityOrder == null){
return new ResultData(Result.ERROR,"id 不能为空");
}
if(StringUtil.isBlank(wxLegionActivityOrder.getAuditRemark())){
if(StringUtils.isBlank(wxLegionActivityOrder.getAuditRemark())){
return new ResultData(Result.ERROR,"驳回意见不能为空");
}
TenantEntity tenantEntity = getTenantInfo();
@@ -153,8 +153,8 @@ public class WxLegionActivityOrderController extends BaseController {
if(wxLegionActivityOrder.getActivityId() == null){
return new ResultData(Result.ERROR,"活动ID不能为空");
}
if(StringUtil.isBlank(wxLegionActivityOrder.getCusPhone())
&& StringUtil.isBlank(wxLegionActivityOrder.getCusVipNum())){
if(StringUtils.isBlank(wxLegionActivityOrder.getCusPhone())
&& StringUtils.isBlank(wxLegionActivityOrder.getCusVipNum())){
return new ResultData(Result.ERROR,"请输入用户手机号或vip卡号");
}



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

@@ -19,7 +19,6 @@ import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import jodd.util.StringUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;


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

@@ -19,7 +19,6 @@ import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import jodd.util.StringUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;


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

@@ -13,7 +13,7 @@ import com.iformall.service.WxOfflineActivityGrantAwardService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import jodd.util.StringUtil;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@@ -43,7 +43,7 @@ public class WxOfflineActivityGrantController extends BaseController {
if(wxOfflineActivityRecord.getActivityId() == null){
return new ResultData(Result.ERROR,"请选择活动");
}
if(StringUtil.isBlank(wxOfflineActivityRecord.getCusPhone())){
if(StringUtils.isBlank(wxOfflineActivityRecord.getCusPhone())){
return new ResultData(Result.ERROR,"请输入用户手机号");
}

@@ -60,7 +60,7 @@ public class WxOfflineActivityGrantController extends BaseController {
if(wxOfflineActivityRecord.getActivityId() == null){
return new ResultData(Result.ERROR,"请选择活动");
}
if(StringUtil.isBlank(wxOfflineActivityRecord.getCusPhone())){
if(StringUtils.isBlank(wxOfflineActivityRecord.getCusPhone())){
return new ResultData(Result.ERROR,"请输入用户手机号");
}

@@ -78,7 +78,7 @@ public class WxOfflineActivityGrantController extends BaseController {
if(wxOfflineActivityRecord.getActivityId() == null){
throw new MallinkException(Result.ERROR,"请选择活动");
}
if(StringUtil.isBlank(wxOfflineActivityRecord.getCusPhone())){
if(StringUtils.isBlank(wxOfflineActivityRecord.getCusPhone())){
throw new MallinkException(Result.ERROR,"请输入用户手机号");
}

@@ -97,7 +97,7 @@ public class WxOfflineActivityGrantController extends BaseController {
// if(wxOfflineActivityGrantAward.getRecordIds() == null || wxOfflineActivityGrantAward.getRecordIds().isEmpty()){
// return new ResultData(Result.ERROR,"请选择订单");
// }
if(StringUtil.isBlank(wxOfflineActivityGrantAward.getCusPhone())){
if(StringUtils.isBlank(wxOfflineActivityGrantAward.getCusPhone())){
throw new MallinkException(Result.ERROR,"用户手机号为空");
}
TenantEntity tenantEntity = getTenantInfo();
@@ -124,10 +124,10 @@ public class WxOfflineActivityGrantController extends BaseController {
// if(wxOfflineActivityGrantAward.getRecordIds() == null || wxOfflineActivityGrantAward.getRecordIds().isEmpty()){
// return new ResultData(Result.ERROR,"请选择订单");
// }
if(StringUtil.isBlank(wxOfflineActivityGrantAward.getCusPhone())){
if(StringUtils.isBlank(wxOfflineActivityGrantAward.getCusPhone())){
throw new MallinkException(Result.ERROR,"用户手机号为空");
}
// if(StringUtil.isBlank(wxOfflineActivityGrantAward.getSignImg())){
// if(StringUtils.isBlank(wxOfflineActivityGrantAward.getSignImg())){
// return new ResultData(Result.ERROR,"签名为空");
// }
TenantEntity tenantEntity = getTenantInfo();
@@ -152,7 +152,7 @@ public class WxOfflineActivityGrantController extends BaseController {
if(wxOfflineActivityGrantAward.getActivityId() == null){
return new ResultData(Result.ERROR,"活动ID为空");
}
if(StringUtil.isBlank(wxOfflineActivityGrantAward.getCusPhone())){
if(StringUtils.isBlank(wxOfflineActivityGrantAward.getCusPhone())){
throw new MallinkException(Result.ERROR,"用户手机号为空");
}
// if(wxOfflineActivityGrantAward.getRecordId() == null){


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

@@ -18,7 +18,7 @@ import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import jodd.util.StringUtil;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@@ -119,7 +119,7 @@ public class WxOfflineActivityRecordController extends BaseController {
if(wxOfflineActivityRecord == null){
return new ResultData(Result.ERROR,"id 不能为空");
}
if(StringUtil.isBlank(wxOfflineActivityRecord.getAuditRemark())){
if(StringUtils.isBlank(wxOfflineActivityRecord.getAuditRemark())){
return new ResultData(Result.ERROR,"驳回意见不能为空");
}
TenantEntity tenantEntity = getTenantInfo();


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

@@ -17,7 +17,6 @@ import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import jodd.util.StringUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;


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

@@ -0,0 +1,155 @@
package com.iformall.controller.market;

import com.github.pagehelper.PageInfo;
import com.iformall.annotation.ApiVersion;
import com.iformall.common.Result;
import com.iformall.common.ResultData;
import com.iformall.constant.SwaggerConstant;
import com.iformall.controller.base.BaseController;
import com.iformall.domain.po.WxVtwoActivityOrder;
import com.iformall.domain.po.base.BaseEntity.SortField;
import com.iformall.domain.po.base.TenantEntity;
import com.iformall.enums.EnumOfflineActivityRecordStatus;
import com.iformall.service.WxVtwoActivityOrderService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Map;

/**
* @author alascor
*
*/
@RestController
@RequestMapping("/activityOrder")
@Api(description = "线下活动登记相关接口")
public class WxVtwoActivityOrderController extends BaseController {
private final Logger logger = LoggerFactory.getLogger(this.getClass());

@Autowired
private WxVtwoActivityOrderService wxVtwoActivityOrderService;

@ApiVersion(group = SwaggerConstant.V_A_2_0)
@ApiOperation("分页列表接口")
@GetMapping("list")
@ApiImplicitParams({
@ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true),
@ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true)})
public ResultData list(@ModelAttribute WxVtwoActivityOrder activityOrder, Integer pageNum, Integer pageSize) {
if (null == activityOrder) activityOrder = new WxVtwoActivityOrder();
TenantEntity tenantInfo = getTenantInfo();
activityOrder.updateTenantInfo(tenantInfo);
activityOrder.setSortColumns(SortField.CreateDate_DESC);
final PageInfo<WxVtwoActivityOrder> page = wxVtwoActivityOrderService.listAsPage(activityOrder, pageNum, pageSize);

return new ResultData(page);
}

@ApiVersion(group = SwaggerConstant.V_A_2_0)
@ApiOperation("新增修改接口")
@PostMapping("saveOrUpdate")
public ResultData saveOrUpdate(@RequestBody WxVtwoActivityOrder activityOrder) {
if(activityOrder.getId() == null){
return new ResultData(Result.ERROR,"id不能为空");
}
TenantEntity tenantEntity = getTenantInfo();
activityOrder.updateTenantInfo(tenantEntity);
wxVtwoActivityOrderService.saveOrUpdate(activityOrder);
return new ResultData();
}

@ApiVersion(group = SwaggerConstant.V_A_2_0)
@ApiOperation("获取待审批数量")
@GetMapping("waitAudiCount")
public ResultData waitAudiCount() {
Integer waitAudiCount = wxVtwoActivityOrderService.getWaitAudiCount(getTenantInfo());
return new ResultData(waitAudiCount);
}

@ApiVersion(group = SwaggerConstant.V_A_2_0)
@ApiOperation("导出")
@GetMapping("/export")
public void export(@ModelAttribute WxVtwoActivityOrder activityOrder, HttpServletRequest request, HttpServletResponse response) {
if (null == activityOrder) activityOrder = new WxVtwoActivityOrder();
TenantEntity tenantInfo = getTenantInfo();
activityOrder.updateTenantInfo(tenantInfo);
activityOrder.setSortColumns(SortField.CreateDate_DESC);
wxVtwoActivityOrderService.exportData(request,response,activityOrder,null);
}

@ApiVersion(group = SwaggerConstant.V_A_2_0)
@ApiOperation("审核通过")
@PostMapping("audiPass")
public ResultData audiPass(@RequestBody WxVtwoActivityOrder activityOrder) {

if(activityOrder.getId() == null){
return new ResultData(Result.ERROR,"id 不能为空");
}
TenantEntity tenantEntity = getTenantInfo();
activityOrder.updateTenantInfo(tenantEntity);
activityOrder.setAuditStatus(EnumOfflineActivityRecordStatus.AUDI_SUCCESS.getCode());
wxVtwoActivityOrderService.auditRecord(activityOrder,getUserId());
return new ResultData();
}

@ApiVersion(group = SwaggerConstant.V_A_2_0)
@ApiOperation("审核驳回")
@PostMapping("audtFail")
public ResultData audtFail(@RequestBody WxVtwoActivityOrder activityOrder) {
if(activityOrder.getId() == null){
return new ResultData(Result.ERROR,"id 不能为空");
}

if(StringUtils.isBlank(activityOrder.getAuditRemark())){
return new ResultData(Result.ERROR,"驳回意见不能为空");
}
TenantEntity tenantEntity = getTenantInfo();
activityOrder.updateTenantInfo(tenantEntity);
activityOrder.setAuditStatus(EnumOfflineActivityRecordStatus.AUDT_FAIL.getCode());
wxVtwoActivityOrderService.auditRecord(activityOrder,getUserId());
return new ResultData();
}

@ApiVersion(group = SwaggerConstant.V_A_2_0)
@ApiOperation("失效")
@PostMapping("invalid")
public ResultData invalid(@RequestBody WxVtwoActivityOrder activityOrder) {
if(activityOrder == null){
return new ResultData(Result.ERROR,"id 不能为空");
}
TenantEntity tenantEntity = getTenantInfo();
activityOrder.updateTenantInfo(tenantEntity);
activityOrder.setAuditStatus(EnumOfflineActivityRecordStatus.INVALID.getCode());
wxVtwoActivityOrderService.auditRecord(activityOrder,getUserId());
return new ResultData();
}

@ApiVersion(group = SwaggerConstant.V_A_2_0)
@ApiOperation("查询详情")
@GetMapping("getInfoById")
@ApiImplicitParams({
@ApiImplicitParam(name = "id", value = "主键id", dataType = "Long", paramType = "query", required = true)})
public ResultData getInfoById(Long id) {
TenantEntity tenantInfo = getTenantInfo();
WxVtwoActivityOrder activityOrder = wxVtwoActivityOrderService.getInfoById(id, tenantInfo.getTenantId());
return new ResultData(activityOrder);
}

@ApiVersion(group = SwaggerConstant.V_A_2_0)
@ApiOperation("订单相关统计")
@GetMapping("statistics")
public ResultData statistics() {
Map<String,Object> statisticsMap = wxVtwoActivityOrderService.orderStatistics(getTenantInfo());
return new ResultData(statisticsMap);
}

}

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

@@ -0,0 +1,306 @@
package com.iformall.controller.market;

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;
import com.iformall.controller.base.BaseController;
import com.iformall.domain.po.*;
import com.iformall.domain.po.base.BaseEntity.SortField;
import com.iformall.domain.po.base.TenantEntity;
import com.iformall.domain.vo.*;
import com.iformall.enums.*;
import com.iformall.exception.MallinkException;
import com.iformall.service.*;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

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

/**
* @author alascor
*
*/
@RestController
@RequestMapping("/specialTopic")
@Api(description = "线下活动专题活动相关接口")
public class WxVtwoActivitySpecialTopicController extends BaseController {
private final Logger logger = LoggerFactory.getLogger(this.getClass());

@Autowired
private WxVtwoActivitySpecialTopicService wxVtwoActivitySpecialTopicService;

@Autowired
private WxVtwoPrizeDrawActivityService wxVtwoPrizeDrawActivityService;

@Autowired
private WxVtwoAmountGiftActivityService wxVtwoAmountGiftActivityService;

@Autowired
private WxVtwoCashBackActivityService wxVtwoCashBackActivityService;

@Autowired
private WxVtwoActivityOrderService wxVtwoActivityOrderService;

@Autowired
private WxVtwoActivityGrantSettlementService wxVtwoActivityGrantSettlementService;

@Autowired
private WxVtwoActivityGrantStatisticsService wxVtwoActivityGrantStatisticsService;

@ApiVersion(group = SwaggerConstant.V_A_2_0)
@ApiOperation("分页列表接口")
@GetMapping("list")
@ApiImplicitParams({
@ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true),
@ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true)})
public ResultData list(@ModelAttribute WxVtwoActivitySpecialTopic specialTopic, Integer pageNum, Integer pageSize) {
if (null == specialTopic) specialTopic = new WxVtwoActivitySpecialTopic();
TenantEntity tenantInfo = getTenantInfo();
specialTopic.updateTenantInfo(tenantInfo);
specialTopic.setSortColumns(SortField.CreateDate_DESC);
final PageInfo<WxVtwoActivitySpecialTopic> page = wxVtwoActivitySpecialTopicService.listAsPage(specialTopic, pageNum, pageSize);
return new ResultData(page);
}

@ApiVersion(group = SwaggerConstant.V_A_2_0)
@ApiOperation("判断积分按钮状态")
@PostMapping("getCreditStatus")
public ResultData getCreditStatus(@RequestBody WxVtwoActivitySpecialTopic specialTopic) {
TenantEntity tenantEntity = getTenantInfo();
specialTopic.updateTenantInfo(tenantEntity);
if(specialTopic.getStartTime() == null || specialTopic.getEndTime() == null){
return new ResultData(Result.ERROR,"活动时间为空");
}
if(wxVtwoActivitySpecialTopicService.selectCreditCount(specialTopic) > 0){
return new ResultData(false);
}
return new ResultData(true);
}

@ApiVersion(group = SwaggerConstant.V_A_2_0)
@ApiOperation("新增修改接口")
@PostMapping("saveOrUpdate")
public ResultData saveOrUpdate(@RequestBody WxVtwoActivitySpecialTopic specialTopic) {
TenantEntity tenantEntity = getTenantInfo();
specialTopic.updateTenantInfo(tenantEntity);
if(specialTopic.getStartTime() == null || specialTopic.getEndTime() == null){
return new ResultData(Result.ERROR,"活动时间为空");
}
if(specialTopic.getCreditOnOff() == null){
specialTopic.setCreditOnOff(EnumYesOrNo.NO.getCode());
}
if(EnumYesOrNo.YES.getCode().equals(specialTopic.getCreditOnOff())){
WxVtwoActivityCreditRule creditConfigObject = specialTopic.getCreditConfigObject();
if(creditConfigObject == null){
return new ResultData(Result.ERROR,"积分配置错误");
}
if(creditConfigObject.getStep().compareTo(BigDecimal.ZERO) <= 0
|| creditConfigObject.getScore() <= 0){
return new ResultData(Result.ERROR,"积分配置不能为0");
}
if(wxVtwoActivitySpecialTopicService.selectCreditCount(specialTopic) > 0){
return new ResultData(Result.ERROR,"活动时间内存在积分开启的活动");
}
}else{
specialTopic.setCreditConfig("{}");
}

if(specialTopic.getActivityList() == null || specialTopic.getActivityList().isEmpty()){
return new ResultData(Result.ERROR,"包含活动不能为空");
}
for (WxVtwoSpecialTopicActivity activity:specialTopic.getActivityList()){
if(activity.getActivityId() == null || activity.getActivityType() == null){
return new ResultData(Result.ERROR,"活动参数为空");
}
EnumOfflineActivityType activityType = EnumOfflineActivityType.getEnum(activity.getActivityType());
if(activityType == null){
return new ResultData(Result.ERROR,"活动参数异常");
}
switch (activityType) {
case LOTTERY_DRAW:
wxVtwoPrizeDrawActivityService.handleSpecialTopicActivity(tenantEntity, activity);
break;
case GIFT:
wxVtwoAmountGiftActivityService.handleSpecialTopicActivity(tenantEntity, activity);
break;
case CASHBACK:
wxVtwoCashBackActivityService.handleSpecialTopicActivity(tenantEntity, activity);
break;
default:
return new ResultData(Result.ERROR,"活动参数异常");
}
}
try{
wxVtwoActivitySpecialTopicService.saveOrUpdate(specialTopic);
return new ResultData(specialTopic);
}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("online")
public ResultData online(@RequestBody WxVtwoActivitySpecialTopic specialTopic) {
if(specialTopic.getId() == null){
return new ResultData(Result.ERROR,"ID为空");
}
TenantEntity tenantEntity = getTenantInfo();
specialTopic.updateTenantInfo(tenantEntity);
specialTopic.setStatus(EnumOfflineActivityStatus.ON_LINE.getCode());
wxVtwoActivitySpecialTopicService.updateById(specialTopic);
return new ResultData();
}

@ApiVersion(group = SwaggerConstant.V_A_2_0)
@ApiOperation("下架")
@PostMapping("offline")
public ResultData offline(@RequestBody WxVtwoActivitySpecialTopic specialTopic) {
if(specialTopic.getId() == null){
return new ResultData(Result.ERROR,"ID为空");
}
TenantEntity tenantEntity = getTenantInfo();
specialTopic.updateTenantInfo(tenantEntity);
specialTopic.setStatus(EnumOfflineActivityStatus.OFF_LINE.getCode());
wxVtwoActivitySpecialTopicService.updateById(specialTopic);
return new ResultData();
}

@ApiVersion(group = SwaggerConstant.V_A_2_0)
@ApiOperation("查询详情")
@GetMapping("getInfoById")
@ApiImplicitParams({
@ApiImplicitParam(name = "id", value = "主键id", dataType = "Long", paramType = "query", required = true)})
public ResultData getInfoById(Long id) {
TenantEntity tenantInfo = getTenantInfo();
WxVtwoActivitySpecialTopic specialTopic = wxVtwoActivitySpecialTopicService.getInfoById(id, tenantInfo.getTenantId());
return new ResultData(specialTopic);
}

@ApiVersion(group = SwaggerConstant.V_A_2_0)
@ApiOperation("获取参与订单数据报表")
@GetMapping("orderStatistics")
public ResultData recordStatistics(@ModelAttribute WxVtwoActivityStatisticsVo statisticsVo) {
if(statisticsVo.getId() == null){
return new ResultData(Result.ERROR,"ID为空");
}
TenantEntity tenantInfo = getTenantInfo();
statisticsVo.updateTenantInfo(tenantInfo);
wxVtwoActivitySpecialTopicService.handleStatisticsVo(statisticsVo);
return new ResultData(wxVtwoActivityOrderService.orderCountStatistics(statisticsVo));
}

@ApiVersion(group = SwaggerConstant.V_A_2_0)
@ApiOperation("获取参与订单数据折线图")
@GetMapping("orderStatisticsChart")
public ResultData recordStatisticsChart(@ModelAttribute WxVtwoActivityStatisticsVo statisticsVo) {
if(statisticsVo.getId() == null){
return new ResultData(Result.ERROR,"ID为空");
}
TenantEntity tenantInfo = getTenantInfo();
statisticsVo.updateTenantInfo(tenantInfo);
wxVtwoActivitySpecialTopicService.handleStatisticsVo(statisticsVo);
return new ResultData(wxVtwoActivityOrderService.orderCountStatisticsChart(statisticsVo));
}

@ApiVersion(group = SwaggerConstant.V_A_2_0)
@ApiOperation("获取活动营销费用")
@GetMapping("settlementStatistics")
public ResultData settlementStatistics(@ModelAttribute WxVtwoActivityStatisticsVo statisticsVo) {
if(statisticsVo.getId() == null){
return new ResultData(Result.ERROR,"ID为空");
}
TenantEntity tenantInfo = getTenantInfo();
statisticsVo.updateTenantInfo(tenantInfo);
wxVtwoActivitySpecialTopicService.handleStatisticsVo(statisticsVo);
return new ResultData(wxVtwoActivityGrantSettlementService.activitySettlementStatistics(statisticsVo));
}

@ApiVersion(group = SwaggerConstant.V_A_2_0)
@ApiOperation("获取参与订单品类分布")
@GetMapping("orderBusinessStatistics")
public ResultData orderBusinessStatistics(@ModelAttribute WxVtwoActivityStatisticsVo statisticsVo) {
if(statisticsVo.getId() == null){
return new ResultData(Result.ERROR,"ID为空");
}
TenantEntity tenantInfo = getTenantInfo();
statisticsVo.updateTenantInfo(tenantInfo);
wxVtwoActivitySpecialTopicService.handleStatisticsVo(statisticsVo);
return new ResultData(wxVtwoActivityOrderService.orderBusinessStatistics(statisticsVo));
}

@ApiVersion(group = SwaggerConstant.V_A_2_0)
@ApiOperation("获取活动项数据统计")
@GetMapping("activityAwardStatistics")
public ResultData activityAwardStatistics(@ModelAttribute WxVtwoActivityStatisticsVo statisticsVo) {
if(statisticsVo.getId() == null){
return new ResultData(Result.ERROR,"ID为空");
}
if(statisticsVo.getActivityId() == null){
return new ResultData(Result.ERROR,"活动ID为空");
}
if(statisticsVo.getActivityType() == null || EnumOfflineActivityType.getEnum(statisticsVo.getActivityType()) == null){
return new ResultData(Result.ERROR,"活动类型为空");
}
TenantEntity tenantInfo = getTenantInfo();
statisticsVo.updateTenantInfo(tenantInfo);
wxVtwoActivitySpecialTopicService.handleStatisticsVo(statisticsVo);

return new ResultData(wxVtwoActivityGrantStatisticsService.activityAwardStatistics(statisticsVo));
}

@ApiVersion(group = SwaggerConstant.V_A_2_0)
@ApiOperation("获取活动项数据统计折现图")
@GetMapping("activityAwardStatisticsChart")
public ResultData activityAwardStatisticsChart(@ModelAttribute WxVtwoActivityStatisticsVo statisticsVo) {
if(statisticsVo.getId() == null){
return new ResultData(Result.ERROR,"ID为空");
}
if(statisticsVo.getActivityId() == null){
return new ResultData(Result.ERROR,"活动ID为空");
}
if(statisticsVo.getActivityType() == null || EnumOfflineActivityType.getEnum(statisticsVo.getActivityType()) == null){
return new ResultData(Result.ERROR,"活动类型为空");
}
TenantEntity tenantInfo = getTenantInfo();
statisticsVo.updateTenantInfo(tenantInfo);
wxVtwoActivitySpecialTopicService.handleStatisticsVo(statisticsVo);

return new ResultData(wxVtwoActivityGrantStatisticsService.activityAwardStatisticsChart(statisticsVo));
}

@ApiVersion(group = SwaggerConstant.V_A_2_0)
@ApiOperation("获取活动项奖品分布")
@GetMapping("awardItemStatistics")
public ResultData awardItemStatistics(@ModelAttribute WxVtwoActivityStatisticsVo statisticsVo) {
if(statisticsVo.getId() == null){
return new ResultData(Result.ERROR,"ID为空");
}
if(statisticsVo.getActivityId() == null){
return new ResultData(Result.ERROR,"活动ID为空");
}
if(statisticsVo.getActivityType() == null || EnumOfflineActivityType.getEnum(statisticsVo.getActivityType()) == null){
return new ResultData(Result.ERROR,"活动类型为空");
}
TenantEntity tenantInfo = getTenantInfo();
statisticsVo.updateTenantInfo(tenantInfo);
wxVtwoActivitySpecialTopicService.handleStatisticsVo(statisticsVo);

return new ResultData(wxVtwoActivityGrantStatisticsService.awardItemStatistics(statisticsVo));
}

}

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

@@ -2,30 +2,36 @@ package com.iformall.controller.market;

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;
import com.iformall.controller.base.BaseController;
import com.iformall.domain.po.WxVtwoActivityAward;
import com.iformall.domain.po.WxVtwoAmountGiftActivity;
import com.iformall.domain.po.WxVtwoPrizeDrawActivity;
import com.iformall.domain.po.*;
import com.iformall.domain.po.base.BaseEntity.SortField;
import com.iformall.domain.po.base.TenantEntity;
import com.iformall.enums.EnumOfflineActivityAwardsMoneyRule;
import com.iformall.enums.EnumOfflineActivityMerchantType;
import com.iformall.enums.EnumOfflineActivityStatus;
import com.iformall.enums.*;
import com.iformall.exception.MallinkException;
import com.iformall.service.WxVtwoActivityGrantService;
import com.iformall.service.WxVtwoActivityOrderService;
import com.iformall.service.WxVtwoAmountGiftActivityService;
import com.iformall.service.WxVtwoPrizeDrawActivityService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.math.BigDecimal;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
* @author alascor
@@ -40,6 +46,9 @@ public class WxVtwoAmountGiftActivityController extends BaseController {
@Autowired
private WxVtwoAmountGiftActivityService wxVtwoAmountGiftActivityService;

@Autowired
private WxVtwoActivityOrderService wxVtwoActivityOrderService;

@ApiVersion(group = SwaggerConstant.V_A_2_0)
@ApiOperation("分页列表接口")
@GetMapping("list")
@@ -93,7 +102,7 @@ public class WxVtwoAmountGiftActivityController extends BaseController {
}
}
wxVtwoAmountGiftActivityService.saveOrUpdate(amountGiftActivity);
return new ResultData();
return new ResultData(amountGiftActivity);
}

@ApiVersion(group = SwaggerConstant.V_A_2_0)
@@ -135,4 +144,188 @@ public class WxVtwoAmountGiftActivityController extends BaseController {
return new ResultData(amountGiftActivity);
}

@ApiVersion(group = SwaggerConstant.V_A_2_0)
@ApiOperation("参加活动用户订单统计")
@GetMapping("orderStatistics")
public ResultData orderStatistics(@ModelAttribute WxVtwoActivityOrder activityOrder) {
if(activityOrder.getActivityId() == null){
return new ResultData(Result.ERROR,"活动ID 为空");
}
if(StringUtils.isBlank(activityOrder.getCusPhone())){
return new ResultData(Result.ERROR,"请输入用户手机号");
}

TenantEntity tenantInfo = getTenantInfo();
WxVtwoAmountGiftActivity activity = wxVtwoAmountGiftActivityService.getById(activityOrder.getActivityId(), tenantInfo.getTenantId());
if(activity == null){
return new ResultData(Result.ERROR,"未查询到活动");
}
activityOrder.updateTenantInfo(tenantInfo);
activityOrder.setCreateDateBegin(activity.getStartTime());
activityOrder.setCreateDateEnd(activity.getEndTime());

Map<String,Object> statisticsMap = wxVtwoActivityOrderService.getStatistics(activityOrder);

WxVtwoActivityOrder orderOne = wxVtwoActivityOrderService.getlimitOne(activityOrder);
if(orderOne == null){
statisticsMap.put("cus_name","查无此人");
statisticsMap.put("cus_phone",activityOrder.getCusPhone());
return new ResultData(statisticsMap);
}

statisticsMap.put("cus_name",orderOne.getCusName());
statisticsMap.put("cus_phone",orderOne.getCusPhone());
return new ResultData(statisticsMap);
}

@ApiVersion(group = SwaggerConstant.V_A_2_0)
@ApiOperation("参加活动用户订单列表")
@GetMapping("orderList")
@ApiImplicitParams({})
public ResultData orderList(@ModelAttribute WxVtwoActivityOrder activityOrder) {
if(activityOrder.getActivityId() == null){
return new ResultData(Result.ERROR,"活动ID 为空");
}
if(StringUtils.isBlank(activityOrder.getCusPhone())){
return new ResultData(Result.ERROR,"请输入用户手机号");
}

TenantEntity tenantInfo = getTenantInfo();
WxVtwoAmountGiftActivity activity = wxVtwoAmountGiftActivityService.getById(activityOrder.getActivityId(), tenantInfo.getTenantId());
if(activity == null){
return new ResultData(Result.ERROR,"未查询到活动");
}
activityOrder.updateTenantInfo(tenantInfo);
activityOrder.setCreateDateBegin(activity.getStartTime());
activityOrder.setCreateDateEnd(activity.getEndTime());;
activityOrder.setSortColumns(SortField.CreateDate_DESC);
List<WxVtwoActivityOrder> orderList = wxVtwoActivityOrderService.findList(activityOrder,activity.getId());

return new ResultData(orderList);
}

@ApiVersion(group = SwaggerConstant.V_A_2_0)
@ApiOperation("参加活动用户订单导出")
@GetMapping("/orderExport")
public void orderExport(@ModelAttribute WxVtwoActivityOrder activityOrder, HttpServletRequest request, HttpServletResponse response) {

if(activityOrder.getActivityId() == null){
throw new MallinkException(Result.ERROR,"活动ID 为空");
}
if(StringUtils.isBlank(activityOrder.getCusPhone())){
throw new MallinkException(Result.ERROR,"请输入用户手机号");
}

TenantEntity tenantInfo = getTenantInfo();
WxVtwoAmountGiftActivity activity = wxVtwoAmountGiftActivityService.getById(activityOrder.getActivityId(), tenantInfo.getTenantId());
if(activity == null){
throw new MallinkException(Result.ERROR,"未查询到活动");
}
activityOrder.updateTenantInfo(tenantInfo);
activityOrder.setCreateDateBegin(activity.getStartTime());
activityOrder.setCreateDateEnd(activity.getEndTime());;
activityOrder.setSortColumns(SortField.CreateDate_DESC);
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,"请选择订单");
}
WxVtwoAmountGiftActivity amountGiftActivity = wxVtwoAmountGiftActivityService.getInfoById(activityGrant.getActivityId(), activityGrant.getTenantId());
if(amountGiftActivity == null){
return new ResultData(Result.ERROR,"查询不到活动");
}
if(!EnumOfflineActivityStatus.ON_LINE.getCode().equals(amountGiftActivity.getStatus())){
throw new MallinkException(Result.ERROR, "请检查活动状态");
}
if(EnumOfflineActivityMode.CONDITION_SUM.getCode().equals(amountGiftActivity.getAmountModel())){
if(activityGrant.getOrderFilterIdList() == null || activityGrant.getOrderFilterIdList().isEmpty()){
return new ResultData(Result.ERROR,"请筛选订单");
}
}else{
activityGrant.setOrderFilterIdList(null);
}
try{
wxVtwoAmountGiftActivityService.handlerGrantAwardPage(amountGiftActivity,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,"请选择订单");
}
WxVtwoAmountGiftActivity amountGiftActivity = wxVtwoAmountGiftActivityService.getInfoById(activityGrant.getActivityId(), activityGrant.getTenantId());
if(amountGiftActivity == null){
return new ResultData(Result.ERROR,"查询不到活动");
}
if(!EnumOfflineActivityStatus.ON_LINE.getCode().equals(amountGiftActivity.getStatus())){
throw new MallinkException(Result.ERROR, "请检查活动状态");
}

if(EnumOfflineActivityMode.CONDITION_SUM.getCode().equals(amountGiftActivity.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.setActivityType(EnumOfflineActivityType.GIFT.getCode());
activityGrant.setActivityName(amountGiftActivity.getName());
activityGrant.setCreateBy(getUserId());
activityGrant.setCreateByName(getUser().getName());
try{
wxVtwoAmountGiftActivityService.grantAward(amountGiftActivity, 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);
}
}

@ApiVersion(group = SwaggerConstant.V_A_2_0)
@ApiOperation("活动发奖明细导出")
@GetMapping("/grantExport")
public void grantExport(@ModelAttribute WxVtwoActivityGrant activityGrant, HttpServletRequest request, HttpServletResponse response) {

if(activityGrant.getActivityId() == null){
throw new MallinkException(Result.ERROR,"活动ID 为空");
}
activityGrant.updateTenantInfo(getTenantInfo());
wxVtwoAmountGiftActivityService.grantExport(request,response,activityGrant);
}

}

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

@@ -2,38 +2,43 @@ package com.iformall.controller.market;

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;
import com.iformall.controller.base.BaseController;
import com.iformall.domain.po.WxVtwoActivityAward;
import com.iformall.domain.po.WxVtwoAmountGiftActivity;
import com.iformall.domain.po.WxVtwoCashBackActivity;
import com.iformall.domain.po.WxVtwoCashBackAward;
import com.iformall.domain.po.*;
import com.iformall.domain.po.base.BaseEntity.SortField;
import com.iformall.domain.po.base.TenantEntity;
import com.iformall.enums.EnumOfflineActivityAwardsMoneyRule;
import com.iformall.enums.EnumOfflineActivityMerchantType;
import com.iformall.enums.EnumOfflineActivityStatus;
import com.iformall.enums.*;
import com.iformall.exception.MallinkException;
import com.iformall.service.WxVtwoActivityOrderService;
import com.iformall.service.WxVtwoAmountGiftActivityService;
import com.iformall.service.WxVtwoCashBackActivityService;
import com.iformall.service.WxVtwoCashBackGrantService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.math.BigDecimal;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
* @author alascor
*
*/
@RestController
@RequestMapping("/amountGift")
@RequestMapping("/cashBack")
@Api(description = "线下返现活动相关接口")
public class WxVtwoCashBackActivityController extends BaseController {
private final Logger logger = LoggerFactory.getLogger(this.getClass());
@@ -41,6 +46,10 @@ public class WxVtwoCashBackActivityController extends BaseController {
@Autowired
private WxVtwoCashBackActivityService wxVtwoCashBackActivityService;

@Autowired
private WxVtwoActivityOrderService wxVtwoActivityOrderService;


@ApiVersion(group = SwaggerConstant.V_A_2_0)
@ApiOperation("分页列表接口")
@GetMapping("list")
@@ -116,7 +125,7 @@ public class WxVtwoCashBackActivityController extends BaseController {
}
}
wxVtwoCashBackActivityService.saveOrUpdate(cashBackActivity);
return new ResultData();
return new ResultData(cashBackActivity);
}

@ApiVersion(group = SwaggerConstant.V_A_2_0)
@@ -158,4 +167,188 @@ public class WxVtwoCashBackActivityController extends BaseController {
return new ResultData(cashBackActivity);
}

@ApiVersion(group = SwaggerConstant.V_A_2_0)
@ApiOperation("参加活动用户订单统计")
@GetMapping("orderStatistics")
public ResultData orderStatistics(@ModelAttribute WxVtwoActivityOrder activityOrder) {
if(activityOrder.getActivityId() == null){
return new ResultData(Result.ERROR,"活动ID 为空");
}
if(StringUtils.isBlank(activityOrder.getCusPhone())){
return new ResultData(Result.ERROR,"请输入用户手机号");
}

TenantEntity tenantInfo = getTenantInfo();
WxVtwoCashBackActivity activity = wxVtwoCashBackActivityService.getInfoById(activityOrder.getActivityId(), tenantInfo.getTenantId());
if(activity == null){
return new ResultData(Result.ERROR,"未查询到活动");
}
activityOrder.updateTenantInfo(tenantInfo);
activityOrder.setCreateDateBegin(activity.getStartTime());
activityOrder.setCreateDateEnd(activity.getEndTime());

Map<String,Object> statisticsMap = wxVtwoActivityOrderService.getStatistics(activityOrder);

WxVtwoActivityOrder orderOne = wxVtwoActivityOrderService.getlimitOne(activityOrder);
if(orderOne == null){
statisticsMap.put("cus_name","查无此人");
statisticsMap.put("cus_phone",activityOrder.getCusPhone());
return new ResultData(statisticsMap);
}

statisticsMap.put("cus_name",orderOne.getCusName());
statisticsMap.put("cus_phone",orderOne.getCusPhone());
return new ResultData(statisticsMap);
}

@ApiVersion(group = SwaggerConstant.V_A_2_0)
@ApiOperation("参加活动用户订单列表")
@GetMapping("orderList")
@ApiImplicitParams({})
public ResultData orderList(@ModelAttribute WxVtwoActivityOrder activityOrder) {
if(activityOrder.getActivityId() == null){
return new ResultData(Result.ERROR,"活动ID 为空");
}
if(StringUtils.isBlank(activityOrder.getCusPhone())){
return new ResultData(Result.ERROR,"请输入用户手机号");
}

TenantEntity tenantInfo = getTenantInfo();
WxVtwoCashBackActivity activity = wxVtwoCashBackActivityService.getInfoById(activityOrder.getActivityId(), tenantInfo.getTenantId());
if(activity == null){
return new ResultData(Result.ERROR,"未查询到活动");
}
activityOrder.updateTenantInfo(tenantInfo);
activityOrder.setCreateDateBegin(activity.getStartTime());
activityOrder.setCreateDateEnd(activity.getEndTime());;
activityOrder.setSortColumns(SortField.CreateDate_DESC);
List<WxVtwoActivityOrder> orderList = wxVtwoActivityOrderService.findList(activityOrder,activity.getId());

return new ResultData(orderList);
}

@ApiVersion(group = SwaggerConstant.V_A_2_0)
@ApiOperation("参加活动用户订单导出")
@GetMapping("/orderExport")
public void orderExport(@ModelAttribute WxVtwoActivityOrder activityOrder, HttpServletRequest request, HttpServletResponse response) {

if(activityOrder.getActivityId() == null){
throw new MallinkException(Result.ERROR,"活动ID 为空");
}
if(StringUtils.isBlank(activityOrder.getCusPhone())){
throw new MallinkException(Result.ERROR,"请输入用户手机号");
}

TenantEntity tenantInfo = getTenantInfo();
WxVtwoCashBackActivity activity = wxVtwoCashBackActivityService.getById(activityOrder.getActivityId(), tenantInfo.getTenantId());
if(activity == null){
throw new MallinkException(Result.ERROR,"未查询到活动");
}
activityOrder.updateTenantInfo(tenantInfo);
activityOrder.setCreateDateBegin(activity.getStartTime());
activityOrder.setCreateDateEnd(activity.getEndTime());;
activityOrder.setSortColumns(SortField.CreateDate_DESC);
wxVtwoActivityOrderService.exportData(request,response,activityOrder,activity.getId());
}

@ApiVersion(group = SwaggerConstant.V_A_2_0)
@ApiOperation("活动发放页面处理")
@PostMapping("grantAwardPage")
public ResultData grantAwardPage(@RequestBody WxVtwoCashBackGrant 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,"请选择订单");
}
WxVtwoCashBackActivity cashBackActivity = wxVtwoCashBackActivityService.getInfoById(activityGrant.getActivityId(), activityGrant.getTenantId());
if(cashBackActivity == null){
return new ResultData(Result.ERROR,"查询不到活动");
}
if(!EnumOfflineActivityStatus.ON_LINE.getCode().equals(cashBackActivity.getStatus())){
throw new MallinkException(Result.ERROR, "请检查活动状态");
}
if(EnumOfflineActivityMode.CONDITION_SUM.getCode().equals(cashBackActivity.getAmountModel())){
if(activityGrant.getOrderFilterIdList() == null || activityGrant.getOrderFilterIdList().isEmpty()){
return new ResultData(Result.ERROR,"请筛选订单");
}
}else{
activityGrant.setOrderFilterIdList(null);
}
try{
wxVtwoCashBackActivityService.handlerGrantAwardPage(cashBackActivity,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 WxVtwoCashBackGrant 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,"请选择订单");
}
WxVtwoCashBackActivity cashBackActivity = wxVtwoCashBackActivityService.getInfoById(activityGrant.getActivityId(), activityGrant.getTenantId());
if(cashBackActivity == null){
return new ResultData(Result.ERROR,"查询不到活动");
}
if(!EnumOfflineActivityStatus.ON_LINE.getCode().equals(cashBackActivity.getStatus())){
throw new MallinkException(Result.ERROR, "请检查活动状态");
}

if(EnumOfflineActivityMode.CONDITION_SUM.getCode().equals(cashBackActivity.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.setActivityType(EnumOfflineActivityType.CASHBACK.getCode());
activityGrant.setActivityName(cashBackActivity.getName());
activityGrant.setCreateBy(getUserId());
activityGrant.setCreateByName(getUser().getName());
try{
wxVtwoCashBackActivityService.grantAward(cashBackActivity, 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);
}
}

@ApiVersion(group = SwaggerConstant.V_A_2_0)
@ApiOperation("活动发奖明细导出")
@GetMapping("/grantExport")
public void grantExport(@ModelAttribute WxVtwoCashBackGrant activityGrant, HttpServletRequest request, HttpServletResponse response) {

if(activityGrant.getActivityId() == null){
throw new MallinkException(Result.ERROR,"活动ID 为空");
}
activityGrant.updateTenantInfo(getTenantInfo());
wxVtwoCashBackActivityService.grantExport(request,response,activityGrant);
}

}

+ 196
- 4
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;
@@ -11,15 +12,17 @@ import com.iformall.domain.po.*;
import com.iformall.domain.po.base.BaseEntity.SortField;
import com.iformall.domain.po.base.TenantEntity;
import com.iformall.domain.vo.OfflineActivityAwardsItemVo;
import com.iformall.domain.vo.OfflineActivityItemStatistics;
import com.iformall.domain.vo.OfflineGantItemStatistics;
import com.iformall.domain.vo.WxVtwoActivityStatisticsVo;
import com.iformall.enums.*;
import com.iformall.exception.MallinkException;
import com.iformall.service.WxOfflineActivityGrantAwardService;
import com.iformall.service.WxOfflineActivityService;
import com.iformall.service.WxVtwoPrizeDrawActivityService;
import com.iformall.service.*;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@@ -28,6 +31,9 @@ import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.math.BigDecimal;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
* @author alascor
@@ -42,6 +48,9 @@ public class WxVtwoPrizeDrawActivityController extends BaseController {
@Autowired
private WxVtwoPrizeDrawActivityService wxVtwoPrizeDrawActivityService;

@Autowired
private WxVtwoActivityOrderService wxVtwoActivityOrderService;

@ApiVersion(group = SwaggerConstant.V_A_2_0)
@ApiOperation("分页列表接口")
@GetMapping("list")
@@ -95,7 +104,7 @@ public class WxVtwoPrizeDrawActivityController extends BaseController {
}
}
wxVtwoPrizeDrawActivityService.saveOrUpdate(prizeDrawActivity);
return new ResultData();
return new ResultData(prizeDrawActivity);
}

@ApiVersion(group = SwaggerConstant.V_A_2_0)
@@ -137,4 +146,187 @@ public class WxVtwoPrizeDrawActivityController extends BaseController {
return new ResultData(prizeDrawActivity);
}

@ApiVersion(group = SwaggerConstant.V_A_2_0)
@ApiOperation("参加活动用户订单统计")
@GetMapping("orderStatistics")
public ResultData orderStatistics(@ModelAttribute WxVtwoActivityOrder activityOrder) {
if(activityOrder.getActivityId() == null){
return new ResultData(Result.ERROR,"活动ID 为空");
}
if(StringUtils.isBlank(activityOrder.getCusPhone())){
return new ResultData(Result.ERROR,"请输入用户手机号");
}

TenantEntity tenantInfo = getTenantInfo();
WxVtwoPrizeDrawActivity activity = wxVtwoPrizeDrawActivityService.getById(activityOrder.getActivityId(), tenantInfo.getTenantId());
if(activity == null){
return new ResultData(Result.ERROR,"未查询到活动");
}
activityOrder.updateTenantInfo(tenantInfo);
activityOrder.setCreateDateBegin(activity.getStartTime());
activityOrder.setCreateDateEnd(activity.getEndTime());

Map<String,Object> statisticsMap = wxVtwoActivityOrderService.getStatistics(activityOrder);

WxVtwoActivityOrder orderOne = wxVtwoActivityOrderService.getlimitOne(activityOrder);
if(orderOne == null){
statisticsMap.put("cus_name","查无此人");
statisticsMap.put("cus_phone",activityOrder.getCusPhone());
return new ResultData(statisticsMap);
}

statisticsMap.put("cus_name",orderOne.getCusName());
statisticsMap.put("cus_phone",orderOne.getCusPhone());
return new ResultData(statisticsMap);
}

@ApiVersion(group = SwaggerConstant.V_A_2_0)
@ApiOperation("参加活动用户订单列表")
@GetMapping("orderList")
@ApiImplicitParams({})
public ResultData orderList(@ModelAttribute WxVtwoActivityOrder activityOrder) {
if(activityOrder.getActivityId() == null){
return new ResultData(Result.ERROR,"活动ID 为空");
}
if(StringUtils.isBlank(activityOrder.getCusPhone())){
return new ResultData(Result.ERROR,"请输入用户手机号");
}

TenantEntity tenantInfo = getTenantInfo();
WxVtwoPrizeDrawActivity activity = wxVtwoPrizeDrawActivityService.getById(activityOrder.getActivityId(), tenantInfo.getTenantId());
if(activity == null){
return new ResultData(Result.ERROR,"未查询到活动");
}
activityOrder.updateTenantInfo(tenantInfo);
activityOrder.setCreateDateBegin(activity.getStartTime());
activityOrder.setCreateDateEnd(activity.getEndTime());;
activityOrder.setSortColumns(SortField.CreateDate_DESC);
List<WxVtwoActivityOrder> orderList = wxVtwoActivityOrderService.findList(activityOrder,activity.getId());

return new ResultData(orderList);
}

@ApiVersion(group = SwaggerConstant.V_A_2_0)
@ApiOperation("参加活动用户订单导出")
@GetMapping("/orderExport")
public void orderExport(@ModelAttribute WxVtwoActivityOrder activityOrder, HttpServletRequest request, HttpServletResponse response) {

if(activityOrder.getActivityId() == null){
throw new MallinkException(Result.ERROR,"活动ID 为空");
}
if(StringUtils.isBlank(activityOrder.getCusPhone())){
throw new MallinkException(Result.ERROR,"请输入用户手机号");
}

TenantEntity tenantInfo = getTenantInfo();
WxVtwoPrizeDrawActivity activity = wxVtwoPrizeDrawActivityService.getById(activityOrder.getActivityId(), tenantInfo.getTenantId());
if(activity == null){
throw new MallinkException(Result.ERROR,"未查询到活动");
}
activityOrder.updateTenantInfo(tenantInfo);
activityOrder.setCreateDateBegin(activity.getStartTime());
activityOrder.setCreateDateEnd(activity.getEndTime());;
activityOrder.setSortColumns(SortField.CreateDate_DESC);
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.getInfoById(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.getInfoById(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.setActivityType(EnumOfflineActivityType.LOTTERY_DRAW.getCode());
activityGrant.setActivityName(prizeDrawActivity.getName());
activityGrant.setCreateBy(getUserId());
activityGrant.setCreateByName(getUser().getName());
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);
}
}

@ApiVersion(group = SwaggerConstant.V_A_2_0)
@ApiOperation("活动发奖明细导出")
@GetMapping("/grantExport")
public void grantExport(@ModelAttribute WxVtwoActivityGrant activityGrant, HttpServletRequest request, HttpServletResponse response) {

if(activityGrant.getActivityId() == null){
throw new MallinkException(Result.ERROR,"活动ID 为空");
}
activityGrant.updateTenantInfo(getTenantInfo());
wxVtwoPrizeDrawActivityService.grantExport(request,response,activityGrant);
}

}

+ 2
- 2
mallinkAdmin/src/main/resources/db/migration/V202505000000001.sql Просмотреть файл

@@ -8,5 +8,5 @@ INSERT INTO `mallink`.`mall_permission` (`id`, `name`, `parent_id`, `available`,



UPDATE `mallink`.`mall_sale_type` SET `menus` = '[1, 2, 3, 4, 5, 6, 7, 8, 81, 82, 83, 84, 85, 86, 87, 9, 10, 11, 50, 101, 102, 103, 104, 105, 106, 107, 108, 109, 201, 202, 203, 204, 205, 206, 209, 210, 211, 212, 213, 221, 222, 224, 225, 228, 251, 261, 299, 300, 301, 302, 303, 304, 305, 306, 309, 30901, 30902, 310, 31001, 31002, 31003, 311, 312, 313, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 41901, 41902, 41903, 41904, 41905, 41906, 41907, 41908, 41909, 41910, 420, 421, 422, 423, 425, 426, 431, 432, 433, 434, 435, 436, 437, 438, 439, 43901, 43902, 43903, 43904, 43905, 43906, 43907, 440, 44001, 44002, 44003, 44004, 44005, 44006, 44007, 44008, 44009, 44010, 44011, 502, 503, 504, 505, 506, 507, 508, 509, 511, 512, 513, 514, 521, 522, 523, 531, 532, 533, 591, 592, 595, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 616, 617, 621, 622, 623, 624, 625, 626, 627, 641, 642, 643, 644, 645, 646, 651, 652, 653, 661, 662, 663, 664, 665, 666, 667, 668, 671, 672, 673, 674, 675, 681, 682, 683, 684, 685, 687, 691, 692, 693, 694, 695, 701, 702, 703, 704, 711, 713, 714, 715, 901, 902, 903, 904, 905, 906, 907, 908, 910, 931, 932, 951, 952, 961, 962, 963, 965, 966, 967, 968, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1604, 16041, 16042, 16043, 16044, 5502, 6610, 6611, 41701, 41702, 41703, 60701, 60702, 61201, 71102]' WHERE `id` = 1;
UPDATE `mallink`.`mall_sale_type` SET `menus` = '[1, 2, 3, 4, 5, 6, 7, 8, 81, 82, 83, 84, 85, 86, 87, 9, 10, 11, 50, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 201, 202, 203, 204, 205, 206, 209, 210, 211, 212, 213, 221, 222, 223, 224, 225, 228, 251, 261, 299, 300, 301, 302, 303, 304, 305, 306, 309, 30901, 30902, 310, 31001, 31002, 31003, 311, 312, 313, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 41901, 41902, 41903, 41904, 41905, 41906, 41907, 41908, 41909, 41910, 420, 421, 422, 423, 425, 426, 431, 432, 433, 434, 435, 436, 437, 438, 439, 43901, 43902, 43903, 43904, 43905, 43906, 43907, 440, 44001, 44002, 44003, 44004, 44005, 44006, 44007, 44008, 44009, 44010, 44011, 502, 503, 504, 505, 506, 507, 508, 509, 511, 512, 513, 514, 521, 522, 523, 531, 532, 533, 591, 592, 595, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 615, 616, 617, 621, 622, 623, 624, 625, 626, 627, 641, 642, 643, 644, 645, 646, 647, 651, 652, 653, 661, 662, 663, 664, 665, 666, 667, 668, 671, 672, 673, 674, 675, 676, 680, 681, 682, 683, 684, 685, 687, 691, 692, 693, 694, 695, 701, 702, 703, 704, 711, 713, 714, 715, 901, 902, 903, 904, 905, 906, 907, 908, 910, 931, 932, 951, 952, 961, 962, 963, 965, 966, 967, 968, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1604, 16041, 16042, 16043, 16044, 5502, 6610, 6611, 41701, 41702, 41703, 60701, 60702, 61201, 61202, 61501, 61502, 71102]' WHERE `id` = 12;
UPDATE `mallink`.`mall_sale_type` SET `menus` = '[1, 2, 3, 4, 5, 6, 7, 8, 81, 82, 83, 84, 85, 86, 87, 9, 10, 11, 50, 101, 102, 103, 104, 105, 106, 107, 108, 109, 201, 202, 203, 204, 205, 206, 209, 210, 211, 212, 213, 221, 222, 224, 225, 228, 251, 261, 299, 300, 301, 302, 303, 304, 305, 306, 309, 30901, 30902, 310, 31001, 31002, 31003, 311, 312, 313, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 41901, 41902, 41903, 41904, 41905, 41906, 41907, 41908, 41909, 41910, 420, 421, 422, 423, 431, 432, 433, 434, 435, 436, 437, 438, 439, 43901, 43902, 43903, 43904, 43905, 43906, 43907, 440, 44001, 44002, 44003, 44004, 44005, 44006, 44007, 44008, 44009, 44010, 44011, 502, 503, 504, 505, 506, 507, 508, 509, 511, 512, 513, 514, 521, 522, 523, 531, 532, 533, 591, 592, 595, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 616, 617, 621, 622, 623, 624, 625, 626, 627, 641, 642, 643, 644, 645, 646, 651, 652, 653, 661, 662, 663, 664, 665, 666, 667, 668, 671, 672, 673, 674, 675, 681, 682, 683, 684, 685, 687, 691, 692, 693, 694, 695, 701, 702, 703, 704, 711, 713, 714, 715, 901, 902, 903, 904, 905, 906, 907, 908, 910, 931, 932, 951, 952, 961, 962, 963, 965, 966, 967, 968, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1604, 16041, 16042, 16043, 16044, 5502, 6610, 6611, 41701, 41702, 41703, 60701, 60702, 61201, 71102]' WHERE `id` = 1;
UPDATE `mallink`.`mall_sale_type` SET `menus` = '[1, 2, 3, 4, 5, 6, 7, 8, 81, 82, 83, 84, 85, 86, 87, 9, 10, 11, 50, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 201, 202, 203, 204, 205, 206, 209, 210, 211, 212, 213, 221, 222, 223, 224, 225, 228, 251, 261, 299, 300, 301, 302, 303, 304, 305, 306, 309, 30901, 30902, 310, 31001, 31002, 31003, 311, 312, 313, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 41901, 41902, 41903, 41904, 41905, 41906, 41907, 41908, 41909, 41910, 420, 421, 422, 423, 431, 432, 433, 434, 435, 436, 437, 438, 439, 43901, 43902, 43903, 43904, 43905, 43906, 43907, 440, 44001, 44002, 44003, 44004, 44005, 44006, 44007, 44008, 44009, 44010, 44011, 502, 503, 504, 505, 506, 507, 508, 509, 511, 512, 513, 514, 521, 522, 523, 531, 532, 533, 591, 592, 595, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 615, 616, 617, 621, 622, 623, 624, 625, 626, 627, 641, 642, 643, 644, 645, 646, 647, 651, 652, 653, 661, 662, 663, 664, 665, 666, 667, 668, 671, 672, 673, 674, 675, 676, 680, 681, 682, 683, 684, 685, 687, 691, 692, 693, 694, 695, 701, 702, 703, 704, 711, 713, 714, 715, 901, 902, 903, 904, 905, 906, 907, 908, 910, 931, 932, 951, 952, 961, 962, 963, 965, 966, 967, 968, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1604, 16041, 16042, 16043, 16044, 5502, 6610, 6611, 41701, 41702, 41703, 60701, 60702, 61201, 61202, 61501, 61502, 71102]' WHERE `id` = 12;

+ 448
- 0
mallinkAdmin/src/main/resources/db/migration/V202505000000002.sql Просмотреть файл

@@ -0,0 +1,448 @@
/*
Navicat Premium Dump SQL

Source Server : 101.200.130.134
Source Server Type : MySQL
Source Server Version : 50728 (5.7.28)
Source Host : 101.200.130.134:3306
Source Schema : mallink

Target Server Type : MySQL
Target Server Version : 50728 (5.7.28)
File Encoding : 65001

Date: 29/05/2025 17:32:02
*/

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for wx_vtwo_activity_award
-- ----------------------------
DROP TABLE IF EXISTS `wx_vtwo_activity_award`;
CREATE TABLE `wx_vtwo_activity_award` (
`id` bigint(20) NOT NULL COMMENT '主键ID',
`tenant_id` varchar(5) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '租户ID',
`parent_tenant_id` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '父租户ID',
`activity_id` bigint(20) NOT NULL COMMENT '活动id',
`grade` int(11) NOT NULL COMMENT '奖项等级',
`name` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '奖项名称',
`price` decimal(10, 2) NOT NULL DEFAULT 0.00 COMMENT '奖项价值',
`share_rule` smallint(1) NOT NULL COMMENT '分担规则(0-商管 1-商户 2-分担)',
`mall_share_rate` decimal(10, 2) NULL DEFAULT NULL COMMENT '商管分担比例',
`merchant_share_rate` decimal(10, 2) NULL DEFAULT NULL COMMENT '商户分担比例',
`create_date` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_date` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '线下活动奖项' ROW_FORMAT = DYNAMIC;

-- ----------------------------
-- Table structure for wx_vtwo_activity_grant
-- ----------------------------
DROP TABLE IF EXISTS `wx_vtwo_activity_grant`;
CREATE TABLE `wx_vtwo_activity_grant` (
`id` bigint(20) NOT NULL COMMENT '主键ID',
`tenant_id` varchar(5) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '租户ID',
`parent_tenant_id` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '父租户ID',
`activity_id` bigint(20) NOT NULL COMMENT '活动ID',
`activity_type` smallint(1) NOT NULL,
`activity_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,
`order_money_sum` decimal(10, 2) NOT NULL COMMENT '订单总金额',
`order_count` int(11) NOT NULL COMMENT '订单数量',
`cus_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '客户姓名',
`cus_phone` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '客户电话',
`lottery_num` json NULL COMMENT '抽奖券编码',
`lottery_count` int(11) NULL DEFAULT NULL COMMENT '抽奖券数量',
`anniversary_lottery_num` json NULL COMMENT '周年庆抽奖编码',
`real_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '实际领奖人',
`real_card` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '实际领奖人身份证号',
`remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,
`sign_img` varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '签名图片',
`status` smallint(1) NOT NULL DEFAULT 1,
`create_by` bigint(20) NULL DEFAULT NULL,
`create_date` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_date` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '线下活动发奖' ROW_FORMAT = DYNAMIC;

-- ----------------------------
-- Table structure for wx_vtwo_activity_grant_award
-- ----------------------------
DROP TABLE IF EXISTS `wx_vtwo_activity_grant_award`;
CREATE TABLE `wx_vtwo_activity_grant_award` (
`id` bigint(20) NOT NULL,
`tenant_id` varchar(5) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '租户ID',
`parent_tenant_id` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '父租户ID',
`activity_id` bigint(20) NOT NULL COMMENT '活动id',
`activity_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '活动名称',
`grant_id` bigint(20) NOT NULL COMMENT '发放id',
`order_id` bigint(20) NULL DEFAULT NULL,
`mode_type` smallint(1) NOT NULL COMMENT '金额/联单',
`award_id` bigint(20) NOT NULL COMMENT '奖项id',
`award_grade` int(11) NULL DEFAULT NULL COMMENT '奖项等级',
`award_name` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '奖项名称',
`award_price` decimal(10, 2) NOT NULL COMMENT '奖项价值',
`award_count` int(11) NOT NULL COMMENT '奖项数量',
`grant_price` decimal(10, 2) NOT NULL COMMENT '实际发放价值',
`share_rule` smallint(1) NOT NULL COMMENT '分担规则(0-商管 1-商户 2-分担)',
`mall_share_rate` decimal(10, 2) NULL DEFAULT NULL COMMENT '商管分担比例',
`merchant_share_rate` decimal(10, 2) NULL DEFAULT NULL COMMENT '商户分担比例',
`status` smallint(1) NOT NULL DEFAULT 1,
`create_date` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_date` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '线下活动发放奖励' ROW_FORMAT = DYNAMIC;

-- ----------------------------
-- Table structure for wx_vtwo_activity_grant_export
-- ----------------------------
DROP TABLE IF EXISTS `wx_vtwo_activity_grant_export`;
CREATE TABLE `wx_vtwo_activity_grant_export` (
`id` bigint(20) NOT NULL,
`tenant_id` varchar(5) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '租户ID',
`parent_tenant_id` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '父租户ID',
`activity_id` bigint(20) NOT NULL COMMENT '活动id',
`activity_type` smallint(1) NOT NULL,
`activity_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,
`order_id` bigint(20) NOT NULL COMMENT '订单id',
`order_no` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '订单号',
`order_amount` decimal(10, 2) NULL DEFAULT NULL COMMENT '订单金额',
`merchant_id` bigint(20) NOT NULL COMMENT '商户编号',
`merchant_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,
`merchant_shop_num` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,
`business_id` int(11) NULL DEFAULT NULL COMMENT '业态',
`business_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,
`lottery_num` varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '抽奖券编码',
`lottery_count` int(11) NULL DEFAULT NULL COMMENT '抽奖券数量',
`anniversary_lottery_num` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '周年庆抽奖编码',
`order_create_time` datetime NULL DEFAULT NULL,
`vip_num` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '会员卡号',
`cus_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '客户姓名',
`cus_phone` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '客户电话',
`cus_card` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '身份证号',
`cus_address` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '客户地址',
`legion_id` bigint(11) NULL DEFAULT NULL COMMENT '所属军团',
`legion_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,
`union_id` bigint(11) NULL DEFAULT NULL COMMENT '所属联盟',
`union_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,
`grant_id` bigint(20) NOT NULL COMMENT '发奖id',
`grant_user_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '实际领奖人',
`grant_user_card` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '实际领奖人身份证号',
`grant_remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,
`sign_img` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '签名图片',
`grant_by` bigint(20) NULL DEFAULT NULL COMMENT '发奖人',
`grant_by_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,
`grant_time` datetime NULL DEFAULT NULL COMMENT '发奖时间',
`grant_detail` json NULL COMMENT '发放结算详情',
`grant_price` decimal(10, 2) NULL DEFAULT NULL COMMENT '发放总价值',
`mall_share_price` decimal(10, 2) NULL DEFAULT NULL COMMENT '订单商管承担总金额',
`merchant_share_price` decimal(10, 2) NULL DEFAULT NULL COMMENT '订单商户承担总金额',
`mall_share_rate` decimal(10, 2) NULL DEFAULT NULL COMMENT '商管承担比率',
`merchant_share_rate` decimal(10, 2) NULL DEFAULT NULL COMMENT '商户承担比率',
`tax_amount` decimal(10, 2) NOT NULL DEFAULT 0.00 COMMENT '税点金额',
`status` smallint(1) NOT NULL DEFAULT 1,
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '线下活动发放奖励导出' ROW_FORMAT = DYNAMIC;

-- ----------------------------
-- Table structure for wx_vtwo_activity_grant_order
-- ----------------------------
DROP TABLE IF EXISTS `wx_vtwo_activity_grant_order`;
CREATE TABLE `wx_vtwo_activity_grant_order` (
`id` bigint(20) NOT NULL,
`tenant_id` varchar(5) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '租户ID',
`parent_tenant_id` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '父租户ID',
`grant_id` bigint(20) NOT NULL COMMENT '发放id',
`activity_id` bigint(20) NOT NULL COMMENT '活动id',
`order_id` bigint(20) NOT NULL COMMENT '订单id',
`is_amount` smallint(1) NOT NULL COMMENT '是否参与总金额计算',
`status` smallint(1) NOT NULL DEFAULT 1,
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '线下活动发奖订单' ROW_FORMAT = DYNAMIC;

-- ----------------------------
-- Table structure for wx_vtwo_activity_grant_settlement
-- ----------------------------
DROP TABLE IF EXISTS `wx_vtwo_activity_grant_settlement`;
CREATE TABLE `wx_vtwo_activity_grant_settlement` (
`id` bigint(20) NOT NULL,
`tenant_id` varchar(5) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '租户ID',
`parent_tenant_id` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '父租户ID',
`activity_id` bigint(20) NOT NULL COMMENT '活动id',
`grant_id` bigint(20) NOT NULL COMMENT '发奖id',
`grant_award_id` bigint(20) NOT NULL COMMENT '发放奖励记录id',
`award_id` bigint(20) NOT NULL COMMENT '奖项id',
`grant_price` decimal(10, 2) NOT NULL COMMENT '发放总价值',
`order_id` bigint(20) NOT NULL COMMENT '订单id',
`order_no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '订单编号',
`order_amount` decimal(10, 2) NULL DEFAULT NULL COMMENT '订单金额',
`merchant_id` bigint(20) NOT NULL COMMENT '商户id',
`order_ratio` decimal(10, 2) NULL DEFAULT NULL COMMENT '订单占比',
`order_grant_price` decimal(10, 2) NULL DEFAULT NULL COMMENT '订单发放总价值',
`mall_share_rate` decimal(10, 2) NULL DEFAULT NULL COMMENT '商管承担比率',
`merchant_share_rate` decimal(10, 2) NULL DEFAULT NULL COMMENT '商户承担比率',
`order_mall_share_price` decimal(10, 2) NULL DEFAULT NULL COMMENT '订单商管承担总金额',
`order_merchant_share_price` decimal(10, 2) NULL DEFAULT NULL COMMENT '订单商户承担总金额',
`tax_amount` decimal(10, 2) NOT NULL DEFAULT 0.00 COMMENT '税点金额',
`status` smallint(1) NOT NULL DEFAULT 1,
`create_date` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_date` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '线下活动发放奖励结算' ROW_FORMAT = DYNAMIC;

-- ----------------------------
-- Table structure for wx_vtwo_activity_merchant
-- ----------------------------
DROP TABLE IF EXISTS `wx_vtwo_activity_merchant`;
CREATE TABLE `wx_vtwo_activity_merchant` (
`id` bigint(20) NOT NULL COMMENT '主键ID',
`tenant_id` varchar(5) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '租户ID',
`parent_tenant_id` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '父租户ID',
`activity_id` bigint(20) NOT NULL COMMENT '活动ID',
`merchant_id` bigint(20) NOT NULL COMMENT '商户ID',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '线下活动商户' ROW_FORMAT = DYNAMIC;

-- ----------------------------
-- Table structure for wx_vtwo_activity_order
-- ----------------------------
DROP TABLE IF EXISTS `wx_vtwo_activity_order`;
CREATE TABLE `wx_vtwo_activity_order` (
`id` bigint(20) NOT NULL COMMENT '主键ID',
`tenant_id` varchar(5) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '租户ID',
`parent_tenant_id` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '父租户ID',
`from_user_id` bigint(20) NULL DEFAULT NULL COMMENT '来源用户ID',
`vip_num` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '会员卡号',
`cus_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '客户姓名',
`real_cus_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,
`cus_phone` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '客户电话',
`cus_card` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '身份证号',
`cus_address` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '客户地址',
`legion_id` bigint(11) NULL DEFAULT NULL COMMENT '所属军团',
`legion_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,
`union_id` bigint(11) NULL DEFAULT NULL COMMENT '所属联盟',
`union_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,
`from_order_id` bigint(20) NULL DEFAULT 0 COMMENT '来源订单ID',
`order_no` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '订单号',
`order_money` decimal(10, 2) NULL DEFAULT NULL COMMENT '订单金额',
`merchant_id` bigint(20) NOT NULL COMMENT '商户编号',
`business_id` int(11) NULL DEFAULT NULL COMMENT '业态',
`lottery_num` json NULL COMMENT '抽奖券编码',
`lottery_count` int(11) NULL DEFAULT NULL COMMENT '抽奖券数量',
`anniversary_lottery_num` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '周年庆抽奖编码',
`audit_status` int(1) NOT NULL DEFAULT 0 COMMENT '审批状态',
`audit_remark` varchar(300) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '审批意见',
`audit_by` bigint(20) NULL DEFAULT NULL COMMENT '审核人',
`audit_time` datetime NULL DEFAULT NULL COMMENT '审核时间',
`increased_points` int(11) NOT NULL DEFAULT 0 COMMENT '积分变动值',
`create_by` bigint(11) NULL DEFAULT NULL,
`create_date` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_date` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '线下活动参与登记' ROW_FORMAT = DYNAMIC;

-- ----------------------------
-- Table structure for wx_vtwo_activity_special_topic
-- ----------------------------
DROP TABLE IF EXISTS `wx_vtwo_activity_special_topic`;
CREATE TABLE `wx_vtwo_activity_special_topic` (
`id` bigint(20) NOT NULL COMMENT '主键ID',
`tenant_id` varchar(5) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '租户ID',
`parent_tenant_id` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '父租户ID',
`name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '专题名称',
`start_time` datetime NULL DEFAULT NULL COMMENT '开始时间',
`end_time` datetime NULL DEFAULT NULL COMMENT '结束时间',
`credit_on_off` smallint(1) NOT NULL DEFAULT 0 COMMENT '积分开关',
`credit_config` json NULL COMMENT '积分配置',
`status` smallint(2) NOT NULL DEFAULT 0 COMMENT '状态',
`create_date` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_date` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '线下活动专题' ROW_FORMAT = DYNAMIC;

-- ----------------------------
-- Table structure for wx_vtwo_amount_gift_activity
-- ----------------------------
DROP TABLE IF EXISTS `wx_vtwo_amount_gift_activity`;
CREATE TABLE `wx_vtwo_amount_gift_activity` (
`id` bigint(20) NOT NULL COMMENT '主键ID',
`tenant_id` varchar(5) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '租户ID',
`parent_tenant_id` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '父租户ID',
`name` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '活动名称',
`start_time` datetime NULL DEFAULT NULL COMMENT '开始时间',
`end_time` datetime NULL DEFAULT NULL COMMENT '结束时间',
`amount_model` smallint(1) NOT NULL COMMENT '计算模式',
`business_order_limit` int(11) NULL DEFAULT NULL COMMENT '业态订单数量限制',
`amount_rules` json NULL,
`related_model` smallint(1) NOT NULL COMMENT '联单模式',
`related_rules` json NULL,
`awards_count` int(11) NULL DEFAULT NULL COMMENT '礼品总数量',
`merchant_rule` smallint(1) NULL DEFAULT NULL COMMENT '商户规则',
`status` smallint(2) NULL DEFAULT NULL COMMENT '活动状态',
`create_date` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_date` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '线下满额赠礼活动' ROW_FORMAT = DYNAMIC;

-- ----------------------------
-- Table structure for wx_vtwo_cash_back_activity
-- ----------------------------
DROP TABLE IF EXISTS `wx_vtwo_cash_back_activity`;
CREATE TABLE `wx_vtwo_cash_back_activity` (
`id` bigint(20) NOT NULL COMMENT '主键ID',
`tenant_id` varchar(5) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '租户ID',
`parent_tenant_id` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '父租户ID',
`name` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '活动名称',
`start_time` datetime NULL DEFAULT NULL COMMENT '开始时间',
`end_time` datetime NULL DEFAULT NULL COMMENT '结束时间',
`amount_model` smallint(1) NOT NULL COMMENT '计算模式',
`business_order_limit` int(11) NULL DEFAULT NULL COMMENT '业态订单数量限制',
`related_model` smallint(1) NOT NULL COMMENT '联单模式',
`cash_back_limit` decimal(10, 2) NULL DEFAULT NULL COMMENT '返现总金额限制',
`cash_back_rule` smallint(1) NULL DEFAULT NULL COMMENT '返现计算规则',
`tax_deduction_rules` json NULL COMMENT '扣税规则',
`merchant_rule` smallint(1) NULL DEFAULT NULL COMMENT '商户规则',
`status` smallint(2) NULL DEFAULT NULL COMMENT '活动状态',
`create_date` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_date` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '线下返现活动' ROW_FORMAT = DYNAMIC;

-- ----------------------------
-- Table structure for wx_vtwo_cash_back_award
-- ----------------------------
DROP TABLE IF EXISTS `wx_vtwo_cash_back_award`;
CREATE TABLE `wx_vtwo_cash_back_award` (
`id` bigint(20) NOT NULL COMMENT '主键ID',
`tenant_id` varchar(5) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '租户ID',
`parent_tenant_id` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '父租户ID',
`activity_id` bigint(20) NOT NULL COMMENT '活动id',
`model_type` smallint(1) NOT NULL COMMENT '金额/联单',
`min_amount` decimal(10, 2) NULL DEFAULT NULL COMMENT '限制最小金额',
`max_amount` decimal(10, 2) NULL DEFAULT NULL COMMENT '限制最大金额',
`related_count` int(11) NULL DEFAULT NULL COMMENT '联单笔数',
`name` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '奖品名称',
`cash_back_ratio` decimal(10, 2) NOT NULL COMMENT '返现比例',
`cash_back_limit` decimal(10, 2) NULL DEFAULT NULL COMMENT '返现金额限制',
`share_rule` smallint(1) NOT NULL COMMENT '分担规则(0-商管 1-商户 2-分担)',
`mall_share_rate` decimal(10, 2) NULL DEFAULT NULL COMMENT '商管分担比例',
`merchant_share_rate` decimal(10, 2) NULL DEFAULT NULL COMMENT '商户分担比例',
`create_date` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_date` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '线下返现活动奖项' ROW_FORMAT = DYNAMIC;

-- ----------------------------
-- Table structure for wx_vtwo_cash_back_grant
-- ----------------------------
DROP TABLE IF EXISTS `wx_vtwo_cash_back_grant`;
CREATE TABLE `wx_vtwo_cash_back_grant` (
`id` bigint(20) NOT NULL COMMENT '主键ID',
`tenant_id` varchar(5) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '租户ID',
`parent_tenant_id` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '父租户ID',
`activity_id` bigint(20) NOT NULL COMMENT '活动ID',
`activity_type` smallint(1) NOT NULL,
`activity_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,
`order_money_sum` decimal(10, 2) NOT NULL COMMENT '订单总金额',
`order_count` int(11) NOT NULL COMMENT '订单数量',
`cus_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '客户姓名',
`cus_phone` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '客户电话',
`lottery_num` json NULL COMMENT '抽奖券编码',
`lottery_count` int(11) NULL DEFAULT NULL COMMENT '抽奖券数量',
`anniversary_lottery_num` json NULL COMMENT '周年庆抽奖编码',
`real_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '实际领奖人',
`real_card` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '实际领奖人身份证号',
`cash_back_limit` decimal(10, 2) NULL DEFAULT NULL COMMENT '返现金额限制',
`cash_back` decimal(10, 2) NULL DEFAULT NULL COMMENT '返现金额',
`tax_deduction_rules` json NULL COMMENT '扣税规则',
`tax_amount` decimal(10, 2) NULL DEFAULT NULL COMMENT '税点金额',
`remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,
`sign_img` varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '签名图片',
`status` smallint(1) NOT NULL DEFAULT 1,
`create_by` bigint(20) NULL DEFAULT NULL,
`create_date` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_date` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '线下返现活动发奖' ROW_FORMAT = DYNAMIC;

-- ----------------------------
-- Table structure for wx_vtwo_cash_back_grant_award
-- ----------------------------
DROP TABLE IF EXISTS `wx_vtwo_cash_back_grant_award`;
CREATE TABLE `wx_vtwo_cash_back_grant_award` (
`id` bigint(20) NOT NULL,
`tenant_id` varchar(5) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '租户ID',
`parent_tenant_id` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '父租户ID',
`activity_id` bigint(20) NOT NULL COMMENT '活动id',
`activity_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '活动名称',
`grant_id` bigint(20) NOT NULL COMMENT '发放id',
`order_id` bigint(20) NULL DEFAULT NULL,
`order_amount` decimal(10, 2) NOT NULL COMMENT '订单金额/总金额',
`mode_type` smallint(1) NOT NULL COMMENT '金额/联单',
`min_amount` decimal(10, 2) NULL DEFAULT NULL COMMENT '奖项限制最小金额',
`max_amount` decimal(10, 2) NULL DEFAULT NULL COMMENT '奖项限制最大金额',
`related_count` int(11) NULL DEFAULT NULL COMMENT '联单笔数',
`award_id` bigint(20) NOT NULL COMMENT '奖项id',
`award_name` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '奖项名称',
`cash_back_ratio` decimal(10, 2) NULL DEFAULT NULL COMMENT '返现比例',
`cash_back_rule` smallint(1) NULL DEFAULT NULL COMMENT '返现计算规则',
`cash_back` decimal(10, 2) NOT NULL COMMENT '返现金额',
`share_rule` smallint(1) NOT NULL COMMENT '分担规则(0-商管 1-商户 2-分担)',
`mall_share_rate` decimal(10, 2) NULL DEFAULT NULL COMMENT '商管分担比例',
`merchant_share_rate` decimal(10, 2) NULL DEFAULT NULL COMMENT '商户分担比例',
`tax_deduction_rules` json NULL COMMENT '扣税规则',
`tax_amount` decimal(10, 2) NOT NULL DEFAULT 0.00 COMMENT '税点金额',
`status` smallint(1) NOT NULL DEFAULT 1,
`create_date` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_date` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '线下返现活动发放奖励' ROW_FORMAT = DYNAMIC;

-- ----------------------------
-- Table structure for wx_vtwo_prize_draw_activity
-- ----------------------------
DROP TABLE IF EXISTS `wx_vtwo_prize_draw_activity`;
CREATE TABLE `wx_vtwo_prize_draw_activity` (
`id` bigint(20) NOT NULL COMMENT '主键ID',
`tenant_id` varchar(5) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '租户ID',
`parent_tenant_id` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '父租户ID',
`name` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '活动名称',
`start_time` datetime NULL DEFAULT NULL COMMENT '开始时间',
`end_time` datetime NULL DEFAULT NULL COMMENT '结束时间',
`amount_model` smallint(1) NOT NULL COMMENT '计算模式',
`business_order_limit` int(11) NULL DEFAULT NULL COMMENT '业态订单数量限制',
`amount_rules` json NULL,
`related_model` smallint(1) NOT NULL COMMENT '联单模式',
`related_rules` json NULL,
`awards_limit` int(11) NULL DEFAULT NULL COMMENT '奖项数量限制',
`awards_count` int(11) NULL DEFAULT NULL COMMENT '奖项总数量',
`merchant_rule` smallint(1) NULL DEFAULT NULL COMMENT '商户规则',
`status` smallint(2) NULL DEFAULT NULL COMMENT '活动状态',
`create_date` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_date` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '线下抽奖活动' ROW_FORMAT = DYNAMIC;

-- ----------------------------
-- Table structure for wx_vtwo_special_topic_activity
-- ----------------------------
DROP TABLE IF EXISTS `wx_vtwo_special_topic_activity`;
CREATE TABLE `wx_vtwo_special_topic_activity` (
`id` bigint(20) NOT NULL COMMENT '主键ID',
`tenant_id` varchar(5) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '租户ID',
`parent_tenant_id` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '父租户ID',
`special_topic_id` bigint(20) NOT NULL COMMENT '专题ID',
`activity_id` bigint(20) NOT NULL COMMENT '活动ID',
`activity_type` smallint(1) NOT NULL COMMENT '活动类型',
`activity_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '活动名称',
`activity_create_date` datetime NULL DEFAULT NULL,
`activity_start_time` datetime NULL DEFAULT NULL COMMENT '开始时间',
`activity_end_time` datetime NULL DEFAULT NULL COMMENT '结束时间',
`activity_status` smallint(2) NOT NULL DEFAULT 0 COMMENT '活动状态',
`create_date` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_date` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '线下专题下的活动' ROW_FORMAT = DYNAMIC;

SET FOREIGN_KEY_CHECKS = 1;

+ 0
- 1
mallinkBApi/src/main/java/com/iformall/controller/WxLegionActivityController.java Просмотреть файл

@@ -15,7 +15,6 @@ import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import jodd.util.StringUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;


+ 3
- 3
mallinkBApi/src/main/java/com/iformall/controller/WxLegionActivityOrderController.java Просмотреть файл

@@ -17,7 +17,7 @@ import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import jodd.util.StringUtil;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@@ -64,7 +64,7 @@ public class WxLegionActivityOrderController extends BaseController {
if(wxLegionActivityOrder.getActivityId() == null){
return new ResultData(Result.ERROR,"活动ID不能为空");
}
if(StringUtil.isBlank(wxLegionActivityOrder.getOrderNo())){
if(StringUtils.isBlank(wxLegionActivityOrder.getOrderNo())){
return new ResultData(Result.ERROR,"订单号不能为空");
}
if (null == wxLegionActivityOrder.getOrderMoney() ) {
@@ -73,7 +73,7 @@ public class WxLegionActivityOrderController extends BaseController {
if(wxLegionActivityOrder.getCusId() == null){
return new ResultData(Result.ERROR,"未查询到用户,请先进行VIP卡绑定");
}
if(StringUtil.isBlank(wxLegionActivityOrder.getCusPhone())){
if(StringUtils.isBlank(wxLegionActivityOrder.getCusPhone())){
return new ResultData(Result.ERROR,"客户手机号不能为空");
}
TenantEntity tenantEntity = getTenantInfo();


+ 4
- 4
mallinkBApi/src/main/java/com/iformall/controller/WxLegionActivityUserController.java Просмотреть файл

@@ -18,7 +18,7 @@ import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import jodd.util.StringUtil;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@@ -66,10 +66,10 @@ public class WxLegionActivityUserController extends BaseController {
if(wxLegionActivityUser.getActivityId() == null){
return new ResultData(Result.ERROR,"活动ID不能为空");
}
if(StringUtil.isBlank(wxLegionActivityUser.getPhone())){
if(StringUtils.isBlank(wxLegionActivityUser.getPhone())){
return new ResultData(Result.ERROR,"客户手机号不能为空");
}
if(StringUtil.isBlank(wxLegionActivityUser.getVipNum())){
if(StringUtils.isBlank(wxLegionActivityUser.getVipNum())){
return new ResultData(Result.ERROR,"vip卡号不能为空");
}
TenantEntity tenantEntity = getTenantInfo();
@@ -122,7 +122,7 @@ public class WxLegionActivityUserController extends BaseController {
if(wxLegionActivityUser.getActivityId() == null){
return new ResultData(Result.ERROR,"活动ID不能为空");
}
if(StringUtil.isBlank(wxLegionActivityUser.getPhone())){
if(StringUtils.isBlank(wxLegionActivityUser.getPhone())){
return new ResultData(Result.ERROR,"客户手机号不能为空");
}
TenantEntity tenantInfo = getTenantInfo();


+ 101
- 101
mallinkBApi/src/main/java/com/iformall/controller/WxOfflineActivityRecordController.java Просмотреть файл

@@ -1,101 +1,101 @@
package com.iformall.controller;
import com.github.pagehelper.PageInfo;
import com.iformall.common.Result;
import com.iformall.common.ResultData;
import com.iformall.domain.po.WxOfflineActivityRecord;
import com.iformall.domain.po.base.BaseEntity.SortField;
import com.iformall.domain.po.base.TenantEntity;
import com.iformall.enums.EnumOfflineActivityRecordStatus;
import com.iformall.exception.MallinkException;
import com.iformall.service.*;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import jodd.util.StringUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.Map;
/**
* @author alascor
*
*/
@RestController
@RequestMapping("/api/offlineRecord")
@Api(description = "线下活动登记相关接口")
public class WxOfflineActivityRecordController extends BaseController {
private final Logger logger = LoggerFactory.getLogger(this.getClass());
@Autowired
private WxOfflineActivityRecordService wxOfflineActivityRecordService;
@ApiOperation("分页列表接口")
@GetMapping("list")
@ApiImplicitParams({
@ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true),
@ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true)})
public ResultData list(@ModelAttribute WxOfflineActivityRecord wxOfflineActivityRecord, Integer pageNum, Integer pageSize) {
if (null == wxOfflineActivityRecord) wxOfflineActivityRecord = new WxOfflineActivityRecord();
TenantEntity tenantInfo = getTenantInfo();
wxOfflineActivityRecord.updateTenantInfo(tenantInfo);
wxOfflineActivityRecord.setSortColumns(SortField.CreateDate_DESC);
wxOfflineActivityRecord.setMerchantId(getLoginBUser().getMerchantId());
final PageInfo<WxOfflineActivityRecord> page = wxOfflineActivityRecordService.listAsPage(wxOfflineActivityRecord, pageNum, pageSize);
return new ResultData(page);
}
@ApiOperation("新增修改接口")
@PostMapping("saveOrUpdate")
public ResultData saveOrUpdate(@RequestBody WxOfflineActivityRecord wxOfflineActivityRecord) {
if(StringUtil.isBlank(wxOfflineActivityRecord.getCusPhone())){
return new ResultData(Result.ERROR,"客户手机号不能为空");
}
if (null == wxOfflineActivityRecord.getOrderMoney() ) {
return new ResultData(Result.ERROR,"订单金额不能为空");
}
TenantEntity tenantEntity = getTenantInfo();
wxOfflineActivityRecord.updateTenantInfo(tenantEntity);
if(wxOfflineActivityRecord.getId() != null){
WxOfflineActivityRecord record = wxOfflineActivityRecordService.getById(wxOfflineActivityRecord.getId(),wxOfflineActivityRecord.getTenantId());
if(!EnumOfflineActivityRecordStatus.AUDT_FAIL.getCode().equals(record.getAuditStatus())){
throw new MallinkException(Result.ERROR,"订单状态不允许修改");
}
wxOfflineActivityRecord.setAuditRemark("");
}
wxOfflineActivityRecord.setCreateBy(getMerchantBUserId());
wxOfflineActivityRecord.setMerchantId(getLoginBUser().getMerchantId());
wxOfflineActivityRecord.setAuditStatus(EnumOfflineActivityRecordStatus.AUDTING.getCode());
wxOfflineActivityRecordService.saveOrUpdate(wxOfflineActivityRecord);
return new ResultData();
}
@ApiOperation("查询当前信息详情")
@GetMapping("getInfoById")
@ApiImplicitParams({
@ApiImplicitParam(name = "id", value = "主键id", dataType = "Long", paramType = "query", required = true)})
public ResultData getInfoById(Long id) {
TenantEntity tenantInfo = getTenantInfo();
WxOfflineActivityRecord activity = wxOfflineActivityRecordService.getById(id, tenantInfo.getTenantId());
return new ResultData(activity);
}
@ApiOperation("查询当前信息统计")
@GetMapping("statistics")
public ResultData statisticsCount(@ModelAttribute WxOfflineActivityRecord wxOfflineActivityRecord) {
TenantEntity tenantInfo = getTenantInfo();
wxOfflineActivityRecord.updateTenantInfo(tenantInfo);
wxOfflineActivityRecord.setMerchantId(getLoginBUser().getMerchantId());
Map<String,Integer> statisticsMap = wxOfflineActivityRecordService.getStatistics(wxOfflineActivityRecord);
return new ResultData(statisticsMap);
}
}
//package com.iformall.controller;
//
//import com.github.pagehelper.PageInfo;
//import com.iformall.common.Result;
//import com.iformall.common.ResultData;
//import com.iformall.domain.po.WxOfflineActivityRecord;
//import com.iformall.domain.po.base.BaseEntity.SortField;
//import com.iformall.domain.po.base.TenantEntity;
//import com.iformall.enums.EnumOfflineActivityRecordStatus;
//import com.iformall.exception.MallinkException;
//import com.iformall.service.*;
//import io.swagger.annotations.Api;
//import io.swagger.annotations.ApiImplicitParam;
//import io.swagger.annotations.ApiImplicitParams;
//import io.swagger.annotations.ApiOperation;
//import org.apache.commons.lang3.StringUtils;
//import org.slf4j.Logger;
//import org.slf4j.LoggerFactory;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.web.bind.annotation.*;
//
//import java.util.Map;
//
///**
// * @author alascor
// *
// */
//@RestController
//@RequestMapping("/api/offlineRecord")
//@Api(description = "线下活动登记相关接口")
//public class WxOfflineActivityRecordController extends BaseController {
// private final Logger logger = LoggerFactory.getLogger(this.getClass());
//
// @Autowired
// private WxOfflineActivityRecordService wxOfflineActivityRecordService;
//
//
// @ApiOperation("分页列表接口")
// @GetMapping("list")
// @ApiImplicitParams({
// @ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true),
// @ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true)})
// public ResultData list(@ModelAttribute WxOfflineActivityRecord wxOfflineActivityRecord, Integer pageNum, Integer pageSize) {
// if (null == wxOfflineActivityRecord) wxOfflineActivityRecord = new WxOfflineActivityRecord();
// TenantEntity tenantInfo = getTenantInfo();
// wxOfflineActivityRecord.updateTenantInfo(tenantInfo);
// wxOfflineActivityRecord.setSortColumns(SortField.CreateDate_DESC);
// wxOfflineActivityRecord.setMerchantId(getLoginBUser().getMerchantId());
// final PageInfo<WxOfflineActivityRecord> page = wxOfflineActivityRecordService.listAsPage(wxOfflineActivityRecord, pageNum, pageSize);
// return new ResultData(page);
// }
//
// @ApiOperation("新增修改接口")
// @PostMapping("saveOrUpdate")
// public ResultData saveOrUpdate(@RequestBody WxOfflineActivityRecord wxOfflineActivityRecord) {
// if(StringUtils.isBlank(wxOfflineActivityRecord.getCusPhone())){
// return new ResultData(Result.ERROR,"客户手机号不能为空");
// }
// if (null == wxOfflineActivityRecord.getOrderMoney() ) {
// return new ResultData(Result.ERROR,"订单金额不能为空");
// }
// TenantEntity tenantEntity = getTenantInfo();
// wxOfflineActivityRecord.updateTenantInfo(tenantEntity);
//
// if(wxOfflineActivityRecord.getId() != null){
// WxOfflineActivityRecord record = wxOfflineActivityRecordService.getById(wxOfflineActivityRecord.getId(),wxOfflineActivityRecord.getTenantId());
// if(!EnumOfflineActivityRecordStatus.AUDT_FAIL.getCode().equals(record.getAuditStatus())){
// throw new MallinkException(Result.ERROR,"订单状态不允许修改");
// }
// wxOfflineActivityRecord.setAuditRemark("");
// }
// wxOfflineActivityRecord.setCreateBy(getMerchantBUserId());
// wxOfflineActivityRecord.setMerchantId(getLoginBUser().getMerchantId());
// wxOfflineActivityRecord.setAuditStatus(EnumOfflineActivityRecordStatus.AUDTING.getCode());
// wxOfflineActivityRecordService.saveOrUpdate(wxOfflineActivityRecord);
// return new ResultData();
// }
//
// @ApiOperation("查询当前信息详情")
// @GetMapping("getInfoById")
// @ApiImplicitParams({
// @ApiImplicitParam(name = "id", value = "主键id", dataType = "Long", paramType = "query", required = true)})
// public ResultData getInfoById(Long id) {
// TenantEntity tenantInfo = getTenantInfo();
// WxOfflineActivityRecord activity = wxOfflineActivityRecordService.getById(id, tenantInfo.getTenantId());
// return new ResultData(activity);
// }
//
// @ApiOperation("查询当前信息统计")
// @GetMapping("statistics")
// public ResultData statisticsCount(@ModelAttribute WxOfflineActivityRecord wxOfflineActivityRecord) {
// TenantEntity tenantInfo = getTenantInfo();
// wxOfflineActivityRecord.updateTenantInfo(tenantInfo);
// wxOfflineActivityRecord.setMerchantId(getLoginBUser().getMerchantId());
// Map<String,Integer> statisticsMap = wxOfflineActivityRecordService.getStatistics(wxOfflineActivityRecord);
// return new ResultData(statisticsMap);
// }
//
//
//
//}

+ 106
- 0
mallinkBApi/src/main/java/com/iformall/controller/WxVtwoActivityOrderController.java Просмотреть файл

@@ -0,0 +1,106 @@
package com.iformall.controller;

import com.github.pagehelper.PageInfo;
import com.iformall.annotation.ApiVersion;
import com.iformall.common.Result;
import com.iformall.common.ResultData;
import com.iformall.constant.SwaggerConstant;
import com.iformall.domain.po.WxVtwoActivityOrder;
import com.iformall.domain.po.base.BaseEntity.SortField;
import com.iformall.domain.po.base.TenantEntity;
import com.iformall.enums.EnumOfflineActivityRecordStatus;
import com.iformall.exception.MallinkException;
import com.iformall.service.WxVtwoActivityOrderService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.Map;

/**
* @author alascor
*
*/
@RestController
@RequestMapping("/api/offlineRecord")
@Api(description = "线下活动订单相关接口")
public class WxVtwoActivityOrderController extends BaseController {
private final Logger logger = LoggerFactory.getLogger(this.getClass());

@Autowired
private WxVtwoActivityOrderService wxVtwoActivityOrderService;

@ApiVersion(group = SwaggerConstant.V_A_2_0)
@ApiOperation("分页列表接口")
@GetMapping("list")
@ApiImplicitParams({
@ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true),
@ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true)})
public ResultData list(@ModelAttribute WxVtwoActivityOrder activityOrder, Integer pageNum, Integer pageSize) {
if (null == activityOrder) activityOrder = new WxVtwoActivityOrder();
TenantEntity tenantInfo = getTenantInfo();
activityOrder.updateTenantInfo(tenantInfo);
activityOrder.setSortColumns(SortField.CreateDate_DESC);
activityOrder.setMerchantId(getLoginBUser().getMerchantId());
final PageInfo<WxVtwoActivityOrder> page = wxVtwoActivityOrderService.listAsPage(activityOrder, pageNum, pageSize);
return new ResultData(page);
}

@ApiVersion(group = SwaggerConstant.V_A_2_0)
@ApiOperation("新增修改接口")
@PostMapping("saveOrUpdate")
public ResultData saveOrUpdate(@RequestBody WxVtwoActivityOrder activityOrder) {
if(StringUtils.isBlank(activityOrder.getCusPhone())){
return new ResultData(Result.ERROR,"客户手机号不能为空");
}
if (null == activityOrder.getOrderMoney() ) {
return new ResultData(Result.ERROR,"订单金额不能为空");
}
TenantEntity tenantEntity = getTenantInfo();
activityOrder.updateTenantInfo(tenantEntity);

if(activityOrder.getId() != null){
WxVtwoActivityOrder record = wxVtwoActivityOrderService.getById(activityOrder.getId(),activityOrder.getTenantId());
if(!EnumOfflineActivityRecordStatus.AUDT_FAIL.getCode().equals(record.getAuditStatus())){
throw new MallinkException(Result.ERROR,"订单状态不允许修改");
}
activityOrder.setAuditRemark("");
}
activityOrder.setCreateBy(getMerchantBUserId());
activityOrder.setMerchantId(getLoginBUser().getMerchantId());
activityOrder.setAuditStatus(EnumOfflineActivityRecordStatus.AUDTING.getCode());
wxVtwoActivityOrderService.saveOrUpdate(activityOrder);
return new ResultData();
}

@ApiVersion(group = SwaggerConstant.V_A_2_0)
@ApiOperation("查询当前信息详情")
@GetMapping("getInfoById")
@ApiImplicitParams({
@ApiImplicitParam(name = "id", value = "主键id", dataType = "Long", paramType = "query", required = true)})
public ResultData getInfoById(Long id) {
TenantEntity tenantInfo = getTenantInfo();
WxVtwoActivityOrder activityOrder = wxVtwoActivityOrderService.getById(id, tenantInfo.getTenantId());
return new ResultData(activityOrder);
}

@ApiVersion(group = SwaggerConstant.V_A_2_0)
@ApiOperation("查询当前信息统计")
@GetMapping("statistics")
public ResultData statisticsCount(@ModelAttribute WxVtwoActivityOrder activityOrder) {
TenantEntity tenantInfo = getTenantInfo();
activityOrder.updateTenantInfo(tenantInfo);
activityOrder.setMerchantId(getLoginBUser().getMerchantId());
Map<String,Object> statisticsMap = wxVtwoActivityOrderService.getStatistics(activityOrder);
return new ResultData(statisticsMap);
}

}

+ 60
- 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;
@@ -7,6 +9,9 @@ import com.baomidou.mybatisplus.annotation.TableName;
import com.iformall.domain.po.base.TenantEntity;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

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

/**
@@ -28,6 +33,9 @@ public class WxVtwoActivityGrant extends TenantEntity {
@TableField(value = "activity_id")
private Long activityId;

@TableField(value = "activity_type")
private Integer activityType;

/**
*
*/
@@ -63,6 +71,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;
}

/**
* 抽奖券数量
@@ -75,6 +95,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;
}

/**
* 实际领奖人
@@ -111,6 +143,8 @@ public class WxVtwoActivityGrant extends TenantEntity {
*/
@TableField(value = "create_by")
private Long createBy;
@TableField(exist = false)
private String createByName;

/**
* 创建时间
@@ -118,9 +152,35 @@ public class WxVtwoActivityGrant extends TenantEntity {
@TableField(value = "create_date")
private Date createDate;

@TableField(exist = false)
private Date createDateBegin;
@TableField(exist = false)
private Date createDateEnd;

/**
* 更新时间
*/
@TableField(value = "update_date")
private Date updateDate;

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

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

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

@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;
}

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

@@ -16,6 +16,10 @@ import lombok.Data;
@TableName(value ="wx_vtwo_activity_grant_award")
@Data
public class WxVtwoActivityGrantAward extends TenantEntity {

@TableField(exist = false)
private String name;

/**
*
*/
@@ -46,36 +50,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 +95,8 @@ public class WxVtwoActivityGrantAward extends TenantEntity {
/**
* 分担规则(0-商管 1-商户 2-分担)
*/
@TableField(value = "money_rule")
private Integer moneyRule;
@TableField(value = "share_rule")
private Integer shareRule;

/**
* 商管分担比例
@@ -142,6 +122,11 @@ public class WxVtwoActivityGrantAward extends TenantEntity {
@TableField(value = "create_date")
private Date createDate;

@TableField(exist = false)
private Date createDateBegin;
@TableField(exist = false)
private Date createDateEnd;

/**
* 更新时间
*/


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

@@ -28,6 +28,15 @@ public class WxVtwoActivityGrantExport extends TenantEntity {
@TableField(value = "activity_id")
private Long activityId;

/**
*
*/
@TableField(value = "activity_type")
private Integer activityType;

@TableField(value = "activity_name")
private String activityName;

/**
* 订单id
*/
@@ -103,31 +112,31 @@ public class WxVtwoActivityGrantExport extends TenantEntity {
/**
* 审批状态
*/
@TableField(value = "order_audit_status")
@TableField(exist = false)
private Integer orderAuditStatus;

/**
* 审核人
*/
@TableField(value = "order_audit_by")
@TableField(exist = false)
private Long orderAuditBy;

/**
*
*/
@TableField(value = "order_audit_name")
@TableField(exist = false)
private String orderAuditName;

/**
* 审批意见
*/
@TableField(value = "order_audit_remark")
@TableField(exist = false)
private String orderAuditRemark;

/**
* 审核时间
*/
@TableField(value = "order_audit_time")
@TableField(exist = false)
private Date orderAuditTime;

/**


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

@@ -26,6 +26,12 @@ public class WxVtwoActivityGrantOrder extends TenantEntity {
@TableField(value = "grant_id")
private Long grantId;

/**
* 活动id
*/
@TableField(value = "activity_id")
private Long activityId;

/**
* 订单id
*/


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

@@ -7,6 +7,8 @@ import com.baomidou.mybatisplus.annotation.TableName;
import com.iformall.domain.po.base.TenantEntity;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

import lombok.Data;

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

@TableField(exist = false)
private Integer awardCount;

/**
* 发放总价值
*/
@@ -130,9 +135,23 @@ public class WxVtwoActivityGrantSettlement extends TenantEntity {
@TableField(value = "create_date")
private Date createDate;

@TableField(exist = false)
private Date createDateBegin;
@TableField(exist = false)
private Date createDateEnd;

/**
* 更新时间
*/
@TableField(value = "update_date")
private Date updateDate;

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

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

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

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

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

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.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
@@ -34,12 +36,14 @@ public class WxVtwoActivityOrder extends TenantEntity {
/**
* 会员卡号
*/
@Excel(name = "Vip卡号", width = 20, orderNum = "17")
@TableField(value = "vip_num")
private String vipNum;

/**
* 客户姓名
*/
@Excel(name = "客户姓名", width = 20, orderNum = "15")
@TableField(value = "cus_name")
private String cusName;

@@ -52,6 +56,7 @@ public class WxVtwoActivityOrder extends TenantEntity {
/**
* 客户电话
*/
@Excel(name = "客户电话", width = 20, orderNum = "16")
@TableField(value = "cus_phone")
private String cusPhone;

@@ -64,6 +69,7 @@ public class WxVtwoActivityOrder extends TenantEntity {
/**
* 客户地址
*/
@Excel(name = "订单地址", width = 20, orderNum = "4")
@TableField(value = "cus_address")
private String cusAddress;

@@ -76,6 +82,7 @@ public class WxVtwoActivityOrder extends TenantEntity {
/**
*
*/
@Excel(name = "所属军团", width = 20, orderNum = "18")
@TableField(value = "legion_name")
private String legionName;

@@ -88,6 +95,7 @@ public class WxVtwoActivityOrder extends TenantEntity {
/**
*
*/
@Excel(name = "所属联盟", width = 20, orderNum = "19")
@TableField(value = "union_name")
private String unionName;

@@ -100,14 +108,16 @@ public class WxVtwoActivityOrder extends TenantEntity {
/**
* 订单号
*/
@Excel(name = "订单号", width = 20, orderNum = "1")
@TableField(value = "order_no")
private String orderNo;

/**
* 订单金额
*/
@TableField(value = "order_amount")
private BigDecimal orderAmount;
@Excel(name = "订单金额(元)", width = 20, orderNum = "2")
@TableField(value = "order_money")
private BigDecimal orderMoney;

/**
* 商户编号
@@ -115,10 +125,10 @@ public class WxVtwoActivityOrder extends TenantEntity {
@TableField(value = "merchant_id")
private Long merchantId;

// @Excel(name = "商户名称", width = 20, orderNum = "6")
@Excel(name = "商户名称", width = 20, orderNum = "5")
@TableField(exist = false)
private String merchantName;
// @Excel(name="商铺号",width = 20,orderNum = "7")
@Excel(name="商铺号",width = 20,orderNum = "6")
@TableField(exist = false)
private String shopNumber;

@@ -132,6 +142,7 @@ public class WxVtwoActivityOrder extends TenantEntity {
*/
@TableField(value = "business_id")
private Integer businessId;
@Excel(name="业态",width = 20,orderNum = "7")
@TableField(exist = false)
private String businessName;

@@ -140,28 +151,54 @@ public class WxVtwoActivityOrder 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;
}

@Excel(name = "抽奖券编码", width = 20, orderNum = "8")
@TableField(exist = false)
private String lotteryNumStr;
public String getLotteryNumStr() {
if(this.getLotteryNumList() != null && !lotteryNumList.isEmpty()){
lotteryNumStr = String.join(",", lotteryNumList);
}
return lotteryNumStr;
}

/**
* 抽奖券数量
*/
@Excel(name = "抽奖券数量", width = 20, orderNum = "9")
@TableField(value = "lottery_count")
private Integer lotteryCount;

/**
* 周年庆抽奖编码
*/
@Excel(name = "周年庆抽奖编码", width = 20, orderNum = "10")
@TableField(value = "anniversary_lottery_num")
private String anniversaryLotteryNum;

/**
* 审批状态
*/
@Excel(name = "订单状态", width = 20, orderNum = "3", replace = {"审核中_0", "已审批_1", "已驳回_2", "已退单_3", "已发奖_10"})
@TableField(value = "audit_status")
private Integer auditStatus;

/**
* 审批意见
*/
@Excel(name = "审核意见", width = 20, orderNum = "14")
@TableField(value = "audit_remark")
private String auditRemark;

@@ -170,16 +207,21 @@ public class WxVtwoActivityOrder extends TenantEntity {
*/
@TableField(value = "audit_by")
private Long auditBy;
@Excel(name = "审核人", width = 20, orderNum = "12")
@TableField(exist = false)
private String auditByName;

/**
* 审核时间
*/
@Excel(name = "提交时间", format = "yyyy-MM-dd HH:mm:ss", width = 20, orderNum = "13")
@TableField(value = "audit_time")
private Date auditTime;

/**
* 积分变动值
*/
@Excel(name = "积分变动值", width = 20, orderNum = "20")
@TableField(value = "increased_points")
private Integer increasedPoints;

@@ -188,13 +230,11 @@ public class WxVtwoActivityOrder extends TenantEntity {
*/
@TableField(value = "create_by")
private Long createBy;
@Excel(name = "审核人", width = 20, orderNum = "14")
@TableField(exist = false)
private String auditByName;

/**
* 创建时间
*/
@Excel(name = "提交时间", format = "yyyy-MM-dd HH:mm:ss", width = 20, orderNum = "11")
@TableField(value = "create_date")
private Date createDate;

@@ -208,4 +248,22 @@ public class WxVtwoActivityOrder extends TenantEntity {
*/
@TableField(value = "update_date")
private Date updateDate;

@TableField(exist = false)
private Long activityId;

/**
* 是否可以发奖
*/
@TableField(exist = false)
private Integer grantStatus;

/**
* 是否参与总金额计算
*/
@TableField(exist = false)
private Integer isAmount;

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

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

@@ -1,11 +1,15 @@
package com.iformall.domain.po;

import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.iformall.domain.po.base.TenantEntity;
import java.util.Date;
import java.util.List;

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

/**
@@ -47,10 +51,17 @@ public class WxVtwoActivitySpecialTopic extends TenantEntity {

/**
* 积分配置
*
* "step":,
* "score":
*
*/
@TableField(value = "credit_config")
private String creditConfig;

@TableField(exist = false)
private WxVtwoActivityCreditRule creditConfigObject;

/**
* 状态
*/
@@ -68,4 +79,23 @@ public class WxVtwoActivitySpecialTopic extends TenantEntity {
*/
@TableField(value = "update_date")
private Date updateDate;

@TableField(exist = false)
private List<WxVtwoSpecialTopicActivity> activityList;

@TableField(exist = false)
private Date begin;
@TableField(exist = false)
private Date end;

@TableField(exist = false)
private Long activityId;
/**
* 是否过期
*/
@TableField(exist = false)
private Integer validStatus;

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

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

@@ -101,7 +101,7 @@ public class WxVtwoAmountGiftActivity extends TenantEntity {
private List<Long> merchantIdList;

@TableField(exist = false)
private List<WxVtwoActivityMerchant> merchanList;
private List<WxVtwoActivityMerchant> merchantList;

/**
* 活动状态


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

@@ -5,6 +5,8 @@ import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.iformall.domain.po.base.TenantEntity;

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

@@ -70,7 +72,7 @@ public class WxVtwoCashBackActivity extends TenantEntity {
* 返现总金额限制
*/
@TableField(value = "cash_back_limit")
private Integer cashBackLimit;
private BigDecimal cashBackLimit;

/**
* 返现计算规则
@@ -100,7 +102,7 @@ public class WxVtwoCashBackActivity extends TenantEntity {
private List<Long> merchantIdList;

@TableField(exist = false)
private List<WxVtwoActivityMerchant> merchanList;
private List<WxVtwoActivityMerchant> merchantList;

/**
* 活动状态


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

@@ -68,7 +68,7 @@ public class WxVtwoCashBackAward extends TenantEntity {
* 返现金额限制
*/
@TableField(value = "cash_back_limit")
private Integer cashBackLimit;
private BigDecimal cashBackLimit;

/**
* 分担规则(0-商管 1-商户 2-分担)


+ 53
- 7
mallinkService/src/main/java/com/iformall/domain/po/WxVtwoCashBackGrant.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;
@@ -7,6 +9,9 @@ import com.baomidou.mybatisplus.annotation.TableName;
import com.iformall.domain.po.base.TenantEntity;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

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

/**
@@ -28,6 +33,9 @@ public class WxVtwoCashBackGrant extends TenantEntity {
@TableField(value = "activity_id")
private Long activityId;

@TableField(value = "activity_type")
private Integer activityType;

/**
*
*/
@@ -63,6 +71,18 @@ public class WxVtwoCashBackGrant 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;
}

/**
* 抽奖券数量
@@ -75,6 +95,18 @@ public class WxVtwoCashBackGrant 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;
}

/**
* 实际领奖人
@@ -94,12 +126,6 @@ public class WxVtwoCashBackGrant extends TenantEntity {
@TableField(value = "cash_back_limit")
private BigDecimal cashBackLimit;

/**
* 返现金额计算规则
*/
@TableField(value = "cash_back_rule")
private Integer cashBackRule;

/**
* 返现金额
*/
@@ -121,7 +147,7 @@ public class WxVtwoCashBackGrant extends TenantEntity {
/**
* 实际返现金额
*/
@TableField(value = "real_cash_back")
@TableField(exist = false)
private BigDecimal realCashBack;

/**
@@ -147,6 +173,8 @@ public class WxVtwoCashBackGrant extends TenantEntity {
*/
@TableField(value = "create_by")
private Long createBy;
@TableField(exist = false)
private String createByName;

/**
* 创建时间
@@ -154,9 +182,27 @@ public class WxVtwoCashBackGrant extends TenantEntity {
@TableField(value = "create_date")
private Date createDate;

@TableField(exist = false)
private Date createDateBegin;
@TableField(exist = false)
private Date createDateEnd;

/**
* 更新时间
*/
@TableField(value = "update_date")
private Date updateDate;

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

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

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

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

}

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

@@ -16,6 +16,10 @@ import lombok.Data;
@TableName(value ="wx_vtwo_cash_back_grant_award")
@Data
public class WxVtwoCashBackGrantAward extends TenantEntity {

@TableField(exist = false)
private String name;

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

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

/**
* 商管分担比例
@@ -148,6 +152,11 @@ public class WxVtwoCashBackGrantAward extends TenantEntity {
@TableField(value = "create_date")
private Date createDate;

@TableField(exist = false)
private Date createDateBegin;
@TableField(exist = false)
private Date createDateEnd;

/**
* 更新时间
*/


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

@@ -107,7 +107,7 @@ public class WxVtwoPrizeDrawActivity extends TenantEntity {
private List<Long> merchantIdList;

@TableField(exist = false)
private List<WxVtwoActivityMerchant> merchanList;
private List<WxVtwoActivityMerchant> merchantList;

/**
* 活动状态


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

@@ -6,6 +6,8 @@ import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.iformall.domain.po.base.TenantEntity;
import java.util.Date;

import com.iformall.enums.EnumOfflineActivityType;
import lombok.Data;

/**
@@ -38,6 +40,14 @@ public class WxVtwoSpecialTopicActivity extends TenantEntity {
*/
@TableField(value = "activity_type")
private Integer activityType;
@TableField(exist = false)
private String activityTypeName;
public String getActivityTypeName() {
if (null != activityType) {
return EnumOfflineActivityType.getEnum(activityType).getMessage();
}
return null;
}

/**
* 活动名称


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

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

import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.List;

/**
* 线下活动中奖规则
*/
@Data
public class WxVtwoActivityCreditRule implements Serializable {

private static final long serialVersionUID = 1L;

/**
* 金额
*/
private BigDecimal step;

/**
* 积分
*/
private Integer score;

}

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

}

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

@@ -12,5 +12,5 @@ public class WxVtwoActivityOrderStatistics implements Serializable {

private Integer auditStatus;
private Integer count;
private BigDecimal sumAmount;
private BigDecimal sumMoney;
}

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

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

import com.iformall.domain.po.base.TenantEntity;
import com.iformall.enums.EnumYesOrNo;
import lombok.Data;

import java.util.Date;
import java.util.List;

@Data
public class WxVtwoActivityStatisticsVo extends TenantEntity {

private Long id;
private Long activityId;
private Integer activityType;

private Date createDateBegin;
private Date createDateEnd;

private List<Long> activityIdList;

}

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

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

import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;

@Data
public class WxVtwoAwardGrantStatistics implements Serializable {

private static final long serialVersionUID = 1L;

private Long awardId;
private String awardName;
private BigDecimal cashBackRatio;

private Integer awardCount;
private BigDecimal awardPrice;

private Double priceRatio;
private Double countRatio;

}

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

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

import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;

@Data
public class WxVtwoAwardStatistics implements Serializable {

private static final long serialVersionUID = 1L;

private String xTime;

private Integer grantCount;//发奖人数(次数)
private Integer orderCount;//订单数量
private BigDecimal orderMoney;//订单总金额

private Integer awardCount;//奖品总个数
private BigDecimal awardPrice;//奖品(返现)总价值

private BigDecimal mallPrice;//商场承担
private BigDecimal merchantPrice;//商户承担

private BigDecimal amountCashBack;//金额返现*
private BigDecimal relatedCashBack;//联单返现*

}

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

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

import com.iformall.common.SortColumn;
import com.iformall.domain.po.base.TenantEntity;
import lombok.Data;

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

@Data
public class WxVtwoMerchantSettlementStatistics extends TenantEntity {

private Long merchantId;
private String merchantName;

private Integer orderCount;
// private BigDecimal orderMoney;
private BigDecimal grantPrice;
private BigDecimal mallPrice;
private BigDecimal merchantPrice;

}

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

@@ -14,8 +14,8 @@ public class WxVtwoOrderBusinessStatistics implements Serializable {
private String businessName;

private Integer businessCount;
private BigDecimal sumAmount;
private BigDecimal orderMoney;

private Double countRatio;
private Double moneyRatio;

}

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

@@ -14,6 +14,6 @@ public class WxVtwoOrderCountStatistics implements Serializable {

private Integer userCount;
private Integer orderCount;
private BigDecimal sumAmount;
private BigDecimal orderMoney;
private Integer merchantCount;
}

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

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

import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;

@Data
public class WxVtwoSettlementStatistics implements Serializable {

private static final long serialVersionUID = 1L;

private BigDecimal grantPrice;
private Integer orderCount;
private Integer merchantCount;
private BigDecimal mallPrice;
private BigDecimal merchantPrice;

private double mallRatio;
private double merchantRatio;
}

+ 36
- 0
mallinkService/src/main/java/com/iformall/enums/EnumVtwoActivityGrantStatus.java Просмотреть файл

@@ -0,0 +1,36 @@
package com.iformall.enums;

/**
* Created by Stormeye on 2018/08/09.
*/
public enum EnumVtwoActivityGrantStatus {

VALID(1, "有效"),
NOT_VALID(0, "无效")
;

public static EnumVtwoActivityGrantStatus getEnum(Integer code) {
for (EnumVtwoActivityGrantStatus value : values()) {
if (value.getCode().equals(code)) {
return value;
}
}
return null;
}

private Integer code;
private String message;

EnumVtwoActivityGrantStatus(Integer code, String message) {
this.code = code;
this.message = message;
}

public Integer getCode() {
return code;
}

public String getMessage() {
return message;
}
}

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

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

import java.util.List;

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

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

WxVtwoAwardStatistics activityAwardCountStatistics(WxVtwoActivityGrantAward grantAward);

List<WxVtwoAwardStatistics> activityAwardCountStatisticsChart(WxVtwoActivityGrantAward grantAward);

List<WxVtwoAwardGrantStatistics> awardItemStatistics(WxVtwoActivityGrantAward grantAward);

}




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

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

import java.util.List;

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

void insertList(@Param("grantExportList")List<WxVtwoActivityGrantExport> grantExportList);

List<WxVtwoActivityGrantExport> findList(WxVtwoActivityGrantExport exportQ);
}




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

@@ -3,6 +3,9 @@ package com.iformall.mapper;
import com.iformall.common.CommonMapper;
import com.iformall.domain.po.WxVtwoActivityGrant;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.iformall.domain.vo.WxVtwoAwardStatistics;

import java.util.List;

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

WxVtwoAwardStatistics activityAwardStatistics(WxVtwoActivityGrant activityGrant);

List<WxVtwoAwardStatistics> activityAwardStatisticsChart(WxVtwoActivityGrant activityGrant);
}




+ 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);
}




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

@@ -2,7 +2,12 @@ package com.iformall.mapper;

import com.iformall.common.CommonMapper;
import com.iformall.domain.po.WxVtwoActivityGrantSettlement;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.iformall.domain.vo.WxVtwoAwardStatistics;
import com.iformall.domain.vo.WxVtwoMerchantSettlementStatistics;
import com.iformall.domain.vo.WxVtwoSettlementStatistics;
import org.apache.ibatis.annotations.Param;

import java.util.List;

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

Integer getOrderCount(WxVtwoActivityGrantSettlement record);

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

WxVtwoSettlementStatistics settlementStatistics(WxVtwoActivityGrantSettlement record);

List<WxVtwoMerchantSettlementStatistics> merchantSettlementStatistics(WxVtwoActivityGrantSettlement record);

WxVtwoAwardStatistics activityAwardStatistics(WxVtwoActivityGrantSettlement record);

List<WxVtwoAwardStatistics> activityAwardStatisticsChart(WxVtwoActivityGrantSettlement record);

}




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

@@ -40,6 +40,7 @@ public interface WxVtwoActivityOrderMapper extends CommonMapper<WxVtwoActivityOr

List<WxVtwoOrderBusinessStatistics> getBusinessStatistics(WxVtwoActivityOrder record);

List<WxVtwoActivityOrder> findAuditDetailList(WxVtwoActivityOrder orderQ);
}




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

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

import java.util.Date;
import java.util.List;

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

List<WxVtwoActivitySpecialTopic> findList(WxVtwoActivitySpecialTopic specialTopic);

int selectCreditCount(WxVtwoActivitySpecialTopic specialTopic);

WxVtwoActivitySpecialTopic selectById(@Param("id") Long id, @Param("tenantId")String tenantId);

WxVtwoActivitySpecialTopic selectCreditOne(@Param("tenantId")String tenantId,@Param("creditOnOff") Integer creditOnOff,
@Param("orderDate") Date orderDate,@Param("status") Integer status);
}




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

@@ -16,7 +16,7 @@ import java.util.List;
*/
public interface WxVtwoCashBackAwardMapper extends CommonMapper<WxVtwoCashBackAward, Long> {

void insertList(@Param("awardList") List<WxVtwoActivityAward> awardList);
void insertList(@Param("awardList") List<WxVtwoCashBackAward> awardList);

List<WxVtwoCashBackAward> findList(WxVtwoCashBackAward cashBackAward);
}


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

@@ -1,8 +1,13 @@
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 com.iformall.domain.vo.WxVtwoAwardGrantStatistics;
import org.apache.ibatis.annotations.Param;

import java.util.List;

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

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

List<WxVtwoAwardGrantStatistics> awardItemStatistics(WxVtwoCashBackGrantAward grantAward);

}




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

@@ -3,6 +3,9 @@ package com.iformall.mapper;
import com.iformall.common.CommonMapper;
import com.iformall.domain.po.WxVtwoCashBackGrant;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.iformall.domain.vo.WxVtwoAwardStatistics;

import java.util.List;

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

WxVtwoAwardStatistics activityAwardStatistics(WxVtwoCashBackGrant wxVtwoCashBackGrant);

List<WxVtwoAwardStatistics> activityAwardStatisticsChart(WxVtwoCashBackGrant wxVtwoCashBackGrant);
}




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

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

import java.util.List;

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

void insertList(@Param("activityList") List<WxVtwoSpecialTopicActivity> activityList);

List<WxVtwoSpecialTopicActivity> findList(WxVtwoSpecialTopicActivity specialTopicActivity);

void updateByActivity(WxVtwoSpecialTopicActivity specialTopicActivity);
}




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

@@ -1,12 +1,10 @@
package com.iformall.service;

import com.iformall.domain.po.WxLegionActivity;
import com.iformall.domain.po.WxLegionActivityOfflineConfig;
import com.iformall.domain.po.*;
import com.baomidou.mybatisplus.extension.service.IService;
import com.iformall.domain.po.WxLegionActivityOrder;
import com.iformall.domain.po.WxOfflineActivity;

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

/**
* @author xiaohu
@@ -15,11 +13,13 @@ import java.util.List;
*/
public interface WxLegionActivityOfflineConfigService {

void handleOfflineConfig(WxLegionActivity wxLegionActivity);
List<WxOfflineActivity> getOfflineActivityList(WxLegionActivity wxLegionActivity);
// void handleOfflineConfig(WxLegionActivity wxLegionActivity);
//
// List<WxOfflineActivity> getOfflineActivityList(WxLegionActivity wxLegionActivity);

void syncOfflineActivityRecord(WxLegionActivityOrder legionActivityOrder);

void syncOfflineActivityRecord(List<WxLegionActivityOrder> wxLegionActivityOrders);

void syncOfflineActivityOrder(WxLegionActivityUser user, WxLegionActivityOrder legionActivityOrder, Map<Long, String> legionConfigMap);
}

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

@@ -36,4 +36,5 @@ public interface WxOfflineActivityGrantSettlementService {
void exportData(HttpServletRequest request, HttpServletResponse response, WxOfflineActivityGrantSettlement grantSettlement);

OfflineActivitySettlementStatistics activitySettlementStatistics(WxOfflineActivityGrantSettlement grantSettlement);

}

+ 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);
}

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

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

import com.iformall.domain.po.WxVtwoActivityAward;
import com.iformall.domain.po.WxVtwoActivityGrant;
import com.iformall.domain.po.WxVtwoActivityGrantAward;
import com.baomidou.mybatisplus.extension.service.IService;
import com.iformall.domain.vo.WxVtwoActivityStatisticsVo;
import com.iformall.domain.vo.WxVtwoAwardGrantStatistics;
import com.iformall.domain.vo.WxVtwoAwardStatistics;

import java.util.List;

/**
* @author xiaohu
@@ -10,4 +17,11 @@ import com.baomidou.mybatisplus.extension.service.IService;
*/
public interface WxVtwoActivityGrantAwardService extends IService<WxVtwoActivityGrantAward> {

void saveGrantAward(WxVtwoActivityGrant activityGrant,List<WxVtwoActivityAward> awardList);

WxVtwoAwardStatistics activityAwardCountStatistics(WxVtwoActivityStatisticsVo statisticsVo);

List<WxVtwoAwardStatistics> activityAwardCountStatisticsChart(WxVtwoActivityStatisticsVo statisticsVo);

List<WxVtwoAwardGrantStatistics> awardItemStatistics(WxVtwoActivityStatisticsVo statisticsVo);
}

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

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

import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity;
import com.iformall.domain.po.WxVtwoActivityGrant;
import com.iformall.domain.po.WxVtwoActivityGrantExport;
import com.baomidou.mybatisplus.extension.service.IService;
import com.iformall.domain.po.WxVtwoActivityGrantSettlement;
import com.iformall.domain.po.WxVtwoCashBackGrant;

import java.util.List;

/**
* @author xiaohu
@@ -10,4 +16,11 @@ import com.baomidou.mybatisplus.extension.service.IService;
*/
public interface WxVtwoActivityGrantExportService extends IService<WxVtwoActivityGrantExport> {

void saveGrantExport(WxVtwoActivityGrant activityGrant, List<WxVtwoActivityGrantSettlement> settlementList);

void saveGrantExport(WxVtwoCashBackGrant activityGrant, List<WxVtwoActivityGrantSettlement> settlementList);

List<WxVtwoActivityGrantExport> findActivityGrantList(Long activityId, String tenantId);

List<ExcelExportEntity> getExportHeadList();
}

+ 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);
}

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

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

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

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.List;

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

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

WxVtwoAwardStatistics activityAwardStatistics(WxVtwoActivityStatisticsVo statisticsVo);

List<WxVtwoAwardStatistics> activityAwardStatisticsChart(WxVtwoActivityStatisticsVo statisticsVo);
}

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

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

import com.iformall.domain.po.WxVtwoActivityGrant;
import com.iformall.domain.po.WxVtwoActivityGrantSettlement;
import com.baomidou.mybatisplus.extension.service.IService;
import com.iformall.domain.po.WxVtwoCashBackGrant;
import com.iformall.domain.vo.WxVtwoActivityStatisticsVo;
import com.iformall.domain.vo.WxVtwoAwardStatistics;
import com.iformall.domain.vo.WxVtwoSettlementStatistics;

import java.util.List;

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

void saveGrantSettlement(WxVtwoActivityGrant activityGrant);

void saveGrantSettlement(WxVtwoCashBackGrant activityGrant);

WxVtwoSettlementStatistics activitySettlementStatistics(WxVtwoActivityStatisticsVo statisticsVo);

WxVtwoAwardStatistics activityAwardStatistics(WxVtwoActivityStatisticsVo statisticsVo);

WxVtwoAwardStatistics activityAmountCashBackStatistics(WxVtwoActivityStatisticsVo statisticsVo, List<Long> amountAwardIdList);

List<WxVtwoAwardStatistics> activityAwardStatisticsChart(WxVtwoActivityStatisticsVo statisticsVo);

List<WxVtwoAwardStatistics> activityAmountCashBackStatisticsChart(WxVtwoActivityStatisticsVo statisticsVo, List<Long> amountAwardIdList);
}

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

@@ -0,0 +1,22 @@
package com.iformall.service;

import com.iformall.domain.vo.WxVtwoAwardStatistics;
import com.iformall.domain.vo.WxVtwoActivityStatisticsVo;
import com.iformall.domain.vo.WxVtwoAwardGrantStatistics;

import java.util.List;

/**
* @author xiaohu
* @description 针对表【wx_vtwo_activity_grant(线下活动发奖)】的数据库操作Service
* @createDate 2025-05-16 00:37:31
*/
public interface WxVtwoActivityGrantStatisticsService {

WxVtwoAwardStatistics activityAwardStatistics(WxVtwoActivityStatisticsVo statisticsVo);

List<WxVtwoAwardStatistics> activityAwardStatisticsChart(WxVtwoActivityStatisticsVo statisticsVo);

List<WxVtwoAwardGrantStatistics> awardItemStatistics(WxVtwoActivityStatisticsVo statisticsVo);
}

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

@@ -1,7 +1,18 @@
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;
import com.iformall.domain.vo.WxVtwoActivityStatisticsVo;
import com.iformall.domain.vo.WxVtwoOrderBusinessStatistics;
import com.iformall.domain.vo.WxVtwoOrderCountStatistics;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.Map;

/**
* @author xiaohu
@@ -10,4 +21,42 @@ import com.baomidou.mybatisplus.extension.service.IService;
*/
public interface WxVtwoActivityOrderService extends IService<WxVtwoActivityOrder> {

PageInfo<WxVtwoActivityOrder> listAsPage(WxVtwoActivityOrder record, Integer pageNum, Integer pageSize);

List<WxVtwoActivityOrder> findList(WxVtwoActivityOrder record, Long activityId);

WxVtwoActivityOrder getById(Long id, String tenantId);
WxVtwoActivityOrder getInfoById(Long id, String tenantId);

Map<String, Object> getStatistics(WxVtwoActivityOrder record);

void auditRecord(WxVtwoActivityOrder record, Long userId);

void saveCreditHistory(WxVtwoActivityOrder record);

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

void exportData(HttpServletRequest request, HttpServletResponse response, WxVtwoActivityOrder record, Long activityId);

Integer getWaitAudiCount(TenantEntity tenantInfo);

WxVtwoActivityOrder getlimitOne(WxVtwoActivityOrder activityOrder);

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

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

/**
* 只查询审核信息
* @param ids
* @param tenantId
* @return
*/
Map<Long, WxVtwoActivityOrder> findAuditDetailMap(List<Long> ids, String tenantId);

WxVtwoOrderCountStatistics orderCountStatistics(WxVtwoActivityStatisticsVo statisticsVo);

List<WxVtwoOrderCountStatistics> orderCountStatisticsChart(WxVtwoActivityStatisticsVo statisticsVo);

List<WxVtwoOrderBusinessStatistics> orderBusinessStatistics(WxVtwoActivityStatisticsVo statisticsVo);
}

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

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

import com.github.pagehelper.PageInfo;
import com.iformall.domain.po.WxVtwoActivityOrder;
import com.iformall.domain.po.WxVtwoActivitySpecialTopic;
import com.baomidou.mybatisplus.extension.service.IService;
import com.iformall.domain.po.base.TenantEntity;
import com.iformall.domain.vo.WxVtwoActivityStatisticsVo;

import java.util.Date;

/**
* @author xiaohu
@@ -10,4 +16,15 @@ import com.baomidou.mybatisplus.extension.service.IService;
*/
public interface WxVtwoActivitySpecialTopicService extends IService<WxVtwoActivitySpecialTopic> {

PageInfo<WxVtwoActivitySpecialTopic> listAsPage(WxVtwoActivitySpecialTopic specialTopic, Integer pageNum, Integer pageSize);

int selectCreditCount(WxVtwoActivitySpecialTopic specialTopic);

WxVtwoActivitySpecialTopic getInfoById(Long id, String tenantId);

WxVtwoActivitySpecialTopic getById(Long id, String tenantId);

WxVtwoActivitySpecialTopic selectCreditOne(TenantEntity tenantEntity, Date createDate);

void handleStatisticsVo(WxVtwoActivityStatisticsVo statisticsVo);
}

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

@@ -1,9 +1,12 @@
package com.iformall.service;

import com.github.pagehelper.PageInfo;
import com.iformall.domain.po.WxVtwoAmountGiftActivity;
import com.iformall.domain.po.*;
import com.baomidou.mybatisplus.extension.service.IService;
import com.iformall.domain.po.WxVtwoPrizeDrawActivity;
import com.iformall.domain.po.base.TenantEntity;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
* @author xiaohu
@@ -16,4 +19,13 @@ public interface WxVtwoAmountGiftActivityService extends IService<WxVtwoAmountGi

WxVtwoAmountGiftActivity getInfoById(Long id, String tenantId);

WxVtwoAmountGiftActivity getById(Long id, String tenantId);

void handleSpecialTopicActivity(TenantEntity tenantEntity, WxVtwoSpecialTopicActivity activity);

void handlerGrantAwardPage(WxVtwoAmountGiftActivity amountGiftActivity, WxVtwoActivityGrant activityGrant);

void grantAward(WxVtwoAmountGiftActivity amountGiftActivity,WxVtwoActivityGrant activityGrant);

void grantExport(HttpServletRequest request, HttpServletResponse response, WxVtwoActivityGrant activityGrant);
}

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

@@ -1,9 +1,12 @@
package com.iformall.service;

import com.github.pagehelper.PageInfo;
import com.iformall.domain.po.WxVtwoAmountGiftActivity;
import com.iformall.domain.po.WxVtwoCashBackActivity;
import com.iformall.domain.po.*;
import com.baomidou.mybatisplus.extension.service.IService;
import com.iformall.domain.po.base.TenantEntity;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
* @author xiaohu
@@ -16,4 +19,13 @@ public interface WxVtwoCashBackActivityService extends IService<WxVtwoCashBackAc

WxVtwoCashBackActivity getInfoById(Long id, String tenantId);

WxVtwoCashBackActivity getById(Long id, String tenantId);

void handleSpecialTopicActivity(TenantEntity tenantEntity, WxVtwoSpecialTopicActivity activity);

void handlerGrantAwardPage(WxVtwoCashBackActivity cashBackActivity, WxVtwoCashBackGrant activityGrant);

void grantAward(WxVtwoCashBackActivity cashBackActivity,WxVtwoCashBackGrant activityGrant);

void grantExport(HttpServletRequest request, HttpServletResponse response, WxVtwoCashBackGrant activityGrant);
}

+ 7
- 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,10 @@ 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);

List<Long> getAmountAwardIdList(Long activityId, String tenantId);
}

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

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

import com.iformall.domain.po.WxVtwoActivityOrder;
import com.iformall.domain.po.WxVtwoCashBackActivity;
import com.iformall.domain.po.WxVtwoCashBackGrant;
import com.iformall.domain.po.WxVtwoCashBackGrantAward;
import com.baomidou.mybatisplus.extension.service.IService;
import com.iformall.domain.vo.WxVtwoActivityStatisticsVo;
import com.iformall.domain.vo.WxVtwoAwardGrantStatistics;

import java.util.List;

/**
* @author xiaohu
@@ -10,4 +17,9 @@ import com.baomidou.mybatisplus.extension.service.IService;
*/
public interface WxVtwoCashBackGrantAwardService extends IService<WxVtwoCashBackGrantAward> {

void handleGrantAwardList(WxVtwoCashBackActivity cashBackActivity, WxVtwoCashBackGrant activityGrant, List<WxVtwoActivityOrder> orderList);

void saveGrantAward(WxVtwoCashBackGrant activityGrant);

List<WxVtwoAwardGrantStatistics> awardItemStatistics(WxVtwoActivityStatisticsVo statisticsVo);
}

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

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

import com.iformall.domain.po.WxVtwoActivityOrder;
import com.iformall.domain.po.WxVtwoCashBackGrant;
import com.baomidou.mybatisplus.extension.service.IService;
import com.iformall.domain.vo.WxVtwoActivityStatisticsVo;
import com.iformall.domain.vo.WxVtwoAwardStatistics;

import java.util.List;

/**
* @author xiaohu
@@ -10,4 +15,9 @@ import com.baomidou.mybatisplus.extension.service.IService;
*/
public interface WxVtwoCashBackGrantService extends IService<WxVtwoCashBackGrant> {

void handleFromOrder(WxVtwoCashBackGrant activityGrant, List<WxVtwoActivityOrder> orderList, boolean isGrant);

WxVtwoAwardStatistics activityAwardStatistics(WxVtwoActivityStatisticsVo statisticsVo);

List<WxVtwoAwardStatistics> activityAwardStatisticsChart(WxVtwoActivityStatisticsVo statisticsVo);
}

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

@@ -1,8 +1,16 @@
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;
import com.iformall.domain.po.WxVtwoSpecialTopicActivity;
import com.iformall.domain.po.base.TenantEntity;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.List;

/**
* @author xiaohu
@@ -14,4 +22,14 @@ public interface WxVtwoPrizeDrawActivityService extends IService<WxVtwoPrizeDraw
PageInfo<WxVtwoPrizeDrawActivity> listAsPage(WxVtwoPrizeDrawActivity prizeDrawActivity, Integer pageNum, Integer pageSize);

WxVtwoPrizeDrawActivity getInfoById(Long id, String tenantId);

WxVtwoPrizeDrawActivity getById(Long id, String tenantId);

void handleSpecialTopicActivity(TenantEntity tenantEntity, WxVtwoSpecialTopicActivity activity);

void handlerGrantAwardPage(WxVtwoPrizeDrawActivity prizeDrawActivity, WxVtwoActivityGrant activityGrant);

void grantAward(WxVtwoPrizeDrawActivity prizeDrawActivity,WxVtwoActivityGrant activityGrant);

void grantExport(HttpServletRequest request, HttpServletResponse response, WxVtwoActivityGrant activityGrant);
}

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

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

import com.iformall.domain.po.WxVtwoActivitySpecialTopic;
import com.iformall.domain.po.WxVtwoSpecialTopicActivity;
import com.baomidou.mybatisplus.extension.service.IService;
import com.iformall.domain.po.base.TenantEntity;

import java.util.List;

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

void saveFromSpecialTopic(WxVtwoActivitySpecialTopic specialTopic, List<WxVtwoSpecialTopicActivity> activityList);
}

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

@@ -7,11 +7,8 @@ import com.iformall.enums.EnumOfflineActivityRecordStatus;
import com.iformall.mapper.WxLegionActivityOrderMapper;
import com.iformall.mapper.WxOfflineActivityMapper;
import com.iformall.mapper.WxOfflineActivityRecordMapper;
import com.iformall.service.WxLegionActivityOfflineConfigService;
import com.iformall.service.*;
import com.iformall.mapper.WxLegionActivityOfflineConfigMapper;
import com.iformall.service.WxMerchantService;
import com.iformall.service.WxOfflineActivityRecordService;
import com.iformall.service.WxOfflineActivityService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -27,11 +24,11 @@ import java.util.stream.Collectors;
@Service
public class WxLegionActivityOfflineConfigServiceImpl implements WxLegionActivityOfflineConfigService{

@Autowired
private WxLegionActivityOfflineConfigMapper wxLegionActivityOfflineConfigMapper;
@Autowired
private WxOfflineActivityMapper wxOfflineActivityMapper;
// @Autowired
// private WxLegionActivityOfflineConfigMapper wxLegionActivityOfflineConfigMapper;
//
// @Autowired
// private WxOfflineActivityMapper wxOfflineActivityMapper;

@Autowired
private WxOfflineActivityRecordMapper wxOfflineActivityRecordMapper;
@@ -40,41 +37,44 @@ public class WxLegionActivityOfflineConfigServiceImpl implements WxLegionActivit
private WxOfflineActivityRecordService wxOfflineActivityRecordService;

@Autowired
private WxMerchantService wxMerchantService;

@Override
public void handleOfflineConfig(WxLegionActivity wxLegionActivity) {
wxLegionActivityOfflineConfigMapper.deleteByLegionActivity(wxLegionActivity.getId(),wxLegionActivity.getTenantId());
if(wxLegionActivity.getOfflineActivityList() == null || wxLegionActivity.getOfflineActivityList().isEmpty()){
return;
}
final IdWorker idWorker = IdWorker.get();
List<WxLegionActivityOfflineConfig> legionActivityOfflineConfigList = new ArrayList<>();
for (WxOfflineActivity wxOfflineActivity : wxLegionActivity.getOfflineActivityList()) {
WxLegionActivityOfflineConfig wxLegionActivityOfflineConfig = new WxLegionActivityOfflineConfig();
wxLegionActivityOfflineConfig.setId(idWorker.nextId());
wxLegionActivityOfflineConfig.updateTenantInfo(wxLegionActivity);
wxLegionActivityOfflineConfig.setLegionActivityId(wxLegionActivity.getId());
wxLegionActivityOfflineConfig.setOfflineActivityId(wxOfflineActivity.getId());
legionActivityOfflineConfigList.add(wxLegionActivityOfflineConfig);
}
private WxVtwoActivityOrderService wxVtwoActivityOrderService;

wxLegionActivityOfflineConfigMapper.insertList(legionActivityOfflineConfigList);
}

@Override
public List<WxOfflineActivity> getOfflineActivityList(WxLegionActivity wxLegionActivity) {

List<Long> OfflineActivityIds = wxLegionActivityOfflineConfigMapper.getOfflineActivityIds(wxLegionActivity.getId(),wxLegionActivity.getTenantId());
if(OfflineActivityIds == null || OfflineActivityIds.isEmpty()){
return Collections.emptyList();
}
WxOfflineActivity wxOfflineActivity = new WxOfflineActivity();
wxOfflineActivity.updateTenantInfo(wxLegionActivity);
wxOfflineActivity.setIds(OfflineActivityIds);
@Autowired
private WxMerchantService wxMerchantService;

return wxOfflineActivityMapper.findList(wxOfflineActivity);
}
// @Override
// public void handleOfflineConfig(WxLegionActivity wxLegionActivity) {
// wxLegionActivityOfflineConfigMapper.deleteByLegionActivity(wxLegionActivity.getId(),wxLegionActivity.getTenantId());
// if(wxLegionActivity.getOfflineActivityList() == null || wxLegionActivity.getOfflineActivityList().isEmpty()){
// return;
// }
// final IdWorker idWorker = IdWorker.get();
// List<WxLegionActivityOfflineConfig> legionActivityOfflineConfigList = new ArrayList<>();
// for (WxOfflineActivity wxOfflineActivity : wxLegionActivity.getOfflineActivityList()) {
// WxLegionActivityOfflineConfig wxLegionActivityOfflineConfig = new WxLegionActivityOfflineConfig();
// wxLegionActivityOfflineConfig.setId(idWorker.nextId());
// wxLegionActivityOfflineConfig.updateTenantInfo(wxLegionActivity);
// wxLegionActivityOfflineConfig.setLegionActivityId(wxLegionActivity.getId());
// wxLegionActivityOfflineConfig.setOfflineActivityId(wxOfflineActivity.getId());
// legionActivityOfflineConfigList.add(wxLegionActivityOfflineConfig);
// }
//
// wxLegionActivityOfflineConfigMapper.insertList(legionActivityOfflineConfigList);
// }
//
// @Override
// public List<WxOfflineActivity> getOfflineActivityList(WxLegionActivity wxLegionActivity) {
//
// List<Long> OfflineActivityIds = wxLegionActivityOfflineConfigMapper.getOfflineActivityIds(wxLegionActivity.getId(),wxLegionActivity.getTenantId());
// if(OfflineActivityIds == null || OfflineActivityIds.isEmpty()){
// return Collections.emptyList();
// }
// WxOfflineActivity wxOfflineActivity = new WxOfflineActivity();
// wxOfflineActivity.updateTenantInfo(wxLegionActivity);
// wxOfflineActivity.setIds(OfflineActivityIds);
//
// return wxOfflineActivityMapper.findList(wxOfflineActivity);
// }

@Override
@Transactional(rollbackFor = Exception.class)
@@ -126,7 +126,6 @@ public class WxLegionActivityOfflineConfigServiceImpl implements WxLegionActivit

}


private WxOfflineActivityRecord createOfflineActivityRecord(WxLegionActivityOrder legionActivityOrder) {
WxOfflineActivityRecord activityRecord = new WxOfflineActivityRecord();
activityRecord.updateTenantInfo(legionActivityOrder);
@@ -155,6 +154,48 @@ public class WxLegionActivityOfflineConfigServiceImpl implements WxLegionActivit
return activityRecord;
}

@Override
public void syncOfflineActivityOrder(WxLegionActivityUser user, WxLegionActivityOrder legionActivityOrder, Map<Long, String> legionConfigMap) {
WxVtwoActivityOrder order = new WxVtwoActivityOrder();
order.updateTenantInfo(legionActivityOrder);
order.setFromUserId(user.getId());
order.setVipNum(user.getVipNum());
order.setCusName(legionActivityOrder.getCusName());
order.setRealCusName(user.getName());
order.setCusPhone(user.getPhone());
order.setCusAddress(legionActivityOrder.getCusAddress());
order.setLegionId(user.getLegionId());
if(order.getLegionId() == null || order.getLegionId() == 0){
order.setLegionName("无军团");
}else{
order.setLegionName(legionConfigMap.get(order.getLegionId()));
}
order.setUnionId(user.getUnionId());
if(order.getUnionId() == null || order.getUnionId() == 0){
order.setUnionName("无联盟");
}else{
order.setUnionName(legionConfigMap.get(order.getUnionId()));
}
order.setFromOrderId(legionActivityOrder.getId());
order.setOrderNo(legionActivityOrder.getOrderNo());
order.setOrderMoney(legionActivityOrder.getOrderMoney());
order.setMerchantId(legionActivityOrder.getMerchantId());
order.setLotteryNum(legionActivityOrder.getLotteryNum());
order.setLotteryCount(legionActivityOrder.getLotteryCount());
order.setAnniversaryLotteryNum(legionActivityOrder.getAnniversaryLotteryNum());
order.setAuditStatus(EnumOfflineActivityRecordStatus.AUDI_SUCCESS.getCode());
order.setAuditRemark(legionActivityOrder.getAuditRemark());
order.setAuditBy(legionActivityOrder.getAuditBy());
order.setAuditTime(legionActivityOrder.getAuditTime());
order.setCreateBy(legionActivityOrder.getCreateBy());
order.setCreateDate(legionActivityOrder.getCreateDate());
order.setUpdateDate(legionActivityOrder.getUpdateDate());

wxVtwoActivityOrderService.saveOrUpdate(order);

wxVtwoActivityOrderService.saveCreditHistory(order);
}

}




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

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

import com.aliyun.openservices.shade.org.apache.commons.lang3.StringUtils;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.github.pagehelper.PageHelper;
@@ -16,7 +15,7 @@ import com.iformall.exception.MallinkException;
import com.iformall.mapper.*;
import com.iformall.service.*;
import com.iformall.utils.DateUtils;
import jodd.util.StringUtil;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -199,10 +198,10 @@ public class WxLegionActivityOrderServiceImpl implements WxLegionActivityOrderSe
if(!user.getPhone().equals(wxLegionActivityOrder.getCusPhone())){
throw new MallinkException(Result.ERROR,"用户信息错误");
}
if(StringUtil.isBlank(wxLegionActivityOrder.getCusName())){
if(StringUtils.isBlank(wxLegionActivityOrder.getCusName())){
wxLegionActivityOrder.setCusName(user.getName());
}
if(StringUtil.isBlank(wxLegionActivityOrder.getCusAddress())){
if(org.apache.commons.lang3.StringUtils.isBlank(wxLegionActivityOrder.getCusAddress())){
wxLegionActivityOrder.setCusAddress(user.getAddress());
}
wxLegionActivityOrder.setCusMerchantId(user.getMerchantId());
@@ -369,8 +368,15 @@ public class WxLegionActivityOrderServiceImpl implements WxLegionActivityOrderSe
Integer upd = wxLegionActivityOrderMapper.updateAuditStatus(wxLegionActivityOrder);

if(upd == 1 && EnumLegionActivityOrderStatus.AUDI_SUCCESS.getCode().equals(wxLegionActivityOrder.getAuditStatus())){

//同步订单
WxLegionActivityOrder legionActivityOrder = wxLegionActivityOrderMapper.selectById(wxLegionActivityOrder.getId(), wxLegionActivityOrder.getTenantId());

WxLegionActivityConfig legionConfigQ = new WxLegionActivityConfig();
legionConfigQ.updateTenantInfo(legionActivityOrder);
legionConfigQ.setActivityId(legionActivityOrder.getActivityId());
Map<Long, String> legionConfigMap = wxLegionActivityConfigService.getLegionConfigMap(legionConfigQ);

WxLegionActivityUser user = wxLegionActivityUserMapper.selectById(legionActivityOrder.getCusId(), legionActivityOrder.getTenantId());
legionActivityOrder.setCusPhone(user.getPhone());
legionActivityOrder.setCusVipNum(user.getVipNum());
@@ -383,7 +389,7 @@ public class WxLegionActivityOrderServiceImpl implements WxLegionActivityOrderSe
legionActivityOrder.setAuditTime(wxLegionActivityOrder.getAuditTime());
legionActivityOrder.setUpdateDate(wxLegionActivityOrder.getUpdateDate());

wxLegionActivityOfflineConfigService.syncOfflineActivityRecord(legionActivityOrder);
wxLegionActivityOfflineConfigService.syncOfflineActivityOrder(user,legionActivityOrder,legionConfigMap);
}

}
@@ -702,6 +708,11 @@ public class WxLegionActivityOrderServiceImpl implements WxLegionActivityOrderSe
wxLegionActivityOrderUpd.setUpdateDate(now);
Integer upd = wxLegionActivityOrderMapper.updateAuditStatus(wxLegionActivityOrderUpd);

WxLegionActivityConfig legionConfigQ = new WxLegionActivityConfig();
legionConfigQ.updateTenantInfo(syncOrders.get(0));
legionConfigQ.setActivityId(syncOrders.get(0).getActivityId());
Map<Long, String> legionConfigMap = wxLegionActivityConfigService.getLegionConfigMap(legionConfigQ);

List<Long> userIds = syncOrders.stream().map(WxLegionActivityOrder::getCusId).filter(Objects::nonNull).distinct().collect(Collectors.toList());
WxLegionActivityUser userQ = new WxLegionActivityUser();
userQ.updateTenantInfo(tenantEntity);
@@ -715,8 +726,9 @@ public class WxLegionActivityOrderServiceImpl implements WxLegionActivityOrderSe
legionActivityOrder.setAuditBy(userId);
legionActivityOrder.setAuditTime(now);
legionActivityOrder.setUpdateDate(now);

wxLegionActivityOfflineConfigService.syncOfflineActivityOrder(user,legionActivityOrder,legionConfigMap);
}
wxLegionActivityOfflineConfigService.syncOfflineActivityRecord(syncOrders);
}

@Override


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

@@ -48,11 +48,8 @@ public class WxLegionActivityServiceImpl implements WxLegionActivityService{
@Autowired
private WxLegionActivityMerchantConfigService wxLegionActivityMerchantConfigService;

@Autowired
private WxLegionActivityOfflineConfigMapper wxLegionActivityOfflineConfigMapper;

@Autowired
private WxLegionActivityOfflineConfigService wxLegionActivityOfflineConfigService;
// @Autowired
// private WxLegionActivityOfflineConfigService wxLegionActivityOfflineConfigService;

@Autowired
private WxLegionActivityOrderService wxLegionActivityOrderService;
@@ -187,7 +184,7 @@ public class WxLegionActivityServiceImpl implements WxLegionActivityService{
wxLegionActivityMapper.updateById(wxLegionActivity);
}
//处理线下活动配置
wxLegionActivityOfflineConfigService.handleOfflineConfig(wxLegionActivity);
// wxLegionActivityOfflineConfigService.handleOfflineConfig(wxLegionActivity);
//处理军团配置
wxLegionActivityConfigService.handleLegionConfig(wxLegionActivity);

@@ -205,7 +202,7 @@ public class WxLegionActivityServiceImpl implements WxLegionActivityService{
return activity;
}
//获取活动发奖配置
activity.setOfflineActivityList(wxLegionActivityOfflineConfigService.getOfflineActivityList(activity));
// activity.setOfflineActivityList(wxLegionActivityOfflineConfigService.getOfflineActivityList(activity));
//获取军团配置
WxLegionActivityConfig legionConfigQ = new WxLegionActivityConfig();
legionConfigQ.updateTenantInfo(activity);


+ 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()));
}
}




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

@@ -1,11 +1,34 @@
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.domain.po.WxVtwoCashBackGrant;
import com.iformall.domain.vo.WxVtwoActivityStatisticsVo;
import com.iformall.domain.vo.WxVtwoAwardGrantStatistics;
import com.iformall.domain.vo.WxVtwoAwardStatistics;
import com.iformall.enums.EnumYesOrNo;
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.Collections;
import java.util.List;
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;

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 +38,86 @@ import org.springframework.stereotype.Service;
public class WxVtwoActivityGrantAwardServiceImpl extends ServiceImpl<WxVtwoActivityGrantAwardMapper, WxVtwoActivityGrantAward>
implements WxVtwoActivityGrantAwardService{

@Autowired
private WxVtwoActivityGrantAwardMapper wxVtwoActivityGrantAwardMapper;

@Override
public void saveGrantAward(WxVtwoActivityGrant activityGrant,List<WxVtwoActivityAward> awardList) {

Map<Long, WxVtwoActivityAward> activityAwardMap = awardList.stream().collect(Collectors.toMap(WxVtwoActivityAward::getId, Function.identity()));

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.setId(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);
}

private WxVtwoActivityGrantAward handleStatisticsVo(WxVtwoActivityStatisticsVo statisticsVo){
WxVtwoActivityGrantAward grantAward = new WxVtwoActivityGrantAward();
grantAward.updateTenantInfo(statisticsVo);
grantAward.setActivityId(statisticsVo.getActivityId());
grantAward.setCreateDateBegin(statisticsVo.getCreateDateBegin());
grantAward.setCreateDateEnd(statisticsVo.getCreateDateEnd());
grantAward.setStatus(EnumYesOrNo.YES.getCode());
return grantAward;
}

@Override
public WxVtwoAwardStatistics activityAwardCountStatistics(WxVtwoActivityStatisticsVo statisticsVo) {
WxVtwoActivityGrantAward grantAward = handleStatisticsVo(statisticsVo);
return wxVtwoActivityGrantAwardMapper.activityAwardCountStatistics(grantAward);
}

@Override
public List<WxVtwoAwardStatistics> activityAwardCountStatisticsChart(WxVtwoActivityStatisticsVo statisticsVo) {
WxVtwoActivityGrantAward grantAward = handleStatisticsVo(statisticsVo);
return wxVtwoActivityGrantAwardMapper.activityAwardCountStatisticsChart(grantAward);
}

@Override
public List<WxVtwoAwardGrantStatistics> awardItemStatistics(WxVtwoActivityStatisticsVo statisticsVo) {
WxVtwoActivityGrantAward grantAward = handleStatisticsVo(statisticsVo);
return wxVtwoActivityGrantAwardMapper.awardItemStatistics(grantAward);
}
}




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

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

import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.iformall.domain.po.WxVtwoActivityGrantExport;
import com.iformall.common.IdWorker;
import com.iformall.domain.po.*;
import com.iformall.domain.po.base.BaseEntity;
import com.iformall.service.WxVtwoActivityGrantExportService;
import com.iformall.mapper.WxVtwoActivityGrantExportMapper;
import com.iformall.service.WxVtwoActivityOrderService;
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.Collections;
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_export(线下活动发放奖励导出)】的数据库操作Service实现
@@ -15,6 +30,202 @@ import org.springframework.stereotype.Service;
public class WxVtwoActivityGrantExportServiceImpl extends ServiceImpl<WxVtwoActivityGrantExportMapper, WxVtwoActivityGrantExport>
implements WxVtwoActivityGrantExportService{

@Autowired
private WxVtwoActivityGrantExportMapper wxVtwoActivityGrantExportMapper;

@Autowired
private WxVtwoActivityOrderService wxVtwoActivityOrderService;

@Override
public void saveGrantExport(WxVtwoActivityGrant activityGrant, List<WxVtwoActivityGrantSettlement> settlementList) {

Map<Long, List<WxVtwoActivityGrantSettlement>> orderSettlementMap = settlementList.stream().collect(Collectors.groupingBy(WxVtwoActivityGrantSettlement::getOrderId));
Map<Long, WxVtwoActivityOrder> orderMap = activityGrant.getOrderList().stream().collect(Collectors.toMap(WxVtwoActivityOrder::getId, Function.identity()));
List<WxVtwoActivityGrantExport> grantExportList = new ArrayList<>();
final IdWorker idWorker = IdWorker.get();
orderSettlementMap.keySet().forEach(orderId -> {
List<WxVtwoActivityGrantSettlement> orderSettlementList = orderSettlementMap.get(orderId);
WxVtwoActivityOrder order = orderMap.get(orderId);

WxVtwoActivityGrantExport grantExport = getGrantExport(order,orderSettlementList);
grantExport.setId(idWorker.nextId());
grantExport.setActivityId(activityGrant.getActivityId());
grantExport.setActivityType(activityGrant.getActivityType());
grantExport.setActivityName(activityGrant.getActivityName());
grantExport.setGrantId(activityGrant.getId());
grantExport.setGrantUserName(activityGrant.getRealName());
grantExport.setGrantUserCard(activityGrant.getRealCard());
grantExport.setGrantBy(activityGrant.getCreateBy());
grantExport.setGrantByName(activityGrant.getCreateByName());
grantExport.setGrantTime(activityGrant.getCreateDate());
grantExport.setGrantRemark(activityGrant.getRemark());
grantExport.setSignImg(activityGrant.getSignImg());

grantExportList.add(grantExport);
});
wxVtwoActivityGrantExportMapper.insertList(grantExportList);
}

private WxVtwoActivityGrantExport getGrantExport(WxVtwoActivityOrder order,List<WxVtwoActivityGrantSettlement> orderSettlementList){
WxVtwoActivityGrantExport grantExport = new WxVtwoActivityGrantExport();
grantExport.updateTenantInfo(order);
grantExport.setOrderId(order.getId());
grantExport.setOrderNo(order.getOrderNo());
grantExport.setOrderAmount(order.getOrderMoney());
grantExport.setMerchantId(order.getMerchantId());
grantExport.setMerchantName(order.getMerchantName());
grantExport.setMerchantShopNum(order.getShopNumber());
grantExport.setBusinessId(order.getBusinessId());
grantExport.setBusinessName(order.getBusinessName());
grantExport.setLotteryNum(order.getLotteryNumStr());
grantExport.setLotteryNum(order.getLotteryNum());
grantExport.setAnniversaryLotteryNum(order.getAnniversaryLotteryNum());
grantExport.setOrderCreateTime(order.getCreateDate());
grantExport.setVipNum(order.getVipNum());
grantExport.setCusName(order.getCusName());
grantExport.setCusPhone(order.getCusPhone());
grantExport.setCusAddress(order.getCusAddress());
grantExport.setLegionId(order.getLegionId());
grantExport.setLegionName(order.getLegionName());
grantExport.setUnionId(order.getUnionId());
grantExport.setUnionName(order.getUnionName());

grantExport.setGrantDetail(JSONObject.toJSONString(orderSettlementList));
BigDecimal grantPrice = BigDecimal.ZERO;
BigDecimal mallSharePrice = BigDecimal.ZERO;
BigDecimal merchantSharePrice = BigDecimal.ZERO;
BigDecimal taxAmount = BigDecimal.ZERO;
for (WxVtwoActivityGrantSettlement grantSettlement:orderSettlementList){
grantPrice = grantPrice.add(grantSettlement.getOrderGrantPrice());
mallSharePrice = mallSharePrice.add(grantSettlement.getOrderMallSharePrice());
merchantSharePrice = merchantSharePrice.add(grantSettlement.getOrderMerchantSharePrice());
if(grantSettlement.getTaxAmount() != null ){
taxAmount = taxAmount.add(grantSettlement.getTaxAmount());
}
}
grantExport.setGrantPrice(grantPrice);
grantExport.setMallSharePrice(mallSharePrice);
grantExport.setMerchantSharePrice(merchantSharePrice);
grantExport.setMallShareRate(mallSharePrice.divide(grantPrice,4, RoundingMode.HALF_UP)
.multiply(new BigDecimal(100)));
grantExport.setMerchantShareRate(merchantSharePrice.divide(grantPrice,4, RoundingMode.HALF_UP)
.multiply(new BigDecimal(100)));
grantExport.setTaxAmount(taxAmount);
return grantExport;
}

@Override
public void saveGrantExport(WxVtwoCashBackGrant activityGrant, List<WxVtwoActivityGrantSettlement> settlementList) {
Map<Long, List<WxVtwoActivityGrantSettlement>> orderSettlementMap = settlementList.stream().collect(Collectors.groupingBy(WxVtwoActivityGrantSettlement::getOrderId));
Map<Long, WxVtwoActivityOrder> orderMap = activityGrant.getOrderList().stream().collect(Collectors.toMap(WxVtwoActivityOrder::getId, Function.identity()));
List<WxVtwoActivityGrantExport> grantExportList = new ArrayList<>();
final IdWorker idWorker = IdWorker.get();
orderSettlementMap.keySet().forEach(orderId -> {
List<WxVtwoActivityGrantSettlement> orderSettlementList = orderSettlementMap.get(orderId);
WxVtwoActivityOrder order = orderMap.get(orderId);

WxVtwoActivityGrantExport grantExport = getGrantExport(order,orderSettlementList);
grantExport.setId(idWorker.nextId());
grantExport.setActivityId(activityGrant.getActivityId());
grantExport.setActivityType(activityGrant.getActivityType());
grantExport.setActivityName(activityGrant.getActivityName());
grantExport.setGrantId(activityGrant.getId());
grantExport.setGrantUserName(activityGrant.getRealName());
grantExport.setGrantUserCard(activityGrant.getRealCard());
grantExport.setGrantBy(activityGrant.getCreateBy());
grantExport.setGrantByName(activityGrant.getCreateByName());
grantExport.setGrantTime(activityGrant.getCreateDate());
grantExport.setGrantRemark(activityGrant.getRemark());
grantExport.setSignImg(activityGrant.getSignImg());

grantExportList.add(grantExport);
});
wxVtwoActivityGrantExportMapper.insertList(grantExportList);
}

@Override
public List<WxVtwoActivityGrantExport> findActivityGrantList(Long activityId, String tenantId) {
WxVtwoActivityGrantExport exportQ = new WxVtwoActivityGrantExport();
exportQ.setTenantId(tenantId);
exportQ.setActivityId(activityId);
List<WxVtwoActivityGrantExport> exportList = wxVtwoActivityGrantExportMapper.findList(exportQ);

if(exportList != null && !exportList.isEmpty()){
List<Long> orderIds = exportList.stream().map(e -> e.getOrderId()).distinct().collect(Collectors.toList());
Map<Long,WxVtwoActivityOrder> auditDetailMap = wxVtwoActivityOrderService.findAuditDetailMap(orderIds,tenantId);
for(WxVtwoActivityGrantExport export : exportList){
WxVtwoActivityOrder order = auditDetailMap.get(export.getOrderId());
export.setOrderAuditStatus(order.getAuditStatus());
export.setOrderAuditRemark(order.getAuditRemark());
export.setOrderAuditBy(order.getAuditBy());
export.setOrderAuditName(order.getAuditByName());
export.setOrderAuditTime(order.getAuditTime());
}
}
return exportList;
}

@Override
public List<ExcelExportEntity> getExportHeadList() {
List<ExcelExportEntity> headList = new ArrayList<>();
ExcelExportEntity entity1 = new ExcelExportEntity("订单编号","orderNo",20);
headList.add(entity1);
ExcelExportEntity entity2 = new ExcelExportEntity("订单金额","orderAmount",20);
headList.add(entity2);
ExcelExportEntity entity3 = new ExcelExportEntity("订单地址","cusAddress",20);
headList.add(entity3);
ExcelExportEntity entity4 = new ExcelExportEntity("商户名称","merchantName",20);
headList.add(entity4);
ExcelExportEntity entity5 = new ExcelExportEntity("铺位号","merchantShopNum",20);
headList.add(entity5);
ExcelExportEntity entity6 = new ExcelExportEntity("业态","businessName",20);
headList.add(entity6);
ExcelExportEntity entity7 = new ExcelExportEntity("抽奖券编码","lotteryNum",20);
headList.add(entity7);
ExcelExportEntity entity8 = new ExcelExportEntity("抽奖券数量","lotteryCount",20);
headList.add(entity8);
ExcelExportEntity entity9 = new ExcelExportEntity("周年庆抽奖编码","anniversaryLotteryNum",20);
headList.add(entity9);
ExcelExportEntity entity10 = new ExcelExportEntity("提交时间","orderCreateTime",20);
entity10.setFormat("yyyy-MM-dd HH:mm:ss");
headList.add(entity10);
ExcelExportEntity entity11 = new ExcelExportEntity("订单状态","orderAuditStatus",20);
entity11.setReplace(new String[]{"审核中_0", "已审批_1", "已驳回_2", "已退单_3", "已发奖_10"});
headList.add(entity11);
ExcelExportEntity entity12 = new ExcelExportEntity("审核人","orderAuditName",20);
headList.add(entity12);
ExcelExportEntity entity13 = new ExcelExportEntity("审核时间","orderAuditTime",20);
entity13.setFormat("yyyy-MM-dd HH:mm:ss");
headList.add(entity13);

ExcelExportEntity entity21 = new ExcelExportEntity("客户姓名","cusName",20);
headList.add(entity21);
ExcelExportEntity entity22 = new ExcelExportEntity("客户电话","cusPhone",20);
headList.add(entity22);
ExcelExportEntity entity23 = new ExcelExportEntity("vip卡","vipNum",20);
headList.add(entity23);
ExcelExportEntity entity24 = new ExcelExportEntity("所属军团","legionName",20);
headList.add(entity24);
ExcelExportEntity entity25 = new ExcelExportEntity("所属联盟","unionName",20);
headList.add(entity25);


ExcelExportEntity entity31 = new ExcelExportEntity("领奖人","grantUserName",20);
headList.add(entity31);
ExcelExportEntity entity32 = new ExcelExportEntity("领奖人身份证号","grantUserCard",20);
headList.add(entity32);
ExcelExportEntity entity33 = new ExcelExportEntity("发奖人","grantByName",20);
headList.add(entity33);
ExcelExportEntity entity34 = new ExcelExportEntity("发奖时间","grantTime",20);
entity34.setFormat("yyyy-MM-dd HH:mm:ss");
headList.add(entity34);
ExcelExportEntity entity35 = new ExcelExportEntity("签名图片","signImg",40);
// entity35.setType(BaseEntityTypeConstants.IMAGE_TYPE);
// entity35.setExportImageType(1);
// entity35.setHeight(20);
headList.add(entity35);
return headList;
}
}




+ 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);
}
}




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

@@ -1,10 +1,31 @@
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.WxVtwoCashBackGrant;
import com.iformall.domain.po.WxVtwoPrizeDrawActivity;
import com.iformall.domain.vo.WxVtwoActivityStatisticsVo;
import com.iformall.domain.vo.WxVtwoAwardStatistics;
import com.iformall.enums.EnumOfflineActivityMerchantType;
import com.iformall.enums.EnumOfflineActivityStatus;
import com.iformall.enums.EnumYesOrNo;
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 javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.List;

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

@Autowired
private WxVtwoActivityGrantMapper wxVtwoActivityGrantMapper;

@Override
public void handleFromOrder(WxVtwoActivityGrant activityGrant, List<WxVtwoActivityOrder> orderList, boolean isGrant) {
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;
}

private WxVtwoActivityGrant handleStatisticsVo(WxVtwoActivityStatisticsVo statisticsVo){
WxVtwoActivityGrant activityGrant = new WxVtwoActivityGrant();
activityGrant.updateTenantInfo(statisticsVo);
activityGrant.setActivityId(statisticsVo.getActivityId());
activityGrant.setCreateDateBegin(statisticsVo.getCreateDateBegin());
activityGrant.setCreateDateEnd(statisticsVo.getCreateDateEnd());
activityGrant.setStatus(EnumYesOrNo.YES.getCode());
return activityGrant;
}

@Override
public WxVtwoAwardStatistics activityAwardStatistics(WxVtwoActivityStatisticsVo statisticsVo) {
WxVtwoActivityGrant activityGrant = handleStatisticsVo(statisticsVo);
return wxVtwoActivityGrantMapper.activityAwardStatistics(activityGrant);
}

@Override
public List<WxVtwoAwardStatistics> activityAwardStatisticsChart(WxVtwoActivityStatisticsVo statisticsVo) {
WxVtwoActivityGrant activityGrant = handleStatisticsVo(statisticsVo);
return wxVtwoActivityGrantMapper.activityAwardStatisticsChart(activityGrant);
}

}




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

@@ -1,11 +1,25 @@
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.domain.vo.WxVtwoActivityStatisticsVo;
import com.iformall.domain.vo.WxVtwoAwardStatistics;
import com.iformall.domain.vo.WxVtwoSettlementStatistics;
import com.iformall.enums.EnumOfflineActivityAwardsModeType;
import com.iformall.enums.EnumYesOrNo;
import com.iformall.service.WxVtwoActivityGrantExportService;
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.*;
import java.util.function.Function;
import java.util.stream.Collectors;

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

@Autowired
private WxVtwoActivityGrantSettlementMapper wxVtwoActivityGrantSettlementMapper;

@Autowired
private WxVtwoActivityGrantExportService wxVtwoActivityGrantExportService;

@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 : cmountOrderList){
WxVtwoActivityGrantSettlement settlement = getGrantSettlement(grant,order,idWorker,false);
settlementList.add(settlement);
}
}
}

wxVtwoActivityGrantSettlementMapper.insertList(settlementList);

wxVtwoActivityGrantExportService.saveGrantExport(activityGrant,settlementList);
}

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.setTaxAmount(BigDecimal.ZERO);
settlement.setCreateDate(grant.getUpdateDate());
settlement.setUpdateDate(grant.getUpdateDate());
return settlement;
}


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);
}



@Override
public void saveGrantSettlement(WxVtwoCashBackGrant 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<WxVtwoCashBackGrantAward> grantAwardList = activityGrant.getGrantAwardList();
Map<Integer, List<WxVtwoCashBackGrantAward>> grantAwardMap = grantAwardList.stream().collect(Collectors.groupingBy(WxVtwoCashBackGrantAward::getModeType));
List<WxVtwoCashBackGrantAward> amountGrantAwardList = grantAwardMap.get(EnumOfflineActivityAwardsModeType.AMOUNT.getCode());
List<WxVtwoCashBackGrantAward> 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 (WxVtwoCashBackGrantAward 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 (WxVtwoCashBackGrantAward grant : countGrantAwardList) {
for (WxVtwoActivityOrder order : cmountOrderList){
WxVtwoActivityGrantSettlement settlement = getGrantSettlement(grant,order,idWorker,false);
settlementList.add(settlement);
}
}
}

wxVtwoActivityGrantSettlementMapper.insertList(settlementList);

wxVtwoActivityGrantExportService.saveGrantExport(activityGrant,settlementList);
}

private WxVtwoActivityGrantSettlement getGrantSettlement(WxVtwoCashBackGrantAward 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.setGrantPrice(grant.getCashBack());
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.setTaxAmount(grant.getTaxAmount()
.multiply(settlement.getOrderRatio().divide(new BigDecimal(100)))
.setScale(2, RoundingMode.HALF_UP));
settlement.setCreateDate(grant.getUpdateDate());
settlement.setUpdateDate(grant.getUpdateDate());
return settlement;
}

private WxVtwoActivityGrantSettlement handleStatisticsVo(WxVtwoActivityStatisticsVo statisticsVo){
WxVtwoActivityGrantSettlement grantSettlement = new WxVtwoActivityGrantSettlement();
grantSettlement.updateTenantInfo(statisticsVo);
grantSettlement.setActivityId(statisticsVo.getActivityId());
grantSettlement.setCreateDateBegin(statisticsVo.getCreateDateBegin());
grantSettlement.setCreateDateEnd(statisticsVo.getCreateDateEnd());
grantSettlement.setStatus(EnumYesOrNo.YES.getCode());
grantSettlement.setActivityIdList(statisticsVo.getActivityIdList());
return grantSettlement;
}

@Override
public WxVtwoSettlementStatistics activitySettlementStatistics(WxVtwoActivityStatisticsVo statisticsVo) {
WxVtwoActivityGrantSettlement grantSettlement = handleStatisticsVo(statisticsVo);
WxVtwoSettlementStatistics settlementStatistics = wxVtwoActivityGrantSettlementMapper.settlementStatistics(grantSettlement);
if(settlementStatistics.getGrantPrice() != null && settlementStatistics.getGrantPrice().compareTo(BigDecimal.ZERO) > 0){
settlementStatistics.setMallRatio(settlementStatistics.getMallPrice().divide(settlementStatistics.getGrantPrice(),4,RoundingMode.HALF_UP).doubleValue());
settlementStatistics.setMerchantRatio(1-settlementStatistics.getMallRatio());
}else{
settlementStatistics.setMallRatio(0);
settlementStatistics.setMerchantRatio(0);
}
return settlementStatistics;
}

@Override
public WxVtwoAwardStatistics activityAwardStatistics(WxVtwoActivityStatisticsVo statisticsVo) {
WxVtwoActivityGrantSettlement grantSettlement = handleStatisticsVo(statisticsVo);
return wxVtwoActivityGrantSettlementMapper.activityAwardStatistics(grantSettlement);
}

@Override
public WxVtwoAwardStatistics activityAmountCashBackStatistics(WxVtwoActivityStatisticsVo statisticsVo, List<Long> amountAwardIdList) {
WxVtwoActivityGrantSettlement grantSettlement = handleStatisticsVo(statisticsVo);
if(amountAwardIdList != null && !amountAwardIdList.isEmpty()){
grantSettlement.setAwardIdList(amountAwardIdList);
}else{
grantSettlement.setAwardIdList(Collections.singletonList((long) -1));
}
return wxVtwoActivityGrantSettlementMapper.activityAwardStatistics(grantSettlement);
}

@Override
public List<WxVtwoAwardStatistics> activityAwardStatisticsChart(WxVtwoActivityStatisticsVo statisticsVo) {
WxVtwoActivityGrantSettlement grantSettlement = handleStatisticsVo(statisticsVo);
return wxVtwoActivityGrantSettlementMapper.activityAwardStatisticsChart(grantSettlement);
}

@Override
public List<WxVtwoAwardStatistics> activityAmountCashBackStatisticsChart(WxVtwoActivityStatisticsVo statisticsVo, List<Long> amountAwardIdList) {
WxVtwoActivityGrantSettlement grantSettlement = handleStatisticsVo(statisticsVo);
if(amountAwardIdList != null && !amountAwardIdList.isEmpty()){
grantSettlement.setAwardIdList(amountAwardIdList);
}else{
grantSettlement.setAwardIdList(Collections.singletonList((long) -1));
}
return wxVtwoActivityGrantSettlementMapper.activityAwardStatisticsChart(grantSettlement);
}

}




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

@@ -0,0 +1,216 @@
package com.iformall.service.impl;


import com.iformall.domain.po.WxVtwoActivityAward;
import com.iformall.domain.po.WxVtwoCashBackAward;
import com.iformall.domain.vo.WxVtwoActivityStatisticsVo;
import com.iformall.domain.vo.WxVtwoAwardStatistics;
import com.iformall.domain.vo.WxVtwoAwardGrantStatistics;
import com.iformall.domain.vo.WxVtwoOrderBusinessStatistics;
import com.iformall.enums.EnumOfflineActivityType;
import com.iformall.service.*;
import com.iformall.utils.DateUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;

/**
* @author xiaohu
* @description
* @createDate 2025-05-16 00:37:31
*/
@Service
public class WxVtwoActivityGrantStatisticsServiceImpl implements WxVtwoActivityGrantStatisticsService {

@Autowired
private WxVtwoActivityAwardService wxVtwoActivityAwardService;

@Autowired
private WxVtwoCashBackAwardService wxVtwoCashBackAwardService;

@Autowired
private WxVtwoActivityGrantService wxVtwoActivityGrantService;

@Autowired
private WxVtwoCashBackGrantService wxVtwoCashBackGrantService;

@Autowired
private WxVtwoActivityGrantAwardService wxVtwoActivityGrantAwardService;

@Autowired
private WxVtwoCashBackGrantAwardService wxVtwoCashBackGrantAwardService;

@Autowired
private WxVtwoActivityGrantSettlementService wxVtwoActivityGrantSettlementService;


@Override
public WxVtwoAwardStatistics activityAwardStatistics(WxVtwoActivityStatisticsVo statisticsVo) {
WxVtwoAwardStatistics activityAwardStatistics = wxVtwoActivityGrantSettlementService.activityAwardStatistics(statisticsVo);
if(EnumOfflineActivityType.CASHBACK.getCode().equals(statisticsVo.getActivityType())){
WxVtwoAwardStatistics activityAwardStatistics_1 = wxVtwoCashBackGrantService.activityAwardStatistics(statisticsVo);
activityAwardStatistics.setGrantCount(activityAwardStatistics_1.getGrantCount());
activityAwardStatistics.setOrderCount(activityAwardStatistics_1.getOrderCount());
activityAwardStatistics.setOrderMoney(activityAwardStatistics_1.getOrderMoney());
List<Long> amountAwardIdList = wxVtwoCashBackAwardService.getAmountAwardIdList(statisticsVo.getActivityId(),statisticsVo.getTenantId());
WxVtwoAwardStatistics activityAwardStatistics_2 = wxVtwoActivityGrantSettlementService.activityAmountCashBackStatistics(statisticsVo,amountAwardIdList);
activityAwardStatistics.setAmountCashBack(activityAwardStatistics_2.getAwardPrice());
activityAwardStatistics.setRelatedCashBack(activityAwardStatistics.getAwardPrice().subtract(activityAwardStatistics.getAmountCashBack()));
}else{
WxVtwoAwardStatistics activityAwardStatistics_1 = wxVtwoActivityGrantService.activityAwardStatistics(statisticsVo);
activityAwardStatistics.setGrantCount(activityAwardStatistics_1.getGrantCount());
activityAwardStatistics.setOrderCount(activityAwardStatistics_1.getOrderCount());
activityAwardStatistics.setOrderMoney(activityAwardStatistics_1.getOrderMoney());
WxVtwoAwardStatistics activityAwardStatistics_2 = wxVtwoActivityGrantAwardService.activityAwardCountStatistics(statisticsVo);
activityAwardStatistics.setAwardCount(activityAwardStatistics_2.getAwardCount());
}
return activityAwardStatistics;
}

@Override
public List<WxVtwoAwardStatistics> activityAwardStatisticsChart(WxVtwoActivityStatisticsVo statisticsVo) {
List<WxVtwoAwardStatistics> activityAwardStatistics = wxVtwoActivityGrantSettlementService.activityAwardStatisticsChart(statisticsVo);
Map<String, WxVtwoAwardStatistics> activityAwardStatisticsMap = new HashMap<>();
if(activityAwardStatistics != null && !activityAwardStatistics.isEmpty()){
activityAwardStatisticsMap = activityAwardStatistics.stream().collect(Collectors.toMap(WxVtwoAwardStatistics::getXTime, Function.identity()));
}
Map<String, WxVtwoAwardStatistics> activityGrantStatisticsMap = new HashMap<>();
Map<String, WxVtwoAwardStatistics> activityAmountCashBackStatisticsMap = new HashMap<>();
Map<String, WxVtwoAwardStatistics> activityAwardCountStatisticsMap = new HashMap<>();
if(EnumOfflineActivityType.CASHBACK.getCode().equals(statisticsVo.getActivityType())){
List<WxVtwoAwardStatistics> activityAwardStatistics_1 = wxVtwoCashBackGrantService.activityAwardStatisticsChart(statisticsVo);
if(activityAwardStatistics_1 != null && !activityAwardStatistics_1.isEmpty()){
activityGrantStatisticsMap = activityAwardStatistics_1.stream().collect(Collectors.toMap(WxVtwoAwardStatistics::getXTime, Function.identity()));
}
List<Long> amountAwardIdList = wxVtwoCashBackAwardService.getAmountAwardIdList(statisticsVo.getActivityId(),statisticsVo.getTenantId());
List<WxVtwoAwardStatistics> activityAwardStatistics_2 = wxVtwoActivityGrantSettlementService.activityAmountCashBackStatisticsChart(statisticsVo,amountAwardIdList);
if(activityAwardStatistics_2 != null && !activityAwardStatistics_2.isEmpty()){
activityAmountCashBackStatisticsMap = activityAwardStatistics_2.stream().collect(Collectors.toMap(WxVtwoAwardStatistics::getXTime, Function.identity()));
}

}else{
List<WxVtwoAwardStatistics> activityAwardStatistics_1 = wxVtwoActivityGrantService.activityAwardStatisticsChart(statisticsVo);
if(activityAwardStatistics_1 != null && !activityAwardStatistics_1.isEmpty()){
activityGrantStatisticsMap = activityAwardStatistics_1.stream().collect(Collectors.toMap(WxVtwoAwardStatistics::getXTime, Function.identity()));
}
List<WxVtwoAwardStatistics> activityAwardStatistics_2 = wxVtwoActivityGrantAwardService.activityAwardCountStatisticsChart(statisticsVo);
if(activityAwardStatistics_2 != null && !activityAwardStatistics_2.isEmpty()){
activityAwardCountStatisticsMap = activityAwardStatistics_2.stream().collect(Collectors.toMap(WxVtwoAwardStatistics::getXTime, Function.identity()));
}
}

List<String> tjTimeList = DateUtils.getTjTimeList(DateUtils.date2String(statisticsVo.getCreateDateBegin(),"yyyy-MM-dd"),
DateUtils.date2String(statisticsVo.getCreateDateEnd(),"yyyy-MM-dd"), "0");
List<WxVtwoAwardStatistics> newActivityAwardStatistics = new ArrayList<>();
for (String date : tjTimeList) {
WxVtwoAwardStatistics awardStatistics = activityAwardStatisticsMap.get(date);
if(awardStatistics == null){
awardStatistics = new WxVtwoAwardStatistics();
awardStatistics.setAwardPrice(BigDecimal.ZERO);
awardStatistics.setMallPrice(BigDecimal.ZERO);
awardStatistics.setMerchantPrice(BigDecimal.ZERO);
}
WxVtwoAwardStatistics grantStatistics = activityGrantStatisticsMap.get(date);
if(grantStatistics == null){
awardStatistics.setGrantCount(0);
awardStatistics.setOrderCount(0);
awardStatistics.setOrderMoney(BigDecimal.ZERO);
}else{
awardStatistics.setGrantCount(grantStatistics.getGrantCount());
awardStatistics.setOrderCount(grantStatistics.getOrderCount());
awardStatistics.setOrderMoney(grantStatistics.getOrderMoney());
}
if(EnumOfflineActivityType.CASHBACK.getCode().equals(statisticsVo.getActivityType())){
WxVtwoAwardStatistics amountCashBackStatistics = activityAmountCashBackStatisticsMap.get(date);
if(amountCashBackStatistics == null){
awardStatistics.setAmountCashBack(BigDecimal.ZERO);
awardStatistics.setRelatedCashBack(BigDecimal.ZERO);
}else {
awardStatistics.setAmountCashBack(amountCashBackStatistics.getAwardPrice());
awardStatistics.setRelatedCashBack(awardStatistics.getAwardPrice().subtract(awardStatistics.getAmountCashBack()));
}
}else{
WxVtwoAwardStatistics awardSettlementStatistics = activityAwardCountStatisticsMap.get(date);
if(awardSettlementStatistics == null){
awardStatistics.setAwardCount(0);
}else{
awardStatistics.setAwardCount(awardSettlementStatistics.getAwardCount());
}
}

awardStatistics.setXTime(date.substring(5).replace("-", "/"));
newActivityAwardStatistics.add(awardStatistics);
}
return newActivityAwardStatistics;
}

@Override
public List<WxVtwoAwardGrantStatistics> awardItemStatistics(WxVtwoActivityStatisticsVo statisticsVo) {
List<WxVtwoAwardGrantStatistics> awardGrantStatisticsList = new ArrayList<>();
if(EnumOfflineActivityType.CASHBACK.getCode().equals(statisticsVo.getActivityType())){
List<WxVtwoCashBackAward> activityAwardList = wxVtwoCashBackAwardService.findActivityAwardList(statisticsVo.getActivityId(), statisticsVo.getTenantId());
List<WxVtwoAwardGrantStatistics> awardGrantStatistics = wxVtwoCashBackGrantAwardService.awardItemStatistics(statisticsVo);
Map<Long,WxVtwoAwardGrantStatistics> awardGrantStatisticsMap = new HashMap<>();
BigDecimal totalPrice = BigDecimal.ZERO;
if (awardGrantStatistics != null && !awardGrantStatistics.isEmpty()) {
awardGrantStatisticsMap = awardGrantStatistics.stream().collect(Collectors.toMap(WxVtwoAwardGrantStatistics::getAwardId, Function.identity()));
totalPrice = awardGrantStatistics.stream().map(WxVtwoAwardGrantStatistics::getAwardPrice).reduce(BigDecimal.ZERO, BigDecimal::add);
}
for (WxVtwoCashBackAward award : activityAwardList) {
WxVtwoAwardGrantStatistics awardGrantStatisticsItem = awardGrantStatisticsMap.get(award.getId());
if(awardGrantStatisticsItem == null){
awardGrantStatisticsItem = new WxVtwoAwardGrantStatistics();
awardGrantStatisticsItem.setAwardId(award.getId());
awardGrantStatisticsItem.setAwardName(award.getName());
awardGrantStatisticsItem.setCashBackRatio(award.getCashBackRatio());
awardGrantStatisticsItem.setAwardPrice(BigDecimal.ZERO);
awardGrantStatisticsItem.setPriceRatio((double) 0);
}else{
awardGrantStatisticsItem.setAwardName(award.getName());
awardGrantStatisticsItem.setCashBackRatio(award.getCashBackRatio());
awardGrantStatisticsItem.setPriceRatio(awardGrantStatisticsItem.getAwardPrice().divide(totalPrice,4, RoundingMode.HALF_UP).doubleValue());
}
awardGrantStatisticsList.add(awardGrantStatisticsItem);
}
return awardGrantStatisticsList.stream().sorted(Comparator.comparing(WxVtwoAwardGrantStatistics::getPriceRatio).reversed()).collect(Collectors.toList());
}else{
List<WxVtwoActivityAward> activityAwardList = wxVtwoActivityAwardService.findActivityAwardList(statisticsVo.getActivityId(), statisticsVo.getTenantId());
List<WxVtwoAwardGrantStatistics> awardGrantStatistics = wxVtwoActivityGrantAwardService.awardItemStatistics(statisticsVo);
Map<Long,WxVtwoAwardGrantStatistics> awardGrantStatisticsMap = new HashMap<>();
BigDecimal totalPrice = BigDecimal.ZERO;
Integer totalCount = 0;
if (awardGrantStatistics != null && !awardGrantStatistics.isEmpty()) {
awardGrantStatisticsMap = awardGrantStatistics.stream().collect(Collectors.toMap(WxVtwoAwardGrantStatistics::getAwardId, Function.identity()));
totalPrice = awardGrantStatistics.stream().map(WxVtwoAwardGrantStatistics::getAwardPrice).reduce(BigDecimal.ZERO, BigDecimal::add);
totalCount = awardGrantStatistics.stream().mapToInt(WxVtwoAwardGrantStatistics::getAwardCount).sum();
}
for (WxVtwoActivityAward award : activityAwardList) {
WxVtwoAwardGrantStatistics awardGrantStatisticsItem = awardGrantStatisticsMap.get(award.getId());
if(awardGrantStatisticsItem == null){
awardGrantStatisticsItem = new WxVtwoAwardGrantStatistics();
awardGrantStatisticsItem.setAwardId(award.getId());
awardGrantStatisticsItem.setAwardName(award.getName());
awardGrantStatisticsItem.setAwardCount(0);
awardGrantStatisticsItem.setAwardPrice(BigDecimal.ZERO);
awardGrantStatisticsItem.setPriceRatio((double) 0);
awardGrantStatisticsItem.setCountRatio((double) 0);
}else{
awardGrantStatisticsItem.setAwardName(award.getName());
awardGrantStatisticsItem.setPriceRatio(awardGrantStatisticsItem.getAwardPrice().divide(totalPrice,4, RoundingMode.HALF_UP).doubleValue());
awardGrantStatisticsItem.setCountRatio(new BigDecimal(awardGrantStatisticsItem.getAwardCount()).divide(new BigDecimal(totalCount),4,RoundingMode.HALF_UP).doubleValue());
}
awardGrantStatisticsList.add(awardGrantStatisticsItem);
}
return awardGrantStatisticsList.stream().sorted(Comparator.comparing(WxVtwoAwardGrantStatistics::getCountRatio).reversed()).collect(Collectors.toList());
}
}
}





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

@@ -7,8 +7,6 @@ import com.iformall.domain.po.WxMerchant;
import com.iformall.domain.po.WxOfflineActivityMerchant;
import com.iformall.domain.po.WxVtwoActivityMerchant;
import com.iformall.domain.po.base.TenantEntity;
import com.iformall.enums.EnumOfflineActivityMerchantType;
import com.iformall.enums.EnumYesOrNo;
import com.iformall.service.WxMerchantService;
import com.iformall.service.WxVtwoActivityMerchantService;
import com.iformall.mapper.WxVtwoActivityMerchantMapper;


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

@@ -1,10 +1,34 @@
package com.iformall.service.impl;

import com.aliyun.openservices.shade.org.apache.commons.lang3.StringUtils;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.iformall.domain.po.WxVtwoActivityOrder;
import com.iformall.service.WxVtwoActivityOrderService;
import com.iformall.mapper.WxVtwoActivityOrderMapper;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.iformall.common.IdWorker;
import com.iformall.domain.po.*;
import com.iformall.domain.po.base.BaseEntity;
import com.iformall.domain.po.base.TenantEntity;
import com.iformall.domain.vo.*;
import com.iformall.enums.*;
import com.iformall.mapper.*;
import com.iformall.service.*;
import com.iformall.utils.DateUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.NumberFormat;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;

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

/**
* @author xiaohu
@@ -15,6 +39,467 @@ import org.springframework.stereotype.Service;
public class WxVtwoActivityOrderServiceImpl extends ServiceImpl<WxVtwoActivityOrderMapper, WxVtwoActivityOrder>
implements WxVtwoActivityOrderService{

@Autowired
private WxVtwoActivityOrderMapper wxVtwoActivityOrderMapper;

@Autowired
private WxVtwoActivityGrantOrderMapper wxVtwoActivityGrantOrderMapper;

@Autowired
private WxVtwoActivitySpecialTopicService wxVtwoActivitySpecialTopicService;

@Autowired
private WxMerchantService wxMerchantService;
@Autowired
private WxShopService wxShopService;
@Autowired
private MallUserInfoService mallUserInfoService;
@Autowired
private WxBusinessService wxBusinessService;

@Autowired
private WxCUserBasicInfoService wxCUserBasicInfoService;
@Autowired
private WxCreditHistoryService wxCreditHistoryService;

@Autowired
private ExcelService excelService;

@Override
public PageInfo<WxVtwoActivityOrder> listAsPage(WxVtwoActivityOrder record, Integer pageNum, Integer pageSize) {
handlerQuery(record);
PageInfo<WxVtwoActivityOrder> recordPage = PageHelper.startPage(pageNum, pageSize).doSelectPageInfo(() -> wxVtwoActivityOrderMapper.findList(record));
handlerList(record,recordPage.getList());
return recordPage;
}

@Override
public List<WxVtwoActivityOrder> findList(WxVtwoActivityOrder record, Long activityId) {
handlerQuery(record);
List<WxVtwoActivityOrder> recordList = wxVtwoActivityOrderMapper.findList(record);
handlerList(record,recordList);
handlerOrderStatus(activityId,recordList);
return recordList;
}

private void handlerQuery(WxVtwoActivityOrder record) {
//商户处理
if (StringUtils.isNotBlank(record.getMerchantName())) {
WxMerchant merchant = new WxMerchant();
merchant.updateTenantInfo(record);
merchant.setName(record.getMerchantName());
List<Long> mids = wxMerchantService.findIdList(merchant);
if (null == mids || mids.size() <= 0 ) {
record.setId(-1L);
}else {
record.setMerchantIdList(mids);
}
}
}

private void handlerList(TenantEntity tenantEntity, List<WxVtwoActivityOrder> recordList) {
if (recordList == null || recordList.size() <= 0) {
return;
}
List<Long> merchantIds = recordList.stream().map(WxVtwoActivityOrder::getMerchantId).filter(Objects::nonNull).distinct().collect(Collectors.toList());
List<Long> userIds = recordList.stream().map(WxVtwoActivityOrder::getAuditBy).filter(Objects::nonNull).distinct().collect(Collectors.toList());
Map<Long, String> idAndNamesMap = new HashMap<>();
Map<Long,String> merchantShopNumberMap = new HashMap<>();
if(!merchantIds.isEmpty()){
WxMerchant merchantQ = new WxMerchant();
merchantQ.updateTenantInfo(tenantEntity);
merchantQ.setIds(merchantIds);
idAndNamesMap = wxMerchantService.getIdAndNamesMap(merchantQ);
merchantShopNumberMap = wxShopService.getMerchantShopNumberMap(tenantEntity, merchantIds, EnumYesOrNo.NO.getCode());
}
Map<Long, MallUserInfo> userMap = new HashMap<>();
if(!userIds.isEmpty()){
MallUserInfo userInfoQ = new MallUserInfo();
userInfoQ.updateTenantInfo(tenantEntity);
userMap = mallUserInfoService.getUserMap(userInfoQ);
}

Map<Integer, WxBusiness> bussinessMap = wxBusinessService.findAllMap(tenantEntity);

for (WxVtwoActivityOrder record : recordList) {
if(record.getMerchantId() != null){
record.setMerchantName(idAndNamesMap.get(record.getMerchantId()));
record.setShopNumber(merchantShopNumberMap.get(record.getMerchantId()));
}
if(record.getAuditBy() != null){
record.setAuditByName(userMap.get(record.getAuditBy()).getName());
}
if(record.getBusinessId() != null){
record.setBusinessName(bussinessMap.get(record.getBusinessId()).getTitle());
}
}
}

private void handlerOrderStatus(Long activityId, List<WxVtwoActivityOrder> recordList){
if(activityId == null){
return;
}
if (recordList == null || recordList.size() <= 0) {
return;
}
for (WxVtwoActivityOrder record : recordList) {
if(EnumOfflineActivityRecordStatus.AUDI_SUCCESS.getCode().equals(record.getAuditStatus())){
record.setGrantStatus(EnumYesOrNo.YES.getCode());
}else{
record.setGrantStatus(EnumYesOrNo.NO.getCode());
}
WxVtwoActivityGrantOrder grantOrder = new WxVtwoActivityGrantOrder();
grantOrder.updateTenantInfo(record);
grantOrder.setActivityId(activityId);
grantOrder.setOrderId(record.getId());
grantOrder.setStatus(EnumVtwoActivityGrantStatus.VALID.getCode());
Integer orderGrantCount = wxVtwoActivityGrantOrderMapper.selectCount(new QueryWrapper<>(grantOrder));
if(orderGrantCount > 0){
record.setAuditStatus(EnumOfflineActivityRecordStatus.IS_GRANT.getCode());
}
}
}

@Override
public boolean saveOrUpdate(WxVtwoActivityOrder activityOrder) {
if(activityOrder.getMerchantId() != null){
WxMerchant merchant = wxMerchantService.selectById(activityOrder.getMerchantId());
activityOrder.setBusinessId(merchant.getBusinessId());
}
Date now = new Date();
if(activityOrder.getId() == null){
final IdWorker idWorker = IdWorker.get();
activityOrder.setId(idWorker.nextId());
if(activityOrder.getAuditStatus() == null){
activityOrder.setAuditStatus(EnumOfflineActivityRecordStatus.AUDTING.getCode());
}
activityOrder.setCreateDate(now);
activityOrder.setUpdateDate(now);
wxVtwoActivityOrderMapper.insert(activityOrder);
}
else{
activityOrder.setUpdateDate(now);
wxVtwoActivityOrderMapper.updateById(activityOrder);
}
return true;
}

@Override
public WxVtwoActivityOrder getById(Long id, String tenantId) {
return wxVtwoActivityOrderMapper.selectById(id,tenantId);
}

@Override
public WxVtwoActivityOrder getInfoById(Long id, String tenantId) {
WxVtwoActivityOrder record = getById(id, tenantId);
if(record != null){
WxMerchant merchant = wxMerchantService.selectById(record.getMerchantId());
record.setMerchantName(merchant.getName());
}
return record;
}

@Override
public Map<String, Object> getStatistics(WxVtwoActivityOrder record) {
List<WxVtwoActivityOrderStatistics> auditStatusStatistics = wxVtwoActivityOrderMapper.auditStatusStatistics(record);
Map<String, Object> result = new HashMap<>();
Integer audting = 0, audi_success = 0, audt_fail = 0, invalid = 0;
BigDecimal sum_success = BigDecimal.ZERO, sum_fail = BigDecimal.ZERO;
for(WxVtwoActivityOrderStatistics statistics : auditStatusStatistics){
if(EnumOfflineActivityRecordStatus.AUDTING.getCode().equals(statistics.getAuditStatus())){
audting = statistics.getCount();
} else if (EnumOfflineActivityRecordStatus.AUDI_SUCCESS.getCode().equals(statistics.getAuditStatus())) {
audi_success = statistics.getCount();
sum_success = statistics.getSumMoney();
} else if (EnumOfflineActivityRecordStatus.AUDT_FAIL.getCode().equals(statistics.getAuditStatus())) {
audt_fail = statistics.getCount();
sum_fail = statistics.getSumMoney();
} else if (EnumOfflineActivityRecordStatus.INVALID.getCode().equals(statistics.getAuditStatus())) {
invalid = statistics.getCount();
}
}
result.put("audting",audting);
result.put("audi_success",audi_success);
result.put("sum_success",sum_success);
result.put("audt_fail",audt_fail);
result.put("sum_fail",sum_fail);
result.put("invalid",invalid);
result.put("sum_count",audting+audi_success+audt_fail+invalid);
return result;
}

@Override
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = {Exception.class})
public void auditRecord(WxVtwoActivityOrder record, Long userId) {
Date now = new Date();
record.setUpdateDate(now);
record.setAuditTime(now);
record.setAuditBy(userId);
wxVtwoActivityOrderMapper.updateAuditStatus(record);

WxVtwoActivityOrder activityOrder = wxVtwoActivityOrderMapper.selectById(record.getId(), record.getTenantId());
activityOrder.setAuditBy(record.getAuditBy());
activityOrder.setAuditStatus(record.getAuditStatus());
activityOrder.setAuditBy(record.getAuditBy());
saveCreditHistory(activityOrder);
}

@Override
public void saveCreditHistory(WxVtwoActivityOrder record){
if(!EnumOfflineActivityRecordStatus.AUDI_SUCCESS.getCode().equals(record.getAuditStatus())
&& !EnumOfflineActivityRecordStatus.INVALID.getCode().equals(record.getAuditStatus())){
return;
}

WxVtwoActivitySpecialTopic specialTopic = wxVtwoActivitySpecialTopicService.selectCreditOne(record,record.getCreateDate());
if(specialTopic == null){
return;
}

WxCreditHistory creditHistory = new WxCreditHistory();
creditHistory.setTenantId(record.getFinalTenantId());
creditHistory.setOperatorType(EnumUserType.MALLUSER.getCode());
creditHistory.setOperatorId(record.getAuditBy());
creditHistory.setCreateDate(record.getAuditTime());

creditHistory.setCouponId(record.getId());
creditHistory.setBusinessId(record.getBusinessId());
creditHistory.setMerchantId(record.getMerchantId());

WxCUserBasicInfo cuser = wxCUserBasicInfoService.findInfoByPhone(record, record.getCusPhone());
if(cuser == null){
return;
}
creditHistory.setCUserId(cuser.getId());
creditHistory.setCreditType(EnumScoreType.POINT_CHANGE.getCode());

Integer increasedPoints = record.getIncreasedPoints();
if(increasedPoints == null){
increasedPoints = 0;
}
if(EnumOfflineActivityRecordStatus.AUDI_SUCCESS.getCode().equals(record.getAuditStatus())){
if(increasedPoints > 0){
return;
}
//计算积分
WxVtwoActivityCreditRule creditConfigObject = specialTopic.getCreditConfigObject();
BigDecimal priceCondition = creditConfigObject.getStep();
int baseScore = creditConfigObject.getScore();

if (record.getOrderMoney().compareTo(priceCondition) > 0) {
increasedPoints = record.getOrderMoney().divide(priceCondition,0, RoundingMode.DOWN)
.multiply(BigDecimal.valueOf(baseScore)).intValue();
}
if(increasedPoints == 0){
return;
}
creditHistory.setCreditNum(increasedPoints);
}else if(EnumOfflineActivityRecordStatus.INVALID.getCode().equals(record.getAuditStatus())){
if(increasedPoints == 0){
return;
}
creditHistory.setCreditNum(-increasedPoints);
increasedPoints = 0;
}
if(creditHistory.getCreditNum() > 0){
creditHistory.setChangePurpose("活动订单("+record.getOrderNo()+")新增积分"+creditHistory.getCreditNum());
}else if(creditHistory.getCreditNum() < 0){
creditHistory.setChangePurpose("活动订单("+record.getOrderNo()+")退单-积分扣减"+creditHistory.getCreditNum());
}
creditHistory = wxCreditHistoryService.saveOrUpdate(creditHistory,record);

record.setIncreasedPoints(increasedPoints);
wxVtwoActivityOrderMapper.updateIncreasedPoints(record);
}

@Override
public Map<String, Object> orderStatistics(TenantEntity tenantInfo) {
//最近30天
Date now = new Date();
String monthStartdate = DateUtils.getTimeBefore(30, now);
String yesyeweekDate = DateUtils.getTimeBefore(8, now);//计算周同比时间
String weekStartdate = DateUtils.getTimeBefore(7, now);
String yesyesDate = DateUtils.getTimeBefore(2, now);//计算日同比时间
String yesterdayDate = DateUtils.getTimeBefore(1, now);
String today = DateUtils.getTimeBefore(0, now);

//最近30天数据
WxVtwoActivityOrder recordQ = new WxVtwoActivityOrder();
recordQ.updateTenantInfo(tenantInfo);
recordQ.setCreateDateBegin(DateUtils.stringToDate(monthStartdate));
Integer monthCount = wxVtwoActivityOrderMapper.getCount(recordQ);
//一周前的昨天
recordQ.setCreateDateBegin(DateUtils.stringToDate(yesyeweekDate));
recordQ.setCreateDateEnd(DateUtils.stringToDate(weekStartdate));
Integer yesWeekCount = wxVtwoActivityOrderMapper.getCount(recordQ);
//昨天的昨天
recordQ.setCreateDateBegin(DateUtils.stringToDate(yesyesDate));
recordQ.setCreateDateEnd(DateUtils.stringToDate(yesterdayDate));
Integer yesYesCount = wxVtwoActivityOrderMapper.getCount(recordQ);
//昨天
recordQ.setCreateDateBegin(DateUtils.stringToDate(yesterdayDate));
recordQ.setCreateDateEnd(DateUtils.stringToDate(today));
Integer yesCount = wxVtwoActivityOrderMapper.getCount(recordQ);

Map<String, Object> result = new HashMap<>();
result.put("monthCount",monthCount);

NumberFormat nf = NumberFormat.getPercentInstance();
nf.setMinimumFractionDigits(2);
String dayPercentage = "--";
if (yesYesCount > 0) {
Integer count = yesCount - yesYesCount;
dayPercentage = nf.format(count.doubleValue() / new Double(yesYesCount).doubleValue());
}
result.put("dayPercentage",dayPercentage);
String weekPercentage = "--";
if (yesWeekCount > 0) {
Integer count = yesCount - yesWeekCount;
weekPercentage = nf.format(count.doubleValue() / new Double(yesWeekCount).doubleValue());
}
result.put("weekPercentage",weekPercentage);
return result;
}

@Override
public void exportData(HttpServletRequest request, HttpServletResponse response, WxVtwoActivityOrder record, Long activityId) {
List<WxVtwoActivityOrder> list = this.findList(record, activityId);
excelService.exportExcel(list, null, "活动订单列表", WxVtwoActivityOrder.class, "活动订单列表.xlsx", response, false);
}

@Override
public Integer getWaitAudiCount(TenantEntity tenantInfo) {
WxVtwoActivityOrder record = new WxVtwoActivityOrder();
record.updateTenantInfo(tenantInfo);
record.setAuditStatus(EnumOfflineActivityRecordStatus.AUDTING.getCode());
return wxVtwoActivityOrderMapper.getCount(record);
}

@Override
public WxVtwoActivityOrder getlimitOne(WxVtwoActivityOrder activityOrder) {
activityOrder.setSortColumns(BaseEntity.SortField.CreateDate_DESC);
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;
}

@Override
public Map<Long, WxVtwoActivityOrder> findAuditDetailMap(List<Long> ids, String tenantId) {
WxVtwoActivityOrder orderQ = new WxVtwoActivityOrder();
orderQ.setTenantId(tenantId);
orderQ.setIds(ids);
List<WxVtwoActivityOrder> auditDetailList = wxVtwoActivityOrderMapper.findAuditDetailList(orderQ);

MallUserInfo userInfoQ = new MallUserInfo();
userInfoQ.setTenantId(tenantId);
Map<Long, MallUserInfo> userMap = mallUserInfoService.getUserMap(userInfoQ);

for (WxVtwoActivityOrder record : auditDetailList) {
if(record.getAuditBy() != null){
record.setAuditByName(userMap.get(record.getAuditBy()).getName());
}
}

return auditDetailList.stream().collect(Collectors.toMap(WxVtwoActivityOrder::getId, Function.identity()));
}

private WxVtwoActivityOrder handleStatisticsVo(WxVtwoActivityStatisticsVo statisticsVo){
WxVtwoActivityOrder activityOrder = new WxVtwoActivityOrder();
activityOrder.updateTenantInfo(statisticsVo);
activityOrder.setCreateDateBegin(statisticsVo.getCreateDateBegin());
activityOrder.setCreateDateEnd(statisticsVo.getCreateDateEnd());
activityOrder.setAuditStatus(EnumOfflineActivityRecordStatus.AUDI_SUCCESS.getCode());
return activityOrder;
}

@Override
public WxVtwoOrderCountStatistics orderCountStatistics(WxVtwoActivityStatisticsVo statisticsVo) {
WxVtwoActivityOrder activityOrder = handleStatisticsVo(statisticsVo);
return wxVtwoActivityOrderMapper.getCountStatistics(activityOrder);
}

@Override
public List<WxVtwoOrderCountStatistics> orderCountStatisticsChart(WxVtwoActivityStatisticsVo statisticsVo) {
WxVtwoActivityOrder activityOrder = handleStatisticsVo(statisticsVo);
List<WxVtwoOrderCountStatistics> countStatisticsChart = wxVtwoActivityOrderMapper.getCountStatisticsChart(activityOrder);
Map<String, WxVtwoOrderCountStatistics> countStatisticsChartMap = new HashMap<>();
if(countStatisticsChart != null && !countStatisticsChart.isEmpty()){
countStatisticsChartMap = countStatisticsChart.stream().collect(Collectors.toMap(WxVtwoOrderCountStatistics::getXTime, Function.identity()));
}
List<String> tjTimeList = DateUtils.getTjTimeList(DateUtils.date2String(activityOrder.getCreateDateBegin(),"yyyy-MM-dd"),
DateUtils.date2String(activityOrder.getCreateDateEnd(),"yyyy-MM-dd"), "0");
List<WxVtwoOrderCountStatistics> newCountStatisticsChart = new ArrayList<>();
for (String date : tjTimeList) {
WxVtwoOrderCountStatistics countStatistics = countStatisticsChartMap.get(date);
if(countStatistics == null){
countStatistics = new WxVtwoOrderCountStatistics();
countStatistics.setUserCount(0);
countStatistics.setOrderCount(0);
countStatistics.setOrderMoney(BigDecimal.ZERO);
countStatistics.setMerchantCount(0);
}
countStatistics.setXTime(date.substring(5).replace("-", "/"));
newCountStatisticsChart.add(countStatistics);
}
return newCountStatisticsChart;
}

@Override
public List<WxVtwoOrderBusinessStatistics> orderBusinessStatistics(WxVtwoActivityStatisticsVo statisticsVo) {
WxVtwoActivityOrder activityOrder = handleStatisticsVo(statisticsVo);
List<WxVtwoOrderBusinessStatistics> businessStatistics = wxVtwoActivityOrderMapper.getBusinessStatistics(activityOrder);
if(businessStatistics != null && !businessStatistics.isEmpty()){
Map<Integer, WxBusiness> bussinessMap = wxBusinessService.findAllMap(activityOrder);
BigDecimal totalMoney = businessStatistics.stream().map(WxVtwoOrderBusinessStatistics::getOrderMoney).reduce(BigDecimal.ZERO, BigDecimal::add);
int totalCount = businessStatistics.size();
for (WxVtwoOrderBusinessStatistics statistics : businessStatistics){
statistics.setBusinessName(statistics.getBusinessId() == null?"其他":bussinessMap.get(statistics.getBusinessId()).getTitle());
statistics.setMoneyRatio(statistics.getOrderMoney().divide(totalMoney,4, RoundingMode.HALF_UP).doubleValue());
statistics.setCountRatio(new BigDecimal(statistics.getBusinessCount()).divide(new BigDecimal(totalCount),4, RoundingMode.HALF_UP).doubleValue());
}
return businessStatistics.stream().sorted(Comparator.comparing(WxVtwoOrderBusinessStatistics::getMoneyRatio).reversed()).collect(Collectors.toList());
}
return Collections.emptyList();
}

}




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

@@ -1,10 +1,32 @@
package com.iformall.service.impl;

import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.iformall.domain.po.WxVtwoActivitySpecialTopic;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.iformall.common.IdWorker;
import com.iformall.common.Result;
import com.iformall.domain.po.*;
import com.iformall.domain.po.base.TenantEntity;
import com.iformall.domain.vo.*;
import com.iformall.enums.EnumOfflineActivityMerchantType;
import com.iformall.enums.EnumOfflineActivityRecordStatus;
import com.iformall.enums.EnumOfflineActivityStatus;
import com.iformall.enums.EnumYesOrNo;
import com.iformall.exception.MallinkException;
import com.iformall.mapper.WxVtwoSpecialTopicActivityMapper;
import com.iformall.service.WxVtwoActivitySpecialTopicService;
import com.iformall.mapper.WxVtwoActivitySpecialTopicMapper;
import com.iformall.service.WxVtwoSpecialTopicActivityService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;

/**
* @author xiaohu
@@ -15,6 +37,154 @@ import org.springframework.stereotype.Service;
public class WxVtwoActivitySpecialTopicServiceImpl extends ServiceImpl<WxVtwoActivitySpecialTopicMapper, WxVtwoActivitySpecialTopic>
implements WxVtwoActivitySpecialTopicService{

@Autowired
private WxVtwoActivitySpecialTopicMapper wxVtwoActivitySpecialTopicMapper;

@Autowired
private WxVtwoSpecialTopicActivityMapper wxVtwoSpecialTopicActivityMapper;

@Autowired
private WxVtwoSpecialTopicActivityService wxVtwoSpecialTopicActivityService;

@Override
public PageInfo<WxVtwoActivitySpecialTopic> listAsPage(WxVtwoActivitySpecialTopic specialTopic, Integer pageNum, Integer pageSize) {
handlerQuery(specialTopic);
PageInfo<WxVtwoActivitySpecialTopic> activityPageInfo = PageHelper.startPage(pageNum, pageSize).doSelectPageInfo(() -> wxVtwoActivitySpecialTopicMapper.findList(specialTopic));
handlerReturnList(activityPageInfo.getList());
return activityPageInfo;
}

private void handlerQuery(WxVtwoActivitySpecialTopic specialTopic) {
if (null != specialTopic.getStatus()) {
//已上架
if(EnumOfflineActivityStatus.ON_LINE.getCode().equals(specialTopic.getStatus())){
specialTopic.setValidStatus(EnumYesOrNo.NO.getCode());
}
//已过期
else if(EnumOfflineActivityStatus.EXPIRE.getCode().equals(specialTopic.getStatus())){
specialTopic.setStatus(null);
specialTopic.setValidStatus(EnumYesOrNo.YES.getCode());
}
}
}

private void handlerReturnList(List<WxVtwoActivitySpecialTopic> list) {
if (null != list && !list.isEmpty()) {
Date now = new Date();
for (WxVtwoActivitySpecialTopic specialTopic : list) {
if(now.after(specialTopic.getEndTime())){
specialTopic.setStatus(EnumOfflineActivityStatus.EXPIRE.getCode());
}
WxVtwoSpecialTopicActivity specialTopicActivityQ = new WxVtwoSpecialTopicActivity();
specialTopicActivityQ.updateTenantInfo(specialTopic);
specialTopicActivityQ.setSpecialTopicId(specialTopic.getId());
Integer activityCount = wxVtwoSpecialTopicActivityMapper.selectCount(new QueryWrapper<>(specialTopicActivityQ));
specialTopic.setActivityCount(activityCount);
}
}
}

@Override
public int selectCreditCount(WxVtwoActivitySpecialTopic specialTopic) {
specialTopic.setCreditOnOff(EnumYesOrNo.YES.getCode());
return wxVtwoActivitySpecialTopicMapper.selectCreditCount(specialTopic);
}

@Override
@Transactional(rollbackFor = Exception.class)
public boolean saveOrUpdate(WxVtwoActivitySpecialTopic specialTopic) {
handlerActivityRules(specialTopic);
Date now = new Date();
if(specialTopic.getId() == null){
final IdWorker idWorker = IdWorker.get();
specialTopic.setId(idWorker.nextId());
specialTopic.setCreateDate(now);
specialTopic.setCreateDate(now);
specialTopic.setStatus(EnumOfflineActivityStatus.OFF_LINE.getCode());
wxVtwoActivitySpecialTopicMapper.insert(specialTopic);
}
else{
specialTopic.setUpdateDate(now);
wxVtwoActivitySpecialTopicMapper.updateById(specialTopic);
}
if(specialTopic.getActivityList() != null && !specialTopic.getActivityList().isEmpty()){
wxVtwoSpecialTopicActivityService.saveFromSpecialTopic(specialTopic,specialTopic.getActivityList());
}
return true;
}

private void handlerActivityRules(WxVtwoActivitySpecialTopic specialTopic) {
if(specialTopic.getCreditConfigObject() != null){
specialTopic.setCreditConfig(JSONObject.toJSONString(specialTopic.getCreditConfigObject()));
}
}

@Override
public WxVtwoActivitySpecialTopic getInfoById(Long id, String tenantId) {
WxVtwoActivitySpecialTopic specialTopic = wxVtwoActivitySpecialTopicMapper.selectById(id, tenantId);
if (specialTopic == null) {
return null;
}
if(StringUtils.isNotBlank(specialTopic.getCreditConfig())){
specialTopic.setCreditConfigObject(JSONObject.parseObject(specialTopic.getCreditConfig(), WxVtwoActivityCreditRule.class));
}

WxVtwoSpecialTopicActivity specialTopicActivityQ = new WxVtwoSpecialTopicActivity();
specialTopicActivityQ.updateTenantInfo(specialTopic);
specialTopicActivityQ.setSpecialTopicId(id);
List<WxVtwoSpecialTopicActivity> activityList = wxVtwoSpecialTopicActivityMapper.findList(specialTopicActivityQ);
specialTopic.setActivityList(activityList);
return specialTopic;
}

@Override
public WxVtwoActivitySpecialTopic getById(Long id, String tenantId) {
WxVtwoActivitySpecialTopic specialTopic = wxVtwoActivitySpecialTopicMapper.selectById(id, tenantId);
if (specialTopic == null) {
return null;
}
if(StringUtils.isNotBlank(specialTopic.getCreditConfig())){
specialTopic.setCreditConfigObject(JSONObject.parseObject(specialTopic.getCreditConfig(), WxVtwoActivityCreditRule.class));
}
return specialTopic;
}

@Override
public WxVtwoActivitySpecialTopic selectCreditOne(TenantEntity tenantEntity, Date orderDate) {
WxVtwoActivitySpecialTopic specialTopic = wxVtwoActivitySpecialTopicMapper.selectCreditOne(tenantEntity.getTenantId(),EnumYesOrNo.YES.getCode(),
orderDate,EnumOfflineActivityStatus.ON_LINE.getCode());
if (specialTopic == null) {
return null;
}
specialTopic.setCreditConfigObject(JSONObject.parseObject(specialTopic.getCreditConfig(), WxVtwoActivityCreditRule.class));
return specialTopic;
}

@Override
public void handleStatisticsVo(WxVtwoActivityStatisticsVo statisticsVo) {

WxVtwoActivitySpecialTopic specialTopic = this.getInfoById(statisticsVo.getId(), statisticsVo.getTenantId());
if (specialTopic == null) {
throw new MallinkException(Result.ERROR,"未查询到活动");
}
if(statisticsVo.getCreateDateBegin() == null || statisticsVo.getCreateDateBegin().before(specialTopic.getStartTime())){
statisticsVo.setCreateDateBegin(specialTopic.getStartTime());
}
if(statisticsVo.getCreateDateEnd() == null || statisticsVo.getCreateDateEnd().after(specialTopic.getEndTime())){
statisticsVo.setCreateDateEnd(specialTopic.getEndTime());
}
Date now = new Date();
if(statisticsVo.getCreateDateEnd().after(now)){
statisticsVo.setCreateDateEnd(now);
}
if(statisticsVo.getCreateDateBegin().after(statisticsVo.getCreateDateEnd())){
throw new MallinkException(Result.ERROR,"筛选时间不在活动时间范围内");
}

List<Long> activityIdList = specialTopic.getActivityList().stream().map(a -> a.getActivityId()).collect(Collectors.toList());
statisticsVo.setActivityIdList(activityIdList);
}

}




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

@@ -1,29 +1,36 @@
package com.iformall.service.impl;

import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.iformall.common.IdWorker;
import com.iformall.common.Result;
import com.iformall.domain.po.*;
import com.iformall.domain.po.base.TenantEntity;
import com.iformall.domain.vo.WxVtwoActivityGrantRule;
import com.iformall.domain.vo.WxVtwoActivityOrderStatistics;
import com.iformall.domain.vo.WxVtwoActivityRule;
import com.iformall.domain.vo.WxVtwoActivityRuleDetail;
import com.iformall.enums.EnumOfflineActivityMerchantType;
import com.iformall.enums.EnumOfflineActivityRecordStatus;
import com.iformall.enums.EnumOfflineActivityStatus;
import com.iformall.enums.EnumYesOrNo;
import com.iformall.enums.*;
import com.iformall.exception.MallinkException;
import com.iformall.mapper.*;
import com.iformall.service.WxVtwoActivityAwardService;
import com.iformall.service.WxVtwoActivityMerchantService;
import com.iformall.service.WxVtwoAmountGiftActivityService;
import jodd.util.StringUtil;
import com.iformall.service.*;
import com.iformall.utils.BeanUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

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

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

/**
* @author xiaohu
@@ -37,9 +44,6 @@ public class WxVtwoAmountGiftActivityServiceImpl extends ServiceImpl<WxVtwoAmoun
@Autowired
private WxVtwoAmountGiftActivityMapper wxVtwoAmountGiftActivityMapper;

@Autowired
private WxVtwoActivityAwardMapper wxVtwoActivityAwardMapper;

@Autowired
private WxVtwoActivityMerchantMapper wxVtwoActivityMerchantMapper;

@@ -49,12 +53,36 @@ public class WxVtwoAmountGiftActivityServiceImpl extends ServiceImpl<WxVtwoAmoun
@Autowired
private WxVtwoActivityGrantSettlementMapper wxVtwoActivityGrantSettlementMapper;

@Autowired
private WxVtwoSpecialTopicActivityMapper wxVtwoSpecialTopicActivityMapper;

@Autowired
private WxVtwoActivityAwardService wxVtwoActivityAwardService;

@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 WxVtwoActivityGrantExportService wxVtwoActivityGrantExportService;

@Autowired
private ExcelService excelService;

@Override
public PageInfo<WxVtwoAmountGiftActivity> listAsPage(WxVtwoAmountGiftActivity amountGiftActivity, Integer pageNum, Integer pageSize) {
handlerQuery(amountGiftActivity);
@@ -154,6 +182,7 @@ public class WxVtwoAmountGiftActivityServiceImpl extends ServiceImpl<WxVtwoAmoun
}
wxVtwoActivityMerchantService.saveFromActivity(amountGiftActivity,amountGiftActivity.getId(),amountGiftActivity.getMerchantIdList());
}
updateSpecialTopicActivity(amountGiftActivity);
return true;
}

@@ -166,31 +195,197 @@ public class WxVtwoAmountGiftActivityServiceImpl extends ServiceImpl<WxVtwoAmoun
}
}

private void updateSpecialTopicActivity(WxVtwoAmountGiftActivity amountGiftActivity){
WxVtwoSpecialTopicActivity specialTopicActivity = new WxVtwoSpecialTopicActivity();
specialTopicActivity.updateTenantInfo(amountGiftActivity);
specialTopicActivity.setActivityId(amountGiftActivity.getId());
specialTopicActivity.setActivityType(EnumOfflineActivityType.GIFT.getCode());
specialTopicActivity.setActivityName(amountGiftActivity.getName());
specialTopicActivity.setActivityCreateDate(amountGiftActivity.getCreateDate());
specialTopicActivity.setActivityStartTime(amountGiftActivity.getStartTime());
specialTopicActivity.setActivityEndTime(amountGiftActivity.getEndTime());
specialTopicActivity.setActivityStatus(amountGiftActivity.getStatus());
specialTopicActivity.setUpdateDate(amountGiftActivity.getUpdateDate());
wxVtwoSpecialTopicActivityMapper.updateByActivity(specialTopicActivity);
}

@Override
public boolean updateById(WxVtwoAmountGiftActivity amountGiftActivity) {
amountGiftActivity.setUpdateDate(new Date());
wxVtwoAmountGiftActivityMapper.updateById(amountGiftActivity);
updateSpecialTopicActivity(amountGiftActivity);
return true;
}

@Override
public WxVtwoAmountGiftActivity getInfoById(Long id, String tenantId) {
WxVtwoAmountGiftActivity amountGiftActivity = wxVtwoAmountGiftActivityMapper.selectById(id, tenantId);
if (amountGiftActivity == null) {
return null;
}
if(StringUtil.isNotBlank(amountGiftActivity.getAmountRules())){
if(StringUtils.isNotBlank(amountGiftActivity.getAmountRules())){
amountGiftActivity.setAmountRulesObject(JSONObject.parseArray(amountGiftActivity.getAmountRules(), WxVtwoActivityRuleDetail.class));
}
if(StringUtil.isNotBlank(amountGiftActivity.getRelatedRules())){
if(StringUtils.isNotBlank(amountGiftActivity.getRelatedRules())){
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);
amountGiftActivity.setMerchanList(activityMerchantList);
amountGiftActivity.setMerchantList(activityMerchantList);
}
return amountGiftActivity;
}

@Override
public WxVtwoAmountGiftActivity getById(Long id, String tenantId) {
return wxVtwoAmountGiftActivityMapper.selectById(id, tenantId);
}

@Override
public void handleSpecialTopicActivity(TenantEntity tenantEntity, WxVtwoSpecialTopicActivity activity) {
WxVtwoAmountGiftActivity amountGiftActivity = wxVtwoAmountGiftActivityMapper.selectById(activity.getActivityId(), tenantEntity.getTenantId());
if(amountGiftActivity == null){
throw new MallinkException(Result.ERROR,"未查询到活动");
}
activity.setActivityId(amountGiftActivity.getId());
activity.setActivityType(EnumOfflineActivityType.GIFT.getCode());
activity.setActivityName(amountGiftActivity.getName());
activity.setActivityCreateDate(amountGiftActivity.getCreateDate());
activity.setActivityStartTime(amountGiftActivity.getStartTime());
activity.setActivityEndTime(amountGiftActivity.getEndTime());
activity.setActivityStatus(amountGiftActivity.getStatus());
}

@Override
public void handlerGrantAwardPage(WxVtwoAmountGiftActivity amountGiftActivity,WxVtwoActivityGrant activityGrant) {

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

wxVtwoActivityGrantService.handleFromOrder(activityGrant,orderList,false);

activityGrant.setAwardList(amountGiftActivity.getAwardList());

List<WxVtwoActivityGrantAward> grantAwardList = new ArrayList<>();
if(EnumOfflineActivityMode.ONE.getCode().equals(amountGiftActivity.getAmountModel())){
for(WxVtwoActivityOrder order:orderList){
Integer awardGrade = 0;
for (WxVtwoActivityRuleDetail rule :amountGiftActivity.getAmountRulesObject()){
if((rule.getMinAmount() == null || order.getOrderMoney().compareTo(rule.getMinAmount()) >= 0)
&& (rule.getMaxAmount() == null || order.getOrderMoney().compareTo(rule.getMaxAmount()) <= 0)){
awardGrade = rule.getAwardGrade();
}
}
if(awardGrade != null){
WxVtwoActivityGrantAward grantAward = new WxVtwoActivityGrantAward();
grantAward.setOrderId(order.getId());
grantAward.setModeType(EnumOfflineActivityAwardsModeType.AMOUNT.getCode());
grantAward.setName("订单赠礼("+order.getOrderNo()+")");
grantAward.setAwardGrade(awardGrade);
grantAwardList.add(grantAward);
}
}
}else{
BigDecimal orderMoneySum = orderList.stream().filter(order -> EnumYesOrNo.YES.getCode().equals(order.getIsAmount()))
.map(WxVtwoActivityOrder::getOrderMoney).reduce(BigDecimal.ZERO, BigDecimal::add);
Integer awardGrade = 0;
for (WxVtwoActivityRuleDetail rule :amountGiftActivity.getAmountRulesObject()){
if((rule.getMinAmount() == null || orderMoneySum.compareTo(rule.getMinAmount()) >= 0)
&& (rule.getMaxAmount() == null || orderMoneySum.compareTo(rule.getMaxAmount()) <= 0)){
awardGrade = rule.getAwardGrade();
}
}
if(awardGrade != null){
WxVtwoActivityGrantAward grantAward = new WxVtwoActivityGrantAward();
grantAward.setModeType(EnumOfflineActivityAwardsModeType.AMOUNT.getCode());
grantAward.setName("订单金额赠礼");
grantAward.setAwardGrade(awardGrade);
grantAwardList.add(grantAward);
}
}

//联单
Integer jointCount = wxVtwoActivityOrderService.getJointCount(amountGiftActivity.getRelatedModel(),orderList);
if(jointCount != 0){
Map<Integer, WxVtwoActivityRuleDetail> jointCountMap = amountGiftActivity.getRelatedRulesObject().stream().collect(toMap(WxVtwoActivityRuleDetail::getRelatedCount, Function.identity()));
WxVtwoActivityRuleDetail relatedRule = jointCountMap.get(jointCount);
if(relatedRule != null && relatedRule.getAwardGrade() != null){
Integer awardGrade = relatedRule.getAwardGrade();
WxVtwoActivityGrantAward grantAward = new WxVtwoActivityGrantAward();
grantAward.setModeType(EnumOfflineActivityAwardsModeType.COUNT.getCode());
grantAward.setName("联单赠礼");
grantAward.setAwardGrade(awardGrade);
grantAwardList.add(grantAward);
}
}
activityGrant.setGrantAwardList(grantAwardList);
}

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

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

wxVtwoActivityGrantService.handleFromOrder(activityGrant,orderList,false);

wxVtwoActivityGrantService.saveOrUpdate(activityGrant);

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

wxVtwoActivityGrantAwardService.saveGrantAward(activityGrant,amountGiftActivity.getAwardList());

wxVtwoActivityGrantSettlementService.saveGrantSettlement(activityGrant);
}

@Override
public void grantExport(HttpServletRequest request, HttpServletResponse response, WxVtwoActivityGrant activityGrant) {

List<WxVtwoActivityAward> activityAwardList = wxVtwoActivityAwardService.findActivityAwardList(activityGrant.getActivityId(), activityGrant.getTenantId());
if(activityAwardList == null || activityAwardList.isEmpty()){
throw new MallinkException(Result.ERROR,"未查询到活动");
}

List<ExcelExportEntity> headList = wxVtwoActivityGrantExportService.getExportHeadList();
for (WxVtwoActivityAward activityAward:activityAwardList){
ExcelExportEntity entity_ = new ExcelExportEntity(activityAward.getName(),String.valueOf(activityAward.getId())+"_count",20);
headList.add(entity_);
}

ExcelExportEntity entity1 = new ExcelExportEntity("奖品总价值","grantPrice",20);
headList.add(entity1);
ExcelExportEntity entity2 = new ExcelExportEntity("商管承担总比例","mallShareRate",20);
headList.add(entity2);
ExcelExportEntity entity3= new ExcelExportEntity("商户承担总比例","merchantShareRate",20);
headList.add(entity3);
ExcelExportEntity entity4 = new ExcelExportEntity("商管承担总金额","mallSharePrice",20);
headList.add(entity4);
ExcelExportEntity entity5= new ExcelExportEntity("商户承担总金额","merchantSharePrice",20);
headList.add(entity5);
ExcelExportEntity entity6= new ExcelExportEntity("备注","grantRemark",20);
headList.add(entity6);

List<WxVtwoActivityGrantExport> activityGrantExportList = wxVtwoActivityGrantExportService.findActivityGrantList(activityGrant.getActivityId(),activityGrant.getTenantId());
List<Map<String, Object>> grantObjectList = new ArrayList<>();
if(activityGrantExportList != null && !activityGrantExportList.isEmpty()){
grantObjectList = activityGrantExportList.stream().map(e -> {
Map<String, Object> map = new HashMap<>();
try {
Map<Long, Integer> awardCountMap = JSONObject.parseArray(e.getGrantDetail(), WxVtwoActivityGrantSettlement.class).stream().collect(groupingBy(WxVtwoActivityGrantSettlement::getAwardId, summingInt(WxVtwoActivityGrantSettlement::getAwardCount)));
map = BeanUtils.toMap(e);
for (Long awardId : awardCountMap.keySet()) {
map.put(String.valueOf(awardId) + "_count", awardCountMap.get(awardId));
}
} catch (Exception ex) {
}
return map;
}).collect(toList());
}
excelService.exportExcel(headList, grantObjectList, null, "赠礼活动发放明细", "赠礼活动发放明细.xlsx",true, response);
}

}




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

@@ -1,29 +1,38 @@
package com.iformall.service.impl;

import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.iformall.common.IdWorker;
import com.iformall.common.Result;
import com.iformall.domain.po.*;
import com.iformall.domain.po.base.TenantEntity;
import com.iformall.domain.vo.WxVtwoActivityOrderStatistics;
import com.iformall.domain.vo.WxVtwoActivityRuleDetail;
import com.iformall.domain.vo.WxVtwoActivityTaxDeductionRule;
import com.iformall.enums.*;
import com.iformall.exception.MallinkException;
import com.iformall.mapper.*;
import com.iformall.service.WxVtwoActivityAwardService;
import com.iformall.service.WxVtwoActivityMerchantService;
import com.iformall.service.WxVtwoCashBackActivityService;
import com.iformall.service.WxVtwoCashBackAwardService;
import jodd.util.StringUtil;
import com.iformall.service.*;
import com.iformall.utils.BeanUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

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

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

/**
* @author xiaohu
* @description 针对表【wx_vtwo_cash_back_activity(线下返现活动)】的数据库操作Service实现
@@ -36,9 +45,6 @@ public class WxVtwoCashBackActivityServiceImpl extends ServiceImpl<WxVtwoCashBac
@Autowired
private WxVtwoCashBackActivityMapper wxVtwoCashBackActivityMapper;

@Autowired
private WxVtwoCashBackAwardMapper wxVtwoCashBackAwardMapper;

@Autowired
private WxVtwoActivityMerchantMapper wxVtwoActivityMerchantMapper;

@@ -48,12 +54,36 @@ public class WxVtwoCashBackActivityServiceImpl extends ServiceImpl<WxVtwoCashBac
@Autowired
private WxVtwoActivityGrantSettlementMapper wxVtwoActivityGrantSettlementMapper;

@Autowired
private WxVtwoSpecialTopicActivityMapper wxVtwoSpecialTopicActivityMapper;

@Autowired
private WxVtwoCashBackAwardService wxVtwoCashBackAwardService;

@Autowired
private WxVtwoActivityMerchantService wxVtwoActivityMerchantService;

@Autowired
private WxVtwoActivityOrderService wxVtwoActivityOrderService;

@Autowired
private WxVtwoCashBackGrantService wxVtwoCashBackGrantService;

@Autowired
private WxVtwoCashBackGrantAwardService wxVtwoCashBackGrantAwardService;

@Autowired
private WxVtwoActivityGrantOrderService wxVtwoActivityGrantOrderService;

@Autowired
private WxVtwoActivityGrantSettlementService wxVtwoActivityGrantSettlementService;

@Autowired
private WxVtwoActivityGrantExportService wxVtwoActivityGrantExportService;

@Autowired
private ExcelService excelService;

@Override
public PageInfo<WxVtwoCashBackActivity> listAsPage(WxVtwoCashBackActivity cashBackActivity, Integer pageNum, Integer pageSize) {
handlerQuery(cashBackActivity);
@@ -129,6 +159,7 @@ public class WxVtwoCashBackActivityServiceImpl extends ServiceImpl<WxVtwoCashBac
@Override
@Transactional(rollbackFor = Exception.class)
public boolean saveOrUpdate(WxVtwoCashBackActivity cashBackActivity) {
handlerActivityRules(cashBackActivity);
Date now = new Date();
if(cashBackActivity.getId() == null){
final IdWorker idWorker = IdWorker.get();
@@ -153,6 +184,35 @@ public class WxVtwoCashBackActivityServiceImpl extends ServiceImpl<WxVtwoCashBac
}
wxVtwoActivityMerchantService.saveFromActivity(cashBackActivity,cashBackActivity.getId(),cashBackActivity.getMerchantIdList());
}
updateSpecialTopicActivity(cashBackActivity);
return true;
}

private void handlerActivityRules(WxVtwoCashBackActivity cashBackActivity) {
if(cashBackActivity.getTaxDeductionRulesObject() != null){
cashBackActivity.setTaxDeductionRules(JSONObject.toJSONString(cashBackActivity.getTaxDeductionRulesObject()));
}
}

private void updateSpecialTopicActivity(WxVtwoCashBackActivity cashBackActivity){
WxVtwoSpecialTopicActivity specialTopicActivity = new WxVtwoSpecialTopicActivity();
specialTopicActivity.updateTenantInfo(cashBackActivity);
specialTopicActivity.setActivityId(cashBackActivity.getId());
specialTopicActivity.setActivityType(EnumOfflineActivityType.CASHBACK.getCode());
specialTopicActivity.setActivityName(cashBackActivity.getName());
specialTopicActivity.setActivityCreateDate(cashBackActivity.getCreateDate());
specialTopicActivity.setActivityStartTime(cashBackActivity.getStartTime());
specialTopicActivity.setActivityEndTime(cashBackActivity.getEndTime());
specialTopicActivity.setActivityStatus(cashBackActivity.getStatus());
specialTopicActivity.setUpdateDate(cashBackActivity.getUpdateDate());
wxVtwoSpecialTopicActivityMapper.updateByActivity(specialTopicActivity);
}

@Override
public boolean updateById(WxVtwoCashBackActivity cashBackActivity) {
cashBackActivity.setUpdateDate(new Date());
wxVtwoCashBackActivityMapper.updateById(cashBackActivity);
updateSpecialTopicActivity(cashBackActivity);
return true;
}

@@ -163,21 +223,111 @@ public class WxVtwoCashBackActivityServiceImpl extends ServiceImpl<WxVtwoCashBac
return null;
}

WxVtwoCashBackAward cashBackAwardQ = new WxVtwoCashBackAward();
cashBackAwardQ.setTenantId(tenantId);
cashBackAwardQ.setActivityId(id);
List<WxVtwoCashBackAward> activityAwardList = wxVtwoCashBackAwardMapper.findList(cashBackAwardQ);
if(StringUtils.isNotBlank(cashBackActivity.getTaxDeductionRules())){
cashBackActivity.setTaxDeductionRulesObject(JSONObject.parseObject(cashBackActivity.getTaxDeductionRules(), WxVtwoActivityTaxDeductionRule.class));
}

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()));

if(!EnumOfflineActivityMerchantType.ALL.getCode().equals(cashBackActivity.getMerchantRule())){
List<WxVtwoActivityMerchant> activityMerchantList = wxVtwoActivityMerchantService.getActivityMerchantList(id,tenantId);
cashBackActivity.setMerchanList(activityMerchantList);
cashBackActivity.setMerchantList(activityMerchantList);
}
return cashBackActivity;
}

@Override
public WxVtwoCashBackActivity getById(Long id, String tenantId) {
return wxVtwoCashBackActivityMapper.selectById(id, tenantId);
}

@Override
public void handleSpecialTopicActivity(TenantEntity tenantEntity, WxVtwoSpecialTopicActivity activity) {
WxVtwoCashBackActivity cashBackActivity = wxVtwoCashBackActivityMapper.selectById(activity.getActivityId(), tenantEntity.getTenantId());
if(cashBackActivity == null){
throw new MallinkException(Result.ERROR,"未查询到活动");
}
activity.setActivityId(cashBackActivity.getId());
activity.setActivityType(EnumOfflineActivityType.CASHBACK.getCode());
activity.setActivityName(cashBackActivity.getName());
activity.setActivityCreateDate(cashBackActivity.getCreateDate());
activity.setActivityStartTime(cashBackActivity.getStartTime());
activity.setActivityEndTime(cashBackActivity.getEndTime());
activity.setActivityStatus(cashBackActivity.getStatus());
}

@Override
public void handlerGrantAwardPage(WxVtwoCashBackActivity cashBackActivity,WxVtwoCashBackGrant activityGrant) {

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

wxVtwoCashBackGrantService.handleFromOrder(activityGrant,orderList,false);

wxVtwoCashBackGrantAwardService.handleGrantAwardList(cashBackActivity, activityGrant, orderList);

}


@Override
@Transactional(rollbackFor = Exception.class)
public void grantAward(WxVtwoCashBackActivity cashBackActivity,WxVtwoCashBackGrant activityGrant) {

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

wxVtwoCashBackGrantService.handleFromOrder(activityGrant,orderList,false);

wxVtwoCashBackGrantAwardService.handleGrantAwardList(cashBackActivity, activityGrant, orderList);

wxVtwoCashBackGrantService.saveOrUpdate(activityGrant);

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

wxVtwoCashBackGrantAwardService.saveGrantAward(activityGrant);

wxVtwoActivityGrantSettlementService.saveGrantSettlement(activityGrant);
}

@Override
public void grantExport(HttpServletRequest request, HttpServletResponse response, WxVtwoCashBackGrant activityGrant) {
WxVtwoCashBackActivity activity = this.getById(activityGrant.getActivityId(), activityGrant.getTenantId());
if(activity == null){
throw new MallinkException(Result.ERROR,"未查询到活动");
}

List<ExcelExportEntity> headList = wxVtwoActivityGrantExportService.getExportHeadList();

ExcelExportEntity entity1 = new ExcelExportEntity("返现总金额","grantPrice",20);
headList.add(entity1);
ExcelExportEntity entity2 = new ExcelExportEntity("商管承担总比例","mallShareRate",20);
headList.add(entity2);
ExcelExportEntity entity3= new ExcelExportEntity("商户承担总比例","merchantShareRate",20);
headList.add(entity3);
ExcelExportEntity entity4 = new ExcelExportEntity("商管承担总金额","mallShareRate",20);
headList.add(entity4);
ExcelExportEntity entity5= new ExcelExportEntity("商户承担总金额","merchantShareRate",20);
headList.add(entity5);
ExcelExportEntity entity6= new ExcelExportEntity("税金额","taxAmount",20);
headList.add(entity6);
ExcelExportEntity entity10= new ExcelExportEntity("备注","grantRemark",20);
headList.add(entity10);

List<WxVtwoActivityGrantExport> activityGrantExportList = wxVtwoActivityGrantExportService.findActivityGrantList(activityGrant.getActivityId(),activityGrant.getTenantId());
List<Map<String, Object>> grantObjectList = new ArrayList<>();
if(activityGrantExportList != null && !activityGrantExportList.isEmpty()){
grantObjectList = activityGrantExportList.stream().map(e -> {
Map<String, Object> map = new HashMap<>();
try {
map = BeanUtils.toMap(e);
} catch (Exception ex) {
}
return map;
}).collect(toList());
}
excelService.exportExcel(headList, grantObjectList, null, "返现活动发放明细", "返现活动发放明细.xlsx",true, response);
}

}



+ 30
- 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,33 @@ 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()));
}

@Override
public List<Long> getAmountAwardIdList(Long activityId, String tenantId) {
WxVtwoCashBackAward cashBackAwardQ = new WxVtwoCashBackAward();
cashBackAwardQ.setTenantId(tenantId);
cashBackAwardQ.setActivityId(activityId);
cashBackAwardQ.setModelType(EnumOfflineActivityAwardsModeType.AMOUNT.getCode());
List<WxVtwoCashBackAward> amountAwardList = wxVtwoCashBackAwardMapper.findList(cashBackAwardQ);
if(amountAwardList != null && !amountAwardList.isEmpty()){
return amountAwardList.stream().map(WxVtwoCashBackAward::getId).collect(Collectors.toList());
}
return Collections.emptyList();
}
}




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

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

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.iformall.domain.po.WxVtwoCashBackGrantAward;
import com.iformall.common.IdWorker;
import com.iformall.domain.po.*;
import com.iformall.domain.vo.WxVtwoActivityStatisticsVo;
import com.iformall.domain.vo.WxVtwoActivityTaxDeductionRule;
import com.iformall.domain.vo.WxVtwoAwardGrantStatistics;
import com.iformall.enums.EnumOfflineActivityAwardsModeType;
import com.iformall.enums.EnumOfflineActivityAwardsRule;
import com.iformall.enums.EnumOfflineActivityMode;
import com.iformall.enums.EnumYesOrNo;
import com.iformall.service.WxVtwoActivityOrderService;
import com.iformall.service.WxVtwoCashBackGrantAwardService;
import com.iformall.mapper.WxVtwoCashBackGrantAwardMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.*;
import java.util.function.Function;

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

/**
* @author xiaohu
* @description 针对表【wx_vtwo_cash_back_grant_award(线下返现活动发放奖励)】的数据库操作Service实现
@@ -15,6 +33,206 @@ import org.springframework.stereotype.Service;
public class WxVtwoCashBackGrantAwardServiceImpl extends ServiceImpl<WxVtwoCashBackGrantAwardMapper, WxVtwoCashBackGrantAward>
implements WxVtwoCashBackGrantAwardService{

@Autowired
private WxVtwoCashBackGrantAwardMapper wxVtwoCashBackGrantAwardMapper;

@Autowired
private WxVtwoActivityOrderService wxVtwoActivityOrderService;

@Override
public void handleGrantAwardList(WxVtwoCashBackActivity cashBackActivity, WxVtwoCashBackGrant activityGrant, List<WxVtwoActivityOrder> orderList) {
List<WxVtwoCashBackGrantAward> grantAwardList = new ArrayList<>();
BigDecimal cashBackTotal = BigDecimal.ZERO;
List<WxVtwoCashBackAward> sortAmountAwardList = cashBackActivity.getAmountRulesObject().stream().sorted(Comparator.comparing(WxVtwoCashBackAward::getMinAmount)).collect(toList());
if(EnumOfflineActivityMode.ONE.getCode().equals(cashBackActivity.getAmountModel())){
for(WxVtwoActivityOrder order:orderList){
WxVtwoCashBackAward cashBackAward = null;
for(WxVtwoCashBackAward award:sortAmountAwardList){
if((award.getMinAmount() == null || order.getOrderMoney().compareTo(award.getMinAmount()) >= 0)
&& (award.getMaxAmount() == null || order.getOrderMoney().compareTo(award.getMaxAmount()) <= 0)){
cashBackAward = award;
}
}
if(cashBackAward != null && cashBackAward.getCashBackRatio() != null){
BigDecimal cashBackPrice = order.getOrderMoney().multiply(cashBackAward.getCashBackRatio().divide(new BigDecimal(100)));
if(cashBackAward.getCashBackLimit() != null && cashBackAward.getCashBackLimit().compareTo(BigDecimal.ZERO) > 0
&& cashBackAward.getCashBackLimit().compareTo(cashBackPrice) < 0 ){
cashBackPrice = cashBackAward.getCashBackLimit();
}
cashBackPrice = awardsRulePrice(cashBackPrice,cashBackActivity.getCashBackRule());
if(cashBackPrice.compareTo(BigDecimal.ZERO) > 0){
cashBackTotal = cashBackTotal.add(cashBackPrice);
WxVtwoCashBackGrantAward grantAward = new WxVtwoCashBackGrantAward();
grantAward.setName("订单返现("+order.getOrderNo()+")");
grantAward.setOrderId(order.getId());
grantAward.setOrderAmount(order.getOrderMoney());
grantAward.setModeType(EnumOfflineActivityAwardsModeType.AMOUNT.getCode());
grantAward.setCashBackRule(cashBackActivity.getCashBackRule());
grantAward.setCashBack(cashBackPrice);
handleGrantAward(grantAward,cashBackAward);
grantAwardList.add(grantAward);
}
}
}
}else{
BigDecimal orderMoneySum = orderList.stream().filter(order -> EnumYesOrNo.YES.getCode().equals(order.getIsAmount()))
.map(WxVtwoActivityOrder::getOrderMoney).reduce(BigDecimal.ZERO, BigDecimal::add);
WxVtwoCashBackAward cashBackAward = null;
for(WxVtwoCashBackAward award:sortAmountAwardList){
if((award.getMinAmount() == null || orderMoneySum.compareTo(award.getMinAmount()) >= 0)
&& (award.getMaxAmount() == null || orderMoneySum.compareTo(award.getMaxAmount()) <= 0)){
cashBackAward = award;
}
}
if(cashBackAward != null && cashBackAward.getCashBackRatio() != null){
BigDecimal cashBackPrice = orderMoneySum.multiply(cashBackAward.getCashBackRatio().divide(new BigDecimal(100)));
cashBackPrice = awardsRulePrice(cashBackPrice,cashBackActivity.getCashBackRule());

if(cashBackPrice.compareTo(BigDecimal.ZERO) > 0){
cashBackTotal = cashBackTotal.add(cashBackPrice);
WxVtwoCashBackGrantAward grantAward = new WxVtwoCashBackGrantAward();
grantAward.setName("订单金额返现");
grantAward.setOrderAmount(orderMoneySum);
grantAward.setModeType(EnumOfflineActivityAwardsModeType.AMOUNT.getCode());
grantAward.setCashBackRule(cashBackActivity.getCashBackRule());
grantAward.setCashBack(cashBackPrice);
handleGrantAward(grantAward,cashBackAward);
grantAwardList.add(grantAward);
}
}
}

//联单
Integer jointCount = wxVtwoActivityOrderService.getJointCount(cashBackActivity.getRelatedModel(),orderList);
if(jointCount != 0){
Map<Integer, WxVtwoCashBackAward> jointCountMap = cashBackActivity.getRelatedRulesObject().stream().collect(toMap(WxVtwoCashBackAward::getRelatedCount, Function.identity()));
WxVtwoCashBackAward cashBackAward = jointCountMap.get(jointCount);
if(cashBackAward != null && cashBackAward.getCashBackRatio() != null){
BigDecimal orderMoneySum = orderList.stream().map(WxVtwoActivityOrder::getOrderMoney).reduce(BigDecimal.ZERO, BigDecimal::add);
BigDecimal cashBackPrice = orderMoneySum.multiply(cashBackAward.getCashBackRatio().divide(new BigDecimal(100)));
cashBackPrice = awardsRulePrice(cashBackPrice,cashBackActivity.getCashBackRule());

if(cashBackPrice.compareTo(BigDecimal.ZERO) > 0){
cashBackTotal = cashBackTotal.add(cashBackPrice);
WxVtwoCashBackGrantAward grantAward = new WxVtwoCashBackGrantAward();
grantAward.setName("联单返现");
grantAward.setOrderAmount(orderMoneySum);
grantAward.setModeType(EnumOfflineActivityAwardsModeType.COUNT.getCode());
grantAward.setCashBackRule(cashBackActivity.getCashBackRule());
grantAward.setCashBack(cashBackPrice);
handleGrantAward(grantAward,cashBackAward);
grantAwardList.add(grantAward);
}
}
}

//计算返现金额最大限制
BigDecimal prop = BigDecimal.ONE;
if(cashBackTotal.compareTo(cashBackActivity.getCashBackLimit()) >= 0){
prop = cashBackActivity.getCashBackLimit().divide(cashBackTotal,4, RoundingMode.HALF_UP);
}
BigDecimal realCashBackTotal = BigDecimal.ZERO;
if(prop.compareTo(BigDecimal.ONE) < 0){
for (WxVtwoCashBackGrantAward grantAward:grantAwardList){
grantAward.setCashBack(awardsRulePrice(grantAward.getCashBack().multiply(prop),cashBackActivity.getCashBackRule()));
}
}

if(EnumOfflineActivityMode.ONE.getCode().equals(cashBackActivity.getAmountModel())){
//单独算税点
BigDecimal taxAmount = BigDecimal.ZERO;
for (WxVtwoCashBackGrantAward grantAward:grantAwardList){
realCashBackTotal = realCashBackTotal.add(grantAward.getCashBack());
grantAward.setTaxDeductionRules(cashBackActivity.getTaxDeductionRules());
grantAward.setTaxAmount(BigDecimal.ZERO);
WxVtwoActivityTaxDeductionRule taxDeductionRulesObject = cashBackActivity.getTaxDeductionRulesObject();
if(taxDeductionRulesObject.getStartingTax() != null && grantAward.getCashBack().compareTo(taxDeductionRulesObject.getStartingTax()) > 0
&& taxDeductionRulesObject.getTaxPoints() != null){
grantAward.setTaxAmount(grantAward.getCashBack().multiply(taxDeductionRulesObject.getTaxPoints())
.divide(new BigDecimal(100)).setScale(2, RoundingMode.HALF_UP));
taxAmount = taxAmount.add(grantAward.getTaxAmount());
}
}
activityGrant.setTaxAmount(taxAmount);
}else{
activityGrant.setTaxDeductionRules(cashBackActivity.getTaxDeductionRules());
activityGrant.setTaxAmount(BigDecimal.ZERO);
WxVtwoActivityTaxDeductionRule taxDeductionRulesObject = cashBackActivity.getTaxDeductionRulesObject();
if(taxDeductionRulesObject.getStartingTax() != null && activityGrant.getCashBack().compareTo(taxDeductionRulesObject.getStartingTax()) > 0
&& taxDeductionRulesObject.getTaxPoints() != null){
activityGrant.setTaxAmount(activityGrant.getCashBack().multiply(taxDeductionRulesObject.getTaxPoints())
.divide(new BigDecimal(100)).setScale(2, RoundingMode.HALF_UP));
}
//税点分摊到发奖上面
for (WxVtwoCashBackGrantAward grantAward:grantAwardList){
realCashBackTotal = realCashBackTotal.add(grantAward.getCashBack());
BigDecimal taxAmountProp = grantAward.getCashBack().divide(activityGrant.getCashBack(),4,RoundingMode.HALF_UP);;
grantAward.setTaxAmount(activityGrant.getTaxAmount().multiply(taxAmountProp).setScale(2, RoundingMode.HALF_UP));
}
}
activityGrant.setCashBackLimit(cashBackActivity.getCashBackLimit());
activityGrant.setCashBack(realCashBackTotal);
activityGrant.setGrantAwardList(grantAwardList);
}

private BigDecimal awardsRulePrice(BigDecimal awardsPrice,Integer awardsRule){
BigDecimal awardsRulePrice = BigDecimal.ZERO;
if(EnumOfflineActivityAwardsRule.DEF.getCode().equals(awardsRule)){
awardsRulePrice = awardsPrice.setScale(2, RoundingMode.HALF_UP);
} else if (EnumOfflineActivityAwardsRule.YUAN.getCode().equals(awardsRule)) {
awardsRulePrice = awardsPrice.setScale(0, RoundingMode.HALF_UP);
}else if (EnumOfflineActivityAwardsRule.TEN.getCode().equals(awardsRule)){
awardsRulePrice = awardsPrice.divide(new BigDecimal(10))
.setScale(0, RoundingMode.HALF_UP).multiply(new BigDecimal(10));
}
return awardsRulePrice;
}

private void handleGrantAward(WxVtwoCashBackGrantAward grantAward,WxVtwoCashBackAward cashBackAward){
grantAward.setMinAmount(cashBackAward.getMinAmount());
grantAward.setMaxAmount(cashBackAward.getMaxAmount());
grantAward.setAwardId(cashBackAward.getId());
grantAward.setAwardName(cashBackAward.getName());
grantAward.setCashBackRatio(cashBackAward.getCashBackRatio());

grantAward.setShareRule(cashBackAward.getShareRule());
grantAward.setMallShareRate(cashBackAward.getMallShareRate());
grantAward.setMerchantShareRate(cashBackAward.getMerchantShareRate());
}

@Override
public void saveGrantAward(WxVtwoCashBackGrant activityGrant) {
List<WxVtwoCashBackGrantAward> grantAwardList = activityGrant.getGrantAwardList();
final IdWorker idWorker = IdWorker.get();
for (WxVtwoCashBackGrantAward grantAward : grantAwardList) {
grantAward.setId(idWorker.nextId());
grantAward.updateTenantInfo(activityGrant);
grantAward.setActivityId(activityGrant.getActivityId());
grantAward.setActivityName(activityGrant.getActivityName());
grantAward.setGrantId(activityGrant.getId());

grantAward.setCreateDate(activityGrant.getUpdateDate());
grantAward.setUpdateDate(activityGrant.getUpdateDate());
}
wxVtwoCashBackGrantAwardMapper.insertList(grantAwardList);
activityGrant.setGrantAwardList(grantAwardList);
}

private WxVtwoCashBackGrantAward handleStatisticsVo(WxVtwoActivityStatisticsVo statisticsVo){
WxVtwoCashBackGrantAward grantAward = new WxVtwoCashBackGrantAward();
grantAward.updateTenantInfo(statisticsVo);
grantAward.setActivityId(statisticsVo.getActivityId());
grantAward.setCreateDateBegin(statisticsVo.getCreateDateBegin());
grantAward.setCreateDateEnd(statisticsVo.getCreateDateEnd());
grantAward.setStatus(EnumYesOrNo.YES.getCode());
return grantAward;
}

@Override
public List<WxVtwoAwardGrantStatistics> awardItemStatistics(WxVtwoActivityStatisticsVo statisticsVo) {
WxVtwoCashBackGrantAward grantAward = handleStatisticsVo(statisticsVo);
return wxVtwoCashBackGrantAwardMapper.awardItemStatistics(grantAward);
}
}




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

@@ -1,11 +1,26 @@
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.WxVtwoCashBackGrant;
import com.iformall.domain.vo.WxVtwoActivityStatisticsVo;
import com.iformall.domain.vo.WxVtwoAwardStatistics;
import com.iformall.enums.EnumYesOrNo;
import com.iformall.service.WxVtwoCashBackGrantService;
import com.iformall.mapper.WxVtwoCashBackGrantMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

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

/**
* @author xiaohu
* @description 针对表【wx_vtwo_cash_back_grant(线下返现活动发奖)】的数据库操作Service实现
@@ -15,6 +30,77 @@ import org.springframework.stereotype.Service;
public class WxVtwoCashBackGrantServiceImpl extends ServiceImpl<WxVtwoCashBackGrantMapper, WxVtwoCashBackGrant>
implements WxVtwoCashBackGrantService{

@Autowired
private WxVtwoCashBackGrantMapper wxVtwoCashBackGrantMapper;

@Override
public void handleFromOrder(WxVtwoCashBackGrant activityGrant, List<WxVtwoActivityOrder> orderList, boolean isGrant) {
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(WxVtwoCashBackGrant activityGrant) {
Date now = new Date();
if(activityGrant.getId() == null){
final IdWorker idWorker = IdWorker.get();
activityGrant.setId(idWorker.nextId());
activityGrant.setCreateDate(now);
activityGrant.setUpdateDate(now);
wxVtwoCashBackGrantMapper.insert(activityGrant);
}
else{
activityGrant.setUpdateDate(now);
wxVtwoCashBackGrantMapper.updateById(activityGrant);
}
return true;
}

private WxVtwoCashBackGrant handleStatisticsVo(WxVtwoActivityStatisticsVo statisticsVo){
WxVtwoCashBackGrant cashBackGrant = new WxVtwoCashBackGrant();
cashBackGrant.updateTenantInfo(statisticsVo);
cashBackGrant.setActivityId(statisticsVo.getActivityId());
cashBackGrant.setCreateDateBegin(statisticsVo.getCreateDateBegin());
cashBackGrant.setCreateDateEnd(statisticsVo.getCreateDateEnd());
cashBackGrant.setStatus(EnumYesOrNo.YES.getCode());
return cashBackGrant;
}

@Override
public WxVtwoAwardStatistics activityAwardStatistics(WxVtwoActivityStatisticsVo statisticsVo) {
WxVtwoCashBackGrant wxVtwoCashBackGrant = handleStatisticsVo(statisticsVo);
return wxVtwoCashBackGrantMapper.activityAwardStatistics(wxVtwoCashBackGrant);
}

@Override
public List<WxVtwoAwardStatistics> activityAwardStatisticsChart(WxVtwoActivityStatisticsVo statisticsVo) {
WxVtwoCashBackGrant wxVtwoCashBackGrant = handleStatisticsVo(statisticsVo);
return wxVtwoCashBackGrantMapper.activityAwardStatisticsChart(wxVtwoCashBackGrant);
}
}




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

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

import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
@@ -8,26 +9,30 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.iformall.common.IdWorker;
import com.iformall.common.Result;
import com.iformall.domain.po.*;
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.enums.EnumOfflineActivityMerchantType;
import com.iformall.enums.EnumOfflineActivityRecordStatus;
import com.iformall.enums.EnumOfflineActivityStatus;
import com.iformall.enums.EnumYesOrNo;
import com.iformall.domain.po.base.BaseEntity;
import com.iformall.domain.po.base.TenantEntity;
import com.iformall.domain.vo.*;
import com.iformall.enums.*;
import com.iformall.exception.MallinkException;
import com.iformall.mapper.*;
import com.iformall.service.WxVtwoActivityAwardService;
import com.iformall.service.WxVtwoActivityMerchantService;
import com.iformall.service.WxVtwoPrizeDrawActivityService;
import jodd.util.StringUtil;
import com.iformall.service.*;
import com.iformall.utils.BeanUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

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

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

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

@Autowired
private WxVtwoActivityAwardMapper wxVtwoActivityAwardMapper;

@Autowired
private WxVtwoActivityMerchantMapper wxVtwoActivityMerchantMapper;

@@ -53,12 +55,36 @@ public class WxVtwoPrizeDrawActivityServiceImpl extends ServiceImpl<WxVtwoPrizeD
@Autowired
private WxVtwoActivityGrantSettlementMapper wxVtwoActivityGrantSettlementMapper;

@Autowired
private WxVtwoSpecialTopicActivityMapper wxVtwoSpecialTopicActivityMapper;

@Autowired
private WxVtwoActivityAwardService wxVtwoActivityAwardService;

@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 WxVtwoActivityGrantExportService wxVtwoActivityGrantExportService;

@Autowired
private ExcelService excelService;


@Override
public PageInfo<WxVtwoPrizeDrawActivity> listAsPage(WxVtwoPrizeDrawActivity prizeDrawActivity, Integer pageNum, Integer pageSize) {
@@ -159,6 +185,7 @@ public class WxVtwoPrizeDrawActivityServiceImpl extends ServiceImpl<WxVtwoPrizeD
}
wxVtwoActivityMerchantService.saveFromActivity(prizeDrawActivity,prizeDrawActivity.getId(),prizeDrawActivity.getMerchantIdList());
}
updateSpecialTopicActivity(prizeDrawActivity);
return true;
}

@@ -171,30 +198,213 @@ public class WxVtwoPrizeDrawActivityServiceImpl extends ServiceImpl<WxVtwoPrizeD
}
}

private void updateSpecialTopicActivity(WxVtwoPrizeDrawActivity prizeDrawActivity){
WxVtwoSpecialTopicActivity specialTopicActivity = new WxVtwoSpecialTopicActivity();
specialTopicActivity.updateTenantInfo(prizeDrawActivity);
specialTopicActivity.setActivityId(prizeDrawActivity.getId());
specialTopicActivity.setActivityType(EnumOfflineActivityType.LOTTERY_DRAW.getCode());
specialTopicActivity.setActivityName(prizeDrawActivity.getName());
specialTopicActivity.setActivityCreateDate(prizeDrawActivity.getCreateDate());
specialTopicActivity.setActivityStartTime(prizeDrawActivity.getStartTime());
specialTopicActivity.setActivityEndTime(prizeDrawActivity.getEndTime());
specialTopicActivity.setActivityStatus(prizeDrawActivity.getStatus());
specialTopicActivity.setUpdateDate(prizeDrawActivity.getUpdateDate());
wxVtwoSpecialTopicActivityMapper.updateByActivity(specialTopicActivity);
}

@Override
public boolean updateById(WxVtwoPrizeDrawActivity prizeDrawActivity) {
prizeDrawActivity.setUpdateDate(new Date());
wxVtwoPrizeDrawActivityMapper.updateById(prizeDrawActivity);
updateSpecialTopicActivity(prizeDrawActivity);
return true;
}

@Override
public WxVtwoPrizeDrawActivity getInfoById(Long id, String tenantId) {
WxVtwoPrizeDrawActivity prizeDrawActivity = wxVtwoPrizeDrawActivityMapper.selectById(id, tenantId);
if (prizeDrawActivity == null) {
return null;
}
if(StringUtil.isNotBlank(prizeDrawActivity.getAmountRules())){
if(StringUtils.isNotBlank(prizeDrawActivity.getAmountRules())){
prizeDrawActivity.setAmountRulesObject(JSONObject.parseObject(prizeDrawActivity.getAmountRules(), WxVtwoActivityRule.class));
}
if(StringUtil.isNotBlank(prizeDrawActivity.getRelatedRules())){
if(StringUtils.isNotBlank(prizeDrawActivity.getRelatedRules())){
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);
prizeDrawActivity.setMerchanList(activityMerchantList);
prizeDrawActivity.setMerchantList(activityMerchantList);
}
return prizeDrawActivity;
}

@Override
public WxVtwoPrizeDrawActivity getById(Long id, String tenantId) {
return wxVtwoPrizeDrawActivityMapper.selectById(id, tenantId);
}

@Override
public void handleSpecialTopicActivity(TenantEntity tenantEntity, WxVtwoSpecialTopicActivity activity) {
WxVtwoPrizeDrawActivity prizeDrawActivity = wxVtwoPrizeDrawActivityMapper.selectById(activity.getActivityId(), tenantEntity.getTenantId());
if(prizeDrawActivity == null){
throw new MallinkException(Result.ERROR,"未查询到活动");
}
activity.setActivityId(prizeDrawActivity.getId());
activity.setActivityType(EnumOfflineActivityType.LOTTERY_DRAW.getCode());
activity.setActivityName(prizeDrawActivity.getName());
activity.setActivityCreateDate(prizeDrawActivity.getCreateDate());
activity.setActivityStartTime(prizeDrawActivity.getStartTime());
activity.setActivityEndTime(prizeDrawActivity.getEndTime());
activity.setActivityStatus(prizeDrawActivity.getStatus());
}

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

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

wxVtwoActivityGrantService.handleFromOrder(activityGrant,orderList,false);

activityGrant.setAwardList(prizeDrawActivity.getAwardList());

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(activityGrant,orderList,false);

wxVtwoActivityGrantService.saveOrUpdate(activityGrant);

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

wxVtwoActivityGrantAwardService.saveGrantAward(activityGrant,prizeDrawActivity.getAwardList());

wxVtwoActivityGrantSettlementService.saveGrantSettlement(activityGrant);
}

@Override
public void grantExport(HttpServletRequest request, HttpServletResponse response, WxVtwoActivityGrant activityGrant) {

List<WxVtwoActivityAward> activityAwardList = wxVtwoActivityAwardService.findActivityAwardList(activityGrant.getActivityId(), activityGrant.getTenantId());
if(activityAwardList == null || activityAwardList.isEmpty()){
throw new MallinkException(Result.ERROR,"未查询到活动");
}

List<ExcelExportEntity> headList = wxVtwoActivityGrantExportService.getExportHeadList();
for (WxVtwoActivityAward activityAward:activityAwardList){
ExcelExportEntity entity_ = new ExcelExportEntity(activityAward.getName(),String.valueOf(activityAward.getId())+"_count",20);
headList.add(entity_);
}

ExcelExportEntity entity1 = new ExcelExportEntity("奖品总价值","grantPrice",20);
headList.add(entity1);
ExcelExportEntity entity2 = new ExcelExportEntity("商管承担总比例","mallShareRate",20);
headList.add(entity2);
ExcelExportEntity entity3= new ExcelExportEntity("商户承担总比例","merchantShareRate",20);
headList.add(entity3);
ExcelExportEntity entity4 = new ExcelExportEntity("商管承担总金额","mallShareRate",20);
headList.add(entity4);
ExcelExportEntity entity5= new ExcelExportEntity("商户承担总金额","merchantShareRate",20);
headList.add(entity5);
ExcelExportEntity entity6= new ExcelExportEntity("备注","grantRemark",20);
headList.add(entity6);

List<WxVtwoActivityGrantExport> activityGrantExportList = wxVtwoActivityGrantExportService.findActivityGrantList(activityGrant.getActivityId(),activityGrant.getTenantId());
List<Map<String, Object>> grantObjectList = new ArrayList<>();
if(activityGrantExportList != null && !activityGrantExportList.isEmpty()){
grantObjectList = activityGrantExportList.stream().map(e -> {
Map<String, Object> map = new HashMap<>();
try {
Map<Long, Integer> awardCountMap = JSONObject.parseArray(e.getGrantDetail(), WxVtwoActivityGrantSettlement.class).stream().collect(groupingBy(WxVtwoActivityGrantSettlement::getAwardId, summingInt(WxVtwoActivityGrantSettlement::getAwardCount)));
map = BeanUtils.toMap(e);
for (Long awardId : awardCountMap.keySet()) {
map.put(String.valueOf(awardId) + "_count", awardCountMap.get(awardId));
}
} catch (Exception ex) {
}
return map;
}).collect(toList());
}
excelService.exportExcel(headList, grantObjectList, null, "抽奖活动发放明细", "抽奖活动发放明细.xlsx",true, response);
}

}




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

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

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.iformall.common.IdWorker;
import com.iformall.common.Result;
import com.iformall.domain.po.WxVtwoActivityAward;
import com.iformall.domain.po.WxVtwoActivitySpecialTopic;
import com.iformall.domain.po.WxVtwoSpecialTopicActivity;
import com.iformall.domain.po.base.TenantEntity;
import com.iformall.enums.EnumOfflineActivityType;
import com.iformall.exception.MallinkException;
import com.iformall.service.WxVtwoSpecialTopicActivityService;
import com.iformall.mapper.WxVtwoSpecialTopicActivityMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.Date;
import java.util.List;

/**
* @author xiaohu
* @description 针对表【wx_vtwo_special_topic_activity(线下专题下的活动)】的数据库操作Service实现
@@ -15,6 +27,36 @@ import org.springframework.stereotype.Service;
public class WxVtwoSpecialTopicActivityServiceImpl extends ServiceImpl<WxVtwoSpecialTopicActivityMapper, WxVtwoSpecialTopicActivity>
implements WxVtwoSpecialTopicActivityService{

@Autowired
private WxVtwoSpecialTopicActivityMapper wxVtwoSpecialTopicActivityMapper;

@Override
public void saveFromSpecialTopic(WxVtwoActivitySpecialTopic specialTopic, List<WxVtwoSpecialTopicActivity> activityList) {
WxVtwoSpecialTopicActivity specialTopicActivityQ = new WxVtwoSpecialTopicActivity();
specialTopicActivityQ.updateTenantInfo(specialTopic);
specialTopicActivityQ.setSpecialTopicId(specialTopic.getId());
wxVtwoSpecialTopicActivityMapper.delete(new QueryWrapper<>(specialTopicActivityQ));

final IdWorker idWorker = IdWorker.get();
Date now = new Date();
for (WxVtwoSpecialTopicActivity specialTopicActivity : activityList) {
if(specialTopicActivity.getActivityStartTime().before(specialTopic.getStartTime())
|| specialTopicActivity.getActivityEndTime().after(specialTopic.getEndTime())){
throw new MallinkException(Result.ERROR, specialTopicActivity.getActivityName()+"活动时间未在主题范围内");

}
if(specialTopicActivity.getId() == null){
specialTopicActivity.setId(idWorker.nextId());
}
specialTopicActivity.updateTenantInfo(specialTopic);
specialTopicActivity.setSpecialTopicId(specialTopic.getId());
if(specialTopicActivity.getCreateDate() == null){
specialTopicActivity.setCreateDate(now);
}
specialTopicActivity.setUpdateDate(now);
}
wxVtwoSpecialTopicActivityMapper.insertList(activityList);
}
}




+ 57
- 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>

@@ -69,6 +64,14 @@
and `award_id` = #{awardId}
</if>

<if test=" null != createDateBegin">
and `create_date` &gt;= #{createDateBegin}
</if>

<if test=" null != createDateEnd">
and `create_date` &lt;= #{createDateEnd}
</if>

<if test=" null != status ">
and `status` = #{status}
</if>
@@ -91,4 +94,50 @@
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>

<select id="activityAwardCountStatistics" parameterType="com.iformall.domain.po.WxVtwoActivityGrantAward" resultType="com.iformall.domain.vo.WxVtwoAwardStatistics">
SELECT
IFNULL(sum(award_count),0) as 'awardCount',
IFNULL(sum(grant_price),0) as 'awardPrice'
FROM wx_vtwo_activity_grant_award
<include refid="dynamicWhereConditions" />
</select>

<select id="activityAwardCountStatisticsChart" parameterType="com.iformall.domain.po.WxVtwoActivityGrantAward" resultType="com.iformall.domain.vo.WxVtwoAwardStatistics">
SELECT DATE_FORMAT(create_date,'%Y-%m-%d') as xTime,
IFNULL(sum(award_count),0) as 'awardCount',
IFNULL(sum(grant_price),0) as 'awardPrice'
FROM wx_vtwo_activity_grant_award
<include refid="dynamicWhereConditions" />
group by xTime
</select>
<select id="awardItemStatistics" parameterType="com.iformall.domain.po.WxVtwoActivityGrantAward" resultType="com.iformall.domain.vo.WxVtwoAwardGrantStatistics">
SELECT award_id as 'awardId',
IFNULL(sum(award_count),0) as 'awardCount',
IFNULL(sum(grant_price),0) as 'awardPrice'
FROM wx_vtwo_activity_grant_award
<include refid="dynamicWhereConditions" />
group by award_id
</select>
</mapper>

+ 44
- 9
mallinkService/src/main/resources/mapper/WxVtwoActivityGrantExportMapper.xml Просмотреть файл

@@ -9,6 +9,8 @@
<result property="tenantId" column="tenant_id" jdbcType="VARCHAR"/>
<result property="parentTenantId" column="parent_tenant_id" jdbcType="VARCHAR"/>
<result property="activityId" column="activity_id" jdbcType="BIGINT"/>
<result property="activityType" column="activity_type" jdbcType="SMALLINT"/>
<result property="activityName" column="activity_name" jdbcType="VARCHAR"/>
<result property="orderId" column="order_id" jdbcType="BIGINT"/>
<result property="orderNo" column="order_no" jdbcType="VARCHAR"/>
<result property="orderAmount" column="order_amount" jdbcType="DECIMAL"/>
@@ -21,11 +23,6 @@
<result property="lotteryCount" column="lottery_count" jdbcType="INTEGER"/>
<result property="anniversaryLotteryNum" column="anniversary_lottery_num" jdbcType="VARCHAR"/>
<result property="orderCreateTime" column="order_create_time" jdbcType="TIMESTAMP"/>
<result property="orderAuditStatus" column="order_audit_status" jdbcType="INTEGER"/>
<result property="orderAuditBy" column="order_audit_by" jdbcType="BIGINT"/>
<result property="orderAuditName" column="order_audit_name" jdbcType="VARCHAR"/>
<result property="orderAuditRemark" column="order_audit_remark" jdbcType="VARCHAR"/>
<result property="orderAuditTime" column="order_audit_time" jdbcType="TIMESTAMP"/>
<result property="vipNum" column="vip_num" jdbcType="VARCHAR"/>
<result property="cusName" column="cus_name" jdbcType="VARCHAR"/>
<result property="cusPhone" column="cus_phone" jdbcType="VARCHAR"/>
@@ -55,12 +52,11 @@

<sql id="allColumns">
id,tenant_id,parent_tenant_id,
activity_id,order_id,order_no,
activity_id,activity_type,activity_name,order_id,order_no,
order_amount,merchant_id,merchant_name,
merchant_shop_num,business_id,business_name,
lottery_num,lottery_count,anniversary_lottery_num,
order_create_time,order_audit_status,order_audit_by,
order_audit_name,order_audit_remark,order_audit_time,
order_create_time,
vip_num,cus_name,cus_phone,
cus_card,cus_address,legion_id,
legion_name,union_id,union_name,
@@ -85,6 +81,9 @@
<if test=" null != activityId ">
and `activity_id` = #{activityId}
</if>
<if test=" null != activityType ">
and `activity_type` = #{activityType}
</if>
<if test=" null != orderId ">
and `order_id` = #{orderId}
</if>
@@ -98,7 +97,8 @@
#{idItem}
</foreach>
</if>
<if test=" null != sortColumns"> order by ${sortColumns} </if>
<!--<if test=" null != sortColumns"> order by ${sortColumns} </if>-->
order by grant_time desc
</sql>

<select id="findList" parameterType="com.iformall.domain.po.WxVtwoActivityGrantExport" resultMap="BaseResultMap">
@@ -110,4 +110,39 @@
select <include refid="allColumns" /> from wx_vtwo_activity_grant_export
where id = #{id} and tenant_id=#{tenantId}
</select>

<insert id="insertList" parameterType="java.util.List">
insert into wx_vtwo_activity_grant_export
(id,
activity_id,activity_type,activity_name,order_id,order_no,
order_amount,merchant_id,merchant_name,
merchant_shop_num,business_id,business_name,
lottery_num,lottery_count,anniversary_lottery_num,
order_create_time,
vip_num,cus_name,cus_phone,
cus_card,cus_address,legion_id,
legion_name,union_id,union_name,
grant_id,grant_user_name,grant_user_card,
grant_by,grant_by_name,grant_time,grant_remark,
sign_img,grant_detail,grant_price,
mall_share_price,merchant_share_price,mall_share_rate,
merchant_share_rate,tax_amount)
values
<foreach collection="grantExportList" item="item" index="index" separator=",">
(#{item.id,jdbcType=BIGINT},
#{item.activityId,jdbcType=BIGINT},#{item.activityType,jdbcType=SMALLINT},#{item.activityName,jdbcType=VARCHAR},#{item.orderId,jdbcType=BIGINT},#{item.orderNo,jdbcType=VARCHAR},
#{item.orderAmount,jdbcType=DECIMAL},#{item.merchantId,jdbcType=BIGINT},#{item.merchantName,jdbcType=VARCHAR},
#{item.merchantShopNum,jdbcType=VARCHAR},#{item.businessId,jdbcType=INTEGER},#{item.businessName,jdbcType=VARCHAR},
#{item.lotteryNum,jdbcType=VARCHAR},#{item.lotteryCount,jdbcType=INTEGER},#{item.anniversaryLotteryNum,jdbcType=VARCHAR},
#{item.orderCreateTime,jdbcType=TIMESTAMP},
#{item.vipNum,jdbcType=VARCHAR},#{item.cusName,jdbcType=VARCHAR},#{item.cusPhone,jdbcType=VARCHAR},
#{item.cusCard,jdbcType=VARCHAR},#{item.cusAddress,jdbcType=VARCHAR},#{item.legionId,jdbcType=BIGINT},
#{item.legionName,jdbcType=VARCHAR},#{item.unionId,jdbcType=BIGINT},#{item.unionName,jdbcType=VARCHAR},
#{item.grantId,jdbcType=BIGINT},#{item.grantUserName,jdbcType=VARCHAR},#{item.grantUserCard,jdbcType=VARCHAR},
#{item.grantBy,jdbcType=BIGINT},#{item.grantByName,jdbcType=VARCHAR},#{item.grantTime,jdbcType=TIMESTAMP},#{item.grantRemark,jdbcType=VARCHAR},
#{item.signImg,jdbcType=VARCHAR},#{item.grantDetail,jdbcType=VARCHAR},#{item.grantPrice,jdbcType=DECIMAL},
#{item.mallSharePrice,jdbcType=DECIMAL},#{item.merchantSharePrice,jdbcType=DECIMAL},#{item.mallShareRate,jdbcType=DECIMAL},
#{item.merchantShareRate,jdbcType=DECIMAL},#{item.taxAmount,jdbcType=DECIMAL})
</foreach>
</insert>
</mapper>

+ 32
- 1
mallinkService/src/main/resources/mapper/WxVtwoActivityGrantMapper.xml Просмотреть файл

@@ -9,6 +9,7 @@
<result property="tenantId" column="tenant_id" jdbcType="VARCHAR"/>
<result property="parentTenantId" column="parent_tenant_id" jdbcType="VARCHAR"/>
<result property="activityId" column="activity_id" jdbcType="BIGINT"/>
<result property="activityType" column="activity_type" jdbcType="SMALLINT"/>
<result property="activityName" column="activity_name" jdbcType="VARCHAR"/>
<result property="orderMoneySum" column="order_money_sum" jdbcType="DECIMAL"/>
<result property="orderCount" column="order_count" jdbcType="INTEGER"/>
@@ -29,7 +30,7 @@

<sql id="allColumns">
id,tenant_id,parent_tenant_id,
activity_id,activity_name,order_money_sum,
activity_id,activity_type,activity_name,order_money_sum,
order_count,cus_name,cus_phone,
lottery_num,lottery_count,anniversary_lottery_num,
real_name,real_card,remark,sign_img,
@@ -53,6 +54,17 @@
<if test=" null != activityId ">
and `activity_id` = #{activityId}
</if>
<if test=" null != activityType ">
and `activity_type` = #{activityType}
</if>

<if test=" null != createDateBegin">
and `create_date` &gt;= #{createDateBegin}
</if>

<if test=" null != createDateEnd">
and `create_date` &lt;= #{createDateEnd}
</if>

<if test=" null != status ">
and `status` = #{status}
@@ -76,4 +88,23 @@
select <include refid="allColumns" /> from wx_vtwo_activity_grant
where id = #{id} and tenant_id=#{tenantId}
</select>

<select id="activityAwardStatistics" parameterType="com.iformall.domain.po.WxVtwoActivityGrant" resultType="com.iformall.domain.vo.WxVtwoAwardStatistics">
SELECT count(1) as 'grantCount',
IFNULL(sum(order_count),0) as 'orderCount',
IFNULL(sum(order_money_sum),0) as 'orderMoney'
FROM wx_vtwo_activity_grant
<include refid="dynamicWhereConditions" />
</select>

<select id="activityAwardStatisticsChart" parameterType="com.iformall.domain.po.WxVtwoActivityGrant" resultType="com.iformall.domain.vo.WxVtwoAwardStatistics">
SELECT DATE_FORMAT(create_date,'%Y-%m-%d') as xTime,
count(1) as 'grantCount',
IFNULL(sum(order_count),0) as 'orderCount',
IFNULL(sum(order_money_sum),0) as 'orderMoney'
FROM wx_vtwo_activity_grant
<include refid="dynamicWhereConditions" />
group by xTime
</select>

</mapper>

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

@@ -9,6 +9,7 @@
<result property="tenantId" column="tenant_id" jdbcType="VARCHAR"/>
<result property="parentTenantId" column="parent_tenant_id" jdbcType="VARCHAR"/>
<result property="grantId" column="grant_id" jdbcType="BIGINT"/>
<result property="activityId" column="activity_id" jdbcType="BIGINT"/>
<result property="orderId" column="order_id" jdbcType="BIGINT"/>
<result property="isAmount" column="is_amount" jdbcType="SMALLINT"/>
<result property="status" column="status" jdbcType="SMALLINT"/>
@@ -16,8 +17,8 @@

<sql id="allColumns">
id,tenant_id,parent_tenant_id,
grant_id,order_id,is_amount,
status
grant_id,activity_id,order_id,
is_amount, status
</sql>

<sql id="dynamicWhereConditions">
@@ -34,6 +35,9 @@
<if test=" null != grantId ">
and `grant_id` = #{grantId}
</if>
<if test=" null != activityId ">
and `activity_id` = #{activityId}
</if>
<if test=" null != orderId ">
and `order_id` = #{orderId}
</if>
@@ -60,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)
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})
</foreach>
</insert>
</mapper>

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

@@ -64,10 +64,43 @@
and `award_id` = #{awardId}
</if>

<if test=" null != merchantId ">
and `merchant_id` = #{merchantId}
</if>

<if test=" null != status ">
and `status` = #{status}
</if>

<if test=" null != createDateBegin">
and `create_date` &gt;= #{createDateBegin}
</if>

<if test=" null != createDateEnd">
and `create_date` &lt;= #{createDateEnd}
</if>

<if test=" null != activityIdList ">
and activity_id in
<foreach collection="activityIdList" index="index" item="idItem" open="(" separator="," close=")">
#{idItem}
</foreach>
</if>

<if test=" null != merchantIdList ">
and merchant_id in
<foreach collection="merchantIdList" index="index" item="midItem" open="(" separator="," close=")">
#{midItem}
</foreach>
</if>

<if test=" null != awardIdList ">
and award_id in
<foreach collection="awardIdList" index="index" item="idItem" open="(" separator="," close=")">
#{idItem}
</foreach>
</if>

<if test=" null != ids ">
and id in
<foreach collection="ids" index="index" item="idItem" open="(" separator="," close=")">
@@ -92,4 +125,74 @@
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>

<select id="settlementStatistics" parameterType="com.iformall.domain.po.WxVtwoActivityGrantSettlement"
resultType="com.iformall.domain.vo.WxVtwoSettlementStatistics">
SELECT
IFNULL(sum(order_grant_price),0) as 'grantPrice',
count(DISTINCT order_id) as 'orderCount',
count(DISTINCT merchant_id) as 'merchantCount',
IFNULL(sum(order_mall_share_price),0) as 'mallPrice',
IFNULL(sum(order_merchant_share_price),0) as 'merchantPrice'
FROM wx_vtwo_activity_grant_settlement
<include refid="dynamicWhereConditions" />
</select>

<select id="merchantSettlementStatistics" parameterType="com.iformall.domain.po.WxVtwoActivityGrantSettlement"
resultType="com.iformall.domain.vo.WxVtwoMerchantSettlementStatistics">
SELECT
merchant_id as 'merchantId',
count(DISTINCT order_id) as 'orderCount',
IFNULL(sum(order_grant_price),0) as 'grantPrice',
IFNULL(sum(order_mall_share_price),0) as 'mallPrice',
IFNULL(sum(order_merchant_share_price),0) as 'merchantPrice'
FROM wx_vtwo_activity_grant_settlement
<include refid="dynamicWhereConditions" />
group by merchant_id
</select>

<select id="activityAwardStatistics" parameterType="com.iformall.domain.po.WxVtwoActivityGrantSettlement"
resultType="com.iformall.domain.vo.WxVtwoAwardStatistics">
SELECT count(DISTINCT grant_id) as 'grantCount',
IFNULL(sum(order_grant_price),0) as 'awardPrice',
IFNULL(sum(order_mall_share_price),0) as 'mallPrice',
IFNULL(sum(order_merchant_share_price),0) as 'merchantPrice'
FROM wx_vtwo_activity_grant_settlement
<include refid="dynamicWhereConditions" />
</select>

<select id="activityAwardStatisticsChart" parameterType="com.iformall.domain.po.WxVtwoActivityGrantSettlement"
resultType="com.iformall.domain.vo.WxVtwoAwardStatistics">
SELECT DATE_FORMAT(create_date,'%Y-%m-%d') as xTime,
count(DISTINCT grant_id) as 'grantCount',
IFNULL(sum(order_grant_price),0) as 'awardPrice',
IFNULL(sum(order_mall_share_price),0) as 'mallPrice',
IFNULL(sum(order_merchant_share_price),0) as 'merchantPrice'
FROM wx_vtwo_activity_grant_settlement
<include refid="dynamicWhereConditions" />
group by xTime
</select>
</mapper>

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

@@ -21,7 +21,7 @@
<result property="unionName" column="union_name" jdbcType="VARCHAR"/>
<result property="fromOrderId" column="from_order_id" jdbcType="BIGINT"/>
<result property="orderNo" column="order_no" jdbcType="VARCHAR"/>
<result property="orderAmount" column="order_amount" jdbcType="DECIMAL"/>
<result property="orderMoney" column="order_money" jdbcType="DECIMAL"/>
<result property="merchantId" column="merchant_id" jdbcType="BIGINT"/>
<result property="businessId" column="business_id" jdbcType="INTEGER"/>
<result property="lotteryNum" column="lottery_num" jdbcType="VARCHAR"/>
@@ -43,7 +43,7 @@
real_cus_name,cus_phone,cus_card,
cus_address,legion_id,legion_name,
union_id,union_name,from_order_id,
order_no,order_amount,merchant_id,
order_no,order_money,merchant_id,
business_id,lottery_num,lottery_count,
anniversary_lottery_num,audit_status,audit_remark,
audit_by,audit_time,increased_points,
@@ -136,7 +136,7 @@
<select id="auditStatusStatistics" parameterType="com.iformall.domain.po.WxVtwoActivityOrder" resultType="com.iformall.domain.vo.WxVtwoActivityOrderStatistics">
SELECT audit_status as 'auditStatus',
count(1) as 'count',
IFNULL(sum(order_amount),0) as 'sumAmount'
IFNULL(sum(order_money),0) as 'sumMoney'
FROM wx_vtwo_activity_order
<include refid="dynamicWhereConditions" />
GROUP BY audit_status
@@ -188,7 +188,7 @@
<select id="getCountStatistics" parameterType="com.iformall.domain.po.WxVtwoActivityOrder" resultType="com.iformall.domain.vo.WxVtwoOrderCountStatistics">
select count(DISTINCT cus_phone) userCount,
count(1) orderCount,
IFNULL(sum(order_amount),0) sumAmount,
IFNULL(sum(order_money),0) orderMoney,
count(DISTINCT merchant_id) merchantCount
from wx_vtwo_activity_order
<include refid="dynamicWhereConditions" />
@@ -197,7 +197,7 @@
select DATE_FORMAT(create_date,'%Y-%m-%d') as xTime,
count(DISTINCT cus_phone) userCount,
count(1) orderCount,
IFNULL(sum(order_amount),0) sumAmount,
IFNULL(sum(order_money),0) orderMoney,
count(DISTINCT merchant_id) merchantCount
from wx_vtwo_activity_order
<include refid="dynamicWhereConditions" />
@@ -206,7 +206,7 @@
<select id="getBusinessStatistics" parameterType="com.iformall.domain.po.WxVtwoActivityOrder" resultType="com.iformall.domain.vo.WxVtwoOrderBusinessStatistics">
select business_id businessId,
count(1) businessCount,
IFNULL(sum(order_amount),0) sumAmount
IFNULL(sum(order_money),0) orderMoney
from wx_vtwo_activity_order
<include refid="dynamicWhereConditions" />
group by business_id
@@ -219,7 +219,7 @@
real_cus_name,cus_phone,cus_card,
cus_address,legion_id,legion_name,
union_id,union_name,from_order_id,
order_no,order_amount,merchant_id,
order_no,order_money,merchant_id,
business_id,lottery_num,lottery_count,
anniversary_lottery_num,audit_status,audit_remark,
audit_by,audit_time,increased_points,
@@ -231,7 +231,7 @@
#{item.realCusName,jdbcType=VARCHAR},#{item.cusPhone,jdbcType=VARCHAR},#{item.cusCard,jdbcType=VARCHAR},
#{item.cusAddress,jdbcType=VARCHAR},#{item.legionId,jdbcType=BIGINT},#{item.legionName,jdbcType=VARCHAR},
#{item.unionId,jdbcType=BIGINT},#{item.unionName,jdbcType=VARCHAR},#{item.fromOrderId,jdbcType=BIGINT},
#{item.orderNo,jdbcType=VARCHAR},#{item.orderAmount,jdbcType=DECIMAL},#{item.merchantId,jdbcType=BIGINT},
#{item.orderNo,jdbcType=VARCHAR},#{item.orderMoney,jdbcType=DECIMAL},#{item.merchantId,jdbcType=BIGINT},
#{item.businessId,jdbcType=INTEGER},#{item.lotteryNum,jdbcType=VARCHAR},#{item.lotteryCount,jdbcType=INTEGER},
#{item.anniversaryLotteryNum,jdbcType=VARCHAR},#{item.auditStatus,jdbcType=INTEGER},#{item.auditRemark,jdbcType=VARCHAR},
#{item.auditBy,jdbcType=BIGINT},#{item.auditTime,jdbcType=TIMESTAMP},#{item.increasedPoints,jdbcType=INTEGER},
@@ -250,4 +250,13 @@
and `parent_tenant_id` = #{parentTenantId}
</if>
</update>

<select id="findAuditDetailList" parameterType="com.iformall.domain.po.WxVtwoActivityOrder" resultMap="BaseResultMap">
select
id,tenant_id,parent_tenant_id,
audit_status,audit_remark,
audit_by,audit_time
from wx_vtwo_activity_order
<include refid="dynamicWhereConditions" />
</select>
</mapper>

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

@@ -54,6 +54,14 @@
and `credit_on_off` = #{creditOnOff}
</if>

<!-- 未过期 -->
<if test=" 0 == validStatus">
and end_time &gt;= now()
</if>
<!-- 已过期 -->
<if test=" 1 == validStatus">
and end_time &lt;= now()
</if>
<if test=" null != status ">
and `status` = #{status}
</if>
@@ -76,4 +84,30 @@
select <include refid="allColumns" /> from wx_vtwo_activity_special_topic
where id = #{id} and tenant_id=#{tenantId}
</select>

<select id="selectCreditCount" parameterType="com.iformall.domain.po.WxVtwoActivitySpecialTopic" resultType="integer">
select count(1) from wx_vtwo_activity_special_topic
where credit_on_off = #{creditOnOff}
<if test=" null != tenantId and '' != tenantId">
and `tenant_id` = #{tenantId}
</if>
<if test=" null != parentTenantId and '' != parentTenantId">
and `parent_tenant_id` = #{parentTenantId}
</if>
<if test=" null != id">
and `id` != #{id}
</if>
and ((`start_time` &lt;= #{startTime} and `end_time` &gt;= #{startTime})
or (`start_time` &lt;= #{endTime} and `end_time` &gt;= #{endTime}))
</select>

<select id="selectCreditOne" parameterType="java.util.HashMap" resultType="com.iformall.domain.po.WxVtwoActivitySpecialTopic">
select <include refid="allColumns" /> from wx_vtwo_activity_special_topic
where `tenant_id` = #{tenantId}
and credit_on_off = #{creditOnOff}
and `start_time` &lt;= #{orderDate}
and `end_time` &gt;= #{orderDate}
and `status` = #{status}
limit 1
</select>
</mapper>

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

@@ -14,7 +14,7 @@
<result property="amountModel" column="amount_model" jdbcType="SMALLINT"/>
<result property="businessOrderLimit" column="business_order_limit" jdbcType="INTEGER"/>
<result property="relatedModel" column="related_model" jdbcType="SMALLINT"/>
<result property="cashBackLimit" column="cash_back_limit" jdbcType="INTEGER"/>
<result property="cashBackLimit" column="cash_back_limit" jdbcType="DECIMAL"/>
<result property="cashBackRule" column="cash_back_rule" jdbcType="SMALLINT"/>
<result property="taxDeductionRules" column="tax_deduction_rules" jdbcType="VARCHAR"/>
<result property="merchantRule" column="merchant_rule" jdbcType="SMALLINT"/>


Некоторые файлы не были показаны из-за большого количества измененных файлов

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