Browse Source

取消订单

刘俊驰 1 year ago
parent
commit
ab1e2e4f47

+ 29 - 21
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentPaymentOrderServiceImpl.java

@@ -22,6 +22,7 @@ import java.util.stream.Collectors;
 import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.service.*;
 import com.ym.mec.common.entity.OrderSkuSync;
+import com.ym.mec.thirdparty.exception.ThirdpartyException;
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
@@ -480,11 +481,11 @@ public class StudentPaymentOrderServiceImpl extends BaseServiceImpl<Long, Studen
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void updateOrder(Map<String, String> rpMap) throws Exception {
-        DealStatusEnum status = "1".equals(rpMap.get("tradeState")) ? DealStatusEnum.SUCCESS : DealStatusEnum.FAILED;
+        DealStatusEnum status = "1".equals(rpMap.get("tradeState")) ? SUCCESS : DealStatusEnum.FAILED;
         StudentPaymentOrder order = findOrderByOrderNo(rpMap.get("merOrderNo"));
         //关闭或失败的订单查询订单成功,订单改成成功,钱退到余额
-        if (order != null && (order.getStatus().equals(DealStatusEnum.CLOSE) || order.getStatus().equals(DealStatusEnum.FAILED)) && status.equals(DealStatusEnum.SUCCESS)) {
-            String memo = order.getStatus().equals(DealStatusEnum.CLOSE) ? "关闭订单" : "失败订单";
+        if (order != null && (order.getStatus().equals(CLOSE) || order.getStatus().equals(DealStatusEnum.FAILED)) && status.equals(SUCCESS)) {
+            String memo = order.getStatus().equals(CLOSE) ? "关闭订单" : "失败订单";
             memo = memo + ",实际支付成功,退到用户余额";
             //更新订单状态
             order.setStatus(status);
@@ -511,7 +512,7 @@ public class StudentPaymentOrderServiceImpl extends BaseServiceImpl<Long, Studen
             return;
         }
 
-        if (status.equals(DealStatusEnum.SUCCESS)) {
+        if (status.equals(SUCCESS)) {
             order.setPayTime(new Date());
         } else {
             order.setMemo(rpMap.get("remarks"));
@@ -529,7 +530,7 @@ public class StudentPaymentOrderServiceImpl extends BaseServiceImpl<Long, Studen
 
         callOrderCallBack(order);
 
-        if (status.equals(DealStatusEnum.SUCCESS)
+        if (status.equals(SUCCESS)
                 && StringUtils.isNotBlank(order.getPaymentChannel())
                 && (order.getPaymentChannel().equals(PaymentChannelEnum.ADAPAY.getCode()) || order.getPaymentChannel().equals(PaymentChannelEnum.YEEPAY.getCode()))
                 && !rpMap.containsKey("simulation")) {
@@ -892,7 +893,7 @@ public class StudentPaymentOrderServiceImpl extends BaseServiceImpl<Long, Studen
         List<StudentPaymentOrderExportDto> orders = studentPaymentOrderDao.getUserApplyOrders(studentId, musicGroupId);
         StudentRegistration studentRegister = studentRegistrationService.getStudentRegister(musicGroupId, studentId);
         for (StudentPaymentOrderExportDto order : orders) {
-            if ((DealStatusEnum.ING.equals(order.getStatus()) || DealStatusEnum.SUCCESS.equals(order.getStatus())) &&
+            if ((DealStatusEnum.ING.equals(order.getStatus()) || SUCCESS.equals(order.getStatus())) &&
                     studentRegister.getPayingStatus().equals(2)) {
                 order.setPayingStatus(2);
             }
@@ -1137,7 +1138,7 @@ public class StudentPaymentOrderServiceImpl extends BaseServiceImpl<Long, Studen
             return BaseController.failed(HttpStatus.CONTINUE, "您有支付中的订单,是否继续支付");
         }
         //处理关闭订单
-        order.setStatus(DealStatusEnum.CLOSE);
+        order.setStatus(CLOSE);
         order.setMemo("关闭订单");
 
         
@@ -1210,7 +1211,7 @@ public class StudentPaymentOrderServiceImpl extends BaseServiceImpl<Long, Studen
             StudentRegistration studentRegistration = studentRegistrationService.getStudentRegister(musicGroupId, userId);
             //获取学员在乐团的状态,如果是在读,那么不处理人数
             if (studentRegistration.getMusicGroupStatus() == StudentMusicGroupStatusEnum.APPLY) {
-                List<StudentPaymentOrder> oldStudentPaymentOrderList = this.queryByCondition(GroupType.MUSIC, musicGroupId, userId, DealStatusEnum.SUCCESS, OrderTypeEnum.APPLY);
+                List<StudentPaymentOrder> oldStudentPaymentOrderList = this.queryByCondition(GroupType.MUSIC, musicGroupId, userId, SUCCESS, OrderTypeEnum.APPLY);
                 //判断是否有成功的订单,如果有,表示已经处理过人数
                 if (oldStudentPaymentOrderList == null || oldStudentPaymentOrderList.size() == 0) {
                     List<StudentPaymentOrderDetail> orderDetail = studentPaymentOrderDetailService.getOrderDetail(order.getId());
@@ -1369,7 +1370,7 @@ public class StudentPaymentOrderServiceImpl extends BaseServiceImpl<Long, Studen
 
         studentPaymentOrder.setStatus(DealStatusEnum.ING);
         if (studentPaymentOrder.getActualAmount().compareTo(BigDecimal.ZERO) == 0) {
-            studentPaymentOrder.setStatus(DealStatusEnum.SUCCESS);
+            studentPaymentOrder.setStatus(SUCCESS);
         }
         studentPaymentOrder.setGroupType(GroupType.MALL_SELL);
         studentPaymentOrder.setUserId(model.getUserId());
@@ -1490,7 +1491,7 @@ public class StudentPaymentOrderServiceImpl extends BaseServiceImpl<Long, Studen
         Map<Integer, String> map = new HashMap<>();
         map.put(userId, userId.toString());
 
-        if (studentPaymentOrder.getStatus() == DealStatusEnum.SUCCESS) {
+        if (studentPaymentOrder.getStatus() == SUCCESS) {
             try {
                 contractService.transferProduceContract(userId, null, studentPaymentOrder.getType());
             } catch (Exception e) {
@@ -1614,7 +1615,7 @@ public class StudentPaymentOrderServiceImpl extends BaseServiceImpl<Long, Studen
             rechargeDetail.setAmount(amount);
             rechargeDetail.setBalance(cashAccount.getBalance().add(amount));
             rechargeDetail.setComment("缴费前充值");
-            rechargeDetail.setStatus(DealStatusEnum.SUCCESS);
+            rechargeDetail.setStatus(SUCCESS);
             rechargeDetail.setTransNo(studentPaymentOrder.getTransNo());
             rechargeDetail.setType(PlatformCashAccountDetailTypeEnum.RECHARGE);
             rechargeDetail.setUserId(userId);
@@ -1629,12 +1630,12 @@ public class StudentPaymentOrderServiceImpl extends BaseServiceImpl<Long, Studen
             paymentDetail.setAmount(amount.negate());
             paymentDetail.setBalance(cashAccount.getBalance());
             paymentDetail.setComment("商品销售");
-            paymentDetail.setStatus(DealStatusEnum.SUCCESS);
+            paymentDetail.setStatus(SUCCESS);
             paymentDetail.setTransNo(studentPaymentOrder.getTransNo());
             paymentDetail.setType(PlatformCashAccountDetailTypeEnum.GOODS_SELL);
             paymentDetail.setUserId(userId);
             sysUserCashAccountDetailService.insert(paymentDetail);
-        } else if (studentPaymentOrder.getStatus() == DealStatusEnum.CLOSE || studentPaymentOrder.getStatus() == DealStatusEnum.FAILED) {
+        } else if (studentPaymentOrder.getStatus() == CLOSE || studentPaymentOrder.getStatus() == DealStatusEnum.FAILED) {
 
             if (studentPaymentOrder.getBalancePaymentAmount() != null && studentPaymentOrder.getBalancePaymentAmount().compareTo(BigDecimal.ZERO) > 0) {
                 sysUserCashAccountService.updateBalance(studentPaymentOrder.getUserId(), studentPaymentOrder.getBalancePaymentAmount(), PlatformCashAccountDetailTypeEnum.REFUNDS, "商城购买支付失败");
@@ -1782,6 +1783,7 @@ public class StudentPaymentOrderServiceImpl extends BaseServiceImpl<Long, Studen
     @Transactional
     public OrderCancelModel cancelOrder(StudentPaymentOrder order, String reason) {
         OrderCancelModel model = new OrderCancelModel();
+        model.setSuccess(true);
         try {
             HfMerchantConfig hfMerchantConfig = hfMerchantConfigService.queryByTenantId(order.getTenantId(), order.getPaymentChannel());
             if(hfMerchantConfig == null){
@@ -1818,22 +1820,28 @@ public class StudentPaymentOrderServiceImpl extends BaseServiceImpl<Long, Studen
                 model.setStatus(false);
                 order.setStatus(CLOSE);
                 order.setMemo(reason);
-            } else {
+            } else if (status.equals("pending")){
                 // 执行关单操作
+                Map<String, String> closeInfo = new HashMap<>();
                 if(StringUtils.equals(order.getPaymentChannel(), PaymentChannelEnum.ADAPAY.getCode())) {
-                    Payment.closeWithKey(order.getTransNo(),"", hfMerchantConfig.getMerKey());
+                    closeInfo = Payment.closeWithKey(order.getTransNo(), "", hfMerchantConfig.getMerKey());
                 }else if(StringUtils.equals(order.getPaymentChannel(), PaymentChannelEnum.YEEPAY.getCode())) {
-                    yeepayPaymentService.close(hfMerchantConfig, order.getTransNo(),"", order.getOrderNo());
+                    closeInfo = yeepayPaymentService.close(hfMerchantConfig, order.getTransNo(), "", order.getOrderNo());
                 }
+                boolean success = "success".equals(closeInfo.get("status"));
                 model.setStatus(false);
                 order.setStatus(CLOSE);
+                model.setSuccess(success);
+                model.setMessage(closeInfo.get("msg"));
+            }
+            if (model.getSuccess()) {
+                TenantContextHolder.setTenantId(order.getTenantId());
+                callOrderCallBack(order);
+                TenantContextHolder.clearTenantId();
             }
-            TenantContextHolder.setTenantId(order.getTenantId());
-            callOrderCallBack(order);
-            TenantContextHolder.clearTenantId();
-            model.setSuccess(true);
-        } catch (Exception e) {
+        }catch (Exception e) {
             model.setSuccess(false);
+            model.setMessage(e.getMessage());
             logger.error("订单[{}]取消失败", order.getTransNo(), e);
         }
         return model;

+ 11 - 0
mec-common/common-core/src/main/java/com/ym/mec/common/entity/OrderCancelModel.java

@@ -17,6 +17,17 @@ public class OrderCancelModel {
     // 调用状态  true:成功  false 失败
     private Boolean success;
 
+    private String message;
+
+
+    public String getMessage() {
+        return message;
+    }
+
+    public void setMessage(String message) {
+        this.message = message;
+    }
+
     public String getPayChannel() {
         return payChannel;
     }

+ 2 - 0
mec-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/service/impl/OmsOrderServiceImpl.java

@@ -220,6 +220,7 @@ public class OmsOrderServiceImpl implements OmsOrderService {
                     if (skuStockRecord.getInternalStock() > 0) {
                         OrderSkuSync.SkuSync sync = new OrderSkuSync.SkuSync();
                         sync.setSku(skuStockRecord.getProductSkuId());
+                        sync.setType("INTERNAL");
 
 
                         int stock = skuStockRecord.getInternalStock() - skuStockRecord.getInternalSaleStock();
@@ -254,6 +255,7 @@ public class OmsOrderServiceImpl implements OmsOrderService {
                         sync.setSku(skuStockRecord.getProductSkuId());
                         sync.setPrice(skuStockRecord.getPrice());
                         sync.setRecordId(skuStockRecord.getId());
+                        sync.setType("TAX");
 
                         int stock = skuStockRecord.getTaxStock() - skuStockRecord.getTaxSaleStock();
                         if (stock > 0) {

+ 3 - 2
mec-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/service/impl/OmsPortalOrderServiceImpl.java

@@ -595,12 +595,13 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
                     cancelOrder.getOrderSn());
             if (userOrderPayment != null) {
                 HttpResponseResult<OrderCancelModel> responseResult = webFeignService.cancelOrder(userOrderPayment.getAdapayNo(),message);
+                LOG.info("管乐迷取消订单返回结果:{}",JSON.toJSONString(responseResult));
                 if (!responseResult.getStatus()) {
-                    throw new BizException("远程取消失败");
+                    throw new BizException("订单取消失败");
                 }
                 OrderCancelModel data = responseResult.getData();
                 if (!data.getSuccess()) {
-                    throw new BizException("远程取消失败");
+                    throw new BizException("订单取消失败:"+data.getMessage());
                 }
                 if (data.getStatus() !=null && data.getStatus()) {
                     LOG.info("订单支付成功,修改订单状态");

+ 4 - 3
mec-thirdparty/src/main/java/com/ym/mec/thirdparty/adapay/Payment.java

@@ -217,10 +217,10 @@ public class Payment {
      * @param merchantKey 商户Key
      * @return Map<String, Object>
      */
-    public static Map<String ,Object> closeWithKey(String transNo, String reason, String merchantKey) {
+    public static Map<String ,String> closeWithKey(String transNo, String reason, String merchantKey) {
 
 
-        Map<String, Object> result = new HashMap<>();
+        Map<String, String> result = new HashMap<>();
 
         Map<String, Object> params = new HashMap<>();
 
@@ -234,6 +234,7 @@ public class Payment {
         } catch (BaseAdaPayException e) {
             LOGGER.info("请求汇付[关单]接口失败:{}", e.getMessage());
             result.put("status", "failed");
+            result.put ("msg",e.getMessage());
             return result;
         }
         if (StringUtils.equals(paymentClose.get("status").toString(), "failed")) {
@@ -250,7 +251,7 @@ public class Payment {
                 result.put("status", "success");
             }
             result.put("status", "failed");
-            // throw new PaymentException(paymentClose.get("error_msg").toString());
+            result.put ("msg",paymentClose.get("error_msg").toString());
         }
 
         return result;

+ 9 - 5
mec-thirdparty/src/main/java/com/ym/mec/thirdparty/yeepay/YeepayPaymentService.java

@@ -113,11 +113,11 @@ public class YeepayPaymentService {
      * @param reason 原因
      * @return Map<String, Object>
      */
-    public Map<String,Object> close(HfMerchantConfig hfMerchantConfig,String transNo, String reason, String outTransNo) {
+    public Map<String,String> close(HfMerchantConfig hfMerchantConfig,String transNo, String reason, String outTransNo) {
 
 
-        Map<String, Object> result = new HashMap<>();
-        result.put("status", "failed");
+        Map<String, String> result = new HashMap<>();
+        result.put("status", "success");
         try {
 
             // 订单参数
@@ -135,12 +135,15 @@ public class YeepayPaymentService {
 
             // 关闭订单异常消息
             if (Objects.nonNull(ret.getError())) {
-                LOGGER.error("易宝[关闭订单]接口失败:transNo={}, reason={}", transNo, reason, ret.getError());
-                result.put("status", "failed");
+                LOGGER.error("易宝[关闭订单]接口失败:transNo={}, reason={}", transNo, ret.getError());
+                result.put("msg", ret.getError().getSubMessage());
+                result.put("status","failed");
             }
 
             JSONObject jsonObject = JSON.parseObject(ret.getStringResult());
 
+            // 响应参数
+
             // 关闭订单成功
             // OPR00000	成功
             // OPR18015	已拒绝支付,不必关闭订单
@@ -153,6 +156,7 @@ public class YeepayPaymentService {
         } catch (Exception e) {
             LOGGER.error("易宝[关闭订单]接口失败:transNo={}, reason={}", transNo, reason, e);
             result.put("status", "failed");
+            result.put("msg", e.getMessage());
 
         }