From 0f881d94596c7abb34edfcd87702e0155b9759b1 Mon Sep 17 00:00:00 2001 From: liujiang <569804566@qq.com> Date: Sat, 20 Sep 2025 21:20:35 +0800 Subject: [PATCH] =?UTF-8?q?master=EF=BC=9Aapp=E5=95=86=E5=93=81=E8=AE=BF?= =?UTF-8?q?=E9=97=AE=E9=87=8F=E5=8A=9F=E8=83=BD=E5=AE=8C=E5=96=84=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../xkt/StoreProductStatisticsController.java | 36 ++++++++++++++++ .../StoreProdAppViewRankResVO.java | 42 ++++++++++++++++++ sql/ry_20240629.sql | 1 + .../StoreProdAppViewRankResDTO.java | 43 +++++++++++++++++++ .../userShoppingCart/ShopCartPageResDTO.java | 2 + .../mapper/StoreProductStatisticsMapper.java | 10 ++++- .../IStoreProductStatisticsService.java | 18 ++++++++ .../service/impl/ShoppingCartServiceImpl.java | 4 +- .../StoreProductStatisticsServiceImpl.java | 37 ++++++++++++++++ .../mapper/StoreProductStatisticsMapper.xml | 24 +++++++++++ 10 files changed, 214 insertions(+), 3 deletions(-) create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/StoreProductStatisticsController.java create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/vo/StoreProductStatistics/StoreProdAppViewRankResVO.java create mode 100644 xkt/src/main/java/com/ruoyi/xkt/dto/StoreProductStatistics/StoreProdAppViewRankResDTO.java create mode 100644 xkt/src/main/java/com/ruoyi/xkt/service/IStoreProductStatisticsService.java create mode 100644 xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreProductStatisticsServiceImpl.java diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/StoreProductStatisticsController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/StoreProductStatisticsController.java new file mode 100644 index 000000000..ec1058fa0 --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/StoreProductStatisticsController.java @@ -0,0 +1,36 @@ +package com.ruoyi.web.controller.xkt; + +import cn.hutool.core.bean.BeanUtil; +import com.ruoyi.common.core.controller.BaseController; +import com.ruoyi.common.core.domain.R; +import com.ruoyi.web.controller.xkt.vo.StoreProductStatistics.StoreProdAppViewRankResVO; +import com.ruoyi.web.controller.xkt.vo.notice.NoticeResVO; +import com.ruoyi.xkt.service.IStoreProductStatisticsService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * 档口商品统计 + * + * @author ruoyi + */ +@Api(tags = "档口商品统计") +@RestController +@RequiredArgsConstructor +@RequestMapping("/rest/v1/store-prod-statistics") +public class StoreProductStatisticsController extends BaseController { + + final IStoreProductStatisticsService prodStatisticsService; + + @ApiOperation(value = "APP商品访问榜", httpMethod = "GET", response = R.class) + @GetMapping("/app/view-rank") + public R getAppViewRank() { + return R.ok(BeanUtil.toBean(prodStatisticsService.getAppViewRank(), StoreProdAppViewRankResVO.class)); + } + + +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/vo/StoreProductStatistics/StoreProdAppViewRankResVO.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/vo/StoreProductStatistics/StoreProdAppViewRankResVO.java new file mode 100644 index 000000000..9c541f489 --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/vo/StoreProductStatistics/StoreProdAppViewRankResVO.java @@ -0,0 +1,42 @@ +package com.ruoyi.web.controller.xkt.vo.StoreProductStatistics; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.experimental.Accessors; + +import java.math.BigDecimal; +import java.util.List; + +/** + * @author liujiang + * @version v1.0 + * @date 2025/3/27 15:12 + */ +@ApiModel +@Data +@Accessors(chain = true) +public class StoreProdAppViewRankResVO { + + @ApiModelProperty(value = "商品浏览量列表") + private List viewCountList; + + @Data + public static class SPAVRViewCountVO { + @ApiModelProperty(value = "档口ID") + private Long storeId; + @ApiModelProperty(value = "档口名称") + private String storeName; + @ApiModelProperty(value = "商品主图") + private String mainPicUrl; + @ApiModelProperty(value = "商品ID") + private Long storeProdId; + @ApiModelProperty(value = "商品货号") + private String prodArtNum; + @ApiModelProperty(value = "商品最低价格") + private BigDecimal price; + @ApiModelProperty(value = "商品浏览量") + private Long viewCount; + } + +} diff --git a/sql/ry_20240629.sql b/sql/ry_20240629.sql index 6b002ae14..cd78606ea 100644 --- a/sql/ry_20240629.sql +++ b/sql/ry_20240629.sql @@ -3173,6 +3173,7 @@ CREATE TABLE `store` `template_num` int UNSIGNED NULL DEFAULT NULL COMMENT '档口模板ID', `store_status` tinyint UNSIGNED NULL DEFAULT NULL COMMENT '档口状态', `stock_sys` int UNSIGNED NULL DEFAULT NULL COMMENT '库存系统', + `view_count` bigint UNSIGNED NULL DEFAULT NULL COMMENT '浏览量', `reject_reason` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '拒绝理由', `version` bigint UNSIGNED NOT NULL COMMENT '版本号', `del_flag` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '删除标志(0代表存在 2代表删除)', diff --git a/xkt/src/main/java/com/ruoyi/xkt/dto/StoreProductStatistics/StoreProdAppViewRankResDTO.java b/xkt/src/main/java/com/ruoyi/xkt/dto/StoreProductStatistics/StoreProdAppViewRankResDTO.java new file mode 100644 index 000000000..69d4b42c3 --- /dev/null +++ b/xkt/src/main/java/com/ruoyi/xkt/dto/StoreProductStatistics/StoreProdAppViewRankResDTO.java @@ -0,0 +1,43 @@ +package com.ruoyi.xkt.dto.StoreProductStatistics; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.experimental.Accessors; + +import java.math.BigDecimal; +import java.util.List; + +/** + * @author liujiang + * @version v1.0 + * @date 2025/3/27 15:12 + */ +@ApiModel +@Data +@Accessors(chain = true) +public class StoreProdAppViewRankResDTO { + + @ApiModelProperty(value = "商品浏览量列表") + private List viewCountList; + + @Data + public static class SPAVRViewCountDTO { + @ApiModelProperty(value = "档口ID") + private Long storeId; + @ApiModelProperty(value = "档口名称") + private String storeName; + @ApiModelProperty(value = "商品主图") + private String mainPicUrl; + @ApiModelProperty(value = "商品ID") + private Long storeProdId; + @ApiModelProperty(value = "商品货号") + private String prodArtNum; + @ApiModelProperty(value = "商品最低价格") + private BigDecimal price; + @ApiModelProperty(value = "商品浏览量") + private Long viewCount; + } + + +} diff --git a/xkt/src/main/java/com/ruoyi/xkt/dto/userShoppingCart/ShopCartPageResDTO.java b/xkt/src/main/java/com/ruoyi/xkt/dto/userShoppingCart/ShopCartPageResDTO.java index e5c4fb862..534bcc7b9 100644 --- a/xkt/src/main/java/com/ruoyi/xkt/dto/userShoppingCart/ShopCartPageResDTO.java +++ b/xkt/src/main/java/com/ruoyi/xkt/dto/userShoppingCart/ShopCartPageResDTO.java @@ -32,6 +32,8 @@ public class ShopCartPageResDTO { private String prodTitle; @ApiModelProperty(value = "商品状态") private String prodStatus; + @ApiModelProperty(value = "标注尺码") + private String standardSize; @ApiModelProperty(value = "进货车明细列表") List detailList; diff --git a/xkt/src/main/java/com/ruoyi/xkt/mapper/StoreProductStatisticsMapper.java b/xkt/src/main/java/com/ruoyi/xkt/mapper/StoreProductStatisticsMapper.java index c23230fa8..459a0a6d5 100644 --- a/xkt/src/main/java/com/ruoyi/xkt/mapper/StoreProductStatisticsMapper.java +++ b/xkt/src/main/java/com/ruoyi/xkt/mapper/StoreProductStatisticsMapper.java @@ -2,6 +2,7 @@ package com.ruoyi.xkt.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.xkt.domain.StoreProductStatistics; +import com.ruoyi.xkt.dto.StoreProductStatistics.StoreProdAppViewRankResDTO; import com.ruoyi.xkt.dto.dailyStoreTag.DailyStoreTagDTO; import com.ruoyi.xkt.dto.picture.ProductImgSearchCountDTO; import org.apache.ibatis.annotations.Param; @@ -44,5 +45,12 @@ public interface StoreProductStatisticsMapper extends BaseMapper downloadTop10Prod(@Param("oneMonthAgo") Date oneMonthAgo, @Param("yesterday") Date yesterday); - + /** + * 筛选近三月APP商品浏览量前10 + * + * @param threeMonthAgo 三月前 + * @param yesterday 昨天 + * @return List + */ + List selectTop10ProdViewCount(@Param("threeMonthAgo") Date threeMonthAgo, @Param("yesterday") Date yesterday); } diff --git a/xkt/src/main/java/com/ruoyi/xkt/service/IStoreProductStatisticsService.java b/xkt/src/main/java/com/ruoyi/xkt/service/IStoreProductStatisticsService.java new file mode 100644 index 000000000..a509b179b --- /dev/null +++ b/xkt/src/main/java/com/ruoyi/xkt/service/IStoreProductStatisticsService.java @@ -0,0 +1,18 @@ +package com.ruoyi.xkt.service; + +import com.ruoyi.xkt.dto.StoreProductStatistics.StoreProdAppViewRankResDTO; + +/** + * 档口商品统计 服务层 + * + * @author ruoyi + */ +public interface IStoreProductStatisticsService { + + /** + * 档口商品访问榜 + * + * @return StoreProdAppViewRankResDTO + */ + StoreProdAppViewRankResDTO getAppViewRank(); +} diff --git a/xkt/src/main/java/com/ruoyi/xkt/service/impl/ShoppingCartServiceImpl.java b/xkt/src/main/java/com/ruoyi/xkt/service/impl/ShoppingCartServiceImpl.java index 7cd9c12fb..618911295 100644 --- a/xkt/src/main/java/com/ruoyi/xkt/service/impl/ShoppingCartServiceImpl.java +++ b/xkt/src/main/java/com/ruoyi/xkt/service/impl/ShoppingCartServiceImpl.java @@ -128,11 +128,11 @@ public class ShoppingCartServiceImpl implements IShoppingCartService { sizes -> sizes.stream().sorted().map(String::valueOf).collect(Collectors.joining(","))))); shoppingCartList.forEach(x -> { x.setMainPicUrl(mainPicMap.getOrDefault(x.getStoreProdId(), null)); + x.setStandardSize(prodStandardSizeMap.getOrDefault(x.getStoreProdId(), "")); x.getDetailList() .forEach(detail -> { StoreProductColorSize prodColorSize = priceSizeMap.get(x.getStoreProdId().toString() + detail.getStoreColorId().toString() + detail.getSize()); - detail.setStandardSize(prodStandardSizeMap.getOrDefault(x.getStoreProdId(), "")) - .setAmount((ObjectUtils.isNotEmpty(prodColorSize) + detail.setAmount((ObjectUtils.isNotEmpty(prodColorSize) ? prodColorSize.getPrice() : BigDecimal.ZERO).multiply(new BigDecimal(detail.getQuantity()))) .setPrice(ObjectUtils.isNotEmpty(prodColorSize) ? prodColorSize.getPrice() : null) .setStoreProdColorSizeId(ObjectUtils.isNotEmpty(prodColorSize) ? prodColorSize.getId() : null); diff --git a/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreProductStatisticsServiceImpl.java b/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreProductStatisticsServiceImpl.java new file mode 100644 index 000000000..53db25b56 --- /dev/null +++ b/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreProductStatisticsServiceImpl.java @@ -0,0 +1,37 @@ +package com.ruoyi.xkt.service.impl; + +import com.ruoyi.xkt.dto.StoreProductStatistics.StoreProdAppViewRankResDTO; +import com.ruoyi.xkt.mapper.StoreProductStatisticsMapper; +import com.ruoyi.xkt.service.IStoreProductStatisticsService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.time.LocalDate; +import java.util.Date; + +/** + * 档口商品统计 服务层实现 + * + * @author ruoyi + */ +@Service +@RequiredArgsConstructor +public class StoreProductStatisticsServiceImpl implements IStoreProductStatisticsService { + + final StoreProductStatisticsMapper prodStatisticsMapper; + + /** + * 档口商品访问榜 + * + * @return StoreProdAppViewRankResDTO + */ + @Override + @Transactional(readOnly = true) + public StoreProdAppViewRankResDTO getAppViewRank() { + final Date yesterday = java.sql.Date.valueOf(LocalDate.now().minusDays(1)); + final Date threeMonthAgo = java.sql.Date.valueOf(LocalDate.now().minusDays(1).minusMonths(3)); + return new StoreProdAppViewRankResDTO().setViewCountList(prodStatisticsMapper.selectTop10ProdViewCount(threeMonthAgo, yesterday)); + } + +} diff --git a/xkt/src/main/resources/mapper/StoreProductStatisticsMapper.xml b/xkt/src/main/resources/mapper/StoreProductStatisticsMapper.xml index c2830cfcb..693b98502 100644 --- a/xkt/src/main/resources/mapper/StoreProductStatisticsMapper.xml +++ b/xkt/src/main/resources/mapper/StoreProductStatisticsMapper.xml @@ -57,5 +57,29 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" LIMIT 10 + + \ No newline at end of file