igl 2 månader sedan
förälder
incheckning
ee459d92fa

+ 2 - 1
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/dao/OmsOrderMapper.java

@@ -128,5 +128,6 @@ public interface OmsOrderMapper extends EnhanceMapper<OmsOrder>
 
     Integer countReservationByOrderId(@Param("orderId") Long orderId);
 
-    void updateStatus(@Param("id")Long id, @Param("status")Integer status, @Param("feeAmount")BigDecimal feeAmount, @Param("updateTime")Date updateTime);
+    void updateStatus(@Param("id")Long id, @Param("status")Integer status, @Param("feeAmount")BigDecimal feeAmount,
+                      @Param("outOrderId")String outOrderId, @Param("updateTime")Date updateTime);
 }

+ 3 - 0
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/entity/OmsOrder.java

@@ -76,6 +76,9 @@ public class OmsOrder extends ModifyEntity<Long>
     /** 订单状态:0->待付款;1-已付款;2->待发货;3->已发货;4->已完成;5->已关闭;6->无效订单;7->已取消;8->支付失败;9->已退款 */
     private Integer status;
 
+    /** 外部订单号 */
+    private String outOrderId;
+
     /** 订单类型:0->正常订单;1->秒杀订单 */
     private Integer orderType;
 

+ 1 - 0
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/handle/CustomConfig.java

@@ -21,6 +21,7 @@ public class CustomConfig {
         //map.put("893951545.client.private.key.path", "/home/chelvc/cfca/client.pfx");
         map.put("893951545.client.private.key.password", "123456");
         map.put("onlinepay.order.url", "https://apis.5upay.com/onlinePay/order");
+        map.put("onlinepay.refund.url", "https://apis.5upay.com/onlinePay/refund");
         map.put("transferAccount.order.url", "https://apis.5upay.com/transferAccount/order");
         map.put("onlinepay.query.url", "https://apis.5upay.com/onlinePay/query");
         map.put("ehking.sdk.net.client.defaultConnectTimeout", "30000");

+ 4 - 3
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/impl/OmsOrderServiceImpl.java

@@ -1038,11 +1038,12 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper, OmsOrder> i
             return;
         }
         String status = responseData.getString("status");
+        String serialNumber = responseData.getString("serialNumber");
         BigDecimal feeAmount = BigDecimal.ZERO;
         if("SUCCESS".equals(status)){
             orderStatus = 1;
             String fee = responseData.getString("feeAmount");
-            feeAmount = new BigDecimal(fee);
+            feeAmount = new BigDecimal(fee).divide(new BigDecimal("100"), 2, RoundingMode.UP);
             BigDecimal realityAmount = payAmount.subtract(feeAmount);
             //平台资产变更-添加冻结金额
             BigDecimal totalAmount = assetService.updateAsset(0, realityAmount, 0L, 0, 1);
@@ -1053,7 +1054,7 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper, OmsOrder> i
         } else if("CANCEL".equals(status)){
             orderStatus = 7;
         }
-        baseMapper.updateStatus(omsOrder.getId(), orderStatus, feeAmount, new Date());
+        baseMapper.updateStatus(omsOrder.getId(), orderStatus, feeAmount, serialNumber, new Date());
         omsOrderOperateHistoryService.insertOmsOrderOperateHistory(omsOrder.getId(), omsOrder.getUserId(), omsOrder.getStatus());
     }
 
@@ -1105,7 +1106,7 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper, OmsOrder> i
         if("SUCCESS".equals(status)){
             orderRefundService.updateStatus(Long.valueOf(requestId), 2, "", serialNumber);
             //减掉平台冻结金额
-            assetService.reduceFrozenAsset(realAmount, 0L, 0);
+            assetService.reduceFrozenAsset(payAmount, 0L, 0);
             BigDecimal totalAmount = assetService.queryTotal(0L, 0);
             //记录余额明细
             balanceDetailService.recordFlow(omsOrder.getId(), 0, 0L,

+ 14 - 9
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/impl/OnlinePayServiceImpl.java

@@ -5,9 +5,11 @@ import com.chelvc.cloud.user.client.dto.UserDTO;
 import com.chelvc.cloud.vehicle.client.constant.TradeConstant;
 import com.chelvc.cloud.vehicle.client.param.OmsOrderModifyParam;
 import com.chelvc.cloud.vehicle.client.param.OrderReturnApplyModifyParam;
+import com.chelvc.cloud.vehicle.server.entity.MerchantRelation;
 import com.chelvc.cloud.vehicle.server.entity.OmsOrder;
 import com.chelvc.cloud.vehicle.server.entity.OmsOrderItem;
 import com.chelvc.cloud.vehicle.server.service.AssetService;
+import com.chelvc.cloud.vehicle.server.service.MerchantRelationService;
 import com.chelvc.cloud.vehicle.server.service.OmsOrderRefundService;
 import com.chelvc.cloud.vehicle.server.service.OnlinePayService;
 import com.chelvc.framework.base.context.SessionContextHolder;
@@ -49,6 +51,7 @@ public class OnlinePayServiceImpl  implements OnlinePayService {
     private final UserClient userService;
     private final OmsOrderRefundService omsOrderRefundService;
     private final AssetService assetService;
+    private final MerchantRelationService merchantRelationService;
 
     @Override
     public WechatUnifiedOrder order(OmsOrder omsOrder, List<OmsOrderItem> orderItemList, OmsOrderModifyParam orderParam){
@@ -184,7 +187,6 @@ public class OnlinePayServiceImpl  implements OnlinePayService {
         QueryBuilder builder = new QueryBuilder(omsOrder.getMerchantId().toString());
         builder.setRequestId(omsOrder.getId().toString());
         builder.setPartnerId(TradeConstant.PARTNER_ID);
-
         OnlinePayOrderExecuter executer = new OnlinePayOrderExecuter();
         try {
             executer.bothQuery(builder, new ResultListenerAdpater() {
@@ -226,10 +228,11 @@ public class OnlinePayServiceImpl  implements OnlinePayService {
     }
     @Override
     public void refund(OmsOrder omsOrder, Long refundId){
+        //查询首信易商户号
         RefundBuilder builder = new RefundBuilder(TradeConstant.PARTNER_ID);
         builder.setRequestId(String.valueOf(refundId))
-                .setAmount(String.valueOf(omsOrder.getPayAmount()))
-                .setOrderId(String.valueOf(omsOrder.getId()))
+                .setAmount(String.valueOf(omsOrder.getPayAmount().multiply(new BigDecimal("100")).longValue()))
+                .setOrderId(omsOrder.getOutOrderId())
                 .setNotifyUrl(TradeConstant.ORDER_REFUND_URL);
         OnlinePayOrderExecuter executer = new OnlinePayOrderExecuter();
         String cause = "";
@@ -239,13 +242,15 @@ public class OnlinePayServiceImpl  implements OnlinePayService {
                 public void success(JSONObject jsonObject) {
                     //冻结平台金额
                     BigDecimal payAmount = omsOrder.getPayAmount();
-                    BigDecimal feeAmount = omsOrder.getFeeAmount();
-                    BigDecimal realAmount = payAmount.subtract(feeAmount);
-                    int i = assetService.frozenAmount(realAmount, 0L, 0);
-                    if(i != 1){
-                        omsOrderRefundService.updateStatus(refundId, 3, "冻结金额失败");
-                        throw new ResourceUnavailableException("退款申请失败");
+                    //BigDecimal feeAmount = omsOrder.getFeeAmount();
+                    //BigDecimal realAmount = payAmount.subtract(feeAmount);
+                    int i = assetService.frozenAmount(payAmount, 0L, 0);
+                    if(i == 1){
+                        omsOrderRefundService.updateStatus(refundId, 1, "");
+                        return;
                     }
+                    omsOrderRefundService.updateStatus(refundId, 3, "冻结金额失败");
+                    throw new ResourceUnavailableException("退款申请失败");
                 }
             });
             return;

+ 1 - 1
vehicle-server/src/main/resources/mapper/OmsOrderMapper.xml

@@ -923,7 +923,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 
     <update id="updateStatus">
         update oms_order
-        set status = #{status}, fee_amount = #{feeAmount}, update_time = #{updateTime}
+        set status = #{status}, fee_amount = #{feeAmount}, out_order_id = #{outOrderId}, update_time = #{updateTime}
         where id = #{id}
     </update>