| @@ -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); | |||
| @@ -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); | |||
| @@ -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<OfflineRecordCountStatistics> 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<OfflineRecordBusinessStatistics> 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<OfflineActivityItemStatistics> 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<OfflineGantItemStatistics> activityItemStatistics = wxOfflineActivityItemStatisticsService.awardsItemStatistics(activityItemStatisticsBo); | |||
| return new ResultData(activityItemStatistics); | |||
| } | |||
| } | |||
| @@ -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; | |||
| } | |||
| @@ -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;//联单返现* | |||
| } | |||
| @@ -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<Long> awardsItemIdList; | |||
| } | |||
| @@ -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; | |||
| } | |||
| @@ -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; | |||
| } | |||
| @@ -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; | |||
| } | |||
| @@ -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<WxOfflin | |||
| void updateStatusNo(WxOfflineActivityGrantAward grantAwardUpd); | |||
| Long getLastId(WxOfflineActivityGrantAward wxOfflineActivityGrantAward); | |||
| OfflineActivityItemStatistics activityItemStatistics(OfflineActivityItemStatisticsBVo activityItemStatisticsBo); | |||
| List<OfflineActivityItemStatistics> activityItemStatisticsChart(OfflineActivityItemStatisticsBVo activityItemStatisticsBo); | |||
| } | |||
| @@ -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<WxOffline | |||
| List<WxOfflineActivityGrantItem> findList(WxOfflineActivityGrantItem grantItemQ); | |||
| void updateStatusNo(WxOfflineActivityGrantAward wxOfflineActivityGrantAward); | |||
| OfflineActivityItemStatistics activityItemStatistics(OfflineActivityItemStatisticsBVo activityItemStatisticsBo); | |||
| List<OfflineActivityItemStatistics> activityItemStatisticsChart(OfflineActivityItemStatisticsBVo activityItemStatisticsBo); | |||
| List<OfflineGantItemStatistics> awardsItemStatistics(OfflineActivityItemStatisticsBVo activityItemStatisticsBo); | |||
| } | |||
| @@ -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<WxO | |||
| List<WxOfflineActivityGrantSettlement> findList(WxOfflineActivityGrantSettlement settlement); | |||
| void updateStatusNo(WxOfflineActivityGrantAward wxOfflineActivityGrantAward); | |||
| OfflineActivityItemStatistics activityItemStatistics(OfflineActivityItemStatisticsBVo activityItemStatisticsBo); | |||
| List<OfflineActivityItemStatistics> activityItemStatisticsChart(OfflineActivityItemStatisticsBVo activityItemStatisticsBo); | |||
| } | |||
| @@ -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<WxOfflineAct | |||
| void insertList(@Param("recordList")List<WxOfflineActivityRecord> activityRecordList); | |||
| void updateIncreasedPoints(WxOfflineActivityRecord record); | |||
| OfflineRecordCountStatistics getCountStatistics(WxOfflineActivityRecord record); | |||
| List<OfflineRecordCountStatistics> getCountStatisticsChart(WxOfflineActivityRecord record); | |||
| List<OfflineRecordBusinessStatistics> getBusinessStatistics(WxOfflineActivityRecord record); | |||
| } | |||
| @@ -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<WxOfflineActivityAwardsItem> activityAwardsItemList, List<WxOfflineActivityAwardsItem> activityAwardsItemSecondList); | |||
| List<WxOfflineActivityAwardsItem> getActivityAwardsItemList(Long activityItemId, String tenantId); | |||
| Map<Long, WxOfflineActivityAwardsItem> findAwardsItemMap(Long activityItemId, String tenantId); | |||
| } | |||
| @@ -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); | |||
| } | |||
| @@ -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<OfflineActivityItemStatistics> activityItemStatisticsChart(OfflineActivityItemStatisticsBVo activityItemStatisticsBo); | |||
| List<OfflineGantItemStatistics> awardsItemStatistics(OfflineActivityItemStatisticsBVo activityItemStatisticsBo); | |||
| } | |||
| @@ -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<OfflineRecordCountStatistics> recordStatisticsChart(WxOfflineActivityRecord record); | |||
| List<OfflineRecordBusinessStatistics> recordBusinessStatistics(WxOfflineActivityRecord wxOfflineActivityRecord); | |||
| } | |||
| @@ -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<WxOfflineActivityAwardsItem> activityAwardsItemList = wxOfflineActivityAwardsItemMapper.findList(activityAwardsItemQuery); | |||
| return activityAwardsItemList; | |||
| } | |||
| @Override | |||
| public Map<Long, WxOfflineActivityAwardsItem> findAwardsItemMap(Long activityItemId, String tenantId) { | |||
| List<WxOfflineActivityAwardsItem> activityAwardsItemList = this.getActivityAwardsItemList(activityItemId, tenantId); | |||
| if(activityAwardsItemList != null && !activityAwardsItemList.isEmpty()){ | |||
| return activityAwardsItemList.stream().collect(Collectors.toMap(WxOfflineActivityAwardsItem::getId, Function.identity())); | |||
| } | |||
| return Collections.emptyMap(); | |||
| } | |||
| } | |||
| @@ -359,6 +359,12 @@ public class WxOfflineActivityGrantSettlementServiceImpl implements WxOfflineAct | |||
| List<WxOfflineActivityGrantSettlement> 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); | |||
| } | |||
| } | |||
| @@ -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<Long> getFirstAwardsItemIdList(OfflineActivityItemStatisticsBVo activityItemStatisticsBo){ | |||
| WxOfflineActivityAwardsItem activityAwardsItemQ = new WxOfflineActivityAwardsItem(); | |||
| activityAwardsItemQ.updateTenantInfo(activityItemStatisticsBo); | |||
| activityAwardsItemQ.setActivityItemId(activityItemStatisticsBo.getActivityItemId()); | |||
| activityAwardsItemQ.setType(EnumOfflineActivityAwardsItemType.FIRST.getCode()); | |||
| List<WxOfflineActivityAwardsItem> 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<Long> 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<OfflineActivityItemStatistics> activityItemStatisticsChart(OfflineActivityItemStatisticsBVo activityItemStatisticsBo) { | |||
| handleActivityItemStatisticsBo(activityItemStatisticsBo); | |||
| List<OfflineActivityItemStatistics> activityItemStatistics = wxOfflineActivityGrantAwardMapper.activityItemStatisticsChart(activityItemStatisticsBo); | |||
| Map<String,OfflineActivityItemStatistics> activityItemStatisticsMap = new HashMap<>(); | |||
| if(activityItemStatistics != null && !activityItemStatistics.isEmpty()){ | |||
| activityItemStatisticsMap = activityItemStatistics.stream().collect(Collectors.toMap(OfflineActivityItemStatistics::getXTime, Function.identity())); | |||
| } | |||
| List<OfflineActivityItemStatistics> activityItemStatistics_1 = wxOfflineActivityGrantItemMapper.activityItemStatisticsChart(activityItemStatisticsBo); | |||
| Map<String,OfflineActivityItemStatistics> activityItemStatisticsMap_1 = new HashMap<>(); | |||
| if(activityItemStatistics != null && !activityItemStatistics.isEmpty()){ | |||
| activityItemStatisticsMap_1 = activityItemStatistics_1.stream().collect(Collectors.toMap(OfflineActivityItemStatistics::getXTime, Function.identity())); | |||
| } | |||
| List<OfflineActivityItemStatistics> activityItemStatistics_2 = wxOfflineActivityGrantSettlementMapper.activityItemStatisticsChart(activityItemStatisticsBo); | |||
| Map<String,OfflineActivityItemStatistics> activityItemStatisticsMap_2 = new HashMap<>(); | |||
| if(activityItemStatistics != null && !activityItemStatistics.isEmpty()){ | |||
| activityItemStatisticsMap_2 = activityItemStatistics_2.stream().collect(Collectors.toMap(OfflineActivityItemStatistics::getXTime, Function.identity())); | |||
| } | |||
| Map<String,OfflineActivityItemStatistics> activityItemStatisticsMap_1_1 = new HashMap<>(); | |||
| if(EnumOfflineActivityType.CASHBACK.getCode().equals(activityItemStatisticsBo.getActivityItemType())){ | |||
| List<Long> awardsItemIds = getFirstAwardsItemIdList(activityItemStatisticsBo); | |||
| if(!awardsItemIds.isEmpty()){ | |||
| activityItemStatisticsBo.setAwardsItemIdList(awardsItemIds); | |||
| List<OfflineActivityItemStatistics> activityItemStatistics_1_1 = wxOfflineActivityGrantItemMapper.activityItemStatisticsChart(activityItemStatisticsBo); | |||
| activityItemStatisticsMap_1_1 = activityItemStatistics_1_1.stream().collect(Collectors.toMap(OfflineActivityItemStatistics::getXTime, Function.identity())); | |||
| } | |||
| } | |||
| List<String> tjTimeList = DateUtils.getTjTimeList(DateUtils.date2String(activityItemStatisticsBo.getCreateDateBegin(),"yyyy-MM-dd"), | |||
| DateUtils.date2String(activityItemStatisticsBo.getCreateDateEnd(),"yyyy-MM-dd"), "0"); | |||
| List<OfflineActivityItemStatistics> 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<OfflineGantItemStatistics> awardsItemStatistics(OfflineActivityItemStatisticsBVo activityItemStatisticsBo) { | |||
| handleActivityItemStatisticsBo(activityItemStatisticsBo); | |||
| List<OfflineGantItemStatistics> awardsItemStatistics = wxOfflineActivityGrantItemMapper.awardsItemStatistics(activityItemStatisticsBo); | |||
| if(awardsItemStatistics != null && !awardsItemStatistics.isEmpty()){ | |||
| Map<Long,WxOfflineActivityAwardsItem> 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(); | |||
| } | |||
| } | |||
| @@ -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<Long> merchantIds = wxOfflineActivityMerchantMapper.getMerchantIdList(activity.getId(), activity.getTenantId()); | |||
| record.setMerchantIdList(merchantIds); | |||
| }else if(EnumOfflineActivityMerchantType.UN_ADD.getCode().equals(activity.getAllMerchant())){ | |||
| List<Long> 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<OfflineRecordCountStatistics> recordStatisticsChart(WxOfflineActivityRecord record) { | |||
| handDateRange(record); | |||
| List<OfflineRecordCountStatistics> countStatisticsChart = wxOfflineActivityRecordMapper.getCountStatisticsChart(record); | |||
| Map<String, OfflineRecordCountStatistics> countStatisticsChartMap = new HashMap<>(); | |||
| if(countStatisticsChart != null && !countStatisticsChart.isEmpty()){ | |||
| countStatisticsChartMap = countStatisticsChart.stream().collect(Collectors.toMap(OfflineRecordCountStatistics::getXTime, Function.identity())); | |||
| } | |||
| List<String> tjTimeList = DateUtils.getTjTimeList(DateUtils.date2String(record.getCreateDateBegin(),"yyyy-MM-dd"), | |||
| DateUtils.date2String(record.getCreateDateEnd(),"yyyy-MM-dd"), "0"); | |||
| List<OfflineRecordCountStatistics> 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<OfflineRecordBusinessStatistics> recordBusinessStatistics(WxOfflineActivityRecord record) { | |||
| handDateRange(record); | |||
| List<OfflineRecordBusinessStatistics> businessStatistics = wxOfflineActivityRecordMapper.getBusinessStatistics(record); | |||
| if(businessStatistics != null && !businessStatistics.isEmpty()){ | |||
| Map<Integer, WxBusiness> 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(); | |||
| } | |||
| } | |||
| @@ -87,6 +87,9 @@ | |||
| <if test=" null != parentTenantId and '' != parentTenantId"> | |||
| and `parent_tenant_id` = #{parentTenantId} | |||
| </if> | |||
| <if test=" null != activityId"> | |||
| and `activity_id` = #{activityId} | |||
| </if> | |||
| <if test=" null != createDateBegin"> | |||
| and `create_date` >= #{createDateBegin} | |||
| @@ -141,6 +144,67 @@ | |||
| order by create_date desc limit 1 | |||
| </select> | |||
| <select id="activityItemStatistics" parameterType="com.iformall.domain.vo.OfflineActivityItemStatisticsBVo" resultType="com.iformall.domain.vo.OfflineActivityItemStatistics"> | |||
| SELECT count(1) as 'grantCount', | |||
| IFNULL(sum(order_count),0) as 'orderCount', | |||
| IFNULL(sum(order_money_sum),0) as 'orderSumMoney' | |||
| FROM wx_offline_activity_grant_award | |||
| where 1 = 1 | |||
| <if test=" null != tenantId and '' != tenantId"> | |||
| and `tenant_id` = #{tenantId} | |||
| </if> | |||
| <if test=" null != parentTenantId and '' != parentTenantId"> | |||
| and `parent_tenant_id` = #{parentTenantId} | |||
| </if> | |||
| <if test=" null != activityId"> | |||
| and `activity_id` = #{activityId} | |||
| </if> | |||
| <if test=" null != createDateBegin"> | |||
| and `create_date` >= #{createDateBegin} | |||
| </if> | |||
| <if test=" null != createDateEnd"> | |||
| and `create_date` <= #{createDateEnd} | |||
| </if> | |||
| <if test=" null != status"> | |||
| and `status` = #{status} | |||
| </if> | |||
| </select> | |||
| <select id="activityItemStatisticsChart" parameterType="com.iformall.domain.vo.OfflineActivityItemStatisticsBVo" resultType="com.iformall.domain.vo.OfflineActivityItemStatistics"> | |||
| SELECT DATE_FORMAT(create_date,'%Y-%m-%d') as xTime, | |||
| count(1) as 'grantCount', | |||
| IFNULL(sum(order_count),0) as 'orderCount', | |||
| IFNULL(sum(order_money_sum),0) as 'orderSumMoney' | |||
| FROM wx_offline_activity_grant_award | |||
| where 1 = 1 | |||
| <if test=" null != tenantId and '' != tenantId"> | |||
| and `tenant_id` = #{tenantId} | |||
| </if> | |||
| <if test=" null != parentTenantId and '' != parentTenantId"> | |||
| and `parent_tenant_id` = #{parentTenantId} | |||
| </if> | |||
| <if test=" null != activityId"> | |||
| and `activity_id` = #{activityId} | |||
| </if> | |||
| <if test=" null != createDateBegin"> | |||
| and `create_date` >= #{createDateBegin} | |||
| </if> | |||
| <if test=" null != createDateEnd"> | |||
| and `create_date` <= #{createDateEnd} | |||
| </if> | |||
| <if test=" null != status"> | |||
| and `status` = #{status} | |||
| </if> | |||
| group by xTime | |||
| </select> | |||
| <update id="updateStatusNo" parameterType="com.iformall.domain.po.WxOfflineActivityGrantAward" > | |||
| update wx_offline_activity_grant_award set status = #{status},update_date = #{updateDate} | |||
| where `activity_id` = #{activityId} and `cus_phone` = #{cusPhone} and `id` != #{id} | |||
| @@ -113,7 +113,7 @@ | |||
| </insert> | |||
| <select id="getSumAwardCount" parameterType="com.iformall.domain.po.WxOfflineActivityGrantItem" resultType="Integer"> | |||
| SELECT COUNT(1) FROM wx_offline_activity_grant_item | |||
| SELECT IFNULL(sum(award_count),0) FROM wx_offline_activity_grant_item | |||
| where 1 = 1 | |||
| <if test=" null != tenantId and '' != tenantId"> | |||
| and tenant_id = #{tenantId} | |||
| @@ -129,6 +129,118 @@ | |||
| and `status` = #{status} | |||
| </if> | |||
| </select> | |||
| <select id="activityItemStatistics" parameterType="com.iformall.domain.vo.OfflineActivityItemStatisticsBVo" resultType="com.iformall.domain.vo.OfflineActivityItemStatistics"> | |||
| SELECT IFNULL(sum(award_count),0) as 'itemCount', | |||
| IFNULL(sum(award_price),0) as 'itemSumMoney' | |||
| FROM wx_offline_activity_grant_item | |||
| where 1 = 1 | |||
| <if test=" null != tenantId and '' != tenantId"> | |||
| and `tenant_id` = #{tenantId} | |||
| </if> | |||
| <if test=" null != parentTenantId and '' != parentTenantId"> | |||
| and `parent_tenant_id` = #{parentTenantId} | |||
| </if> | |||
| <if test=" null != activityId"> | |||
| and `activity_id` = #{activityId} | |||
| </if> | |||
| <if test=" null != activityItemId "> | |||
| and `activity_item_id` = #{activityItemId} | |||
| </if> | |||
| <if test=" null != createDateBegin"> | |||
| and `create_date` >= #{createDateBegin} | |||
| </if> | |||
| <if test=" null != createDateEnd"> | |||
| and `create_date` <= #{createDateEnd} | |||
| </if> | |||
| <if test=" null != status"> | |||
| and `status` = #{status} | |||
| </if> | |||
| <if test=" null != awardsItemIdList "> | |||
| and award_itam_id in | |||
| <foreach collection="awardsItemIdList" index="index" item="idItem" open="(" separator="," close=")"> | |||
| #{idItem} | |||
| </foreach> | |||
| </if> | |||
| </select> | |||
| <select id="activityItemStatisticsChart" parameterType="com.iformall.domain.vo.OfflineActivityItemStatisticsBVo" resultType="com.iformall.domain.vo.OfflineActivityItemStatistics"> | |||
| SELECT DATE_FORMAT(create_date,'%Y-%m-%d') as xTime, | |||
| IFNULL(sum(award_count),0) as 'itemCount', | |||
| IFNULL(sum(award_price),0) as 'itemSumMoney' | |||
| FROM wx_offline_activity_grant_item | |||
| where 1 = 1 | |||
| <if test=" null != tenantId and '' != tenantId"> | |||
| and `tenant_id` = #{tenantId} | |||
| </if> | |||
| <if test=" null != parentTenantId and '' != parentTenantId"> | |||
| and `parent_tenant_id` = #{parentTenantId} | |||
| </if> | |||
| <if test=" null != activityId"> | |||
| and `activity_id` = #{activityId} | |||
| </if> | |||
| <if test=" null != activityItemId "> | |||
| and `activity_item_id` = #{activityItemId} | |||
| </if> | |||
| <if test=" null != createDateBegin"> | |||
| and `create_date` >= #{createDateBegin} | |||
| </if> | |||
| <if test=" null != createDateEnd"> | |||
| and `create_date` <= #{createDateEnd} | |||
| </if> | |||
| <if test=" null != status"> | |||
| and `status` = #{status} | |||
| </if> | |||
| <if test=" null != awardsItemIdList "> | |||
| and award_itam_id in | |||
| <foreach collection="awardsItemIdList" index="index" item="idItem" open="(" separator="," close=")"> | |||
| #{idItem} | |||
| </foreach> | |||
| </if> | |||
| group by xTime | |||
| </select> | |||
| <select id="awardsItemStatistics" parameterType="com.iformall.domain.vo.OfflineActivityItemStatisticsBVo" resultType="com.iformall.domain.vo.OfflineGantItemStatistics"> | |||
| SELECT award_itam_id as 'awardItamId', | |||
| IFNULL(sum(award_count),0) as 'awardItamCount', | |||
| IFNULL(sum(award_price),0) as 'sumPrice' | |||
| FROM wx_offline_activity_grant_item | |||
| where 1 = 1 | |||
| <if test=" null != tenantId and '' != tenantId"> | |||
| and `tenant_id` = #{tenantId} | |||
| </if> | |||
| <if test=" null != parentTenantId and '' != parentTenantId"> | |||
| and `parent_tenant_id` = #{parentTenantId} | |||
| </if> | |||
| <if test=" null != activityId"> | |||
| and `activity_id` = #{activityId} | |||
| </if> | |||
| <if test=" null != activityItemId "> | |||
| and `activity_item_id` = #{activityItemId} | |||
| </if> | |||
| <if test=" null != createDateBegin"> | |||
| and `create_date` >= #{createDateBegin} | |||
| </if> | |||
| <if test=" null != createDateEnd"> | |||
| and `create_date` <= #{createDateEnd} | |||
| </if> | |||
| <if test=" null != status"> | |||
| and `status` = #{status} | |||
| </if> | |||
| group by award_itam_id | |||
| </select> | |||
| <update id="updateStatusNo" parameterType="com.iformall.domain.po.WxOfflineActivityGrantAward" > | |||
| update wx_offline_activity_grant_item set status = 0,update_date = now() | |||
| @@ -145,6 +145,10 @@ | |||
| and `activity_id` = #{activityId} | |||
| </if> | |||
| <if test=" null != activityItemId "> | |||
| and `activity_item_id` = #{activityItemId} | |||
| </if> | |||
| <if test=" null != createDateBegin"> | |||
| and `create_date` >= #{createDateBegin} | |||
| </if> | |||
| @@ -195,6 +199,93 @@ | |||
| <if test=" null != sortColumns"> order by ${sortColumns} </if> | |||
| </select> | |||
| <select id="activityItemStatistics" parameterType="com.iformall.domain.vo.OfflineActivityItemStatisticsBVo" resultType="com.iformall.domain.vo.OfflineActivityItemStatistics"> | |||
| SELECT count(DISTINCT grant_id) as 'grantCount', | |||
| count(DISTINCT record_id) as 'orderCount', | |||
| IFNULL(sum(real_grant_price),0) as 'itemSumMoney', | |||
| IFNULL(sum(real_mall_share_price),0) as 'mallSumPrice', | |||
| IFNULL(sum(real_merchant_share_price),0) as 'merchantSumPrice' | |||
| FROM wx_offline_activity_grant_settlement | |||
| where 1 = 1 | |||
| <if test=" null != tenantId and '' != tenantId"> | |||
| and `tenant_id` = #{tenantId} | |||
| </if> | |||
| <if test=" null != parentTenantId and '' != parentTenantId"> | |||
| and `parent_tenant_id` = #{parentTenantId} | |||
| </if> | |||
| <if test=" null != activityId"> | |||
| and `activity_id` = #{activityId} | |||
| </if> | |||
| <if test=" null != activityItemId "> | |||
| and `activity_item_id` = #{activityItemId} | |||
| </if> | |||
| <if test=" null != createDateBegin"> | |||
| and `create_date` >= #{createDateBegin} | |||
| </if> | |||
| <if test=" null != createDateEnd"> | |||
| and `create_date` <= #{createDateEnd} | |||
| </if> | |||
| <if test=" null != status"> | |||
| and `status` = #{status} | |||
| </if> | |||
| <if test=" null != awardsItemIdList "> | |||
| and award_itam_id in | |||
| <foreach collection="awardsItemIdList" index="index" item="idItem" open="(" separator="," close=")"> | |||
| #{idItem} | |||
| </foreach> | |||
| </if> | |||
| </select> | |||
| <select id="activityItemStatisticsChart" parameterType="com.iformall.domain.vo.OfflineActivityItemStatisticsBVo" resultType="com.iformall.domain.vo.OfflineActivityItemStatistics"> | |||
| SELECT DATE_FORMAT(create_date,'%Y-%m-%d') as xTime, | |||
| count(DISTINCT grant_id) as 'grantCount', | |||
| count(DISTINCT record_id) as 'orderCount', | |||
| IFNULL(sum(real_grant_price),0) as 'itemSumMoney', | |||
| IFNULL(sum(real_mall_share_price),0) as 'mallSumPrice', | |||
| IFNULL(sum(real_merchant_share_price),0) as 'merchantSumPrice' | |||
| FROM wx_offline_activity_grant_settlement | |||
| where 1 = 1 | |||
| <if test=" null != tenantId and '' != tenantId"> | |||
| and `tenant_id` = #{tenantId} | |||
| </if> | |||
| <if test=" null != parentTenantId and '' != parentTenantId"> | |||
| and `parent_tenant_id` = #{parentTenantId} | |||
| </if> | |||
| <if test=" null != activityId"> | |||
| and `activity_id` = #{activityId} | |||
| </if> | |||
| <if test=" null != activityItemId "> | |||
| and `activity_item_id` = #{activityItemId} | |||
| </if> | |||
| <if test=" null != createDateBegin"> | |||
| and `create_date` >= #{createDateBegin} | |||
| </if> | |||
| <if test=" null != createDateEnd"> | |||
| and `create_date` <= #{createDateEnd} | |||
| </if> | |||
| <if test=" null != status"> | |||
| and `status` = #{status} | |||
| </if> | |||
| <if test=" null != awardsItemIdList "> | |||
| and award_itam_id in | |||
| <foreach collection="awardsItemIdList" index="index" item="idItem" open="(" separator="," close=")"> | |||
| #{idItem} | |||
| </foreach> | |||
| </if> | |||
| group by xTime | |||
| </select> | |||
| <update id="updateStatusNo" parameterType="com.iformall.domain.po.WxOfflineActivityGrantAward" > | |||
| update wx_offline_activity_grant_settlement set status = 0,update_date = now() | |||
| @@ -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} | |||
| </select> | |||
| <select id="getCountStatistics" parameterType="com.iformall.domain.po.WxOfflineActivityRecord" resultType="com.iformall.domain.vo.OfflineRecordCountStatistics"> | |||
| select count(DISTINCT cus_phone) userCount, | |||
| count(1) orderCount, | |||
| IFNULL(sum(order_money),0) sumMoney, | |||
| count(DISTINCT merchant_id) merchantCount | |||
| from wx_offline_activity_record | |||
| <include refid="statisticsWhereConditions" /> | |||
| </select> | |||
| <select id="getCountStatisticsChart" parameterType="com.iformall.domain.po.WxOfflineActivityRecord" resultType="com.iformall.domain.vo.OfflineRecordCountStatistics"> | |||
| select DATE_FORMAT(create_date,'%Y-%m-%d') as xTime, | |||
| count(DISTINCT cus_phone) userCount, | |||
| count(1) orderCount, | |||
| IFNULL(sum(order_money),0) sumMoney, | |||
| count(DISTINCT merchant_id) merchantCount | |||
| from wx_offline_activity_record | |||
| <include refid="statisticsWhereConditions" /> | |||
| group by xTime | |||
| </select> | |||
| <select id="getBusinessStatistics" parameterType="com.iformall.domain.po.WxOfflineActivityRecord" resultType="com.iformall.domain.vo.OfflineRecordBusinessStatistics"> | |||
| select business_id businessId, | |||
| count(1) businessCount, | |||
| IFNULL(sum(order_money),0) sumMoney | |||
| from wx_offline_activity_record | |||
| <include refid="statisticsWhereConditions" /> | |||
| group by business_id | |||
| </select> | |||
| <insert id="insertList" parameterType="java.util.List"> | |||
| insert into wx_offline_activity_record | |||