From caa63e7c7ef85dcd09bf76b88f0d23091c66248d Mon Sep 17 00:00:00 2001 From: xhxu Date: Wed, 15 Jun 2022 20:53:06 +0800 Subject: [PATCH] //tt product --- .../controller/WxOrderController.java | 130 +++++++++--------- .../controller/callback/TtPayController.java | 5 - .../service/impl/WxPayOrderServiceImpl.java | 111 ++------------- 3 files changed, 73 insertions(+), 173 deletions(-) diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java index 2b9dbacfe..756a6e378 100644 --- a/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java +++ b/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java @@ -249,7 +249,7 @@ public class WxOrderController extends BaseController { WxComposeOrder order = (WxComposeOrder) resultData.data; Map data = new HashMap<>(); data.put("out_order_no",order.getMainOrderId().toString()); - data.put("pay_expire_seconds",300); +// data.put("pay_expire_seconds",300); data.put("order_entry_schema",wxOrderService.getOrderEntrySchema(order.getMainOrderId())); List> goodsValid = new ArrayList<>(); for (Long couponChannelId:order.getCouponChannelMap().keySet()) { @@ -291,70 +291,70 @@ public class WxOrderController extends BaseController { } } - @ApiOperation(value = "更新订单状态", notes = "{\"payOrderId\":\"string\",\"composeOrderId\":\"string\",\"status\":integer,\"reason\":\"string\"}") - @PostMapping("/updatePayOrder") - public ResultData updatePayOrder(@RequestBody Map paramMap) { - logger.info("/api/pay/updatePayOrder" + paramMap.toString()); - String orderIdStr = (String) paramMap.get("composeOrderId"); - if (StringUtils.isBlank(orderIdStr)) { - logger.info("orderId不能为空: " + paramMap.toString()); - return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "orderId不能为空"); - } - Long orderId = 0L; - try { - orderId = Long.valueOf(orderIdStr); - } catch (NumberFormatException e) { - logger.error("orderId参数不正确: " + paramMap.toString() + ", e:" + e.getMessage()); - return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "orderId参数不正确"); - } - - WxBatchOrder batchOrder = wxOrderService.getWxBatchOrder(getTenantInfo(),orderId); - if(batchOrder == null){ - return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(), "未找到订单"); - } - - WxPayOrder payOrder = new WxPayOrder(); - payOrder.setOrderId(orderId); - payOrder.updateTenantInfo(getTenantInfo()); - payOrder.setPayVendor(getPayWay().getCode()); - payOrder.setComposeOrder(batchOrder.getOrderType()); - - try { - WxPayOrder byObj = wxPayOrderService.getByObj(payOrder); - if(byObj != null){ - return new ResultData(Result.SUCCESS, "支付状态更新成功"); - }else{ - - - WxComposeOrder composeOrder = orderFactory.getOrderAdapterService(payOrder.getComposeOrder()).getComposeOrder(payOrder.getOrderId(), payOrder.getTenantId()); - - WxAppinfo appInfo = wxAppinfoService.getCAppInfo(payOrder, EnumPayWay.getEnum(payOrder.getPayVendor()).getPlat()); - //WxCUser user = getUser(); - //WxAppinfo appInfo = getAppInfo(user.getAppId()); - if (null == appInfo) { - return new ResultData(ErrorCode.PAY_ORDER_ERROR, "当前支付类型["+payOrder.getPayVendor()+"]找不到C端appInfo"); - } - WxPayAccount payAccount = wxPayAccountService.getById(appInfo.getPayId()); - try { - WxPayOrder wo = wxPayOrderService.handleWxOrderQuery(payOrder, composeOrder,appInfo, payAccount, IdWorker.get(),false); - if (null != wo) { - return new ResultData(Result.SUCCESS, "支付状态更新成功", composeOrder); - } - }catch(MallinkException e) { - //已经同步了微信的支付状态,表示已经更新 - return new ResultData(Result.SUCCESS, "支付状态更新成功", composeOrder); - } - - return new ResultData(ErrorCode.PAY_ORDER_ERROR, "查询微信订单支付状态失败,请稍后!"); - } - } catch (MallinkException e) { - logger.error("支付状态更新失败2: " + payOrder.toString() + ", e:" + e.getMessage(),e); - return new ResultData(e.getErrorCode(), e.getMessage()); - } catch (Exception e) { - logger.error("支付状态更新失败3: " + payOrder.toString() + ", e:" + e.getMessage(),e); - return new ResultData(ErrorCode.PAY_ORDER_ERROR, "支付状态更新失败3: " + payOrder.toString() + ", e:" + e.getMessage()); - } - } +// @ApiOperation(value = "更新订单状态", notes = "{\"payOrderId\":\"string\",\"composeOrderId\":\"string\",\"status\":integer,\"reason\":\"string\"}") +// @PostMapping("/updatePayOrder") +// public ResultData updatePayOrder(@RequestBody Map paramMap) { +// logger.info("/api/pay/updatePayOrder" + paramMap.toString()); +// String orderIdStr = (String) paramMap.get("composeOrderId"); +// if (StringUtils.isBlank(orderIdStr)) { +// logger.info("orderId不能为空: " + paramMap.toString()); +// return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "orderId不能为空"); +// } +// Long orderId = 0L; +// try { +// orderId = Long.valueOf(orderIdStr); +// } catch (NumberFormatException e) { +// logger.error("orderId参数不正确: " + paramMap.toString() + ", e:" + e.getMessage()); +// return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "orderId参数不正确"); +// } +// +// WxBatchOrder batchOrder = wxOrderService.getWxBatchOrder(getTenantInfo(),orderId); +// if(batchOrder == null){ +// return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(), "未找到订单"); +// } +// +// WxPayOrder payOrder = new WxPayOrder(); +// payOrder.setOrderId(orderId); +// payOrder.updateTenantInfo(getTenantInfo()); +// payOrder.setPayVendor(getPayWay().getCode()); +// payOrder.setComposeOrder(batchOrder.getOrderType()); +// +// try { +// WxPayOrder byObj = wxPayOrderService.getByObj(payOrder); +// if(byObj != null){ +// return new ResultData(Result.SUCCESS, "支付状态更新成功"); +// }else{ +// +// +// WxComposeOrder composeOrder = orderFactory.getOrderAdapterService(payOrder.getComposeOrder()).getComposeOrder(payOrder.getOrderId(), payOrder.getTenantId()); +// +// WxAppinfo appInfo = wxAppinfoService.getCAppInfo(payOrder, EnumPayWay.getEnum(payOrder.getPayVendor()).getPlat()); +// //WxCUser user = getUser(); +// //WxAppinfo appInfo = getAppInfo(user.getAppId()); +// if (null == appInfo) { +// return new ResultData(ErrorCode.PAY_ORDER_ERROR, "当前支付类型["+payOrder.getPayVendor()+"]找不到C端appInfo"); +// } +// WxPayAccount payAccount = wxPayAccountService.getById(appInfo.getPayId()); +// try { +// WxPayOrder wo = wxPayOrderService.handleWxOrderQuery(payOrder, composeOrder,appInfo, payAccount, IdWorker.get(),false); +// if (null != wo) { +// return new ResultData(Result.SUCCESS, "支付状态更新成功", composeOrder); +// } +// }catch(MallinkException e) { +// //已经同步了微信的支付状态,表示已经更新 +// return new ResultData(Result.SUCCESS, "支付状态更新成功", composeOrder); +// } +// +// return new ResultData(ErrorCode.PAY_ORDER_ERROR, "查询微信订单支付状态失败,请稍后!"); +// } +// } catch (MallinkException e) { +// logger.error("支付状态更新失败2: " + payOrder.toString() + ", e:" + e.getMessage(),e); +// return new ResultData(e.getErrorCode(), e.getMessage()); +// } catch (Exception e) { +// logger.error("支付状态更新失败3: " + payOrder.toString() + ", e:" + e.getMessage(),e); +// return new ResultData(ErrorCode.PAY_ORDER_ERROR, "支付状态更新失败3: " + payOrder.toString() + ", e:" + e.getMessage()); +// } +// } diff --git a/mallinkCallback/src/main/java/com/iformall/controller/callback/TtPayController.java b/mallinkCallback/src/main/java/com/iformall/controller/callback/TtPayController.java index 3d8c83f04..5a7055528 100644 --- a/mallinkCallback/src/main/java/com/iformall/controller/callback/TtPayController.java +++ b/mallinkCallback/src/main/java/com/iformall/controller/callback/TtPayController.java @@ -173,11 +173,6 @@ public class TtPayController extends BaseController { if(batchOrder == null){ logger.error("未找到订单"+orderId); } - wxpayOrder = new WxPayOrder(); - wxpayOrder.setOrderId(orderId); - wxpayOrder.updateTenantInfo(tenantEntity); - wxpayOrder.setPayVendor(batchOrder.getPayVendor()); - wxpayOrder.setComposeOrder(batchOrder.getOrderType()); } PayQueryAdapterResult queryResult = payServiceFactory.getPayAdapterService(wxpayOrder.getPayVendor()).queryPayStatus(wxpayOrder, appinfo, payAccount); if (EnumPayStatus.PAY_STATUS_SUCCESS.getCode() == queryResult.getCode()) { diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java index c99bd45e6..be1d203f5 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java @@ -131,105 +131,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { @Override public void handleSuccessOrder(WxPayOrder oldRecord,WxComposeOrder composeOrder,PayQueryAdapterResult queryResult,boolean isScheduleTask,boolean isOneChildOrder) { Date curDate = new Date(); - if(EnumPayWay.PAY_WAY_TT.getCode().equals(oldRecord.getPayVendor()) && oldRecord.getId() == null){ - EnumPayShare isShare = EnumPayShare.NO; - WxAppinfo appInfo = wxAppinfoService.getCAppInfo(oldRecord, EnumPayWay.getEnum(oldRecord.getPayVendor()).getPlat()); - WxPayAccount payAccount = wxPayAccountMapper.selectById(appInfo.getPayId()); - if (payAccount.checkShare()) { - isShare = EnumPayShare.YES; - } - - TtPayOrderQueryV2Result result = (TtPayOrderQueryV2Result) queryResult.getData(); - - WxBatchOrder batchOrder = wxBatchOrderMapper.selectById(oldRecord.getOrderId(), oldRecord.getTenantId()); - String open_id = (String) batchOrder.getExpParamValue("open_id"); - - oldRecord.setId(oldRecord.getOrderId()); - oldRecord.setOpenId(open_id); - oldRecord.setComposeOrder(batchOrder.getOrderType()); - - oldRecord.setCreateTime(curDate); - oldRecord.setUpdateTime(curDate); - oldRecord.setPayTimeStart(batchOrder.getCreateDate()); - - oldRecord.setPayOrderNo(result.getOutOrderNo()); - oldRecord.setPayAmount(result.getTotalFee()); - - oldRecord.setPayOrderStatus(EnumPayStatus.PAY_STATUS_SUCCESS.getCode()); - oldRecord.setTtPayWay(result.getPayChannel()); - - String timEndStr = queryResult.getEndTimeStr(); - Date timeEnd = null; - try { - timeEnd = Utility.getDateFromString(timEndStr); - } catch (ParseException e) { - logger.error("解析timeEnd失败"); - timeEnd = new Date(); - } - oldRecord.setPayTimeEnd(timeEnd); - oldRecord.setPayEndFrom(EnumPayEndFrom.QUERY.getCode()); - oldRecord.setTransactionId(result.getPaymentOrderId()); - - oldRecord.setShare(isShare.getCode()); - if (isShare == EnumPayShare.YES) { - PayShareAdapterService payShareServie = payServiceFactory.getPayShareAdapterService(oldRecord.getPayVendor()); - - PayShareCalculateAmount recordShareAmount = payShareServie.calculateAmount(oldRecord.getPayAmount(), payAccount); - // 分账金额 - Integer share_amount = recordShareAmount.getShareAmount(); - oldRecord.setShareAmount(share_amount); - oldRecord.setRateAmount(recordShareAmount.getRateAmount()); - //设置子订单分账金额 - Map childShares = new HashMap(); - OrderAdapterService orderAdapterService = orderFactory.getOrderAdapterService(composeOrder.getComposeOrderType()); - List orderList = orderAdapterService.getChildOrders(composeOrder, appInfo.getTenantId()); - if(null != orderList && orderList.size() > 0) { - for (WxOrder o : orderList) { - PayShareCalculateAmount oShareAmount = payShareServie.calculateAmount(o.getPayment(), payAccount); - Integer orderShareAmount = oShareAmount.getShareAmount(); - Integer orderRateAmount = oShareAmount.getRateAmount(); - childShares.put(String.valueOf(o.getId()), new WxComposeChildOrderShare(o.getPayment(), orderShareAmount, orderRateAmount)); - } - oldRecord.setChildOrderShare(JSON.toJSONString(childShares)); - } - } - - int sqlRow = wxPayOrderMapper.insert(oldRecord); - - WxPayOrderServiceImpl proxy = (WxPayOrderServiceImpl) AopContext.currentProxy(); - if (!EnumComposeOrder.isSingle(composeOrder.getComposeOrderType())) { - //如果是组合订单的单独处理。如定时处理的单个订单 - if (isOneChildOrder) { - //处理其他信息 - try { - proxy.handleOrderPaySingleOrderSuccess(composeOrder.getSingleOrder(),oldRecord, queryResult.getTransactionId(),isScheduleTask); - }catch(Exception e) { - throw new MallinkException(ErrorCode.SYS_SERVER_ERROR.getCode(),e.getMessage()); - } - }else { - List orderList = orderFactory.getOrderAdapterService(composeOrder.getComposeOrderType()).getChildOrders(composeOrder, oldRecord.getTenantId()); - for (WxOrder o : orderList) { - try { - proxy.handleOrderPaySingleOrderSuccess(o,oldRecord, queryResult.getTransactionId(), isScheduleTask); - }catch(Exception e) { - logger.error("handleSuccessOrder error.",e); - } - } - } - }else { - //处理其他信息 - try { - proxy.handleOrderPaySingleOrderSuccess(composeOrder.getSingleOrder(),oldRecord, queryResult.getTransactionId(),isScheduleTask); - }catch(Exception e) { - throw new MallinkException(ErrorCode.SYS_SERVER_ERROR.getCode(),e.getMessage()); - } - } - - - - - - }else if(oldRecord.getId() != null && oldRecord.getPayOrderStatus() != EnumPayStatus.PAY_STATUS_SUCCESS.getCode()){ + if(oldRecord.getPayOrderStatus() != EnumPayStatus.PAY_STATUS_SUCCESS.getCode()){ WxPayOrderServiceImpl proxy = (WxPayOrderServiceImpl) AopContext.currentProxy(); //因为此处是处理订单支付成功了但是订单状态为未支付成功的异常状态,库存不应该再扣减 //更新wxPayOrder @@ -468,11 +370,14 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { } }else { { + // 3.1 创建支付订单 - Long id = idworker.nextId(); - if (null == id || id.longValue() <=0) { - throw new MallinkException(ErrorCode.PAY_ORDER_PAYING.getCode(),"订单支付流水号生成失败!new payorder:"+record.getOrderId()+",id:"+id); - } +// Long id = idworker.nextId(); +// if (null == id || id.longValue() <=0) { +// throw new MallinkException(ErrorCode.PAY_ORDER_PAYING.getCode(),"订单支付流水号生成失败!new payorder:"+record.getOrderId()+",id:"+id); +// } + + Long id = record.getOrderId();//支付订单号=订单号 record.setId(id); record.updateTenantInfo(composeOrder);