wangming 1 týždeň pred
rodič
commit
0d6c639e33

+ 45 - 31
yami-shop-api/src/main/java/com/yami/shop/api/controller/OrderRefundController.java

@@ -18,9 +18,9 @@ import com.yami.shop.common.config.Constant;
 import com.yami.shop.common.exception.GlobalException;
 import com.yami.shop.common.util.Arith;
 import com.yami.shop.common.util.PageParam;
+import com.yami.shop.dao.OrderRefundSkuMapper;
 import com.yami.shop.delivery.comment.api.paotui.PaoTuiApi;
 import com.yami.shop.delivery.comment.api.paotui.model.request.AddWithoutShopRequest;
-import com.yami.shop.delivery.comment.api.paotui.model.request.CancelOrderRequest;
 import com.yami.shop.delivery.comment.api.paotui.model.request.DeliveryCpriceRequest;
 import com.yami.shop.delivery.comment.api.paotui.model.request.OrderDetailRequest;
 import com.yami.shop.delivery.comment.api.paotui.model.response.DeliveryPriceResponse;
@@ -29,6 +29,7 @@ import com.yami.shop.delivery.comment.api.paotui.model.response.OrderStatusRespo
 import com.yami.shop.delivery.comment.service.TransportManagerService;
 import com.yami.shop.security.api.util.SecurityUtils;
 import com.yami.shop.service.*;
+import com.yami.shop.utils.CullenUtils;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiOperation;
@@ -52,6 +53,8 @@ public class OrderRefundController {
 
     private final OrderRefundService orderRefundService;
 
+    private final OrderRefundSkuMapper orderRefundSkuMapper;
+
     private final OrderService orderService;
 
     private final MapperFacade mapperFacade;
@@ -109,9 +112,14 @@ public class OrderRefundController {
             return ResponseEntity.ok(false);
         }
     }
+
     @PostMapping("/apply")
     @ApiOperation(value = "申请退款", notes = "申请退款")
     public ResponseEntity<String> apply(@Valid @RequestBody OrderRefundParam orderRefundParam) {
+
+        List<OrderRefundSku> orderRefundSkuList = orderRefundParam.getOrderRefundSkuList();
+        CullenUtils.validateDataThrowException(orderRefundSkuList.isEmpty(),"退款商品不能为空...");
+
         String userId = SecurityUtils.getUser().getUserId();
         // 获取订单信息
         Order order = orderService.getOrderByOrderNumberAndUserId(orderRefundParam.getOrderNumber(), userId, true);
@@ -160,25 +168,25 @@ public class OrderRefundController {
         }
 
 // 已支付订单取消订单,已付款后需要相应处理物流状态
-        if(StringUtils.isNotEmpty(order.getDvyFlowId())){
-            OrderDetailRequest orderDetailRequest = new OrderDetailRequest();
-            orderDetailRequest.setOrder_id(order.getDvyFlowId());
-            orderDetailRequest.setOrigin_id(orderRefundParam.getOrderNumber());
-            OrderStatusResponse orderStatusResponse = paoTuiApi.deliveryRoute(orderDetailRequest);
-            if (ObjectUtil.isNotEmpty(orderStatusResponse.getInfo()) && orderStatusResponse.getInfo().size()>0){
-                if(orderStatusResponse.getInfo().get(0).getStatus()==40){
-                    throw new GlobalException("正在配送中,无法取消");
-                }else if(orderStatusResponse.getInfo().get(0).getStatus()<40){
-                    //        //先取消配送订单
-                    CancelOrderRequest cancelOrderRequest = new CancelOrderRequest();
-                    cancelOrderRequest.setOrder_id(order.getDvyFlowId());
-                    cancelOrderRequest.setOrigin_id(orderRefundParam.getOrderNumber());
-                    cancelOrderRequest.setCancel_reason_code(3);
-                    cancelOrderRequest.setCancel_reason("不想要了");
-                    CancelOrderRequest cancelOrderRequest1 = paoTuiApi.orderCancel(cancelOrderRequest);
-                }
-            }
-        }
+//        if(StringUtils.isNotEmpty(order.getDvyFlowId())){
+//            OrderDetailRequest orderDetailRequest = new OrderDetailRequest();
+//            orderDetailRequest.setOrder_id(order.getDvyFlowId());
+//            orderDetailRequest.setOrigin_id(orderRefundParam.getOrderNumber());
+//            OrderStatusResponse orderStatusResponse = paoTuiApi.deliveryRoute(orderDetailRequest);
+//            if (ObjectUtil.isNotEmpty(orderStatusResponse.getInfo()) && orderStatusResponse.getInfo().size()>0){
+//                if(orderStatusResponse.getInfo().get(0).getStatus()==40){
+//                    throw new GlobalException("正在配送中,无法取消");
+//                }else if(orderStatusResponse.getInfo().get(0).getStatus()<40){
+//                    //        //先取消配送订单
+//                    CancelOrderRequest cancelOrderRequest = new CancelOrderRequest();
+//                    cancelOrderRequest.setOrder_id(order.getDvyFlowId());
+//                    cancelOrderRequest.setOrigin_id(orderRefundParam.getOrderNumber());
+//                    cancelOrderRequest.setCancel_reason_code(3);
+//                    cancelOrderRequest.setCancel_reason("不想要了");
+//                    CancelOrderRequest cancelOrderRequest1 = paoTuiApi.orderCancel(cancelOrderRequest);
+//                }
+//            }
+//        }
         // 生成退款单信息
         OrderRefund newOrderRefund = new OrderRefund();
 
@@ -251,11 +259,11 @@ public class OrderRefundController {
             }
 
             // 一个订单项只能申请一次退款
-            for (OrderRefund orderRefund : orderRefunds) {
-                if (Objects.equals(orderRefund.getOrderId(), orderItem.getOrderItemId())) {
-                    throw new GlobalException("退款订单项已处理,请勿重复申请");
-                }
-            }
+//            for (OrderRefund orderRefund : orderRefunds) {
+//                if (Objects.equals(orderRefund.getOrderId(), orderItem.getOrderItemId())) {
+//                    throw new GlobalException("退款订单项已处理,请勿重复申请");
+//                }
+//            }
         }
 
         newOrderRefund.setShopId(order.getShopId());
@@ -293,12 +301,18 @@ public class OrderRefundController {
         newOrderRefund.setReturnMoneySts(ReturnMoneyStsType.APPLY.value());
         newOrderRefund.setApplyTime(new Date());
         newOrderRefund.setUpdateTime(new Date());
-        orderRefundService.applyRefund(newOrderRefund);
-
-        if(StringUtils.isNotEmpty(order.getQnhOrderId())){
-            //取消牵牛花订单
-            createQNHOrder(order,newOrderRefund.getRefundSn());
+        OrderRefund orderRefund = orderRefundService.applyRefund(newOrderRefund);
+        if (!orderRefundSkuList.isEmpty()){
+            orderRefundSkuList.forEach(c->{
+                c.setOrderRefundId(orderRefund.getRefundId());
+                orderRefundSkuMapper.insert(c);
+            });
         }
+
+//        if(StringUtils.isNotEmpty(order.getQnhOrderId())){
+//            //取消牵牛花订单
+//            createQNHOrder(order,newOrderRefund.getRefundSn());
+//        }
         return ResponseEntity.ok(newOrderRefund.getRefundSn());
     }
 
@@ -519,7 +533,7 @@ public class OrderRefundController {
 
         Date now = new Date();
         orderRefund.setReturnMoneySts(ReturnMoneyStsType.CANCEL.value());
-        orderRefund.setReturnMoneySts(ReturnMoneyStsType.FAIL.value());
+        //orderRefund.setReturnMoneySts(ReturnMoneyStsType.FAIL.value());
         orderRefund.setCancelTime(now);
         orderRefund.setUpdateTime(now);
         orderRefundService.updateById(orderRefund);

+ 8 - 0
yami-shop-bean/src/main/java/com/yami/shop/bean/app/param/OrderRefundParam.java

@@ -1,10 +1,13 @@
 package com.yami.shop.bean.app.param;
 
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.yami.shop.bean.model.OrderRefundSku;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 import javax.validation.constraints.NotEmpty;
 import javax.validation.constraints.NotNull;
+import java.util.List;
 
 @Data
 public class OrderRefundParam {
@@ -72,4 +75,9 @@ public class OrderRefundParam {
     @ApiModelProperty(value = "凭证图片列表", required = true)
     private String photoFiles;
 
+    @TableField(exist = false)
+    @ApiModelProperty(value = "退款商品详情")
+    private List<OrderRefundSku> orderRefundSkuList;
+
+
 }

+ 3 - 2
yami-shop-bean/src/main/java/com/yami/shop/bean/model/OrderRefund.java

@@ -7,11 +7,12 @@
 
 package com.yami.shop.bean.model;
 
-import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.Data;
+
 import java.io.Serializable;
 import java.util.Date;
 
@@ -29,7 +30,7 @@ public class OrderRefund implements Serializable{
     /**
      * 记录ID
      */
-    @TableId
+    @TableId(value = "refund_id", type = IdType.AUTO)
     private Long refundId;
     /**
      * 退款编号

+ 18 - 4
yami-shop-bean/src/main/java/com/yami/shop/bean/model/OrderRefundSku.java

@@ -7,13 +7,11 @@
 
 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 lombok.Data;
 
 import java.io.Serializable;
-import java.util.Date;
 
 /**
  *
@@ -31,14 +29,30 @@ public class OrderRefundSku implements Serializable{
      */
     @TableId
     private Long id;
+
     /**
      * 退款编号
      */
-    private String skuId;
+    private Long skuId;
+
     /**
      * 退款商品数量
      */
-    private String productCount;
+    private Integer productCount;
+
+    /**
+     * 退款单ID
+     */
+    private Long orderRefundId;
 
+    /**
+     * 商品单价
+     */
+    private Double skuPrice;
+
+    /**
+     * 订单项id
+     */
+    private Long orderItemId;
 
 }

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

@@ -2,11 +2,9 @@ package com.yami.shop.service;
 
 
 import com.alibaba.fastjson.JSONObject;
-import com.baomidou.mybatisplus.core.conditions.Wrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
-import com.github.binarywang.wxpay.exception.WxPayException;
 import com.yami.shop.bean.dto.OrderRefundDto;
 import com.yami.shop.bean.model.Order;
 import com.yami.shop.bean.model.OrderRefund;
@@ -15,9 +13,7 @@ import com.yami.shop.bean.param.OrderRefundParam;
 import com.yami.shop.bean.param.StatisticsRefundParam;
 import com.yami.shop.common.util.hb.HBR;
 import org.apache.ibatis.annotations.Param;
-import org.springframework.transaction.annotation.Transactional;
 
-import java.sql.SQLIntegrityConstraintViolationException;
 import java.util.Date;
 import java.util.List;
 
@@ -76,7 +72,7 @@ public interface OrderRefundService extends IService<OrderRefund> {
      * 生成退款单
      * @param orderRefund 退款对象
      */
-    void applyRefund(OrderRefund orderRefund);
+    OrderRefund applyRefund(OrderRefund orderRefund);
 
     /**
      * 处理退款订单

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

@@ -7,7 +7,6 @@ import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -22,7 +21,6 @@ import com.yami.shop.bean.enums.*;
 import com.yami.shop.bean.event.OrderRefundSuccessEvent;
 import com.yami.shop.bean.event.ReceiptOrderEvent;
 import com.yami.shop.bean.model.*;
-import com.yami.shop.bean.param.CancelOrderParam;
 import com.yami.shop.bean.param.OrderPayParam;
 import com.yami.shop.bean.param.OrderRefundParam;
 import com.yami.shop.bean.param.StatisticsRefundParam;
@@ -39,15 +37,11 @@ import com.yami.shop.utils.HBSignUtil;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import ma.glasnost.orika.MapperFacade;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.ApplicationContext;
-import org.springframework.context.annotation.Lazy;
-import org.springframework.http.ResponseEntity;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;
 
-import javax.validation.Valid;
 import java.util.*;
 
 import static com.yami.shop.common.util.HttpUtil.post;
@@ -268,13 +262,14 @@ public class OrderRefundServiceImpl extends ServiceImpl<OrderRefundMapper, Order
      */
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public void applyRefund(OrderRefund orderRefund) {
+    public OrderRefund applyRefund(OrderRefund orderRefund) {
         // 生成退款单
         save(orderRefund);
         // 更新订单状态
         Order order = orderService.getById(orderRefund.getOrderId());
         order.setRefundStatus(RefundStatusEnum.APPLY.value());
         orderService.updateById(order);
+        return orderRefund;
     }
 
     /**
@@ -1175,8 +1170,8 @@ public class OrderRefundServiceImpl extends ServiceImpl<OrderRefundMapper, Order
                 JSONObject productJson = (JSONObject) product;
                 OrderRefundSku orderRefundSku = new OrderRefundSku();
                 String skuId = productJson.getString("skuId");
-                orderRefundSku.setSkuId(productJson.getString("channelSkuId"));
-                orderRefundSku.setProductCount(productJson.getString("productCount"));
+                orderRefundSku.setSkuId(Long.parseLong(productJson.getString("channelSkuId")));
+                orderRefundSku.setProductCount(Integer.parseInt(productJson.getString("productCount")));
                 orderRefundSkuMapper.insert(orderRefundSku);
             }
 

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

@@ -231,7 +231,7 @@
     </update>
 
     <update id="updateByToPaySuccess">
-        update tz_order set `status` = 2,is_payed =1,update_time=NOW(),pay_time=NOW(),pay_type =#{payType} where
+        update tz_order set `hb_order_status` = 20,is_payed =1,update_time=NOW(),pay_time=NOW(),pay_type =#{payType} where
         order_number in
         <foreach collection="orderNumbers" item="orderNumber" separator="," open="(" close=")">
             #{orderNumber}