Sfoglia il codice sorgente

[发券][修改]:场景发券一些逻辑的调整

release_toaliyun_real
hupeng 7 anni fa
parent
commit
043c88286d
6 ha cambiato i file con 92 aggiunte e 61 eliminazioni
  1. +24
    -20
      mallinkService/src/main/java/com/iformall/domain/vo/MarkingSceneDataVo.java
  2. +3
    -0
      mallinkService/src/main/java/com/iformall/mapper/WxCouponOrderMapper.java
  3. +43
    -38
      mallinkService/src/main/java/com/iformall/service/impl/MarkingDataReportServiceImpl.java
  4. +1
    -1
      mallinkService/src/main/resources/mapper/WxCarCmdLogMapper.xml
  5. +11
    -2
      mallinkService/src/main/resources/mapper/WxCouponActionLogMapper.xml
  6. +10
    -0
      mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml

+ 24
- 20
mallinkService/src/main/java/com/iformall/domain/vo/MarkingSceneDataVo.java Vedi File

@@ -6,44 +6,48 @@ package com.iformall.domain.vo;
* 场景营销数据VO
*/
public class MarkingSceneDataVo {
private int carCount; //进车数量
private int sendCount; //发券数
private int verifyCount; //核销数
private String verifyPercent; //核销比
private int triggerCount; //某日进车数量/某日核销数量
private int sendCount; //场景营销发券数
private int verifiedCount; //场景营销券核销数
private String verifiedPercent; //场景营销核销比
private String xTime; //时间

public int getCarCount() {
return carCount;
public int getVerifiedCount() {

return verifiedCount;
}

public void setCarCount(int carCount) {
this.carCount = carCount;
public void setVerifiedCount(int verifiedCount) {
this.verifiedCount = verifiedCount;
}

public int getSendCount() {
return sendCount;
public String getVerifiedPercent() {
return verifiedPercent;
}

public void setSendCount(int sendCount) {
this.sendCount = sendCount;
public void setVerifiedPercent(String verifiedPercent) {
this.verifiedPercent = verifiedPercent;
}

public int getVerifyCount() {
return verifyCount;
public int getTriggerCount() {

return triggerCount;
}

public void setVerifyCount(int verifyCount) {
this.verifyCount = verifyCount;
public void setTriggerCount(int triggerCount) {
this.triggerCount = triggerCount;
}

public String getVerifyPercent() {
return verifyPercent;
public int getSendCount() {
return sendCount;
}

public void setVerifyPercent(String verifyPercent) {
this.verifyPercent = verifyPercent;
public void setSendCount(int sendCount) {
this.sendCount = sendCount;
}



public String getxTime() {
return xTime;
}


+ 3
- 0
mallinkService/src/main/java/com/iformall/mapper/WxCouponOrderMapper.java Vedi File

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

void offExpiredCouponOrderByValidDate();
List<WxCouponOrder> findExpiredCouponOrderByValidDate();


List<MarkingSceneDataVo> queryForSceneRepotyHistoryVerified(HashMap<String,Object> params);
}

+ 43
- 38
mallinkService/src/main/java/com/iformall/service/impl/MarkingDataReportServiceImpl.java Vedi File

@@ -249,52 +249,66 @@ public class MarkingDataReportServiceImpl implements MarkingDataReportService {
list.add(vo);
}


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

if(markingCouponDataReportDto.getType()==1){ //停车
//停车发券被核销数
HashMap<String, Object> params1 = new HashMap<>();
params1.put("tenantId", tenantId);
params.clear();
params.put("tenantId", tenantId);
if (markingCouponDataReportDto.getStartTime() != null)
params1.put("startTime", convertDate(markingCouponDataReportDto.getStartTime()));
params.put("startTime", convertDate(markingCouponDataReportDto.getStartTime()));
if (markingCouponDataReportDto.getEndTime() != null)
params1.put("endTime", convertDateAndAdd(convertDate(markingCouponDataReportDto.getEndTime()), 1));
params1.put("channelType", EnumCouponSendSendType.CAR_STOP.getCode());
List<MarkingSceneDataReportVo> list1 = wxCouponActionLogMapper.sceneDataJoinCouponOrderList(params1);
params.put("endTime", convertDateAndAdd(convertDate(markingCouponDataReportDto.getEndTime()), 1));
params.put("channelType", EnumCouponSendSendType.CAR_STOP.getCode());
List<MarkingSceneDataReportVo> list1 = wxCouponActionLogMapper.sceneDataJoinCouponOrderList(params);
countMap = list1.stream().collect(Collectors.toMap(MarkingSceneDataReportVo::getxTime, p -> p.getTempCount()));
}else{
//核销发券被核销数
HashMap<String, Object> params2 = new HashMap<>();
params2.put("tenantId", tenantId);
params.clear();
params.put("tenantId", tenantId);
if (markingCouponDataReportDto.getStartTime() != null)
params2.put("startTime", convertDate(markingCouponDataReportDto.getStartTime()));
params.put("startTime", convertDate(markingCouponDataReportDto.getStartTime()));
if (markingCouponDataReportDto.getEndTime() != null)
params2.put("endTime", convertDateAndAdd(convertDate(markingCouponDataReportDto.getEndTime()), 1));
params2.put("channelType", EnumCouponSendSendType.COUPON_VERIFY.getCode());
List<MarkingSceneDataReportVo> list2 = wxCouponActionLogMapper.sceneDataJoinCouponOrderList(params2);
params.put("endTime", convertDateAndAdd(convertDate(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()));
}

//获取车辆进场数
HashMap<String, Object> params3 = new HashMap<>();
params3.put("tenantId", tenantId);
if (markingCouponDataReportDto.getStartTime() != null)
params3.put("startTime", convertDate(markingCouponDataReportDto.getStartTime()));
if (markingCouponDataReportDto.getEndTime() != null)
params3.put("endTime", convertDateAndAdd(convertDate(markingCouponDataReportDto.getEndTime()), 1));
params3.put("cmdType", EnumCarCmd.CAR_ETCP_CALLBACK_PARK_IN.getCode());
List<MarkingSceneDataVo> markingSceneDataVos = wxCarCmdLogMapper.queryForSceneRepotyHistoryCar(params3);
Map<String,Integer> carCountMap = markingSceneDataVos.stream().collect(Collectors.toMap(MarkingSceneDataVo::getxTime, p -> p.getCarCount()));
Map<String, Integer> triggerCountMap = new HashMap<>();

if(markingCouponDataReportDto.getType()==1) { //停车
//获取车辆进场数
params.clear();
params.put("tenantId", tenantId);
if (markingCouponDataReportDto.getStartTime() != null)
params.put("startTime", convertDate(markingCouponDataReportDto.getStartTime()));
if (markingCouponDataReportDto.getEndTime() != null)
params.put("endTime", convertDateAndAdd(convertDate(markingCouponDataReportDto.getEndTime()), 1));
params.put("cmdType", EnumCarCmd.CAR_ETCP_CALLBACK_PARK_IN.getCode());
List<MarkingSceneDataVo> markingSceneDataVos = wxCarCmdLogMapper.queryForSceneRepotyHistoryCar(params);
triggerCountMap = markingSceneDataVos.stream().collect(Collectors.toMap(MarkingSceneDataVo::getxTime, p -> p.getTriggerCount()));
}else {
//获取核销数
params.clear();
params.put("tenantId", tenantId);
if (markingCouponDataReportDto.getStartTime() != null)
params.put("startTime", convertDate(markingCouponDataReportDto.getStartTime()));
if (markingCouponDataReportDto.getEndTime() != null)
params.put("endTime", convertDateAndAdd(convertDate(markingCouponDataReportDto.getEndTime()), 1));
List<MarkingSceneDataVo> markingSceneDataVos = wxCouponOrderMapper.queryForSceneRepotyHistoryVerified(params);
triggerCountMap = markingSceneDataVos.stream().collect(Collectors.toMap(MarkingSceneDataVo::getxTime, p -> p.getTriggerCount()));

}
NumberFormat nf = NumberFormat.getPercentInstance();
nf.setMinimumFractionDigits(2);
for (MarkingSceneDataVo vo : list) {
vo.setVerifyCount(countMap.get(vo.getxTime()) == null ? 0 : countMap.get(vo.getxTime()));
vo.setCarCount(carCountMap.get(vo.getxTime()) == null ? 0 : carCountMap.get(vo.getxTime()));
if(vo.getSendCount()==0||vo.getVerifyCount()==0){
vo.setVerifyPercent(vo.getVerifyCount()+":"+vo.getSendCount());
vo.setVerifiedCount(countMap.get(vo.getxTime()) == null ? 0 : countMap.get(vo.getxTime()));
vo.setTriggerCount(triggerCountMap.get(vo.getxTime()) == null ? 0 : triggerCountMap.get(vo.getxTime()));
if(vo.getSendCount()==0){
vo.setVerifiedPercent("--");
}else {
int gcd = gcd(vo.getSendCount(), vo.getVerifyCount());
vo.setVerifyPercent(vo.getVerifyCount() / gcd + "/" + vo.getSendCount() / gcd);
vo.setVerifiedPercent(nf.format(new Double(vo.getVerifiedCount()) / new Double(vo.getSendCount())));
}
}
return new PageInfo<>(list);
@@ -345,14 +359,5 @@ public class MarkingDataReportServiceImpl implements MarkingDataReportService {

}


//计算最大公约数
public int gcd(int x, int y){ // 这个是运用辗转相除法求 两个数的 最大公约数 看不懂可以百度 // 下
if(y == 0)
return x;
else
return gcd(y,x%y);
}

}


+ 1
- 1
mallinkService/src/main/resources/mapper/WxCarCmdLogMapper.xml Vedi File

@@ -86,7 +86,7 @@
</select>

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


+ 11
- 2
mallinkService/src/main/resources/mapper/WxCouponActionLogMapper.xml Vedi File

@@ -110,8 +110,17 @@
</select>

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


+ 10
- 0
mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml Vedi File

@@ -560,4 +560,14 @@
<if test=" null != sortColumns"> order by ${sortColumns} </if>
</select>

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

Caricamento…
Annulla
Salva