From 076c7f1df538ed9c04701ebda3f6fe11c47e91e4 Mon Sep 17 00:00:00 2001 From: zxl <763096477@qq.com> Date: 星期四, 25 九月 2025 17:16:11 +0800 Subject: [PATCH] 订单统计 --- framework/src/main/java/cn/lili/modules/lmk/domain/vo/VideoViewCompletionRateVO.java | 22 +++ framework/src/main/java/cn/lili/modules/member/serviceimpl/FootprintServiceImpl.java | 152 +++++++++++++++++++++ framework/src/main/java/cn/lili/modules/order/order/service/OrderService.java | 2 framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderServiceImpl.java | 91 ++++++++++++ framework/src/main/java/cn/lili/modules/member/mapper/FootprintMapper.java | 67 +++++++++ framework/src/main/java/cn/lili/modules/statistics/entity/dto/StatisticsQueryParam.java | 6 manager-api/src/main/java/cn/lili/controller/lmk/StatisticsController.java | 19 ++ framework/src/main/java/cn/lili/modules/order/order/mapper/OrderMapper.java | 14 ++ framework/src/main/java/cn/lili/modules/member/service/FootprintService.java | 2 9 files changed, 369 insertions(+), 6 deletions(-) diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/vo/VideoViewCompletionRateVO.java b/framework/src/main/java/cn/lili/modules/lmk/domain/vo/VideoViewCompletionRateVO.java new file mode 100644 index 0000000..6ee9b34 --- /dev/null +++ b/framework/src/main/java/cn/lili/modules/lmk/domain/vo/VideoViewCompletionRateVO.java @@ -0,0 +1,22 @@ +package cn.lili.modules.lmk.domain.vo; + + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * lmk-shop-java + * + * @author : zxl + * @date : 2025-09-25 15:36 + **/ +@Data +@NoArgsConstructor +@AllArgsConstructor +public class VideoViewCompletionRateVO { + private String complete_rate; + + private Long total_views; + +} diff --git a/framework/src/main/java/cn/lili/modules/member/mapper/FootprintMapper.java b/framework/src/main/java/cn/lili/modules/member/mapper/FootprintMapper.java index f1897f4..d8af27e 100644 --- a/framework/src/main/java/cn/lili/modules/member/mapper/FootprintMapper.java +++ b/framework/src/main/java/cn/lili/modules/member/mapper/FootprintMapper.java @@ -3,6 +3,12 @@ import cn.lili.modules.member.entity.dos.FootPrint; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Delete; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.Date; +import java.util.List; +import java.util.Map; /** * 娴忚鍘嗗彶鏁版嵁澶勭悊灞� @@ -32,4 +38,65 @@ "WHERE li_foot_print.member_id = ${memberId} AND latest_footprints.id IS NULL; ") void deleteLastFootPrint(String memberId); + + @Select("SELECT " + + "lfp.ref_id AS GoodsId, " + + "lg.goods_name AS GoodsName, "+ + "COUNT(*) AS view_count " + + "FROM li_foot_print lfp " + + "LEFT JOIN li_goods lg ON lfp.ref_id = lg.id " + + "WHERE lfp.delete_flag = 0 " + + "AND lfp.create_time BETWEEN #{startTime} AND #{endTime} " + + "AND lfp.view_type = 'goods' " + + "AND lg.goods_name is not null " + + "GROUP BY lfp.ref_id " + // 鎸夊晢鍝両D鍒嗙粍 + "ORDER BY view_count DESC " + + "LIMIT #{currentLimit}" + ) + List<Map<String,Object>> selectViewAndCompletionRateCountByDay(Date startTime, + Date endTime, + Integer currentLimit); + + /** + * 鎸夎棰戠淮搴︾粺璁★細姣忎釜瑙嗛鐨勬�绘祻瑙堟暟鍜屽畬鎾巼 + * @param startTime 寮�濮嬫椂闂� + * @param endTime 缁撴潫鏃堕棿 + * @return 鍖呭惈瑙嗛ID銆佸悕绉般�佹�绘祻瑙堟暟銆佸畬鎾巼鐨勫垪琛� + */ + @Select({ + "SELECT", + " lfp.ref_id AS video_id, " + + " lmk.title, " + + " COUNT(*) AS total_views, " + + " ROUND(" + + " IF(COUNT(*) = 0, 0," + + " (SUM(" + + " CASE WHEN ( " + + " CAST(lfp.play_at AS DECIMAL(10,3)) >= CAST(lmk.video_duration AS DECIMAL(10,3)) " + + " OR " + + " CAST(lfp.play_at AS DECIMAL(10,3)) / CAST(lmk.video_duration AS DECIMAL(10,3)) > 0.9 " + + " ) THEN 1 " + + " ELSE 0 " + + " END " + + " ) / COUNT(*)) * 100 " + + " ), 2 " + + " ) AS complete_rate " + + "FROM li_foot_print lfp" + + " LEFT JOIN lmk_video lmk ON lfp.ref_id = lmk.id " + // 鎸夊疄闄呭叧鑱斿瓧娈佃皟鏁� + "WHERE " + + " lfp.delete_flag = 0", + " AND lfp.view_type = 'video' " +// 鍙粺璁¤棰戠被鍨� + " AND lfp.create_time BETWEEN #{startTime} AND #{endTime} " + + " AND lmk.video_duration > 0 " + + " AND ref_id IS NOT NULL AND lmk.title IS NOT NULL "+ + "GROUP BY lfp.ref_id "+ + "ORDER BY total_views DESC " + + "LIMIT #{currentLimit}" + }) + List<Map<String, Object>> selectEachVideoStats( + Date startTime, + Date endTime, + Integer currentLimit + ); + } \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/member/service/FootprintService.java b/framework/src/main/java/cn/lili/modules/member/service/FootprintService.java index 8dcc1f9..74673cb 100644 --- a/framework/src/main/java/cn/lili/modules/member/service/FootprintService.java +++ b/framework/src/main/java/cn/lili/modules/member/service/FootprintService.java @@ -8,6 +8,7 @@ import cn.lili.modules.member.entity.dos.FootPrint; import cn.lili.modules.member.entity.dto.FootPrintQueryParams; import cn.lili.modules.search.entity.dos.EsGoodsIndex; +import cn.lili.modules.statistics.entity.dto.StatisticsQueryParam; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; @@ -75,4 +76,5 @@ */ long getFootprintNum(); + Result getViewAndCompletionRateCount(StatisticsQueryParam queryParam); } diff --git a/framework/src/main/java/cn/lili/modules/member/serviceimpl/FootprintServiceImpl.java b/framework/src/main/java/cn/lili/modules/member/serviceimpl/FootprintServiceImpl.java index b786b99..384a3ce 100644 --- a/framework/src/main/java/cn/lili/modules/member/serviceimpl/FootprintServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/member/serviceimpl/FootprintServiceImpl.java @@ -2,19 +2,18 @@ import cn.lili.base.Result; import cn.lili.common.security.context.UserContext; +import cn.lili.common.utils.StringUtils; import cn.lili.modules.goods.entity.dos.GoodsSku; import cn.lili.modules.goods.service.GoodsSkuService; import cn.lili.modules.lmk.domain.query.FootPrintQuery; -import cn.lili.modules.lmk.domain.vo.SimpleVideoTagVO; -import cn.lili.modules.lmk.domain.vo.VideoFootInfoVo; -import cn.lili.modules.lmk.domain.vo.VideoFootVO; -import cn.lili.modules.lmk.domain.vo.VideoVO; +import cn.lili.modules.lmk.domain.vo.*; import cn.lili.modules.lmk.mapper.VideoMapper; import cn.lili.modules.member.entity.dos.FootPrint; import cn.lili.modules.member.entity.dto.FootPrintQueryParams; import cn.lili.modules.member.mapper.FootprintMapper; import cn.lili.modules.member.service.FootprintService; import cn.lili.modules.search.entity.dos.EsGoodsIndex; +import cn.lili.modules.statistics.entity.dto.StatisticsQueryParam; import cn.lili.mybatis.util.PageUtil; import cn.lili.utils.COSUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; @@ -28,6 +27,7 @@ import java.math.BigDecimal; import java.math.RoundingMode; +import java.text.SimpleDateFormat; import java.util.*; import java.util.stream.Collectors; import java.util.stream.IntStream; @@ -168,7 +168,151 @@ return this.count(lambdaQueryWrapper); } + @Override + public Result getViewAndCompletionRateCount(StatisticsQueryParam queryParam) { + Date startTime = null; + Date endTime = new Date(); // 缁撴潫鏃堕棿榛樿鏄綋鍓嶆椂闂� + List<String> dateList = new ArrayList<>(); + Calendar calendar = Calendar.getInstance(); // 鐢ㄤ簬鏃ユ湡璁$畻鐨勬棩鍘嗗疄渚� + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + int days = 0; + switch (queryParam.getSearchType()) { + case "TODAY": + // 浠婂ぉ锛氫粠浠婂ぉ0鐐瑰埌鐜板湪 + calendar.setTime(new Date()); // 閲嶇疆涓哄綋鍓嶆椂闂� + calendar.set(Calendar.HOUR_OF_DAY, 0); // 灏忔椂璁句负0锛�24灏忔椂鍒讹級 + calendar.set(Calendar.MINUTE, 0); // 鍒嗛挓璁句负0 + calendar.set(Calendar.SECOND, 0); // 绉掕涓�0 + calendar.set(Calendar.MILLISECOND, 0); // 姣璁句负0 + startTime = calendar.getTime(); // 寰楀埌浠婂ぉ0鐐圭殑Date瀵硅薄 + dateList.add(sdf.format(startTime)); + break; + case "YESTERDAY": + // 鏄ㄥぉ锛氫粠鏄ㄥぉ0鐐瑰埌鏄ㄥぉ23:59:59.999 + calendar.setTime(new Date()); + calendar.add(Calendar.DATE, -1); // 鏃ユ湡鍑�1澶╋紙鍙樹负鏄ㄥぉ锛� + + // 璁剧疆鏄ㄥぉ0鐐� + calendar.set(Calendar.HOUR_OF_DAY, 0); + calendar.set(Calendar.MINUTE, 0); + calendar.set(Calendar.SECOND, 0); + calendar.set(Calendar.MILLISECOND, 0); + startTime = calendar.getTime(); + + // 璁剧疆鏄ㄥぉ23:59:59.999 + calendar.set(Calendar.HOUR_OF_DAY, 23); + calendar.set(Calendar.MINUTE, 59); + calendar.set(Calendar.SECOND, 59); + calendar.set(Calendar.MILLISECOND, 999); + endTime = calendar.getTime(); + + dateList.add(sdf.format(startTime)); + break; + case "LAST_SEVEN": + // 杩囧幓涓冨ぉ锛氫粠7澶╁墠0鐐瑰埌鐜板湪锛堝惈浠婂ぉ鍏�7澶╋級 + calendar.setTime(new Date()); + calendar.add(Calendar.DATE, -6); // 鏃ユ湡鍑�6澶╋紙7澶╁墠鐨勪粖澶╋級 + + // 璁剧疆7澶╁墠0鐐� + calendar.set(Calendar.HOUR_OF_DAY, 0); + calendar.set(Calendar.MINUTE, 0); + calendar.set(Calendar.SECOND, 0); + calendar.set(Calendar.MILLISECOND, 0); + startTime = calendar.getTime(); + + days = 7; + // 寰幆鐢熸垚7澶╃殑鏃ユ湡瀛楃涓� + Calendar tempCalendar = Calendar.getInstance(); + tempCalendar.setTime(startTime); + for (int i = 0; i < days; i++) { + dateList.add(sdf.format(tempCalendar.getTime())); + tempCalendar.add(Calendar.DATE, 1); // 姣忓ぉ绱姞1澶� + } + break; + case "LAST_THIRTY": + // 杩囧幓30澶╋細浠�30澶╁墠0鐐瑰埌鐜板湪锛堝惈浠婂ぉ鍏�30澶╋級 + calendar.setTime(new Date()); + calendar.add(Calendar.DATE, -29); // 鏃ユ湡鍑�29澶╋紙30澶╁墠鐨勪粖澶╋級 + + // 璁剧疆30澶╁墠0鐐� + calendar.set(Calendar.HOUR_OF_DAY, 0); + calendar.set(Calendar.MINUTE, 0); + calendar.set(Calendar.SECOND, 0); + calendar.set(Calendar.MILLISECOND, 0); + startTime = calendar.getTime(); + + days = 30; + // 寰幆鐢熸垚30澶╃殑鏃ユ湡瀛楃涓� + Calendar tempCalendar30 = Calendar.getInstance(); + tempCalendar30.setTime(startTime); + for (int i = 0; i < days; i++) { + dateList.add(sdf.format(tempCalendar30.getTime())); + tempCalendar30.add(Calendar.DATE, 1); // 姣忓ぉ绱姞1澶� + } + break; + default: + return Result.error("涓嶆敮鎸佺殑鏃堕棿鑼冨洿绫诲瀷"); + } + if ("goods".equals(queryParam.getCurrentType())){ + List<Map<String, Object>> maps = baseMapper.selectViewAndCompletionRateCountByDay(startTime, endTime,queryParam.getCurrentLimit()); + Map<String,Long> viewPrintMap = maps.stream() + .collect(Collectors.toMap( + map -> { + String goodsId = Objects.toString(map.get("GoodsId"), ""); // 绌哄�煎鐞� + String goodsName = Objects.toString(map.get("GoodsName"), ""); // 绌哄�煎鐞� + return goodsName + " | " + goodsId; // 鐢▅鍒嗛殧锛屾柟渚垮悗缁媶鍒� + }, + map-> Long.valueOf(map.get("view_count").toString()), + (existing, replacement) -> existing, + LinkedHashMap::new // 鎸囧畾浣跨敤 LinkedHashMap锛屼繚鐣欐彃鍏ラ『搴� + )); + List<String> yData = new ArrayList<>(); + List<Long> xData = new ArrayList<>(); + + for (Map.Entry<String, Long> entry : viewPrintMap.entrySet()){ + yData.add(entry.getKey()); + xData.add(entry.getValue()); + } + Map<String,Object> data = new HashMap<>(); + data.put("yData", yData); + data.put("xData", xData); + return Result.ok().data(data); + }else{ + List<Map<String, Object>> maps = baseMapper.selectEachVideoStats(startTime, endTime,queryParam.getCurrentLimit()); + Map<String, VideoViewCompletionRateVO> viewPrintMap = maps.stream() + .collect(Collectors.toMap( + map -> { + String videoId = Objects.toString(map.get("video_id"), ""); // 绌哄�煎鐞� + String videoName = Objects.toString(map.get("title"), ""); // 绌哄�煎鐞� + return videoName + " | " + videoId; // 鐢▅鍒嗛殧锛屾柟渚垮悗缁媶鍒� + }, + map-> { + VideoViewCompletionRateVO vo = new VideoViewCompletionRateVO(); + vo.setTotal_views(Long.valueOf(map.get("total_views").toString())); + vo.setComplete_rate(map.get("complete_rate").toString()); + return vo; + }, + (existing, replacement) -> existing, + LinkedHashMap::new // 鎸囧畾浣跨敤 LinkedHashMap锛屼繚鐣欐彃鍏ラ『搴� + )); + List<String> yData = new ArrayList<>(); + List<Long> xData = new ArrayList<>(); + List<String> rateData = new ArrayList<>(); + + for (Map.Entry<String, VideoViewCompletionRateVO> entry : viewPrintMap.entrySet()){ + yData.add(entry.getKey()); + xData.add(entry.getValue().getTotal_views()); + rateData.add(entry.getValue().getComplete_rate()); + } + Map<String,Object> data = new HashMap<>(); + data.put("yData", yData); + data.put("xData", xData); + data.put("rateData", rateData); + return Result.ok().data(data); + } + + } } diff --git a/framework/src/main/java/cn/lili/modules/order/order/mapper/OrderMapper.java b/framework/src/main/java/cn/lili/modules/order/order/mapper/OrderMapper.java index 6b414ef..185947a 100644 --- a/framework/src/main/java/cn/lili/modules/order/order/mapper/OrderMapper.java +++ b/framework/src/main/java/cn/lili/modules/order/order/mapper/OrderMapper.java @@ -206,4 +206,18 @@ " ORDER BY " + " day ASC") List<Map<String, Object>> selectOrderCountByDay(Date startTime, Date endTime); + + @Select("SELECT " + + " DATE(create_time) AS day, " + + " HOUR(create_time) AS hour," + + " COUNT(*) AS count " + + " FROM" + + " li_order o" + + " WHERE " + + " o.create_time BETWEEN #{startTime} AND #{endTime} " + + " GROUP BY" + + " day " + + " ORDER BY " + + " day , hour ASC") + List<Map<String, Object>> selectOrderTimePeriod(Date startTime, Date endTime); } \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/order/order/service/OrderService.java b/framework/src/main/java/cn/lili/modules/order/order/service/OrderService.java index 5755e82..7b9fb68 100644 --- a/framework/src/main/java/cn/lili/modules/order/order/service/OrderService.java +++ b/framework/src/main/java/cn/lili/modules/order/order/service/OrderService.java @@ -360,4 +360,6 @@ * @return */ Result getOrderCount(StatisticsQueryParam queryParam); + + Result getOrderTimePeriod(StatisticsQueryParam queryParam); } \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderServiceImpl.java b/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderServiceImpl.java index 76fcfeb..62358bd 100644 --- a/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderServiceImpl.java @@ -1368,13 +1368,100 @@ map -> map.get("day").toString(), // 鏃ユ湡瀛楃涓诧紙濡�2023-09-19锛� map -> Long.valueOf(map.get("count").toString()) // 璁㈠崟鏁伴噺 )); - System.out.println(dayCountMap); + List<Long> orderCounts = new ArrayList<>(); for (String date : dateList) { // 鏍稿績锛氬瓨鍦ㄥ垯鍙栨煡璇㈢粨鏋滐紝涓嶅瓨鍦ㄥ垯琛�0 orderCounts.add(dayCountMap.getOrDefault(date, 0L)); } - System.out.println(orderCounts); + + + return Result.ok().data(orderCounts); + } + + @Override + public Result getOrderTimePeriod(StatisticsQueryParam queryParam) { + Date startTime = null; + Date endTime = new Date(); // 缁撴潫鏃堕棿榛樿鏄綋鍓嶆椂闂� + List<String> dateList = new ArrayList<>(); + + Calendar calendar = Calendar.getInstance(); // 鐢ㄤ簬鏃ユ湡璁$畻鐨勬棩鍘嗗疄渚� + for (int i =0;i<=24;i++){ + dateList.add(i + "鐐�"); + } + switch (queryParam.getSearchType()) { + case "TODAY": + // 浠婂ぉ锛氫粠浠婂ぉ0鐐瑰埌鐜板湪 + calendar.setTime(new Date()); // 閲嶇疆涓哄綋鍓嶆椂闂� + calendar.set(Calendar.HOUR_OF_DAY, 0); // 灏忔椂璁句负0锛�24灏忔椂鍒讹級 + calendar.set(Calendar.MINUTE, 0); // 鍒嗛挓璁句负0 + calendar.set(Calendar.SECOND, 0); // 绉掕涓�0 + calendar.set(Calendar.MILLISECOND, 0); // 姣璁句负0 + startTime = calendar.getTime(); // 寰楀埌浠婂ぉ0鐐圭殑Date瀵硅薄 + break; + case "YESTERDAY": + // 鏄ㄥぉ锛氫粠鏄ㄥぉ0鐐瑰埌鏄ㄥぉ23:59:59.999 + calendar.setTime(new Date()); + calendar.add(Calendar.DATE, -1); // 鏃ユ湡鍑�1澶╋紙鍙樹负鏄ㄥぉ锛� + + // 璁剧疆鏄ㄥぉ0鐐� + calendar.set(Calendar.HOUR_OF_DAY, 0); + calendar.set(Calendar.MINUTE, 0); + calendar.set(Calendar.SECOND, 0); + calendar.set(Calendar.MILLISECOND, 0); + startTime = calendar.getTime(); + + // 璁剧疆鏄ㄥぉ23:59:59.999 + calendar.set(Calendar.HOUR_OF_DAY, 23); + calendar.set(Calendar.MINUTE, 59); + calendar.set(Calendar.SECOND, 59); + calendar.set(Calendar.MILLISECOND, 999); + endTime = calendar.getTime(); + + break; + case "LAST_SEVEN": + // 杩囧幓涓冨ぉ锛氫粠7澶╁墠0鐐瑰埌鐜板湪锛堝惈浠婂ぉ鍏�7澶╋級 + calendar.setTime(new Date()); + calendar.add(Calendar.DATE, -6); // 鏃ユ湡鍑�6澶╋紙7澶╁墠鐨勪粖澶╋級 + + // 璁剧疆7澶╁墠0鐐� + calendar.set(Calendar.HOUR_OF_DAY, 0); + calendar.set(Calendar.MINUTE, 0); + calendar.set(Calendar.SECOND, 0); + calendar.set(Calendar.MILLISECOND, 0); + startTime = calendar.getTime(); + + break; + case "LAST_THIRTY": + // 杩囧幓30澶╋細浠�30澶╁墠0鐐瑰埌鐜板湪锛堝惈浠婂ぉ鍏�30澶╋級 + calendar.setTime(new Date()); + calendar.add(Calendar.DATE, -29); // 鏃ユ湡鍑�29澶╋紙30澶╁墠鐨勪粖澶╋級 + + // 璁剧疆30澶╁墠0鐐� + calendar.set(Calendar.HOUR_OF_DAY, 0); + calendar.set(Calendar.MINUTE, 0); + calendar.set(Calendar.SECOND, 0); + calendar.set(Calendar.MILLISECOND, 0); + startTime = calendar.getTime(); + + break; + default: + return Result.error("涓嶆敮鎸佺殑鏃堕棿鑼冨洿绫诲瀷"); + } + List<Map<String, Object>> maps = baseMapper.selectOrderTimePeriod(startTime,endTime); + + Map<String, Long> dayCountMap = maps.stream() + .collect(Collectors.toMap( + map -> map.get("day").toString(), // 鏃ユ湡瀛楃涓诧紙濡�2023-09-19锛� + map -> Long.valueOf(map.get("count").toString()) // 璁㈠崟鏁伴噺 + )); + + List<Long> orderCounts = new ArrayList<>(); + for (String date : dateList) { + // 鏍稿績锛氬瓨鍦ㄥ垯鍙栨煡璇㈢粨鏋滐紝涓嶅瓨鍦ㄥ垯琛�0 + orderCounts.add(dayCountMap.getOrDefault(date, 0L)); + } + return Result.ok().data(orderCounts); } diff --git a/framework/src/main/java/cn/lili/modules/statistics/entity/dto/StatisticsQueryParam.java b/framework/src/main/java/cn/lili/modules/statistics/entity/dto/StatisticsQueryParam.java index 1afef2c..b29c4c3 100644 --- a/framework/src/main/java/cn/lili/modules/statistics/entity/dto/StatisticsQueryParam.java +++ b/framework/src/main/java/cn/lili/modules/statistics/entity/dto/StatisticsQueryParam.java @@ -31,4 +31,10 @@ @ApiModelProperty(value = "搴楅摵ID") private String storeId; + @ApiModelProperty(value = "绫诲瀷锛氬晢鍝乬oods 銆佽棰憊ideo") + private String currentType; + + @ApiModelProperty(value = "鏄剧ず鎺掑悕锛�10,20,30") + private Integer currentLimit; + } diff --git a/manager-api/src/main/java/cn/lili/controller/lmk/StatisticsController.java b/manager-api/src/main/java/cn/lili/controller/lmk/StatisticsController.java index 54337e4..e2984b3 100644 --- a/manager-api/src/main/java/cn/lili/controller/lmk/StatisticsController.java +++ b/manager-api/src/main/java/cn/lili/controller/lmk/StatisticsController.java @@ -6,6 +6,7 @@ import cn.lili.common.vo.ResultMessage; import cn.lili.modules.lmk.domain.vo.PvUvVO; import cn.lili.modules.lmk.enums.general.StatisticsSearchTypeEnum; +import cn.lili.modules.member.service.FootprintService; import cn.lili.modules.order.order.service.OrderService; import cn.lili.modules.statistics.entity.dto.StatisticsQueryParam; import cn.lili.modules.statistics.entity.vo.PlatformViewVO; @@ -31,6 +32,8 @@ @RequestMapping("/manager/lmk/statistics") public class StatisticsController { private final OrderService orderService; + + private final FootprintService footprintService; @ApiOperation(value = "鑾峰彇pv銆乽v娴侀噺鏁版嵁 琛ㄥ崟鑾峰彇") @GetMapping("/pvUv") @@ -81,4 +84,20 @@ } + /** + * 瑙嗛/鍟嗗搧 瀹屾挱鐜囧拰娴忚閲忕粺璁� + * @param queryParam + * @return + */ + @GetMapping("/viewAndCompletionRateCount") + public Result getViewAndCompletionRateCount(StatisticsQueryParam queryParam) { + return footprintService.getViewAndCompletionRateCount(queryParam); + } + + + @GetMapping("/orderTimePeriod") + public Result getOrderTimePeriod(StatisticsQueryParam queryParam) { + return orderService.getOrderTimePeriod(queryParam); + + } } -- Gitblit v1.8.0