You've already forked FrameTour-BE
后台景区端趋势图
This commit is contained in:
@ -150,4 +150,9 @@ public class ScenicController {
|
||||
query.setScenicId(scenicId);
|
||||
return appStatisticsService.userConversionFunnel(query);
|
||||
}
|
||||
@PostMapping("/{scenicId}/orderChart")
|
||||
public ApiResponse getOrderChart(@PathVariable("scenicId") Long scenicId, @RequestBody CommonQueryReq query) {
|
||||
query.setScenicId(scenicId);
|
||||
return appStatisticsService.orderChart(query);
|
||||
}
|
||||
}
|
||||
|
@ -7,6 +7,7 @@ import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
@ -97,4 +98,8 @@ public interface StatisticsMapper {
|
||||
|
||||
List<AppStatisticsFunnelVO> listStatByScenic(Long scenicId, Date startTime, Date endTime);
|
||||
int insertStat(Long scenicId, Date date, AppStatisticsFunnelVO data);
|
||||
|
||||
List<HashMap<String, String>> orderChartByDate(CommonQueryReq query);
|
||||
|
||||
List<HashMap<String, String>> orderChartByHour(CommonQueryReq query);
|
||||
}
|
||||
|
@ -23,4 +23,6 @@ public interface AppStatisticsService {
|
||||
ApiResponse<AppStatisticsFunnelVO> userConversionFunnel(CommonQueryReq query);
|
||||
|
||||
ApiResponse<String> addStatistics(StatisticsRecordAddReq req);
|
||||
|
||||
ApiResponse orderChart(CommonQueryReq query);
|
||||
}
|
||||
|
@ -1,6 +1,7 @@
|
||||
package com.ycwl.basic.service.mobile.impl;
|
||||
|
||||
import cn.hutool.core.date.DateField;
|
||||
import cn.hutool.core.date.DateUnit;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
@ -25,6 +26,7 @@ import java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
||||
import java.text.DecimalFormat;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
@ -313,6 +315,27 @@ public class AppStatisticsServiceImpl implements AppStatisticsService {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public ApiResponse orderChart(CommonQueryReq query) {
|
||||
if(query.getEndTime()==null && query.getStartTime()==null){
|
||||
// 没有传时间,则代表用户没有自定义查询时间,使用standard来判断查询时间范围
|
||||
Integer standard = query.getStandard();
|
||||
if(standard==null){
|
||||
query.setStandard(0);
|
||||
}
|
||||
//获取当前周期的具体时间范围
|
||||
standardToNewSpecificTime(query);
|
||||
}
|
||||
if (DateUtil.between(query.getStartTime(), query.getEndTime(), DateUnit.DAY) <= 2) {
|
||||
// 如果是同一天
|
||||
List<HashMap<String, String>> hashMaps = statisticsMapper.orderChartByHour(query);
|
||||
return ApiResponse.success(hashMaps);
|
||||
} else {
|
||||
List<HashMap<String, String>> hashMaps = statisticsMapper.orderChartByDate(query);
|
||||
return ApiResponse.success(hashMaps);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param num1
|
||||
|
@ -318,6 +318,174 @@
|
||||
WHERE scenic_id = #{scenicId}
|
||||
AND date BETWEEN #{startTime} AND #{endTime}
|
||||
</select>
|
||||
<select id="orderChartByDate" resultType="java.util.HashMap">
|
||||
SELECT
|
||||
DATE(date_series.DATE) as t,
|
||||
COALESCE ( count( `order`.id ), 0 ) AS count,
|
||||
COALESCE ( sum( `order`.pay_price ), 0 ) AS price
|
||||
FROM
|
||||
(
|
||||
SELECT
|
||||
DATE_ADD( #{startTime}, INTERVAL ( units.i + tens.i * 10 + hundreds.i * 100 ) DAY ) AS DATE
|
||||
FROM
|
||||
(
|
||||
SELECT
|
||||
0 AS i UNION ALL
|
||||
SELECT
|
||||
1 UNION ALL
|
||||
SELECT
|
||||
2 UNION ALL
|
||||
SELECT
|
||||
3 UNION ALL
|
||||
SELECT
|
||||
4 UNION ALL
|
||||
SELECT
|
||||
5 UNION ALL
|
||||
SELECT
|
||||
6 UNION ALL
|
||||
SELECT
|
||||
7 UNION ALL
|
||||
SELECT
|
||||
8 UNION ALL
|
||||
SELECT
|
||||
9
|
||||
) units
|
||||
CROSS JOIN (
|
||||
SELECT
|
||||
0 AS i UNION ALL
|
||||
SELECT
|
||||
1 UNION ALL
|
||||
SELECT
|
||||
2 UNION ALL
|
||||
SELECT
|
||||
3 UNION ALL
|
||||
SELECT
|
||||
4 UNION ALL
|
||||
SELECT
|
||||
5 UNION ALL
|
||||
SELECT
|
||||
6 UNION ALL
|
||||
SELECT
|
||||
7 UNION ALL
|
||||
SELECT
|
||||
8 UNION ALL
|
||||
SELECT
|
||||
9
|
||||
) tens
|
||||
CROSS JOIN (
|
||||
SELECT
|
||||
0 AS i UNION ALL
|
||||
SELECT
|
||||
1 UNION ALL
|
||||
SELECT
|
||||
2 UNION ALL
|
||||
SELECT
|
||||
3 UNION ALL
|
||||
SELECT
|
||||
4 UNION ALL
|
||||
SELECT
|
||||
5 UNION ALL
|
||||
SELECT
|
||||
6 UNION ALL
|
||||
SELECT
|
||||
7 UNION ALL
|
||||
SELECT
|
||||
8 UNION ALL
|
||||
SELECT
|
||||
9
|
||||
) hundreds
|
||||
WHERE
|
||||
DATE_ADD( #{startTime}, INTERVAL ( units.i + tens.i * 10 + hundreds.i * 100 ) DAY ) <= #{endTime}
|
||||
) date_series
|
||||
LEFT JOIN `order` ON DATE ( `order`.create_at ) = date_series.DATE AND `order`.scenic_id = #{scenicId} AND ( `order`.STATUS = 1 OR `order`.STATUS = 2 )
|
||||
GROUP BY
|
||||
date_series.DATE
|
||||
ORDER BY date_series.DATE
|
||||
</select>
|
||||
<select id="orderChartByHour" resultType="java.util.HashMap">
|
||||
SELECT
|
||||
date_series.HOUR as t,
|
||||
COALESCE ( count( `order`.id ), 0 ) AS count,
|
||||
COALESCE ( sum( `order`.pay_price ), 0 ) AS price
|
||||
FROM
|
||||
(
|
||||
SELECT
|
||||
DATE_FORMAT( DATE_ADD( #{startTime}, INTERVAL ( units.i + tens.i * 10 + hundreds.i * 100 ) HOUR ), '%m-%d %H') AS HOUR
|
||||
FROM
|
||||
(
|
||||
SELECT
|
||||
0 AS i UNION ALL
|
||||
SELECT
|
||||
1 UNION ALL
|
||||
SELECT
|
||||
2 UNION ALL
|
||||
SELECT
|
||||
3 UNION ALL
|
||||
SELECT
|
||||
4 UNION ALL
|
||||
SELECT
|
||||
5 UNION ALL
|
||||
SELECT
|
||||
6 UNION ALL
|
||||
SELECT
|
||||
7 UNION ALL
|
||||
SELECT
|
||||
8 UNION ALL
|
||||
SELECT
|
||||
9
|
||||
) units
|
||||
CROSS JOIN (
|
||||
SELECT
|
||||
0 AS i UNION ALL
|
||||
SELECT
|
||||
1 UNION ALL
|
||||
SELECT
|
||||
2 UNION ALL
|
||||
SELECT
|
||||
3 UNION ALL
|
||||
SELECT
|
||||
4 UNION ALL
|
||||
SELECT
|
||||
5 UNION ALL
|
||||
SELECT
|
||||
6 UNION ALL
|
||||
SELECT
|
||||
7 UNION ALL
|
||||
SELECT
|
||||
8 UNION ALL
|
||||
SELECT
|
||||
9
|
||||
) tens
|
||||
CROSS JOIN (
|
||||
SELECT
|
||||
0 AS i UNION ALL
|
||||
SELECT
|
||||
1 UNION ALL
|
||||
SELECT
|
||||
2 UNION ALL
|
||||
SELECT
|
||||
3 UNION ALL
|
||||
SELECT
|
||||
4 UNION ALL
|
||||
SELECT
|
||||
5 UNION ALL
|
||||
SELECT
|
||||
6 UNION ALL
|
||||
SELECT
|
||||
7 UNION ALL
|
||||
SELECT
|
||||
8 UNION ALL
|
||||
SELECT
|
||||
9
|
||||
) hundreds
|
||||
WHERE
|
||||
DATE_ADD( #{startTime}, INTERVAL ( units.i + tens.i * 10 + hundreds.i * 100 ) HOUR ) <= #{endTime}
|
||||
) date_series
|
||||
LEFT JOIN `order` ON DATE_FORMAT( `order`.create_at, '%m-%d %H' ) = date_series.HOUR AND `order`.scenic_id = #{scenicId} AND ( `order`.STATUS = 1 OR `order`.STATUS = 2 )
|
||||
GROUP BY
|
||||
date_series.HOUR
|
||||
ORDER BY date_series.HOUR
|
||||
</select>
|
||||
<insert id="insertStat">
|
||||
REPLACE INTO scenic_stats (scenic_id, date, cs1, v1, sv1, u1, m1, gv1, gv2, pv1, pv2, cp1, o1, o2, o3, ro2, ro3)
|
||||
VALUES (#{scenicId}, #{date}, #{data.cameraShotOfMemberNum}, #{data.totalVisitorOfMemberNum}, #{data.scanCodeVisitorOfMemberNum}, #{data.uploadFaceOfMemberNum}, #{data.pushOfMemberNum}, #{data.completeVideoOfMemberNum}, #{data.completeOfVideoNum}, #{data.previewVideoOfMemberNum}, #{data.previewOfVideoNum}, #{data.clickOnPayOfMemberNum}, #{data.payOfMemberNum}, #{data.payOfOrderNum}, #{data.payOfOrderAmount}, #{data.refundOfOrderNum}, #{data.refundOfOrderAmount})
|
||||
|
Reference in New Issue
Block a user