Преглед изворни кода

Merge remote-tracking branch 'origin/dev' into dev

wangming пре 2 недеља
родитељ
комит
2c3c49ee00

+ 17 - 8
yami-shop-api/src/main/java/com/yami/shop/api/controller/ProdController.java

@@ -21,6 +21,7 @@ import com.yami.shop.bean.dto.SearchProdDto;
 import com.yami.shop.bean.model.ChannelProd;
 import com.yami.shop.bean.model.Product;
 import com.yami.shop.bean.model.Sku;
+import com.yami.shop.bean.param.CategoryProductParam;
 import com.yami.shop.bean.vo.SimilarProdListVo;
 import com.yami.shop.bean.vo.SkuBuyTogetherOftenVo;
 import com.yami.shop.bean.model.UserShopBehavior;
@@ -92,26 +93,31 @@ public class ProdController {
         }
         if (user != null) {
             String userId = user.getUserId();
+            if (channelId == null){
+                channelId = 3L;
+            }
             if (StringUtils.isNotEmpty(userId)) {
                 UserShopBehavior userShopBehavior = null;
-                userShopBehavior = userShopBehaviorService.findByUserIdAndProd(userId, prodId);
+                userShopBehavior = userShopBehaviorService.findByUserIdAndProd(userId,shopId, prodId,channelId);
                 if (userShopBehavior == null) {
                     int num = userShopBehaviorService.findByUserIdCount(userId);
                     if (num < 6) {
                         userShopBehavior = new UserShopBehavior();
                         userShopBehavior.setUserId(userId);
                         userShopBehavior.setShopId(shopId);
+                        userShopBehavior.setChannelId(channelId);
                         userShopBehavior.setProdId(prodId);
                         userShopBehavior.setCreateTime(new Date());
                         userShopBehaviorService.save(userShopBehavior);
                     } else {
-                        List<UserShopBehavior> userShopBehaviors = userShopBehaviorService.findByUserId(userId, 1);
+                        List<UserShopBehavior> userShopBehaviors = userShopBehaviorService.findByUserId(userId, 1, shopId,channelId);
                         if (userShopBehaviors != null && !userShopBehaviors.isEmpty()) {
                             userShopBehavior = userShopBehaviors.get(0);
                         }
                         if (userShopBehavior != null) {
                             userShopBehavior.setProdId(prodId);
                             userShopBehavior.setShopId(shopId);
+                            userShopBehavior.setChannelId(channelId);
                             userShopBehavior.setCreateTime(new Date());
                             userShopBehaviorService.updateById(userShopBehavior);
                         }
@@ -210,13 +216,13 @@ public class ProdController {
 
     @PostMapping("/listProdByCategoryIdAndShopId")
     @ApiOperation(value = "根据分类ID、商户ID查询归属的所有商品")
-    public ResponseEntity<IPage<Product>> listProdByCategoryIdAndShopId(@RequestBody ProdByCategoryIdAndShopIdDTO prodByCategoryIdAndShopIdDTO) {
+    public ResponseEntity<IPage<CategoryProductParam>> listProdByCategoryIdAndShopId(@RequestBody ProdByCategoryIdAndShopIdDTO prodByCategoryIdAndShopIdDTO) {
         return ResponseEntity.ok(prodService.listProdByCategoryIdAndShopId(prodByCategoryIdAndShopIdDTO));
     }
 
     @GetMapping("/prodRecommended")
     @ApiOperation(value = "为你推荐", notes = "为你推荐")
-    public ResponseEntity<IPage<SearchProdDto>> getProdRecommended(PageParam<SearchProdDto> page) {
+    public ResponseEntity<IPage<SearchProdDto>> getProdRecommended(PageParam<SearchProdDto> page,@RequestParam("shopId") Long shopId,@RequestParam("channelId") Long channelId) {
         IPage<SearchProdDto>   searchProdDtos = page;
         List<ProductDto> productDtos = new ArrayList<>();
         YamiUser user = null;
@@ -229,9 +235,12 @@ public class ProdController {
         if (user != null) {
             String userId = user.getUserId();
             if (StringUtils.isNotEmpty(userId)) {
-                List<UserShopBehavior> byUserId = userShopBehaviorService.findByUserId(userId, 5);
+                if (channelId == null){
+                    channelId = 3L;
+                }
+                List<UserShopBehavior> byUserId = userShopBehaviorService.findByUserId(userId, 5,shopId,channelId);
                 for (UserShopBehavior userShopBehavior : byUserId) {
-                    ChannelProd channelProd = userShopBehaviorService.findByProdId(userShopBehavior.getProdId(), userShopBehavior.getShopId());
+                    ChannelProd channelProd = userShopBehaviorService.findByProdId(userShopBehavior.getProdId(), userShopBehavior.getShopId(),channelId);
                     if (channelProd != null) {
                         BigDecimal channelProdPrice = channelProd.getChannelProdPrice();
                         if (channelProdPrice != null) {
@@ -239,7 +248,7 @@ public class ProdController {
                                     .setScale(2, RoundingMode.HALF_UP);
                             BigDecimal decreased = channelProdPrice.multiply(new BigDecimal("0.90"))
                                     .setScale(2, RoundingMode.HALF_UP);
-                            List<ProductDto> productDtoList = userShopBehaviorService.findByProdIdAndShopIdAndPrice(userShopBehavior.getProdId(), userShopBehavior.getShopId(), increased, decreased);
+                            List<ProductDto> productDtoList = userShopBehaviorService.findByProdIdAndShopIdAndPrice(userShopBehavior.getProdId(), userShopBehavior.getShopId(),channelId, increased, decreased);
                             if (productDtoList != null && !productDtoList.isEmpty()) {
                                 productDtos.addAll(productDtoList);
                             }
@@ -262,7 +271,7 @@ public class ProdController {
     @ApiOperation(value = "相似商品", notes = "传入商品id")
     public R<IPage<SimilarProdListVo>> similarProdList(PageParam<Product> page, Long prodId, Long shopId, Long channelId,String userId) {
         if (channelId == null){
-            channelId = 1L;
+            channelId = 3L;
         }
         return R.SUCCESS(prodService.similarProdList(page, prodId , shopId, channelId, userId));
     }

+ 2 - 3
yami-shop-api/src/main/java/com/yami/shop/api/listener/ConfirmOrderListener.java

@@ -65,7 +65,6 @@ public class ConfirmOrderListener {
         ShopCartOrderDto shopCartOrderDto = event.getShopCartOrderDto();
         OrderParam orderParam = event.getOrderParam();
         String userId = SecurityUtils.getUser().getUserId();
-        //String userId = "36726893042d492aba446439c5f00584";
         UserAddr userAddr = userAddrService.getUserAddrByUserId(orderParam.getAddrId(), userId);
         double total = 0.0;
         int totalCount = 0;
@@ -100,10 +99,10 @@ public class ConfirmOrderListener {
             //企业用户,计算分单规则
             if (transport2.getTargetDistance() > transport2.getDistance()) {
                 //超出配送范围使用快递
-                orderParam.setDvyType(DvyType.DELIVERY.value());
+                orderParam.setDvyType(1);
             } else {
                 //即时配送
-                orderParam.setDvyType(DvyType.NOT_DELIVERY.value());
+                orderParam.setDvyType(3);
             }
             //费用按重量计算,数据是g,现在要按kg计算,20是kg单位
             Double totalWeight = shopCartOrderDto.getTotalWeight();

+ 3 - 0
yami-shop-bean/src/main/java/com/yami/shop/bean/model/UserShopBehavior.java

@@ -40,6 +40,9 @@ public class UserShopBehavior implements Serializable {
     @ApiModelProperty(value = "店铺id",required=true)
     private Long shopId;
 
+    @ApiModelProperty(value = "渠道id",required=true)
+    private Long channelId;
+
     @ApiModelProperty(value = "创建时间",required=true)
     private Date createTime;
 }

+ 58 - 0
yami-shop-bean/src/main/java/com/yami/shop/bean/param/CategoryProductParam.java

@@ -0,0 +1,58 @@
+
+package com.yami.shop.bean.param;
+
+import com.yami.shop.bean.model.Sku;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * 商品参数
+ * @author LGH
+ */
+@Data
+public class CategoryProductParam {
+
+    /**
+     * 产品ID
+     */
+    private Long prodId;
+
+    /**
+     * 店铺id
+     */
+    private Long shopId;
+
+
+    /**
+     * 商品名称
+     */
+
+    private String prodName;
+
+    /**
+     * 商品价格
+     */
+    private Double price;
+
+    /**
+     * 库存量
+     */
+    private Integer totalStocks;
+    /**
+     * 库存量
+     */
+    private Integer salesVolume;
+
+    /**
+     * 图片
+     */
+    private String pic;
+
+    /**
+     * sku列表字符串
+     */
+    private List<Sku> skuList;
+
+
+}

+ 38 - 19
yami-shop-platform/src/main/java/com/yami/shop/platform/task/OrderTask.java

@@ -23,6 +23,7 @@ import com.yami.shop.bean.model.*;
 import com.yami.shop.bean.param.OrderDto;
 import com.yami.shop.common.enums.PayType;
 import com.yami.shop.common.exception.YamiShopBindException;
+import com.yami.shop.common.util.RedisUtil;
 import com.yami.shop.dao.DeviceFeyMapper;
 import com.yami.shop.delivery.comment.api.paotui.PaoTuiApi;
 import com.yami.shop.delivery.comment.param.DeliveryOrderItemParam;
@@ -35,6 +36,7 @@ import org.apache.logging.log4j.core.util.JsonUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.http.ResponseEntity;
 import org.springframework.stereotype.Component;
 
@@ -66,34 +68,50 @@ public class OrderTask {
     private IHBOrderService ihbOrderService;
 
 
-    public void cancelOrder(){
+    public void cancelOrder() {
         Date now = new Date();
         logger.info("取消超时未支付订单。。。");
-        // 获取15分钟之前未支付的订单
-        List<Order> orders = orderService.selectCancelOrders(OrderStatus.UNPAY.value(),DateUtil.offsetMinute(now, -15));
-        if (CollectionUtil.isEmpty(orders)) {
-            return;
-        }
+        String lockKey = "cancel_timeout_orders_lock";
+        // 使用分布式锁或数据库行锁
+        try {
+            if (!RedisUtil.set(lockKey, "locked", 30)) {
+                logger.info("任务正在执行中,跳过本次执行");
+                return;
+            }
+            // 获取15分钟之前未支付的订单
+            try {
+                List<Order> orders = orderService.selectCancelOrders(OrderStatus.UNPAY.value(), DateUtil.offsetMinute(now, -15));
+                if (CollectionUtil.isEmpty(orders)) {
+                    return;
+                }
 
 //        List<Order>  cancelOrderList = this.chackOrders(orders);
 
 
-        //TODO zx定时任务加回积分待完善
-        orderService.cancelOrders(orders,"未按时支付");
+                //TODO zx定时任务加回积分待完善
+                orderService.cancelOrders(orders, "未按时支付");
 
-        // 移除缓存
-        this.removeCache(orders);
+                // 移除缓存
+                this.removeCache(orders);
+            } finally {
+                // 释放锁
+                RedisUtil.del(lockKey);
+            }
+        } catch (Exception e) {
+            // 释放锁
+            RedisUtil.del(lockKey);
+        }
 
     }
 
     /**
      * 确认收货
      */
-    public void confirmOrder(){
+    public void confirmOrder() {
         Date now = new Date();
         logger.info("系统自动确认收货订单。。。");
         // 获取10天之前等待确认收货的订单
-        List<Order> orders = orderService.listUnRefundOrderAndOrderItems(OrderStatus.RECEIVED.value(),DateUtil.offsetDay(now, -10));
+        List<Order> orders = orderService.listUnRefundOrderAndOrderItems(OrderStatus.RECEIVED.value(), DateUtil.offsetDay(now, -10));
         if (CollectionUtil.isEmpty(orders)) {
             return;
         }
@@ -181,10 +199,11 @@ public class OrderTask {
 
     /**
      * 查询订单,去除已支付的订单
+     *
      * @param orders
      */
-    private List<Order> chackOrders(List<Order> orders){
-        List<String> orderNumbers=orders.stream().map(Order::getOrderNumber).collect(Collectors.toList());
+    private List<Order> chackOrders(List<Order> orders) {
+        List<String> orderNumbers = orders.stream().map(Order::getOrderNumber).collect(Collectors.toList());
         // 收集未支付的订单
         List<Order> orderList = new ArrayList<>();
         //获取订单对应的订单结算数据
@@ -194,17 +213,17 @@ public class OrderTask {
                 .collect(Collectors.toMap(OrderSettlement::getOrderNumber, orderSettlement -> orderSettlement));
         for (Order order : orders) {
             OrderSettlement orderSettlement = orderSettlementMap.get(order.getOrderNumber());
-            if (Objects.isNull(orderSettlement) || Objects.isNull(orderSettlement.getPayType()) || Objects.isNull(orderSettlement.getPayNo())){
+            if (Objects.isNull(orderSettlement) || Objects.isNull(orderSettlement.getPayType()) || Objects.isNull(orderSettlement.getPayNo())) {
                 orderList.add(order);
                 continue;
             }
             PayInfoBo payInfo = payManagerService.getPayInfo(PayType.instance(orderSettlement.getPayType()), orderSettlement.getPayNo());
-            if(payInfo.getIsPaySuccess()){
+            if (payInfo.getIsPaySuccess()) {
                 // 根据内部订单号更新order settlement
-                List<Order> successOrderList = payService.paySuccess(payInfo.getPayNo(), payInfo.getBizPayNo(),order.getPayType());
+                List<Order> successOrderList = payService.paySuccess(payInfo.getPayNo(), payInfo.getBizPayNo(), order.getPayType());
                 // 移除缓存
                 this.removeCache(successOrderList);
-            }else {
+            } else {
                 orderList.add(order);
             }
         }
@@ -214,7 +233,7 @@ public class OrderTask {
     /**
      * 移除缓存
      */
-    private void removeCache(List<Order> orders){
+    private void removeCache(List<Order> orders) {
         for (Order order : orders) {
             List<OrderItem> orderItems = order.getOrderItems();
             for (OrderItem orderItem : orderItems) {

+ 4 - 3
yami-shop-service/src/main/java/com/yami/shop/dao/ProductMapper.java

@@ -23,6 +23,7 @@ import com.yami.shop.bean.model.ChannelProd;
 import com.yami.shop.bean.model.OrderItem;
 import com.yami.shop.bean.model.Product;
 import com.yami.shop.bean.model.ShopDetail;
+import com.yami.shop.bean.param.CategoryProductParam;
 import com.yami.shop.bean.param.ProdOrderParam;
 import com.yami.shop.bean.param.ProductExportParam;
 import com.yami.shop.bean.param.ProductParam;
@@ -169,7 +170,7 @@ public interface ProductMapper extends BaseMapper<Product> {
     /**
      * 根据分类ID、商户ID查询归属的所有商品
      */
-    IPage<Product> listProdByCIdAndSId(@Param("page") Page page, @Param("prodByCategoryIdAndShopIdDTO") ProdByCategoryIdAndShopIdDTO prodByCategoryIdAndShopIdDTO);
+    IPage<CategoryProductParam> listProdByCIdAndSId(@Param("page") Page page, @Param("prodByCategoryIdAndShopIdDTO") ProdByCategoryIdAndShopIdDTO prodByCategoryIdAndShopIdDTO);
 
     /**
      * 根据分类ID、商户ID查询归属的所有商品
@@ -185,9 +186,9 @@ public interface ProductMapper extends BaseMapper<Product> {
      */
     Product selectByHbSpuId(@Param("hbSpuId") String hbSpuId);
 
-    ChannelProd findByProdIdAndShopId(@Param("prodId")Long prodId,@Param("shopId") Long shopId);
+    ChannelProd findByProdIdAndShopId(@Param("prodId")Long prodId,@Param("shopId") Long shopId,@Param("channelId") Long channelId);
 
-    List<ProductDto> findByProdIdAndShopIdAndPrice(@Param("prodId")Long prodId, @Param("shopId")Long shopId, @Param("increased")BigDecimal increased, @Param("decreased")BigDecimal decreased);
+    List<ProductDto> findByProdIdAndShopIdAndPrice(@Param("prodId")Long prodId, @Param("shopId")Long shopId,@Param("channelId") Long channelId, @Param("increased")BigDecimal increased, @Param("decreased")BigDecimal decreased);
 
     IPage<SearchProdDto> findByProdAndShop(@Param("page") PageParam<SearchProdDto> page, @Param("list")List<ProductDto> productDtos);
 

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

@@ -21,7 +21,7 @@ import java.util.List;
 public interface UserShopBehaviorMapper extends BaseMapper<UserShopBehavior> {
     int findByUserIdCount(@Param("userId") String userId);
 
-    List<UserShopBehavior> findByUserId(@Param("userId")String userId,@Param("num")Integer num);
+    List<UserShopBehavior> findByUserId(@Param("userId")String userId,@Param("num")Integer num,@Param("shopId") Long shopId,@Param("channelId") Long channelId);
 
-    UserShopBehavior findByUserIdAndProd(@Param("userId")String userId,@Param("prodId") Long prodId);
+    UserShopBehavior findByUserIdAndProd(@Param("userId")String userId,@Param("shopId")Long shopId,@Param("prodId") Long prodId,@Param("channelId")Long channelId);
 }

+ 2 - 1
yami-shop-service/src/main/java/com/yami/shop/service/ProductService.java

@@ -18,6 +18,7 @@ import com.yami.shop.bean.app.dto.TagProductDto;
 import com.yami.shop.bean.app.param.SearchParam;
 import com.yami.shop.bean.dto.*;
 import com.yami.shop.bean.model.Product;
+import com.yami.shop.bean.param.CategoryProductParam;
 import com.yami.shop.bean.param.OfflineHandleEventAuditParam;
 import com.yami.shop.bean.param.ProductExportParam;
 import com.yami.shop.bean.param.ProductParam;
@@ -146,7 +147,7 @@ public interface ProductService extends IService<Product> {
     /**
      * 根据分类ID、商户ID查询归属的所有商品
      */
-    IPage<Product> listProdByCategoryIdAndShopId(ProdByCategoryIdAndShopIdDTO prodByCategoryIdAndShopIdDTO);
+    IPage<CategoryProductParam> listProdByCategoryIdAndShopId(ProdByCategoryIdAndShopIdDTO prodByCategoryIdAndShopIdDTO);
 
     /**
      * 根据商品ID查询相似商品

+ 5 - 4
yami-shop-service/src/main/java/com/yami/shop/service/UserShopBehaviorService.java

@@ -19,6 +19,7 @@ import com.yami.shop.bean.model.Area;
 import com.yami.shop.bean.model.ChannelProd;
 import com.yami.shop.bean.model.UserShopBehavior;
 import com.yami.shop.common.util.PageParam;
+import org.springframework.web.bind.annotation.RequestParam;
 
 import java.math.BigDecimal;
 import java.util.List;
@@ -41,7 +42,7 @@ public interface UserShopBehaviorService extends IService<UserShopBehavior> {
      * @param num 取前几条数据
      * @return
      */
-    List<UserShopBehavior> findByUserId(String userId,Integer num);
+    List<UserShopBehavior> findByUserId(String userId,Integer num, Long shopId, Long channelId);
 
     /**
      * 根据用户id和商品id查询当前用户是否有查询同一商品的痕迹
@@ -49,11 +50,11 @@ public interface UserShopBehaviorService extends IService<UserShopBehavior> {
      * @param prodId
      * @return
      */
-    UserShopBehavior findByUserIdAndProd(String userId, Long prodId);
+    UserShopBehavior findByUserIdAndProd(String userId,Long shopId, Long prodId,Long channelId);
 
-    ChannelProd findByProdId(Long prodId, Long shopId);
+    ChannelProd findByProdId(Long prodId, Long shopId,Long channelId);
 
-    List<ProductDto> findByProdIdAndShopIdAndPrice(Long prodId, Long shopId, BigDecimal increased, BigDecimal decreased);
+    List<ProductDto> findByProdIdAndShopIdAndPrice(Long prodId, Long shopId,Long channelId, BigDecimal increased, BigDecimal decreased);
 
     IPage<SearchProdDto> findByProdAndShop(PageParam<SearchProdDto> page, List<ProductDto> productDtos,String userId);
 

+ 2 - 2
yami-shop-service/src/main/java/com/yami/shop/service/impl/ProductServiceImpl.java

@@ -753,8 +753,8 @@ public class ProductServiceImpl extends ServiceImpl<ProductMapper, Product> impl
     }
 
     @Override
-    public IPage<Product> listProdByCategoryIdAndShopId(ProdByCategoryIdAndShopIdDTO prodByCategoryIdAndShopIdDTO) {
-        IPage<Product> productIPage = productMapper.listProdByCIdAndSId(new Page<>(prodByCategoryIdAndShopIdDTO.getCurrent(), prodByCategoryIdAndShopIdDTO.getSize()),
+    public IPage<CategoryProductParam> listProdByCategoryIdAndShopId(ProdByCategoryIdAndShopIdDTO prodByCategoryIdAndShopIdDTO) {
+        IPage<CategoryProductParam> productIPage = productMapper.listProdByCIdAndSId(new Page<>(prodByCategoryIdAndShopIdDTO.getCurrent(), prodByCategoryIdAndShopIdDTO.getSize()),
                 prodByCategoryIdAndShopIdDTO);
         productIPage.getRecords().forEach(product -> {
             List<Sku> skuList = skuMapper.listByProdId(product.getProdId());

+ 8 - 8
yami-shop-service/src/main/java/com/yami/shop/service/impl/UserShopBehaviorServiceImpl.java

@@ -56,23 +56,23 @@ public class UserShopBehaviorServiceImpl extends ServiceImpl<UserShopBehaviorMap
     }
 
     @Override
-    public List<UserShopBehavior> findByUserId(String userId,Integer num) {
-        return baseMapper.findByUserId(userId,num);
+    public List<UserShopBehavior> findByUserId(String userId,Integer num, Long shopId, Long channelId) {
+        return baseMapper.findByUserId(userId,num,shopId,channelId);
     }
 
     @Override
-    public UserShopBehavior findByUserIdAndProd(String userId, Long prodId) {
-        return baseMapper.findByUserIdAndProd(userId,prodId);
+    public UserShopBehavior findByUserIdAndProd(String userId,Long shopId, Long prodId,Long channelId) {
+        return baseMapper.findByUserIdAndProd(userId,shopId,prodId,channelId);
     }
 
     @Override
-    public ChannelProd findByProdId(Long prodId, Long shopId) {
-        return productMapper.findByProdIdAndShopId(prodId,shopId);
+    public ChannelProd findByProdId(Long prodId, Long shopId,Long channelId) {
+        return productMapper.findByProdIdAndShopId(prodId,shopId,channelId);
     }
 
     @Override
-    public List<ProductDto> findByProdIdAndShopIdAndPrice(Long prodId, Long shopId, BigDecimal increased, BigDecimal decreased) {
-        return productMapper.findByProdIdAndShopIdAndPrice(prodId,shopId,increased,decreased);
+    public List<ProductDto> findByProdIdAndShopIdAndPrice(Long prodId, Long shopId,Long channelId, BigDecimal increased, BigDecimal decreased) {
+        return productMapper.findByProdIdAndShopIdAndPrice(prodId,shopId,channelId,increased,decreased);
     }
 
     @Override

+ 68 - 59
yami-shop-service/src/main/resources/mapper/ProductMapper.xml

@@ -815,77 +815,85 @@
             p.create_time DESC
     </select>
 
-    <select id="listProdByCIdAndSId" parameterType="com.yami.shop.bean.dto.ProdByCategoryIdAndShopIdDTO" resultType="com.yami.shop.bean.model.Product">
+    <select id="listProdByCIdAndSId" parameterType="com.yami.shop.bean.dto.ProdByCategoryIdAndShopIdDTO" resultType="com.yami.shop.bean.param.CategoryProductParam" >
 
         SELECT
-            tp.prod_id,
-            tp.prod_name,
-            tcp.shop_id,
-            tp.brand_id,
-            tp.brand_name,
-            tp.ori_price,
-            MIN(cp.channel_prod_price) AS price,
-            tp.score_price,
-            tp.brief,
-            tp.video,
-            tp.pic,
-            tp.content,
-            tp.imgs,
-            tp.status,
-            tp.is_delete,
-            tp.shop_category_id,
-            tp.category_id,
-            tp.hb_front_category_id,
-            tp.sold_num,
-            COALESCE(SUM(tss.shop_sku_stocks), 0) AS total_stocks,
-            tp.delivery_mode,
-            tp.delivery_template_id,
-            tp.create_time,
-            tp.update_time,
-            tp.putaway_time,
-            tp.version,
-            tp.prod_type,
-            tp.activity_id,
-            tp.sup_id,
-            tp.hb_spu_id,
-            tp.hb_status,
-
-            COALESCE ((
-                          SELECT
-                              SUM( oi2.prod_count )
-                          FROM
-                              tz_order_item oi2
-                                  INNER JOIN tz_order o2 ON o2.order_number = oi2.order_number
-                          WHERE
-                              oi2.shop_id = #{prodByCategoryIdAndShopIdDTO.shopId}
-                            AND oi2.prod_id = tp.prod_id
-                            AND o2.hb_order_status IN ( 20, 30, 40, 70, 80 )
-                            AND o2.delete_status = 0
-                      ),
-                      0
-            ) AS salesVolume
+        tp.prod_id,
+        tp.prod_name,
+        tcp.shop_id,
+        MIN(cp.channel_prod_price) AS price,
+        tp.pic,
+        tss.shop_sku_stocks AS total_stocks,
+
+        COALESCE ((
+        SELECT
+        SUM( oi2.prod_count )
+        FROM
+        tz_order_item oi2
+        INNER JOIN tz_order o2 ON o2.order_number = oi2.order_number
+        WHERE
+        oi2.shop_id = #{prodByCategoryIdAndShopIdDTO.shopId}
+        AND oi2.prod_id = tp.prod_id
+        AND o2.hb_order_status IN ( 20, 30, 40, 70, 80 )
+        AND o2.delete_status = 0
+        ),
+        0
+        ) AS sales_volume
 
         FROM tz_prod tp
-                 INNER JOIN tz_category_prod tcp ON tp.prod_id = tcp.prod_id
-                   AND tcp.is_delete = 0 AND tcp.shop_id = #{prodByCategoryIdAndShopIdDTO.shopId}
-                   and tcp.category_id = #{prodByCategoryIdAndShopIdDTO.categoryId}
-                 LEFT JOIN tz_shop_sku tss ON tss.spu_id = tp.prod_id
-                 JOIN tz_channel_prod cp ON cp.shop_id = tcp.shop_id
-            AND cp.sku_id = tss.sku_id
-            AND cp.is_delete = 0
+        INNER JOIN tz_category_prod tcp ON tp.prod_id = tcp.prod_id
+        AND tcp.is_delete = 0 AND tcp.shop_id = #{prodByCategoryIdAndShopIdDTO.shopId}
+        and tcp.category_id = #{prodByCategoryIdAndShopIdDTO.categoryId}
+        LEFT JOIN tz_shop_sku tss ON tss.spu_id = tp.prod_id and tss.shop_id = 1
+        INNER JOIN tz_channel_prod cp ON cp.shop_id = tcp.shop_id
+        AND cp.sku_id = tss.sku_id
+        AND cp.is_delete = 0
         <if test="prodByCategoryIdAndShopIdDTO.channelId == null or prodByCategoryIdAndShopIdDTO.channelId == 0">
             and cp.channel_id = 1
         </if>
         <if test="prodByCategoryIdAndShopIdDTO.channelId != null and prodByCategoryIdAndShopIdDTO.channelId != 0">
             and cp.channel_id = #{prodByCategoryIdAndShopIdDTO.channelId}
         </if>
-            AND cp.channel_prod_price IS NOT NULL
+        AND cp.channel_prod_price IS NOT NULL
         WHERE tp.STATUS = 1
-          AND tp.`is_delete` = 0
+        AND tp.`is_delete` = 0
         GROUP BY tp.prod_id
         ORDER BY MAX(tp.create_time) DESC
     </select>
 
+<!--    <resultMap id="listProdByCIdAndSIdMap" type="com.yami.shop.bean.param.CategoryProductParam">-->
+<!--        <id property="prodId" column="prod_id"/>-->
+<!--        <result property="prodName" column="prod_name"/>-->
+<!--        <result property="shopId" column="shop_id"/>-->
+<!--        <result property="price" column="price"/>-->
+<!--        <result property="pic" column="pic"/>-->
+<!--        <result property="salesVolume" column="sales_volume"/>-->
+<!--        <result property="totalStocks" column="total_stocks"/>-->
+<!--        <collection property="skuList" javaType="list" ofType="com.yami.shop.bean.model.Sku">-->
+<!--            <id column="sku_id" jdbcType="BIGINT" property="skuId" />-->
+<!--            <result column="prod_id" jdbcType="BIGINT" property="prodId" />-->
+<!--            <result column="properties" jdbcType="VARCHAR" property="properties" />-->
+<!--            <result column="sku_prod_name" jdbcType="VARCHAR" property="prodName" />-->
+<!--            <result column="sku_ori_price" jdbcType="DECIMAL" property="oriPrice" />-->
+<!--            <result column="sku_price" jdbcType="DECIMAL" property="price" />-->
+<!--            <result column="weight" jdbcType="DECIMAL" property="weight" />-->
+<!--            <result column="volume" jdbcType="DECIMAL" property="volume" />-->
+<!--            <result column="stocks" jdbcType="INTEGER" property="stocks" />-->
+<!--            <result column="sku_score" jdbcType="INTEGER" property="skuScore" />-->
+<!--            <result column="actual_stocks" jdbcType="INTEGER" property="actualStocks" />-->
+<!--            <result column="status" jdbcType="TINYINT" property="status" />-->
+<!--            <result column="update_time" jdbcType="TIMESTAMP" property="updateTime" />-->
+<!--            <result column="rec_time" jdbcType="TIMESTAMP" property="recTime" />-->
+<!--            <result column="party_code" jdbcType="VARCHAR" property="partyCode" />-->
+<!--            <result column="model_id" jdbcType="VARCHAR" property="modelId" />-->
+<!--            <result column="sku_pic" jdbcType="VARCHAR" property="pic" />-->
+<!--            <result column="sku_name" jdbcType="VARCHAR" property="skuName" />-->
+<!--            <result column="is_delete" jdbcType="INTEGER" property="isDelete"/>-->
+<!--        </collection>-->
+
+<!--    </resultMap>-->
+
+
     <select id="listProdByCategoryIdAndShopId2" parameterType="com.yami.shop.bean.dto.ProdByCategoryIdAndShopIdDTO" resultType="com.yami.shop.bean.model.Product">
         select t.*,t1.salesVolume from (
         SELECT
@@ -925,7 +933,7 @@
     <select id="findByProdIdAndShopId" resultType="com.yami.shop.bean.model.ChannelProd">
         select a.* from tz_channel_prod a
         INNER join  tz_sku b  on  b.prod_id = #{prodId} and b.sku_id = a.sku_id and b.is_delete = 0
-        where a.shop_id=#{shopId} and a.is_delete = 0 ORDER BY a.channel_prod_price  LIMIT 1
+        where a.shop_id=#{shopId} and a.channel_id = #{channelId} and a.is_delete = 0 ORDER BY a.channel_prod_price  LIMIT 1
     </select>
 
     <select id="findByProdIdAndShopIdAndPrice" resultType="com.yami.shop.bean.app.dto.ProductDto">
@@ -943,6 +951,7 @@
         LEFT JOIN (SELECT count(h.order_item_id) as count,h.prod_id  from  tz_order g LEFT JOIN tz_order_item h on g.order_number = h.order_number where g.refund_status is null and g.delete_status and g.hb_order_status = 80 GROUP BY h.prod_id) i on d.prod_id = i.prod_id -- 统计销量
         WHERE a.prod_id = #{prodId}
         AND d.shop_id = #{shopId}
+        AND f.channel_id = #{channelId}
         AND b.`level` = 2
         and a.is_delete =0
         ORDER BY i.count DESC limit 6
@@ -993,7 +1002,7 @@
         FROM tz_category_prod cp
         INNER JOIN tz_prod p on p.prod_id = cp.prod_id
         LEFT JOIN tz_shop_sku ss on ss.spu_id = cp.prod_id and ss.is_delete = 0
-        INNER JOIN tz_channel_prod cha on cha.sku_id = ss.sku_id and cha.is_delete = 0
+        INNER JOIN tz_channel_prod cha on cha.sku_id = ss.sku_id and cha.is_delete = 0 and cha.channel_id =  #{channelId}
         LEFT JOIN tz_basket b ON b.prod_id = p.prod_id AND b.user_id = COALESCE(NULLIF(#{userId}, ''), '0')
         where p.is_delete = 0 and
         <if test="channelId == null">cha.channel_id = 1</if>
@@ -1015,7 +1024,7 @@
         FROM tz_channel_prod base_cha
         INNER JOIN tz_shop_sku base_ss ON base_cha.sku_id = base_ss.sku_id
         WHERE base_ss.spu_id = #{prodId}
-        AND base_cha.channel_id = 1
+        AND base_cha.channel_id =  #{channelId}
         AND base_cha.is_delete = 0
         AND base_ss.is_delete = 0
         AND cha.channel_prod_price BETWEEN

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

@@ -8,9 +8,9 @@
 
     </select>
     <select id="findByUserId" resultType="com.yami.shop.bean.model.UserShopBehavior">
-        select * from tz_user_shop_behavior  where user_id = #{userId} order by create_time limit #{num}
+        select * from tz_user_shop_behavior  where user_id = #{userId} and channel_id = #{channelId} and shop_id = #{shopId} order by create_time limit #{num}
     </select>
     <select id="findByUserIdAndProd" resultType="com.yami.shop.bean.model.UserShopBehavior">
-        select * from tz_user_shop_behavior  where user_id = #{userId} and prod_id =#{prodId}
+        select * from tz_user_shop_behavior  where user_id = #{userId} and prod_id =#{prodId} and channel_id = #{channelId} and shop_id = #{shopId}
     </select>
 </mapper>