diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxLegionActivityNoticeController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxLegionActivityNoticeController.java index 9c13a5ae8..dd7e7ab03 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxLegionActivityNoticeController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxLegionActivityNoticeController.java @@ -51,10 +51,10 @@ public class WxLegionActivityNoticeController extends BaseController { @ApiOperation("查询军团活动数据") @GetMapping("legionData") @ApiImplicitParams({ - @ApiImplicitParam(name = "id", value = "主键id", dataType = "Long", paramType = "query", required = true)}) + @ApiImplicitParam(name = "activityId", value = "主键id", dataType = "Long", paramType = "query", required = true)}) public ResultData getLegionData(@ModelAttribute WxLegionActivityOrder wxLegionActivityOrder) { if(wxLegionActivityOrder.getActivityId() == null){ - throw new MallinkException(Result.ERROR,"活动ID不能为空"); + return new ResultData(Result.ERROR,"活动ID不能为空"); } TenantEntity tenantInfo = getTenantInfo(); wxLegionActivityOrder.updateTenantInfo(tenantInfo); @@ -79,10 +79,10 @@ public class WxLegionActivityNoticeController extends BaseController { @ApiOperation("查询军团活动数据") @GetMapping("legionDaysData") @ApiImplicitParams({ - @ApiImplicitParam(name = "id", value = "主键id", dataType = "Long", paramType = "query", required = true)}) + @ApiImplicitParam(name = "activityId", value = "主键id", dataType = "Long", paramType = "query", required = true)}) public ResultData getLegionDaysData(@ModelAttribute WxLegionActivityOrder wxLegionActivityOrder) { if(wxLegionActivityOrder.getActivityId() == null){ - throw new MallinkException(Result.ERROR,"活动ID不能为空"); + return new ResultData(Result.ERROR,"活动ID不能为空"); } TenantEntity tenantInfo = getTenantInfo(); wxLegionActivityOrder.updateTenantInfo(tenantInfo); diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxLegionActivityOrderController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxLegionActivityOrderController.java index efc15d807..8c7ffdc5c 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxLegionActivityOrderController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxLegionActivityOrderController.java @@ -182,7 +182,7 @@ public class WxLegionActivityOrderController extends BaseController { @ApiImplicitParam(name = "id", value = "主键id", dataType = "Long", paramType = "query", required = true)}) public ResultData getActivityData(@ModelAttribute WxLegionActivityOrder wxLegionActivityOrder) { if(wxLegionActivityOrder.getActivityId() == null){ - throw new MallinkException(Result.ERROR,"活动ID不能为空"); + return new ResultData(Result.ERROR,"活动ID不能为空"); } TenantEntity tenantInfo = getTenantInfo(); wxLegionActivityOrder.updateTenantInfo(tenantInfo); @@ -197,7 +197,7 @@ public class WxLegionActivityOrderController extends BaseController { @ApiImplicitParam(name = "id", value = "主键id", dataType = "Long", paramType = "query", required = true)}) public ResultData getActivityMerchantData(@ModelAttribute WxLegionActivityOrder wxLegionActivityOrder) { if(wxLegionActivityOrder.getActivityId() == null){ - throw new MallinkException(Result.ERROR,"活动ID不能为空"); + return new ResultData(Result.ERROR,"活动ID不能为空"); } TenantEntity tenantInfo = getTenantInfo(); wxLegionActivityOrder.updateTenantInfo(tenantInfo); @@ -225,7 +225,7 @@ public class WxLegionActivityOrderController extends BaseController { @ApiImplicitParam(name = "id", value = "主键id", dataType = "Long", paramType = "query", required = true)}) public ResultData getActivitySellOrder(@ModelAttribute WxLegionActivityOrder wxLegionActivityOrder) { if(wxLegionActivityOrder.getActivityId() == null){ - throw new MallinkException(Result.ERROR,"活动ID不能为空"); + return new ResultData(Result.ERROR,"活动ID不能为空"); } TenantEntity tenantInfo = getTenantInfo(); wxLegionActivityOrder.updateTenantInfo(tenantInfo); diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivityNoticeController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivityNoticeController.java new file mode 100644 index 000000000..6db0ea483 --- /dev/null +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivityNoticeController.java @@ -0,0 +1,142 @@ +package com.iformall.controller.market; + +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.WxOfflineActivityGrantSettlement; +import com.iformall.domain.po.WxOfflineActivityRecord; +import com.iformall.domain.po.base.TenantEntity; +import com.iformall.domain.vo.*; +import com.iformall.service.WxOfflineActivityGrantSettlementService; +import com.iformall.service.WxOfflineActivityItemStatisticsService; +import com.iformall.service.WxOfflineActivityRecordService; +import io.swagger.annotations.Api; +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.util.List; + +/** + * @author alascor + * + */ +@RestController +@RequestMapping("/offlineNotic") +@Api(description = "线下活动看板相关接口") +public class WxOfflineActivityNoticeController extends BaseController { + private final Logger logger = LoggerFactory.getLogger(this.getClass()); + + @Autowired + WxOfflineActivityRecordService wxOfflineActivityRecordService; + + @Autowired + private WxOfflineActivityGrantSettlementService wxOfflineActivityGrantSettlementService; + + @Autowired + WxOfflineActivityItemStatisticsService wxOfflineActivityItemStatisticsService; + + @ApiVersion(group = SwaggerConstant.V_2_0_0) + @ApiOperation("获取参与订单数据报表") + @GetMapping("recordStatistics") + public ResultData recordStatistics(@ModelAttribute WxOfflineActivityRecord wxOfflineActivityRecord) { + if(wxOfflineActivityRecord.getActivityId() == null){ + return new ResultData(Result.ERROR,"活动ID不能为空"); + } + TenantEntity tenantInfo = getTenantInfo(); + wxOfflineActivityRecord.updateTenantInfo(tenantInfo); + OfflineRecordCountStatistics recordStatistics = wxOfflineActivityRecordService.recordStatistics(wxOfflineActivityRecord); + return new ResultData(recordStatistics); + } + + @ApiVersion(group = SwaggerConstant.V_2_0_0) + @ApiOperation("获取参与订单数据折线图") + @GetMapping("recordStatisticsChart") + public ResultData recordStatisticsChart(@ModelAttribute WxOfflineActivityRecord wxOfflineActivityRecord) { + if(wxOfflineActivityRecord.getActivityId() == null){ + return new ResultData(Result.ERROR,"活动ID不能为空"); + } + TenantEntity tenantInfo = getTenantInfo(); + wxOfflineActivityRecord.updateTenantInfo(tenantInfo); + List recordStatistics = wxOfflineActivityRecordService.recordStatisticsChart(wxOfflineActivityRecord); + return new ResultData(recordStatistics); + } + + @ApiVersion(group = SwaggerConstant.V_2_0_0) + @ApiOperation("获取线下活动营销费用") + @GetMapping("settlementStatistics") + public ResultData settlementStatistics(@ModelAttribute WxOfflineActivityGrantSettlement grantSettlement) { + if(grantSettlement.getActivityId() == null){ + return new ResultData(Result.ERROR,"活动ID不能为空"); + } + TenantEntity tenantInfo = getTenantInfo(); + grantSettlement.updateTenantInfo(tenantInfo); + OfflineActivitySettlementStatistics settlementStatistics = wxOfflineActivityGrantSettlementService.activitySettlementStatistics(grantSettlement); + return new ResultData(settlementStatistics); + } + + @ApiVersion(group = SwaggerConstant.V_2_0_0) + @ApiOperation("获取参与订单品类分布") + @GetMapping("recordBusinessStatistics") + public ResultData recordBusinessStatistics(@ModelAttribute WxOfflineActivityRecord wxOfflineActivityRecord) { + if(wxOfflineActivityRecord.getActivityId() == null){ + return new ResultData(Result.ERROR,"活动ID不能为空"); + } + TenantEntity tenantInfo = getTenantInfo(); + wxOfflineActivityRecord.updateTenantInfo(tenantInfo); + List recordStatistics = wxOfflineActivityRecordService.recordBusinessStatistics(wxOfflineActivityRecord); + return new ResultData(recordStatistics); + } + + @ApiVersion(group = SwaggerConstant.V_2_0_0) + @ApiOperation("获取活动项数据统计") + @GetMapping("activityItemStatistics") + public ResultData activityItemStatistics(@ModelAttribute OfflineActivityItemStatisticsBVo activityItemStatisticsBo) { + if(activityItemStatisticsBo.getActivityId() == null){ + return new ResultData(Result.ERROR,"活动ID不能为空"); + } + if(activityItemStatisticsBo.getActivityItemId() == null){ + return new ResultData(Result.ERROR,"活动项ID不能为空"); + } + TenantEntity tenantInfo = getTenantInfo(); + activityItemStatisticsBo.updateTenantInfo(tenantInfo); + OfflineActivityItemStatistics activityItemStatistics = wxOfflineActivityItemStatisticsService.activityItemStatistics(activityItemStatisticsBo); + return new ResultData(activityItemStatistics); + } + + @ApiVersion(group = SwaggerConstant.V_2_0_0) + @ApiOperation("获取活动项数据统计折现图") + @GetMapping("activityItemStatisticsChart") + public ResultData activityItemStatisticsChart(@ModelAttribute OfflineActivityItemStatisticsBVo activityItemStatisticsBo) { + if(activityItemStatisticsBo.getActivityId() == null){ + return new ResultData(Result.ERROR,"活动ID不能为空"); + } + if(activityItemStatisticsBo.getActivityItemId() == null){ + return new ResultData(Result.ERROR,"活动项ID不能为空"); + } + TenantEntity tenantInfo = getTenantInfo(); + activityItemStatisticsBo.updateTenantInfo(tenantInfo); + List activityItemStatistics = wxOfflineActivityItemStatisticsService.activityItemStatisticsChart(activityItemStatisticsBo); + return new ResultData(activityItemStatistics); + } + + @ApiVersion(group = SwaggerConstant.V_2_0_0) + @ApiOperation("获取活动项奖品分布") + @GetMapping("awardsItemStatistics") + public ResultData awardsItemStatistics(@ModelAttribute OfflineActivityItemStatisticsBVo activityItemStatisticsBo) { + if(activityItemStatisticsBo.getActivityId() == null){ + return new ResultData(Result.ERROR,"活动ID不能为空"); + } + if(activityItemStatisticsBo.getActivityItemId() == null){ + return new ResultData(Result.ERROR,"活动项ID不能为空"); + } + TenantEntity tenantInfo = getTenantInfo(); + activityItemStatisticsBo.updateTenantInfo(tenantInfo); + List activityItemStatistics = wxOfflineActivityItemStatisticsService.awardsItemStatistics(activityItemStatisticsBo); + return new ResultData(activityItemStatistics); + } +} diff --git a/mallinkService/src/main/java/com/iformall/domain/vo/ActivityNoticeBo.java b/mallinkService/src/main/java/com/iformall/domain/vo/ActivityNoticeBo.java deleted file mode 100644 index 6f328a96b..000000000 --- a/mallinkService/src/main/java/com/iformall/domain/vo/ActivityNoticeBo.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.iformall.domain.vo; - -import lombok.Data; - -import java.io.Serializable; -import java.math.BigDecimal; - -@Data -public class ActivityNoticeBo implements Serializable { - - private static final long serialVersionUID = 1L; - - //名称 - private String name; - //数量 - private Integer count; - //百分比 - private String percentage; - //序号 - private Integer sortNum; - - private Double score; - - private BigDecimal price; -} diff --git a/mallinkService/src/main/java/com/iformall/domain/vo/OfflineActivityItemStatistics.java b/mallinkService/src/main/java/com/iformall/domain/vo/OfflineActivityItemStatistics.java new file mode 100644 index 000000000..a0bf4f0e6 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/domain/vo/OfflineActivityItemStatistics.java @@ -0,0 +1,28 @@ +package com.iformall.domain.vo; + +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; + +@Data +public class OfflineActivityItemStatistics implements Serializable { + + private static final long serialVersionUID = 1L; + + private String xTime; + + private Integer grantCount;//发奖人数(次数) + private Integer orderCount;//订单数量 + private BigDecimal orderSumMoney;//订单总金额 + + private Integer itemCount;//奖品数量 + private BigDecimal itemSumMoney;//奖品(返现)总价值 + + private BigDecimal mallSumPrice;//商场承担 + private BigDecimal merchantSumPrice;//商户承担 + + private BigDecimal cashSumMoney;//订单返现* + private BigDecimal cashSecondSumMoney;//联单返现* + +} diff --git a/mallinkService/src/main/java/com/iformall/domain/vo/OfflineActivityItemStatisticsBVo.java b/mallinkService/src/main/java/com/iformall/domain/vo/OfflineActivityItemStatisticsBVo.java new file mode 100644 index 000000000..01ccbace8 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/domain/vo/OfflineActivityItemStatisticsBVo.java @@ -0,0 +1,25 @@ +package com.iformall.domain.vo; + +import com.iformall.domain.po.base.TenantEntity; +import com.iformall.enums.EnumYesOrNo; +import lombok.Data; + +import java.util.ArrayList; +import java.util.List; +import java.util.Date; + +@Data +public class OfflineActivityItemStatisticsBVo extends TenantEntity { + + private Long activityId; + private Long activityItemId; + private Integer activityItemType; + + private Date createDateBegin; + private Date createDateEnd; + + private Integer status = EnumYesOrNo.YES.getCode(); + + private List awardsItemIdList; + +} diff --git a/mallinkService/src/main/java/com/iformall/domain/vo/OfflineGantItemStatistics.java b/mallinkService/src/main/java/com/iformall/domain/vo/OfflineGantItemStatistics.java new file mode 100644 index 000000000..ed1788062 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/domain/vo/OfflineGantItemStatistics.java @@ -0,0 +1,22 @@ +package com.iformall.domain.vo; + +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; + +@Data +public class OfflineGantItemStatistics implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long awardItamId; + private String awardItamName; + private BigDecimal cashBackRatio; + + private Integer awardItamCount; + private BigDecimal sumPrice; + + private Double priceRatio; + +} diff --git a/mallinkService/src/main/java/com/iformall/domain/vo/OfflineRecordBusinessStatistics.java b/mallinkService/src/main/java/com/iformall/domain/vo/OfflineRecordBusinessStatistics.java new file mode 100644 index 000000000..341f86f39 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/domain/vo/OfflineRecordBusinessStatistics.java @@ -0,0 +1,21 @@ +package com.iformall.domain.vo; + +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; + +@Data +public class OfflineRecordBusinessStatistics implements Serializable { + + private static final long serialVersionUID = 1L; + + private Integer businessId; + private String businessName; + + private Integer businessCount; + private BigDecimal sumMoney; + + private Double moneyRatio; + +} diff --git a/mallinkService/src/main/java/com/iformall/domain/vo/OfflineRecordCountStatistics.java b/mallinkService/src/main/java/com/iformall/domain/vo/OfflineRecordCountStatistics.java new file mode 100644 index 000000000..119a08fc8 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/domain/vo/OfflineRecordCountStatistics.java @@ -0,0 +1,19 @@ +package com.iformall.domain.vo; + +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; + +@Data +public class OfflineRecordCountStatistics implements Serializable { + + private static final long serialVersionUID = 1L; + + private String xTime; + + private Integer userCount; + private Integer orderCount; + private BigDecimal sumMoney; + private Integer merchantCount; +} diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityGrantAwardMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityGrantAwardMapper.java index ebcf544d0..3d0827604 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityGrantAwardMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityGrantAwardMapper.java @@ -2,6 +2,8 @@ package com.iformall.mapper; import com.iformall.common.CommonMapper; import com.iformall.domain.po.WxOfflineActivityGrantAward; +import com.iformall.domain.vo.OfflineActivityItemStatistics; +import com.iformall.domain.vo.OfflineActivityItemStatisticsBVo; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -25,6 +27,10 @@ public interface WxOfflineActivityGrantAwardMapper extends CommonMapper activityItemStatisticsChart(OfflineActivityItemStatisticsBVo activityItemStatisticsBo); } diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityGrantItemMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityGrantItemMapper.java index 54234f022..3faaa2157 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityGrantItemMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityGrantItemMapper.java @@ -3,7 +3,9 @@ package com.iformall.mapper; import com.iformall.common.CommonMapper; import com.iformall.domain.po.WxOfflineActivityGrantAward; import com.iformall.domain.po.WxOfflineActivityGrantItem; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.iformall.domain.vo.OfflineActivityItemStatistics; +import com.iformall.domain.vo.OfflineActivityItemStatisticsBVo; +import com.iformall.domain.vo.OfflineGantItemStatistics; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -23,6 +25,12 @@ public interface WxOfflineActivityGrantItemMapper extends CommonMapper findList(WxOfflineActivityGrantItem grantItemQ); void updateStatusNo(WxOfflineActivityGrantAward wxOfflineActivityGrantAward); + + OfflineActivityItemStatistics activityItemStatistics(OfflineActivityItemStatisticsBVo activityItemStatisticsBo); + + List activityItemStatisticsChart(OfflineActivityItemStatisticsBVo activityItemStatisticsBo); + + List awardsItemStatistics(OfflineActivityItemStatisticsBVo activityItemStatisticsBo); } diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityGrantSettlementMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityGrantSettlementMapper.java index be33e673f..a89f72882 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityGrantSettlementMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityGrantSettlementMapper.java @@ -3,7 +3,8 @@ package com.iformall.mapper; import com.iformall.common.CommonMapper; import com.iformall.domain.po.WxOfflineActivityGrantAward; import com.iformall.domain.po.WxOfflineActivityGrantSettlement; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.iformall.domain.vo.OfflineActivityItemStatistics; +import com.iformall.domain.vo.OfflineActivityItemStatisticsBVo; import com.iformall.domain.vo.OfflineActivitySettlement; import com.iformall.domain.vo.OfflineActivitySettlementStatistics; import org.apache.ibatis.annotations.Param; @@ -27,6 +28,10 @@ public interface WxOfflineActivityGrantSettlementMapper extends CommonMapper findList(WxOfflineActivityGrantSettlement settlement); void updateStatusNo(WxOfflineActivityGrantAward wxOfflineActivityGrantAward); + + OfflineActivityItemStatistics activityItemStatistics(OfflineActivityItemStatisticsBVo activityItemStatisticsBo); + + List activityItemStatisticsChart(OfflineActivityItemStatisticsBVo activityItemStatisticsBo); } diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityRecordMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityRecordMapper.java index 83ce754f7..6dab5d512 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityRecordMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityRecordMapper.java @@ -4,6 +4,8 @@ import com.iformall.common.CommonMapper; import com.iformall.domain.po.WxOfflineActivityRecord; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.iformall.domain.vo.OfflineActivityRecordStatistics; +import com.iformall.domain.vo.OfflineRecordBusinessStatistics; +import com.iformall.domain.vo.OfflineRecordCountStatistics; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -35,6 +37,13 @@ public interface WxOfflineActivityRecordMapper extends CommonMapper activityRecordList); void updateIncreasedPoints(WxOfflineActivityRecord record); + + OfflineRecordCountStatistics getCountStatistics(WxOfflineActivityRecord record); + + List getCountStatisticsChart(WxOfflineActivityRecord record); + + List getBusinessStatistics(WxOfflineActivityRecord record); + } diff --git a/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityAwardsItemService.java b/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityAwardsItemService.java index 90ff0e430..b7de660d2 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityAwardsItemService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityAwardsItemService.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.iformall.domain.po.WxOfflineActivityItem; import java.util.List; +import java.util.Map; /** * @author xiaohu @@ -16,4 +17,6 @@ public interface WxOfflineActivityAwardsItemService { void saveOrUpdateFromActivityItem(WxOfflineActivityItem activityItem, List activityAwardsItemList, List activityAwardsItemSecondList); List getActivityAwardsItemList(Long activityItemId, String tenantId); + + Map findAwardsItemMap(Long activityItemId, String tenantId); } diff --git a/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityGrantSettlementService.java b/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityGrantSettlementService.java index dbea00751..0656ce9c8 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityGrantSettlementService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityGrantSettlementService.java @@ -7,6 +7,7 @@ import com.iformall.domain.po.WxOfflineActivityGrantSettlement; import com.baomidou.mybatisplus.extension.service.IService; import com.iformall.domain.po.base.TenantEntity; import com.iformall.domain.vo.OfflineActivitySettlement; +import com.iformall.domain.vo.OfflineActivitySettlementStatistics; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -34,4 +35,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/WxOfflineActivityItemStatisticsService.java b/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityItemStatisticsService.java new file mode 100644 index 000000000..b28da9322 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityItemStatisticsService.java @@ -0,0 +1,20 @@ +package com.iformall.service; + +import com.iformall.domain.vo.*; + +import java.util.List; + +/** +* @author xiaohu +* @description 针对表【wx_offline_activity_record(线下活动参与登记)】的数据库操作Service +* @createDate 2024-08-09 00:13:44 +*/ +public interface WxOfflineActivityItemStatisticsService { + + OfflineActivityItemStatistics activityItemStatistics(OfflineActivityItemStatisticsBVo activityItemStatisticsBo); + + List activityItemStatisticsChart(OfflineActivityItemStatisticsBVo activityItemStatisticsBo); + + List awardsItemStatistics(OfflineActivityItemStatisticsBVo activityItemStatisticsBo); + +} diff --git a/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityRecordService.java b/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityRecordService.java index 7704d2bc7..d92febb3a 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityRecordService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityRecordService.java @@ -5,6 +5,8 @@ import com.iformall.domain.po.WxOfflineActivityRecord; import com.baomidou.mybatisplus.extension.service.IService; import com.iformall.domain.po.WxRaffleActivityRecord; import com.iformall.domain.po.base.TenantEntity; +import com.iformall.domain.vo.OfflineRecordBusinessStatistics; +import com.iformall.domain.vo.OfflineRecordCountStatistics; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -40,4 +42,11 @@ public interface WxOfflineActivityRecordService { Integer getWaitAudiCount(TenantEntity tenantInfo); Integer getUserRecordCount(Long id, Long activityId, TenantEntity tenantInfo); + + OfflineRecordCountStatistics recordStatistics(WxOfflineActivityRecord record); + + List recordStatisticsChart(WxOfflineActivityRecord record); + + List recordBusinessStatistics(WxOfflineActivityRecord wxOfflineActivityRecord); + } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityAwardsItemServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityAwardsItemServiceImpl.java index 55d975e65..452a760e3 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityAwardsItemServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityAwardsItemServiceImpl.java @@ -13,6 +13,9 @@ import org.springframework.stereotype.Service; import java.math.BigDecimal; import java.util.Collections; import java.util.List; +import java.util.Map; +import java.util.function.Function; +import java.util.stream.Collectors; /** * @author xiaohu @@ -89,6 +92,15 @@ public class WxOfflineActivityAwardsItemServiceImpl implements WxOfflineActivity List activityAwardsItemList = wxOfflineActivityAwardsItemMapper.findList(activityAwardsItemQuery); return activityAwardsItemList; } + + @Override + public Map findAwardsItemMap(Long activityItemId, String tenantId) { + List activityAwardsItemList = this.getActivityAwardsItemList(activityItemId, tenantId); + if(activityAwardsItemList != null && !activityAwardsItemList.isEmpty()){ + return activityAwardsItemList.stream().collect(Collectors.toMap(WxOfflineActivityAwardsItem::getId, Function.identity())); + } + return Collections.emptyMap(); + } } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantSettlementServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantSettlementServiceImpl.java index f68a16dca..2dea6f481 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantSettlementServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantSettlementServiceImpl.java @@ -359,6 +359,12 @@ public class WxOfflineActivityGrantSettlementServiceImpl implements WxOfflineAct List list = wxOfflineActivityGrantSettlementMapper.findList(grantSettlement); excelService.exportExcel(list, null, "活动商户结算", WxOfflineActivityGrantSettlement.class, "活动商户结算.xlsx", response, false); } + + @Override + public OfflineActivitySettlementStatistics activitySettlementStatistics(WxOfflineActivityGrantSettlement settlement) { + settlement.setStatus(EnumYesOrNo.YES.getCode()); + return wxOfflineActivityGrantSettlementMapper.settlementStatistics(settlement); + } } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityItemStatisticsServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityItemStatisticsServiceImpl.java new file mode 100644 index 000000000..6c8e0dc83 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityItemStatisticsServiceImpl.java @@ -0,0 +1,195 @@ +package com.iformall.service.impl; + +import com.iformall.common.Result; +import com.iformall.domain.po.*; +import com.iformall.domain.vo.*; +import com.iformall.enums.EnumOfflineActivityAwardsItemType; +import com.iformall.enums.EnumOfflineActivityType; +import com.iformall.exception.MallinkException; +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 java.math.BigDecimal; +import java.math.RoundingMode; +import java.util.*; +import java.util.function.Function; +import java.util.stream.Collectors; + +/** +* @author xiaohu +* @description 针对表【wx_offline_activity_record(线下活动参与登记)】的数据库操作Service实现 +* @createDate 2024-08-09 00:13:44 +*/ +@Service +public class WxOfflineActivityItemStatisticsServiceImpl implements WxOfflineActivityItemStatisticsService { + + @Autowired + private WxOfflineActivityMapper wxOfflineActivityMapper; + + @Autowired + private WxOfflineActivityItemMapper wxOfflineActivityItemMapper; + + @Autowired + private WxOfflineActivityGrantSettlementMapper wxOfflineActivityGrantSettlementMapper; + + @Autowired + private WxOfflineActivityGrantAwardMapper wxOfflineActivityGrantAwardMapper; + + @Autowired + private WxOfflineActivityGrantItemMapper wxOfflineActivityGrantItemMapper; + + @Autowired + private WxOfflineActivityAwardsItemMapper wxOfflineActivityAwardsItemMapper; + + @Autowired + private WxOfflineActivityAwardsItemService wxOfflineActivityAwardsItemService; + + + private void handleActivityItemStatisticsBo(OfflineActivityItemStatisticsBVo activityItemStatisticsBo){ + WxOfflineActivity activity = wxOfflineActivityMapper.selectById(activityItemStatisticsBo.getActivityId(), activityItemStatisticsBo.getTenantId()); + if(activity == null){ + throw new MallinkException(Result.ERROR,"未查询到活动"); + } + WxOfflineActivityItem activityItem = wxOfflineActivityItemMapper.selectById(activityItemStatisticsBo.getActivityItemId(), activityItemStatisticsBo.getTenantId()); + if(activityItem == null){ + throw new MallinkException(Result.ERROR,"未查询到活动项目"); + } + activityItemStatisticsBo.setActivityItemType(activityItem.getType()); + + if(activityItemStatisticsBo.getCreateDateBegin() == null || activityItemStatisticsBo.getCreateDateBegin().before(activity.getStartTime())){ + activityItemStatisticsBo.setCreateDateBegin(activity.getStartTime()); + } + if(activityItemStatisticsBo.getCreateDateEnd() == null || activityItemStatisticsBo.getCreateDateEnd().after(activity.getEndTime())){ + activityItemStatisticsBo.setCreateDateEnd(activity.getEndTime()); + } + Date now = new Date(); + if(activityItemStatisticsBo.getCreateDateEnd().after(now)){ + activityItemStatisticsBo.setCreateDateEnd(now); + } + if(activityItemStatisticsBo.getCreateDateBegin().after(activityItemStatisticsBo.getCreateDateEnd())){ + throw new MallinkException(Result.ERROR,"筛选时间不在活动时间范围内"); + } + } + + private List getFirstAwardsItemIdList(OfflineActivityItemStatisticsBVo activityItemStatisticsBo){ + WxOfflineActivityAwardsItem activityAwardsItemQ = new WxOfflineActivityAwardsItem(); + activityAwardsItemQ.updateTenantInfo(activityItemStatisticsBo); + activityAwardsItemQ.setActivityItemId(activityItemStatisticsBo.getActivityItemId()); + activityAwardsItemQ.setType(EnumOfflineActivityAwardsItemType.FIRST.getCode()); + List activityAwardsItemList = wxOfflineActivityAwardsItemMapper.findList(activityAwardsItemQ); + if(activityAwardsItemList != null && !activityAwardsItemList.isEmpty()) { + return activityAwardsItemList.stream().map(WxOfflineActivityAwardsItem::getId).collect(Collectors.toList()); + } + return Collections.emptyList(); + } + + @Override + public OfflineActivityItemStatistics activityItemStatistics(OfflineActivityItemStatisticsBVo activityItemStatisticsBo) { + handleActivityItemStatisticsBo(activityItemStatisticsBo); + OfflineActivityItemStatistics activityItemStatistics = wxOfflineActivityGrantAwardMapper.activityItemStatistics(activityItemStatisticsBo); + OfflineActivityItemStatistics activityItemStatistics_1 = wxOfflineActivityGrantItemMapper.activityItemStatistics(activityItemStatisticsBo); + OfflineActivityItemStatistics activityItemStatistics_2 = wxOfflineActivityGrantSettlementMapper.activityItemStatistics(activityItemStatisticsBo); + activityItemStatistics.setItemCount(activityItemStatistics_1.getItemCount()); + activityItemStatistics.setItemSumMoney(activityItemStatistics_1.getItemSumMoney()); + activityItemStatistics.setMallSumPrice(activityItemStatistics_2.getMallSumPrice()); + activityItemStatistics.setMerchantSumPrice(activityItemStatistics_2.getMerchantSumPrice()); + if(EnumOfflineActivityType.CASHBACK.getCode().equals(activityItemStatisticsBo.getActivityItemType())){ + List awardsItemIds = getFirstAwardsItemIdList(activityItemStatisticsBo); + if(!awardsItemIds.isEmpty()){ + activityItemStatisticsBo.setAwardsItemIdList(awardsItemIds); + OfflineActivityItemStatistics activityItemStatistics_1_1 = wxOfflineActivityGrantItemMapper.activityItemStatistics(activityItemStatisticsBo); + activityItemStatistics.setCashSumMoney(activityItemStatistics_1_1.getItemSumMoney()); + activityItemStatistics.setCashSecondSumMoney(activityItemStatistics.getItemSumMoney().subtract(activityItemStatistics.getCashSumMoney())); + }else{ + activityItemStatistics.setCashSumMoney(BigDecimal.ZERO); + activityItemStatistics.setCashSecondSumMoney(activityItemStatistics.getItemSumMoney()); + } + } + return activityItemStatistics; + } + + @Override + public List activityItemStatisticsChart(OfflineActivityItemStatisticsBVo activityItemStatisticsBo) { + handleActivityItemStatisticsBo(activityItemStatisticsBo); + List activityItemStatistics = wxOfflineActivityGrantAwardMapper.activityItemStatisticsChart(activityItemStatisticsBo); + Map activityItemStatisticsMap = new HashMap<>(); + if(activityItemStatistics != null && !activityItemStatistics.isEmpty()){ + activityItemStatisticsMap = activityItemStatistics.stream().collect(Collectors.toMap(OfflineActivityItemStatistics::getXTime, Function.identity())); + } + List activityItemStatistics_1 = wxOfflineActivityGrantItemMapper.activityItemStatisticsChart(activityItemStatisticsBo); + Map activityItemStatisticsMap_1 = new HashMap<>(); + if(activityItemStatistics != null && !activityItemStatistics.isEmpty()){ + activityItemStatisticsMap_1 = activityItemStatistics_1.stream().collect(Collectors.toMap(OfflineActivityItemStatistics::getXTime, Function.identity())); + } + List activityItemStatistics_2 = wxOfflineActivityGrantSettlementMapper.activityItemStatisticsChart(activityItemStatisticsBo); + Map activityItemStatisticsMap_2 = new HashMap<>(); + if(activityItemStatistics != null && !activityItemStatistics.isEmpty()){ + activityItemStatisticsMap_2 = activityItemStatistics_2.stream().collect(Collectors.toMap(OfflineActivityItemStatistics::getXTime, Function.identity())); + } + + Map activityItemStatisticsMap_1_1 = new HashMap<>(); + if(EnumOfflineActivityType.CASHBACK.getCode().equals(activityItemStatisticsBo.getActivityItemType())){ + List awardsItemIds = getFirstAwardsItemIdList(activityItemStatisticsBo); + if(!awardsItemIds.isEmpty()){ + activityItemStatisticsBo.setAwardsItemIdList(awardsItemIds); + List activityItemStatistics_1_1 = wxOfflineActivityGrantItemMapper.activityItemStatisticsChart(activityItemStatisticsBo); + activityItemStatisticsMap_1_1 = activityItemStatistics_1_1.stream().collect(Collectors.toMap(OfflineActivityItemStatistics::getXTime, Function.identity())); + } + } + + List tjTimeList = DateUtils.getTjTimeList(DateUtils.date2String(activityItemStatisticsBo.getCreateDateBegin(),"yyyy-MM-dd"), + DateUtils.date2String(activityItemStatisticsBo.getCreateDateEnd(),"yyyy-MM-dd"), "0"); + List newActivityItemStatistics = new ArrayList<>(); + for (String date : tjTimeList) { + OfflineActivityItemStatistics activityItemStatistics_0 = activityItemStatisticsMap.get(date); + if(activityItemStatistics_0 == null){ + activityItemStatistics_0 = new OfflineActivityItemStatistics(); + activityItemStatistics_0.setGrantCount(0); + activityItemStatistics_0.setOrderCount(0); + activityItemStatistics_0.setOrderSumMoney(BigDecimal.ZERO); + } + OfflineActivityItemStatistics activityItemStatistics1 = activityItemStatisticsMap_1.get(date); + activityItemStatistics_0.setItemCount(activityItemStatistics1==null?0:activityItemStatistics1.getItemCount()); + activityItemStatistics_0.setItemSumMoney(activityItemStatistics1==null?BigDecimal.ZERO:activityItemStatistics1.getItemSumMoney()); + OfflineActivityItemStatistics activityItemStatistics2 = activityItemStatisticsMap_2.get(date); + activityItemStatistics_0.setMallSumPrice(activityItemStatistics2==null?BigDecimal.ZERO:activityItemStatistics2.getMallSumPrice()); + activityItemStatistics_0.setMerchantSumPrice(activityItemStatistics2==null?BigDecimal.ZERO:activityItemStatistics2.getMerchantSumPrice()); + if(EnumOfflineActivityType.CASHBACK.getCode().equals(activityItemStatisticsBo.getActivityItemType())){ + OfflineActivityItemStatistics activityItemStatistics1_1 = activityItemStatisticsMap_1_1.get(date); + activityItemStatistics_0.setCashSumMoney(activityItemStatistics1_1==null?BigDecimal.ZERO:activityItemStatistics1_1.getItemSumMoney()); + activityItemStatistics_0.setCashSecondSumMoney(activityItemStatistics_0.getItemSumMoney().subtract(activityItemStatistics_0.getCashSumMoney())); + } + + activityItemStatistics_0.setXTime(date.substring(5).replace("-", "/")); + newActivityItemStatistics.add(activityItemStatistics_0); + } + return newActivityItemStatistics; + } + + @Override + public List awardsItemStatistics(OfflineActivityItemStatisticsBVo activityItemStatisticsBo) { + handleActivityItemStatisticsBo(activityItemStatisticsBo); + List awardsItemStatistics = wxOfflineActivityGrantItemMapper.awardsItemStatistics(activityItemStatisticsBo); + if(awardsItemStatistics != null && !awardsItemStatistics.isEmpty()){ + Map awardsItemMap = wxOfflineActivityAwardsItemService.findAwardsItemMap(activityItemStatisticsBo.getActivityItemId(), activityItemStatisticsBo.getTenantId()); + BigDecimal total = awardsItemStatistics.stream().map(OfflineGantItemStatistics::getSumPrice).reduce(BigDecimal.ZERO, BigDecimal::add); + for (OfflineGantItemStatistics ItemStatistics : awardsItemStatistics) { + WxOfflineActivityAwardsItem wxOfflineActivityAwardsItem = awardsItemMap.get(ItemStatistics.getAwardItamId()); + ItemStatistics.setAwardItamName(wxOfflineActivityAwardsItem==null?"":wxOfflineActivityAwardsItem.getName()); + if(EnumOfflineActivityType.CASHBACK.getCode().equals(activityItemStatisticsBo.getActivityItemType())){ + ItemStatistics.setCashBackRatio(wxOfflineActivityAwardsItem==null?BigDecimal.ZERO:wxOfflineActivityAwardsItem.getCashBackRatio()); + } + ItemStatistics.setPriceRatio(ItemStatistics.getSumPrice().divide(total,4, RoundingMode.HALF_UP).doubleValue()); + } + return awardsItemStatistics.stream().sorted(Comparator.comparing(OfflineGantItemStatistics::getPriceRatio).reversed()).collect(Collectors.toList()); + } + return Collections.emptyList(); + } +} + + + + diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityRecordServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityRecordServiceImpl.java index f183961e7..d29219dd9 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityRecordServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityRecordServiceImpl.java @@ -9,10 +9,9 @@ import com.iformall.common.Result; import com.iformall.domain.po.*; import com.iformall.domain.po.base.TenantEntity; import com.iformall.domain.vo.OfflineActivityRecordStatistics; -import com.iformall.enums.EnumOfflineActivityRecordStatus; -import com.iformall.enums.EnumScoreType; -import com.iformall.enums.EnumUserType; -import com.iformall.enums.EnumYesOrNo; +import com.iformall.domain.vo.OfflineRecordBusinessStatistics; +import com.iformall.domain.vo.OfflineRecordCountStatistics; +import com.iformall.enums.*; import com.iformall.exception.MallinkException; import com.iformall.mapper.*; import com.iformall.service.*; @@ -28,6 +27,7 @@ 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 jdk.nashorn.internal.runtime.regexp.joni.Config.log; @@ -52,6 +52,9 @@ public class WxOfflineActivityRecordServiceImpl implements WxOfflineActivityReco @Autowired private WxOfflineActivityMapper wxOfflineActivityMapper; + @Autowired + private WxOfflineActivityMerchantMapper wxOfflineActivityMerchantMapper; + @Autowired WxOfflineActivityService wxOfflineActivityService; @@ -68,6 +71,8 @@ public class WxOfflineActivityRecordServiceImpl implements WxOfflineActivityReco MallUserInfoService mallUserInfoService; @Autowired WxCreditHistoryService wxCreditHistoryService; + @Autowired + WxBusinessService wxBusinessService; @Autowired ExcelService excelService; @@ -395,6 +400,85 @@ public class WxOfflineActivityRecordServiceImpl implements WxOfflineActivityReco record.setAuditStatus(EnumOfflineActivityRecordStatus.AUDI_SUCCESS.getCode()); return wxOfflineActivityRecordMapper.getCount(record); } + + private void handDateRange(WxOfflineActivityRecord record){ + record.setAuditStatus(EnumOfflineActivityRecordStatus.AUDI_SUCCESS.getCode()); + + WxOfflineActivity activity = wxOfflineActivityMapper.selectById(record.getActivityId(), record.getTenantId()); + if(activity == null){ + throw new MallinkException(Result.ERROR,"未查询到活动"); + } + if(record.getCreateDateBegin() == null || record.getCreateDateBegin().before(activity.getStartTime())){ + record.setCreateDateBegin(activity.getStartTime()); + } + if(record.getCreateDateEnd() == null || record.getCreateDateEnd().after(activity.getEndTime())){ + record.setCreateDateEnd(activity.getEndTime()); + } + Date now = new Date(); + if(record.getCreateDateEnd().after(now)){ + record.setCreateDateEnd(now); + } + if(record.getCreateDateBegin().after(record.getCreateDateEnd())){ + throw new MallinkException(Result.ERROR,"筛选时间不在活动时间范围内"); + } + + if(EnumOfflineActivityMerchantType.ADD.getCode().equals(activity.getAllMerchant())){ + List merchantIds = wxOfflineActivityMerchantMapper.getMerchantIdList(activity.getId(), activity.getTenantId()); + record.setMerchantIdList(merchantIds); + }else if(EnumOfflineActivityMerchantType.UN_ADD.getCode().equals(activity.getAllMerchant())){ + List merchantIds = wxOfflineActivityMerchantMapper.getMerchantIdList(activity.getId(), activity.getTenantId()); + record.setNotMerchantIdList(merchantIds); + } + } + + @Override + public OfflineRecordCountStatistics recordStatistics(WxOfflineActivityRecord record) { + handDateRange(record); + return wxOfflineActivityRecordMapper.getCountStatistics(record); + } + + @Override + public List recordStatisticsChart(WxOfflineActivityRecord record) { + handDateRange(record); + List countStatisticsChart = wxOfflineActivityRecordMapper.getCountStatisticsChart(record); + Map countStatisticsChartMap = new HashMap<>(); + if(countStatisticsChart != null && !countStatisticsChart.isEmpty()){ + countStatisticsChartMap = countStatisticsChart.stream().collect(Collectors.toMap(OfflineRecordCountStatistics::getXTime, Function.identity())); + } + List tjTimeList = DateUtils.getTjTimeList(DateUtils.date2String(record.getCreateDateBegin(),"yyyy-MM-dd"), + DateUtils.date2String(record.getCreateDateEnd(),"yyyy-MM-dd"), "0"); + List newCountStatisticsChart = new ArrayList<>(); + for (String date : tjTimeList) { + OfflineRecordCountStatistics offlineRecordCountStatistics = countStatisticsChartMap.get(date); + if(offlineRecordCountStatistics == null){ + offlineRecordCountStatistics = new OfflineRecordCountStatistics(); + offlineRecordCountStatistics.setUserCount(0); + offlineRecordCountStatistics.setOrderCount(0); + offlineRecordCountStatistics.setSumMoney(BigDecimal.ZERO); + offlineRecordCountStatistics.setMerchantCount(0); + } + offlineRecordCountStatistics.setXTime(date.substring(5).replace("-", "/")); + newCountStatisticsChart.add(offlineRecordCountStatistics); + } + + return newCountStatisticsChart; + } + + @Override + public List recordBusinessStatistics(WxOfflineActivityRecord record) { + handDateRange(record); + List businessStatistics = wxOfflineActivityRecordMapper.getBusinessStatistics(record); + if(businessStatistics != null && !businessStatistics.isEmpty()){ + Map bussinessMap = wxBusinessService.findAllMap(record); + BigDecimal total = businessStatistics.stream().map(OfflineRecordBusinessStatistics::getSumMoney).reduce(BigDecimal.ZERO, BigDecimal::add); + for (OfflineRecordBusinessStatistics statistics : businessStatistics){ + statistics.setBusinessName(statistics.getBusinessId() == null?"其他":bussinessMap.get(statistics.getBusinessId()).getTitle()); + statistics.setMoneyRatio(statistics.getSumMoney().divide(total,4, RoundingMode.HALF_UP).doubleValue()); + } + return businessStatistics.stream().sorted(Comparator.comparing(OfflineRecordBusinessStatistics::getMoneyRatio).reversed()).collect(Collectors.toList()); + } + return Collections.emptyList(); + } } diff --git a/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantAwardMapper.xml b/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantAwardMapper.xml index 88a638355..cee264718 100644 --- a/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantAwardMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantAwardMapper.xml @@ -87,6 +87,9 @@ and `parent_tenant_id` = #{parentTenantId} + + and `activity_id` = #{activityId} + and `create_date` >= #{createDateBegin} @@ -141,6 +144,67 @@ order by create_date desc limit 1 + + + update wx_offline_activity_grant_award set status = #{status},update_date = #{updateDate} where `activity_id` = #{activityId} and `cus_phone` = #{cusPhone} and `id` != #{id} diff --git a/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantItemMapper.xml b/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantItemMapper.xml index 184ef2a55..86d5c2508 100644 --- a/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantItemMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantItemMapper.xml @@ -113,7 +113,7 @@ + + + update wx_offline_activity_grant_item set status = 0,update_date = now() diff --git a/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantSettlementMapper.xml b/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantSettlementMapper.xml index e6af0ff54..1652f5857 100644 --- a/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantSettlementMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantSettlementMapper.xml @@ -145,6 +145,10 @@ and `activity_id` = #{activityId} + + and `activity_item_id` = #{activityItemId} + + and `create_date` >= #{createDateBegin} @@ -195,6 +199,93 @@ order by ${sortColumns} + + + update wx_offline_activity_grant_settlement set status = 0,update_date = now() diff --git a/mallinkService/src/main/resources/mapper/WxOfflineActivityRecordMapper.xml b/mallinkService/src/main/resources/mapper/WxOfflineActivityRecordMapper.xml index bc0e71926..ddfddf348 100644 --- a/mallinkService/src/main/resources/mapper/WxOfflineActivityRecordMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxOfflineActivityRecordMapper.xml @@ -247,6 +247,32 @@ left join wx_offline_activity_record r on rg.record_id = r.id where rg.grant_id = #{grantId} and rg.tenant_id=#{tenantId} + + + insert into wx_offline_activity_record