From 4c591eaffa1724f0d87a310a79f2c5a1474ca2f6 Mon Sep 17 00:00:00 2001 From: xiaohanzi Date: Fri, 11 Sep 2020 17:23:25 +0800 Subject: [PATCH] fix cyf --- .../iformall/controller/WxCarController.java | 2 +- .../park/impl/cyf/CYFParkCallbackService.java | 13 ++++-- .../service/park/impl/cyf/CYFParkService.java | 42 +++++++++++++++++-- .../java/com/iformall/utils/car/CYFUtil.java | 6 +-- 4 files changed, 52 insertions(+), 11 deletions(-) diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxCarController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxCarController.java index ca01d2ee2..0f8a897b3 100644 --- a/mallinkCApi/src/main/java/com/iformall/controller/WxCarController.java +++ b/mallinkCApi/src/main/java/com/iformall/controller/WxCarController.java @@ -161,7 +161,7 @@ public class WxCarController extends BaseController { try { vendorPersonId = parkFactory.getParkService(park.getVendorType()).bindCar(paramMap, park, member); if(StringUtils.isBlank(vendorPersonId)) { - return new ResultData(Result.ERROR,"厂商会员ID未返回"); + return new ResultData(Result.ERROR,"厂商绑定车牌会员ID未返回"); } return parkHelper.bindCar(paramMap, park, member.getId(),vendorPersonId); } catch (Exception e) { diff --git a/mallinkService/src/main/java/com/iformall/service/park/impl/cyf/CYFParkCallbackService.java b/mallinkService/src/main/java/com/iformall/service/park/impl/cyf/CYFParkCallbackService.java index 6977c5133..d395004b5 100644 --- a/mallinkService/src/main/java/com/iformall/service/park/impl/cyf/CYFParkCallbackService.java +++ b/mallinkService/src/main/java/com/iformall/service/park/impl/cyf/CYFParkCallbackService.java @@ -1,6 +1,7 @@ package com.iformall.service.park.impl.cyf; import java.text.ParseException; +import java.util.Date; import java.util.Map; import org.springframework.stereotype.Service; @@ -67,14 +68,20 @@ public class CYFParkCallbackService extends BaseParkService implements ParkCallB @Override public ParkNotifyParam parseUnbindNoticyParam(Object param) { - // TODO Auto-generated method stub return null; } @Override public ParkNotifyParam parsePaidNoticyParam(Object param) { - // TODO Auto-generated method stub - return null; + Map vo = (Map) param; + ParkNotifyParam p = new ParkNotifyParam(); + p.setCarNumber((String) vo.get("plate")); + p.setParkId(String.valueOf(vo.get("parkId"))); + p.setParkOrderId((String) vo.get("orderNo")); + p.setSynId((String) vo.get("orderNo")); + p.setFee(vo.get("fee").toString()); + p.setPayTime((Date) vo.get("payTime")); + return p; } diff --git a/mallinkService/src/main/java/com/iformall/service/park/impl/cyf/CYFParkService.java b/mallinkService/src/main/java/com/iformall/service/park/impl/cyf/CYFParkService.java index ef662eb76..3498b5fc4 100644 --- a/mallinkService/src/main/java/com/iformall/service/park/impl/cyf/CYFParkService.java +++ b/mallinkService/src/main/java/com/iformall/service/park/impl/cyf/CYFParkService.java @@ -19,6 +19,7 @@ import com.iformall.domain.po.WxCoupon; import com.iformall.domain.po.WxPark; import com.iformall.domain.vo.WxCouponOrderCarCVo; import com.iformall.enums.EnumCarVendor; +import com.iformall.enums.EnumCouponUnit; import com.iformall.exception.MallinkException; import com.iformall.service.park.ParkAdapterService; import com.iformall.service.park.impl.BaseParkService; @@ -66,8 +67,7 @@ public class CYFParkService extends BaseParkService implements ParkAdapterServic String ret = cyf.registerCar(token,park.getNumber(),feeGroupId,park.getParkingId(),carNumber,null,member.getNickName()); JSONObject retObj = JSON.parseObject(ret); if (retObj.getIntValue("result") == 1){ - //TODO 返回vendorPersonId - return null; + return retObj.get("localPersonId").toString(); }else { logger.error("cyfBindCar error. paramMap: {} . cyfResult: {}",JSON.toJSONString(paramMap),ret); String msg = retObj.getString("strError"); @@ -128,9 +128,45 @@ public class CYFParkService extends BaseParkService implements ParkAdapterServic } } + /** + * 优惠券支付流程:(1):调取openapi/getFee路径获取当前停车费,入参:plate,parkingId,token + (2):调用地址:http://wechat.cheyifu2016.com/fm-pay/#/transit?encodeURIComponent('orderNo=123&couponFee=2&actualFee=20') + 注: 详细参考接口文档参数 + * @param token + * @param orderNo + * @param couponFee + * @param actualFee + * @return + */ @Override public ResultData useCoupon(Map paramMap, WxPark park, WxCouponOrderCarCVo userCar,WxCoupon coupon,String carNumber) throws Exception{ - return new ResultData(); + String params = park.getVendorParams(); + JSONObject objParams = JSON.parseObject(params); + String token = objParams.getString("token"); + //先获取停车费,然后再提交停车费 + String ret = cyf.getCarStopFee(token,park.getParkingId(),carNumber); + JSONObject retObj = JSON.parseObject(ret); + if (retObj.getIntValue("result") == 1){ + String orderId = retObj.getString("orderId"); + if (StringUtils.isBlank(orderId)) { + logger.error("cyfCarStopFee error. paramMap: {} . cyfResult: {}",JSON.toJSONString(paramMap),ret); + return new ResultData(ErrorCode.CYF_STOP_FEE_FAIL.getCode(), "车易付停车费查询未返回订单编号:"+orderId); + } + if (!coupon.getUnit().equals(EnumCouponUnit.MONEY.getCode())) { + return new ResultData(ErrorCode.CYF_STOP_FEE_FAIL.getCode(), "车易付只能支持金额券,不能使用小时券:"+orderId); + } + int fee = retObj.getInteger("fee"); + int amount = Integer.parseInt(coupon.getPriceStr()); + Map retmap = new HashMap(); + retmap.put("orderNo", orderId); + retmap.put("couponFee", amount); + retmap.put("actualFee", fee-amount); + return new ResultData(); + }else { + logger.error("cyfCarStopFee error. paramMap: {} . cyfResult: {}",JSON.toJSONString(paramMap),ret); + String msg = retObj.getString("strError"); + return new ResultData(ErrorCode.CYF_STOP_FEE_FAIL.getCode(), "停车费获取失败:"+msg); + } } @Override diff --git a/mallinkService/src/main/java/com/iformall/utils/car/CYFUtil.java b/mallinkService/src/main/java/com/iformall/utils/car/CYFUtil.java index 9c85a5c15..5c1ac6dd9 100644 --- a/mallinkService/src/main/java/com/iformall/utils/car/CYFUtil.java +++ b/mallinkService/src/main/java/com/iformall/utils/car/CYFUtil.java @@ -54,8 +54,8 @@ public class CYFUtil { //解绑车辆 public static final String UNBIND_CAR = "http://oepn.cheyifu2016.com:8892/openapi/personCar/delete"; - //上报缴费接口 - + //优惠券缴费接口 + public static final String COUPON_FEE = "http://oepn.cheyifu2016.com:8892/openapi/couponFee"; @@ -140,8 +140,6 @@ public class CYFUtil { return result; } - - private static String Proc(String url, Map paramMap) { CloseableHttpClient httpClient = HttpClients.createDefault();