Ver código fonte

解决海博添加商品问题

fubojin 3 semanas atrás
pai
commit
a94969f2cb
17 arquivos alterados com 503 adições e 85 exclusões
  1. 116 0
      yami-shop-bean/src/main/java/com/yami/shop/bean/model/ChannelProdRecord.java
  2. 39 1
      yami-shop-bean/src/main/java/com/yami/shop/bean/model/ShopSku.java
  3. 71 0
      yami-shop-bean/src/main/java/com/yami/shop/bean/po/ProductPageQuery.java
  4. 11 8
      yami-shop-bean/src/main/java/com/yami/shop/bean/vo/ChannelProdExportVO.java
  5. 29 0
      yami-shop-bean/src/main/java/com/yami/shop/bean/vo/ProdChannelVO.java
  6. 94 0
      yami-shop-bean/src/main/java/com/yami/shop/bean/vo/ProductPageVO.java
  7. 5 2
      yami-shop-platform/src/main/java/com/yami/shop/platform/controller/ShopSkuController.java
  8. 1 0
      yami-shop-security/yami-shop-security-platform/src/main/java/com/yami/shop/security/platform/config/ResourceServerConfiguration.java
  9. 2 2
      yami-shop-service/src/main/java/com/yami/shop/dao/ChannelProdMapper.java
  10. 6 5
      yami-shop-service/src/main/java/com/yami/shop/dao/ShopSkuMapper.java
  11. 4 2
      yami-shop-service/src/main/java/com/yami/shop/service/ShopSkuService.java
  12. 0 7
      yami-shop-service/src/main/java/com/yami/shop/service/impl/ChannelProdServiceImpl.java
  13. 1 3
      yami-shop-service/src/main/java/com/yami/shop/service/impl/OrderRefundServiceImpl.java
  14. 0 5
      yami-shop-service/src/main/java/com/yami/shop/service/impl/PointsFailureRecordServiceImpl.java
  15. 21 13
      yami-shop-service/src/main/java/com/yami/shop/service/impl/ShopSkuServiceImpl.java
  16. 2 2
      yami-shop-service/src/main/resources/mapper/ChannelProdMapper.xml
  17. 101 35
      yami-shop-service/src/main/resources/mapper/ShopSkuMapper.xml

+ 116 - 0
yami-shop-bean/src/main/java/com/yami/shop/bean/model/ChannelProdRecord.java

@@ -0,0 +1,116 @@
+package com.yami.shop.bean.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 导入价格记录实体类
+ * @author [您的姓名] on 2024/01/01
+ */
+@Data
+@TableName("tz_channel_prod_record")
+public class ChannelProdRecord implements java.io.Serializable{
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    @TableId(type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 充值编号
+     */
+    private String code;
+
+    /**
+     * 任务名称
+     */
+    private String name;
+
+    /**
+     * 渠道(企业ID)
+     */
+    private Long channelId;
+
+    /**
+     * 渠道名称
+     */
+    private String channelName;
+
+    /**
+     * 商品ID
+     */
+    private Long skuId;
+    /**
+     * 海博商品ID
+     */
+    private String hbSkuId;
+
+    /**
+     * 商品名称
+     */
+    private String skuName;
+
+    /**
+     * 商户ID
+     */
+    private Long shopId;
+
+    /**
+     * 商户名称
+     */
+    private String shopName;
+
+    /**
+     * 业务类型
+     */
+    private String businessType;
+
+    /**
+     * 进货价
+     */
+    private BigDecimal purchasePrice;
+
+    /**
+     * 出货价
+     */
+    private BigDecimal deliveryPrice;
+
+    /**
+     * 渠道对应商品售价
+     */
+    private BigDecimal channelProdPrice;
+
+    /**
+     * 状态(1-成功,0-失败)
+     */
+    private Integer status;
+
+    /**
+     * 失败原因
+     */
+    private String reasonForFailure;
+
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+
+    /**
+     * 操作人
+     */
+    private String createBy;
+
+    /**
+     * 操作人姓名
+     */
+    private String createName;
+
+}

+ 39 - 1
yami-shop-bean/src/main/java/com/yami/shop/bean/model/ShopSku.java

@@ -13,11 +13,13 @@ package com.yami.shop.bean.model;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import lombok.Data;
 import lombok.experimental.Accessors;
 import org.springframework.format.annotation.DateTimeFormat;
 
 import java.io.Serializable;
+import java.math.BigDecimal;
 import java.util.Date;
 import java.util.List;
 
@@ -39,8 +41,44 @@ public class ShopSku implements Serializable {
 
     @TableField(exist = false)
     private String shopName;
+
+    /**
+     * 商品编码
+     */
+    @TableField(exist = false)
+    private String skuCode;
+    /**
+     * 海博商品ID
+     */
+    @TableField(exist = false)
+    private String hbSkuId;
+    /**
+     * 商品名称
+     */
     @TableField(exist = false)
     private String skuName;
+    /**
+     * 开始时间
+     */
+    @TableField(exist = false)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private String startTime;
+    /**
+     * 结束时间
+     */
+    @TableField(exist = false)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private String endTime;
+    /**
+     * 最大价格
+     */
+    @TableField(exist = false)
+    private BigDecimal maxPrice;
+    /**
+     * 最小价格
+     */
+    @TableField(exist = false)
+    private BigDecimal minPrice;
 
     /**
      * 单品ID
@@ -82,7 +120,6 @@ public class ShopSku implements Serializable {
      */
     @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date recTime;
-
     /**
      * 渠道商品
      */
@@ -93,4 +130,5 @@ public class ShopSku implements Serializable {
      */
     @TableField(exist = false)
     private Sku sku;
+
 }

+ 71 - 0
yami-shop-bean/src/main/java/com/yami/shop/bean/po/ProductPageQuery.java

@@ -0,0 +1,71 @@
+package com.yami.shop.bean.po;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.math.BigDecimal;
+
+/**
+ * 品牌分页列表查询对象
+ *
+ * @author haoxr
+ * @since 2021/7/11
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class ProductPageQuery{
+
+    /**
+     * 海博商品编码
+     */
+    private String skuCode;
+    /**
+     * 海博商品ID
+     */
+    private String hbSkuId;
+    /**
+     * 商品规格名称
+     */
+    private String skuName;
+
+    /**
+     * 商品名称/统一id也可以业务系统id
+     */
+    private String keywords;
+
+    /**
+     * 上架状态(0:商家下架、1:上架、2:违规下架、3:平台审核)
+     */
+    private Integer status = null;
+
+
+    /**
+     * 开始时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private String startTime;
+
+    /**
+     * 结束时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private String endTime;
+
+    /**
+     * 最大价格
+     */
+    private BigDecimal maxPrice;
+    /**
+     * 最小价格
+     */
+    private BigDecimal minPrice;
+
+    /**
+     * 门店id
+     */
+    private Long shopId;
+
+}

+ 11 - 8
yami-shop-bean/src/main/java/com/yami/shop/bean/vo/ChannelProdExportVO.java

@@ -13,31 +13,34 @@ import java.math.BigDecimal;
 @Data
 public class ChannelProdExportVO {
 
-    @ExcelProperty(value = "海博商品ID*", index = 0)
+    @ExcelProperty(value = "海博商品规格ID", index = 0)
     @ColumnWidth(20)
-    private Long skuId;
+    private Long hbSkuId;
 
-    @ExcelProperty(value = "商品名称", index = 1)
+    @ExcelProperty(value = "商品规格名称", index = 1)
     @ColumnWidth(40)
     private String skuName;
 
-    @ExcelProperty(value = "门店名称*", index = 3)
+    @ExcelProperty(value = "门店名称", index = 2)
     @ColumnWidth(20)
     private String shopName;
+    @ExcelProperty(value = "门店商品库存", index = 3)
+    @ColumnWidth(20)
+    private Integer shopSkuStock;
 
-    @ExcelProperty(value = "销售渠道*", index = 2)
+    @ExcelProperty(value = "销售渠道", index = 4)
     @ColumnWidth(20)
     private String channelName;
 
-    @ExcelProperty(value = "进货价(元)", index = 4)
+    @ExcelProperty(value = "进货价(元)", index = 5)
     @ColumnWidth(20)
     private BigDecimal purchasePrice;
 
-    @ExcelProperty(value = "出货价(元)", index = 5)
+    @ExcelProperty(value = "出货价(元)", index = 6)
     @ColumnWidth(20)
     private BigDecimal deliveryPrice;
 
-    @ExcelProperty(value = "渠道售价(元)*", index = 6)
+    @ExcelProperty(value = "渠道售价(元)", index = 7)
     @ColumnWidth(20)
     private BigDecimal channelProdPrice;
 

+ 29 - 0
yami-shop-bean/src/main/java/com/yami/shop/bean/vo/ProdChannelVO.java

@@ -0,0 +1,29 @@
+package com.yami.shop.bean.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 商品企业价格出参对象
+ */
+@Data
+public class ProdChannelVO {
+    /** 企业ID */
+    private Long channelId;
+    /** 企业名称 */
+    private String channelName;
+
+    /** 企业等级 */
+    private String level;
+    /** 门店名称 */
+    private String shopName;
+    /**更新时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date updateTime;
+
+    /** 企业对应价格 */
+    private BigDecimal price;
+}

+ 94 - 0
yami-shop-bean/src/main/java/com/yami/shop/bean/vo/ProductPageVO.java

@@ -0,0 +1,94 @@
+package com.yami.shop.bean.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @author fbj
+ * 商品分页出参对象
+ */
+@Data
+public class ProductPageVO {
+
+    /**
+     * 统一id
+     */
+    private String supId;
+
+    /**
+     * 商品ID
+     */
+    private Long spuId;
+
+    /**
+     * 海博hbSpuId
+     */
+    private String hbSpuId;
+    /**
+     * 海博skuId
+     */
+    private String hbSkuId;
+    /**
+     * 商品编码
+     */
+    private String skuCode;
+
+    /**
+     * 商品图片
+     */
+    private String pic;
+
+    /**
+     * 商品名称
+     */
+    private String prodName;
+
+    /**
+     * 业务类型
+     */
+    private String channelCode;
+
+    /**
+     * 商户ID
+     */
+    private Long shopId;
+    /**
+     * 商户
+     */
+    private String shopName;
+
+    /**
+     * 商品规格ID
+     */
+    private Long skuId;
+
+    /**
+     * 库存
+     */
+    private Integer shopSkuStocks;
+
+    /**
+     * 上架状态(0:商家下架、1:上架、2:违规下架、3:平台审核)
+     */
+    private Integer status;
+
+    /**
+     * 更新时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date updateTime;
+    /**
+     * 商品企业价格
+     */
+    private List<ProdChannelVO> channelVOS;
+
+    /**
+     * 价格
+     */
+    private BigDecimal price;
+
+}

+ 5 - 2
yami-shop-platform/src/main/java/com/yami/shop/platform/controller/ShopSkuController.java

@@ -11,11 +11,14 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.yami.shop.bean.dto.OrderRefundDto;
 import com.yami.shop.bean.model.ChannelProd;
 import com.yami.shop.bean.model.ShopSku;
+import com.yami.shop.bean.po.ProductPageQuery;
+import com.yami.shop.bean.vo.ProductPageVO;
 import com.yami.shop.common.util.PageParam;
 import com.yami.shop.common.util.R;
 import com.yami.shop.service.ShopSkuService;
 import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
+import org.apache.ibatis.annotations.Param;
 import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletResponse;
@@ -47,14 +50,14 @@ public class ShopSkuController {
      * 分页查询门店对应商品详细
      */
     @GetMapping("/page")
-    public R<IPage<ShopSku>> page(PageParam<ShopSku> page, ShopSku shopSku) {
+    public R<IPage<ProductPageVO>> page(PageParam<ProductPageQuery> page,  @Param("shopSku") ProductPageQuery shopSku) {
         return R.SUCCESS(shopProdService.shopSkuPage(page,shopSku));
     }
 
 
     @GetMapping("/export")
     @ApiOperation(value = "导出渠道商品数据")
-    public void exportChannelProds(ShopSku shopSku, HttpServletResponse response) {
+    public void exportChannelProds(ProductPageQuery shopSku, HttpServletResponse response) {
         shopProdService.exportChannelProds(shopSku, response);
     }
 

+ 1 - 0
yami-shop-security/yami-shop-security-platform/src/main/java/com/yami/shop/security/platform/config/ResourceServerConfiguration.java

@@ -61,6 +61,7 @@ public class ResourceServerConfiguration extends ResourceServerConfigurerAdapter
 
 //                    "/admin/enterprise/**",
 //                    "/admin/file/upload/img",
+                    "/shop/shopProd/**",
                     "/admin/enterprise/downloadXlsx",
                     "/admin/enterprise/downloadExcel",
                     "/admin/enterprise/downloadErrorExcel",

+ 2 - 2
yami-shop-service/src/main/java/com/yami/shop/dao/ChannelProdMapper.java

@@ -14,7 +14,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.yami.shop.bean.dto.UpdateShannerProdDTO;
 import com.yami.shop.bean.model.ChannelProd;
-import com.yami.shop.bean.vo.ChannelProdExportVO;
+import com.yami.shop.bean.vo.ProdChannelVO;
 import com.yami.shop.common.util.PageParam;
 import org.apache.ibatis.annotations.Param;
 
@@ -94,7 +94,7 @@ public interface ChannelProdMapper extends BaseMapper<ChannelProd> {
      * @param shopId 商家ID
      * @return 渠道商品列表
      */
-    List<ChannelProd> selectListAll(@Param("skuId")Long skuId, @Param("shopId")Long shopId);
+    List<ProdChannelVO> selectListAll(@Param("skuId")Long skuId, @Param("shopId")Long shopId);
 
 
     /**

+ 6 - 5
yami-shop-service/src/main/java/com/yami/shop/dao/ShopSkuMapper.java

@@ -12,9 +12,10 @@ package com.yami.shop.dao;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.yami.shop.bean.model.ChannelProd;
 import com.yami.shop.bean.model.ShopSku;
+import com.yami.shop.bean.po.ProductPageQuery;
 import com.yami.shop.bean.vo.ChannelProdExportVO;
+import com.yami.shop.bean.vo.ProductPageVO;
 import com.yami.shop.common.util.PageParam;
 import org.apache.ibatis.annotations.Param;
 
@@ -36,17 +37,17 @@ public interface ShopSkuMapper extends BaseMapper<ShopSku> {
     /**
      * 分页查询门店商品
      * @param page 分页参数
-     * @param shopSku 门店商品
+     * @param query 查询条件
      * @return 门店商品
      */
-    IPage<ShopSku> selectShopSkuPage(@Param("page")PageParam<ShopSku> page, @Param("shopSku")ShopSku shopSku);
+    IPage<ProductPageVO> selectShopSkuPage(@Param("page")PageParam<ProductPageQuery> page, @Param("query") ProductPageQuery query);
 
 
     /**
      * 导出渠道商品列表
-     * @param shopSku 查询条件
+     * @param query 查询条件
      * @return 渠道商品列表
      */
-    List<ChannelProdExportVO> exportList(@Param("shopSku")ShopSku shopSku);
+    List<ChannelProdExportVO> exportList(@Param("query")ProductPageQuery query);
 
 }

+ 4 - 2
yami-shop-service/src/main/java/com/yami/shop/service/ShopSkuService.java

@@ -5,6 +5,8 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.yami.shop.bean.model.ChannelProd;
 import com.yami.shop.bean.model.ShopSku;
+import com.yami.shop.bean.po.ProductPageQuery;
+import com.yami.shop.bean.vo.ProductPageVO;
 import com.yami.shop.common.util.PageParam;
 
 import javax.servlet.http.HttpServletResponse;
@@ -22,12 +24,12 @@ public interface ShopSkuService extends IService<ShopSku> {
      * @param shopSku 查询参数
      * @return 分页数据
      */
-    IPage<ShopSku> shopSkuPage(PageParam<ShopSku> page, ShopSku shopSku);
+    IPage<ProductPageVO> shopSkuPage(PageParam<ProductPageQuery> page, ProductPageQuery shopSku);
 
     /**
      * 导出门店渠道商品数据
      * @param response 查询参数
      * @param response 响应
      */
-    void exportChannelProds(ShopSku shopSku, HttpServletResponse response);
+    void exportChannelProds(ProductPageQuery shopSku, HttpServletResponse response);
 }

+ 0 - 7
yami-shop-service/src/main/java/com/yami/shop/service/impl/ChannelProdServiceImpl.java

@@ -3,20 +3,13 @@ package com.yami.shop.service.impl;
 
 import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.excel.EasyExcel;
-import com.alipay.api.domain.Shop;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.yami.shop.bean.dto.SetChannelPriceDto;
 import com.yami.shop.bean.dto.UpdateShannerProdDTO;
 import com.yami.shop.bean.model.*;
-import com.yami.shop.bean.vo.ChannelProdExportVO;
 import com.yami.shop.bean.vo.ChannelProdImportVO;
 import com.yami.shop.common.exception.GlobalException;
-import com.yami.shop.common.exception.YamiShopBindException;
-import com.yami.shop.common.util.PageParam;
-import com.yami.shop.common.util.SpringContextUtils;
 import com.yami.shop.dao.*;
 import com.yami.shop.service.ChannelProdService;
 import lombok.AllArgsConstructor;

+ 1 - 3
yami-shop-service/src/main/java/com/yami/shop/service/impl/OrderRefundServiceImpl.java

@@ -1194,9 +1194,7 @@ public class OrderRefundServiceImpl extends ServiceImpl<OrderRefundMapper, Order
             }
 
             if (applyDeal == 1) {
-                if (ChannelType.SMQJH.value().equals(orderRefund.getChannelType())) {
-
-                } else {
+                if (!ChannelType.SMQJH.value().equals(orderRefund.getChannelType())) {
                     //订单退款金额或者积分处理
                     orderService.returnRefund(orderRefund.getOrderNumber());
                 }

+ 0 - 5
yami-shop-service/src/main/java/com/yami/shop/service/impl/PointsFailureRecordServiceImpl.java

@@ -3,25 +3,20 @@ package com.yami.shop.service.impl;
 
 import com.alibaba.excel.EasyExcel;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.yami.shop.bean.model.PointsFailureRecord;
-import com.yami.shop.bean.vo.ChannelProdExportVO;
 import com.yami.shop.bean.vo.PointsFailureRecordVO;
 import com.yami.shop.bean.vo.RecordExportVO;
 import com.yami.shop.dao.PointsFailureRecordMapper;
 import com.yami.shop.service.PointsFailureRecordService;
 import lombok.AllArgsConstructor;
-import org.apache.commons.beanutils.BeanUtils;
 import org.apache.commons.lang3.ObjectUtils;
 import org.springframework.stereotype.Service;
 
 import javax.servlet.http.HttpServletResponse;
-import java.lang.reflect.InvocationTargetException;
 import java.net.URLEncoder;
 import java.util.ArrayList;
 import java.util.List;
-import java.util.stream.Collectors;
 
 /**
  * 积分充值失败记录 Service实现类

+ 21 - 13
yami-shop-service/src/main/java/com/yami/shop/service/impl/ShopSkuServiceImpl.java

@@ -1,25 +1,26 @@
 package com.yami.shop.service.impl;
 
 import com.alibaba.excel.EasyExcel;
-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.service.impl.ServiceImpl;
 import com.yami.shop.bean.model.ChannelProd;
-import com.yami.shop.bean.model.Label;
 import com.yami.shop.bean.model.ShopDetail;
 import com.yami.shop.bean.model.ShopSku;
+import com.yami.shop.bean.po.ProductPageQuery;
 import com.yami.shop.bean.vo.ChannelProdExportVO;
+import com.yami.shop.bean.vo.ProdChannelVO;
+import com.yami.shop.bean.vo.ProductPageVO;
 import com.yami.shop.common.util.PageParam;
 import com.yami.shop.dao.*;
 import com.yami.shop.service.ShopSkuService;
 import lombok.AllArgsConstructor;
-import org.apache.commons.lang3.ObjectUtils;
 import org.springframework.stereotype.Service;
 
 import javax.servlet.http.HttpServletResponse;
 import java.net.URLEncoder;
+import java.util.Date;
 import java.util.List;
+import java.util.Objects;
 
 @Service
 @AllArgsConstructor
@@ -37,21 +38,28 @@ public class ShopSkuServiceImpl extends ServiceImpl<ShopSkuMapper, ShopSku> impl
     }
 
     @Override
-    public IPage<ShopSku> shopSkuPage(PageParam<ShopSku> page,  ShopSku shopSku) {
-        IPage<ShopSku> page1 = shopProdMapper.selectShopSkuPage(page, shopSku);
+    public IPage<ProductPageVO> shopSkuPage(PageParam<ProductPageQuery> page, ProductPageQuery query) {
+        IPage<ProductPageVO> page1 = shopProdMapper.selectShopSkuPage(page, query);
         //循环获取sku和渠道价格设置信息
-        for (ShopSku record : page1.getRecords()) {
-            ShopDetail shopDetail = shopDetailMapper.selectById(record.getShopId());
-            record.setShopName(shopDetail.getShopName());
-            record.setSku(skuMapper.selectById(record.getSkuId()));
-            List<ChannelProd> channelProds = channelProdMapper.selectListAll(record.getSkuId(), record.getShopId());
-            record.setChannelProdList(channelProds);
+        for (ProductPageVO record : page1.getRecords()) {
+            List<ProdChannelVO>  channelProds = channelProdMapper.selectListAll(record.getSkuId(), record.getShopId());
+            record.setChannelVOS(channelProds);
+            if (channelProds != null && channelProds.size() > 0){
+                // 获取channelProds最大更新时间
+                Date maxUpdateTime = channelProds.stream()
+                        .map(ProdChannelVO::getUpdateTime)  // 假设ProdChannelVO有getUpdateTime方法
+                        .filter(Objects::nonNull)           // 过滤掉空值
+                        .max(Date::compareTo)               // 找出最大的日期
+                        .orElse(null);                      // 如果没有找到,返回null
+
+                record.setUpdateTime(maxUpdateTime);
+            }
         }
         return page1;
     }
 
     @Override
-    public void exportChannelProds(ShopSku shopSku, HttpServletResponse response) {
+    public void exportChannelProds(ProductPageQuery shopSku, HttpServletResponse response) {
         // 查询数据
         List<ChannelProdExportVO> channelProdExportVOS = shopProdMapper.exportList(shopSku);
         try {

+ 2 - 2
yami-shop-service/src/main/resources/mapper/ChannelProdMapper.xml

@@ -108,8 +108,8 @@
           AND is_delete = 0
     </select>
 
-    <select id="selectListAll" resultType="com.yami.shop.bean.model.ChannelProd">
-        SELECT c.*, s.shop_name shopName,channel.channel_name channelName,channel.type channelType
+    <select id="selectListAll" resultType="com.yami.shop.bean.vo.ProdChannelVO">
+        SELECT c.id,c.channel_id channelId, c.channel_prod_price price,c.update_time updateTime, channel.channel_name channelName,s.shop_name shopName
         FROM tz_channel_prod c
                  left join tz_shop_detail s on c.shop_id = s.shop_id
                  left join tz_channel channel on c.channel_id = channel.id

+ 101 - 35
yami-shop-service/src/main/resources/mapper/ShopSkuMapper.xml

@@ -23,51 +23,117 @@
 
     <select id="selectByShopAndSku" resultType="com.yami.shop.bean.model.ShopSku">
         SELECT s.*, sku.sku_name AS skuName
-        FROM tz_shop_sku s join tz_sku sku on sku.sku_id = s.sku_id and sku.is_delete = 0
+        FROM tz_shop_sku s
+                 join tz_sku sku on sku.sku_id = s.sku_id and sku.is_delete = 0
         WHERE s.shop_id = #{shopId}
           AND s.sku_id = #{skuId}
           AND s.is_delete = 0
     </select>
 
 
-    <select id="selectShopSkuPage" resultMap="shopProdMap">
-        SELECT sk.* FROM tz_shop_sku sk join tz_sku s on sk.sku_id = s.sku_id
-        WHERE s.is_delete = 0 and sk.is_delete = 0
-        <if test="shopSku.shopId != null">
-            AND sk.shop_id = #{shopSku.shopId}
-        </if>
-        <if test="shopSku.skuId != null">
-            AND sk.sku_id = #{shopSku.skuId}
-        </if>
-        <if test="shopSku.skuName != null">
-            AND s.sku_name LIKE CONCAT('%',#{shopSku.skuName},'%')
-        </if>
-        order by sk.rec_time desc
+    <select id="selectShopSkuPage" resultType="com.yami.shop.bean.vo.ProductPageVO">
+        SELECT
+        sku.prod_id spuId,
+        sku.hb_spu_id,
+        sku.pic,
+        a.prod_name,
+        a.channel_code,
+        sku.hb_sku_id,
+        sku.sku_code,
+        b.shop_id,
+        b.shop_name,
+        c.shop_sku_stocks,
+        sku.sku_id,
+        sku.`status`,
+        MAX(cp.update_time) as update_time
+        from tz_shop_sku c
+        JOIN tz_sku sku ON sku.sku_id = c.sku_id AND sku.is_delete = 0
+        join tz_prod a on a.prod_id = sku.prod_id and a.is_delete = 0
+        JOIN tz_shop_detail b ON c.shop_id = b.shop_id
+        LEFT JOIN tz_channel_prod cp ON c.shop_id = cp.shop_id and sku.sku_id = cp.sku_id and cp.is_delete = 0
+        <where>
+            c.is_delete = 0
+            AND c.id IS NOT NULL
+            AND sku.sku_id IS NOT NULL
+            AND b.shop_id IS NOT NULL
+            <if test='query.keywords!=null and query.keywords.trim() neq ""'>
+                AND ( sku.sku_name LIKE concat('%',#{query.keywords},'%') OR sku.hb_sku_id = #{query.keywords} OR
+                a.hb_spu_id = #{query.keywords})
+            </if>
+            <if test='query.hbSkuId!=null and query.hbSkuId.trim() neq ""'>
+                AND sku.hb_sku_id = #{query.hbSkuId}
+            </if>
+            <if test='query.skuName!=null and query.skuName.trim() neq ""'>
+                AND sku.sku_name LIKE concat('%',#{query.skuName},'%')
+            </if>
+            <if test='query.skuCode!=null and query.skuCode.trim() neq ""'>
+                AND sku.sku_code = #{query.skuCode}
+            </if>
+            <if test='query.shopId!=null'>
+                AND c.shop_id = #{query.shopId}
+            </if>
+            <if test='query.status!=null'>
+                AND a.status = #{query.status} and a.prod_id IS NOT NULL
+            </if>
+            <if test='(query.startTime!=null and query.startTime!="") and (query.endTime!=null and query.endTime!="")'>
+                AND (cp.update_time BETWEEN #{query.startTime} AND #{query.endTime})
+            </if>
+            <if test='(query.minPrice!=null and query.minPrice!="") and (query.maxPrice!=null and query.maxPrice!="")'>
+                AND (cp.channel_prod_price BETWEEN #{query.minPrice} AND #{query.maxPrice})
+            </if>
+        </where>
+        GROUP BY c.shop_id, sku.sku_id, c.shop_sku_stocks,c.rec_time
+        order by c.rec_time desc
     </select>
 
 
     <select id="exportList" resultType="com.yami.shop.bean.vo.ChannelProdExportVO">
         SELECT
-        sha.hb_sku_id AS skuId,
-        sha.sku_name AS skuName,
-        p.channel_id AS channelId,
-        c.channel_name AS channelName,
-        d.shop_name AS shopName,
-        p.purchase_price AS purchasePrice,
-        p.delivery_price AS deliveryPrice,
-        p.channel_prod_price AS channelProdPrice
-        FROM tz_shop_sku sh
-        LEFT JOIN  tz_channel_prod p ON p.shop_id = sh.shop_id and sh.sku_id = p.sku_id and p.is_delete = 0
-        LEFT JOIN tz_channel c ON p.channel_id = c.id
-        LEFT JOIN tz_sku sha ON sh.sku_id = sha.sku_id
-        LEFT JOIN tz_shop_detail d ON sh.shop_id = d.shop_id
-        WHERE sh.is_delete = 0 and sha.is_delete = 0 and p.is_delete = 0
-        <if test="shopSku.shopId != null">
-            AND sh.shop_id = #{shopSku.shopId}
-        </if>
-        <if test="shopSku.skuName != null">
-            AND sha.sku_name LIKE CONCAT('%',#{shopSku.skuName},'%')
-        </if>
-        order by sh.rec_time desc
+        sku.hb_sku_id AS hbSkuId,
+        sku.sku_name AS skuName,
+        b.shop_name AS shopName,
+        c.shop_sku_stocks AS shopSkuStock,
+
+        channel.channel_name channelName,
+        cp.purchase_price purchasePrice,
+        cp.delivery_price deliveryPrice,
+        cp.channel_prod_price channelProdPrice
+
+        from tz_shop_sku c
+        LEFT JOIN tz_sku sku ON sku.sku_id = c.sku_id AND sku.is_delete = 0
+        left join tz_prod a on a.prod_id = sku.prod_id and a.is_delete = 0
+        LEFT JOIN tz_shop_detail b ON c.shop_id = b.shop_id
+        LEFT JOIN tz_channel_prod cp ON c.shop_id = cp.shop_id and sku.sku_id = cp.sku_id and cp.is_delete = 0
+        left join tz_channel channel on cp.channel_id = channel.id
+        <where>
+            c.is_delete = 0
+            AND c.id IS NOT NULL
+            AND sku.sku_id IS NOT NULL
+            AND b.shop_id IS NOT NULL
+            <if test='query.keywords!=null and query.keywords.trim() neq ""'>
+                AND ( sku.sku_name LIKE concat('%',#{query.keywords},'%') OR sku.hb_sku_id = #{query.keywords} OR
+                sku.hb_spu_id = #{query.keywords} )
+            </if>
+
+            <if test='query.hbSkuId!=null and query.hbSkuId.trim() neq ""'>
+                AND sku.hb_sku_id = #{query.hbSkuId}
+            </if>
+            <if test='query.skuCode!=null and query.skuCode.trim() neq ""'>
+                AND sku.sku_code = #{query.skuCode}
+            </if>
+            <if test='query.shopId!=null'>
+                AND c.shop_id = #{query.shopId}
+            </if>
+            <if test='query.status!=null'>
+                AND a.status = #{query.status} and a.prod_id IS NOT NULL
+            </if>
+            <if test='(query.startTime!=null and query.startTime!="") and (query.endTime!=null and query.endTime!="")'>
+                AND (cp.update_time BETWEEN #{query.startTime} AND #{query.endTime})
+            </if>
+            <if test='(query.minPrice!=null and query.minPrice!="") and (query.maxPrice!=null and query.maxPrice!="")'>
+                AND (cp.channel_prod_price BETWEEN #{query.minPrice} AND #{query.maxPrice})
+            </if>
+        </where>
+        order by c.rec_time desc
     </select>
 </mapper>