Bladeren bron

Merge branch 'dev/2024/0417/update-admin' of Harper/feifan-backend-zx-admin into master

添加人员的积分和收藏
Yangzw 1 jaar geleden
bovenliggende
commit
2f6d409894
19 gewijzigde bestanden met toevoegingen van 125 en 34 verwijderingen
  1. 1 1
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/duser/DuserController.java
  2. 10 7
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/ptprofitlog/PtProfitLogController.java
  3. 4 3
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/ptprofitlog/vo/PtProfitLogRespVO.java
  4. 9 4
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/sharepath/SharePathController.java
  5. 26 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/sharepath/vo/SharePathTreeReqVO.java
  6. 1 3
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/dal/mysql/ptprofitlog/PtProfitLogMapper.java
  7. 1 1
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/service/duser/DuserService.java
  8. 6 9
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/service/duser/DuserServiceImpl.java
  9. 1 1
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/service/ptprofitlog/PtProfitLogService.java
  10. 8 3
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/service/ptprofitlog/PtProfitLogServiceImpl.java
  11. 1 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/service/sharepath/SharePathService.java
  12. 7 1
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/service/sharepath/SharePathServiceImpl.java
  13. 8 0
      feifan-module-mall/feifan-module-product-biz/src/main/java/cn/newfeifan/mall/module/product/controller/admin/spu/ProductSpuController.java
  14. 3 0
      feifan-module-mall/feifan-module-product-biz/src/main/java/cn/newfeifan/mall/module/product/controller/admin/spu/vo/ProductSpuPageReqVO.java
  15. 7 1
      feifan-module-mall/feifan-module-product-biz/src/main/java/cn/newfeifan/mall/module/product/dal/mysql/spu/ProductSpuMapper.java
  16. 3 0
      feifan-module-mall/feifan-module-product-biz/src/main/java/cn/newfeifan/mall/module/product/service/favorite/ProductFavoriteService.java
  17. 13 0
      feifan-module-mall/feifan-module-product-biz/src/main/java/cn/newfeifan/mall/module/product/service/favorite/ProductFavoriteServiceImpl.java
  18. 2 0
      feifan-module-mall/feifan-module-product-biz/src/main/java/cn/newfeifan/mall/module/product/service/spu/ProductSpuService.java
  19. 14 0
      feifan-module-mall/feifan-module-product-biz/src/main/java/cn/newfeifan/mall/module/product/service/spu/ProductSpuServiceImpl.java

+ 1 - 1
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/duser/DuserController.java

@@ -66,7 +66,7 @@ public class DuserController {
     @Parameter(name = "id", description = "编号", required = true, example = "1024")
     @PreAuthorize("@ss.hasPermission('distri:duser:query')")
     public CommonResult<DuserRespVO> getDuser(@RequestParam("id") Long id) {
-        DuserDO duser = duserService.getDuser(id);
+        DuserDO duser = duserService.getDuserByUser(id);
         return success(BeanUtils.toBean(duser, DuserRespVO.class));
     }
 

+ 10 - 7
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/ptprofitlog/PtProfitLogController.java

@@ -1,14 +1,15 @@
 package cn.newfeifan.mall.module.distri.controller.admin.ptprofitlog;
 
 import org.springframework.web.bind.annotation.*;
+
 import javax.annotation.Resource;
+
 import org.springframework.validation.annotation.Validated;
 import org.springframework.security.access.prepost.PreAuthorize;
 import io.swagger.v3.oas.annotations.tags.Tag;
 import io.swagger.v3.oas.annotations.Parameter;
 import io.swagger.v3.oas.annotations.Operation;
 
-import javax.validation.constraints.*;
 import javax.validation.*;
 import javax.servlet.http.*;
 import java.util.*;
@@ -18,11 +19,13 @@ import cn.newfeifan.mall.framework.common.pojo.PageParam;
 import cn.newfeifan.mall.framework.common.pojo.PageResult;
 import cn.newfeifan.mall.framework.common.pojo.CommonResult;
 import cn.newfeifan.mall.framework.common.util.object.BeanUtils;
+
 import static cn.newfeifan.mall.framework.common.pojo.CommonResult.success;
 
 import cn.newfeifan.mall.framework.excel.core.util.ExcelUtils;
 
 import cn.newfeifan.mall.framework.operatelog.core.annotations.OperateLog;
+
 import static cn.newfeifan.mall.framework.operatelog.core.enums.OperateTypeEnum.*;
 
 import cn.newfeifan.mall.module.distri.controller.admin.ptprofitlog.vo.*;
@@ -75,8 +78,9 @@ public class PtProfitLogController {
     @Operation(summary = "获得平台利润记录分页")
     @PreAuthorize("@ss.hasPermission('distri:pt-profit-log:query')")
     public CommonResult<PageResult<PtProfitLogRespVO>> getPtProfitLogPage(@Valid PtProfitLogPageReqVO pageReqVO) {
-        PageResult<PtProfitLogDO> pageResult = ptProfitLogService.getPtProfitLogPage(pageReqVO);
-        return success(BeanUtils.toBean(pageResult, PtProfitLogRespVO.class));
+        PageResult<PtProfitLogRespVO> pageResult = ptProfitLogService.getPtProfitLogPage(pageReqVO);
+
+        return success(pageResult);
     }
 
     @GetMapping("/export-excel")
@@ -84,12 +88,11 @@ public class PtProfitLogController {
     @PreAuthorize("@ss.hasPermission('distri:pt-profit-log:export')")
     @OperateLog(type = EXPORT)
     public void exportPtProfitLogExcel(@Valid PtProfitLogPageReqVO pageReqVO,
-              HttpServletResponse response) throws IOException {
+                                       HttpServletResponse response) throws IOException {
         pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
-        List<PtProfitLogDO> list = ptProfitLogService.getPtProfitLogPage(pageReqVO).getList();
+        List<PtProfitLogRespVO> list = ptProfitLogService.getPtProfitLogPage(pageReqVO).getList();
         // 导出 Excel
-        ExcelUtils.write(response, "平台利润记录.xls", "数据", PtProfitLogRespVO.class,
-                        BeanUtils.toBean(list, PtProfitLogRespVO.class));
+        ExcelUtils.write(response, "平台利润记录.xls", "数据", PtProfitLogRespVO.class,list);
     }
 
 }

+ 4 - 3
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/ptprofitlog/vo/PtProfitLogRespVO.java

@@ -2,9 +2,7 @@ package cn.newfeifan.mall.module.distri.controller.admin.ptprofitlog.vo;
 
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.*;
-import java.util.*;
-import java.util.*;
-import org.springframework.format.annotation.DateTimeFormat;
+
 import java.time.LocalDateTime;
 import com.alibaba.excel.annotation.*;
 
@@ -48,4 +46,7 @@ public class PtProfitLogRespVO {
     @ExcelProperty("创建时间")
     private LocalDateTime createTime;
 
+    @Schema(description = "排序")
+    private Integer sort;
+
 }

+ 9 - 4
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/sharepath/SharePathController.java

@@ -51,7 +51,6 @@ public class SharePathController {
     }
 
 
-
     @PutMapping("/transference_rela")
     @Operation(summary = "转让分销关系")
     @PreAuthorize("@ss.hasPermission('distri:share-path:update')")
@@ -129,11 +128,17 @@ public class SharePathController {
     @Operation(summary = "获取分销人员关系树")
     @PreAuthorize("@ss.hasPermission('distri:share-path:query')")
     public CommonResult<TreeNode> getTree(@RequestParam("userId") Long userId,
-                                          @RequestParam(value = "minDepth",defaultValue = "1") Integer minDepth,
+                                          @RequestParam(value = "minDepth", defaultValue = "1") Integer minDepth,
                                           @RequestParam("maxDepth") Integer maxDepth) {
-        TreeNode sharePath = sharePathService.getTree(userId,minDepth,maxDepth);
+        TreeNode sharePath = sharePathService.getTree(userId, minDepth, maxDepth);
         return success(sharePath);
     }
 
-
+    @GetMapping("/getTreeByNameOrMobile")
+    @Operation(summary = "通过人员的名称或者电话获取分销人员关系树")
+    @PreAuthorize("@ss.hasPermission('distri:share-path:query')")
+    public CommonResult<TreeNode> getTreeByNameOrMobile(SharePathTreeReqVO sharePathTreeReqVO) {
+        TreeNode sharePath = sharePathService.getTreeByNameOrMobile(sharePathTreeReqVO);
+        return success(sharePath);
+    }
 }

+ 26 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/sharepath/vo/SharePathTreeReqVO.java

@@ -0,0 +1,26 @@
+package cn.newfeifan.mall.module.distri.controller.admin.sharepath.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.ToString;
+
+import javax.validation.constraints.NotNull;
+
+@Schema(description = "管理后台 - 分销用户关系树 Request VO")
+@Data
+@ToString(callSuper = true)
+public class SharePathTreeReqVO {
+    @Schema(description = "名称")
+    private String name;
+
+    @Schema(description = "电话")
+    private String mobile;
+
+    @Schema(description = "最小层级")
+    @NotNull(message = "最小层级不能为空")
+    private Integer minDepth;
+
+    @Schema(description = "最大层级")
+    @NotNull(message = "最大层级不能为空")
+    private Integer maxDepth;
+}

+ 1 - 3
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/dal/mysql/ptprofitlog/PtProfitLogMapper.java

@@ -1,6 +1,5 @@
 package cn.newfeifan.mall.module.distri.dal.mysql.ptprofitlog;
 
-import java.util.*;
 
 import cn.newfeifan.mall.framework.common.pojo.PageResult;
 import cn.newfeifan.mall.framework.mybatis.core.query.LambdaQueryWrapperX;
@@ -26,7 +25,6 @@ public interface PtProfitLogMapper extends BaseMapperX<PtProfitLogDO> {
                 .eqIfPresent(PtProfitLogDO::getProfitStatus, reqVO.getProfitStatus())
                 .eqIfPresent(PtProfitLogDO::getUserId, reqVO.getUserId())
                 .eqIfPresent(PtProfitLogDO::getOrderId, reqVO.getOrderId())
-                .eqIfPresent(PtProfitLogDO::getOrderNo, reqVO.getOrderNo())
-                .orderByDesc(PtProfitLogDO::getId));
+                .eqIfPresent(PtProfitLogDO::getOrderNo, reqVO.getOrderNo()));
     }
 }

+ 1 - 1
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/service/duser/DuserService.java

@@ -81,5 +81,5 @@ public interface DuserService {
      */
     DuserInfoVO getDuserInfo(Long userId);
 
-    DuserDO getDuserByUserId(Long userId);
+    DuserDO getDuserByUser(Long userId);
 }

+ 6 - 9
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/service/duser/DuserServiceImpl.java

@@ -13,7 +13,6 @@ import cn.newfeifan.mall.module.distri.service.socialstatus.SocialStatusService;
 import cn.newfeifan.mall.module.member.dal.dataobject.user.MemberUserDO;
 import cn.newfeifan.mall.module.member.dal.mysql.user.MemberUserMapper;
 import cn.newfeifan.mall.module.member.service.user.MemberUserService;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
@@ -86,6 +85,11 @@ public class DuserServiceImpl implements DuserService {
         duserMapper.deleteById(id);
     }
 
+    @Override
+    public DuserDO getDuser(Long id) {
+        return duserMapper.selectById(id);
+    }
+
     private void validateDuserExists(Long id) {
         if (duserMapper.selectById(id) == null) {
             throw exception(DUSER_NOT_EXISTS);
@@ -93,7 +97,7 @@ public class DuserServiceImpl implements DuserService {
     }
 
     @Override
-    public DuserDO getDuser(Long id) {
+    public DuserDO getDuserByUser(Long id) {
         return duserMapper.selectOne(new LambdaQueryWrapperX<DuserDO>().eq(DuserDO::getUserId,id));
     }
 
@@ -157,13 +161,6 @@ public class DuserServiceImpl implements DuserService {
 
     }
 
-    @Override
-    public DuserDO getDuserByUserId(Long userId) {
-        return duserMapper.selectOne(new LambdaQueryWrapper<DuserDO>()
-                .eq(DuserDO::getUserId,userId)
-        );
-    }
-
     private void checkAndCreat(Long userId) {
         DuserDO duserDO = duserMapper.selectOne(new LambdaQueryWrapperX<DuserDO>().eqIfPresent(DuserDO::getUserId, userId));
         MemberUserDO user = memberUserService.getUser(userId);

+ 1 - 1
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/service/ptprofitlog/PtProfitLogService.java

@@ -51,7 +51,7 @@ public interface PtProfitLogService {
      * @param pageReqVO 分页查询
      * @return 平台利润记录分页
      */
-    PageResult<PtProfitLogDO> getPtProfitLogPage(PtProfitLogPageReqVO pageReqVO);
+    PageResult<PtProfitLogRespVO> getPtProfitLogPage(PtProfitLogPageReqVO pageReqVO);
 
     void saveBatch(List<PtProfitLogSaveReqVO> ptProfitLogSaveReqVOS);
 

+ 8 - 3
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/service/ptprofitlog/PtProfitLogServiceImpl.java

@@ -2,7 +2,6 @@ package cn.newfeifan.mall.module.distri.service.ptprofitlog;
 
 import cn.newfeifan.mall.framework.mybatis.core.query.LambdaQueryWrapperX;
 import cn.newfeifan.mall.module.distri.enums.CaclEnum;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
@@ -75,8 +74,14 @@ public class PtProfitLogServiceImpl implements PtProfitLogService {
     }
 
     @Override
-    public PageResult<PtProfitLogDO> getPtProfitLogPage(PtProfitLogPageReqVO pageReqVO) {
-        return ptProfitLogMapper.selectPage(pageReqVO);
+    public PageResult<PtProfitLogRespVO> getPtProfitLogPage(PtProfitLogPageReqVO pageReqVO) {
+        PageResult<PtProfitLogDO> ptProfitLogDOPageResult = ptProfitLogMapper.selectPage(pageReqVO);
+        PageResult<PtProfitLogRespVO> result = BeanUtils.toBean(ptProfitLogDOPageResult, PtProfitLogRespVO.class);
+
+        for (int i = 0; i < result.getList().size(); i++) {
+            result.getList().get(i).setSort((pageReqVO.getPageNo()-1)*pageReqVO.getPageSize() + i+1);
+        }
+        return result;
     }
 
     @Override

+ 1 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/service/sharepath/SharePathService.java

@@ -101,4 +101,5 @@ public interface SharePathService {
     PageResult<SharePathRespVO> getDescendants(SharePathPageReqVO pageReqVO);
     TreeNode getTree(Long userId, Integer minDepth, Integer maxDepth);
 
+    TreeNode getTreeByNameOrMobile(SharePathTreeReqVO sharePathTreeReqVO);
 }

+ 7 - 1
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/service/sharepath/SharePathServiceImpl.java

@@ -162,7 +162,7 @@ public class SharePathServiceImpl implements SharePathService {
         if (userId == null) {
             userId = PT_ID;
         }
-        DuserDO sharePathDO = duserService.getDuser(userId);
+        DuserDO sharePathDO = duserService.getDuserByUser(userId);
         List<TreeNode> treeNodes = sharePathMapper.selectDescendants(userId, minDepth, maxDepth);
         TreeNode build = TreeNode.builder()
                 .phone(sharePathDO.getMobile())
@@ -172,6 +172,12 @@ public class SharePathServiceImpl implements SharePathService {
         return build;
     }
 
+    @Override
+    public TreeNode getTreeByNameOrMobile(SharePathTreeReqVO sharePathTreeReqVO) {
+//        duserService.getDuserByName(sharePathTreeReqVO.getName());
+        return null;
+    }
+
     @Override
     public void transferenceRela(SharePathtransFerenceRelaReqVO sharePathtransFerenceRelaReqVO) {
         // todo 转让用户关系

+ 8 - 0
feifan-module-mall/feifan-module-product-biz/src/main/java/cn/newfeifan/mall/module/product/controller/admin/spu/ProductSpuController.java

@@ -117,6 +117,14 @@ public class ProductSpuController {
         return success(BeanUtils.toBean(pageResult, ProductSpuRespVO.class));
     }
 
+    @GetMapping("/getFavoriteByUser")
+    @Operation(summary = "根据用户id获得商品收藏分页")
+    @PreAuthorize("@ss.hasPermission('product:favorite:query')")
+    public CommonResult<PageResult<ProductSpuRespVO>> getFavoriteByUser(@Valid ProductSpuPageReqVO pageVO){
+        PageResult<ProductSpuRespVO> pageResult = productSpuService.getFavoriteByUser(pageVO);
+        return success(pageResult);
+    }
+
     @GetMapping("/get-count")
     @Operation(summary = "获得商品 SPU 分页 tab count")
     @PreAuthorize("@ss.hasPermission('product:spu:query')")

+ 3 - 0
feifan-module-mall/feifan-module-product-biz/src/main/java/cn/newfeifan/mall/module/product/controller/admin/spu/vo/ProductSpuPageReqVO.java

@@ -75,4 +75,7 @@ public class ProductSpuPageReqVO extends PageParam {
 
     @Schema(description = "商户id", example = "8240")
     private Long merchantId;
+
+    @Schema(description = "用户Id")
+    private Long userId;
 }

+ 7 - 1
feifan-module-mall/feifan-module-product-biz/src/main/java/cn/newfeifan/mall/module/product/dal/mysql/spu/ProductSpuMapper.java

@@ -9,11 +9,11 @@ import cn.newfeifan.mall.module.product.controller.app.spu.vo.AppProductSpuPageR
 import cn.newfeifan.mall.module.product.dal.dataobject.spu.ProductSpuDO;
 import cn.newfeifan.mall.module.product.enums.ProductConstants;
 import cn.newfeifan.mall.module.product.enums.spu.ProductSpuStatusEnum;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.toolkit.support.SFunction;
 import org.apache.ibatis.annotations.Mapper;
 
+import java.util.List;
 import java.util.Objects;
 import java.util.Set;
 
@@ -39,6 +39,12 @@ public interface ProductSpuMapper extends BaseMapperX<ProductSpuDO> {
         return selectPage(reqVO, queryWrapper);
     }
 
+    default PageResult<ProductSpuDO> selectPage(ProductSpuPageReqVO reqVO, List<Long> spuIds) {
+        LambdaQueryWrapperX<ProductSpuDO> queryWrapper = new LambdaQueryWrapperX<ProductSpuDO>()
+                .in(ProductSpuDO::getId, spuIds);
+        return selectPage(reqVO, queryWrapper);
+    }
+
     /**
      * 查询触发警戒库存的 SPU 数量
      *

+ 3 - 0
feifan-module-mall/feifan-module-product-biz/src/main/java/cn/newfeifan/mall/module/product/service/favorite/ProductFavoriteService.java

@@ -6,6 +6,7 @@ import cn.newfeifan.mall.module.product.controller.app.favorite.vo.AppFavoritePa
 import cn.newfeifan.mall.module.product.dal.dataobject.favorite.ProductFavoriteDO;
 
 import javax.validation.Valid;
+import java.util.List;
 
 /**
  * 商品收藏 Service 接口
@@ -61,4 +62,6 @@ public interface ProductFavoriteService {
      */
     Long getFavoriteCount(Long userId);
 
+    List<Long> getSpuByUserId(Long userId);
+
 }

+ 13 - 0
feifan-module-mall/feifan-module-product-biz/src/main/java/cn/newfeifan/mall/module/product/service/favorite/ProductFavoriteServiceImpl.java

@@ -6,12 +6,16 @@ import cn.newfeifan.mall.module.product.controller.app.favorite.vo.AppFavoritePa
 import cn.newfeifan.mall.module.product.convert.favorite.ProductFavoriteConvert;
 import cn.newfeifan.mall.module.product.dal.dataobject.favorite.ProductFavoriteDO;
 import cn.newfeifan.mall.module.product.dal.mysql.favorite.ProductFavoriteMapper;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import org.springframework.stereotype.Service;
 import org.springframework.validation.annotation.Validated;
 
 import javax.annotation.Resource;
 import javax.validation.Valid;
 
+import java.util.List;
+import java.util.stream.Collectors;
+
 import static cn.newfeifan.mall.framework.common.exception.util.ServiceExceptionUtil.exception;
 import static cn.newfeifan.mall.module.product.enums.ErrorCodeConstants.FAVORITE_EXISTS;
 import static cn.newfeifan.mall.module.product.enums.ErrorCodeConstants.FAVORITE_NOT_EXISTS;
@@ -70,4 +74,13 @@ public class ProductFavoriteServiceImpl implements ProductFavoriteService {
         return productFavoriteMapper.selectCountByUserId(userId);
     }
 
+    @Override
+    public List<Long> getSpuByUserId(Long userId) {
+        List<ProductFavoriteDO> productFavoriteDOS = productFavoriteMapper.selectList(new LambdaQueryWrapper<ProductFavoriteDO>()
+                .eq(ProductFavoriteDO::getUserId, userId)
+        );
+
+        return productFavoriteDOS.stream().map(ProductFavoriteDO::getSpuId).collect(Collectors.toList());
+    }
+
 }

+ 2 - 0
feifan-module-mall/feifan-module-product-biz/src/main/java/cn/newfeifan/mall/module/product/service/spu/ProductSpuService.java

@@ -2,6 +2,7 @@ package cn.newfeifan.mall.module.product.service.spu;
 
 import cn.newfeifan.mall.framework.common.pojo.PageResult;
 import cn.newfeifan.mall.module.product.controller.admin.spu.vo.ProductSpuPageReqVO;
+import cn.newfeifan.mall.module.product.controller.admin.spu.vo.ProductSpuRespVO;
 import cn.newfeifan.mall.module.product.controller.admin.spu.vo.ProductSpuSaveReqVO;
 import cn.newfeifan.mall.module.product.controller.admin.spu.vo.ProductSpuUpdateStatusReqVO;
 import cn.newfeifan.mall.module.product.controller.app.spu.vo.AppProductSpuPageReqVO;
@@ -140,4 +141,5 @@ public interface ProductSpuService {
     @Async
     void updateBrowseCount(Long id, int incrCount);
 
+    PageResult<ProductSpuRespVO> getFavoriteByUser(ProductSpuPageReqVO pageVO);
 }

+ 14 - 0
feifan-module-mall/feifan-module-product-biz/src/main/java/cn/newfeifan/mall/module/product/service/spu/ProductSpuServiceImpl.java

@@ -15,6 +15,7 @@ import cn.newfeifan.mall.module.product.dal.mysql.spu.ProductSpuMapper;
 import cn.newfeifan.mall.module.product.enums.spu.ProductSpuStatusEnum;
 import cn.newfeifan.mall.module.product.service.brand.ProductBrandService;
 import cn.newfeifan.mall.module.product.service.category.ProductCategoryService;
+import cn.newfeifan.mall.module.product.service.favorite.ProductFavoriteService;
 import cn.newfeifan.mall.module.product.service.sku.ProductSkuService;
 import cn.newfeifan.mall.module.system.dal.dataobject.user.AdminUserDO;
 import cn.newfeifan.mall.module.system.dal.mysql.user.AdminUserMapper;
@@ -58,6 +59,9 @@ public class ProductSpuServiceImpl implements ProductSpuService {
     @Resource
     private ProductCategoryService categoryService;
 
+    @Resource
+    private ProductFavoriteService favoriteService;
+
 
     @Resource
     private StringRedisTemplate stringRedisTemplate;
@@ -177,6 +181,16 @@ public class ProductSpuServiceImpl implements ProductSpuService {
         productSpuMapper.updateBrowseCount(id , incrCount);
     }
 
+    @Override
+    public PageResult<ProductSpuRespVO> getFavoriteByUser(ProductSpuPageReqVO reqVO) {
+        List<Long> spuIds = favoriteService.getSpuByUserId(reqVO.getUserId());
+        if(spuIds == null || spuIds.isEmpty()){
+            return PageResult.empty();
+        }
+        PageResult<ProductSpuDO> productSpuDOPageResult = productSpuMapper.selectPage(reqVO, spuIds);
+        return BeanUtils.toBean(productSpuDOPageResult, ProductSpuRespVO.class);
+    }
+
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void deleteSpu(Long id) {