Sfoglia il codice sorgente

[营销数据][修改]:优化营销数据查询

release_toaliyun_real
Stormeye Wu 7 anni fa
parent
commit
88f69c4f0c
6 ha cambiato i file con 73 aggiunte e 30 eliminazioni
  1. +4
    -0
      mallinkAdmin/src/main/resources/db/migration/V201906251915__ADD_MD_FOR_COUPON_ACTION.sql
  2. +6
    -3
      mallinkService/src/main/java/com/iformall/domain/po/WxCouponActionLog.java
  3. +14
    -0
      mallinkService/src/main/java/com/iformall/domain/vo/MarkingSceneDataReportTVo.java
  4. +4
    -1
      mallinkService/src/main/java/com/iformall/mapper/WxCouponActionLogMapper.java
  5. +34
    -26
      mallinkService/src/main/java/com/iformall/service/impl/MarkingDataReportServiceImpl.java
  6. +11
    -0
      mallinkService/src/main/resources/mapper/WxCouponActionLogMapper.xml

+ 4
- 0
mallinkAdmin/src/main/resources/db/migration/V201906251915__ADD_MD_FOR_COUPON_ACTION.sql Vedi File

@@ -0,0 +1,4 @@
ALTER TABLE `wx_coupon_action_log`
ADD COLUMN `create_time_md` varchar(8) NULL DEFAULT NULL AFTER `create_time`;

UPDATE `wx_coupon_action_log` set `create_time_md` = DATE_FORMAT(create_time, '%m/%d');

+ 6
- 3
mallinkService/src/main/java/com/iformall/domain/po/WxCouponActionLog.java Vedi File

@@ -32,12 +32,14 @@ public class WxCouponActionLog implements Serializable {
private Long couponId;
@io.swagger.annotations.ApiModelProperty(value="券包ID",name="couponOrderId")
private Long couponOrderId;
@io.swagger.annotations.ApiModelProperty(value="0:精准 1:主动领取 2:用户购买 3:停车 4:核销",name="channelType")
@io.swagger.annotations.ApiModelProperty(value="发券方式:0.精准发券,1.主动领取(保留),2.停车发券,3.核销发券,4.B端刷卡发券,5.交易发券,6.定期发券",name="channelType")
private Integer channelType;
@io.swagger.annotations.ApiModelProperty(value="",name="channelId")
@io.swagger.annotations.ApiModelProperty(value="channelId",name="channelId")
private Long channelId;
@io.swagger.annotations.ApiModelProperty(value="",name="createTime")
@io.swagger.annotations.ApiModelProperty(value="创建时间",name="createTime")
private Date createTime;
@io.swagger.annotations.ApiModelProperty(value="月日",name="createTimeMd")
private String createTimeMd;

public static enum Field
{
@@ -48,6 +50,7 @@ public class WxCouponActionLog implements Serializable {
,ChannelType_ASC("`channel_type` ASC"),ChannelType_DESC("`channel_type` DESC")
,ChannelId_ASC("`channel_id` ASC"),ChannelId_DESC("`channel_id` DESC")
,CreateTime_ASC("`create_time` ASC"),CreateTime_DESC("`create_time` DESC")
,CreateTimeMd_ASC("`create_time_md` ASC"),CreateTimeMd_DESC("`create_time_md` DESC")
;
private String value;
Field(String value){


+ 14
- 0
mallinkService/src/main/java/com/iformall/domain/vo/MarkingSceneDataReportTVo.java Vedi File

@@ -0,0 +1,14 @@
package com.iformall.domain.vo;

import lombok.Data;

/**
* Created by syf on 2018/8/29.
*/
@Data
public class MarkingSceneDataReportTVo {

private String xTime;
private int channelType;
private int count;
}

+ 4
- 1
mallinkService/src/main/java/com/iformall/mapper/WxCouponActionLogMapper.java Vedi File

@@ -3,6 +3,7 @@ package com.iformall.mapper;
import java.util.*;
import com.iformall.common.CommonMapper;
import com.iformall.domain.dto.MarkingCouponDataReportDto;
import com.iformall.domain.vo.MarkingSceneDataReportTVo;
import com.iformall.domain.vo.MarkingSceneDataReportVo;
import com.iformall.domain.vo.MarkingSceneDataVo;
import org.apache.ibatis.annotations.Param;
@@ -12,7 +13,9 @@ public interface WxCouponActionLogMapper extends CommonMapper<WxCouponActionLog,

List<WxCouponActionLog> findList(WxCouponActionLog wxCouponActionLog);

List<MarkingSceneDataReportVo> sceneDataMap(HashMap<String,Object> params);
List<MarkingSceneDataReportVo> sceneDataMap(HashMap<String,Object> params); // will be deleted

List<MarkingSceneDataReportTVo> getSceneDataMap(HashMap<String,Object> params);

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



+ 34
- 26
mallinkService/src/main/java/com/iformall/service/impl/MarkingDataReportServiceImpl.java Vedi File

@@ -158,7 +158,8 @@ public class MarkingDataReportServiceImpl implements MarkingDataReportService {
params.put("startTime", addDay(-30));
params.put("endTime", addDay(1));
//停车发券数 停车发券被核销数 核销发券数 核销发券被核销数
List<MarkingSceneDataReportVo> list = wxCouponActionLogMapper.sceneDataMap(params);
// TODO DELETE sceneDataMap
List<MarkingSceneDataReportTVo> sceneList = wxCouponActionLogMapper.getSceneDataMap(params);

//停车发券被核销数
HashMap<String, Object> params1 = new HashMap<>();
@@ -196,13 +197,6 @@ public class MarkingDataReportServiceImpl implements MarkingDataReportService {
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());
String enddate = DateUtils.getTimeBefore(1,new Date());
List<String> tjTimeList = DateUtils.getTjTimeList(startdate, enddate, "0");
@@ -210,30 +204,44 @@ public class MarkingDataReportServiceImpl implements MarkingDataReportService {
List<MarkingSceneDataReportVo> tempDatalist =new LinkedList<>();

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

MarkingSceneDataReportVo msdVo;
if(!first.isPresent()){
msdVo = new MarkingSceneDataReportVo();
msdVo.setXTime(tj);
msdVo.setCarCount(0);
msdVo.setParkCount(0);
msdVo.setVerifyCount(0);
msdVo.setMicroPayCount(0);
msdVo.setOrderCount(0);
msdVo.setTempCount(0);
MarkingSceneDataReportVo msdVo = new MarkingSceneDataReportVo();
msdVo.setXTime(tj);
Optional<MarkingSceneDataReportTVo> carStop = sceneList.stream().filter(c -> c.getXTime().equals(tj) && c.getChannelType() == EnumCouponSendSendType.CAR_STOP.getCode()).findFirst();
if(!carStop.isPresent()) {
msdVo.setParkSendCount(0);
} else {
MarkingSceneDataReportTVo tvo = carStop.get();
msdVo.setParkSendCount(tvo.getCount());
}

Optional<MarkingSceneDataReportTVo> couponVerify = sceneList.stream().filter(c -> c.getXTime().equals(tj) && c.getChannelType() == EnumCouponSendSendType.COUPON_VERIFY.getCode()).findFirst();
if(!couponVerify.isPresent()) {
msdVo.setVerifySendCount(0);
} else {
MarkingSceneDataReportTVo tvo = couponVerify.get();
msdVo.setVerifySendCount(tvo.getCount());
}

Optional<MarkingSceneDataReportTVo> microPay = sceneList.stream().filter(c -> c.getXTime().equals(tj) && c.getChannelType() == EnumCouponSendSendType.B_MICROPAY.getCode()).findFirst();
if(!microPay.isPresent()) {
msdVo.setMicroPaySendCount(0);
} else {
MarkingSceneDataReportTVo tvo = microPay.get();
msdVo.setMicroPaySendCount(tvo.getCount());
}

Optional<MarkingSceneDataReportTVo> orderSend = sceneList.stream().filter(c -> c.getXTime().equals(tj) && c.getChannelType() == EnumCouponSendSendType.B_MICROPAY.getCode()).findFirst();
if(!orderSend.isPresent()) {
msdVo.setOrderSendCount(0);
msdVo.setTotal(0);
} else {
msdVo = first.get();
msdVo.setTotal(msdVo.getParkSendCount() +
msdVo.getVerifySendCount() +
msdVo.getMicroPaySendCount() +
msdVo.getOrderSendCount());
MarkingSceneDataReportTVo tvo = orderSend.get();
msdVo.setOrderSendCount(tvo.getCount());
}
msdVo.setTotal(msdVo.getParkSendCount() +
msdVo.getVerifySendCount() +
msdVo.getMicroPaySendCount() +
msdVo.getOrderSendCount());

tempDatalist.add(msdVo);
}



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

@@ -99,6 +99,17 @@
order by xTime desc
</select>

<select id="getSceneDataMap" resultType="com.iformall.domain.vo.MarkingSceneDataReportTVo" parameterType="hashmap">
select create_time_md as xTime, channel_type, count(create_time_md + '' + channel_type) as count
from wx_coupon_action_log
where tenant_id=#{tenantId}
and channel_type in (2,3,4,5)
and create_time &gt;= #{startTime}
and create_time &lt;= #{endTime}
group by create_time_md, channel_type
order by create_time_md desc
</select>

<select id="sceneDataMapJoinCouponOrder" resultType="com.iformall.domain.vo.MarkingSceneDataReportVo" parameterType="hashmap">
select DATE_FORMAT(create_date,'%m/%d') AS xTime,
COUNT(wx_coupon_order.id) as tempCount


Caricamento…
Annulla
Salva