diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoActivitySpecialTopicController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoActivitySpecialTopicController.java index 2a11cb11e..8feec54bb 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoActivitySpecialTopicController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoActivitySpecialTopicController.java @@ -1,8 +1,8 @@ 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; @@ -10,8 +10,9 @@ 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.WxVtwoActivityCreditRule; +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; @@ -23,6 +24,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.math.BigDecimal; +import java.util.List; /** * @author alascor @@ -46,6 +48,15 @@ public class WxVtwoActivitySpecialTopicController extends BaseController { @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") @@ -129,9 +140,16 @@ public class WxVtwoActivitySpecialTopicController extends BaseController { return new ResultData(Result.ERROR,"活动参数异常"); } } - - wxVtwoActivitySpecialTopicService.saveOrUpdate(specialTopic); - return new ResultData(specialTopic); + 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) @@ -173,4 +191,116 @@ public class WxVtwoActivitySpecialTopicController extends BaseController { 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)); + } + } diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoAmountGiftActivityController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoAmountGiftActivityController.java index 13dc63fae..ee33f8f83 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoAmountGiftActivityController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoAmountGiftActivityController.java @@ -10,10 +10,7 @@ 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.enums.EnumOfflineActivityAwardsMoneyRule; -import com.iformall.enums.EnumOfflineActivityMerchantType; -import com.iformall.enums.EnumOfflineActivityMode; -import com.iformall.enums.EnumOfflineActivityStatus; +import com.iformall.enums.*; import com.iformall.exception.MallinkException; import com.iformall.service.WxVtwoActivityGrantService; import com.iformall.service.WxVtwoActivityOrderService; @@ -289,6 +286,7 @@ public class WxVtwoAmountGiftActivityController extends BaseController { 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,"请筛选订单"); @@ -302,6 +300,8 @@ public class WxVtwoAmountGiftActivityController extends BaseController { // 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{ diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoCashBackActivityController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoCashBackActivityController.java index b7b75a291..2a6927f0c 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoCashBackActivityController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoCashBackActivityController.java @@ -10,10 +10,7 @@ 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.enums.EnumOfflineActivityAwardsMoneyRule; -import com.iformall.enums.EnumOfflineActivityMerchantType; -import com.iformall.enums.EnumOfflineActivityMode; -import com.iformall.enums.EnumOfflineActivityStatus; +import com.iformall.enums.*; import com.iformall.exception.MallinkException; import com.iformall.service.WxVtwoActivityOrderService; import com.iformall.service.WxVtwoAmountGiftActivityService; @@ -312,6 +309,7 @@ public class WxVtwoCashBackActivityController extends BaseController { 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,"请筛选订单"); @@ -325,6 +323,8 @@ public class WxVtwoCashBackActivityController extends BaseController { // 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{ diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoPrizeDrawActivityController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoPrizeDrawActivityController.java index a9c81149d..f8e5dbffc 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoPrizeDrawActivityController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoPrizeDrawActivityController.java @@ -12,6 +12,9 @@ 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.*; @@ -298,6 +301,8 @@ public class WxVtwoPrizeDrawActivityController extends BaseController { // 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{ diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivityGrant.java b/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivityGrant.java index 44c93da53..da5e1831e 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivityGrant.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivityGrant.java @@ -33,6 +33,9 @@ public class WxVtwoActivityGrant extends TenantEntity { @TableField(value = "activity_id") private Long activityId; + @TableField(value = "activity_type") + private Integer activityType; + /** * */ @@ -149,6 +152,11 @@ public class WxVtwoActivityGrant extends TenantEntity { @TableField(value = "create_date") private Date createDate; + @TableField(exist = false) + private Date createDateBegin; + @TableField(exist = false) + private Date createDateEnd; + /** * 更新时间 */ diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivityGrantAward.java b/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivityGrantAward.java index 96683bf14..77568d6a8 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivityGrantAward.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivityGrantAward.java @@ -122,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; + /** * 更新时间 */ diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivityGrantExport.java b/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivityGrantExport.java index b1398a71a..e06f1f0e2 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivityGrantExport.java +++ b/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 */ diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivityGrantSettlement.java b/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivityGrantSettlement.java index 8a3de4b0f..61dd5464d 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivityGrantSettlement.java +++ b/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; /** @@ -133,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 activityIdList; + + @TableField(exist = false) + private List merchantIdList; + + @TableField(exist = false) + private List awardIdList; } \ No newline at end of file diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivitySpecialTopic.java b/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivitySpecialTopic.java index 4f24928c0..1505087c7 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivitySpecialTopic.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivitySpecialTopic.java @@ -87,6 +87,9 @@ public class WxVtwoActivitySpecialTopic extends TenantEntity { private Date begin; @TableField(exist = false) private Date end; + + @TableField(exist = false) + private Long activityId; /** * 是否过期 */ diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoCashBackGrant.java b/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoCashBackGrant.java index ad7a96ce4..3be121d84 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoCashBackGrant.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoCashBackGrant.java @@ -33,6 +33,9 @@ public class WxVtwoCashBackGrant extends TenantEntity { @TableField(value = "activity_id") private Long activityId; + @TableField(value = "activity_type") + private Integer activityType; + /** * */ @@ -179,6 +182,11 @@ public class WxVtwoCashBackGrant extends TenantEntity { @TableField(value = "create_date") private Date createDate; + @TableField(exist = false) + private Date createDateBegin; + @TableField(exist = false) + private Date createDateEnd; + /** * 更新时间 */ diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoCashBackGrantAward.java b/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoCashBackGrantAward.java index 5a6524110..daeae0cfd 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoCashBackGrantAward.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoCashBackGrantAward.java @@ -152,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; + /** * 更新时间 */ diff --git a/mallinkService/src/main/java/com/iformall/domain/vo/WxVtwoActivityStatisticsVo.java b/mallinkService/src/main/java/com/iformall/domain/vo/WxVtwoActivityStatisticsVo.java new file mode 100644 index 000000000..dfa5facd4 --- /dev/null +++ b/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 activityIdList; + +} diff --git a/mallinkService/src/main/java/com/iformall/domain/vo/WxVtwoAwardGrantStatistics.java b/mallinkService/src/main/java/com/iformall/domain/vo/WxVtwoAwardGrantStatistics.java new file mode 100644 index 000000000..c9ed78b82 --- /dev/null +++ b/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; + +} diff --git a/mallinkService/src/main/java/com/iformall/domain/vo/WxVtwoAwardStatistics.java b/mallinkService/src/main/java/com/iformall/domain/vo/WxVtwoAwardStatistics.java new file mode 100644 index 000000000..e76032969 --- /dev/null +++ b/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;//联单返现* + +} diff --git a/mallinkService/src/main/java/com/iformall/domain/vo/WxVtwoMerchantSettlementStatistics.java b/mallinkService/src/main/java/com/iformall/domain/vo/WxVtwoMerchantSettlementStatistics.java new file mode 100644 index 000000000..8fad169c1 --- /dev/null +++ b/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; + +} diff --git a/mallinkService/src/main/java/com/iformall/domain/vo/WxVtwoOrderBusinessStatistics.java b/mallinkService/src/main/java/com/iformall/domain/vo/WxVtwoOrderBusinessStatistics.java index 8a6f74128..02caa27a2 100644 --- a/mallinkService/src/main/java/com/iformall/domain/vo/WxVtwoOrderBusinessStatistics.java +++ b/mallinkService/src/main/java/com/iformall/domain/vo/WxVtwoOrderBusinessStatistics.java @@ -16,6 +16,6 @@ public class WxVtwoOrderBusinessStatistics implements Serializable { private Integer businessCount; private BigDecimal sumMoney; + private Double countRatio; private Double moneyRatio; - } diff --git a/mallinkService/src/main/java/com/iformall/domain/vo/WxVtwoSettlementStatistics.java b/mallinkService/src/main/java/com/iformall/domain/vo/WxVtwoSettlementStatistics.java new file mode 100644 index 000000000..c73283105 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/domain/vo/WxVtwoSettlementStatistics.java @@ -0,0 +1,18 @@ +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; +} diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxVtwoActivityGrantAwardMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxVtwoActivityGrantAwardMapper.java index 9b96e2a74..817c09d13 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxVtwoActivityGrantAwardMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxVtwoActivityGrantAwardMapper.java @@ -3,6 +3,8 @@ 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; @@ -16,6 +18,13 @@ import java.util.List; public interface WxVtwoActivityGrantAwardMapper extends CommonMapper { void insertList(@Param("grantAwardList")List grantAwardList); + + WxVtwoAwardStatistics activityAwardCountStatistics(WxVtwoActivityGrantAward grantAward); + + List activityAwardCountStatisticsChart(WxVtwoActivityGrantAward grantAward); + + List awardItemStatistics(WxVtwoActivityGrantAward grantAward); + } diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxVtwoActivityGrantMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxVtwoActivityGrantMapper.java index 9858cf78a..35114dc1d 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxVtwoActivityGrantMapper.java +++ b/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 { + WxVtwoAwardStatistics activityAwardStatistics(WxVtwoActivityGrant activityGrant); + + List activityAwardStatisticsChart(WxVtwoActivityGrant activityGrant); } diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxVtwoActivityGrantSettlementMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxVtwoActivityGrantSettlementMapper.java index 8fc0a90ea..b9b40450d 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxVtwoActivityGrantSettlementMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxVtwoActivityGrantSettlementMapper.java @@ -2,7 +2,9 @@ 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; @@ -18,6 +20,15 @@ public interface WxVtwoActivityGrantSettlementMapper extends CommonMapper settlementList); + + WxVtwoSettlementStatistics settlementStatistics(WxVtwoActivityGrantSettlement record); + + List merchantSettlementStatistics(WxVtwoActivityGrantSettlement record); + + WxVtwoAwardStatistics activityAwardStatistics(WxVtwoActivityGrantSettlement record); + + List activityAwardStatisticsChart(WxVtwoActivityGrantSettlement record); + } diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxVtwoCashBackGrantAwardMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxVtwoCashBackGrantAwardMapper.java index f8f1c27cd..a39eb038b 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxVtwoCashBackGrantAwardMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxVtwoCashBackGrantAwardMapper.java @@ -4,6 +4,7 @@ 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; @@ -18,6 +19,8 @@ public interface WxVtwoCashBackGrantAwardMapper extends CommonMapper grantAwardList); + List awardItemStatistics(WxVtwoCashBackGrantAward grantAward); + } diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxVtwoCashBackGrantMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxVtwoCashBackGrantMapper.java index 0014b8f79..edc071318 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxVtwoCashBackGrantMapper.java +++ b/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 { + WxVtwoAwardStatistics activityAwardStatistics(WxVtwoCashBackGrant wxVtwoCashBackGrant); + + List activityAwardStatisticsChart(WxVtwoCashBackGrant wxVtwoCashBackGrant); } diff --git a/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityGrantSettlementService.java b/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityGrantSettlementService.java index 0656ce9c8..a33cf2932 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityGrantSettlementService.java +++ b/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); + } diff --git a/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityGrantAwardService.java b/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityGrantAwardService.java index fefc4e4a2..ca1eb37f6 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityGrantAwardService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityGrantAwardService.java @@ -4,6 +4,9 @@ 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; @@ -15,4 +18,10 @@ import java.util.List; public interface WxVtwoActivityGrantAwardService extends IService { void saveGrantAward(WxVtwoActivityGrant activityGrant,List awardList); + + WxVtwoAwardStatistics activityAwardCountStatistics(WxVtwoActivityStatisticsVo statisticsVo); + + List activityAwardCountStatisticsChart(WxVtwoActivityStatisticsVo statisticsVo); + + List awardItemStatistics(WxVtwoActivityStatisticsVo statisticsVo); } diff --git a/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityGrantService.java b/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityGrantService.java index fe7dfb139..72db56c72 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityGrantService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityGrantService.java @@ -3,6 +3,8 @@ 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; @@ -15,6 +17,9 @@ import java.util.List; */ public interface WxVtwoActivityGrantService extends IService { - void handleFromOrder(String activityName, WxVtwoActivityGrant activityGrant, List orderList, boolean isGrant); + void handleFromOrder(WxVtwoActivityGrant activityGrant, List orderList, boolean isGrant); + WxVtwoAwardStatistics activityAwardStatistics(WxVtwoActivityStatisticsVo statisticsVo); + + List activityAwardStatisticsChart(WxVtwoActivityStatisticsVo statisticsVo); } diff --git a/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityGrantSettlementService.java b/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityGrantSettlementService.java index cdfb938c9..c6a44532b 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityGrantSettlementService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityGrantSettlementService.java @@ -4,6 +4,11 @@ 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 @@ -15,4 +20,14 @@ public interface WxVtwoActivityGrantSettlementService extends IService amountAwardIdList); + + List activityAwardStatisticsChart(WxVtwoActivityStatisticsVo statisticsVo); + + List activityAmountCashBackStatisticsChart(WxVtwoActivityStatisticsVo statisticsVo, List amountAwardIdList); } diff --git a/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityGrantStatisticsService.java b/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityGrantStatisticsService.java new file mode 100644 index 000000000..7c420305f --- /dev/null +++ b/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 activityAwardStatisticsChart(WxVtwoActivityStatisticsVo statisticsVo); + + List awardItemStatistics(WxVtwoActivityStatisticsVo statisticsVo); + +} diff --git a/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityOrderService.java b/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityOrderService.java index 1261ac2ad..5c27ab05e 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityOrderService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityOrderService.java @@ -5,6 +5,9 @@ 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; @@ -50,4 +53,10 @@ public interface WxVtwoActivityOrderService extends IService findAuditDetailMap(List ids, String tenantId); + + WxVtwoOrderCountStatistics orderCountStatistics(WxVtwoActivityStatisticsVo statisticsVo); + + List orderCountStatisticsChart(WxVtwoActivityStatisticsVo statisticsVo); + + List orderBusinessStatistics(WxVtwoActivityStatisticsVo statisticsVo); } diff --git a/mallinkService/src/main/java/com/iformall/service/WxVtwoActivitySpecialTopicService.java b/mallinkService/src/main/java/com/iformall/service/WxVtwoActivitySpecialTopicService.java index 793548b0b..6123c6118 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxVtwoActivitySpecialTopicService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxVtwoActivitySpecialTopicService.java @@ -5,6 +5,7 @@ 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; @@ -21,5 +22,9 @@ public interface WxVtwoActivitySpecialTopicService extends IService findActivityAwardList(Long activityId, String tenantId); Map findActivityAwardMap(Long activityId, String tenantId); + + List getAmountAwardIdList(Long activityId, String tenantId); } diff --git a/mallinkService/src/main/java/com/iformall/service/WxVtwoCashBackGrantAwardService.java b/mallinkService/src/main/java/com/iformall/service/WxVtwoCashBackGrantAwardService.java index 0f60ffdb4..5b6661671 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxVtwoCashBackGrantAwardService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxVtwoCashBackGrantAwardService.java @@ -5,6 +5,8 @@ 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; @@ -18,4 +20,6 @@ public interface WxVtwoCashBackGrantAwardService extends IService orderList); void saveGrantAward(WxVtwoCashBackGrant activityGrant); + + List awardItemStatistics(WxVtwoActivityStatisticsVo statisticsVo); } diff --git a/mallinkService/src/main/java/com/iformall/service/WxVtwoCashBackGrantService.java b/mallinkService/src/main/java/com/iformall/service/WxVtwoCashBackGrantService.java index 5123441e1..c1c4c119f 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxVtwoCashBackGrantService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxVtwoCashBackGrantService.java @@ -1,12 +1,11 @@ package com.iformall.service; -import com.iformall.domain.po.WxVtwoActivityGrant; 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 javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; import java.util.List; /** @@ -16,6 +15,9 @@ import java.util.List; */ public interface WxVtwoCashBackGrantService extends IService { - void handleFromOrder(String activityName, WxVtwoCashBackGrant activityGrant, List orderList, boolean isGrant); + void handleFromOrder(WxVtwoCashBackGrant activityGrant, List orderList, boolean isGrant); + WxVtwoAwardStatistics activityAwardStatistics(WxVtwoActivityStatisticsVo statisticsVo); + + List activityAwardStatisticsChart(WxVtwoActivityStatisticsVo statisticsVo); } diff --git a/mallinkService/src/main/java/com/iformall/service/WxVtwoSpecialTopicActivityService.java b/mallinkService/src/main/java/com/iformall/service/WxVtwoSpecialTopicActivityService.java index ef8d28903..0884c00d2 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxVtwoSpecialTopicActivityService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxVtwoSpecialTopicActivityService.java @@ -14,5 +14,5 @@ import java.util.List; */ public interface WxVtwoSpecialTopicActivityService extends IService { - void saveFromSpecialTopic(TenantEntity tenantEntity, Long specialTopicId, List activityList); + void saveFromSpecialTopic(WxVtwoActivitySpecialTopic specialTopic, List activityList); } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityGrantAwardServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityGrantAwardServiceImpl.java index 5d5480407..35076f836 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityGrantAwardServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityGrantAwardServiceImpl.java @@ -6,6 +6,11 @@ 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; @@ -15,6 +20,7 @@ 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; @@ -84,6 +90,34 @@ public class WxVtwoActivityGrantAwardServiceImpl extends ServiceImpl activityAwardCountStatisticsChart(WxVtwoActivityStatisticsVo statisticsVo) { + WxVtwoActivityGrantAward grantAward = handleStatisticsVo(statisticsVo); + return wxVtwoActivityGrantAwardMapper.activityAwardCountStatisticsChart(grantAward); + } + + @Override + public List awardItemStatistics(WxVtwoActivityStatisticsVo statisticsVo) { + WxVtwoActivityGrantAward grantAward = handleStatisticsVo(statisticsVo); + return wxVtwoActivityGrantAwardMapper.awardItemStatistics(grantAward); + } } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityGrantExportServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityGrantExportServiceImpl.java index 579253e91..d2d6bd764 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityGrantExportServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityGrantExportServiceImpl.java @@ -50,6 +50,8 @@ public class WxVtwoActivityGrantExportServiceImpl extends ServiceImpl orderList, boolean isGrant) { - activityGrant.setActivityName(activityName); + public void handleFromOrder(WxVtwoActivityGrant activityGrant, List orderList, boolean isGrant) { activityGrant.setOrderList(orderList); BigDecimal orderMoneySum = BigDecimal.ZERO; List lotteryNumList = new ArrayList<>(); @@ -65,6 +69,7 @@ public class WxVtwoActivityGrantServiceImpl extends ServiceImpl activityAwardStatisticsChart(WxVtwoActivityStatisticsVo statisticsVo) { + WxVtwoActivityGrant activityGrant = handleStatisticsVo(statisticsVo); + return wxVtwoActivityGrantMapper.activityAwardStatisticsChart(activityGrant); + } + } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityGrantSettlementServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityGrantSettlementServiceImpl.java index 6affd9ee1..a664eca60 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityGrantSettlementServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityGrantSettlementServiceImpl.java @@ -3,9 +3,11 @@ package com.iformall.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 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.mapper.WxVtwoActivityGrantMapper; import com.iformall.service.WxVtwoActivityGrantExportService; import com.iformall.service.WxVtwoActivityGrantSettlementService; import com.iformall.mapper.WxVtwoActivityGrantSettlementMapper; @@ -14,10 +16,7 @@ import org.springframework.stereotype.Service; import java.math.BigDecimal; import java.math.RoundingMode; -import java.util.ArrayList; -import java.util.Comparator; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.function.Function; import java.util.stream.Collectors; @@ -210,6 +209,55 @@ public class WxVtwoActivityGrantSettlementServiceImpl extends ServiceImpl 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 activityAwardStatisticsChart(WxVtwoActivityStatisticsVo statisticsVo) { + WxVtwoActivityGrantSettlement grantSettlement = handleStatisticsVo(statisticsVo); + return wxVtwoActivityGrantSettlementMapper.activityAwardStatisticsChart(grantSettlement); + } + + @Override + public List activityAmountCashBackStatisticsChart(WxVtwoActivityStatisticsVo statisticsVo, List amountAwardIdList) { + WxVtwoActivityGrantSettlement grantSettlement = handleStatisticsVo(statisticsVo); + if(amountAwardIdList != null && !amountAwardIdList.isEmpty()){ + grantSettlement.setAwardIdList(amountAwardIdList); + }else{ + grantSettlement.setAwardIdList(Collections.singletonList((long) -1)); + } + return wxVtwoActivityGrantSettlementMapper.activityAwardStatisticsChart(grantSettlement); + } } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityGrantStatisticsServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityGrantStatisticsServiceImpl.java new file mode 100644 index 000000000..faf6b49d4 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityGrantStatisticsServiceImpl.java @@ -0,0 +1,214 @@ +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.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 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 activityAwardStatisticsChart(WxVtwoActivityStatisticsVo statisticsVo) { + List activityAwardStatistics = wxVtwoActivityGrantSettlementService.activityAwardStatisticsChart(statisticsVo); + Map activityAwardStatisticsMap = new HashMap<>(); + if(activityAwardStatistics != null && !activityAwardStatistics.isEmpty()){ + activityAwardStatisticsMap = activityAwardStatistics.stream().collect(Collectors.toMap(WxVtwoAwardStatistics::getXTime, Function.identity())); + } + Map activityGrantStatisticsMap = new HashMap<>(); + Map activityAmountCashBackStatisticsMap = new HashMap<>(); + Map activityAwardCountStatisticsMap = new HashMap<>(); + if(EnumOfflineActivityType.CASHBACK.getCode().equals(statisticsVo.getActivityType())){ + List activityAwardStatistics_1 = wxVtwoCashBackGrantService.activityAwardStatisticsChart(statisticsVo); + if(activityAwardStatistics_1 != null && !activityAwardStatistics_1.isEmpty()){ + activityAwardStatisticsMap = activityAwardStatistics_1.stream().collect(Collectors.toMap(WxVtwoAwardStatistics::getXTime, Function.identity())); + } + List amountAwardIdList = wxVtwoCashBackAwardService.getAmountAwardIdList(statisticsVo.getActivityId(),statisticsVo.getTenantId()); + List 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 activityAwardStatistics_1 = wxVtwoActivityGrantService.activityAwardStatisticsChart(statisticsVo); + if(activityAwardStatistics_1 != null && !activityAwardStatistics_1.isEmpty()){ + activityAwardStatisticsMap = activityAwardStatistics_1.stream().collect(Collectors.toMap(WxVtwoAwardStatistics::getXTime, Function.identity())); + } + List activityAwardStatistics_2 = wxVtwoActivityGrantAwardService.activityAwardCountStatisticsChart(statisticsVo); + if(activityAwardStatistics_2 != null && !activityAwardStatistics_2.isEmpty()){ + activityAwardCountStatisticsMap = activityAwardStatistics_2.stream().collect(Collectors.toMap(WxVtwoAwardStatistics::getXTime, Function.identity())); + } + } + + List tjTimeList = DateUtils.getTjTimeList(DateUtils.date2String(statisticsVo.getCreateDateBegin(),"yyyy-MM-dd"), + DateUtils.date2String(statisticsVo.getCreateDateEnd(),"yyyy-MM-dd"), "0"); + List 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 awardItemStatistics(WxVtwoActivityStatisticsVo statisticsVo) { + List awardGrantStatisticsList = new ArrayList<>(); + if(EnumOfflineActivityType.CASHBACK.getCode().equals(statisticsVo.getActivityType())){ + List activityAwardList = wxVtwoCashBackAwardService.findActivityAwardList(statisticsVo.getActivityId(), statisticsVo.getTenantId()); + List awardGrantStatistics = wxVtwoCashBackGrantAwardService.awardItemStatistics(statisticsVo); + Map 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); + } + }else{ + List activityAwardList = wxVtwoActivityAwardService.findActivityAwardList(statisticsVo.getActivityId(), statisticsVo.getTenantId()); + List awardGrantStatistics = wxVtwoActivityGrantAwardService.awardItemStatistics(statisticsVo); + Map 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; + } +} + + + + diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityOrderServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityOrderServiceImpl.java index 7730dcd28..2645ae3b7 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityOrderServiceImpl.java @@ -441,6 +441,65 @@ public class WxVtwoActivityOrderServiceImpl extends ServiceImpl orderCountStatisticsChart(WxVtwoActivityStatisticsVo statisticsVo) { + WxVtwoActivityOrder activityOrder = handleStatisticsVo(statisticsVo); + List countStatisticsChart = wxVtwoActivityOrderMapper.getCountStatisticsChart(activityOrder); + Map countStatisticsChartMap = new HashMap<>(); + if(countStatisticsChart != null && !countStatisticsChart.isEmpty()){ + countStatisticsChartMap = countStatisticsChart.stream().collect(Collectors.toMap(WxVtwoOrderCountStatistics::getXTime, Function.identity())); + } + List tjTimeList = DateUtils.getTjTimeList(DateUtils.date2String(activityOrder.getCreateDateBegin(),"yyyy-MM-dd"), + DateUtils.date2String(activityOrder.getCreateDateEnd(),"yyyy-MM-dd"), "0"); + List 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.setSumMoney(BigDecimal.ZERO); + countStatistics.setMerchantCount(0); + } + countStatistics.setXTime(date.substring(5).replace("-", "/")); + newCountStatisticsChart.add(countStatistics); + } + return newCountStatisticsChart; + } + + @Override + public List orderBusinessStatistics(WxVtwoActivityStatisticsVo statisticsVo) { + WxVtwoActivityOrder activityOrder = handleStatisticsVo(statisticsVo); + List businessStatistics = wxVtwoActivityOrderMapper.getBusinessStatistics(activityOrder); + if(businessStatistics != null && !businessStatistics.isEmpty()){ + Map bussinessMap = wxBusinessService.findAllMap(activityOrder); + BigDecimal totalMoney = businessStatistics.stream().map(WxVtwoOrderBusinessStatistics::getSumMoney).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.getSumMoney().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(); + } + } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivitySpecialTopicServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivitySpecialTopicServiceImpl.java index 7c5cec228..afeba859d 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivitySpecialTopicServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivitySpecialTopicServiceImpl.java @@ -6,16 +6,15 @@ 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.WxVtwoActivityCreditRule; -import com.iformall.domain.vo.WxVtwoActivityOrderStatistics; -import com.iformall.domain.vo.WxVtwoActivityRule; -import com.iformall.domain.vo.WxVtwoActivityRuleDetail; +import com.iformall.domain.vo.*; import com.iformall.enums.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; @@ -27,6 +26,7 @@ import org.springframework.transaction.annotation.Transactional; import java.util.Date; import java.util.List; +import java.util.stream.Collectors; /** * @author xiaohu @@ -108,7 +108,7 @@ public class WxVtwoActivitySpecialTopicServiceImpl extends ServiceImpl activityIdList = specialTopic.getActivityList().stream().map(a -> a.getActivityId()).collect(Collectors.toList()); + statisticsVo.setActivityIdList(activityIdList); + } + } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoAmountGiftActivityServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoAmountGiftActivityServiceImpl.java index 68914b7f6..684dff66f 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoAmountGiftActivityServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoAmountGiftActivityServiceImpl.java @@ -264,7 +264,7 @@ public class WxVtwoAmountGiftActivityServiceImpl extends ServiceImpl orderList = wxVtwoActivityOrderService.findGrantOrder(activityGrant,activityGrant.getOrderIdList(),activityGrant.getOrderFilterIdList()); - wxVtwoActivityGrantService.handleFromOrder(amountGiftActivity.getName(),activityGrant,orderList,false); + wxVtwoActivityGrantService.handleFromOrder(activityGrant,orderList,false); activityGrant.setAwardList(amountGiftActivity.getAwardList()); @@ -329,7 +329,7 @@ public class WxVtwoAmountGiftActivityServiceImpl extends ServiceImpl orderList = wxVtwoActivityOrderService.findGrantOrder(activityGrant,activityGrant.getOrderIdList(),activityGrant.getOrderFilterIdList()); - wxVtwoActivityGrantService.handleFromOrder(amountGiftActivity.getName(),activityGrant,orderList,false); + wxVtwoActivityGrantService.handleFromOrder(activityGrant,orderList,false); wxVtwoActivityGrantService.saveOrUpdate(activityGrant); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoCashBackActivityServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoCashBackActivityServiceImpl.java index a1eb67220..a5a219962 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoCashBackActivityServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoCashBackActivityServiceImpl.java @@ -264,7 +264,7 @@ public class WxVtwoCashBackActivityServiceImpl extends ServiceImpl orderList = wxVtwoActivityOrderService.findGrantOrder(activityGrant,activityGrant.getOrderIdList(),activityGrant.getOrderFilterIdList()); - wxVtwoCashBackGrantService.handleFromOrder(cashBackActivity.getName(),activityGrant,orderList,false); + wxVtwoCashBackGrantService.handleFromOrder(activityGrant,orderList,false); wxVtwoCashBackGrantAwardService.handleGrantAwardList(cashBackActivity, activityGrant, orderList); @@ -277,7 +277,7 @@ public class WxVtwoCashBackActivityServiceImpl extends ServiceImpl orderList = wxVtwoActivityOrderService.findGrantOrder(activityGrant,activityGrant.getOrderIdList(),activityGrant.getOrderFilterIdList()); - wxVtwoCashBackGrantService.handleFromOrder(cashBackActivity.getName(),activityGrant,orderList,false); + wxVtwoCashBackGrantService.handleFromOrder(activityGrant,orderList,false); wxVtwoCashBackGrantAwardService.handleGrantAwardList(cashBackActivity, activityGrant, orderList); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoCashBackAwardServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoCashBackAwardServiceImpl.java index 42e54324a..c55504842 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoCashBackAwardServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoCashBackAwardServiceImpl.java @@ -85,6 +85,19 @@ public class WxVtwoCashBackAwardServiceImpl extends ServiceImpl activityAwardList = this.findActivityAwardList(activityId, tenantId); return activityAwardList.stream().collect(Collectors.toMap(WxVtwoCashBackAward::getId, Function.identity())); } + + @Override + public List getAmountAwardIdList(Long activityId, String tenantId) { + WxVtwoCashBackAward cashBackAwardQ = new WxVtwoCashBackAward(); + cashBackAwardQ.setTenantId(tenantId); + cashBackAwardQ.setActivityId(activityId); + cashBackAwardQ.setModelType(EnumOfflineActivityAwardsModeType.AMOUNT.getCode()); + List amountAwardList = wxVtwoCashBackAwardMapper.findList(cashBackAwardQ); + if(amountAwardList != null && !amountAwardList.isEmpty()){ + return amountAwardList.stream().map(WxVtwoCashBackAward::getId).collect(Collectors.toList()); + } + return Collections.emptyList(); + } } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoCashBackGrantAwardServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoCashBackGrantAwardServiceImpl.java index b7c7fdd23..958614f1b 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoCashBackGrantAwardServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoCashBackGrantAwardServiceImpl.java @@ -3,7 +3,9 @@ package com.iformall.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 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; @@ -16,10 +18,7 @@ import org.springframework.stereotype.Service; import java.math.BigDecimal; import java.math.RoundingMode; -import java.util.ArrayList; -import java.util.Comparator; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.function.Function; import static java.util.stream.Collectors.toList; @@ -216,6 +215,22 @@ public class WxVtwoCashBackGrantAwardServiceImpl extends ServiceImpl awardItemStatistics(WxVtwoActivityStatisticsVo statisticsVo) { + WxVtwoCashBackGrantAward grantAward = handleStatisticsVo(statisticsVo); + return wxVtwoCashBackGrantAwardMapper.awardItemStatistics(grantAward); + } } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoCashBackGrantServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoCashBackGrantServiceImpl.java index 716b25857..b463deef7 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoCashBackGrantServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoCashBackGrantServiceImpl.java @@ -7,6 +7,9 @@ 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; @@ -14,6 +17,7 @@ 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; @@ -30,8 +34,7 @@ public class WxVtwoCashBackGrantServiceImpl extends ServiceImpl orderList, boolean isGrant) { - activityGrant.setActivityName(activityName); + public void handleFromOrder(WxVtwoCashBackGrant activityGrant, List orderList, boolean isGrant) { activityGrant.setOrderList(orderList); BigDecimal orderMoneySum = BigDecimal.ZERO; List lotteryNumList = new ArrayList<>(); @@ -76,6 +79,28 @@ public class WxVtwoCashBackGrantServiceImpl extends ServiceImpl activityAwardStatisticsChart(WxVtwoActivityStatisticsVo statisticsVo) { + WxVtwoCashBackGrant wxVtwoCashBackGrant = handleStatisticsVo(statisticsVo); + return wxVtwoCashBackGrantMapper.activityAwardStatisticsChart(wxVtwoCashBackGrant); + } } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoPrizeDrawActivityServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoPrizeDrawActivityServiceImpl.java index 2f5ee281f..63d3342fc 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoPrizeDrawActivityServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoPrizeDrawActivityServiceImpl.java @@ -267,7 +267,7 @@ public class WxVtwoPrizeDrawActivityServiceImpl extends ServiceImpl orderList = wxVtwoActivityOrderService.findGrantOrder(activityGrant,activityGrant.getOrderIdList(),activityGrant.getOrderFilterIdList()); - wxVtwoActivityGrantService.handleFromOrder(prizeDrawActivity.getName(),activityGrant,orderList,false); + wxVtwoActivityGrantService.handleFromOrder(activityGrant,orderList,false); activityGrant.setAwardList(prizeDrawActivity.getAwardList()); @@ -348,7 +348,7 @@ public class WxVtwoPrizeDrawActivityServiceImpl extends ServiceImpl orderList = wxVtwoActivityOrderService.findGrantOrder(activityGrant,activityGrant.getOrderIdList(),activityGrant.getOrderFilterIdList()); - wxVtwoActivityGrantService.handleFromOrder(prizeDrawActivity.getName(),activityGrant,orderList,false); + wxVtwoActivityGrantService.handleFromOrder(activityGrant,orderList,false); wxVtwoActivityGrantService.saveOrUpdate(activityGrant); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoSpecialTopicActivityServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoSpecialTopicActivityServiceImpl.java index 673e95fbf..54b7aaefe 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoSpecialTopicActivityServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoSpecialTopicActivityServiceImpl.java @@ -3,10 +3,13 @@ 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; @@ -28,20 +31,25 @@ public class WxVtwoSpecialTopicActivityServiceImpl extends ServiceImpl activityList) { + public void saveFromSpecialTopic(WxVtwoActivitySpecialTopic specialTopic, List activityList) { WxVtwoSpecialTopicActivity specialTopicActivityQ = new WxVtwoSpecialTopicActivity(); - specialTopicActivityQ.updateTenantInfo(tenantEntity); - specialTopicActivityQ.setSpecialTopicId(specialTopicId); + 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(tenantEntity); - specialTopicActivity.setSpecialTopicId(specialTopicId); + specialTopicActivity.updateTenantInfo(specialTopic); + specialTopicActivity.setSpecialTopicId(specialTopic.getId()); if(specialTopicActivity.getCreateDate() == null){ specialTopicActivity.setCreateDate(now); } diff --git a/mallinkService/src/main/resources/mapper/WxVtwoActivityGrantAwardMapper.xml b/mallinkService/src/main/resources/mapper/WxVtwoActivityGrantAwardMapper.xml index 5c47656a8..d9236a2cc 100644 --- a/mallinkService/src/main/resources/mapper/WxVtwoActivityGrantAwardMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxVtwoActivityGrantAwardMapper.xml @@ -64,6 +64,14 @@ and `award_id` = #{awardId} + + and `create_date` >= #{createDateBegin} + + + + and `create_date` <= #{createDateEnd} + + and `status` = #{status} @@ -107,4 +115,29 @@ #{item.createDate,jdbcType=TIMESTAMP},#{item.updateDate,jdbcType=TIMESTAMP}) + + + + + diff --git a/mallinkService/src/main/resources/mapper/WxVtwoActivityGrantExportMapper.xml b/mallinkService/src/main/resources/mapper/WxVtwoActivityGrantExportMapper.xml index f54478a8e..105a18f58 100644 --- a/mallinkService/src/main/resources/mapper/WxVtwoActivityGrantExportMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxVtwoActivityGrantExportMapper.xml @@ -9,6 +9,8 @@ + + @@ -50,7 +52,7 @@ 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, @@ -79,6 +81,9 @@ and `activity_id` = #{activityId} + + and `activity_type` = #{activityType} + and `order_id` = #{orderId} @@ -109,7 +114,7 @@ insert into wx_vtwo_activity_grant_export (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, @@ -125,7 +130,7 @@ values (#{item.id,jdbcType=BIGINT}, - #{item.activityId,jdbcType=BIGINT},#{item.orderId,jdbcType=BIGINT},#{item.orderNo,jdbcType=VARCHAR}, + #{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}, diff --git a/mallinkService/src/main/resources/mapper/WxVtwoActivityGrantMapper.xml b/mallinkService/src/main/resources/mapper/WxVtwoActivityGrantMapper.xml index 8f4eb52e8..a9783b81b 100644 --- a/mallinkService/src/main/resources/mapper/WxVtwoActivityGrantMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxVtwoActivityGrantMapper.xml @@ -9,6 +9,7 @@ + @@ -29,7 +30,7 @@ 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 @@ and `activity_id` = #{activityId} + + and `activity_type` = #{activityType} + + + + and `create_date` >= #{createDateBegin} + + + + and `create_date` <= #{createDateEnd} + and `status` = #{status} @@ -76,4 +88,23 @@ select from wx_vtwo_activity_grant where id = #{id} and tenant_id=#{tenantId} + + + + + diff --git a/mallinkService/src/main/resources/mapper/WxVtwoActivityGrantSettlementMapper.xml b/mallinkService/src/main/resources/mapper/WxVtwoActivityGrantSettlementMapper.xml index 85dedc94a..6d001d806 100644 --- a/mallinkService/src/main/resources/mapper/WxVtwoActivityGrantSettlementMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxVtwoActivityGrantSettlementMapper.xml @@ -64,10 +64,43 @@ and `award_id` = #{awardId} + + and `merchant_id` = #{merchantId} + + and `status` = #{status} + + and `create_date` >= #{createDateBegin} + + + + and `create_date` <= #{createDateEnd} + + + + and activity_id in + + #{idItem} + + + + + and merchant_id in + + #{midItem} + + + + + and award_id in + + #{idItem} + + + and id in @@ -115,4 +148,51 @@ #{item.updateDate,jdbcType=TIMESTAMP}) + + + + + + + + diff --git a/mallinkService/src/main/resources/mapper/WxVtwoCashBackGrantAwardMapper.xml b/mallinkService/src/main/resources/mapper/WxVtwoCashBackGrantAwardMapper.xml index f0f464ee2..7c1567d8e 100644 --- a/mallinkService/src/main/resources/mapper/WxVtwoCashBackGrantAwardMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxVtwoCashBackGrantAwardMapper.xml @@ -65,6 +65,18 @@ and `order_id` = #{orderId} + + and `create_date` >= #{createDateBegin} + + + + and `create_date` <= #{createDateEnd} + + + + and `status` = #{status} + + and id in @@ -107,4 +119,13 @@ #{item.taxAmount,jdbcType=DECIMAL},#{item.createDate,jdbcType=TIMESTAMP},#{item.updateDate,jdbcType=TIMESTAMP}) + + + diff --git a/mallinkService/src/main/resources/mapper/WxVtwoCashBackGrantMapper.xml b/mallinkService/src/main/resources/mapper/WxVtwoCashBackGrantMapper.xml index d919ad53a..c67b7630e 100644 --- a/mallinkService/src/main/resources/mapper/WxVtwoCashBackGrantMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxVtwoCashBackGrantMapper.xml @@ -9,6 +9,7 @@ + @@ -33,7 +34,7 @@ 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,cash_back_limit, @@ -57,6 +58,17 @@ and `activity_id` = #{activityId} + + and `activity_type` = #{activityType} + + + + and `create_date` >= #{createDateBegin} + + + + and `create_date` <= #{createDateEnd} + and `status` = #{status} @@ -80,4 +92,22 @@ select from wx_vtwo_cash_back_grant where id = #{id} and tenant_id=#{tenantId} + + + +