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

Merge branch 'master' of http://git.zonelife.cn:3000/fubojin/smqjh

# Conflicts:
#	yami-shop-service/src/main/java/com/yami/shop/service/impl/OrderServiceImpl.java
zhangxin пре 3 недеља
родитељ
комит
2d85aa4ded
25 измењених фајлова са 215 додато и 103 уклоњено
  1. 8 4
      yami-shop-api/src/main/java/com/yami/shop/api/controller/ProdCommController.java
  2. 4 2
      yami-shop-api/src/main/java/com/yami/shop/api/controller/SkuController.java
  3. 14 0
      yami-shop-bean/src/main/java/com/yami/shop/bean/app/dto/ProductDto.java
  4. 4 0
      yami-shop-bean/src/main/java/com/yami/shop/bean/model/Product.java
  5. 2 0
      yami-shop-bean/src/main/java/com/yami/shop/bean/vo/SimilarProdListVo.java
  6. 3 1
      yami-shop-security/yami-shop-security-api/src/main/java/com/yami/shop/security/api/config/ResourceServerConfiguration.java
  7. 8 0
      yami-shop-service/src/main/java/com/yami/shop/dao/OrderRefundSkuMapper.java
  8. 4 4
      yami-shop-service/src/main/java/com/yami/shop/dao/ProdCommMapper.java
  9. 1 1
      yami-shop-service/src/main/java/com/yami/shop/dao/SkuMapper.java
  10. 1 0
      yami-shop-service/src/main/java/com/yami/shop/service/OrderRefundService.java
  11. 2 2
      yami-shop-service/src/main/java/com/yami/shop/service/ProdCommService.java
  12. 1 1
      yami-shop-service/src/main/java/com/yami/shop/service/SkuService.java
  13. 1 1
      yami-shop-service/src/main/java/com/yami/shop/service/hb/impl/HBGoodsService.java
  14. 56 15
      yami-shop-service/src/main/java/com/yami/shop/service/hb/impl/HBOrderService.java
  15. 2 1
      yami-shop-service/src/main/java/com/yami/shop/service/impl/OrderRefundServiceImpl.java
  16. 61 5
      yami-shop-service/src/main/java/com/yami/shop/service/impl/OrderServiceImpl.java
  17. 9 9
      yami-shop-service/src/main/java/com/yami/shop/service/impl/ProdCommServiceImpl.java
  18. 2 2
      yami-shop-service/src/main/java/com/yami/shop/service/impl/SkuServiceImpl.java
  19. 3 3
      yami-shop-service/src/main/resources/mapper/OrderItemMapper.xml
  20. 2 1
      yami-shop-service/src/main/resources/mapper/OrderMapper.xml
  21. 2 4
      yami-shop-service/src/main/resources/mapper/OrderRefundMapper.xml
  22. 7 0
      yami-shop-service/src/main/resources/mapper/OrderRefundSkuMapper.xml
  23. 4 4
      yami-shop-service/src/main/resources/mapper/ProdCommMapper.xml
  24. 12 41
      yami-shop-service/src/main/resources/mapper/ProductMapper.xml
  25. 2 2
      yami-shop-service/src/main/resources/mapper/SkuMapper.xml

+ 8 - 4
yami-shop-api/src/main/java/com/yami/shop/api/controller/ProdCommController.java

@@ -65,14 +65,18 @@ public class ProdCommController {
 
     @GetMapping("/commList")
     @ApiOperation(value = "商品详情-查看商品评价(0好评 1中评 2差评 3有图)")
-    public ResponseEntity<IPage<ProdComm>> commList(PageParam<ProdComm> page, Long skuId,Long shopId, Integer commStatus,Long channelId) {
-        return ResponseEntity.ok(prodCommService.commList(page,skuId,shopId,commStatus,channelId));
+    public ResponseEntity<IPage<ProdComm>> commList(PageParam<ProdComm> page, Long prodId,Long shopId, Integer commStatus,Long channelId) {
+        shopId = shopId == null ? 1 : shopId;
+        channelId = channelId == null ? 1 : channelId;
+        return ResponseEntity.ok(prodCommService.commList(page,prodId,shopId,commStatus,channelId));
     }
 
     @GetMapping("/commentCount")
     @ApiOperation(value = "商品详情-评价数量-好评率")
-    public ResponseEntity<Map<String, Object>> commentCount(Long skuId,Long shopId,Long channelId) {
-        return ResponseEntity.ok(prodCommService.commentCount(skuId,shopId,channelId));
+    public ResponseEntity<Map<String, Object>> commentCount(Long prodId,Long shopId,Long channelId) {
+        shopId = shopId == null ? 1 : shopId;
+        channelId = channelId == null ? 1 : channelId;
+        return ResponseEntity.ok(prodCommService.commentCount(prodId,shopId,channelId));
     }
 
     @GetMapping("/myCommList")

+ 4 - 2
yami-shop-api/src/main/java/com/yami/shop/api/controller/SkuController.java

@@ -51,8 +51,10 @@ public class SkuController {
 
     @GetMapping("/buyTogetherOften")
     @ApiOperation(value = "商品详情-经常一起买")
-    public ResponseEntity<IPage<SkuBuyTogetherOftenVo>> buyTogetherOften(PageParam<SkuBuyTogetherOftenVo> page, Long skuId,Long shopId,Long channelId) {
-        return ResponseEntity.ok(skuService.buyTogetherOften(page,skuId,shopId,channelId));
+    public ResponseEntity<IPage<SkuBuyTogetherOftenVo>> buyTogetherOften(PageParam<SkuBuyTogetherOftenVo> page, Long prodId,Long shopId,Long channelId) {
+        shopId = shopId == null ? 1 : shopId;
+        channelId = channelId == null ? 1 : channelId;
+        return ResponseEntity.ok(skuService.buyTogetherOften(page,prodId,shopId,channelId));
     }
 
 }

+ 14 - 0
yami-shop-bean/src/main/java/com/yami/shop/bean/app/dto/ProductDto.java

@@ -122,10 +122,24 @@ public class ProductDto {
     private Long activityId;
 
 
+    /**
+     * 品牌Id
+     */
+    private Long brandId;
+    /**
+     * 品牌名称
+     */
+    private String brandName;
+
     /**
      * 活动参考价
      */
     @ApiModelProperty(value = "活动参考价", required = true)
     private Double activityPrice;
 
+    /**
+     * 商品副标题
+     */
+    private String halfTitle;
+
 }

+ 4 - 0
yami-shop-bean/src/main/java/com/yami/shop/bean/model/Product.java

@@ -124,6 +124,10 @@ public class Product implements Serializable {
      * 品牌名称
      */
     private String brandName;
+    /**
+     * 商品副标题
+     */
+    private String halfTitle;
 
     /**
      * 已经销售数量

+ 2 - 0
yami-shop-bean/src/main/java/com/yami/shop/bean/vo/SimilarProdListVo.java

@@ -16,6 +16,8 @@ import lombok.Data;
 @Data
 public class SimilarProdListVo {
 
+    @ApiModelProperty("门店ID")
+    private Long shopId;
     @ApiModelProperty("商品spuID")
     private Long prodId;
     @ApiModelProperty("商品名")

+ 3 - 1
yami-shop-security/yami-shop-security-api/src/main/java/com/yami/shop/security/api/config/ResourceServerConfiguration.java

@@ -48,7 +48,9 @@ public class ResourceServerConfiguration extends ResourceServerConfigurerAdapter
                 .authorizeRequests()
                 .antMatchers(
                         "/p/appointment/**",
-                        "/p/order/**"
+                        "/p/order/**",
+                        "/p/prodComm/commList",
+                        "/p/prodComm/commentCount"
                         ).permitAll()
                 .and()
 

+ 8 - 0
yami-shop-service/src/main/java/com/yami/shop/dao/OrderRefundSkuMapper.java

@@ -13,10 +13,18 @@ package com.yami.shop.dao;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.yami.shop.bean.model.OrderRefundSku;
 import com.yami.shop.bean.vo.OrderRefundSkuVo;
+import org.springframework.data.repository.query.Param;
 
 import java.util.List;
 
 public interface OrderRefundSkuMapper extends BaseMapper<OrderRefundSku> {
 
     List<OrderRefundSkuVo> selectByRefundId(Long refundId);
+
+    /**
+     * 根据订单项id查询
+     * @param orderItemId
+     * @return
+     */
+    List<OrderRefundSku> selectByOrderItemList(@Param("orderItemId") Long orderItemId);
 }

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

@@ -30,15 +30,15 @@ public interface ProdCommMapper extends BaseMapper<ProdComm> {
 
     IPage<ProdComm> getProdCommPage(Page page, @Param("prodComm") ProdComm prodComm, @Param("shopId") Long shopId);
 
-    IPage<ProdComm> commList(@Param("page") PageParam<ProdComm> page, @Param("skuId") Long skuId,
+    IPage<ProdComm> commList(@Param("page") PageParam<ProdComm> page, @Param("prodId") Long prodId,
                              @Param("shopId") Long shopId,@Param("commStatus") Integer commStatus,
                              @Param("channelId") Long channelId);
 
-    Integer commentCount(@Param("skuId") Long skuId, @Param("shopId") Long shopId, @Param("evaluate") Integer evaluate,@Param("channelId") Long channelId);
+    Integer commentCount(@Param("prodId") Long prodId, @Param("shopId") Long shopId, @Param("evaluate") Integer evaluate,@Param("channelId") Long channelId);
 
-    Integer picCount(@Param("skuId") Long skuId, @Param("shopId") Long shopId,@Param("channelId") Long channelId);
+    Integer picCount(@Param("prodId") Long prodId, @Param("shopId") Long shopId,@Param("channelId") Long channelId);
 
-    String goodRate(@Param("skuId") Long skuId, @Param("shopId") Long shopId,@Param("channelId") Long channelId);
+    String goodRate(@Param("prodId") Long prodId, @Param("shopId") Long shopId,@Param("channelId") Long channelId);
 
     IPage<ProdComm> myCommList(@Param("page") PageParam<ProdComm> page, @Param("userId") String userId);
 

+ 1 - 1
yami-shop-service/src/main/java/com/yami/shop/dao/SkuMapper.java

@@ -53,6 +53,6 @@ public interface SkuMapper extends BaseMapper<Sku> {
     Sku selectByHbSkuId(@Param("hbSkuId") String hbSkuId);
 
     IPage<SkuBuyTogetherOftenVo> buyTogetherOften(@Param("page") PageParam<SkuBuyTogetherOftenVo> page,
-                                                  @Param("skuId") Long skuId, @Param("shopId") Long shopId,
+                                                  @Param("prodId") Long prodId, @Param("shopId") Long shopId,
                                                   @Param("channelId") Long channelId);
 }

+ 1 - 0
yami-shop-service/src/main/java/com/yami/shop/service/OrderRefundService.java

@@ -191,6 +191,7 @@ public interface OrderRefundService extends IService<OrderRefund> {
      */
     HBR partRefund(JSONObject hBRequest);
 
+     void addOrderRefundRecord(Long refundId, Integer auditStatus, Integer sort, String instructions) ;
     /**
      * 创建退款结果接口-回调接口
      * @param hBRequest 海博请求参数

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

@@ -32,9 +32,9 @@ public interface ProdCommService extends IService<ProdComm> {
 
     void comm(Order order, ProdCommParam prodCommParam);
 
-    IPage<ProdComm> commList(PageParam<ProdComm> page,Long skuId,Long shopId,Integer commStatus,Long channelId);
+    IPage<ProdComm> commList(PageParam<ProdComm> page,Long prodId,Long shopId,Integer commStatus,Long channelId);
 
-    Map<String, Object> commentCount(Long skuId, Long shopId,Long channelId);
+    Map<String, Object> commentCount(Long prodId, Long shopId,Long channelId);
 
     IPage<ProdComm> myCommList(PageParam<ProdComm> page, String userId);
 

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

@@ -65,5 +65,5 @@ public interface SkuService extends IService<Sku> {
 
     void removeSkuCacheBySkuId(Long skuId, Long prodId);
 
-    IPage<SkuBuyTogetherOftenVo> buyTogetherOften(PageParam<SkuBuyTogetherOftenVo> page, Long skuId,Long shopId,Long channelId);
+    IPage<SkuBuyTogetherOftenVo> buyTogetherOften(PageParam<SkuBuyTogetherOftenVo> page, Long prodId,Long shopId,Long channelId);
 }

+ 1 - 1
yami-shop-service/src/main/java/com/yami/shop/service/hb/impl/HBGoodsService.java

@@ -544,7 +544,7 @@ public class HBGoodsService implements IHBGoodsService {
         product.setBrandId(productInfo.getLong("brandId"));
         //品牌名称
         product.setBrandName(productInfo.getString("brandName"));
-        product.setBrandName(productInfo.getString("brandName"));
+        product.setHalfTitle(productInfo.getString("halfTitle"));
         String descText = productInfo.getString("descText");
         if (StringUtils.isEmpty(descText)) {
             product.setContent("<p>暂无商品详情</p>");

+ 56 - 15
yami-shop-service/src/main/java/com/yami/shop/service/hb/impl/HBOrderService.java

@@ -10,6 +10,7 @@ import com.yami.shop.bean.dto.hb.*;
 import com.yami.shop.bean.enums.*;
 import com.yami.shop.bean.model.*;
 import com.yami.shop.bean.param.OrderRefundParam;
+import com.yami.shop.bean.vo.OrderRefundSkuVo;
 import com.yami.shop.common.config.Constant;
 import com.yami.shop.common.exception.GlobalException;
 import com.yami.shop.common.util.Arith;
@@ -32,6 +33,7 @@ import java.time.Instant;
 import java.time.LocalDate;
 import java.time.ZoneId;
 import java.util.*;
+import java.util.stream.Collectors;
 
 import static com.yami.shop.common.util.HttpUtil.post;
 
@@ -58,6 +60,7 @@ public class HBOrderService implements IHBOrderService {
     private final OrderRiderLocationMapper orderRiderLocationMapper;
     private final OrderRefundService orderRefundService;
     private final OrderService orderService;
+    private final OrderRefundSkuMapper orderRefundSkuMapper;
 
 
     public HBR addHBGoods(JSONObject hbRequest) {
@@ -213,26 +216,64 @@ public class HBOrderService implements IHBOrderService {
             List<OrderItem> listByOrderNumber = orderItemMapper.getListByOrderNumber(order.getOrderNumber());
             List<OrderRefundSku> orderRefundSkuList = new ArrayList<>();
             for (OrderItem orderItem : listByOrderNumber) {
-                OrderRefundSku orderRefundSku = new OrderRefundSku();
-                orderRefundSku.setOrderItemId(orderItem.getOrderItemId());
-                orderRefundSku.setSkuId(orderItem.getSkuId());
-                orderRefundSku.setProductCount(orderItem.getProdCount());
-                orderRefundSku.setSkuPrice(orderItem.getPrice());
-                orderRefundSkuList.add(orderRefundSku);
+
+                // 查询该订单项的所有退款记录
+                List<OrderRefund> orderRefundList = orderRefundService.list(new LambdaQueryWrapper<OrderRefund>()
+                        .eq(OrderRefund::getOrderNumber, orderRefundParam.getOrderNumber())
+                        .eq(OrderRefund::getReturnMoneySts, 70)
+                        .eq(OrderRefund::getOrderItemId, orderItem.getOrderItemId()));
+
+                if (ObjectUtil.isNotEmpty(orderRefundList)) {
+                    // 计算该订单项已退款的总数量(通过退款单查询退款商品)
+                    List<OrderRefundSkuVo> orderRefundSkuVos = orderRefundSkuMapper.selectByRefundId(orderItem.getOrderItemId());
+                    Integer totalRefundedCount = orderRefundSkuVos.stream()
+                            .mapToInt(OrderRefundSkuVo::getProductCount)
+                            .sum();
+
+                    // 计算剩余可退款数量
+                    Integer remainingCount = orderItem.getProdCount() - totalRefundedCount;
+
+                    if (remainingCount > 0) {
+                        // 数量不同,添加剩余数量
+                        OrderRefundSku orderRefundSku = new OrderRefundSku();
+                        orderRefundSku.setOrderItemId(orderItem.getOrderItemId());
+                        orderRefundSku.setSkuId(orderItem.getSkuId());
+                        orderRefundSku.setProductCount(remainingCount); // 设置剩余数量
+                        orderRefundSku.setSkuPrice(orderItem.getPrice());
+                        orderRefundSkuList.add(orderRefundSku);
+                    }
+                    // 如果remainingCount <= 0,说明已全部退款,不添加到列表
+                } else {
+                    // 没有退款记录,正常添加全部数量
+                    OrderRefundSku orderRefundSku = new OrderRefundSku();
+                    orderRefundSku.setOrderItemId(orderItem.getOrderItemId());
+                    orderRefundSku.setSkuId(orderItem.getSkuId());
+                    orderRefundSku.setProductCount(orderItem.getProdCount());
+                    orderRefundSku.setSkuPrice(orderItem.getPrice());
+                    orderRefundSkuList.add(orderRefundSku);
+                }
+            }
+            if (ObjectUtil.isEmpty(orderRefundSkuList)){
+                return;
             }
             orderRefundParam.setOrderRefundSkuList(orderRefundSkuList);
 
-            OrderRefund orderRefund1 = orderRefundService.getOne(new LambdaQueryWrapper<OrderRefund>().eq(OrderRefund::getOrderNumber, orderRefundParam.getOrderNumber()));
-            log.info(" 申请系统退款参数:{}", JSONObject.toJSONString(orderRefund1));
+            OrderRefund orderRefund1 = orderRefundService.getOne(new LambdaQueryWrapper<OrderRefund>()
+                    .eq(OrderRefund::getOrderNumber, orderRefundParam.getOrderNumber())
+                    .notIn(OrderRefund::getReturnMoneySts, Arrays.asList(30, 40, 70)));
+            log.info(" 申请系统退款未处理数据参数:{}", JSONObject.toJSONString(orderRefund1));
             if (ObjectUtil.isNotEmpty(orderRefund1)) {
-                orderRefund1.setReturnMoneySts(ReturnMoneyStsType.SUCCESS.value());
+                orderRefund1.setReturnMoneySts(ReturnMoneyStsType.REJECT.value());
                 orderRefundService.updateById(orderRefund1);
-                //退款单状态同步70
-                orderRefundService.changeStatus(orderRefund1.getRefundSn(), ReturnMoneyStsType.SUCCESS.value());
-            } else {
-                OrderRefund orderRefund = orderService.applyAgain(orderRefundParam, ReturnMoneyStsType.SUCCESS.value());
-                orderRefundService.createRefundOrder(order.getOrderNumber(), orderRefund.getRefundSn());
+                //退款单状态同步驳回
+                orderRefundService.changeStatus(orderRefund1.getRefundSn(), ReturnMoneyStsType.REJECT.value());
+
+                //生成流程记录
+                orderRefundService.addOrderRefundRecord( orderRefund1.getRefundId(), 20, 10,"驳回单个商家整单处理");
             }
+            OrderRefund orderRefund = orderService.applyAgain(orderRefundParam, ReturnMoneyStsType.SUCCESS.value());
+            orderRefundService.createRefundOrder(order.getOrderNumber(), orderRefund.getRefundSn());
+
 
         }
         //成功直接通知海博
@@ -449,7 +490,7 @@ public class HBOrderService implements IHBOrderService {
             orderPayment.setPaymentType(1002);
         } else if (order.getPayType() == 2) {
             orderPayment.setPaymentType(1001);
-        }else {
+        } else {
             orderPayment.setPaymentType(9999);
         }
 

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

@@ -1192,7 +1192,8 @@ public class OrderRefundServiceImpl extends ServiceImpl<OrderRefundMapper, Order
         return HBR.success();
     }
 
-    private void addOrderRefundRecord(Long refundId, Integer auditStatus, Integer sort, String instructions) {
+    @Override
+    public void addOrderRefundRecord(Long refundId, Integer auditStatus, Integer sort, String instructions) {
         OrderRefundRecord orderRefundRecord = new OrderRefundRecord();
         orderRefundRecord.setOrderRefundId(refundId);
         orderRefundRecord.setInstructions(instructions);

+ 61 - 5
yami-shop-service/src/main/java/com/yami/shop/service/impl/OrderServiceImpl.java

@@ -21,6 +21,7 @@ import cn.hutool.core.util.StrUtil;
 import cn.hutool.json.JSONUtil;
 import cn.hutool.poi.excel.ExcelUtil;
 import cn.hutool.poi.excel.ExcelWriter;
+import com.alibaba.fastjson.JSON;
 import com.alibaba.excel.EasyExcel;
 import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy;
 import com.alibaba.fastjson.JSONObject;
@@ -33,6 +34,7 @@ import com.google.common.collect.Maps;
 import com.google.gson.internal.LinkedTreeMap;
 import com.yami.shop.bean.app.dto.OrderCountData;
 import com.yami.shop.bean.app.dto.ShopCartOrderMergerDto;
+import com.yami.shop.bean.dto.hb.HBBaseReq;
 import com.yami.shop.bean.enums.*;
 import com.yami.shop.bean.event.CancelOrderEvent;
 import com.yami.shop.bean.event.ReceiptOrderEvent;
@@ -73,13 +75,14 @@ import javax.servlet.ServletOutputStream;
 import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
 import java.math.BigDecimal;
-import java.net.URLEncoder;
 import java.text.SimpleDateFormat;
 import java.time.Instant;
 import java.time.LocalDateTime;
 import java.util.*;
 import java.util.stream.Collectors;
 
+import static com.yami.shop.common.util.HttpUtil.post;
+
 /**
  * @author lgh on 2018/09/15.
  */
@@ -102,6 +105,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
     private final OrderSettlementMapper orderSettlementMapper;
     private Snowflake snowflake;
     private final OrderRefundSkuMapper orderRefundSkuMapper;
+    private final HBSignUtil hbSignUtil;
 
 
     @Override
@@ -966,9 +970,14 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
                 .eq(OrderRefund::getReturnMoneySts, 70)
                 .eq(OrderRefund::getHandler, Boolean.FALSE)
         );
-        //生成待商家审核记录
-        addOrderRefundRecord(orderRefund.getRefundId(), 25, 6, "平台已退款到微信账户中");
-        addOrderRefundRecord(orderRefund.getRefundId(), 30, 10, "商家已同意收货,正在为你处理退款。");
+        if (ObjectUtils.isNotEmpty(orderRefund)) {
+        Order order = orderMapper.selectById(orderRefund.getOrderId());
+
+            //生成待商家审核记录
+            addOrderRefundRecord(orderRefund.getRefundId(), 25, 6, "平台已退款到微信账户中");
+            addOrderRefundRecord(orderRefund.getRefundId(), 30, 10, "商家已同意收货,正在为你处理退款。");
+            //如果是分次退款最后一个商品需要改变订单状态
+            updateOrderStatus(order);
 
 
         if (ObjectUtils.isNotEmpty(orderRefund)) {
@@ -980,7 +989,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
             long refundExpiredScore = 0L;
             //退款总积分
              Long refundOffsetPoints=0L;
-            Order order = orderMapper.selectById(orderRefund.getOrderId());
+
             if (null == order) throw new GlobalException("该订单不支持退款");
             //判定已完成的时间
             if (Objects.equals(order.getHbOrderStatus(), OrderStatus.SUCCESS.value()) && isPaymentOver7Days(order.getPayTime())) {
@@ -1243,6 +1252,53 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
         }
     }
 
+    /**
+     * 退款成功后,修改订单状态
+     * @param order 订单
+     *              退款单
+     */
+    private void  updateOrderStatus(Order order) {
+        //定义变量是否需要通知海博改变订单状态
+        boolean status = true;
+        for (OrderItem orderItem : orderItemMapper.getListByOrderNumber(order.getOrderNumber())) {
+            List<OrderRefundSku> orderRefundSkus = orderRefundSkuMapper.selectByOrderItemList(orderItem.getOrderItemId());
+            if (ObjectUtils.isEmpty(orderRefundSkus)){
+                status = false;
+                break;
+            }
+            //统计orderRefundSkus里面商品数量
+            int refundCount = orderRefundSkus.stream().mapToInt(OrderRefundSku::getProductCount).sum();
+            if (!orderItem.getProdCount().equals(refundCount)) {
+                status = false;
+                break;
+            }
+        }
+
+        if (status){
+            order.setHbOrderStatus(OrderStatus.CLOSE.value());
+            orderMapper.updateById(order);
+            //通知海博改变订单状态
+                HBBaseReq<Object> build = HBBaseReq.create();
+                build.setAppId(hbSignUtil.getAppId());
+
+                // 3. 构建外层请求体
+                JSONObject requestBody = new JSONObject();
+                requestBody.put("channelOrderId", order.getOrderNumber());
+                requestBody.put("operator", "admin");
+                // 订单操作时间戳毫秒数
+                requestBody.put("operatorTime", System.currentTimeMillis());
+                //操作类型 (20:订单已接单 30:订单待配送 60:订单已取消 80:订单已完成)
+                requestBody.put("operatorType", OrderStatus.CLOSE.value());
+                // 4. 将整个JSON对象序列化为字符串并设置
+                build.setBody(JSON.toJSONString(requestBody));
+
+                build.setSign(hbSignUtil.signMd5(build));
+                log.info("post 订单推送单号参数:{}", JSON.toJSONString(build));
+                String post = post(hbSignUtil.getHBHost() + "/api/order/changeOrderStatus", build);
+                log.info("post 订单推送结果:{}", post);
+        }
+    }
+
     private void addOrderRefundRecord(Long refundId, Integer auditStatus, Integer sort, String instructions) {
         OrderRefundRecord orderRefundRecord = new OrderRefundRecord();
         orderRefundRecord.setOrderRefundId(refundId);

+ 9 - 9
yami-shop-service/src/main/java/com/yami/shop/service/impl/ProdCommServiceImpl.java

@@ -130,8 +130,8 @@ public class ProdCommServiceImpl extends ServiceImpl<ProdCommMapper, ProdComm> i
     }
 
     @Override
-    public IPage<ProdComm> commList(PageParam<ProdComm> page, Long skuId,Long shopId,Integer commStatus,Long channelId) {
-        IPage<ProdComm> commList = prodCommMapper.commList(page, skuId,shopId,commStatus,channelId);
+    public IPage<ProdComm> commList(PageParam<ProdComm> page, Long prodId,Long shopId,Integer commStatus,Long channelId) {
+        IPage<ProdComm> commList = prodCommMapper.commList(page, prodId,shopId,commStatus,channelId);
         List<ProdComm> records = commList.getRecords();
         if (!records.isEmpty()){
             records.forEach(c->
@@ -142,14 +142,14 @@ public class ProdCommServiceImpl extends ServiceImpl<ProdCommMapper, ProdComm> i
     }
 
     @Override
-    public Map<String, Object> commentCount(Long skuId, Long shopId,Long channelId) {
+    public Map<String, Object> commentCount(Long prodId, Long shopId,Long channelId) {
         Map<String, Object> map = new LinkedTreeMap<>();
-        map.put("all", prodCommMapper.commentCount(skuId, shopId,null,channelId));
-        map.put("goodCount", prodCommMapper.commentCount(skuId, shopId,0,channelId));
-        map.put("middleCount", prodCommMapper.commentCount(skuId, shopId,1,channelId));
-        map.put("badCount", prodCommMapper.commentCount(skuId, shopId,2,channelId));
-        map.put("picCount", prodCommMapper.picCount(skuId, shopId,channelId));
-        map.put("goodRate", prodCommMapper.goodRate(skuId, shopId,channelId));
+        map.put("all", prodCommMapper.commentCount(prodId, shopId,null,channelId));
+        map.put("goodCount", prodCommMapper.commentCount(prodId, shopId,0,channelId));
+        map.put("middleCount", prodCommMapper.commentCount(prodId, shopId,1,channelId));
+        map.put("badCount", prodCommMapper.commentCount(prodId, shopId,2,channelId));
+        map.put("picCount", prodCommMapper.picCount(prodId, shopId,channelId));
+        map.put("goodRate", prodCommMapper.goodRate(prodId, shopId,channelId));
         return map;
     }
 

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

@@ -68,7 +68,7 @@ public class SkuServiceImpl extends ServiceImpl<SkuMapper, Sku> implements SkuSe
     }
 
     @Override
-    public IPage<SkuBuyTogetherOftenVo> buyTogetherOften(PageParam<SkuBuyTogetherOftenVo> page, Long skuId,Long shopId,Long channelId) {
-        return skuMapper.buyTogetherOften(page, skuId,shopId,channelId);
+    public IPage<SkuBuyTogetherOftenVo> buyTogetherOften(PageParam<SkuBuyTogetherOftenVo> page, Long prodId,Long shopId,Long channelId) {
+        return skuMapper.buyTogetherOften(page, prodId,shopId,channelId);
     }
 }

+ 3 - 3
yami-shop-service/src/main/resources/mapper/OrderItemMapper.xml

@@ -31,7 +31,7 @@
 
     <select id="listByOrderNumber" resultType="com.yami.shop.bean.model.OrderItem">
     	select sku.spec,toi.*, tor.return_money_sts, tor.refund_sn from tz_order_item toi
-        left JOIN tz_order_refund tor ON tor.`order_item_id` = toi.`order_item_id` AND tor.`return_money_sts` not in (6,7, -1)
+        left JOIN tz_order_refund tor ON tor.`order_item_id` = toi.`order_item_id` AND tor.`return_money_sts` not in (30, 40)
         LEFT JOIN tz_sku sku on toi.sku_id=sku.sku_id
         where toi.order_number = #{orderNumber}
     </select>
@@ -72,7 +72,7 @@
         FROM `tz_order_refund_sku` a
                  LEFT JOIN tz_order_refund b on a.order_refund_id = b.refund_id
         WHERE a.order_item_id = #{orderItemId}
-          and b.return_money_sts !=70;
+          and b.return_money_sts not in(30,40,70);
     </select>
 
     <select id="refundSuccessCount" resultType="integer">
@@ -88,7 +88,7 @@
         FROM `tz_order_refund_sku` a
                  LEFT JOIN tz_order_refund b on a.order_refund_id = b.refund_id
         WHERE a.order_item_id = #{orderItemId}
-          and b.return_money_sts !=40
+          and b.return_money_sts not in (30,40)
     </select>
 
 </mapper>

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

@@ -53,6 +53,7 @@
         <result column="offset_points" property="offsetPoints"/>
         <result column="pay_time" property="payTime"/>
         <result column="dvy_type" property="dvyType"/>
+        <result column="comm_sts" property="commSts"/>
         <collection property="orderItemDtos" ofType="com.yami.shop.bean.app.dto.MyOrderItemDto">
             <result column="order_number" jdbcType="VARCHAR" property="orderNumber"/>
             <result column="pic" jdbcType="VARCHAR" property="pic"/>
@@ -670,7 +671,7 @@
         o.offset_points,
         o.pay_time,
         o.dvy_type,
-        o.comm_sts AS commSts,
+        o.comm_sts,
         (SELECT r.refund_type FROM tz_order_refund r WHERE r.order_id =o.order_id ORDER BY r.update_time DESC LIMIT 0,1) AS refund_type,
         (SELECT r.return_money_sts FROM tz_order_refund r WHERE r.order_id =o.order_id ORDER BY r.update_time DESC LIMIT 0,1) AS return_money_sts,
         oi.pic,oi.price,oi.prod_name,oi.pic,oi.sku_name,ifnull(oi.use_score,0) as use_score,oi.prod_id,oi.rec_time,oi.prod_count,oi.order_item_id,oi.comm_sts,

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

@@ -411,11 +411,9 @@
         FROM tz_order_refund r
         WHERE r.`order_id` = #{orderId}
           --         买家撤回申请
-          AND r.`return_money_sts` != 6
+          AND r.`return_money_sts` != 40
           --         商家拒绝
-          AND r.`return_money_sts` != 7
-          --         退款关闭
-          AND r.`return_money_sts` != - 1
+          AND r.`return_money_sts` != 30
     </select>
     <select id="sumRefundSuccessPlatformAmountByOrderId" resultType="double">
         select ifnull(sum(platform_refund_amount), 0)

+ 7 - 0
yami-shop-service/src/main/resources/mapper/OrderRefundSkuMapper.xml

@@ -24,4 +24,11 @@
         where ork.order_refund_id = #{refundId}
     </select>
 
+    <select id="selectByOrderItemList" resultType="com.yami.shop.bean.model.OrderRefundSku">
+        SELECT rs.*
+        FROM tz_order_refund refund
+                 LEFT JOIN tz_order_refund_sku rs ON rs.order_refund_id = refund.refund_id
+        where refund.return_money_sts not in(30,40)  and rs.order_item_id = #{orderItemId}
+    </select>
+
 </mapper>

+ 4 - 4
yami-shop-service/src/main/resources/mapper/ProdCommMapper.xml

@@ -163,7 +163,7 @@
         LEFT JOIN tz_user b on a.user_id=b.user_id
         WHERE a.order_number in (SELECT a.order_number FROM tz_order_item a
         LEFT JOIN tz_order b on a.order_number=b.order_number
-        WHERE a.sku_id = #{skuId} and a.shop_id = #{shopId} and b.channel_id=#{channelId}) and a.`status`=1
+        WHERE a.prod_id = #{prodId} and a.shop_id = #{shopId} and b.channel_id=#{channelId}) and a.`status`=1
         <choose>
             <when test="commStatus == 3">
                 and !ISNULL(a.pics)
@@ -180,7 +180,7 @@
         FROM tz_prod_comm
         WHERE order_number in (SELECT a.order_number FROM tz_order_item a
         LEFT JOIN tz_order b on a.order_number=b.order_number
-        WHERE a.sku_id = #{skuId} and a.shop_id = #{shopId} and b.channel_id=#{channelId})
+        WHERE a.prod_id = #{prodId} and a.shop_id = #{shopId} and b.channel_id=#{channelId})
         and `status` = 1
         <if test="evaluate!=null">
             and evaluate = #{evaluate}
@@ -193,7 +193,7 @@
         WHERE order_number in (SELECT a.order_number
                                FROM tz_order_item a
                                         LEFT JOIN tz_order b on a.order_number = b.order_number
-                               WHERE a.sku_id = #{skuId}
+                               WHERE a.prod_id = #{prodId}
                                  and a.shop_id = #{shopId}
                                  and b.channel_id = #{channelId})
           and `status` = 1
@@ -207,7 +207,7 @@
         WHERE pc.order_number in (SELECT a.order_number
                                   FROM tz_order_item a
                                            LEFT JOIN tz_order b on a.order_number = b.order_number
-                                  WHERE a.sku_id = #{skuId}
+                                  WHERE a.prod_id = #{prodId}
                                     and a.shop_id = #{shopId}
                                     and b.channel_id = #{channelId})
     </select>

+ 12 - 41
yami-shop-service/src/main/resources/mapper/ProductMapper.xml

@@ -130,46 +130,17 @@
 
     <select id="doGetById" resultType="com.yami.shop.bean.model.Product">
         SELECT
-            tp.prod_id,
-            MAX(tp.prod_name) AS prod_name,
-            tcs.shop_id AS shop_id,
-            MAX(tp.brand_id) AS brand_id,
-            MAX(tp.brand_name) AS brand_name,
-            MAX(tp.ori_price) AS ori_price,
-            MAX(tss.shop_sku_price) AS price,
-            MAX(tp.score_price) AS score_price,
-            MAX(tp.brief) AS brief,
-            MAX(tp.video) AS video,
-            MAX(tp.pic) AS pic,
-            MAX(tp.content) AS content,
-            MAX(tp.imgs) AS imgs,
-            MAX(tp.status) AS status,
-            MAX(tp.is_delete) AS is_delete,
-            MAX(tp.shop_category_id) AS shop_category_id,
-            MAX(tp.category_id) AS category_id,
-            MAX(tp.hb_front_category_id) AS hb_front_category_id,
-            MAX(tp.sold_num) AS sold_num,
-            SUM(tss.shop_sku_stocks) AS total_stocks,
-            MAX(tp.delivery_mode) AS delivery_mode,
-            MAX(tp.delivery_template_id) AS delivery_template_id,
-            MAX(tp.create_time) AS create_time,
-            MAX(tp.update_time) AS update_time,
-            MAX(tp.putaway_time) AS putaway_time,
-            MAX(tp.version) AS version,
-            MAX(tp.prod_type) AS prod_type,
-            MAX(tp.activity_id) AS activity_id,
-            MAX(tp.sup_id) AS sup_id,
-            MAX(tp.hb_spu_id) AS hb_spu_id,
-            MAX(tp.hb_status) AS hb_status
-        FROM tz_prod AS tp
-                 LEFT JOIN tz_shop_sku AS tss ON tp.prod_id = tss.spu_id
-                 LEFT JOIN tz_channel_shop AS tcs ON tss.shop_id = tcs.shop_id
+            tp.*,
+            SUM(tss.shop_sku_stocks) AS total_stocks
+        FROM tz_prod tp
+                 INNER JOIN tz_shop_sku tss ON tp.prod_id = tss.spu_id
+                 INNER JOIN tz_channel_shop tcs ON tss.shop_id = tcs.shop_id AND tcs.channel_id = #{platform}
         WHERE tp.prod_id = #{prodId}
-          AND tcs.channel_id = #{platform} and tp.`is_delete`=0
-        GROUP BY
-            tp.prod_id,
-            tcs.shop_id
-        LIMIT 1
+          AND tp.is_delete = 0
+          AND tss.is_delete = 0
+        GROUP BY tp.prod_id, tcs.shop_id
+            LIMIT 1
+
     </select>
 
 
@@ -961,13 +932,13 @@
 
 
     <select id="similarProdList" resultType="com.yami.shop.bean.vo.SimilarProdListVo">
-        SELECT p.prod_id AS prodId,p.prod_name AS prodName,p.pic,min(cha.channel_prod_price) AS channelProdPrice,sum(ss.shop_sku_stocks) shopSkuStocks FROM tz_category_prod cp                                                                                                                                                                INNER JOIN tz_prod p on p.prod_id =  cp.prod_id
+        SELECT ss.shop_id AS shopId, p.prod_id AS prodId,p.prod_name AS prodName,p.pic,min(cha.channel_prod_price) AS channelProdPrice,sum(ss.shop_sku_stocks) shopSkuStocks 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
         where  p.is_delete = 0 and cha.channel_id =  #{channelId} and
             cp.code in (select sc.code FROM tz_category_prod cp
                                                 LEFT JOIN tz_shop_category sc on  cp.code = sc.code
-                        WHERE  sc.level = 2 and cp.shop_id = #{shopId}  sc.is_delete = 0 and cp.is_delete = 0
+                        WHERE  sc.level = 2 and cp.shop_id = #{shopId} and sc.is_delete = 0 and cp.is_delete = 0
                           and  cp.prod_id = #{prodId}
                         GROUP BY sc.code)
         GROUP BY p.prod_id

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

@@ -188,8 +188,8 @@
                  LEFT JOIN tz_shop_sku d on a.sku_id = d.sku_id and d.is_delete = 0
         WHERE a.order_number in (SELECT a.order_number FROM tz_order_item a
                                  LEFT JOIN tz_order b on a.order_number=b.order_number
-                                 WHERE a.sku_id = #{skuId} and a.shop_id = #{shopId} and b.channel_id=#{channelId})
-          and a.sku_id!=#{skuId}
+                                 WHERE a.prod_id = #{prodId} and a.shop_id = #{shopId} and b.channel_id=#{channelId})
+          and a.prod_id!=#{prodId}
           and a.shop_id=#{shopId}
           and b.`status`=1
           and b.is_delete=0