xiaohanzi 5 лет назад
Родитель
Сommit
1a0e91ba99
7 измененных файлов: 172 добавлений и 27 удалений
  1. +68
    -6
      mallinkCallback/src/main/java/com/iformall/controller/callback/car/WxParkCallBackBaseController.java
  2. +20
    -3
      mallinkCallback/src/main/java/com/iformall/controller/callback/car/jieshun/WxCarJieShunCallBackController.java
  3. +16
    -9
      mallinkService/src/main/java/com/iformall/enums/EnumCarVendor.java
  4. +38
    -0
      mallinkService/src/main/java/com/iformall/service/park/ParkBatchCallBackAdapterService.java
  5. +21
    -4
      mallinkService/src/main/java/com/iformall/service/park/ParkFactory.java
  6. +2
    -0
      mallinkService/src/main/java/com/iformall/service/park/entity/ParkNotifyParam.java
  7. +7
    -5
      mallinkService/src/main/java/com/iformall/service/park/impl/jieshun/JieShunParkCallbackService.java

+ 68
- 6
mallinkCallback/src/main/java/com/iformall/controller/callback/car/WxParkCallBackBaseController.java Просмотреть файл

@@ -163,9 +163,24 @@ public class WxParkCallBackBaseController extends BaseController {
}
}
protected Result parkInCallBack(EnumCarVendor vendor,EnumCarCmd cmdType,Object sourceParam) {
ParkNotifyParam param = parkFactory.getParkCallbackService(vendor.getCode()).parseInNoticyParam(sourceParam);
if (vendor.isNotifyBatch()) {
List<ParkNotifyParam> params = parkFactory.getParkBatchCallbackService(vendor.getCode()).parseInNoticyParam(sourceParam);
if (null != params && params.size() > 0 ) {
for (ParkNotifyParam param : params) {
handleSingleParkInCallBack(vendor, cmdType, param, param.getSourceParam());
}
return new Result();
}
return new Result();
}else {
ParkNotifyParam param = parkFactory.getParkCallbackService(vendor.getCode()).parseInNoticyParam(sourceParam);
return handleSingleParkInCallBack(vendor, cmdType, param, sourceParam);
}
}
private Result handleSingleParkInCallBack(EnumCarVendor vendor,EnumCarCmd cmdType,ParkNotifyParam param ,Object sourceParam) {
String carNumber = param.getCarNumber();
ParkCacheUtils.removeCache(redisTemplate, vendor.getMessage(), carNumber);
@@ -210,14 +225,30 @@ public class WxParkCallBackBaseController extends BaseController {
try {
saveWxCarPayRecord(sourceParam, param, wxCarCmdLog, phoneStrs);
}catch(MallinkException e) {
logger.error("save carpayrecord error.",e);
return new Result(Result.ERROR,e.getMessage());
}
return new Result();
}

protected Result parkOutCallBack(EnumCarVendor vendor,EnumCarCmd cmdType,Object sourceParam) {
ParkNotifyParam param = parkFactory.getParkCallbackService(vendor.getCode()).parseOutNoticyParam(sourceParam);
if (vendor.isNotifyBatch()) {
List<ParkNotifyParam> params = parkFactory.getParkBatchCallbackService(vendor.getCode()).parseOutNoticyParam(sourceParam);
if (null != params && params.size() > 0 ) {
for (ParkNotifyParam param : params) {
handleParkOutCallBackSingle(vendor, cmdType, param, param.getSourceParam());
}
}
return new Result();
}else {
ParkNotifyParam param = parkFactory.getParkCallbackService(vendor.getCode()).parseOutNoticyParam(sourceParam);
return handleParkOutCallBackSingle(vendor, cmdType, param, sourceParam);
}
}
private Result handleParkOutCallBackSingle(EnumCarVendor vendor,EnumCarCmd cmdType,ParkNotifyParam param,Object sourceParam) {
ParkCacheUtils.removeCache(redisTemplate, vendor.getMessage(), param.getCarNumber());
WxCarCmdLog wxCarCmdLog = null;
@@ -236,7 +267,24 @@ public class WxParkCallBackBaseController extends BaseController {
}
protected Result unbindCarCallBack(EnumCarVendor vendor,EnumCarCmd cmdType,Object sourceParam) {
ParkNotifyParam param = parkFactory.getParkCallbackService(vendor.getCode()).parseUnbindNoticyParam(sourceParam);
if (vendor.isNotifyBatch()) {
List<ParkNotifyParam> params = parkFactory.getParkBatchCallbackService(vendor.getCode()).parseUnbindNoticyParam(sourceParam);
if (null != params && params.size() > 0 ) {
for (ParkNotifyParam param : params) {
handleUnbindCarCallBackSingle(vendor, cmdType, param, param.getSourceParam());
}
}
return new Result();
}else {
ParkNotifyParam param = parkFactory.getParkCallbackService(vendor.getCode()).parseUnbindNoticyParam(sourceParam);
return handleUnbindCarCallBackSingle(vendor, cmdType, param, sourceParam);
}
}
private Result handleUnbindCarCallBackSingle(EnumCarVendor vendor,EnumCarCmd cmdType,ParkNotifyParam param,Object sourceParam) {
WxCarCmdLog wxCarCmdLog = null;
try {
wxCarCmdLog = saveWxCarCmdLog(vendor, cmdType, sourceParam, param);
@@ -260,8 +308,22 @@ public class WxParkCallBackBaseController extends BaseController {
}

protected Result paidCallback(EnumCarVendor vendor,EnumCarCmd cmdType,Object sourceParam) {
ParkNotifyParam param = parkFactory.getParkCallbackService(vendor.getCode()).parsePaidNoticyParam(sourceParam);
if (vendor.isNotifyBatch()) {
List<ParkNotifyParam> params = parkFactory.getParkBatchCallbackService(vendor.getCode()).parsePaidNoticyParam(sourceParam);
if (null != params && params.size() > 0 ) {
for (ParkNotifyParam param : params) {
handlePaidCallbackSingle(vendor, cmdType, param, param.getSourceParam());
}
}
return new Result();
}else {
ParkNotifyParam param = parkFactory.getParkCallbackService(vendor.getCode()).parsePaidNoticyParam(sourceParam);
return handlePaidCallbackSingle(vendor, cmdType, param, sourceParam);
}
}
private Result handlePaidCallbackSingle(EnumCarVendor vendor,EnumCarCmd cmdType,ParkNotifyParam param,Object sourceParam) {
WxCarCmdLog carCmdLogQ = new WxCarCmdLog();
String parkId = param.getParkId();
WxPark parkQ = new WxPark();


+ 20
- 3
mallinkCallback/src/main/java/com/iformall/controller/callback/car/jieshun/WxCarJieShunCallBackController.java Просмотреть файл

@@ -63,7 +63,24 @@ public class WxCarJieShunCallBackController extends WxParkCallBackBaseController
WxCUserBasicInfoService wxCUserBasicInfoService;

/**
* @description 车易付 车辆入场通知
* @description 捷顺 车辆入场通知
* “dataItems”: “[{
\ “itemId\”: \”435FA12F3C4747B0BA48E945868FC420\”,
\ “parkName” : \”测试\”,
\ “parkCode\” : \” test\”,
\ “inTime\” : \”2017-08-28 15:40:41\”,
\ “inOperator\”: \”张山\”
\ “carNumber” : \”粤-A12345\”,
\ “idno” : \”1234455\”,
\ “equipCode\”: \”2312313\”,
\ “equipName” : \”入口\”,
},
……
]
*
*
*
* @Params [paramMap]
* @return com.iformall.common.Result
* @Author furunxin
@@ -96,13 +113,13 @@ public class WxCarJieShunCallBackController extends WxParkCallBackBaseController
public Result cyfUnbindCallback(@RequestBody Map<String, Object> paramMap) {
log.info("["+getIpAddr()+"] cyfParkInCallback: " + paramMap.toString());
//解析车易付参数
return super.unbindCarCallBack(EnumCarVendor.CAE_CYF, EnumCarCmd.CAR_CYF_CALLBACK_UNBIND, paramMap);
return super.unbindCarCallBack(EnumCarVendor.CAR_JIESHUN, EnumCarCmd.CAR_JIESHUN_CALLBACK_UNBIND, paramMap);
}
@PostMapping(value = "/cyfPaidCallback")
public Result cyfPaidCallback(@RequestBody Map<String, Object> paramMap) {
log.info("["+getIpAddr()+"] cyfParkInCallback: " + paramMap.toString());
//解析车易付参数
return super.paidCallback(EnumCarVendor.CAE_CYF, EnumCarCmd.CAR_CYF_CALLBACK_PAID, paramMap);
return super.paidCallback(EnumCarVendor.CAR_JIESHUN, EnumCarCmd.CAR_JIESHUN_CALLBACK_PAID, paramMap);
}
}

+ 16
- 9
mallinkService/src/main/java/com/iformall/enums/EnumCarVendor.java Просмотреть файл

@@ -6,14 +6,14 @@ package com.iformall.enums;
public enum EnumCarVendor {

// 1-ETCP, 2-TJD停简单 3-Dahua大华, 4-ShangAn尚安, 5-BoLink泊链,6-车易付
CAR_NOTFOUND(0, "无"),
CAR_ETCP(1, "ETCP"),
CAR_TJD(2, "TJD"),
CAR_DAHUA(3, "DAHUA"),
CAR_SHANGAN(4, "ShangAn"),
CAR_BOLINK(5, "BoLink"),
CAE_CYF(6,"CYF"),
CAR_JIESHUN(7,"JIESHUN")
CAR_NOTFOUND(0, "无",false),
CAR_ETCP(1, "ETCP",false),
CAR_TJD(2, "TJD",false),
CAR_DAHUA(3, "DAHUA",false),
CAR_SHANGAN(4, "ShangAn",false),
CAR_BOLINK(5, "BoLink",false),
CAE_CYF(6,"CYF",false),
CAR_JIESHUN(7,"JIESHUN",true)
;

public static EnumCarVendor getEnum(Integer code) {
@@ -27,10 +27,12 @@ public enum EnumCarVendor {

private Integer code;
private String message;
private boolean notifyBatch;//通知是否是批量模式

EnumCarVendor(Integer code, String message) {
EnumCarVendor(Integer code, String message,boolean notifyBatch) {
this.code = code;
this.message = message;
this.notifyBatch = notifyBatch;
}

public Integer getCode() {
@@ -40,4 +42,9 @@ public enum EnumCarVendor {
public String getMessage() {
return message;
}

public boolean isNotifyBatch() {
return notifyBatch;
}
}

+ 38
- 0
mallinkService/src/main/java/com/iformall/service/park/ParkBatchCallBackAdapterService.java Просмотреть файл

@@ -0,0 +1,38 @@
package com.iformall.service.park;

import java.util.List;
import java.util.Map;

import com.iformall.service.park.entity.ParkNotifyParam;

/**
* 停车场回调 -- 批量传回
* @author alascor
*
*/
public interface ParkBatchCallBackAdapterService {

/**
* 解析车辆入场通知参数
* @param param
*/
List<ParkNotifyParam> parseInNoticyParam(Object param);
/**
* 解析车辆出场通知参数
* @param param
*/
List<ParkNotifyParam> parseOutNoticyParam(Object param);
/**
* 解析车辆解绑通知参数
* @param param
*/
List<ParkNotifyParam> parseUnbindNoticyParam(Object param);
/**
* 解析支付结果通知参数
* @param param
*/
List<ParkNotifyParam> parsePaidNoticyParam(Object param);
}

+ 21
- 4
mallinkService/src/main/java/com/iformall/service/park/ParkFactory.java Просмотреть файл

@@ -41,7 +41,8 @@ public class ParkFactory {
private Map<Integer,ParkAdapterService> parkServiceMap ;
private Map<Integer,EnumCarVendor> enumMap ;
private Map<Integer,ParkCallBackAdapterService> callBackServiceMap;
private Map<Integer,ParkCallBackAdapterService> callBackServiceMap;//推送单条
private Map<Integer,ParkBatchCallBackAdapterService> batchCallBackServiceMap;//推送多条
private Map<Integer,ParkAdapterService> getServiceMap() {
if (null != parkServiceMap ) {
@@ -76,12 +77,19 @@ public class ParkFactory {
}
callBackServiceMap = new ConcurrentHashMap<Integer, ParkCallBackAdapterService>();
callBackServiceMap.put(EnumCarVendor.CAE_CYF.getCode(), cyfCallbackService);
callBackServiceMap.put(EnumCarVendor.CAR_JIESHUN.getCode(), jieshunCallBackService);
return callBackServiceMap;
}
private Map<Integer,ParkBatchCallBackAdapterService> getBatchCallBackServiceMap() {
if (null != batchCallBackServiceMap) {
return batchCallBackServiceMap;
}
batchCallBackServiceMap = new ConcurrentHashMap<Integer, ParkBatchCallBackAdapterService>();
batchCallBackServiceMap.put(EnumCarVendor.CAR_JIESHUN.getCode(), jieshunCallBackService);
return batchCallBackServiceMap;
}
public ParkAdapterService getParkService(Integer code) {
EnumCarVendor vendor = getEnumMap().get(code);
if (null == vendor) {
@@ -97,5 +105,14 @@ public class ParkFactory {
}
return getCallBackServiceMap().get(vendor.getCode());
}
public ParkBatchCallBackAdapterService getParkBatchCallbackService(Integer code) {
EnumCarVendor vendor = getEnumMap().get(code);
if (null == vendor) {
throw new MallinkException(ErrorCode.SYS_PARAMETER_ERROR.getCode(), "车厂["+code+"]不支持.");
}
return getBatchCallBackServiceMap().get(vendor.getCode());
}

}

+ 2
- 0
mallinkService/src/main/java/com/iformall/service/park/entity/ParkNotifyParam.java Просмотреть файл

@@ -30,4 +30,6 @@ public class ParkNotifyParam implements Serializable{
String paidServiceFee;//支付服务费
Object sourceParam;
}

+ 7
- 5
mallinkService/src/main/java/com/iformall/service/park/impl/jieshun/JieShunParkCallbackService.java Просмотреть файл

@@ -2,6 +2,7 @@ package com.iformall.service.park.impl.jieshun;

import java.text.ParseException;
import java.util.Date;
import java.util.List;
import java.util.Map;

import org.apache.commons.lang3.StringUtils;
@@ -19,6 +20,7 @@ import com.iformall.enums.EnumCarVendor;
import com.iformall.exception.MallinkException;
import com.iformall.mapper.WxCarJSOrderMapper;
import com.iformall.service.WxParkService;
import com.iformall.service.park.ParkBatchCallBackAdapterService;
import com.iformall.service.park.ParkCallBackAdapterService;
import com.iformall.service.park.entity.ParkNotifyParam;
import com.iformall.service.park.impl.BaseParkService;
@@ -27,7 +29,7 @@ import lombok.extern.slf4j.Slf4j;

@Slf4j
@Service
public class JieShunParkCallbackService extends BaseParkService implements ParkCallBackAdapterService {
public class JieShunParkCallbackService extends BaseParkService implements ParkBatchCallBackAdapterService {
@Autowired
@@ -70,7 +72,7 @@ public class JieShunParkCallbackService extends BaseParkService implements ParkC
}
*/
@Override
public ParkNotifyParam parseInNoticyParam(Object param) {
public List<ParkNotifyParam> parseInNoticyParam(Object param) {
Map<String, Object> paramMap = (Map<String, Object>) param;
String carNumber = paramMap.get("carNumber").toString();
String parkCode = paramMap.get("parkCode").toString();
@@ -120,7 +122,7 @@ public class JieShunParkCallbackService extends BaseParkService implements ParkC
}

@Override
public ParkNotifyParam parseOutNoticyParam(Object param) {
public List<ParkNotifyParam> parseOutNoticyParam(Object param) {
Map<String, Object> paramMap = (Map<String, Object>) param;
String carNumber = paramMap.get("carNumber").toString();
String parkCode = paramMap.get("parkCode").toString();
@@ -155,12 +157,12 @@ public class JieShunParkCallbackService extends BaseParkService implements ParkC
}

@Override
public ParkNotifyParam parseUnbindNoticyParam(Object param) {
public List<ParkNotifyParam> parseUnbindNoticyParam(Object param) {
return null;
}

@Override
public ParkNotifyParam parsePaidNoticyParam(Object param) {
public List<ParkNotifyParam> parsePaidNoticyParam(Object param) {
Map vo = (Map) param;
ParkNotifyParam p = new ParkNotifyParam();
p.setCarNumber((String) vo.get("carNumber"));


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