Browse Source

//offlineActivity

release_toaliyun_real
xiaohu 1 year ago
parent
commit
4f50090742
25 changed files with 923 additions and 39 deletions
  1. +4
    -4
      mallinkAdmin/src/main/java/com/iformall/controller/market/WxLegionActivityNoticeController.java
  2. +3
    -3
      mallinkAdmin/src/main/java/com/iformall/controller/market/WxLegionActivityOrderController.java
  3. +142
    -0
      mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivityNoticeController.java
  4. +0
    -25
      mallinkService/src/main/java/com/iformall/domain/vo/ActivityNoticeBo.java
  5. +28
    -0
      mallinkService/src/main/java/com/iformall/domain/vo/OfflineActivityItemStatistics.java
  6. +25
    -0
      mallinkService/src/main/java/com/iformall/domain/vo/OfflineActivityItemStatisticsBVo.java
  7. +22
    -0
      mallinkService/src/main/java/com/iformall/domain/vo/OfflineGantItemStatistics.java
  8. +21
    -0
      mallinkService/src/main/java/com/iformall/domain/vo/OfflineRecordBusinessStatistics.java
  9. +19
    -0
      mallinkService/src/main/java/com/iformall/domain/vo/OfflineRecordCountStatistics.java
  10. +6
    -0
      mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityGrantAwardMapper.java
  11. +9
    -1
      mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityGrantItemMapper.java
  12. +6
    -1
      mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityGrantSettlementMapper.java
  13. +9
    -0
      mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityRecordMapper.java
  14. +3
    -0
      mallinkService/src/main/java/com/iformall/service/WxOfflineActivityAwardsItemService.java
  15. +2
    -0
      mallinkService/src/main/java/com/iformall/service/WxOfflineActivityGrantSettlementService.java
  16. +20
    -0
      mallinkService/src/main/java/com/iformall/service/WxOfflineActivityItemStatisticsService.java
  17. +9
    -0
      mallinkService/src/main/java/com/iformall/service/WxOfflineActivityRecordService.java
  18. +12
    -0
      mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityAwardsItemServiceImpl.java
  19. +6
    -0
      mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantSettlementServiceImpl.java
  20. +195
    -0
      mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityItemStatisticsServiceImpl.java
  21. +88
    -4
      mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityRecordServiceImpl.java
  22. +64
    -0
      mallinkService/src/main/resources/mapper/WxOfflineActivityGrantAwardMapper.xml
  23. +113
    -1
      mallinkService/src/main/resources/mapper/WxOfflineActivityGrantItemMapper.xml
  24. +91
    -0
      mallinkService/src/main/resources/mapper/WxOfflineActivityGrantSettlementMapper.xml
  25. +26
    -0
      mallinkService/src/main/resources/mapper/WxOfflineActivityRecordMapper.xml

+ 4
- 4
mallinkAdmin/src/main/java/com/iformall/controller/market/WxLegionActivityNoticeController.java View File

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


+ 3
- 3
mallinkAdmin/src/main/java/com/iformall/controller/market/WxLegionActivityOrderController.java View File

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


+ 142
- 0
mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivityNoticeController.java View File

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

+ 0
- 25
mallinkService/src/main/java/com/iformall/domain/vo/ActivityNoticeBo.java View File

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

+ 28
- 0
mallinkService/src/main/java/com/iformall/domain/vo/OfflineActivityItemStatistics.java View File

@@ -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;//联单返现*

}

+ 25
- 0
mallinkService/src/main/java/com/iformall/domain/vo/OfflineActivityItemStatisticsBVo.java View File

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

}

+ 22
- 0
mallinkService/src/main/java/com/iformall/domain/vo/OfflineGantItemStatistics.java View File

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

}

+ 21
- 0
mallinkService/src/main/java/com/iformall/domain/vo/OfflineRecordBusinessStatistics.java View File

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

}

+ 19
- 0
mallinkService/src/main/java/com/iformall/domain/vo/OfflineRecordCountStatistics.java View File

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

+ 6
- 0
mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityGrantAwardMapper.java View File

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




+ 9
- 1
mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityGrantItemMapper.java View File

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




+ 6
- 1
mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityGrantSettlementMapper.java View File

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




+ 9
- 0
mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityRecordMapper.java View File

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

}




+ 3
- 0
mallinkService/src/main/java/com/iformall/service/WxOfflineActivityAwardsItemService.java View File

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

+ 2
- 0
mallinkService/src/main/java/com/iformall/service/WxOfflineActivityGrantSettlementService.java View File

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

+ 20
- 0
mallinkService/src/main/java/com/iformall/service/WxOfflineActivityItemStatisticsService.java View File

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

}

+ 9
- 0
mallinkService/src/main/java/com/iformall/service/WxOfflineActivityRecordService.java View File

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

}

+ 12
- 0
mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityAwardsItemServiceImpl.java View File

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




+ 6
- 0
mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantSettlementServiceImpl.java View File

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




+ 195
- 0
mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityItemStatisticsServiceImpl.java View File

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





+ 88
- 4
mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityRecordServiceImpl.java View File

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




+ 64
- 0
mallinkService/src/main/resources/mapper/WxOfflineActivityGrantAwardMapper.xml View File

@@ -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` &gt;= #{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` &gt;= #{createDateBegin}
</if>

<if test=" null != createDateEnd">
and `create_date` &lt;= #{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` &gt;= #{createDateBegin}
</if>

<if test=" null != createDateEnd">
and `create_date` &lt;= #{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
- 1
mallinkService/src/main/resources/mapper/WxOfflineActivityGrantItemMapper.xml View File

@@ -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` &gt;= #{createDateBegin}
</if>

<if test=" null != createDateEnd">
and `create_date` &lt;= #{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` &gt;= #{createDateBegin}
</if>

<if test=" null != createDateEnd">
and `create_date` &lt;= #{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` &gt;= #{createDateBegin}
</if>

<if test=" null != createDateEnd">
and `create_date` &lt;= #{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()


+ 91
- 0
mallinkService/src/main/resources/mapper/WxOfflineActivityGrantSettlementMapper.xml View File

@@ -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` &gt;= #{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` &gt;= #{createDateBegin}
</if>

<if test=" null != createDateEnd">
and `create_date` &lt;= #{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` &gt;= #{createDateBegin}
</if>

<if test=" null != createDateEnd">
and `create_date` &lt;= #{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()


+ 26
- 0
mallinkService/src/main/resources/mapper/WxOfflineActivityRecordMapper.xml View File

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


Loading…
Cancel
Save