From 5cb7a8453163d0fbe4d6de862049b9933f78e55b Mon Sep 17 00:00:00 2001 From: Stormeye Wu Date: Fri, 20 Sep 2019 12:49:33 +0800 Subject: [PATCH] =?UTF-8?q?[=E5=81=9C=E8=BD=A6][=E4=BF=AE=E6=94=B9]:?= =?UTF-8?q?=E5=81=9C=E7=AE=80=E5=8D=95=E8=BD=A6=E6=B5=81=E5=9B=9E=E8=B0=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../callback/WxCarTJDCallBackController.java | 213 ++++++++++++------ .../java/com/iformall/utils/car/TJDUtil.java | 9 + 2 files changed, 157 insertions(+), 65 deletions(-) diff --git a/mallinkCallback/src/main/java/com/iformall/controller/callback/WxCarTJDCallBackController.java b/mallinkCallback/src/main/java/com/iformall/controller/callback/WxCarTJDCallBackController.java index 5d33daa98..331ff3631 100644 --- a/mallinkCallback/src/main/java/com/iformall/controller/callback/WxCarTJDCallBackController.java +++ b/mallinkCallback/src/main/java/com/iformall/controller/callback/WxCarTJDCallBackController.java @@ -5,7 +5,10 @@ import com.iformall.controller.base.BaseController; import com.iformall.domain.po.*; import com.iformall.enums.EnumCarCmd; import com.iformall.enums.EnumCarVendor; +import com.iformall.enums.EnumCouponSendSendType; import com.iformall.service.*; +import com.iformall.utils.car.TJDUtil; +import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -16,6 +19,7 @@ import org.springframework.web.bind.annotation.RestController; import java.text.SimpleDateFormat; import java.util.Date; import java.util.HashMap; +import java.util.List; import java.util.Map; @RestController @@ -79,69 +83,99 @@ public class WxCarTJDCallBackController extends BaseController { /** * 进场通知 * { - * "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" + * wLon=116.310335, + * lon=116.316813, + * outCarId=, + * parkId=7715622dff834b34a44448b801c27607, + * tradeId=e9e0d5db057f412fa323995fc292f6f7, + * carNumColor=blue, + * canFindCar=0, + * miniProgram={ + * "path": "pages/pre_pay/index/main", + * "extraData": { + * "prePayType": "16", + * "channel": "30166", + * "isShowDetail": "true", + * "partnerId": "", + * "orderId": "e9e0d5db057f412fa323995fc292f6f7"} + * }, + * city=北京市, + * parkName=开发停车场25, + * address=财智大厦23楼, + * carNum=京YTJD01, + * wLat=39.93609, + * payUrl=https://prep.tingjiandan.com/tcweixin/letter/prePay/pagePayInPark?prePayType=16&channel=30166&isShowDetail=true&partnerId=&orderId=e9e0d5db057f412fa323995fc292f6f7&returnUrl=, + * district=海淀区, + * lat=39.942078, + * inDt=20190920070500 * } */ @RequestMapping(value = "/tjdParkInCallback") public Map tjdParkInCallback(@RequestBody Map paramMap) { logger.info("["+getIpAddr()+"tjdParkInCallback: " + paramMap.toString()); Map map = new HashMap(); + Date currentDate = new Date(); - String tjdParkId = paramMap.get("parkId"); + String tjdParkId = paramMap.get(TJDUtil.TJD_PARK_ID); + String carNumber = paramMap.get(TJDUtil.TJD_CAR_NUMBER); + WxCarCmdLog wxCarCmdLog = new WxCarCmdLog(); + 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); + + String tenantId = null; 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); + logger.error("tjdParkInCallback: 车场未找到" + tjdParkId); + map.put(TJDUtil.TJD_IS_SUC, TJDUtil.TJD_ERR_1); + map.put(TJDUtil.TJD_ERR_MSG, "车场未找到" + tjdParkId); return map; + } else { + tenantId = park.getTenantId(); + wxCarCmdLog.setTenantId(park.getTenantId()); } - 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()); + map.put(TJDUtil.TJD_IS_SUC, TJDUtil.TJD_ERR_2); + map.put(TJDUtil.TJD_ERR_MSG, "入库错误" + paramMap.toString()); return map; } - map.put("isSuccess", "0"); - map.put("errorMsg", ""); + // 停车发券 + String phoneStrs = ""; + if (StringUtils.isNotBlank(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(); + } + } + } + } + + map.put(TJDUtil.TJD_IS_SUC, TJDUtil.TJD_SUC); return map; } @@ -162,13 +196,15 @@ public class WxCarTJDCallBackController extends BaseController { * "wLat": "35.430735" * } */ - @RequestMapping(value = "/tjdParkoutCallback") + @RequestMapping(value = "/tjdParkOutCallback") public Map tjdParkOutCallback(@RequestBody Map paramMap) { - logger.info("["+getIpAddr()+"tjdParkoutCallback: " + paramMap.toString()); + logger.info("["+getIpAddr()+"tjdParkOutCallback: " + paramMap.toString()); Map map = new HashMap(); + String tjdParkId = paramMap.get(TJDUtil.TJD_PARK_ID); + String carNumber = paramMap.get(TJDUtil.TJD_CAR_NUMBER); - String tradeId = paramMap.get("tradeId"); + String tradeId = paramMap.get(TJDUtil.TJD_TRADE_ID); Date currentDate = new Date(); WxCarCmdLog wxCarCmdLog = new WxCarCmdLog(); @@ -177,17 +213,32 @@ public class WxCarTJDCallBackController extends BaseController { wxCarCmdLog.setCmdJson(JSON.toJSONString(paramMap)); wxCarCmdLog.setCreateDate(currentDate); wxCarCmdLog.setUpdateDate(currentDate); + + String tenantId = null; + WxPark parkQ = new WxPark(); + parkQ.setVendorType(EnumCarVendor.CAR_TJD.getCode()); + parkQ.setParkId(tjdParkId); + WxPark park = wxParkService.getByObj(parkQ); + if (park == null) { + logger.error("tjdParkOutCallback: 车场未找到" + tjdParkId); + map.put(TJDUtil.TJD_IS_SUC, TJDUtil.TJD_ERR_1); + map.put(TJDUtil.TJD_ERR_MSG, "车场未找到" + tjdParkId); + return map; + } 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()); + logger.error("tjdParkOutCallback: 入库错误" + paramMap.toString()); + map.put(TJDUtil.TJD_IS_SUC, TJDUtil.TJD_ERR_2); + map.put(TJDUtil.TJD_ERR_MSG, "入库错误" + paramMap.toString()); return map; } - map.put("isSuccess", "0"); - map.put("errorMsg", ""); + map.put(TJDUtil.TJD_IS_SUC, TJDUtil.TJD_SUC); return map; } @@ -210,29 +261,45 @@ public class WxCarTJDCallBackController extends BaseController { @RequestMapping(value = "/tjdPaidCallback") public Map tjdPaidCallback(@RequestBody Map paramMap) { logger.info("["+getIpAddr()+"tjdPaidCallback: " + paramMap.toString()); + Date currentDate = new Date(); Map map = new HashMap(); + String tjdParkId = paramMap.get(TJDUtil.TJD_PARK_ID); + String carNumber = paramMap.get(TJDUtil.TJD_CAR_NUMBER); + String tradeId = paramMap.get(TJDUtil.TJD_TRADE_ID); - 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.setCmdType(EnumCarCmd.CAR_TJD_CALLBACK_PAID.getCode()); wxCarCmdLog.setCmdJson(JSON.toJSONString(paramMap)); wxCarCmdLog.setCreateDate(currentDate); wxCarCmdLog.setUpdateDate(currentDate); + + String tenantId = null; + WxPark parkQ = new WxPark(); + parkQ.setVendorType(EnumCarVendor.CAR_TJD.getCode()); + parkQ.setParkId(tjdParkId); + WxPark park = wxParkService.getByObj(parkQ); + if (park == null) { + logger.error("tjdPaidCallback: 车场未找到" + tjdParkId); + map.put(TJDUtil.TJD_IS_SUC, TJDUtil.TJD_ERR_1); + map.put(TJDUtil.TJD_ERR_MSG, "车场未找到" + tjdParkId); + return map; + } 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()); + logger.error("tjdPaidCallback: 入库错误" + paramMap.toString()); + map.put(TJDUtil.TJD_IS_SUC, TJDUtil.TJD_ERR_2); + map.put(TJDUtil.TJD_ERR_MSG, "入库错误" + paramMap.toString()); return map; } - map.put("isSuccess", "0"); - map.put("errorMsg", ""); + map.put(TJDUtil.TJD_IS_SUC, TJDUtil.TJD_SUC); return map; } @@ -255,29 +322,45 @@ public class WxCarTJDCallBackController extends BaseController { @RequestMapping(value = "/tjdRefundCallback") public Map tjdRefundCallback(@RequestBody Map paramMap) { logger.info("["+getIpAddr()+"tjdRefundCallback: " + paramMap.toString()); + Date currentDate = new Date(); Map map = new HashMap(); + String tjdParkId = paramMap.get(TJDUtil.TJD_PARK_ID); + String carNumber = paramMap.get(TJDUtil.TJD_CAR_NUMBER); + String tradeId = paramMap.get(TJDUtil.TJD_TRADE_ID); - 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.setCmdType(EnumCarCmd.CAR_TJD_CALLBACK_REFUND.getCode()); wxCarCmdLog.setCmdJson(JSON.toJSONString(paramMap)); wxCarCmdLog.setCreateDate(currentDate); wxCarCmdLog.setUpdateDate(currentDate); + + String tenantId = null; + WxPark parkQ = new WxPark(); + parkQ.setVendorType(EnumCarVendor.CAR_TJD.getCode()); + parkQ.setParkId(tjdParkId); + WxPark park = wxParkService.getByObj(parkQ); + if (park == null) { + logger.error("tjdRefundCallback: 停简单车场未找到" + tjdParkId); + map.put(TJDUtil.TJD_IS_SUC, TJDUtil.TJD_ERR_1); + map.put(TJDUtil.TJD_ERR_MSG, "车场未找到" + tjdParkId); + return map; + } else { + tenantId = park.getTenantId(); + wxCarCmdLog.setTenantId(tenantId); + } + try { wxCarCmdLogService.saveOrUpdate(wxCarCmdLog); } catch (Exception e) { logger.error("tjdRefundCallback: 入库错误" + paramMap.toString()); - map.put("isSuccess", "0"); - map.put("errorMsg", "入库错误" + paramMap.toString()); + map.put(TJDUtil.TJD_IS_SUC, TJDUtil.TJD_ERR_2); + map.put(TJDUtil.TJD_ERR_MSG, "入库错误" + paramMap.toString()); return map; } - map.put("isSuccess", "0"); - map.put("errorMsg", ""); + map.put(TJDUtil.TJD_IS_SUC, TJDUtil.TJD_SUC); return map; } diff --git a/mallinkService/src/main/java/com/iformall/utils/car/TJDUtil.java b/mallinkService/src/main/java/com/iformall/utils/car/TJDUtil.java index 81f6e44fe..3f1c57cda 100644 --- a/mallinkService/src/main/java/com/iformall/utils/car/TJDUtil.java +++ b/mallinkService/src/main/java/com/iformall/utils/car/TJDUtil.java @@ -30,6 +30,15 @@ import java.util.Map; @Component public class TJDUtil { + public static final String TJD_IS_SUC = "isSuccess"; + public static final String TJD_ERR_MSG = "errorMSG"; + public static final String TJD_SUC = "0"; + public static final String TJD_ERR_1 = "1"; // 业务级失败(不进行重发) + public static final String TJD_ERR_2 = "2"; // 系统级失败(有重发机制) + public static final String TJD_PARK_ID = "parkId"; + public static final String TJD_CAR_NUMBER = "carNum"; + public static final String TJD_TRADE_ID = "tradeId"; + private final static Logger logger = LoggerFactory.getLogger(TJDUtil.class); private static String baseurl = "http://prep.tingjiandan.com/openapi/gateway";