From 8263e05598c36693f224f0a9a7c98fb1b4dcc2b5 Mon Sep 17 00:00:00 2001 From: "Stormeye.Wu" Date: Fri, 17 Aug 2018 09:17:34 +0800 Subject: [PATCH] =?UTF-8?q?[=E8=BD=A6=E6=B5=81][=E6=96=B0=E5=A2=9E|?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D]:Admin=E7=AB=AF=E8=BD=A6=E6=B5=81=E7=9B=B8?= =?UTF-8?q?=E5=85=B3API=E5=8F=8A=E5=9B=9E=E8=B0=83=E5=87=BD=E6=95=B0?= =?UTF-8?q?=EF=BC=8CC=E7=AB=AF=E8=BD=A6=E6=B5=81api=E5=AE=9E=E7=8E=B0?= =?UTF-8?q?=E6=95=B4=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../simple/controller/WxCarController.java | 283 ++++++++++++++ .../simple/controller/WxCarController.java | 364 +++++------------- 2 files changed, 379 insertions(+), 268 deletions(-) create mode 100644 mallinkAdmin/src/main/java/com/simple/controller/WxCarController.java diff --git a/mallinkAdmin/src/main/java/com/simple/controller/WxCarController.java b/mallinkAdmin/src/main/java/com/simple/controller/WxCarController.java new file mode 100644 index 000000000..617949098 --- /dev/null +++ b/mallinkAdmin/src/main/java/com/simple/controller/WxCarController.java @@ -0,0 +1,283 @@ +package com.simple.controller; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.simple.common.ErrorCode; +import com.simple.common.Result; +import com.simple.common.ResultData; +import com.simple.domain.po.*; +import com.simple.enums.EnumCarVendor; +import com.simple.service.WxCUserCarService; +import com.simple.service.WxMerchantService; +import com.simple.service.WxParkService; +import com.simple.utils.ETCPUtil; +import com.simple.utils.TJDCarUtil; +import io.swagger.annotations.ApiOperation; +import org.apache.commons.lang3.StringUtils; +import org.apache.log4j.Logger; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@RestController +@RequestMapping("/api/car") +public class WxCarController extends BaseController +{ + private Logger logger = Logger.getLogger(WxCarController.class); + + ETCPUtil etcp = new ETCPUtil(); + + TJDCarUtil tjd = new TJDCarUtil(); + + @Autowired + WxParkService wxParkService; + + @Autowired + WxCUserCarService wxCUserCarService; + + @Autowired + WxMerchantService wxMerchantService; + + private WxPark getCurrentPark(MallUserInfo user) { + WxPark wxPark = wxParkService.getByTenantId(user.getTenantId()); + // 1, get mall's park + // future use redis to optimize + return wxPark; + } + + @ApiOperation(value = "获取车场支持的厂家",notes="") + @GetMapping("/getVendor") + public ResultData getVendor() { + MallUserInfo user = getUser(); + // 1, get mall's park + WxPark park = getCurrentPark(user); + Map map = new HashMap(); + map.put("vendor", park.getVendorType()); + return new ResultData(map); + } + + // 优免券模板 + /* + { + "id": 4974, //优免券模板 ID + "parkId": "fbqXUlfVvfc=", //车场标识 + "businessId": "ZcWQ26TeJuQ=", //商家标识 + title -- "businessName": "天洋广场", //商家名称 + subtitle -- "name": "商家 1 小时优免券", //优免券名称 + "category": "1", //优免券类型 1:小时优惠券,2:金额优惠券,3:折扣优惠券,4:免费券 + price -- "categoryValue": "1.00", //优免券价值 + total -- "amount": 100000, //优免券数量 + valid_start_date -- "effectiveStart": "2018-02-01", //生效开始时间 + valid_end_date -- "effectiveEnd": "2028-02-01",//生效结束时间 + -"couponType": "0",//优惠券类型 + number 库存 -- "avaliavleNum": 99993 //可用优惠券 + }, + */ + @ApiOperation(value = "优免券模板", notes = "{\"merchantId\":\"商户ID\"}\n输出\n" + + "{\n" + + "\"data\":{" + + "\"count\": 4," + + "\"couponPlatformModels\": [\n" + + " {\n" + + " \"id\": 4974, //优免券模板 ID\n" + + " \"parkId\": \"fbqXUlfVvfc=\", //车场标识" + + " \"businessId\": \"ZcWQ26TeJuQ=\", //商家标识" + + " \"businessName\": \"天洋广场\", //商家名称" + + " \"name\": \"商家 1 小时优免券\", //优免券名称" + + " \"category\": \"1\", //优免券类型\n 1:小时优惠券,2:金额优惠券,3:折扣优惠券,4:免费券" + + " \"categoryValue\": \"1.00\", //优免券价值\n" + + " \"amount\": 100000, //优免券数量\n" + + " \"effectiveStart\": \"2018-02-01\", //生效开始时间\n" + + " \"effectiveEnd\": \"2028-02-01\",//生效结束时间\n" + + " \"couponType\": \"0\",//优惠券类型\n" + + " \"avaliavleNum\": 99993 //可用优惠券\n" + + " },\n" + + " {...},\n" + + " {...}\n" + + " ]}}\n") + @PostMapping("/quanTemplate") + public ResultData quanTemplate(Map paramMap) { + MallUserInfo user = getUser(); + /// 1, get mall's park + WxPark park = getCurrentPark(user); + if (park.getVendorType() == EnumCarVendor.CAR_ETCP.getCode()) { + String merchantIdStr = paramMap.get("merchantId"); + if (StringUtils.isBlank(merchantIdStr)) { + // 优先从从商户表里取 + return new ResultData(ErrorCode.PARAMETER_NOT_NULL.getCode(), "merchantId为空"); + } + String params = park.getVendorParams(); + JSONObject objParams = JSON.parseObject(params); + String url = objParams.getString("url"); + String merchantNo = objParams.getString("merchantNo"); + String merchantKey = objParams.getString("merchantKey"); + String version = objParams.getString("version"); + String parkId = objParams.getString("parkId"); + // bussinessId from 参数信息 + String businessId = ""; + // 优先从从商户表里取 + businessId = getETCPBusinessID(merchantIdStr); + if (StringUtils.isBlank(businessId)) { + // 1期只有一个虚拟商户,可以写在商场配置里 + businessId = objParams.getString("businessId"); + } + String ret = etcp.getBCouponList(url, merchantNo, merchantKey, version, parkId, businessId); + JSONObject retObj = JSON.parseObject(ret); + if (retObj.getIntValue("code") == 0) { + return new ResultData(retObj.getJSONObject("data")); + } else { + return new ResultData(ErrorCode.ETCP_QUAN_TEMP_FAIL.getCode(), "优免券模板未发现"); + } + } + return new ResultData(ErrorCode.CAR_VENDOR_NOT_SUPPORT.getCode(), "优免券模板失败"); + } + + private String getETCPBusinessID(String merchantIdStr) { + String businessId; + Long merchantId = 0L; + try { + merchantId = Long.valueOf(merchantIdStr); + } catch (NumberFormatException e) { + logger.error(e.getMessage()); + } + WxMerchant wxMerchant = wxMerchantService.getById(merchantId); + String carParams = wxMerchant.getCarParams(); + JSONObject objParams1 = JSON.parseObject(carParams); + businessId = objParams1.getString("businessId"); + return businessId; + } + + /** + * ETCP 车辆入场通知 + */ + @RequestMapping(value = "/etcpParkInCallback") + public Result etcpParkInCallback(@RequestParam Map param) { + /* + { + "synId": "4ebd80ff-cfcf-462a-94cb-727e9fa9547c", + "plateNumber": "渝 ATX061", + "parkName": "ETCP 智慧停车场", + "parkId": "1", + "entranceTime": "2017-08-20 12:59:54", + "userType": "76", + "pushTime": "2017-08-20 12:59:57", + "fixParkingId": "U7", + "remainingDays": "11" } + */ + return new Result(0, "ok"); + } + + /** + * ETCP 车辆出场通知 + */ + @RequestMapping(value = "/etcpParkOutCallback") + public Result etcpParkOutCallback(@RequestParam Map param) { + /* + { + "synId": "fd92f645-880e-4c2a-9d7d-7081a2488181", + "plateNumber": "渝 ATX061", + "parkName": "ETCP 智慧停车场", + "parkId": "1", + "entranceTime": "2017-08-17 18:44:19", + "userType": "76", + "pushTime": "2017-08-20 11:57:51", + "exitTime": "2017-08-19 12:07:19", + "stayedTime": 148980, + "receivableFee": 0, + "paidServiceFee": 0, + "fixParkingId": "U7", + "remainingDays": "12" + } + */ + return new Result(0, "ok"); + } + + /** + * ETCP 车辆解绑通知 + */ + @RequestMapping(value = "/etcpUnbindCarCallBack") + public Result etcpUnbindCarCallBack(@RequestParam Map param) { + /* + { + "plateNumber": "渝 ATX061", + "time": "2017-08-20 11:57:51" + } + */ + return new Result(0, "ok"); + } + + /** + * ETCP 主动支付结果通知 + */ + @RequestMapping(value = "/etcpPaidCallback") + public Result etcpPaidCallback(@RequestParam Map param) { + /* + { + "plateNumber": "渝 ATX061", + "orderId": "fd92f645-880e-4c2a-9d7d-7081a2488181", + "fee": 7.65, + "paidServiceFee": 0.07, + "coupon": 0, + "time": "2017-08-20 11:57:51" + } + */ + return new Result(0, "ok"); + } + + + /** + * TJD 车辆入场通知 + */ + @RequestMapping(value = "/tjdParkInCallback") + public Map tjdParkInCallback(@RequestParam Map param) { + /* + { + "tradeId": "5836b8b52ada463ebc6199579f029565", + "outCarId": "45454545454", + "carNum": "京A45413", + "carNumColor ": "blue", + "inDt": "20170319202020", + "parkName": "测试停车场", + "parkId": "5836b8b52ada463ebc6199579f029561", + "lon": "74.000272", + "lat": "159.768703", + "wLon": "123.523032", + "wLat": "35.430735", + "payUrl": "http://prep.tingjiandan.com/tcweixin/letter/prePay/payInPark.html?prePayType=16&channel=10001", + "canFindCar": "0" + } + */ + Map map = new HashMap(); + map.put("isSuccess", "0"); + map.put("errorMsg", ""); + return map; + } + + /** + * TJD 车辆出场通知 + */ + @RequestMapping(value = "/tjdParkoutCallback") + public Map tjdParkOutCallback(@RequestParam Map param) { + /* + { + "tradeId": "5836b8b52ada463ebc6199579f029565", + "outDt": "20170319232020", + "lon": "74.000272", + "lat": "159.768703", + "wLon": "123.523032", + "wLat": "35.430735", + "parkAmount": "5.20" + } + */ + Map map = new HashMap(); + map.put("isSuccess", "0"); + map.put("errorMsg", ""); + return map; + } + +} diff --git a/mallinkCApi/src/main/java/com/simple/controller/WxCarController.java b/mallinkCApi/src/main/java/com/simple/controller/WxCarController.java index 8340c59f5..7a3ae01b0 100644 --- a/mallinkCApi/src/main/java/com/simple/controller/WxCarController.java +++ b/mallinkCApi/src/main/java/com/simple/controller/WxCarController.java @@ -6,13 +6,11 @@ import com.alibaba.fastjson.JSONObject; import com.simple.common.ErrorCode; import com.simple.common.Result; import com.simple.common.ResultData; -import com.simple.domain.po.WxCUser; -import com.simple.domain.po.WxCUserCar; -import com.simple.domain.po.WxCarCmdLogs; -import com.simple.domain.po.WxPark; +import com.simple.domain.po.*; import com.simple.enums.EnumCarVendor; import com.simple.service.WxCUserCarService; import com.simple.service.WxCarCmdLogsService; +import com.simple.service.WxMerchantService; import com.simple.service.WxParkService; import com.simple.utils.ETCPUtil; import com.simple.utils.TJDCarUtil; @@ -45,6 +43,9 @@ public class WxCarController extends BaseController @Autowired WxCUserCarService wxCUserCarService; + @Autowired + WxMerchantService wxMerchantService; + private WxPark getCurrentPark(WxCUser user) { WxPark wxPark = wxParkService.getByTenantId(user.getTenantId()); // 1, get mall's park @@ -184,7 +185,15 @@ public class WxCarController extends BaseController * @return */ @ApiOperation(value = "绑车牌", notes = "ETCP:={\"etcpToken\":\"string\",\"carNumber\":\"string\"}\n" + - "TJD:={\"carNumber\":\"string\",\"carNumColor\":\"string\",\"outCarId\":\"string\"}") + "TJD:={\"carNumber\":\"string\",\"carNumColor\":\"string\",\"outCarId\":\"string\"}\n返回\n" + + "{\n" + + " \"timestamp\": \"1464235239561\",\n" + + " \"returnCode\": \"T\",\n" + + " \"errorMsg\": \"\",\n" + + " \"returnMsg\": \"OK\",\n" + + " \"isSuccess\": \"0\",\n" + + " \"carId\": \"5836b8b52ada463ebc6199579f029561\"\n" + + "}\n") @PostMapping("/bindCar") public ResultData bindCar(Map paramMap) { WxCUser user = getUser(); @@ -254,16 +263,6 @@ public class WxCarController extends BaseController String version = objParams.getString("version"); String ret = tjd.registerCar(url, partner, key, version, carNumber, carNumColor, null, outCarId); - /* - { - "timestamp": "1464235239561", - "returnCode": "T", - "errorMsg": "", - "returnMsg": "OK", - "isSuccess": "0", - "carId": "5836b8b52ada463ebc6199579f029561" - } - */ JSONObject retObj = JSON.parseObject(ret); retObj.put("vendor", park.getVendorType()); if (retObj.getString("returnCode") == "T") { @@ -294,8 +293,19 @@ public class WxCarController extends BaseController * @param paramMap * @return */ - @ApiOperation(value = "解绑车牌", notes = "ETCP:={\"etcpToken\":\"string\",\"carNumber\":\"string\"}\n" + - "TJD:={\"carNumber\":\"string\",\"carNumColor\":\"string\",\"outCarId\":\"string\"}") + @ApiOperation(value = "解绑车牌", notes = "ETCP:={\"etcpToken\":\"string\",\"carNumber\":\"string\"}\n返回:\n" + + "{\n" + + " \"code\": 0,\n" + + " \"message\": \"ok\"" + + "}" + + "TJD:={\"carNumber\":\"string\",\"carNumColor\":\"string\",\"outCarId\":\"string\"}\n返回:\n" + + "{\n" + + " \"timestamp\": \"1464235239561\",\n" + + " \"returnCode\": \"T\",\n" + + " \"errorMsg\": \"\",\n" + + " \"returnMsg\": \"OK\",\n" + + " \"isSuccess\": \"0\",\n" + + "}\n") @PostMapping("/unbindCar") public ResultData unbindCar(Map paramMap) { WxCUser user = getUser(); @@ -319,7 +329,6 @@ public class WxCarController extends BaseController String merchantKey = objParams.getString("merchantKey"); String version = objParams.getString("version"); - String ret = etcp.unbindCar(url, merchantNo, merchantKey, version, etcpToken, carNumber); JSONObject retObj = JSON.parseObject(ret); if (retObj.getIntValue("code") == 0) { @@ -355,17 +364,6 @@ public class WxCarController extends BaseController String key = objParams.getString("key"); String version = objParams.getString("version"); String ret = tjd.writeOffCar(url, partner, key, version, carId); - - /* - { - "timestamp": "1464235239561", - "returnCode": "T", - "errorMsg": "", - "returnMsg": "OK", - "isSuccess": "0", - "carId": "5836b8b52ada463ebc6199579f029561" - } - */ JSONObject retObj = JSON.parseObject(ret); if (retObj.getString("returnCode") == "T") { wxCUserCarService.deleteByObj(userCar); @@ -384,8 +382,41 @@ public class WxCarController extends BaseController * @param paramMap * @return */ - @ApiOperation(value = "停车费", notes = "ETCP:={\"etcpToken\":\"string\",\"carNumber\":\"string\"}\n" + - "TJD:={\"carNumber\":\"string\",\"carNumColor\":\"string\",\"outCarId\":\"string\"}") + @ApiOperation(value = "停车费", notes = "ETCP:={\"etcpToken\":\"string\",\"carNumber\":\"string\"}\n输出\n{\n" + + " \"carNumber\": \"渝****87\",\n" + + " \"entranceTime\": \"2017-06-11 11:19:27\",\n" + + " \"exitTime\": \"2017-06-11 11:59:47\",\n" + + " \"orderId\": \"B9466E26-7420-4BDF-958D-E90106AB5F20\", \"parkingFee\": 2.00,\n" + + " \"remainingServiceFee\": 0,\n" + + " \"payedServiceFee\": 0,\n" + + " \"remainingParkFee\": 2.00,\n" + + " \"discountAmount\": 0,\n" + + " \"parkingId\": 3126,\n" + + " \"parkingName\": \"ETCP 停车场\",\n" + + " \"remainingFee\": 2.00,\n" + + " \"paidFee\": 0,\n" + + " \"verificationInfo\": \"FSED9JvxgAU6XJUd8YRF5YH/LpfQYzCAfcPbAOKPV3BjKSatbgIsh7EBH2JBiRoGBe3btr gzKRMTfIoFuCn1XX7HUsJYlb7JSCBArnNmEVU4JuDLLjzoqB7qhQ8KnP16\"\n" + + " }" + + "TJD:={\"carNumber\":\"string\",\"carNumColor\":\"string\",\"outCarId\":\"string\"}\n输出\n{\n" + + " \"inDt\": \"20160526112000\",\n" + + " \"timestamp\": \"1464235239561\",\n" + + " \"returnCode\": \"T\",\n" + + " \"errorMsg\": \"\",\n" + + " \"tradeId\": \"d49aeaedcf144f1faf569846d6b1667e\",\n" + + " \"parkTime\": \"2439593\",\n" + + " \"returnMsg\": \"OK\",\n" + + " \"totalAmount\": \"0.03\",\n" + + " \"isSuccess\": \"0\",\n" + + " \"unPayAmount\": \"0.03\",\n" + + " \"paidAmount\": \"0.00\",\n" + + " \"freeThroughTime\": \"15\",\n" + + " \"outDt\": \"20170321121212\",\n" + + " \"payUrl\": \"http://prep.tingjiandan.com/tcweixin/letter/prePay/payInPark.html?\n" + + " prePayType=16&channel=10001\",\n" + + " \"accountId\": \"d49aeaedcf144f1faf569846d6b16671\",\n" + + " \"freeMinsAmount\": \"0.00\",\n" + + " \"pmParkId\": \"d49aeaedcf144f1faf569846d6b16670\"\n" + + " }") @PostMapping("/getCarStopFee") public ResultData getCarStopFee(Map paramMap) { WxCUser user = getUser(); @@ -411,27 +442,9 @@ public class WxCarController extends BaseController String ret = etcp.orderUnpay(url, appId, merchantNo, merchantKey, version, etcpToken, carNumber); JSONObject retObj = JSON.parseObject(ret); if (retObj.getIntValue("code") == 0) { - // TODO 停车费 - /* - { - "carNumber": "渝****87", - "entranceTime": "2017-06-11 11:19:27", - "exitTime": "2017-06-11 11:59:47", - "orderId": "B9466E26-7420-4BDF-958D-E90106AB5F20", "parkingFee": 2.00, - "remainingServiceFee": 0, - "payedServiceFee": 0, - "remainingParkFee": 2.00, - "discountAmount": 0, - "parkingId": 3126, - "parkingName": "ETCP 停车场", - "remainingFee": 2.00, - "paidFee": 0, - "verificationInfo": "FSED9JvxgAU6XJUd8YRF5YH/LpfQYzCAfcPbAOKPV3BjKSatbgIsh7EBH2JBiRoGBe3btr gzKRMTfIoFuCn1XX7HUsJYlb7JSCBArnNmEVU4JuDLLjzoqB7qhQ8KnP16" - } - */ JSONObject feeObj = retObj.getJSONArray("data").getJSONObject(0); feeObj.put("vendor", park.getVendorType()); - return new ResultData(feeObj); + return new ResultData(Result.SUCCESS, "停车费获取成功", feeObj); } else { return new ResultData(ErrorCode.ETCP_STOP_FEE_FAIL.getCode(), "停车费获取失败"); } @@ -441,7 +454,6 @@ public class WxCarController extends BaseController if (StringUtils.isBlank(carNumber)) { return new ResultData(ErrorCode.PARAMETER_NOT_NULL.getCode(), "carNumber为空"); } - // TODO to get TJD carId String params = park.getVendorParams(); JSONObject objParams = JSON.parseObject(params); String url = objParams.getString("url"); @@ -449,31 +461,8 @@ public class WxCarController extends BaseController String key = objParams.getString("key"); String version = objParams.getString("version"); String ret = tjd.infoForFreeMins(url, partner, key, version, carNumber); - /* - { - "inDt": "20160526112000", - "timestamp": "1464235239561", - "returnCode": "T", - "errorMsg": "", - "tradeId": "d49aeaedcf144f1faf569846d6b1667e", - "parkTime": "2439593", - "returnMsg": "OK", - "totalAmount": "0.03", - "isSuccess": "0", - "unPayAmount": "0.03", - "paidAmount": "0.00", - "freeThroughTime": "15", - "outDt": "20170321121212", - "payUrl": "http://prep.tingjiandan.com/tcweixin/letter/prePay/payInPark.html? - prePayType=16&channel=10001", - "accountId": "d49aeaedcf144f1faf569846d6b16671", - "freeMinsAmount": "0.00", - "pmParkId": "d49aeaedcf144f1faf569846d6b16670" - } - */ JSONObject retObj = JSON.parseObject(ret); if (retObj.getString("returnCode") == "T") { - // TODO remove carNumber return new ResultData(retObj); } else { return new ResultData(ErrorCode.TJD_STOP_FEE_FAIL.getCode(), "停车费获取失败"); @@ -486,7 +475,14 @@ public class WxCarController extends BaseController * 停车费抵扣 * */ - @ApiOperation("停车费抵扣") + @ApiOperation(value = "停车费抵扣", notes = "{\"tradeId\":\"string\",\"deductionAmount\":\"string\",\"accountId\":\"string\",\"orderId\":\"string\"}\nresult\n{\n" + + " \"timestamp\": \"1464235239561\",\n" + + " \"returnCode\": \"T\",\n" + + " \"errorMsg\": \"\",\n" + + " \"returnMsg\": \"OK\",\n" + + " \"isSuccess\": \"0\",\n" + + " \"carId\": \"5836b8b52ada463ebc6199579f029561\"\n" + + " }") @PostMapping("/deductionFee") public ResultData deductionFee(Map paramMap) { WxCUser user = getUser(); @@ -495,21 +491,20 @@ public class WxCarController extends BaseController if (park.getVendorType() == EnumCarVendor.CAR_TJD.getCode()) { String tradeId = paramMap.get("tradeId"); String deductionAmount = paramMap.get("deductionAmount"); - // TODO out wx_records id - String outTradeNo = paramMap.get("outTradeNo"); String accountId = paramMap.get("accountId"); + String outTradeNo = paramMap.get("orderId"); if (StringUtils.isBlank(tradeId)) { return new ResultData(ErrorCode.PARAMETER_NOT_NULL.getCode(), "tradeId为空"); } if (StringUtils.isBlank(deductionAmount)) { return new ResultData(ErrorCode.PARAMETER_NOT_NULL.getCode(), "deductionAmount为空"); } - if (StringUtils.isBlank(outTradeNo)) { - return new ResultData(ErrorCode.PARAMETER_NOT_NULL.getCode(), "outTradeNo为空"); - } if (StringUtils.isBlank(accountId)) { return new ResultData(ErrorCode.PARAMETER_NOT_NULL.getCode(), "accountId为空"); } + if (StringUtils.isBlank(outTradeNo)) { + return new ResultData(ErrorCode.PARAMETER_NOT_NULL.getCode(), "orderId为空"); + } String params = park.getVendorParams(); JSONObject objParams = JSON.parseObject(params); String url = objParams.getString("url"); @@ -517,19 +512,8 @@ public class WxCarController extends BaseController String key = objParams.getString("key"); String version = objParams.getString("version"); String ret = tjd.deductionNotSettle(url, partner, key, version, tradeId, deductionAmount, outTradeNo, accountId); - /* - { - "timestamp": "1464235239561", - "returnCode": "T", - "errorMsg": "", - "returnMsg": "OK", - "isSuccess": "0", - "carId": "5836b8b52ada463ebc6199579f029561" - } - */ JSONObject retObj = JSON.parseObject(ret); if (retObj.getString("returnCode") == "T") { - // TODO remove carNumber return new ResultData(); } else { return new ResultData(ErrorCode.TJD_DEDUCE_FEE_FAIL.getCode(), "停车费抵扣失败"); @@ -538,76 +522,26 @@ public class WxCarController extends BaseController return new ResultData(ErrorCode.CAR_VENDOR_NOT_SUPPORT.getCode(), "停车费抵扣失败"); } - // 优免券模板 - /* - { - "id": 4974, //优免券模板 ID - "parkId": "fbqXUlfVvfc=", //车场标识 - "businessId": "ZcWQ26TeJuQ=", //商家标识 - title -- "businessName": "天洋广场", //商家名称 - subtitle -- "name": "商家 1 小时优免券", //优免券名称 - "category": "1", //优免券类型 1:小时优惠券,2:金额优惠券,3:折扣优惠券,4:免费券 - price -- "categoryValue": "1.00", //优免券价值 - total -- "amount": 100000, //优免券数量 - valid_start_date -- "effectiveStart": "2018-02-01", //生效开始时间 - valid_end_date -- "effectiveEnd": "2028-02-01",//生效结束时间 - -"couponType": "0",//优惠券类型 - number 库存 -- "avaliavleNum": 99993 //可用优惠券 - }, - */ - @ApiOperation("优免券模板") - @PostMapping("/quanTemplate") - public ResultData quanTemplate(Map paramMap) { - WxCUser user = getUser(); - /// 1, get mall's park - WxPark park = getCurrentPark(user); - if (park.getVendorType() == EnumCarVendor.CAR_ETCP.getCode()) { - String params = park.getVendorParams(); - JSONObject objParams = JSON.parseObject(params); - String url = objParams.getString("url"); - String merchantNo = objParams.getString("merchantNo"); - String merchantKey = objParams.getString("merchantKey"); - String version = objParams.getString("version"); - String parkId = objParams.getString("parkId"); - // bussinessId from 参数信息 - String businessId = paramMap.get("businessId"); - if (StringUtils.isBlank(businessId)) { - // TODO 1期只有一个虚拟商户,可以写在商场配置里 - businessId = objParams.getString("businessId"); - } - String ret = etcp.getBCouponList(url, merchantNo, merchantKey, version, parkId, businessId); - JSONObject retObj = JSON.parseObject(ret); - if (retObj.getIntValue("code") == 0) { - /* - "data": { - "count": 4, "couponPlatformModels": [ - { - "id": 4974, //优免券模板 ID - "parkId": "fbqXUlfVvfc=", //车场标识 "businessId": "ZcWQ26TeJuQ=", //商家标识 "businessName": "天洋广场", //商家名称 "name": "商家 1 小时优免券", //优免券名称 "category": "1", //优免券类型 - 1:小时优惠券,2:金额优惠券,3:折扣优惠券,4:免费券 "categoryValue": "1.00", //优免券价值 - "amount": 100000, //优免券数量 - "effectiveStart": "2018-02-01", //生效开始时间 - "effectiveEnd": "2028-02-01",//生效结束时间 - "couponType": "0",//优惠券类型 - "avaliavleNum": 99993 //可用优惠券 - }, - {...}, - {...} - ] - */ - return new ResultData(retObj.getJSONObject("data")); - } else { - return new ResultData(ErrorCode.ETCP_QUAN_TEMP_FAIL.getCode(), "优免券模板未发现"); - } + private String getETCPBusinessID(String merchantIdStr) { + String businessId; + Long merchantId = 0L; + try { + merchantId = Long.valueOf(merchantIdStr); + } catch (NumberFormatException e) { + logger.error(e.getMessage()); } - return new ResultData(ErrorCode.CAR_VENDOR_NOT_SUPPORT.getCode(), "优免券模板失败"); + WxMerchant wxMerchant = wxMerchantService.getById(merchantId); + String carParams = wxMerchant.getCarParams(); + JSONObject objParams1 = JSON.parseObject(carParams); + businessId = objParams1.getString("businessId"); + return businessId; } /** * 优免券领取 * 优免券不可退 */ - @ApiOperation(value = "优免券领取", notes="ETCP:={\"etcpToken\":\"string\",\"carNumber\":\"string\",\"couponFreeId\":\"string\"}") + @ApiOperation(value = "优免券领取", notes="ETCP:={\"etcpToken\":\"string\",\"carNumber\":\"string\",\"couponFreeId\":\"string\"},输出\n{}") @PostMapping("/getCoupon") public ResultData getCoupon(Map paramMap) { WxCUser user = getUser(); @@ -617,6 +551,7 @@ public class WxCarController extends BaseController String etcpToken = paramMap.get("etcpToken"); String carNumber = paramMap.get("carNumber"); String couponFreeId = paramMap.get("couponFreeId"); + String merchantIdStr = paramMap.get("merchantId"); if (StringUtils.isBlank(etcpToken)) { return new ResultData(ErrorCode.PARAMETER_NOT_NULL.getCode(), "etcpToken为空"); } @@ -629,6 +564,9 @@ public class WxCarController extends BaseController if (StringUtils.isBlank(couponFreeId)) { return new ResultData(ErrorCode.PARAMETER_NOT_NULL.getCode(), "couponFreeId为空"); } + if (StringUtils.isBlank(merchantIdStr)) { + return new ResultData(ErrorCode.PARAMETER_NOT_NULL.getCode(), "merchantId为空"); + } String params = park.getVendorParams(); JSONObject objParams = JSON.parseObject(params); String url = objParams.getString("url"); @@ -636,9 +574,11 @@ public class WxCarController extends BaseController String merchantKey = objParams.getString("merchantKey"); String version = objParams.getString("version"); String parkId = objParams.getString("parkId"); - String businessId = paramMap.get("businessId"); + String businessId = ""; + // 优先从从商户表里取 + businessId = getETCPBusinessID(merchantIdStr); if (StringUtils.isBlank(businessId)) { - // TODO 1期只有一个虚拟商户,可以写在商场配置里 + // 1期只有一个虚拟商户,可以写在商场配置里 businessId = objParams.getString("businessId"); } @@ -653,116 +593,4 @@ public class WxCarController extends BaseController } return new ResultData(ErrorCode.CAR_VENDOR_NOT_SUPPORT.getCode(), "优免券领取失败"); } - - // callback - // ETCP 车辆入场通知 - @RequestMapping(value = "/etcpParkInCallback") - public Result etcpParkInCallback(@RequestParam Map param) { - /* - { - "synId": "4ebd80ff-cfcf-462a-94cb-727e9fa9547c", - "plateNumber": "渝 ATX061", - "parkName": "ETCP 智慧停车场", - "parkId": "1", - "entranceTime": "2017-08-20 12:59:54", - "userType": "76", - "pushTime": "2017-08-20 12:59:57", - "fixParkingId": "U7", - "remainingDays": "11" } - */ - return new Result(0, "ok"); - } - // ETCP 车辆出场通知 - @RequestMapping(value = "/etcpParkOutCallback") - public Result etcpParkOutCallback(@RequestParam Map param) { - /* - { - "synId": "fd92f645-880e-4c2a-9d7d-7081a2488181", - "plateNumber": "渝 ATX061", - "parkName": "ETCP 智慧停车场", - "parkId": "1", - "entranceTime": "2017-08-17 18:44:19", - "userType": "76", - "pushTime": "2017-08-20 11:57:51", - "exitTime": "2017-08-19 12:07:19", - "stayedTime": 148980, - "receivableFee": 0, - "paidServiceFee": 0, - "fixParkingId": "U7", - "remainingDays": "12" - } - */ - return new Result(0, "ok"); - } - // ETCP 车辆解绑通知 - @RequestMapping(value = "/etcpUnbindCarCallBack") - public Result etcpUnbindCarCallBack(@RequestParam Map param) { - /* - { - "plateNumber": "渝 ATX061", - "time": "2017-08-20 11:57:51" - } - */ - return new Result(0, "ok"); - } - // ETCP 主动支付结果通知 - @RequestMapping(value = "/etcpPaidCallback") - public Result etcpPaidCallback(@RequestParam Map param) { - /* - { - "plateNumber": "渝 ATX061", - "orderId": "fd92f645-880e-4c2a-9d7d-7081a2488181", - "fee": 7.65, - "paidServiceFee": 0.07, - "coupon": 0, - "time": "2017-08-20 11:57:51" - } - */ - return new Result(0, "ok"); - } - // TJD 车辆入场通知 - @RequestMapping(value = "/tjdParkInCallback") - public Map tjdParkInCallback(@RequestParam Map param) { - /* - { - "tradeId": "5836b8b52ada463ebc6199579f029565", - "outCarId": "45454545454", - "carNum": "京A45413", - "carNumColor ": "blue", - "inDt": "20170319202020", - "parkName": "测试停车场", - "parkId": "5836b8b52ada463ebc6199579f029561", - "lon": "74.000272", - "lat": "159.768703", - "wLon": "123.523032", - "wLat": "35.430735", - "payUrl": "http://prep.tingjiandan.com/tcweixin/letter/prePay/payInPark.html?prePayType=16&channel=10001", - "canFindCar": "0" - } - */ - Map map = new HashMap(); - map.put("isSuccess", "0"); - map.put("errorMsg", ""); - return map; - } - // TJD 车辆出场通知 - @RequestMapping(value = "/tjdParkoutCallback") - public Map tjdParkOutCallback(@RequestParam Map param) { - /* - { - "tradeId": "5836b8b52ada463ebc6199579f029565", - "outDt": "20170319232020", - "lon": "74.000272", - "lat": "159.768703", - "wLon": "123.523032", - "wLat": "35.430735", - "parkAmount": "5.20" - } - */ - Map map = new HashMap(); - map.put("isSuccess", "0"); - map.put("errorMsg", ""); - return map; - } - }