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

[A端][修复]:营销数据场景发券统计问题

release_toaliyun_real
hupeng 7 лет назад
Родитель
Сommit
3a445283ac
3 измененных файлов: 39 добавлений и 41 удалений
  1. +2
    -1
      mallinkService/src/main/java/com/iformall/mapper/WxCouponActionLogMapper.java
  2. +26
    -27
      mallinkService/src/main/java/com/iformall/service/impl/MarkingDataReportServiceImpl.java
  3. +11
    -13
      mallinkService/src/main/resources/mapper/WxCouponActionLogMapper.xml

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

@@ -3,6 +3,7 @@ package com.iformall.mapper;
import java.util.*; import java.util.*;
import com.iformall.common.CommonMapper; import com.iformall.common.CommonMapper;
import com.iformall.domain.vo.MarkingSceneDataReportVo; import com.iformall.domain.vo.MarkingSceneDataReportVo;
import com.iformall.domain.vo.MarkingSceneDataVo;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import com.iformall.domain.po.WxCouponActionLog; import com.iformall.domain.po.WxCouponActionLog;


@@ -22,7 +23,7 @@ public interface WxCouponActionLogMapper extends CommonMapper<WxCouponActionLog,


List<MarkingSceneDataReportVo> sceneDataMapJoinCouponOrder(HashMap<String,Object> params); List<MarkingSceneDataReportVo> sceneDataMapJoinCouponOrder(HashMap<String,Object> params);


List<MarkingSceneDataReportVo> sceneDataList(HashMap<String,Object> params);
List<MarkingSceneDataVo> sceneDataList(HashMap<String,Object> params);


List<MarkingSceneDataReportVo> sceneDataJoinCouponOrderList(HashMap<String,Object> params); List<MarkingSceneDataReportVo> sceneDataJoinCouponOrderList(HashMap<String,Object> params);




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

@@ -185,7 +185,7 @@ public class MarkingDataReportServiceImpl implements MarkingDataReportService {
params3.put("tenantId", tenantId); params3.put("tenantId", tenantId);
params3.put("startTime", addDay(-30)); params3.put("startTime", addDay(-30));
params3.put("endTime", addDay(1)); params3.put("endTime", addDay(1));
params3.put("channelType", EnumCouponSendSendType.C_ORDER.getCode());//B端刷卡支付
params3.put("channelType", EnumCouponSendSendType.C_ORDER.getCode());//买券
List<MarkingSceneDataReportVo> list4 = wxCouponActionLogMapper.sceneDataMapJoinCouponOrder(params4); List<MarkingSceneDataReportVo> list4 = wxCouponActionLogMapper.sceneDataMapJoinCouponOrder(params4);
Map<String, Integer> OrderCountMap = list4.stream().collect(Collectors.toMap(MarkingSceneDataReportVo::getXTime, p -> p.getTempCount())); Map<String, Integer> OrderCountMap = list4.stream().collect(Collectors.toMap(MarkingSceneDataReportVo::getXTime, p -> p.getTempCount()));


@@ -204,8 +204,10 @@ public class MarkingDataReportServiceImpl implements MarkingDataReportService {


for(String tj:tjList){ for(String tj:tjList){
Optional<MarkingSceneDataReportVo> first = list.stream().filter(c -> c.getXTime().equals(tj)).findFirst(); Optional<MarkingSceneDataReportVo> first = list.stream().filter(c -> c.getXTime().equals(tj)).findFirst();

MarkingSceneDataReportVo msdVo;
if(!first.isPresent()){ if(!first.isPresent()){
MarkingSceneDataReportVo msdVo = new MarkingSceneDataReportVo();
msdVo = new MarkingSceneDataReportVo();
msdVo.setXTime(tj); msdVo.setXTime(tj);
msdVo.setCarCount(0); msdVo.setCarCount(0);
msdVo.setParkCount(0); msdVo.setParkCount(0);
@@ -218,14 +220,13 @@ public class MarkingDataReportServiceImpl implements MarkingDataReportService {
msdVo.setMicroPaySendCount(0); msdVo.setMicroPaySendCount(0);
msdVo.setOrderSendCount(0); msdVo.setOrderSendCount(0);
msdVo.setTotal(0); msdVo.setTotal(0);
tempDatalist.add(msdVo);
continue;
} else {
msdVo = first.get();
msdVo.setTotal(msdVo.getParkSendCount() +
msdVo.getVerifySendCount() +
msdVo.getMicroPaySendCount() +
msdVo.getOrderSendCount());
} }
MarkingSceneDataReportVo msdVo = first.get();
msdVo.setTotal(msdVo.getParkSendCount() +
msdVo.getVerifySendCount() +
msdVo.getMicroPaySendCount() +
msdVo.getOrderSendCount());
tempDatalist.add(msdVo); tempDatalist.add(msdVo);
} }


@@ -285,27 +286,25 @@ public class MarkingDataReportServiceImpl implements MarkingDataReportService {
params.put("endTime", convertDateAndAdd(markingCouponDataReportDto.getEndTime(), 1)); params.put("endTime", convertDateAndAdd(markingCouponDataReportDto.getEndTime(), 1));
//停车发券数 停车发券被核销数, 核销发券数 核销发券被核销数, B端刷卡支付发券数 刷卡支付发券被核销数 //停车发券数 停车发券被核销数, 核销发券数 核销发券被核销数, B端刷卡支付发券数 刷卡支付发券被核销数
PageHelper.startPage(pageIndex, pageSize); PageHelper.startPage(pageIndex, pageSize);
List<MarkingSceneDataReportVo> templist = wxCouponActionLogMapper.sceneDataList(params);

List<MarkingSceneDataVo> list = new ArrayList<>();
for (MarkingSceneDataReportVo temp: templist) {
MarkingSceneDataVo vo = new MarkingSceneDataVo();
vo.setxTime(temp.getXTime());
if(markingCouponDataReportDto.getType().equals(EnumCouponSendSendType.CAR_STOP.getCode())) {
vo.setSendCount(temp.getParkSendCount());
}else if (markingCouponDataReportDto.getType().equals(EnumCouponSendSendType.B_MICROPAY.getCode())) {
vo.setSendCount(temp.getMicroPaySendCount());
}else if (markingCouponDataReportDto.getType().equals(EnumCouponSendSendType.COUPON_VERIFY.getCode())){
vo.setSendCount(temp.getVerifySendCount());
}else if (markingCouponDataReportDto.getType().equals(EnumCouponSendSendType.C_ORDER.getCode())){
vo.setSendCount(temp.getOrderSendCount());
}else {
vo.setSendCount(0);
}
List<MarkingSceneDataVo> list;


list.add(vo);
if(markingCouponDataReportDto.getType().equals(EnumCouponSendSendType.CAR_STOP.getCode())) {
params.put("channelType", EnumCouponSendSendType.CAR_STOP.getCode());
list = wxCouponActionLogMapper.sceneDataList(params);
}else if (markingCouponDataReportDto.getType().equals(EnumCouponSendSendType.B_MICROPAY.getCode())) {
params.put("channelType", EnumCouponSendSendType.B_MICROPAY.getCode());
list = wxCouponActionLogMapper.sceneDataList(params);
}else if (markingCouponDataReportDto.getType().equals(EnumCouponSendSendType.COUPON_VERIFY.getCode())){
params.put("channelType", EnumCouponSendSendType.COUPON_VERIFY.getCode());
list = wxCouponActionLogMapper.sceneDataList(params);
}else if (markingCouponDataReportDto.getType().equals(EnumCouponSendSendType.C_ORDER.getCode())){
params.put("channelType", EnumCouponSendSendType.C_ORDER.getCode());
list = wxCouponActionLogMapper.sceneDataList(params);
}else {
list = new ArrayList<MarkingSceneDataVo>();
} }



Map<String, Integer> countMap = new HashMap<>(); Map<String, Integer> countMap = new HashMap<>();


if(markingCouponDataReportDto.getType().equals(EnumCouponSendSendType.CAR_STOP.getCode())){ //停车 if(markingCouponDataReportDto.getType().equals(EnumCouponSendSendType.CAR_STOP.getCode())){ //停车


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

@@ -94,9 +94,14 @@
(select Count(*) from wx_coupon_action_log c (select Count(*) from wx_coupon_action_log c
where DATE_FORMAT(create_time,'%m/%d')=xTime where DATE_FORMAT(create_time,'%m/%d')=xTime
and c.channel_type=4 and c.channel_type=4
and tenant_id=#{tenantId}) as microPaySendCount
and tenant_id=#{tenantId}) as microPaySendCount,
(select Count(*) from wx_coupon_action_log c
where DATE_FORMAT(create_time,'%m/%d')=xTime
and c.channel_type=5
and tenant_id=#{tenantId}) as orderSendCount
from wx_coupon_action_log from wx_coupon_action_log
where tenant_id=#{tenantId} where tenant_id=#{tenantId}
and channel_type in (2,3,4,5)
and create_time &gt;= #{startTime} and create_time &gt;= #{startTime}
and create_time &lt;= #{endTime} and create_time &lt;= #{endTime}
group by xTime group by xTime
@@ -115,22 +120,15 @@
order by xTime desc order by xTime desc
</select> </select>


<select id="sceneDataList" resultType="com.iformall.domain.vo.MarkingSceneDataReportVo" parameterType="hashmap">
<select id="sceneDataList" resultType="com.iformall.domain.vo.MarkingSceneDataVo" parameterType="hashmap">
select DATE_FORMAT(create_time,'%Y-%m-%d') as xTime, select DATE_FORMAT(create_time,'%Y-%m-%d') as xTime,
(select Count(*) from wx_coupon_action_log c (select Count(*) from wx_coupon_action_log c
where DATE_FORMAT(create_time,'%Y-%m-%d')=xTime where DATE_FORMAT(create_time,'%Y-%m-%d')=xTime
and c.channel_type=2
and tenant_id=#{tenantId} ) as parkSendCount,
(select Count(*) from wx_coupon_action_log c
where DATE_FORMAT(create_time,'%Y-%m-%d')=xTime
and c.channel_type=3
and tenant_id=#{tenantId}) as verifySendCount,
(select Count(*) from wx_coupon_action_log c
where DATE_FORMAT(create_time,'%Y-%m-%d')=xTime
and c.channel_type=4
and tenant_id=#{tenantId}) as microPaySendCount
and c.channel_type=#{channelType}
and tenant_id=#{tenantId} ) as sendCount
from wx_coupon_action_log from wx_coupon_action_log
where tenant_id=#{tenantId}
where tenant_id=#{tenantId}
and channel_type=#{channelType}
<if test=" null != startTime "> <if test=" null != startTime ">
and create_time &gt;= #{startTime} and create_time &gt;= #{startTime}
</if> </if>


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