From 4c9f8dcee91bd2220278bd8857d34c1ad4e43aeb Mon Sep 17 00:00:00 2001 From: hu177768073 <177768073@qq.com> Date: Tue, 21 Jan 2025 09:46:50 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../gas/impl/BsGasOrderServiceImpl.java | 19 ++- .../service/gas/impl/BsGasServiceImpl.java | 1 + .../service/order/OrderPaySuccessService.java | 122 ++++++++++++++++++ 3 files changed, 139 insertions(+), 3 deletions(-) diff --git a/service/src/main/java/com/hfkj/service/gas/impl/BsGasOrderServiceImpl.java b/service/src/main/java/com/hfkj/service/gas/impl/BsGasOrderServiceImpl.java index 4bd1a99..8f113be 100644 --- a/service/src/main/java/com/hfkj/service/gas/impl/BsGasOrderServiceImpl.java +++ b/service/src/main/java/com/hfkj/service/gas/impl/BsGasOrderServiceImpl.java @@ -10,6 +10,7 @@ import com.hfkj.entity.BsGasOrderExample; import com.hfkj.service.gas.BsGasOrderService; import com.hfkj.service.order.BsOrderService; import com.hfkj.service.order.OrderPaySuccessService; +import com.hfkj.sysenum.order.OrderPayTypeEnum; import org.apache.commons.collections4.MapUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; @@ -71,9 +72,21 @@ public class BsGasOrderServiceImpl implements BsGasOrderService { @Override public BsGasOrder repairOrder(String orderNo) throws Exception { - BsGasOrder result = paySuccessService.oilHandle(orderService.getDetail(orderNo)); - if (result.getAbnormal().equals(true)) { - throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "补单失败!原因:" + result.getAbnormalContent()); + // 加油订单 + BsGasOrder gasOrder = getDetailByOrderNo(orderNo); + BsGasOrder result = null; + if (!gasOrder.getPayType().equals(OrderPayTypeEnum.type4.getCode())) { + // 补推 + result = paySuccessService.oilHandle(orderService.getDetail(orderNo)); + if (result.getAbnormal().equals(true)) { + throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "补单失败!原因:" + result.getAbnormalContent()); + } + } else { + // 补推 + result = paySuccessService.oilApiHandle(gasOrder); + if (result.getAbnormal().equals(true)) { + throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "补单失败!原因:" + result.getAbnormalContent()); + } } return result; } diff --git a/service/src/main/java/com/hfkj/service/gas/impl/BsGasServiceImpl.java b/service/src/main/java/com/hfkj/service/gas/impl/BsGasServiceImpl.java index d20b196..d369541 100644 --- a/service/src/main/java/com/hfkj/service/gas/impl/BsGasServiceImpl.java +++ b/service/src/main/java/com/hfkj/service/gas/impl/BsGasServiceImpl.java @@ -149,6 +149,7 @@ public class BsGasServiceImpl implements BsGasService { if (discountUser != null && discountUser.getOverlayDiscount().equals(false)) { // 优惠券与油价不叠加 pricePlatform = priceGun; + priceVip = priceGun; } // 加油金额 diff --git a/service/src/main/java/com/hfkj/service/order/OrderPaySuccessService.java b/service/src/main/java/com/hfkj/service/order/OrderPaySuccessService.java index 76a9ac7..6b4e91d 100644 --- a/service/src/main/java/com/hfkj/service/order/OrderPaySuccessService.java +++ b/service/src/main/java/com/hfkj/service/order/OrderPaySuccessService.java @@ -206,4 +206,126 @@ public class OrderPaySuccessService { return gasOrder; } + /** + * api加油业务 + * @param gasOrder + * @return + * @throws Exception + */ + public BsGasOrder oilApiHandle(BsGasOrder gasOrder) throws Exception { + if (gasOrder.getChannelType().equals(MerchantSourceTypeEnum.type1.getNumber())) { + // 自建站 + // 打印小票 + if (gasOrder.getChannelType().equals(MerchantSourceTypeEnum.type1.getNumber())) { + deviceService.printGasOrder(gasOrder.getMerId(), gasOrder, false); + } + // 查询油站 + BsMerchant merchant = merchantService.getMerchant(gasOrder.getMerNo()); + if (merchant != null) { + // 连锁商户 + if (merchant.getChainBrandId() != null) { + if (merchant.getChainBrandSettleType().equals(MerchantChainBrandSettleTypeEnum.type1.getNumber())) { + // 连锁额度 + Map consumeMap = new HashMap<>(); + consumeMap.put("sourceType", MerchantAccountRecordSourceTypeEnum.type2.getType()); + consumeMap.put("sourceId", gasOrder.getId()); + consumeMap.put("sourceOrderNo", gasOrder.getOrderNo()); + merchantChainBrandAccountService.consume(merchant.getChainBrandId(), gasOrder.getMerNo(), gasOrder.getGasSettlePrice(), consumeMap); + + } else if (merchant.getChainBrandSettleType().equals(MerchantChainBrandSettleTypeEnum.type2.getNumber())) { + // 商户额度 + Map consumeMap = new HashMap<>(); + consumeMap.put("sourceType", MerchantAccountRecordSourceTypeEnum.type2.getType()); + consumeMap.put("sourceId", gasOrder.getId()); + consumeMap.put("sourceOrderNo", gasOrder.getOrderNo()); + merchantAccountService.consume(gasOrder.getMerNo(), gasOrder.getGasSettlePrice(), consumeMap); + } + } else { + // 商户额度 + Map consumeMap = new HashMap<>(); + consumeMap.put("sourceType", MerchantAccountRecordSourceTypeEnum.type2.getType()); + consumeMap.put("sourceId", gasOrder.getId()); + consumeMap.put("sourceOrderNo", gasOrder.getOrderNo()); + merchantAccountService.consume(gasOrder.getMerNo(), gasOrder.getGasSettlePrice(), consumeMap); + } + } + + } else if (gasOrder.getChannelType().equals(MerchantSourceTypeEnum.type2.getNumber())) { + try { + // 能链【团油】 + Map param = new HashMap<>(); + param.put("gasId", gasOrder.getMerNo()); + param.put("oilNo", gasOrder.getGasOilNo()); + param.put("gunNo", Integer.parseInt(gasOrder.getGasGunNo())); + param.put("priceGun", gasOrder.getGasPriceGun()); // 油站价 + param.put("priceVip", gasOrder.getGasPriceCost()); // 成本价 + param.put("driverPhone", gasOrder.getUserPhone()); + param.put("thirdSerialNo", gasOrder.getOrderNo()); + param.put("refuelingAmount", gasOrder.getGasRefuelPrice()); + // 查询账户 + SecDictionary newLinkAccount = dictionaryService.getDictionary("NEW_LINK_ACCOUNT", "" + gasOrder.getGasOilType()); + if (newLinkAccount != null) { + param.put("accountNo", newLinkAccount.getCodeName()); + } + JSONObject pushResult = NewLinkRequestService.refuelingOrderPush(param); + if (pushResult != null && pushResult.getString("code").equals("200")) { + gasOrder.setChannelOrderNo(pushResult.getJSONObject("result").getString("orderNo")); + gasOrder.setAbnormal(false); + gasOrder.setAbnormalContent(null); + } else { + gasOrder.setAbnormal(true); + gasOrder.setAbnormalContent(pushResult.getString("message")); + } + } catch (Exception e) { + gasOrder.setAbnormal(true); + gasOrder.setAbnormalContent("推送订单未知异常!请稍后重新推送"); + } + gasOrderService.updateGasOrder(gasOrder); + + } else if (gasOrder.getChannelType().equals(MerchantSourceTypeEnum.type3.getNumber())) { + try { + // 推送加好油【重庆壳牌】 + CqShellPetroleumRequestService.gasSyncPayment(gasOrder.getOrderNo(), + gasOrder.getMerNo(), + gasOrder.getPayTime(), + gasOrder.getGasRefuelPrice(), + gasOrder.getGasOilNo(), + gasOrder.getGasGunNo(), + gasOrder.getPayablePrice(), + gasOrder.getTotalDeductionPrice() + ); + gasOrder.setAbnormal(false); + gasOrder.setAbnormalContent(null); + + } catch (BaseException e) { + gasOrder.setAbnormal(true); + gasOrder.setAbnormalContent(e.getErrorMsg()); + } catch (Exception e) { + gasOrder.setAbnormal(true); + gasOrder.setAbnormalContent("推送订单未知错误!请稍后重新推送"); + } + gasOrderService.updateGasOrder(gasOrder); + } + + if (StringUtils.isNotBlank(gasOrder.getUserPhone())) { + // 查询商户会员 + BsMerchantUser merchantUser = merchantUserService.getUser(gasOrder.getMerNo(), gasOrder.getUserPhone()); + if (merchantUser == null) { + // 注册商户会员 + merchantUser = new BsMerchantUser(); + merchantUser.setMerId(gasOrder.getMerId()); + merchantUser.setMerNo(gasOrder.getMerNo()); + merchantUser.setMerName(gasOrder.getMerName()); + merchantUser.setUserId(gasOrder.getUserId()); + merchantUser.setUserPhone(gasOrder.getUserPhone()); + merchantUser.setVipLevel(0); + merchantUser.setIntegral(0); + merchantUser.setStatus(1); + merchantUserService.editData(merchantUser); + } + // TODO 赠送积分 + } + return gasOrder; + } + }