Browse Source

海博退款单模块

fubojin 3 days ago
parent
commit
271c14f14a

+ 2 - 2
yami-shop-multishop/src/main/java/com/yami/shop/multishop/controller/OrderController.java

@@ -256,7 +256,7 @@ public class OrderController {
             throw new GlobalException("积分商品,无法退款");
         }
         if (Objects.equals(orderRefundParam.getRefundType(),RefundType.ALL.value()) && (!Objects.isNull(order.getRefundStatus()) && !Objects.equals(order.getRefundStatus(), RefundStatusEnum.DISAGREE.value()))) {
-            throw new GlobalException("该订单已有商品正在退款中,不能再进行整单退款");
+            throw new GlobalException("55该订单已有商品正在退款中,不能再进行整单退款");
         }
         // 生成退款单信息
         OrderRefund newOrderRefund = new OrderRefund();
@@ -266,7 +266,7 @@ public class OrderController {
 
         for (OrderRefund orderRefund : orderRefunds) {
             if (Objects.equals(RefundType.ALL.value(),orderRefund.getRefundType())) {
-                throw new GlobalException("该订单正在进行整单退款,无法进行新的退款操作");
+                throw new GlobalException("2002该订单正在进行整单退款,无法进行新的退款操作");
             }
             if (Objects.equals(orderRefund.getOrderItemId(), orderRefundParam.getOrderItemId())) {
                 throw new GlobalException("该商品正在进行退款中,无法进行新的退款操作");

+ 2 - 2
yami-shop-multishop/src/main/resources/application-prod.yml

@@ -2,9 +2,9 @@ server:
   port: 8113
 spring:
   datasource:
-    url: jdbc:mysql://172.23.240.101:3306/yami_bbc?allowMultiQueries=true&useSSL=false&useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&zeroDateTimeBehavior=convertToNull&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2B8&nullCatalogMeansCurrent=true
+    url: jdbc:mysql://rm-bp15g68z8j527q9n9xo.mysql.rds.aliyuncs.com:3306/yami_bbc?allowMultiQueries=true&useSSL=false&useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&zeroDateTimeBehavior=convertToNull&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2B8&nullCatalogMeansCurrent=true
     username: root
-    password: TtbTeGJBnDvH4hMx
+    password: BXyzm3RKR2nA9vn5ZkeP!
     driver-class-name: com.mysql.cj.jdbc.Driver
     type: com.zaxxer.hikari.HikariDataSource
     hikari:

+ 2 - 2
yami-shop-multishop/src/main/resources/redisson/redisson-prod.yml

@@ -1,8 +1,8 @@
 # 单节点设置
 singleServerConfig:
-  address: redis://172.23.240.101:6379
+  address: redis://47.109.18.141:6379
   database: 1
-  password: RUw3C4tAF0aE4PVC
+  password: BXyzm3RKR2nA9vn5ZkeP
   idleConnectionTimeout: 10000
   pingTimeout: 1000
   connectTimeout: 10000

+ 1 - 1
yami-shop-platform/src/main/java/com/yami/shop/platform/controller/hb/HBOrderRefundController.java

@@ -99,7 +99,7 @@ public class HBOrderRefundController {
      */
     @PostMapping("/createResult")
     public HBR createResult(@RequestBody JSONObject hBRequest) {
-        log.info("进入海博退款创建结果通知接口");
+        log.info("进入海博退款创建结果通知接口{}",hBRequest);
         return orderRefundService.createResult(hBRequest);
     }
 }

+ 26 - 0
yami-shop-platform/src/main/resources/application.yml

@@ -43,3 +43,29 @@ hb:
   appId: 5347a7077e65428bb9a87510ca7e1ea1
   secret: 67899367b17e4a8d8a7d10ebe8449b90
 
+
+#服务商
+services:
+  #服务商AppId
+  spAppId: wx43b5b906cc30ed0b
+  #服务商商户号
+  spMchId: 1725845681
+  #商户AppId
+  subAppId: wxbc64403830bb13c5
+  #商户号
+  subMchId: 1726971843
+  # APIv2密钥
+  apiKey: 4b64e17419689527b256f07cdf6bd60c
+  # APIv3密钥
+  apiV3Key: 4b64e17419689527b256f07cdf6bd60c
+  # 微信支付V3-url前缀
+  baseUrl: https://api.mch.weixin.qq.com/v3
+  # 密钥路径,resources根目录下
+  keyPemPath: apiclient_key.pem
+  #商户证书序列号
+  serialNo: 65E9559D81ADA0BDA0CD3CF484A59A8DFB5610BE
+  #支付回调
+  notifyUrl: http://he56cd66.natappfree.cc/notice/pay/order/wxNotify
+  #退款回调
+  refundNotifyUrl: http://he56cd66.natappfree.cc/notice/pay/order/refundNotify
+

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

@@ -18,6 +18,7 @@ import com.yami.shop.bean.app.dto.OrderCountData;
 import com.yami.shop.bean.app.dto.ShopCartOrderMergerDto;
 import com.yami.shop.bean.model.Order;
 import com.yami.shop.bean.model.OrderItem;
+import com.yami.shop.bean.model.OrderRefund;
 import com.yami.shop.bean.param.CancelOrderParam;
 import com.yami.shop.bean.param.OrderParam;
 import com.yami.shop.bean.param.OrderPayParam;
@@ -122,7 +123,7 @@ public interface OrderService extends IService<Order> {
      * @param rReturnMoneySts 退款状态
      * @return 订单申请退款结果
      */
-    String applyAgain(OrderRefundParam orderRefundParam , Integer  rReturnMoneySts);
+    OrderRefund applyAgain(OrderRefundParam orderRefundParam , Integer  rReturnMoneySts);
 
     /**
      * 订单申请退款

+ 11 - 3
yami-shop-service/src/main/java/com/yami/shop/service/hb/impl/HBOrderService.java

@@ -232,8 +232,16 @@ public class HBOrderService implements IHBOrderService {
                 orderRefundSkuList.add(orderRefundSku);
             }
             orderRefundParam.setOrderRefundSkuList(orderRefundSkuList);
-            String afterSaleOrder = orderService.applyAgain(orderRefundParam, ReturnMoneyStsType.SUCCESS.value());
-            orderRefundService.createRefundOrder(order.getOrderNumber(), afterSaleOrder);
+
+            OrderRefund orderRefund1 = orderRefundService.getOne(new LambdaQueryWrapper<OrderRefund>().eq(OrderRefund::getOrderNumber, orderRefundParam.getOrderNumber()));
+            log.info(" 申请系统退款参数:{}", JSONObject.toJSONString(orderRefund1));
+            if (ObjectUtil.isNotEmpty(orderRefund1)) {
+                orderRefund1.setReturnMoneySts(ReturnMoneyStsType.SUCCESS.value());
+                orderRefundService.updateById(orderRefund1);
+            } else {
+                OrderRefund orderRefund = orderService.applyAgain(orderRefundParam, ReturnMoneyStsType.SUCCESS.value());
+                orderRefundService.createRefundOrder(order.getOrderNumber(), orderRefund.getRefundSn());
+            }
 
         }
         //成功直接通知海博
@@ -447,7 +455,7 @@ public class HBOrderService implements IHBOrderService {
         OrderPayment orderPayment = new OrderPayment();
         if (order.getPayType() == null) {
             orderPayment.setPaymentType(9999);
-        }  else if (order.getPayType() == 1) {
+        } else if (order.getPayType() == 1) {
             orderPayment.setPaymentType(1002);
         } else if (order.getPayType() == 2) {
             orderPayment.setPaymentType(1001);

+ 17 - 12
yami-shop-service/src/main/java/com/yami/shop/service/impl/OrderRefundServiceImpl.java

@@ -833,7 +833,7 @@ public class OrderRefundServiceImpl extends ServiceImpl<OrderRefundMapper, Order
             throw new GlobalException("积分商品,无法退款");
         }
         if (Objects.equals(orderRefundParam.getRefundType(), RefundType.ALL.value()) && (!Objects.isNull(order.getRefundStatus()) && !Objects.equals(order.getRefundStatus(), RefundStatusEnum.DISAGREE.value()))) {
-            throw new GlobalException("该订单已有商品正在退款中,不能再进行整单退款");
+            throw new GlobalException("66该订单已有商品正在退款中,不能再进行整单退款");
         }
 
 
@@ -1024,7 +1024,7 @@ public class OrderRefundServiceImpl extends ServiceImpl<OrderRefundMapper, Order
             }
             thirdPartyRefundRequest.setReason(orderRefund.getBuyerReason());
             thirdPartyRefundRequest.setProblemDescription(orderRefund.getBuyerDesc());
-            thirdPartyRefundRequest.setPictures(orderRefund.getPhotoFiles());
+//            thirdPartyRefundRequest.setPictures(orderRefund.getPhotoFiles());
 
             thirdPartyRefundRequest.setRefundStatus(orderRefund.getReturnMoneySts());
             Integer applyType = orderRefund.getApplyType();
@@ -1142,6 +1142,8 @@ public class OrderRefundServiceImpl extends ServiceImpl<OrderRefundMapper, Order
                 orderRefundRecord1.setAuditStatus(3);
                 orderRefundRecord1.setSort(3);
                 orderRefundRecordMapper.insert(orderRefundRecord1);
+
+//                orderService.returnRefund(orderRefund.getOrderNumber());
             }
 
 
@@ -1201,7 +1203,7 @@ public class OrderRefundServiceImpl extends ServiceImpl<OrderRefundMapper, Order
             JSONObject bodyStr = hBRequest.getJSONObject("body");
             log.info("部分退款接口-回调接口,body:{}", bodyStr);
             String channelOrderId = bodyStr.getString("channelOrderId");
-            Integer auditType = bodyStr.getInteger("auditType");
+//            Integer auditType = bodyStr.getInteger("auditType");
             Integer applyDeal = bodyStr.getInteger("applyDeal");
 
 
@@ -1211,7 +1213,7 @@ public class OrderRefundServiceImpl extends ServiceImpl<OrderRefundMapper, Order
             orderRefundParam.setOrderNumber(channelOrderId);
             orderRefundParam.setRefundType(RefundType.SINGLE.value());
             orderRefundParam.setApplyType(1);
-            orderRefundParam.setRefundType(1);
+            orderRefundParam.setRefundType(2);
             orderRefundParam.setIsReceiver(false);
             orderRefundParam.setBuyerReason("17");
             orderRefundParam.setBuyerDesc(bodyStr.getString("reason"));
@@ -1227,13 +1229,13 @@ public class OrderRefundServiceImpl extends ServiceImpl<OrderRefundMapper, Order
                 }
             }
 
-            if (auditType == 2 || auditType == 4) {
-                orderRefund.setIsReceiver(true);
-                orderRefund.setReturnMoneySts(ReturnMoneyStsType.PROCESSING.value());
-            } else {
-                orderRefund.setReturnMoneySts(ReturnMoneyStsType.REJECT.value());
-                orderRefund.setRejectMessage(bodyStr.getString("reason"));
-            }
+//            if (auditType == 2 || auditType == 4) {
+//                orderRefund.setIsReceiver(true);
+//                orderRefund.setReturnMoneySts(ReturnMoneyStsType.PROCESSING.value());
+//            } else {
+//                orderRefund.setReturnMoneySts(ReturnMoneyStsType.REJECT.value());
+//                orderRefund.setRejectMessage(bodyStr.getString("reason"));
+//            }
 
             JSONArray products = bodyStr.getJSONArray("products");
             log.info("部分退款接口-回调接口,products:{}", products);
@@ -1262,7 +1264,10 @@ public class OrderRefundServiceImpl extends ServiceImpl<OrderRefundMapper, Order
             orderRefundParam.setOrderRefundSkuList(orderRefundSkuList);
 
 
-            orderService.applyAgain(orderRefundParam, ReturnMoneyStsType.APPLY.value());
+            OrderRefund orderRefund1 = orderService.applyAgain(orderRefundParam, ReturnMoneyStsType.SUCCESS.value());
+
+            //推送海博创建订单
+            createRefundOrder(order.getOrderNumber(), orderRefund1.getRefundSn());
 
         } catch (Exception e) {
             log.error("海博退款订单查询异常:{}", e);

+ 18 - 19
yami-shop-service/src/main/java/com/yami/shop/service/impl/OrderServiceImpl.java

@@ -574,7 +574,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
             throw new GlobalException("积分商品,无法退款");
         }
         if (Objects.equals(orderRefundParam.getRefundType(), RefundType.ALL.value()) && (!Objects.isNull(order.getRefundStatus()) && !Objects.equals(order.getRefundStatus(), RefundStatusEnum.DISAGREE.value()))) {
-            throw new GlobalException("该订单已有商品正在退款中,不能再进行整单退款");
+            throw new GlobalException("77该订单已有商品正在退款中,不能再进行整单退款");
         }
         // 生成退款单信息
         OrderRefund newOrderRefund = new OrderRefund();
@@ -760,7 +760,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
      * @return rReturnMoneySts
      */
     @Override
-    public String applyAgain(OrderRefundParam orderRefundParam, Integer rReturnMoneySts) {
+    public OrderRefund applyAgain(OrderRefundParam orderRefundParam, Integer rReturnMoneySts) {
         log.info(" 海博申请退款参数:{}", JSONObject.toJSONString(orderRefundParam));
         List<OrderRefundSku> orderRefundSkuList = orderRefundParam.getOrderRefundSkuList();
 
@@ -772,7 +772,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 
 
         if (Objects.equals(orderRefundParam.getRefundType(), RefundType.ALL.value()) && (!Objects.isNull(order.getRefundStatus()) && !Objects.equals(order.getRefundStatus(), RefundStatusEnum.DISAGREE.value()))) {
-            throw new GlobalException("该订单已有商品正在退款中,不能再进行整单退款");
+            throw new GlobalException("88该订单已有商品正在退款中,不能再进行整单退款");
         }
 
         OrderRefund newOrderRefund = new OrderRefund();
@@ -795,7 +795,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
         // 判断退款单类型(1:整单退款,2:单个物品退款)
 
 
-        //TODO 待处理 全部和部分退款积分问题
+
         if (orderRefundParam.getRefundType().equals(RefundType.ALL.value())) {
             // 全部物品退款
             // 计算该订单项的分销金额
@@ -840,19 +840,19 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
             }
 
             // 判断退款金额是否超出订单金额
-            double refundSingleAmount = Arith.div(orderRefundParam.getRefundAmount(), orderRefundParam.getGoodsNum(), 3);
-            double singleAmount = Arith.div(orderItem.getActualTotal(), orderItem.getProdCount(), 3);
-            if (refundSingleAmount > orderItem.getProductTotalAmount() || refundSingleAmount > singleAmount) {
-                throw new GlobalException("退款金额已超出订单金额,无法申请");
-            }
+//            double refundSingleAmount = Arith.div(orderRefundParam.getRefundAmount(), orderRefundParam.getGoodsNum(), 3);
+//            double singleAmount = Arith.div(orderItem.getActualTotal(), orderItem.getProdCount(), 3);
+//            if (refundSingleAmount > orderItem.getProductTotalAmount() || refundSingleAmount > singleAmount) {
+//                throw new GlobalException("退款金额已超出订单金额,无法申请");
+//            }
 
             // 待发货状态-最后一件商品进行退款,退款金额 =  商品金额 + 订单运费金额
-            if (Objects.equals(order.getHbOrderStatus(), OrderStatus.PADYED.value()) && order.getFreightAmount() > 0) {
-                int orderItenCount = orderItemService.count(new LambdaQueryWrapper<OrderItem>().eq(OrderItem::getOrderNumber, order.getOrderNumber()));
-                if (Objects.equals(orderRefunds.size(), orderItenCount - 1)) {
-                    newOrderRefund.setRefundAmount(Arith.add(newOrderRefund.getRefundAmount(), order.getFreightAmount()));
-                }
-            }
+//            if (Objects.equals(order.getHbOrderStatus(), OrderStatus.PADYED.value()) && order.getFreightAmount() > 0) {
+//                int orderItenCount = orderItemService.count(new LambdaQueryWrapper<OrderItem>().eq(OrderItem::getOrderNumber, order.getOrderNumber()));
+//                if (Objects.equals(orderRefunds.size(), orderItenCount - 1)) {
+//                    newOrderRefund.setRefundAmount(Arith.add(newOrderRefund.getRefundAmount(), order.getFreightAmount()));
+//                }
+//            }
         }
 
         newOrderRefund.setShopId(order.getShopId());
@@ -863,7 +863,6 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
         newOrderRefund.setRefundType(orderRefundParam.getRefundType());
         newOrderRefund.setRefundAmount(orderRefundParam.getRefundAmount());
 
-
         newOrderRefund.setGoodsNum(orderRefundParam.getGoodsNum());
         newOrderRefund.setApplyType(orderRefundParam.getApplyType());
         if (Objects.equals(orderRefundParam.getApplyType(), 2)) {
@@ -880,7 +879,6 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
         newOrderRefund.setUpdateTime(new Date());
         log.info("生成退款单:{}", newOrderRefund);
 
-
         // 生成退款单
         orderRefundMapper.insert(newOrderRefund);
         // 更新订单状态
@@ -898,7 +896,8 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
                 orderRefundSkuMapper.insert(c);
             });
         }
-        return newOrderRefund.getRefundSn();
+
+        return newOrderRefund;
     }
 
 
@@ -927,7 +926,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
                         OrderSettlement orderSettlement = orderSettlementMapper.selectOne(new LambdaQueryWrapper<OrderSettlement>()
                                 .eq(OrderSettlement::getOrderNumber, order.getOrderNumber())
                                 .eq(OrderSettlement::getPayType, 1));
-                        if (order.getOffsetPoints() > 0) {//混合支付
+                        if (ObjectUtil.isNotEmpty(order.getOffsetPoints())  && order.getOffsetPoints() > 0) {//混合支付
                             //退钱
                             RefundInfoPo po = new RefundInfoPo();
                             po.setOutTradeNo(orderSettlement.getPayNo());

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

@@ -96,34 +96,7 @@
         ORDER BY fansCount DESC
     </select>
     <select id="selectShopDetailById" resultType="com.yami.shop.bean.model.ShopDetail">
-        select shop_id,
-               out_station_no,
-               shop_name,
-               user_id,
-               intro,
-               shop_owner,
-               mobile,
-               tel,
-               shop_lat,
-               shop_lng,
-               shop_address,
-               province,
-               province_id,
-               city,
-               city_id,
-               area,
-               area_id,
-               shop_logo,
-               shop_status,
-               create_time,
-               update_time,
-               is_distribution,
-               business_license,
-               identity_card_front,
-               identity_card_later,
-               sync,
-               category,
-               third_party_code
+        select *
         from tz_shop_detail
         where shop_id = #{shopId}
     </select>