From f97f81f5c118240183d5731745b243dd312c6a7c Mon Sep 17 00:00:00 2001
From: zxl <763096477@qq.com>
Date: 星期五, 22 八月 2025 10:30:42 +0800
Subject: [PATCH] 抽奖活动
---
framework/src/main/java/cn/lili/modules/member/serviceimpl/FootprintServiceImpl.java | 82 ++++++++++++++++++++++++++++++++++++++--
1 files changed, 77 insertions(+), 5 deletions(-)
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 595e162..b786b99 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
@@ -4,24 +4,31 @@
import cn.lili.common.security.context.UserContext;
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.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.mybatis.util.PageUtil;
+import cn.lili.utils.COSUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
-import java.util.Date;
-import java.util.List;
-import java.util.Objects;
-import java.util.Optional;
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
@@ -37,6 +44,12 @@
@Autowired
private GoodsSkuService goodsSkuService;
+
+ @Autowired
+ private VideoMapper videoMapper;
+
+ @Autowired
+ private COSUtil cOSUtil;
@Override
public FootPrint saveFootprint(FootPrint footPrint) {
@@ -66,7 +79,6 @@
Page<FootPrint> footPrintPages = this.page(PageUtil.initPage(params), params.queryWrapper());
//瀹氫箟缁撴灉
Page<EsGoodsIndex> esGoodsIndexIPage = new Page<>();
-
if (footPrintPages.getRecords() != null && !footPrintPages.getRecords().isEmpty()) {
List<String> skuIds = footPrintPages.getRecords().stream().map(FootPrint::getSkuId).collect(Collectors.toList());
List<GoodsSku> goodsSkuByIdFromCache = goodsSkuService.getGoodsSkuByIdFromCache(skuIds);
@@ -94,6 +106,61 @@
}
@Override
+ public Result videoFootPrintPage(FootPrintQuery query) {
+ IPage<VideoFootVO> page = cn.lili.utils.PageUtil.getPage(query,VideoFootVO.class);
+ videoMapper.videoFootPage(page,query);
+
+ VideoFootInfoVo videoFootInfoVo = videoMapper.getVideoFootInfo(query.getMemberId());
+
+ for (VideoFootVO videoFootVO : page.getRecords()) {
+ videoFootVO.setCoverCOSUrl(cOSUtil.getPreviewUrl(videoFootVO.getCoverUrl()));
+ //璁$畻鎾斁杩涘害
+ if(videoFootVO.getPlayAt() == null || videoFootVO.getPlayAt().isEmpty()){
+ videoFootVO.setPlayProgress(0.0);
+ continue;
+ }
+
+ BigDecimal value = BigDecimal.valueOf(Double.parseDouble(videoFootVO.getPlayAt()) / videoFootVO.getVideoDuration())
+ .setScale(2, RoundingMode.HALF_UP);
+
+ if (value.compareTo(BigDecimal.ONE) > 0) {
+ // 杩欓噷鍙互娣诲姞澶勭悊閫昏緫锛屾瘮濡傦細鑷姩淇涓�1.0
+ value = BigDecimal.ONE;
+ }
+
+ videoFootVO.setPlayProgress(value.doubleValue());
+ }
+
+ HashMap<String,Object> map = new HashMap<>();
+ map.put("data", page.getRecords());
+ map.put("total", page.getTotal());
+ if (videoFootInfoVo == null) {
+ map.put("avgProgress",0);
+ map.put("totalDuration",0);
+ }else {
+ map.put("avgProgress",videoFootInfoVo.getAvgCompletionRate());
+ map.put("totalDuration",videoFootInfoVo.getTotalDuration());
+ }
+ return Result.ok().data(map);
+ }
+
+ @Override
+ public Result memberActionAnalyse(String id){
+ //瑙嗛鍒嗙被
+ List<VideoFootVO> list = videoMapper.videoFoot(id);
+ Map<String, Long> tagCountMap = list.stream()
+ .flatMap(video -> video.getTagList().stream()) // 灞曞紑鎵�鏈� tag
+ .filter(Objects::nonNull) // 杩囨护 null
+ .collect(Collectors.groupingBy(
+ SimpleVideoTagVO::getTagName, // 鎸� tagName 鍒嗙粍
+ Collectors.counting() // 璁$畻姣忎釜 tagName 鍑虹幇鐨勬鏁�
+ ));
+
+ return Result.ok().data(tagCountMap);
+ }
+
+
+ @Override
public long getFootprintNum() {
LambdaQueryWrapper<FootPrint> lambdaQueryWrapper = Wrappers.lambdaQuery();
lambdaQueryWrapper.eq(FootPrint::getMemberId, Objects.requireNonNull(UserContext.getCurrentUser()).getId());
@@ -101,4 +168,9 @@
return this.count(lambdaQueryWrapper);
}
+
+
+
}
+
+
--
Gitblit v1.8.0