Quellcode durchsuchen

[营销报表][修改] 添加返回列表

release_toaliyun_real
masterspirit vor 7 Jahren
Ursprung
Commit
b48fe6fb26
8 geänderte Dateien mit 110 neuen und 13 gelöschten Zeilen
  1. +23
    -4
      mallinkAdmin/src/main/java/com/simple/controller/MarkingDataReportController.java
  2. +13
    -3
      mallinkService/src/main/java/com/simple/domain/po/WxUserVisit.java
  3. +5
    -0
      mallinkService/src/main/java/com/simple/mapper/WxCouponOrderMapper.java
  4. +3
    -0
      mallinkService/src/main/java/com/simple/mapper/WxUserVisitMapper.java
  5. +5
    -0
      mallinkService/src/main/java/com/simple/service/MarkingDataReportService.java
  6. +41
    -4
      mallinkService/src/main/java/com/simple/service/impl/MarkingDataReportServiceImpl.java
  7. +8
    -0
      mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml
  8. +12
    -2
      mallinkService/src/main/resources/mapper/WxUserVisitMapper.xml

+ 23
- 4
mallinkAdmin/src/main/java/com/simple/controller/MarkingDataReportController.java Datei anzeigen

@@ -28,16 +28,35 @@ public class MarkingDataReportController extends BaseController {
public ResultData findCouponData() { public ResultData findCouponData() {
return new ResultData(markingDataReportService.getCouponDate(getTenantId())); return new ResultData(markingDataReportService.getCouponDate(getTenantId()));
} }

@ApiOperation("查询券数据列表")
@GetMapping("/couponDataList")
public ResultData findCouponDataList(@ModelAttribute MarkingCouponDataReportDto markingCouponDataReportDto) {
return new ResultData(markingDataReportService.getCouponDateList(getTenantId(),markingCouponDataReportDto));
}

@ApiOperation("查询场景投放券数据") @ApiOperation("查询场景投放券数据")
@GetMapping("/sceneData") @GetMapping("/sceneData")
public ResultData findSceneData() { public ResultData findSceneData() {
return new ResultData(markingDataReportService.getSceneData(getTenantId())); return new ResultData(markingDataReportService.getSceneData(getTenantId()));
} }


@ApiOperation("查询券数据列表")
@GetMapping("/couponDataList")
public ResultData findCouponDataList(@ModelAttribute MarkingCouponDataReportDto markingCouponDataReportDto) {
return new ResultData(markingDataReportService.getCouponDateList(getTenantId(),markingCouponDataReportDto));
@ApiOperation("查询场景营销数据列表")
@GetMapping("/sceneDataList")
public ResultData findSceneDataList(@ModelAttribute MarkingCouponDataReportDto markingCouponDataReportDto) {
return new ResultData(markingDataReportService.getSceneDataList(getTenantId(),markingCouponDataReportDto));
}

@ApiOperation("查询触达用户数数据")
@GetMapping("/touchUsersData")
public ResultData touchUsersData() {
return new ResultData(markingDataReportService.getTouchUsersReportData(getTenantId()));
}

@ApiOperation("查询触达用户数数据列表")
@GetMapping("/touchUsersDataList")
public ResultData touchUsersDataList(@ModelAttribute MarkingCouponDataReportDto markingCouponDataReportDto) {
return new ResultData(markingDataReportService.getTouchUsersReportList(getTenantId(),markingCouponDataReportDto));
} }






+ 13
- 3
mallinkService/src/main/java/com/simple/domain/po/WxUserVisit.java Datei anzeigen

@@ -39,9 +39,12 @@ public class WxUserVisit implements Serializable {
public void setIds(List<Long> ids) { public void setIds(List<Long> ids) {
this.ids = ids; this.ids = ids;
} }


/*租户ID**/
@io.swagger.annotations.ApiModelProperty(value="租户ID",name="tenantId")
private String tenantId;

/*日期字符串**/ /*日期字符串**/
@io.swagger.annotations.ApiModelProperty(value="日期字符串",name="refDate") @io.swagger.annotations.ApiModelProperty(value="日期字符串",name="refDate")
private String refDate; private String refDate;
@@ -141,6 +144,13 @@ public class WxUserVisit implements Serializable {
public void setCreateDate(Date _createDate) { public void setCreateDate(Date _createDate) {
createDate = _createDate; createDate = _createDate;
} }
public String getTenantId() {
return tenantId;
}

public void setTenantId(String tenantId) {
this.tenantId = tenantId;
}








+ 5
- 0
mallinkService/src/main/java/com/simple/mapper/WxCouponOrderMapper.java Datei anzeigen

@@ -3,6 +3,7 @@ package com.simple.mapper;
import java.util.*; import java.util.*;
import com.simple.common.CommonMapper; import com.simple.common.CommonMapper;
import com.simple.domain.vo.MarkingCouponDataReportVo; import com.simple.domain.vo.MarkingCouponDataReportVo;
import com.simple.domain.vo.TouchUsersReportVo;
import com.simple.domain.vo.WxCouponOrderBVo; import com.simple.domain.vo.WxCouponOrderBVo;
import com.simple.domain.vo.WxCouponOrderCVo; import com.simple.domain.vo.WxCouponOrderCVo;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
@@ -24,10 +25,14 @@ public interface WxCouponOrderMapper extends CommonMapper<WxCouponOrder, Long> {
List<WxCouponOrderCVo> findListOfCUser(WxCouponOrder wxCouponOrder); List<WxCouponOrderCVo> findListOfCUser(WxCouponOrder wxCouponOrder);
List<WxCouponOrderCVo> findListOfAdmin(WxCouponOrder wxCouponOrder); List<WxCouponOrderCVo> findListOfAdmin(WxCouponOrder wxCouponOrder);


//营销报表 券数据图表
List<MarkingCouponDataReportVo> couponDataMap(HashMap<String,Object> params); List<MarkingCouponDataReportVo> couponDataMap(HashMap<String,Object> params);


//营销报表 券数据报表
List<MarkingCouponDataReportVo> couponDataList(HashMap<String,Object> params); //返回日期格式yy-MM-dd List<MarkingCouponDataReportVo> couponDataList(HashMap<String,Object> params); //返回日期格式yy-MM-dd


//营销报表 触达用户数
List<TouchUsersReportVo> touchUsersReportList(HashMap<String,Object> params); //返回日期格式yy-MM-dd




/** /**


+ 3
- 0
mallinkService/src/main/java/com/simple/mapper/WxUserVisitMapper.java Datei anzeigen

@@ -2,12 +2,15 @@ package com.simple.mapper;


import java.util.*; import java.util.*;
import com.simple.common.CommonMapper; import com.simple.common.CommonMapper;
import com.simple.domain.vo.TouchUsersReportVo;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import com.simple.domain.po.WxUserVisit; import com.simple.domain.po.WxUserVisit;


public interface WxUserVisitMapper extends CommonMapper<WxUserVisit, Long> { public interface WxUserVisitMapper extends CommonMapper<WxUserVisit, Long> {


List<WxUserVisit> findList(WxUserVisit wxUserVisit); List<WxUserVisit> findList(WxUserVisit wxUserVisit);

List<TouchUsersReportVo> touchUsersReportList(HashMap<String,Object> params);




+ 5
- 0
mallinkService/src/main/java/com/simple/service/MarkingDataReportService.java Datei anzeigen

@@ -4,6 +4,7 @@ import com.simple.domain.dto.MarkingCouponDataReportDto;
import com.simple.domain.vo.MarkingCouponDataReportVo; import com.simple.domain.vo.MarkingCouponDataReportVo;
import com.simple.domain.vo.MarkingSceneDataReportVo; import com.simple.domain.vo.MarkingSceneDataReportVo;
import com.simple.domain.vo.MarkingSceneDataVo; import com.simple.domain.vo.MarkingSceneDataVo;
import com.simple.domain.vo.TouchUsersReportVo;


import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@@ -19,4 +20,8 @@ public interface MarkingDataReportService {
List<MarkingCouponDataReportVo> getCouponDateList(String tenantId, MarkingCouponDataReportDto markingCouponDataReportDto); List<MarkingCouponDataReportVo> getCouponDateList(String tenantId, MarkingCouponDataReportDto markingCouponDataReportDto);


List<MarkingSceneDataVo> getSceneDataList(String tenantId, MarkingCouponDataReportDto markingCouponDataReportDto); List<MarkingSceneDataVo> getSceneDataList(String tenantId, MarkingCouponDataReportDto markingCouponDataReportDto);

List<TouchUsersReportVo> getTouchUsersReportList(String tenantId, MarkingCouponDataReportDto markingCouponDataReportDto);

List<TouchUsersReportVo> getTouchUsersReportData(String tenantId);
} }

+ 41
- 4
mallinkService/src/main/java/com/simple/service/impl/MarkingDataReportServiceImpl.java Datei anzeigen

@@ -1,12 +1,15 @@
package com.simple.service.impl; package com.simple.service.impl;


import com.simple.domain.dto.MarkingCouponDataReportDto; import com.simple.domain.dto.MarkingCouponDataReportDto;
import com.simple.domain.po.WxUserVisit;
import com.simple.domain.vo.MarkingCouponDataReportVo; import com.simple.domain.vo.MarkingCouponDataReportVo;
import com.simple.domain.vo.MarkingSceneDataReportVo; import com.simple.domain.vo.MarkingSceneDataReportVo;
import com.simple.domain.vo.MarkingSceneDataVo; import com.simple.domain.vo.MarkingSceneDataVo;
import com.simple.domain.vo.TouchUsersReportVo;
import com.simple.mapper.WxCarCmdLogMapper; import com.simple.mapper.WxCarCmdLogMapper;
import com.simple.mapper.WxCouponActionLogMapper; import com.simple.mapper.WxCouponActionLogMapper;
import com.simple.mapper.WxCouponOrderMapper; import com.simple.mapper.WxCouponOrderMapper;
import com.simple.mapper.WxUserVisitMapper;
import com.simple.service.MarkingDataReportService; import com.simple.service.MarkingDataReportService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@@ -28,6 +31,8 @@ public class MarkingDataReportServiceImpl implements MarkingDataReportService {
private WxCouponActionLogMapper wxCouponActionLogMapper; private WxCouponActionLogMapper wxCouponActionLogMapper;
@Autowired @Autowired
private WxCarCmdLogMapper wxCarCmdLogMapper; private WxCarCmdLogMapper wxCarCmdLogMapper;
@Autowired
private WxUserVisitMapper wxUserVisitMapper;


//取本月第一天 //取本月第一天
private Date getFirstDayOfMonth() { private Date getFirstDayOfMonth() {
@@ -197,7 +202,7 @@ public class MarkingDataReportServiceImpl implements MarkingDataReportService {
params.put("startTime", convertDate(markingCouponDataReportDto.getStartTime())); params.put("startTime", convertDate(markingCouponDataReportDto.getStartTime()));
params.put("endTime", convertDateAndAdd(convertDate(markingCouponDataReportDto.getEndTime()), 1)); params.put("endTime", convertDateAndAdd(convertDate(markingCouponDataReportDto.getEndTime()), 1));
//停车发券数 停车发券被核销数 核销发券数 核销发券被核销数 //停车发券数 停车发券被核销数 核销发券数 核销发券被核销数
List<MarkingSceneDataReportVo> templist = wxCouponActionLogMapper.sceneDataMap(params);
List<MarkingSceneDataReportVo> templist = wxCouponActionLogMapper.sceneDataList(params);


List<MarkingSceneDataVo> list = new ArrayList<>(); List<MarkingSceneDataVo> list = new ArrayList<>();
for (MarkingSceneDataReportVo temp: templist) { for (MarkingSceneDataReportVo temp: templist) {
@@ -208,6 +213,7 @@ public class MarkingDataReportServiceImpl implements MarkingDataReportService {
}else{ }else{
vo.setSendCount(temp.getVerifySendCount()); vo.setSendCount(temp.getVerifySendCount());
} }
list.add(vo);
} }




@@ -255,16 +261,47 @@ public class MarkingDataReportServiceImpl implements MarkingDataReportService {
return list; return list;
} }


public Map<String, Object> getTouchUsersReport(String tenantId, MarkingCouponDataReportDto markingCouponDataReportDto){
@Override
public List<TouchUsersReportVo> getTouchUsersReportList(String tenantId, MarkingCouponDataReportDto markingCouponDataReportDto){
//获取领取人数 //获取领取人数
//获取领取量 //获取领取量
//获取核销人数 //获取核销人数
//核销量 //核销量
HashMap<String, Object> params = new HashMap<>();
params.put("tenantId", tenantId);
params.put("startTime", convertDate(markingCouponDataReportDto.getStartTime()));
params.put("endTime", convertDateAndAdd(convertDate(markingCouponDataReportDto.getEndTime()), 1));
List<TouchUsersReportVo> couponDatalist = wxCouponOrderMapper.touchUsersReportList(params);

//查询UV PV
HashMap<String, Object> params1 = new HashMap<>();
params1.put("tenantId", tenantId);
params1.put("startTime", convertDate(markingCouponDataReportDto.getStartTime()));
params1.put("endTime", convertDateAndAdd(convertDate(markingCouponDataReportDto.getEndTime()), 1));
List<TouchUsersReportVo> wxUserVisitList = wxUserVisitMapper.touchUsersReportList(params1);
Map<String,TouchUsersReportVo> visitMap = wxUserVisitList.stream().collect(Collectors.toMap(TouchUsersReportVo::getxTime, p -> p));
for (TouchUsersReportVo temp:couponDatalist) {
if(visitMap.get(temp.getxTime())!=null){
temp.setUv(visitMap.get(temp.getxTime()).getUv());
temp.setPv(visitMap.get(temp.getxTime()).getPv());
}
}
return couponDatalist;
}

@Override
public List<TouchUsersReportVo> getTouchUsersReportData(String tenantId){
//查询UV PV
HashMap<String, Object> params = new HashMap<>();
params.put("tenantId", tenantId);
params.put("startTime", getFirstDayOfMonth());
params.put("endTime", addDay(1));
List<TouchUsersReportVo> wxUserVisitList = wxUserVisitMapper.touchUsersReportList(params);
return wxUserVisitList;


return null;
} }



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


+ 8
- 0
mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml Datei anzeigen

@@ -390,6 +390,14 @@
from wx_coupon_order where tenant_id=#{tenantId} AND create_date &gt;= #{startTime} and create_date &lt;= #{endTime} GROUP BY createTime from wx_coupon_order where tenant_id=#{tenantId} AND create_date &gt;= #{startTime} and create_date &lt;= #{endTime} GROUP BY createTime
</select> </select>


<select id="touchUsersReportList" resultType="com.simple.domain.vo.TouchUsersReportVo" parameterType="hashmap">
SELECT DATE_FORMAT(create_date,'%Y-%m-%d') as xTime
,COUNT(DISTINCT c_user_id) as userCount,count(*) as couponCount
,(select Count(*) from wx_coupon_order c where coupon_order_status=1 AND DATE_FORMAT(create_date,'%Y-%m-%d')=xTime and tenant_id=#{tenantId} AND c.update_date &gt;= #{startTime} and c.update_date &lt;= #{endTime}) as verifyCount
,(select Count(DISTINCT c_user_id) from wx_coupon_order d where coupon_order_status=1 AND DATE_FORMAT(create_date,'%Y-%m-%d')=xTime and tenant_id=#{tenantId} AND d.update_date &gt;= #{startTime} and d.update_date &lt;= #{endTime}) as verifyUserCount
from wx_coupon_order where tenant_id=#{tenantId} AND create_date &gt;= #{startTime} and create_date &lt;= #{endTime} GROUP BY xTime
</select>









+ 12
- 2
mallinkService/src/main/resources/mapper/WxUserVisitMapper.xml Datei anzeigen

@@ -3,6 +3,7 @@
<mapper namespace="com.simple.mapper.WxUserVisitMapper"> <mapper namespace="com.simple.mapper.WxUserVisitMapper">
<resultMap id="BaseResultMap" type="com.simple.domain.po.WxUserVisit"> <resultMap id="BaseResultMap" type="com.simple.domain.po.WxUserVisit">
<id column="id" jdbcType="BIGINT" property="id" /> <id column="id" jdbcType="BIGINT" property="id" />
<result column="tenant_id" jdbcType="VARCHAR" property="tenantId" />
<result column="ref_date" jdbcType="VARCHAR" property="refDate" /> <result column="ref_date" jdbcType="VARCHAR" property="refDate" />
<result column="day_date" jdbcType="TIMESTAMP" property="dayDate" /> <result column="day_date" jdbcType="TIMESTAMP" property="dayDate" />
<result column="session_cnt" jdbcType="INTEGER" property="sessionCnt" /> <result column="session_cnt" jdbcType="INTEGER" property="sessionCnt" />
@@ -17,7 +18,7 @@
</resultMap> </resultMap>
<sql id="allColumns"> <sql id="allColumns">
`id`,`ref_date`,`day_date`,`session_cnt`,`visit_pv`,`visit_uv`,`visit_uv_new`,`stay_time_uv`,`stay_time_session`,`visit_depth`,`app_id`,`create_date`
`id`,`tenant_id`,`ref_date`,`day_date`,`session_cnt`,`visit_pv`,`visit_uv`,`visit_uv_new`,`stay_time_uv`,`stay_time_session`,`visit_depth`,`app_id`,`create_date`
</sql> </sql>


<sql id="dynamicWhereConditions"> <sql id="dynamicWhereConditions">
@@ -26,7 +27,11 @@
<if test=" null != id "> <if test=" null != id ">
and `id` = #{id} and `id` = #{id}
</if>
</if>
<if test=" null != tenantId ">
and `tenant_id` like concat('%', #{tenantId},'%')

</if>
<if test=" null != refDate "> <if test=" null != refDate ">
and `ref_date` like concat('%', #{refDate},'%') and `ref_date` like concat('%', #{refDate},'%')
@@ -95,6 +100,11 @@
select <include refid="allColumns" /> from wx_user_visit select <include refid="allColumns" /> from wx_user_visit
<include refid="dynamicWhereConditions" /> <include refid="dynamicWhereConditions" />
</select> </select>

<select id="touchUsersReportList" resultType="com.simple.domain.vo.TouchUsersReportVo" parameterType="hashmap">
SELECT DATE_FORMAT(day_date,'%Y-%m-%d') as xTime,visit_pv as pv,visit_uv as uv
from wx_user_visit where tenant_id=#{tenantId} AND day_date &gt;= #{startTime} and day_date &lt;= #{endTime} order by day_date ASC
</select>


Laden…
Abbrechen
Speichern