Просмотр исходного кода

[停车][修改]:停简单车流回调

release_toaliyun_real
Stormeye Wu 6 лет назад
Родитель
Сommit
5cb7a84531
2 измененных файлов: 157 добавлений и 65 удалений
  1. +148
    -65
      mallinkCallback/src/main/java/com/iformall/controller/callback/WxCarTJDCallBackController.java
  2. +9
    -0
      mallinkService/src/main/java/com/iformall/utils/car/TJDUtil.java

+ 148
- 65
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<String, String> 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<WxCUserCar> 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<String, String> 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<String, String> 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<String, String> 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;
}



+ 9
- 0
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";


Загрузка…
Отмена
Сохранить