From 88312852ca10ef9b6ffbcdd141897924fef4ebec Mon Sep 17 00:00:00 2001 From: Stormeye Wu Date: Thu, 19 Sep 2019 17:41:23 +0800 Subject: [PATCH] =?UTF-8?q?[=E5=81=9C=E8=BD=A6][=E4=BF=AE=E6=94=B9]:?= =?UTF-8?q?=E5=81=9C=E8=BD=A6code=E6=95=B4=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/car/WxCarController.java | 4 +- .../iformall/controller/WxCarController.java | 4 +- ....java => WxCarETCPCallBackController.java} | 432 +++++++----------- .../callback/WxCarTJDCallBackController.java | 285 ++++++++++++ .../iformall/utils/{ => car}/ETCPUtil.java | 2 +- .../iformall/utils/{ => car}/TJDCarUtil.java | 59 ++- 6 files changed, 513 insertions(+), 273 deletions(-) rename mallinkCallback/src/main/java/com/iformall/controller/callback/{WxCarCallBackController.java => WxCarETCPCallBackController.java} (83%) create mode 100644 mallinkCallback/src/main/java/com/iformall/controller/callback/WxCarTJDCallBackController.java rename mallinkService/src/main/java/com/iformall/utils/{ => car}/ETCPUtil.java (99%) rename mallinkService/src/main/java/com/iformall/utils/{ => car}/TJDCarUtil.java (86%) diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/car/WxCarController.java b/mallinkAdmin/src/main/java/com/iformall/controller/car/WxCarController.java index 34c4d844e..3b16e86e9 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/car/WxCarController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/car/WxCarController.java @@ -15,8 +15,8 @@ import com.iformall.enums.EnumRentContractAppStatus; import com.iformall.exception.MallinkException; import com.iformall.mapper.WxCouponMapper; import com.iformall.service.*; -import com.iformall.utils.ETCPUtil; -import com.iformall.utils.TJDCarUtil; +import com.iformall.utils.car.ETCPUtil; +import com.iformall.utils.car.TJDCarUtil; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxCarController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxCarController.java index f8f2ad79b..3fc060a34 100644 --- a/mallinkCApi/src/main/java/com/iformall/controller/WxCarController.java +++ b/mallinkCApi/src/main/java/com/iformall/controller/WxCarController.java @@ -12,8 +12,8 @@ import com.iformall.domain.vo.WxMerchantVo; import com.iformall.enums.*; import com.iformall.exception.MallinkException; import com.iformall.service.*; -import com.iformall.utils.ETCPUtil; -import com.iformall.utils.TJDCarUtil; +import com.iformall.utils.car.ETCPUtil; +import com.iformall.utils.car.TJDCarUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; diff --git a/mallinkCallback/src/main/java/com/iformall/controller/callback/WxCarCallBackController.java b/mallinkCallback/src/main/java/com/iformall/controller/callback/WxCarETCPCallBackController.java similarity index 83% rename from mallinkCallback/src/main/java/com/iformall/controller/callback/WxCarCallBackController.java rename to mallinkCallback/src/main/java/com/iformall/controller/callback/WxCarETCPCallBackController.java index dce9a0e19..66d305623 100644 --- a/mallinkCallback/src/main/java/com/iformall/controller/callback/WxCarCallBackController.java +++ b/mallinkCallback/src/main/java/com/iformall/controller/callback/WxCarETCPCallBackController.java @@ -12,7 +12,7 @@ import com.iformall.enums.EnumCouponSendSendType; import com.iformall.enums.EnumETCPCode; import com.iformall.service.*; import com.iformall.utils.DateUtils; -import com.iformall.utils.ETCPUtil; +import com.iformall.utils.car.ETCPUtil; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; @@ -32,7 +32,7 @@ import java.util.Map; @RestController @RequestMapping("/carCallback") -public class WxCarCallBackController extends BaseController { +public class WxCarETCPCallBackController extends BaseController { private final Logger logger = LoggerFactory.getLogger(this.getClass()); @Autowired @@ -81,119 +81,6 @@ public class WxCarCallBackController extends BaseController { return new Result(EnumETCPCode.SUCCESS.getCode(), EnumETCPCode.SUCCESS.getMessage()); } - // @Async - private boolean doEtcpParkIn(@RequestBody Map paramMap) { - Date currentDate = new Date(); - WxCarCmdLog wxCarCmdLog = new WxCarCmdLog(); - - wxCarCmdLog.setVendorType(EnumCarVendor.CAR_ETCP.getCode()); - wxCarCmdLog.setCmdType(EnumCarCmd.CAR_ETCP_CALLBACK_PARK_IN.getCode()); - wxCarCmdLog.setCmdJson(JSON.toJSONString(paramMap)); - wxCarCmdLog.setCreateDate(currentDate); - wxCarCmdLog.setUpdateDate(currentDate); - - String etcpParkId = paramMap.get(ETCPUtil.ETCP_PARK_ID); - String tenantId = null; - WxPark parkQ = new WxPark(); - parkQ.setVendorType(EnumCarVendor.CAR_ETCP.getCode()); - parkQ.setParkingId(etcpParkId); - WxPark park = wxParkService.getByObj(parkQ); - if (park == null) { - logger.error("etcpParkInCallback: ETCP车场未找到" + etcpParkId); - //return new Result(ErrorCode.CAR_PARK_NOT_FOUND.getCode(), "ETCP车场未找到"+ etcpParkId); - } else { - tenantId = park.getTenantId(); - wxCarCmdLog.setTenantId(park.getTenantId()); - } - - String carNumber = paramMap.get(ETCPUtil.ETCP_CAR_NUMBER); - String synId = paramMap.get(ETCPUtil.ETCP_SYN_ID); - String parkId = paramMap.get(ETCPUtil.ETCP_PARK_ID); - String parkName = paramMap.get(ETCPUtil.ETCP_PARK_NAME); - String userType = paramMap.get(ETCPUtil.ETCP_USER_TYPE); - String entranceTime = paramMap.get(ETCPUtil.ETCP_ENTRANCE_TIME); - String fixParkingId = paramMap.get(ETCPUtil.ETCP_FIX_PARKING_ID); - String remainingDays = paramMap.get(ETCPUtil.ETCP_REMAINING_DAYS); - - // 检查是否有重复数据 - HashMap map = new HashMap(); - map.put("synId", synId); - map.put("cmdType", EnumCarCmd.CAR_ETCP_CALLBACK_PARK_IN.getCode()); - if(tenantId != null) { - map.put("tenantId", tenantId); - } - WxCarCmdLog carCmdLog = wxCarCmdLogService.getBySynId(map); - if(carCmdLog != null) { - logger.error("ETCP synId已入库: " + paramMap.toString()); - return true; - } - - try { - wxCarCmdLogService.saveOrUpdate(wxCarCmdLog); - } catch (Exception e) { - logger.error("etcpParkInCallback: 入库错误 " + e.getMessage() + "\n" + paramMap.toString()); - return true; - } - - String phoneStrs = ""; - - // 停车发券 - if (!StringUtils.isBlank(carNumber)) { - // 根据车牌查找用户 - WxCUserCar userCarQ = new WxCUserCar(); - userCarQ.setTenantId(tenantId); - userCarQ.setCarNumber(carNumber); - userCarQ.setVendorType(EnumCarVendor.CAR_ETCP.getCode()); - // TODO 可能多用户关联同一张车牌 - List userCarList = wxCUserCarService.getList(userCarQ); - boolean bFirst = true; - for (WxCUserCar userCar : userCarList) { - wxCouponSendService.sendCouponToUser(EnumCouponSendSendType.CAR_STOP, userCar); - WxCUser cUser = wxCUserService.getById(userCar.getCUserId()); - if(cUser != null){ - if(bFirst) { - phoneStrs = cUser.getPhone(); - bFirst = false; - } else { - phoneStrs += "," + cUser.getPhone(); - } - } - } - } - - try { - // 保存WxCarPayRecord - WxCarPayRecord record = new WxCarPayRecord(); - record.setVendorType(wxCarCmdLog.getVendorType()); - record.setSynId(synId); - record.setParkId(parkId); - record.setParkName(parkName); - record.setUserType(userType); - record.setPlateNumber(carNumber); - if(StringUtils.isNotBlank(entranceTime)) { - record.setEntranceTime(dateFormat.parse(entranceTime)); - } - record.setFixParkingId(fixParkingId); - record.setRemainingDays(remainingDays); - record.setPhone(phoneStrs); - record.setTenantId(tenantId); - - WxCarPayRecord query = new WxCarPayRecord(); - query.setSynId(synId); - PageInfo page = wxCarPayRecordService.findCarPayListByPage(query,1,1); - if(page != null && CollectionUtils.isNotEmpty(page.getList())){ - record.setId(page.getList().get(0).getId()); - } - wxCarPayRecordService.saveOrUpdate(record); - } catch (Exception e) { - e.printStackTrace(); - logger.error("WxCarPayRecord: 入库错误 ",e); - logger.error("WxCarPayRecord: 入库错误 "+e.getMessage()+"," + paramMap.toString()); - return true; - } - return false; - } - /** * ETCP 车辆出场通知 * { @@ -221,86 +108,6 @@ public class WxCarCallBackController extends BaseController { return new Result(EnumETCPCode.SUCCESS.getCode(), EnumETCPCode.SUCCESS.getMessage()); } - private boolean doEtcpParkOut(@RequestBody Map paramMap) { - Date currentDate = new Date(); - - WxCarCmdLog wxCarCmdLog = new WxCarCmdLog(); - wxCarCmdLog.setVendorType(EnumCarVendor.CAR_ETCP.getCode()); - wxCarCmdLog.setCmdType(EnumCarCmd.CAR_ETCP_CALLBACK_PARK_OUT.getCode()); - wxCarCmdLog.setCmdJson(JSON.toJSONString(paramMap)); - wxCarCmdLog.setCreateDate(currentDate); - wxCarCmdLog.setUpdateDate(currentDate); - - String etcpParkId = paramMap.get(ETCPUtil.ETCP_PARK_ID); - String tenantId = null; - WxPark parkQ = new WxPark(); - parkQ.setVendorType(EnumCarVendor.CAR_ETCP.getCode()); - parkQ.setParkingId(etcpParkId); - WxPark park = wxParkService.getByObj(parkQ); - if (park == null) { - logger.error("etcpParkOutCallback: ETCP车场未找到 " + etcpParkId); - // return new Result(ErrorCode.CAR_PARK_NOT_FOUND.getCode(), "ETCP车场未找到"+ etcpParkId); - } else { - tenantId = park.getTenantId(); - wxCarCmdLog.setTenantId(tenantId); - } - - try { - wxCarCmdLogService.saveOrUpdate(wxCarCmdLog); - } catch (Exception e) { - logger.error("etcpParkOutCallback: 入库错误 " + e.getMessage() + "\n" + paramMap.toString()); - return true; - } - - String synId = paramMap.get(ETCPUtil.ETCP_SYN_ID); - String exitTime = paramMap.get(ETCPUtil.ETCP_EXIT_TIME); - String stayedTime = paramMap.get(ETCPUtil.ETCP_STAYED_TIME); - String carNumber = paramMap.get(ETCPUtil.ETCP_CAR_NUMBER); - String parkId = paramMap.get(ETCPUtil.ETCP_PARK_ID); - String parkName = paramMap.get(ETCPUtil.ETCP_PARK_NAME); - String userType = paramMap.get(ETCPUtil.ETCP_USER_TYPE); - String entranceTime = paramMap.get(ETCPUtil.ETCP_ENTRANCE_TIME); - String fixParkingId = paramMap.get(ETCPUtil.ETCP_FIX_PARKING_ID); - String remainingDays = paramMap.get(ETCPUtil.ETCP_REMAINING_DAYS); - - try { - // 保存WxCarPayRecord - WxCarPayRecord record = new WxCarPayRecord(); - record.setSynId(synId); - if(StringUtils.isNotBlank(exitTime)) { - record.setExitTime(dateFormat.parse(exitTime)); - } - if(StringUtils.isNotBlank(stayedTime)) { - record.setStayedTime(Long.parseLong(stayedTime)); - } - record.setVendorType(wxCarCmdLog.getVendorType()); - record.setSynId(synId); - record.setParkId(parkId); - record.setParkName(parkName); - record.setUserType(userType); - record.setPlateNumber(carNumber); - if(StringUtils.isNotBlank(entranceTime)) { - record.setEntranceTime(dateFormat.parse(entranceTime)); - } - record.setFixParkingId(fixParkingId); - record.setRemainingDays(remainingDays); - //record.setPhone(phoneStrs); - record.setTenantId(tenantId); - - WxCarPayRecord query = new WxCarPayRecord(); - query.setSynId(synId); - PageInfo page = wxCarPayRecordService.findCarPayListByPage(query,1,1); - if(page != null && CollectionUtils.isNotEmpty(page.getList())){ - record.setId(page.getList().get(0).getId()); - } - wxCarPayRecordService.saveOrUpdate(record); - } catch (Exception e) { - logger.error("WxCarPayRecord: 出场更新错误 " +e.getMessage()+", " +paramMap.toString()); - return true; - } - return false; - } - /** * ETCP 车辆解绑通知 * { @@ -471,105 +278,196 @@ public class WxCarCallBackController extends BaseController { return new Result(EnumETCPCode.SUCCESS.getCode(), EnumETCPCode.SUCCESS.getMessage()); } + // @Async + private boolean doEtcpParkIn(@RequestBody Map paramMap) { + Date currentDate = new Date(); + WxCarCmdLog wxCarCmdLog = new WxCarCmdLog(); - /** - * TJD 车辆入场通知 - * { - * "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" - * } - */ - @RequestMapping(value = "/tjdParkInCallback") - public Map tjdParkInCallback(@RequestBody Map paramMap) { - logger.info("["+getIpAddr()+"tjdParkInCallback: " + paramMap.toString()); - Map map = new HashMap(); - - - String tjdParkId = paramMap.get("parkId"); + wxCarCmdLog.setVendorType(EnumCarVendor.CAR_ETCP.getCode()); + wxCarCmdLog.setCmdType(EnumCarCmd.CAR_ETCP_CALLBACK_PARK_IN.getCode()); + wxCarCmdLog.setCmdJson(JSON.toJSONString(paramMap)); + wxCarCmdLog.setCreateDate(currentDate); + wxCarCmdLog.setUpdateDate(currentDate); + String etcpParkId = paramMap.get(ETCPUtil.ETCP_PARK_ID); + String tenantId = null; WxPark parkQ = new WxPark(); - parkQ.setVendorType(EnumCarVendor.CAR_TJD.getCode()); - parkQ.setParkId(tjdParkId); + parkQ.setVendorType(EnumCarVendor.CAR_ETCP.getCode()); + parkQ.setParkingId(etcpParkId); WxPark park = wxParkService.getByObj(parkQ); if (park == null) { - logger.error("tjdParkInCallback: 停简单车场未找到" + tjdParkId); - map.put("isSuccess", "0"); - map.put("errorMsg", "停简单车场未找到" + tjdParkId); - return map; + logger.error("etcpParkInCallback: ETCP车场未找到" + etcpParkId); + //return new Result(ErrorCode.CAR_PARK_NOT_FOUND.getCode(), "ETCP车场未找到"+ etcpParkId); + } else { + tenantId = park.getTenantId(); + wxCarCmdLog.setTenantId(park.getTenantId()); + } + + String carNumber = paramMap.get(ETCPUtil.ETCP_CAR_NUMBER); + String synId = paramMap.get(ETCPUtil.ETCP_SYN_ID); + String parkId = paramMap.get(ETCPUtil.ETCP_PARK_ID); + String parkName = paramMap.get(ETCPUtil.ETCP_PARK_NAME); + String userType = paramMap.get(ETCPUtil.ETCP_USER_TYPE); + String entranceTime = paramMap.get(ETCPUtil.ETCP_ENTRANCE_TIME); + String fixParkingId = paramMap.get(ETCPUtil.ETCP_FIX_PARKING_ID); + String remainingDays = paramMap.get(ETCPUtil.ETCP_REMAINING_DAYS); + + // 检查是否有重复数据 + HashMap map = new HashMap(); + map.put("synId", synId); + map.put("cmdType", EnumCarCmd.CAR_ETCP_CALLBACK_PARK_IN.getCode()); + if(tenantId != null) { + map.put("tenantId", tenantId); + } + WxCarCmdLog carCmdLog = wxCarCmdLogService.getBySynId(map); + if(carCmdLog != null) { + logger.error("ETCP synId已入库: " + paramMap.toString()); + return true; } - Date currentDate = new Date(); - WxCarCmdLog wxCarCmdLog = new WxCarCmdLog(); - wxCarCmdLog.setTenantId(park.getTenantId()); - wxCarCmdLog.setVendorType(EnumCarVendor.CAR_TJD.getCode()); - wxCarCmdLog.setCmdType(EnumCarCmd.CAR_ETCP_CALLBACK_PARK_IN.getCode()); - wxCarCmdLog.setCmdJson(JSON.toJSONString(paramMap)); - wxCarCmdLog.setCreateDate(currentDate); - wxCarCmdLog.setUpdateDate(currentDate); try { wxCarCmdLogService.saveOrUpdate(wxCarCmdLog); } catch (Exception e) { - logger.error("tjdParkInCallback: 入库错误" + paramMap.toString()); - map.put("isSuccess", "0"); - map.put("errorMsg", "入库错误" + paramMap.toString()); - return map; + logger.error("etcpParkInCallback: 入库错误 " + e.getMessage() + "\n" + paramMap.toString()); + return true; } - map.put("isSuccess", "0"); - map.put("errorMsg", ""); - return map; - } + String phoneStrs = ""; - /** - * TJD 车辆出场通知 - * { - * "tradeId": "5836b8b52ada463ebc6199579f029565", - * "outDt": "20170319232020", - * "lon": "74.000272", - * "lat": "159.768703", - * "wLon": "123.523032", - * "wLat": "35.430735", - * "parkAmount": "5.20" - * } - */ - @RequestMapping(value = "/tjdParkoutCallback") - public Map tjdParkOutCallback(@RequestBody Map paramMap) { - logger.info("["+getIpAddr()+"tjdParkoutCallback: " + paramMap.toString()); - Map map = new HashMap(); + // 停车发券 + if (!StringUtils.isBlank(carNumber)) { + // 根据车牌查找用户 + WxCUserCar userCarQ = new WxCUserCar(); + userCarQ.setTenantId(tenantId); + userCarQ.setCarNumber(carNumber); + userCarQ.setVendorType(EnumCarVendor.CAR_ETCP.getCode()); + // TODO 可能多用户关联同一张车牌 + List userCarList = wxCUserCarService.getList(userCarQ); + boolean bFirst = true; + for (WxCUserCar userCar : userCarList) { + wxCouponSendService.sendCouponToUser(EnumCouponSendSendType.CAR_STOP, userCar); + WxCUser cUser = wxCUserService.getById(userCar.getCUserId()); + if(cUser != null){ + if(bFirst) { + phoneStrs = cUser.getPhone(); + bFirst = false; + } else { + phoneStrs += "," + cUser.getPhone(); + } + } + } + } + try { + // 保存WxCarPayRecord + WxCarPayRecord record = new WxCarPayRecord(); + record.setVendorType(wxCarCmdLog.getVendorType()); + record.setSynId(synId); + record.setParkId(parkId); + record.setParkName(parkName); + record.setUserType(userType); + record.setPlateNumber(carNumber); + if(StringUtils.isNotBlank(entranceTime)) { + record.setEntranceTime(dateFormat.parse(entranceTime)); + } + record.setFixParkingId(fixParkingId); + record.setRemainingDays(remainingDays); + record.setPhone(phoneStrs); + record.setTenantId(tenantId); - String tradeId = paramMap.get("tradeId"); + WxCarPayRecord query = new WxCarPayRecord(); + query.setSynId(synId); + PageInfo page = wxCarPayRecordService.findCarPayListByPage(query,1,1); + if(page != null && CollectionUtils.isNotEmpty(page.getList())){ + record.setId(page.getList().get(0).getId()); + } + wxCarPayRecordService.saveOrUpdate(record); + } catch (Exception e) { + e.printStackTrace(); + logger.error("WxCarPayRecord: 入库错误 ",e); + logger.error("WxCarPayRecord: 入库错误 "+e.getMessage()+"," + paramMap.toString()); + return true; + } + return false; + } + private boolean doEtcpParkOut(@RequestBody Map paramMap) { Date currentDate = new Date(); + WxCarCmdLog wxCarCmdLog = new WxCarCmdLog(); wxCarCmdLog.setVendorType(EnumCarVendor.CAR_ETCP.getCode()); wxCarCmdLog.setCmdType(EnumCarCmd.CAR_ETCP_CALLBACK_PARK_OUT.getCode()); wxCarCmdLog.setCmdJson(JSON.toJSONString(paramMap)); wxCarCmdLog.setCreateDate(currentDate); wxCarCmdLog.setUpdateDate(currentDate); + + String etcpParkId = paramMap.get(ETCPUtil.ETCP_PARK_ID); + String tenantId = null; + WxPark parkQ = new WxPark(); + parkQ.setVendorType(EnumCarVendor.CAR_ETCP.getCode()); + parkQ.setParkingId(etcpParkId); + WxPark park = wxParkService.getByObj(parkQ); + if (park == null) { + logger.error("etcpParkOutCallback: ETCP车场未找到 " + etcpParkId); + // return new Result(ErrorCode.CAR_PARK_NOT_FOUND.getCode(), "ETCP车场未找到"+ etcpParkId); + } else { + tenantId = park.getTenantId(); + wxCarCmdLog.setTenantId(tenantId); + } + try { wxCarCmdLogService.saveOrUpdate(wxCarCmdLog); } catch (Exception e) { - logger.error("tjdParkoutCallback: 入库错误" + paramMap.toString()); - map.put("isSuccess", "0"); - map.put("errorMsg", "入库错误" + paramMap.toString()); - return map; + logger.error("etcpParkOutCallback: 入库错误 " + e.getMessage() + "\n" + paramMap.toString()); + return true; } - map.put("isSuccess", "0"); - map.put("errorMsg", ""); - return map; - } + String synId = paramMap.get(ETCPUtil.ETCP_SYN_ID); + String exitTime = paramMap.get(ETCPUtil.ETCP_EXIT_TIME); + String stayedTime = paramMap.get(ETCPUtil.ETCP_STAYED_TIME); + String carNumber = paramMap.get(ETCPUtil.ETCP_CAR_NUMBER); + String parkId = paramMap.get(ETCPUtil.ETCP_PARK_ID); + String parkName = paramMap.get(ETCPUtil.ETCP_PARK_NAME); + String userType = paramMap.get(ETCPUtil.ETCP_USER_TYPE); + String entranceTime = paramMap.get(ETCPUtil.ETCP_ENTRANCE_TIME); + String fixParkingId = paramMap.get(ETCPUtil.ETCP_FIX_PARKING_ID); + String remainingDays = paramMap.get(ETCPUtil.ETCP_REMAINING_DAYS); + + try { + // 保存WxCarPayRecord + WxCarPayRecord record = new WxCarPayRecord(); + record.setSynId(synId); + if(StringUtils.isNotBlank(exitTime)) { + record.setExitTime(dateFormat.parse(exitTime)); + } + if(StringUtils.isNotBlank(stayedTime)) { + record.setStayedTime(Long.parseLong(stayedTime)); + } + record.setVendorType(wxCarCmdLog.getVendorType()); + record.setSynId(synId); + record.setParkId(parkId); + record.setParkName(parkName); + record.setUserType(userType); + record.setPlateNumber(carNumber); + if(StringUtils.isNotBlank(entranceTime)) { + record.setEntranceTime(dateFormat.parse(entranceTime)); + } + record.setFixParkingId(fixParkingId); + record.setRemainingDays(remainingDays); + //record.setPhone(phoneStrs); + record.setTenantId(tenantId); + WxCarPayRecord query = new WxCarPayRecord(); + query.setSynId(synId); + PageInfo page = wxCarPayRecordService.findCarPayListByPage(query,1,1); + if(page != null && CollectionUtils.isNotEmpty(page.getList())){ + record.setId(page.getList().get(0).getId()); + } + wxCarPayRecordService.saveOrUpdate(record); + } catch (Exception e) { + logger.error("WxCarPayRecord: 出场更新错误 " +e.getMessage()+", " +paramMap.toString()); + return true; + } + return false; + } } diff --git a/mallinkCallback/src/main/java/com/iformall/controller/callback/WxCarTJDCallBackController.java b/mallinkCallback/src/main/java/com/iformall/controller/callback/WxCarTJDCallBackController.java new file mode 100644 index 000000000..f3dc1e5bb --- /dev/null +++ b/mallinkCallback/src/main/java/com/iformall/controller/callback/WxCarTJDCallBackController.java @@ -0,0 +1,285 @@ +package com.iformall.controller.callback; + +import com.alibaba.fastjson.JSON; +import com.iformall.controller.base.BaseController; +import com.iformall.domain.po.*; +import com.iformall.enums.EnumCarCmd; +import com.iformall.enums.EnumCarVendor; +import com.iformall.service.*; +import com.iformall.utils.car.TJDCarUtil; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.HashMap; +import java.util.Map; + +@RestController +@RequestMapping("/carCallback") +public class WxCarTJDCallBackController extends BaseController { + private final Logger logger = LoggerFactory.getLogger(this.getClass()); + + @Autowired + WxParkService wxParkService; + + @Autowired + WxCUserCarService wxCUserCarService; + + @Autowired + WxMerchantService wxMerchantService; + + @Autowired + WxCarCmdLogService wxCarCmdLogService; + + @Autowired + WxCouponSendService wxCouponSendService; + + @Autowired + WxCarPayRecordService wxCarPayRecordService; + + @Autowired + WxCUserService wxCUserService; + + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + + /** + * 注册车牌 + * @param paramMap + * @return + * { + * "service": "parkhub.car.register", + * "partner": "5836b8b51ada463ebc6199579f029566", "sign": "3347b109a1e44f3fd5baa78b74184948", "signType": "md5", + * "charset": "utf-8", + * "version": "1.0", + * "timestamp": "2016-05-26 11:30:10", + * "carNum": "京A12345", + * "carNumColor": "blue", + * "phone": "13612341234", + * "outCarId": "432d85d7441316d29504f480e6a734a8" + * } + * { + * "timestamp": "1464235239561", + * "returnCode": "T", + * "returnMsg": "OK", + * "isSuccess": "0", + * "errorMSG": "", + * "carId": "11ce3dca34124e97830ad466e532eda7" + * } + */ + @RequestMapping(value = "/tjdRegisterCallback") + public Map tjdRegisterCallback(@RequestBody Map paramMap) { + Map map = new HashMap(); + return map; + } + + /** + * 进场通知 + * { + * "parkId": "f3f11a46f3a14056953aed97944242d4", "parkName": "测试停车场", + * "carNum": "京A12345", + * "carNumColor ": "blue", + * "tradeId": "5836b8b52ada463ebc6199579f029565", + * "outCarId": "", + * "inDt": "20170319202020", + * "payUrl": + * "http://prep.tingjiandan.com/tcweixin/letter/prePay/pagePayInPark?prePayType=16&channel=10001&isShowDetail=true&orderId=5836b8b52ada463ebc6199579f029565&returnUrl=", + * "miniProgram": "{ + * \"path\": \"pages/pre_pay/index/main\", + * \"extraData\": { + * \"prePayType\": \"16\", + * \"channel\": \"10001\", + * \"isShowDetail\": \"true\", + * \"orderId\": \"5836b8b52ada463ebc6199579f029565\" + * }}", + * "canFindCar": "0", + * "city": "北京市", + * "district": "海淀区", + * "address": "五道口", + * "lon": "74.000272", + * "lat": "159.768703", + * "wLon": "123.523032", + * "wLat": "35.430735" + * } + */ + @RequestMapping(value = "/tjdParkInCallback") + public Map tjdParkInCallback(@RequestBody Map paramMap) { + logger.info("["+getIpAddr()+"tjdParkInCallback: " + paramMap.toString()); + Map map = new HashMap(); + + String tjdParkId = paramMap.get("parkId"); + + WxPark parkQ = new WxPark(); + parkQ.setVendorType(EnumCarVendor.CAR_TJD.getCode()); + parkQ.setParkId(tjdParkId); + WxPark park = wxParkService.getByObj(parkQ); + if (park == null) { + logger.error("tjdParkInCallback: 停简单车场未找到" + tjdParkId); + map.put("isSuccess", "0"); + map.put("errorMsg", "停简单车场未找到" + tjdParkId); + return map; + } + + Date currentDate = new Date(); + WxCarCmdLog wxCarCmdLog = new WxCarCmdLog(); + wxCarCmdLog.setTenantId(park.getTenantId()); + wxCarCmdLog.setVendorType(EnumCarVendor.CAR_TJD.getCode()); + wxCarCmdLog.setCmdType(EnumCarCmd.CAR_TJD_CALLBACK_PARK_IN.getCode()); + wxCarCmdLog.setCmdJson(JSON.toJSONString(paramMap)); + wxCarCmdLog.setCreateDate(currentDate); + wxCarCmdLog.setUpdateDate(currentDate); + try { + wxCarCmdLogService.saveOrUpdate(wxCarCmdLog); + } catch (Exception e) { + logger.error("tjdParkInCallback: 入库错误" + paramMap.toString()); + map.put("isSuccess", "0"); + map.put("errorMsg", "入库错误" + paramMap.toString()); + return map; + } + + map.put("isSuccess", "0"); + map.put("errorMsg", ""); + return map; + } + + /** + * 离场通知 + * { + * "parkId": "f3f11a46f3a14056953aed97944242d4", + * "parkName": "测试停车场", + * "carNum": "京A12345", + * "carNumColor ": "blue", + * "tradeId": "5836b8b52ada463ebc6199579f029565", + * "inDt": "20170319232020", + * "outDt": "20170319232020", + * "parkAmount": "5.20", + * "lon": "74.000272", + * "lat": "159.768703", + * "wLon": "123.523032", + * "wLat": "35.430735" + * } + */ + @RequestMapping(value = "/tjdParkoutCallback") + public Map tjdParkOutCallback(@RequestBody Map paramMap) { + logger.info("["+getIpAddr()+"tjdParkoutCallback: " + paramMap.toString()); + Map map = new HashMap(); + + + String tradeId = paramMap.get("tradeId"); + + Date currentDate = new Date(); + WxCarCmdLog wxCarCmdLog = new WxCarCmdLog(); + wxCarCmdLog.setVendorType(EnumCarVendor.CAR_TJD.getCode()); + wxCarCmdLog.setCmdType(EnumCarCmd.CAR_TJD_CALLBACK_PARK_OUT.getCode()); + wxCarCmdLog.setCmdJson(JSON.toJSONString(paramMap)); + wxCarCmdLog.setCreateDate(currentDate); + wxCarCmdLog.setUpdateDate(currentDate); + try { + wxCarCmdLogService.saveOrUpdate(wxCarCmdLog); + } catch (Exception e) { + logger.error("tjdParkoutCallback: 入库错误" + paramMap.toString()); + map.put("isSuccess", "0"); + map.put("errorMsg", "入库错误" + paramMap.toString()); + return map; + } + + map.put("isSuccess", "0"); + map.put("errorMsg", ""); + return map; + } + + /** + * 支付通知 + * { + * "parkId ": "77a3424e06e64248b4cf9e490c8c682d", + * "parkName ": "测试停车场", + * "carNum": "京A12345", + * "carNumColor": "blue", + * "tradeId": "6d697f7579724345881633a00ed3a671", + * "payAmount": "5.00", + * "payDt": "20180516225701", + * "lon": "74.000272", + * "lat": "159.768703", + * "wLon": "123.523032", + * "wLat": "35.430735" + * } + */ + @RequestMapping(value = "/tjdPaidCallback") + public Map tjdPaidCallback(@RequestBody Map paramMap) { + logger.info("["+getIpAddr()+"tjdPaidCallback: " + paramMap.toString()); + Map map = new HashMap(); + + + String tradeId = paramMap.get("tradeId"); + + Date currentDate = new Date(); + WxCarCmdLog wxCarCmdLog = new WxCarCmdLog(); + wxCarCmdLog.setVendorType(EnumCarVendor.CAR_ETCP.getCode()); + wxCarCmdLog.setCmdType(EnumCarCmd.CAR_ETCP_CALLBACK_PARK_OUT.getCode()); + wxCarCmdLog.setCmdJson(JSON.toJSONString(paramMap)); + wxCarCmdLog.setCreateDate(currentDate); + wxCarCmdLog.setUpdateDate(currentDate); + try { + wxCarCmdLogService.saveOrUpdate(wxCarCmdLog); + } catch (Exception e) { + logger.error("tjdParkoutCallback: 入库错误" + paramMap.toString()); + map.put("isSuccess", "0"); + map.put("errorMsg", "入库错误" + paramMap.toString()); + return map; + } + + map.put("isSuccess", "0"); + map.put("errorMsg", ""); + return map; + } + + /** + * 退款通知 (仅当接入方作为第一收款方时适用) + * { + * "parkId ": "77a3424e06e64248b4cf9e490c8c682d", + * "parkName ": "测试停车场", + * "carNum": "京A12345", + * "carNumColor": "blue", + * "tradeId": "6d697f7579724345881633a00ed3a671", + * "payAmount": "5.00", + * "payDt": "20180516225701", + * "lon": "74.000272", + * "lat": "159.768703", + * "wLon": "123.523032", + * "wLat": "35.430735" + * } + */ + @RequestMapping(value = "/tjdRefundCallback") + public Map tjdRefundCallback(@RequestBody Map paramMap) { + logger.info("["+getIpAddr()+"tjdRefundCallback: " + paramMap.toString()); + Map map = new HashMap(); + + + String tradeId = paramMap.get("tradeId"); + + Date currentDate = new Date(); + WxCarCmdLog wxCarCmdLog = new WxCarCmdLog(); + wxCarCmdLog.setVendorType(EnumCarVendor.CAR_ETCP.getCode()); + wxCarCmdLog.setCmdType(EnumCarCmd.CAR_ETCP_CALLBACK_PARK_OUT.getCode()); + wxCarCmdLog.setCmdJson(JSON.toJSONString(paramMap)); + wxCarCmdLog.setCreateDate(currentDate); + wxCarCmdLog.setUpdateDate(currentDate); + try { + wxCarCmdLogService.saveOrUpdate(wxCarCmdLog); + } catch (Exception e) { + logger.error("tjdRefundCallback: 入库错误" + paramMap.toString()); + map.put("isSuccess", "0"); + map.put("errorMsg", "入库错误" + paramMap.toString()); + return map; + } + + map.put("isSuccess", "0"); + map.put("errorMsg", ""); + return map; + } + +} diff --git a/mallinkService/src/main/java/com/iformall/utils/ETCPUtil.java b/mallinkService/src/main/java/com/iformall/utils/car/ETCPUtil.java similarity index 99% rename from mallinkService/src/main/java/com/iformall/utils/ETCPUtil.java rename to mallinkService/src/main/java/com/iformall/utils/car/ETCPUtil.java index 7ab87801e..7187204c0 100755 --- a/mallinkService/src/main/java/com/iformall/utils/ETCPUtil.java +++ b/mallinkService/src/main/java/com/iformall/utils/car/ETCPUtil.java @@ -1,4 +1,4 @@ -package com.iformall.utils; +package com.iformall.utils.car; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; diff --git a/mallinkService/src/main/java/com/iformall/utils/TJDCarUtil.java b/mallinkService/src/main/java/com/iformall/utils/car/TJDCarUtil.java similarity index 86% rename from mallinkService/src/main/java/com/iformall/utils/TJDCarUtil.java rename to mallinkService/src/main/java/com/iformall/utils/car/TJDCarUtil.java index 1fdbfe6da..e764872e7 100644 --- a/mallinkService/src/main/java/com/iformall/utils/TJDCarUtil.java +++ b/mallinkService/src/main/java/com/iformall/utils/car/TJDCarUtil.java @@ -1,7 +1,8 @@ -package com.iformall.utils; +package com.iformall.utils.car; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; +import com.iformall.utils.MapUtil; import org.apache.http.Consts; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; @@ -267,6 +268,62 @@ public class TJDCarUtil { return result; } + //// TODO + /** + * deductionNotSettle 停车费批量抵扣接口 + * @param url + * @param partner + * @param key // 密钥 + * @param version + * { + "service": "parkhub.order.deductionForDetail", + "partner": "120a565de377427184de35ca0f320764", + "sign": "3347b109a1e44f3fd5baa78b74a84948", + "signType": "md5", + "charset": "utf-8", + "version": "1.0", + "timestamp": "2016-05-26 11:30:10", + "tradeId": "c39d3aac49d04e12a187681e6189f841", + "accountId": "a9b2963c98344bb292e0fa3f7dd70946", + "prePayType": "3", + "giveFreeTimeOut": "false", + "detailList":"[{ + },{ + },{ + \"outTradeNo\":\"PLDKY01\", \"identityType\":\"01\", \"identityId\":\"17710111111\", \"membershipGrade\":\"LV1\", \"amount\":\"12.50\", \"type\":\"0\", \"channel\":\"5013\", \"memo\":\"批量抵扣-金额-微信\" + \"outTradeNo\":\"PLDKY02\", \"identityType\":\"01\", \"identityId\":\"17710111111\", \"membershipGrade\":\"LV1\", \"couponType\":\"1\", \"minutes\":\"60\", \"type\":\"1\", \"channel\":\"2204\", \"memo\":\"批量抵扣-时长-会员卡券\" + \"outTradeNo\":\"PLDKY03\", \"identityType\":\"01\", \"identityId\":\"17710111111\", \"membershipGrade\":\"LV1\", \"couponType\":\"3\", \"startDt\":\"20180901110000\", \"endDt\":\"20180901170000\", \"integral\":\"500\", + \"type\":\"1\", + \"channel\":\"2205\", \"memo\":\"批量抵扣-区间-积分-会员补贴\" + }]" + } + * @throws Exception + */ + public static String deductionForDetail(String url, String partner, String key, String version, + String tradeId, String outTradeNo, String accountId, String deductionAmount) { + // 为指定订单抵扣停车费,如果此时车辆已经出场,返回isSuccess错误码为3,停简单系统不再接收此笔抵扣信息,对方系统 需要给用户发起退款。 + String service = "parkhub.order.deductionNotSettle"; + Map paramMap = MapUtil.getOrderMap(); + paramMap.put("tradeId", tradeId); + paramMap.put("deductionAmount", deductionAmount); + paramMap.put("outTradeNo", outTradeNo); + paramMap.put("accountId", accountId); + paramMap.put("charset", "utf-8"); + paramMap.put("partner", partner); + paramMap.put("version", version); + + String result = Proc(url, key, service, paramMap); + /* + "{\"timestamp\":\"1528534986636\", + \"returnCode\":\"T\", + \"prePayId\":\"7a1d52aa77ca487db4e61130394285bd\", + \"errorMSG\":\"\", + \"returnMsg\":\"OK\", + \"isSuccess\":\"0\"}[\\r][\\n]" + */ + return result; + } + /** * deductionNotSettle 停车费无结算抵扣 * @param url