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

[A端][修复]:购买发券统计,购买发券多发问题修复

release_toaliyun_real
hupeng 7 лет назад
Родитель
Сommit
e74769ff6c
5 измененных файлов: 59 добавлений и 9 удалений
  1. +4
    -2
      mallinkService/src/main/java/com/iformall/domain/vo/MarkingSceneDataReportVo.java
  2. +1
    -1
      mallinkService/src/main/java/com/iformall/mapper/WxCouponOrderMapper.java
  3. +43
    -6
      mallinkService/src/main/java/com/iformall/service/impl/MarkingDataReportServiceImpl.java
  4. +1
    -0
      mallinkService/src/main/java/com/iformall/service/impl/WxCouponSendServiceImpl.java
  5. +10
    -0
      mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml

+ 4
- 2
mallinkService/src/main/java/com/iformall/domain/vo/MarkingSceneDataReportVo.java Просмотреть файл

@@ -12,11 +12,13 @@ public class MarkingSceneDataReportVo {
private int parkSendCount; // 停车发放
private int verifySendCount; // 核销发放
private int microPaySendCount; // B端刷卡支付发放
private int orderSendCount; // 购买发放数
private int parkCount; // 停车核销数
private int verifyCount; // 核销核销数
private int microPayCount; // 核销核销数
private int microPayCount; // 核销核销数
private int orderCount; // 购买数
private int tempCount;
private Integer carCount; // 车辆进场数
private Integer carCount; // 车辆进场数
private String verifyPercent;
private int total;
}

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

@@ -81,7 +81,7 @@ public interface WxCouponOrderMapper extends CommonMapper<WxCouponOrder, Long> {


List<MarkingSceneDataVo> queryForSceneRepotyHistoryVerified(HashMap<String,Object> params);
List<MarkingSceneDataVo> queryForSceneRepotyHistoryOrdered(HashMap<String,Object> params);
/**
* 查询核销/领券数
* @param startTime


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

@@ -172,7 +172,6 @@ public class MarkingDataReportServiceImpl implements MarkingDataReportService {
Map<String, Integer> verifyCountMap = list2.stream().collect(Collectors.toMap(MarkingSceneDataReportVo::getXTime, p -> p.getTempCount()));

// B端刷卡支付被核销数
// TODO
HashMap<String, Object> params3 = new HashMap<>();
params3.put("tenantId", tenantId);
params3.put("startTime", addDay(-30));
@@ -181,10 +180,20 @@ public class MarkingDataReportServiceImpl implements MarkingDataReportService {
List<MarkingSceneDataReportVo> list3 = wxCouponActionLogMapper.sceneDataMapJoinCouponOrder(params3);
Map<String, Integer> microPayCountMap = list3.stream().collect(Collectors.toMap(MarkingSceneDataReportVo::getXTime, p -> p.getTempCount()));

// 购买发券被核销数
HashMap<String, Object> params4 = new HashMap<>();
params3.put("tenantId", tenantId);
params3.put("startTime", addDay(-30));
params3.put("endTime", addDay(1));
params3.put("channelType", EnumCouponSendSendType.C_ORDER.getCode());//B端刷卡支付
List<MarkingSceneDataReportVo> list4 = wxCouponActionLogMapper.sceneDataMapJoinCouponOrder(params4);
Map<String, Integer> OrderCountMap = list4.stream().collect(Collectors.toMap(MarkingSceneDataReportVo::getXTime, p -> p.getTempCount()));

for (MarkingSceneDataReportVo vo : list) {
vo.setParkCount(parkCountMap.get(vo.getXTime()) == null ? 0 : parkCountMap.get(vo.getXTime()));
vo.setVerifyCount(verifyCountMap.get(vo.getXTime()) == null ? 0 : verifyCountMap.get(vo.getXTime()));
vo.setMicroPayCount(microPayCountMap.get(vo.getXTime()) == null ? 0 : microPayCountMap.get(vo.getXTime()));
vo.setOrderCount(OrderCountMap.get(vo.getXTime()) == null ? 0 : OrderCountMap.get(vo.getXTime()));
}

String startdate = DateUtils.getTimeBefore(30, new Date());
@@ -202,16 +211,21 @@ public class MarkingDataReportServiceImpl implements MarkingDataReportService {
msdVo.setParkCount(0);
msdVo.setVerifyCount(0);
msdVo.setMicroPayCount(0);
msdVo.setOrderCount(0);
msdVo.setTempCount(0);
msdVo.setParkSendCount(0);
msdVo.setVerifySendCount(0);
msdVo.setMicroPaySendCount(0);
msdVo.setOrderSendCount(0);
msdVo.setTotal(0);
tempDatalist.add(msdVo);
continue;
}
MarkingSceneDataReportVo msdVo = first.get();
msdVo.setTotal(msdVo.getParkSendCount() + msdVo.getVerifySendCount() + msdVo.getMicroPaySendCount());
msdVo.setTotal(msdVo.getParkSendCount() +
msdVo.getVerifySendCount() +
msdVo.getMicroPaySendCount() +
msdVo.getOrderSendCount());
tempDatalist.add(msdVo);
}

@@ -283,6 +297,8 @@ public class MarkingDataReportServiceImpl implements MarkingDataReportService {
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);
}
@@ -312,8 +328,8 @@ public class MarkingDataReportServiceImpl implements MarkingDataReportService {
if (markingCouponDataReportDto.getEndTime() != null)
params.put("endTime", convertDateAndAdd(markingCouponDataReportDto.getEndTime(), 1));
params.put("channelType", EnumCouponSendSendType.B_MICROPAY.getCode());
List<MarkingSceneDataReportVo> list1 = wxCouponActionLogMapper.sceneDataJoinCouponOrderList(params);
countMap = list1.stream().collect(Collectors.toMap(MarkingSceneDataReportVo::getXTime, p -> p.getTempCount()));
List<MarkingSceneDataReportVo> list2 = wxCouponActionLogMapper.sceneDataJoinCouponOrderList(params);
countMap = list2.stream().collect(Collectors.toMap(MarkingSceneDataReportVo::getXTime, p -> p.getTempCount()));
} else if (markingCouponDataReportDto.getType().equals(EnumCouponSendSendType.COUPON_VERIFY.getCode())){
//核销发券被核销数
params.clear();
@@ -323,8 +339,19 @@ public class MarkingDataReportServiceImpl implements MarkingDataReportService {
if (markingCouponDataReportDto.getEndTime() != null)
params.put("endTime", convertDateAndAdd(markingCouponDataReportDto.getEndTime(), 1));
params.put("channelType", EnumCouponSendSendType.COUPON_VERIFY.getCode());
List<MarkingSceneDataReportVo> list2 = wxCouponActionLogMapper.sceneDataJoinCouponOrderList(params);
countMap = list2.stream().collect(Collectors.toMap(MarkingSceneDataReportVo::getXTime, p -> p.getTempCount()));
List<MarkingSceneDataReportVo> list3 = wxCouponActionLogMapper.sceneDataJoinCouponOrderList(params);
countMap = list3.stream().collect(Collectors.toMap(MarkingSceneDataReportVo::getXTime, p -> p.getTempCount()));
} else if (markingCouponDataReportDto.getType().equals(EnumCouponSendSendType.C_ORDER.getCode())){
//购买发数
params.clear();
params.put("tenantId", tenantId);
if (markingCouponDataReportDto.getStartTime() != null)
params.put("startTime", convertDateAndAdd(markingCouponDataReportDto.getStartTime(),0));
if (markingCouponDataReportDto.getEndTime() != null)
params.put("endTime", convertDateAndAdd(markingCouponDataReportDto.getEndTime(), 1));
params.put("channelType", EnumCouponSendSendType.C_ORDER.getCode());
List<MarkingSceneDataReportVo> list4 = wxCouponActionLogMapper.sceneDataJoinCouponOrderList(params);
countMap = list4.stream().collect(Collectors.toMap(MarkingSceneDataReportVo::getXTime, p -> p.getTempCount()));
}

Map<String, Integer> triggerCountMap = new HashMap<>();
@@ -361,6 +388,16 @@ public class MarkingDataReportServiceImpl implements MarkingDataReportService {
params.put("endTime", convertDateAndAdd(markingCouponDataReportDto.getEndTime(), 1));
List<MarkingSceneDataVo> markingSceneDataVos = wxCouponOrderMapper.queryForSceneRepotyHistoryVerified(params);
triggerCountMap = markingSceneDataVos.stream().collect(Collectors.toMap(MarkingSceneDataVo::getxTime, p -> p.getTriggerCount()));
}else if (markingCouponDataReportDto.getType().equals(EnumCouponSendSendType.C_ORDER.getCode())) {
//购买发券数
params.clear();
params.put("tenantId", tenantId);
if (markingCouponDataReportDto.getStartTime() != null)
params.put("startTime", convertDateAndAdd(markingCouponDataReportDto.getStartTime(),0));
if (markingCouponDataReportDto.getEndTime() != null)
params.put("endTime", convertDateAndAdd(markingCouponDataReportDto.getEndTime(), 1));
List<MarkingSceneDataVo> markingSceneDataVos = wxCouponOrderMapper.queryForSceneRepotyHistoryOrdered(params);
triggerCountMap = markingSceneDataVos.stream().collect(Collectors.toMap(MarkingSceneDataVo::getxTime, p -> p.getTriggerCount()));
}
NumberFormat nf = NumberFormat.getPercentInstance();
nf.setMinimumFractionDigits(2);


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

@@ -135,6 +135,7 @@ public class WxCouponSendServiceImpl implements WxCouponSendService {

WxCouponSend wxCouponSendQuery = new WxCouponSend();
wxCouponSendQuery.setTenantId(tenantId);
wxCouponSendQuery.setSendType(type.getCode());
wxCouponSendQuery.setStatus(EnumCouponSendStatus.VALID.getCode());

List<WxCouponSend> wxCouponSends = wxCouponSendMapper.findList(wxCouponSendQuery);


+ 10
- 0
mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml Просмотреть файл

@@ -242,6 +242,16 @@
group by xTime
</select>

<select id="queryForSceneRepotyHistoryOrdered" resultType="com.iformall.domain.vo.MarkingSceneDataVo" parameterType="hashmap">
select DATE_FORMAT(update_date,'%Y-%m-%d') xTime, count(c.id) triggerCount
from wx_coupon_order c
where c.tenant_id = #{tenantId}
<if test=" null != startTime and null != endTime">
and c.create_date BETWEEN #{startTime} and #{endTime}
</if>
group by xTime
</select>

<select id="findVerifiedCountByCUser" resultType="java.lang.Integer">
select COUNT(*) FROM wx_coupon_order
where c_user_id = #{cUserId}


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