From b3402f14def84f24433875a770ec417b75a42abd Mon Sep 17 00:00:00 2001 From: gongbiao Date: Thu, 2 Jan 2020 09:56:06 +0800 Subject: [PATCH 1/3] =?UTF-8?q?[=E9=A6=96=E9=A1=B5=E6=B5=AE=E5=B1=82][?= =?UTF-8?q?=E4=BF=AE=E6=94=B9][=E7=94=A8=E6=88=B7=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=E5=A4=9A=E6=AC=A1=E6=8F=92=E5=85=A5=E9=97=AE=E9=A2=98]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/WxCuserFloatingLayerServiceImpl.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCuserFloatingLayerServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCuserFloatingLayerServiceImpl.java index 8e46e6795..20ddb838b 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCuserFloatingLayerServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCuserFloatingLayerServiceImpl.java @@ -56,7 +56,12 @@ public class WxCuserFloatingLayerServiceImpl implements WxCuserFloatingLayerServ wxCuserFloatingLayerQuery.setUserId(byOpenId.getId()); WxCuserFloatingLayer wxCuserFloatingLayer = wxCuserFloatingLayerMapper.selectOne(new QueryWrapper<>(wxCuserFloatingLayerQuery)); if (wxCuserFloatingLayer == null) { - saveCuserFloatingLayer(byOpenId); + try { + saveCuserFloatingLayer(byOpenId); + } catch (Exception e) { + logger.error("用户 {} 已弹过浮层",byOpenId.getId()); + return null; + } return getWxFloatingLayer(byOpenId); } return null; From 912c37d926189321e063b0aac7e11509d7d43d91 Mon Sep 17 00:00:00 2001 From: Stormeye Wu Date: Fri, 3 Jan 2020 11:37:34 +0800 Subject: [PATCH 2/3] =?UTF-8?q?[=E5=81=9C=E8=BD=A6=E5=88=B8][=E6=96=B0?= =?UTF-8?q?=E5=A2=9E]:=E6=B3=8A=E9=93=BE=E5=81=9C=E8=BD=A6=E5=88=B8?= =?UTF-8?q?=E6=8A=B5=E6=89=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../iformall/controller/WxCarController.java | 47 ++++++++++++-- .../java/com/iformall/common/ErrorCode.java | 16 ++--- .../com/iformall/utils/car/BoLinkUtil.java | 61 +++++++++++++++++-- .../com/iformall/utils/car/ShangAnUtil.java | 4 +- 4 files changed, 106 insertions(+), 22 deletions(-) diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxCarController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxCarController.java index 14be16e0f..e3f68aeaf 100644 --- a/mallinkCApi/src/main/java/com/iformall/controller/WxCarController.java +++ b/mallinkCApi/src/main/java/com/iformall/controller/WxCarController.java @@ -371,7 +371,7 @@ public class WxCarController extends BaseController { if (e != null) return e; return new ResultData(retObj); } else { - return new ResultData(ErrorCode.TJD_BIND_FAIL.getCode(), "绑车牌失败", retObj); + return new ResultData(ErrorCode.CAR_BIND_FAIL.getCode(), "绑车牌失败", retObj); } } @@ -538,7 +538,7 @@ public class WxCarController extends BaseController { return new ResultData(); } else { - return new ResultData(ErrorCode.TJD_UNBIND_FAIL, "解绑车牌失败"); + return new ResultData(ErrorCode.CAR_UNBIND_FAIL, "解绑车牌失败"); } } return null; @@ -721,9 +721,10 @@ public class WxCarController extends BaseController { * 优免券不可退 */ @ApiOperation(value = "停车券使用", - notes = "ETCP:={\"etcpToken\":\"string(ETCP专用)\",\"carNumber\":\"string\",\"couponOrderId\"=\"String\"},输出\n{}\n" + - "TJD:{\"carNumber\":\"string\",\"tradeId\":\"string\",\"accountId\":\"string\",\"couponOrderId\":\"string\"}" + - "ShangAn:{\"carNumber\":\"string\",\"couponOrderId\":\"string\"}" + notes = "ETCP:={\"etcpToken\":\"string(ETCP专用)\",\"carNumber\":\"string\",\"couponOrderId\"=\"String\"}\n" + + "TJD:{\"carNumber\":\"string\",\"tradeId\":\"string\",\"accountId\":\"string\",\"couponOrderId\":\"string\"}\n" + + "ShangAn:{\"carNumber\":\"string\",\"couponOrderId\":\"string\"}\n" + + "BoLink:{\"carNumber\":\"string\",\"orderId\":\"string\",\"couponOrderId\":\"string\"}\n" ) @PostMapping("/getCoupon") public ResultData getCoupon(@RequestBody Map paramMap) { @@ -842,7 +843,7 @@ public class WxCarController extends BaseController { if (retObj.getString(TJDUtil.TJD_RETURN_CODE).equalsIgnoreCase(EnumTJDCode.SUCCESS.getMessage())) { return new ResultData(); } else { - return new ResultData(ErrorCode.TJD_DEDUCE_FEE_FAIL.getCode(), "停车费抵扣失败"); + return new ResultData(ErrorCode.CAR_DEDUCE_FEE_FAIL.getCode(), "停车费抵扣失败"); } } else if (park.getVendorType().equals(EnumCarVendor.CAR_SHANGAN.getCode())) { WxCoupon coupon = couponService.getById(userCar.getCouponId()); @@ -876,6 +877,40 @@ public class WxCarController extends BaseController { } else { return new ResultData(ErrorCode.SHANGAN_COUPON_FAIL.getCode(), retObj.getString(ShangAnUtil.SHANGAN_ERROR_CODE)); } + } else if (park.getVendorType().equals(EnumCarVendor.CAR_BOLINK.getCode())) { + String orderId = paramMap.get("orderId"); + if (StringUtils.isBlank(orderId)) { + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "orderId为空"); + } + WxCoupon coupon = couponService.getById(userCar.getCouponId()); + if (coupon == null) { + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "券为空"); + } + String params = park.getVendorParams(); + JSONObject objParams = JSON.parseObject(params); + String url = objParams.getString(BoLinkUtil.BOLINK_URL); + String comid = objParams.getString(BoLinkUtil.BOLINK_COMID); + String unionId = objParams.getString(BoLinkUtil.BOLINK_UNION_ID); + String key = objParams.getString(BoLinkUtil.BOLINK_KEY); + + String amount = ""; + if (coupon.getUnit().equals(EnumCouponUnit.MONEY.getCode())) { + amount = coupon.getPriceStr(); + } else { + amount = String.valueOf(coupon.getPrice()* 60); + } + + String ret = BoLinkUtil.couponSend(url, comid, unionId, key, + carNumber, + orderId, + coupon.getUnit().toString(), amount); + JSONObject retObj = JSON.parseObject(ret); + JSONObject dataObj = retObj.getJSONObject(BoLinkUtil.BOLINK_DATA); + if (dataObj.getIntValue(BoLinkUtil.BOLINK_STATE) == BoLinkUtil.BOLINK_SUCCESS) { + return new ResultData(dataObj); + } else { + return new ResultData(ErrorCode.CAR_DEDUCE_FEE_FAIL); + } } return new ResultData(ErrorCode.CAR_VENDOR_NOT_SUPPORT.getCode(), "优免券领取失败"); } diff --git a/mallinkService/src/main/java/com/iformall/common/ErrorCode.java b/mallinkService/src/main/java/com/iformall/common/ErrorCode.java index 516793d3b..bace7ceb7 100644 --- a/mallinkService/src/main/java/com/iformall/common/ErrorCode.java +++ b/mallinkService/src/main/java/com/iformall/common/ErrorCode.java @@ -151,17 +151,17 @@ public enum ErrorCode{ ETCP_QUAN_SEND_FAIL(2056, "ETCP优免券发放失败"), ETCP_CMD_FAIL(2057, "ETCP网络异常"), - TJD_BIND_FAIL(2060,"TJD绑车牌失败"), - TJD_UNBIND_FAIL(2061,"TJD解绑车牌失败"), - TJD_STOP_FEE_FAIL(2062, "TJD停车费失败"), - TJD_DEDUCE_FEE_FAIL(2063, "TJD停车费抵扣失败"), + CAR_BIND_FAIL(2060,"绑车牌失败"), + CAR_UNBIND_FAIL(2061,"解绑车牌失败"), + CAR_CMD_FAIL(2062, "网络异常"), + CAR_DEDUCE_FEE_FAIL(2063, "停车费抵扣失败"), + + TJD_STOP_FEE_FAIL(2064, "TJD停车费失败"), SHANGAN_COUPON_FAIL(2065, "优惠券失败"), - SHANGAN_CMD_FAIL(2066, "尚安网络异常"), - BOLINK_SIGN_ERR(2068, "泊链签名错误"), - BOLINK_STOP_FEE_FAIL(2069, "泊链停车费获取失败"), - BOLINK_CMD_FAIL(2066, "泊链网络异常"), + BOLINK_SIGN_ERR(2066, "泊链签名错误"), + BOLINK_STOP_FEE_FAIL(2067, "泊链停车费获取失败"), /** diff --git a/mallinkService/src/main/java/com/iformall/utils/car/BoLinkUtil.java b/mallinkService/src/main/java/com/iformall/utils/car/BoLinkUtil.java index fc9a90f64..24993c0cb 100644 --- a/mallinkService/src/main/java/com/iformall/utils/car/BoLinkUtil.java +++ b/mallinkService/src/main/java/com/iformall/utils/car/BoLinkUtil.java @@ -3,6 +3,7 @@ package com.iformall.utils.car; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.iformall.common.ErrorCode; +import com.iformall.enums.EnumCouponUnit; import com.iformall.exception.MallinkException; import org.apache.http.Consts; import org.apache.http.HttpEntity; @@ -21,6 +22,7 @@ import java.io.IOException; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.util.Base64; +import java.util.Date; import java.util.HashMap; import java.util.Map; @@ -35,8 +37,13 @@ public class BoLinkUtil { public static final String BOLINK_UNION_ID = "union_id"; public static final String BOLINK_KEY = "key"; public static final String BOLINK_CAR_NUMBER = "car_number"; + public static final String BOLINK_ORDER_ID = "order_id"; + public static final String BOLINK_PAY_TIME = "pay_time"; + public static final String BOLINK_ACT_TOTAL = "act_total"; + public static final String BOLINK_DEDUCTION_TIME = "deduction_time"; + public static final String BOLINK_DEDUCTION_MONEY = "deduction_money"; - public static final String URL = "https://yun.bolink.club/zld/queryorderprice"; + public static final String URL = "https://yun.bolink.club"; public static final String COMID = "30536"; public static final String UNION_ID = "200389"; public static final String KEY = "Y29PZH9KDT1V7Y1E"; @@ -101,8 +108,10 @@ public class BoLinkUtil { return false; } - public static String getStopFee(String url, String comid, String unionId, String key, String carNumber) { - Map params = new HashMap<>(); + public static String getStopFee(String baseUrl, String comid, String unionId, String key, String carNumber) { + String stopFeeUrl = "/zld/queryorderprice"; + String url = baseUrl + stopFeeUrl; + Map params = new HashMap<>(); params.put(BOLINK_COMID, comid); params.put(BOLINK_UNION_ID, unionId); params.put(BOLINK_CAR_NUMBER, carNumber); @@ -115,10 +124,10 @@ public class BoLinkUtil { try { String result = Proc(url, key, params); if(result == null) { - throw new MallinkException(ErrorCode.BOLINK_CMD_FAIL); + throw new MallinkException(ErrorCode.CAR_CMD_FAIL); } if(checkRespFailed(result)) { - throw new MallinkException(ErrorCode.BOLINK_CMD_FAIL); + throw new MallinkException(ErrorCode.CAR_CMD_FAIL); } return result; } catch (Exception e) { @@ -126,7 +135,47 @@ public class BoLinkUtil { } } - private static String Proc(String url, String key, Map paramMap) { + public static String couponSend(String baseUrl, String comid, String unionId, String key, + String carNumber, + String orderId, + String unit, String amount) { + String couponUrl = "/zld/openservice/paynoticetopark"; + String url = baseUrl + couponUrl; + Map params = new HashMap<>(); + params.put(BOLINK_COMID, comid); + params.put(BOLINK_UNION_ID, unionId); + params.put(BOLINK_CAR_NUMBER, carNumber); + params.put(BOLINK_ORDER_ID, orderId); + params.put(BOLINK_PAY_TIME, new Date().getTime()); + params.put(BOLINK_ACT_TOTAL, "0"); + if (unit.equals(EnumCouponUnit.MONEY.getCode())) { + // 金额 + params.put(BOLINK_DEDUCTION_MONEY, amount); + } else { + // 小时 + params.put(BOLINK_DEDUCTION_TIME, amount); + } + try { + String sign = getSign(key, JSON.toJSONString(params)); + } catch (Exception e) { + logger.error(e.getMessage()); + } + + try { + String result = Proc(url, key, params); + if(result == null) { + throw new MallinkException(ErrorCode.CAR_CMD_FAIL); + } + if(checkRespFailed(result)) { + throw new MallinkException(ErrorCode.CAR_CMD_FAIL); + } + return result; + } catch (Exception e) { + return null; + } + } + + private static String Proc(String url, String key, Map paramMap) { CloseableHttpClient httpClient = HttpClients.createDefault(); HttpPost httpPost = new HttpPost(url); diff --git a/mallinkService/src/main/java/com/iformall/utils/car/ShangAnUtil.java b/mallinkService/src/main/java/com/iformall/utils/car/ShangAnUtil.java index b528d37c9..e55b84456 100644 --- a/mallinkService/src/main/java/com/iformall/utils/car/ShangAnUtil.java +++ b/mallinkService/src/main/java/com/iformall/utils/car/ShangAnUtil.java @@ -111,10 +111,10 @@ public class ShangAnUtil { try { String result = Proc(url, key, parkNumber, params); if(result == null) { - throw new MallinkException(ErrorCode.SHANGAN_CMD_FAIL); + throw new MallinkException(ErrorCode.CAR_CMD_FAIL); } if(checkRespFailed(result)) { - throw new MallinkException(ErrorCode.SHANGAN_CMD_FAIL); + throw new MallinkException(ErrorCode.CAR_CMD_FAIL); } return result; } catch (Exception e) { From a0db2d7bda910898ac1bd4c07444f9e248081f4e Mon Sep 17 00:00:00 2001 From: Stormeye Wu Date: Fri, 3 Jan 2020 14:59:36 +0800 Subject: [PATCH 3/3] =?UTF-8?q?[=E5=81=9C=E8=BD=A6][=E6=96=B0=E5=A2=9E]:?= =?UTF-8?q?=E5=88=9D=E5=A7=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/iformall/controller/WxCarController.java | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxCarController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxCarController.java index e3f68aeaf..9c9c681f4 100644 --- a/mallinkCApi/src/main/java/com/iformall/controller/WxCarController.java +++ b/mallinkCApi/src/main/java/com/iformall/controller/WxCarController.java @@ -101,17 +101,14 @@ public class WxCarController extends BaseController { // 2. get vendor params if (park.getVendorType().equals(EnumCarVendor.CAR_ETCP.getCode())) { return initForEtcp(paramMap, user, park); - } else if (park.getVendorType().equals(EnumCarVendor.CAR_TJD.getCode())) { - // TJD不需要共同登录 + } else if (park.getVendorType().equals(EnumCarVendor.CAR_TJD.getCode()) || + park.getVendorType().equals(EnumCarVendor.CAR_DAHUA.getCode()) || + park.getVendorType().equals(EnumCarVendor.CAR_SHANGAN.getCode()) || + park.getVendorType().equals(EnumCarVendor.CAR_BOLINK.getCode())) { Map resultMap = new HashMap(); - resultMap.put("vendor", EnumCarVendor.CAR_TJD.getCode()); - return new ResultData(resultMap); - } else if (park.getVendorType().equals(EnumCarVendor.CAR_DAHUA.getCode())) { - Map resultMap = new HashMap(); - resultMap.put("vendor", EnumCarVendor.CAR_DAHUA.getCode()); + resultMap.put("vendor", park.getVendorType()); return new ResultData(resultMap); } - return new ResultData(ErrorCode.CAR_VENDOR_NOT_SUPPORT.getCode(), "登录失败"); }