Sfoglia il codice sorgente

[停车][修改][大华接口对接]

release_toaliyun_real
gongbiao 6 anni fa
parent
commit
d7f6347d82
4 ha cambiato i file con 119 aggiunte e 38 eliminazioni
  1. +61
    -37
      mallinkCApi/src/main/java/com/iformall/controller/WxCarController.java
  2. +1
    -0
      mallinkService/src/main/java/com/iformall/common/ErrorCode.java
  3. +2
    -1
      mallinkService/src/main/java/com/iformall/enums/EnumCarVendor.java
  4. +55
    -0
      mallinkService/src/main/java/com/iformall/utils/car/DaHuaUtil.java

+ 61
- 37
mallinkCApi/src/main/java/com/iformall/controller/WxCarController.java Vedi File

@@ -13,6 +13,7 @@ import com.iformall.domain.vo.WxMerchantVo;
import com.iformall.enums.*; import com.iformall.enums.*;
import com.iformall.exception.MallinkException; import com.iformall.exception.MallinkException;
import com.iformall.service.*; import com.iformall.service.*;
import com.iformall.utils.car.DaHuaUtil;
import com.iformall.utils.car.ETCPUtil; import com.iformall.utils.car.ETCPUtil;
import com.iformall.utils.car.TJDUtil; import com.iformall.utils.car.TJDUtil;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
@@ -36,7 +37,7 @@ import java.util.Map;
public class WxCarController extends BaseController { public class WxCarController extends BaseController {
private final Logger logger = LoggerFactory.getLogger(this.getClass()); private final Logger logger = LoggerFactory.getLogger(this.getClass());


ETCPUtil etcp = new ETCPUtil();
ETCPUtil etcp = new ETCPUtil();


TJDUtil tjd = new TJDUtil(); TJDUtil tjd = new TJDUtil();


@@ -61,10 +62,10 @@ public class WxCarController extends BaseController {
@Autowired @Autowired
WxCUserTagsService wxCUserTagsService; WxCUserTagsService wxCUserTagsService;


@Autowired
@Autowired
WxCarCmdLogService wxCarCmdLogService; WxCarCmdLogService wxCarCmdLogService;


@Autowired
@Autowired
WxCreditHistoryService wxCreditHistoryService; WxCreditHistoryService wxCreditHistoryService;


private WxPark getCurrentPark(String tenantId) { private WxPark getCurrentPark(String tenantId) {
@@ -76,7 +77,7 @@ public class WxCarController extends BaseController {
return wxPark; return wxPark;
} }


@ApiOperation(value = "获取车场支持的厂家",notes="返回\n{\"vendor\":integer}")
@ApiOperation(value = "获取车场支持的厂家", notes = "返回\n{\"vendor\":integer}")
@GetMapping("/getVendor") @GetMapping("/getVendor")
public ResultData getVendor() { public ResultData getVendor() {
// 1, get mall's park // 1, get mall's park
@@ -88,23 +89,28 @@ public class WxCarController extends BaseController {


/** /**
* 初始化/etcp共同登录 * 初始化/etcp共同登录
*
* @param paramMap * @param paramMap
* @return * @return
*/ */
@ApiOperation(value = "初始化/etcp共同登录",notes="{\"phone\":\"string\"}")
@ApiOperation(value = "初始化/etcp共同登录", notes = "{\"phone\":\"string\"}")
@PostMapping("/init") @PostMapping("/init")
public ResultData init(@RequestBody Map<String, String > paramMap) {
WxCUser user = getUser();
public ResultData init(@RequestBody Map<String, String> paramMap) {
WxCUser user = getUser();
// 1, get mall's park // 1, get mall's park
WxPark park = getCurrentPark(getTenantId()); WxPark park = getCurrentPark(getTenantId());
// 2. get vendor params // 2. get vendor params
if (park.getVendorType() == EnumCarVendor.CAR_ETCP.getCode()) {
if (park.getVendorType().equals(EnumCarVendor.CAR_ETCP.getCode())) {
return initForEtcp(paramMap, user, park); return initForEtcp(paramMap, user, park);
} else if (park.getVendorType() == EnumCarVendor.CAR_TJD.getCode()){
} else if (park.getVendorType().equals(EnumCarVendor.CAR_TJD.getCode())) {
// TJD不需要共同登录 // TJD不需要共同登录
Map resultMap = new HashMap(); Map resultMap = new HashMap();
resultMap.put("vendor", EnumCarVendor.CAR_TJD.getCode()); resultMap.put("vendor", EnumCarVendor.CAR_TJD.getCode());
return new ResultData(resultMap); return new ResultData(resultMap);
} else if (park.getVendorType().equals(EnumCarVendor.CAR_DAHUA.getCode())) {
Map resultMap = new HashMap();
resultMap.put("vendor", EnumCarVendor.CAR_DAHUA.getCode());
return new ResultData(resultMap);
} }


return new ResultData(ErrorCode.CAR_VENDOR_NOT_SUPPORT.getCode(), "登录失败"); return new ResultData(ErrorCode.CAR_VENDOR_NOT_SUPPORT.getCode(), "登录失败");
@@ -152,13 +158,14 @@ public class WxCarController extends BaseController {
// c端必须保存此token // c端必须保存此token
return new ResultData(dataObj); return new ResultData(dataObj);
} else { } else {
logger.error("共同登录失败: "+phone);
logger.error("共同登录失败: " + phone);
return new ResultData(ErrorCode.ETCP_LOGIN_FAIL.getCode(), "共同登录失败"); return new ResultData(ErrorCode.ETCP_LOGIN_FAIL.getCode(), "共同登录失败");
} }
} }


/** /**
* ETCP同步 * ETCP同步
*
* @param cUserId * @param cUserId
* @param tenantId * @param tenantId
* @param iVendorType * @param iVendorType
@@ -189,7 +196,7 @@ public class WxCarController extends BaseController {
queryUserCar.setCUserId(cUserId); queryUserCar.setCUserId(cUserId);
List<WxCUserCar> uclist = wxCUserCarService.getList(queryUserCar); List<WxCUserCar> uclist = wxCUserCarService.getList(queryUserCar);
// 删除ETCP不存在 // 删除ETCP不存在
for(WxCUserCar userCar: uclist) {
for (WxCUserCar userCar : uclist) {
boolean bExist = isExistInArray(arr, userCar.getCarNumber()); boolean bExist = isExistInArray(arr, userCar.getCarNumber());
if (!bExist) { if (!bExist) {
wxCUserCarService.deleteById(userCar.getId()); wxCUserCarService.deleteById(userCar.getId());
@@ -197,10 +204,10 @@ public class WxCarController extends BaseController {
} }
} }
// 添加ETCP的 // 添加ETCP的
for(int i=0;i<arr.size();i++) {
for (int i = 0; i < arr.size(); i++) {
String _carNum = arr.getString(i); String _carNum = arr.getString(i);
boolean bExist = isExistInList(uclist, _carNum); boolean bExist = isExistInList(uclist, _carNum);
if(!bExist) {
if (!bExist) {
Date curr = new Date(); Date curr = new Date();
WxCUserCar userCar = new WxCUserCar(); WxCUserCar userCar = new WxCUserCar();
userCar.setCUserId(cUserId); userCar.setCUserId(cUserId);
@@ -217,7 +224,7 @@ public class WxCarController extends BaseController {


private boolean isExistInArray(JSONArray arr, String carNumber) { private boolean isExistInArray(JSONArray arr, String carNumber) {
boolean bExist = false; boolean bExist = false;
for(int i=0;i<arr.size();i++) {
for (int i = 0; i < arr.size(); i++) {
// check carNum+cUserId是否存在, 不存在新建 // check carNum+cUserId是否存在, 不存在新建
String _carNum = arr.getString(i); String _carNum = arr.getString(i);


@@ -231,8 +238,8 @@ public class WxCarController extends BaseController {


private boolean isExistInList(List<WxCUserCar> list, String carNumber) { private boolean isExistInList(List<WxCUserCar> list, String carNumber) {
boolean bExist = false; boolean bExist = false;
for(WxCUserCar userCar: list) {
if(carNumber.equals(userCar.getCarNumber())) {
for (WxCUserCar userCar : list) {
if (carNumber.equals(userCar.getCarNumber())) {
bExist = true; bExist = true;
break; break;
} }
@@ -242,18 +249,19 @@ public class WxCarController extends BaseController {


/** /**
* 绑车牌 * 绑车牌
*
* @param paramMap * @param paramMap
* @return * @return
*/ */
@ApiOperation(value = "绑车牌", notes = "ETCP:={\"etcpToken\":\"string\",\"carNumber\":\"string\"}, TJD:={\"carNumber\":\"string\"}") @ApiOperation(value = "绑车牌", notes = "ETCP:={\"etcpToken\":\"string\",\"carNumber\":\"string\"}, TJD:={\"carNumber\":\"string\"}")
@PostMapping("/bindCar") @PostMapping("/bindCar")
public ResultData bindCar(@RequestBody Map<String, String > paramMap) {
public ResultData bindCar(@RequestBody Map<String, String> paramMap) {
// 1, get mall's park // 1, get mall's park
WxPark park = getCurrentPark(getTenantId()); WxPark park = getCurrentPark(getTenantId());
// 2. get vendor params // 2. get vendor params
if (park.getVendorType() == EnumCarVendor.CAR_ETCP.getCode()) { if (park.getVendorType() == EnumCarVendor.CAR_ETCP.getCode()) {
return etcpBindCar(paramMap, park); return etcpBindCar(paramMap, park);
} else {
} else {
// 内部操作 // 内部操作
return bindCar(paramMap, park); return bindCar(paramMap, park);
} }
@@ -325,10 +333,10 @@ public class WxCarController extends BaseController {
wxCUserCarService.saveOrUpdate(userCar); wxCUserCarService.saveOrUpdate(userCar);


// 成长值 // 成长值
wxScoreRulesService.addScore(EnumScoreType.BIND_CAR,userCar);
wxScoreRulesService.addScore(EnumScoreType.BIND_CAR, userCar);
//增加积分 //增加积分
addCredit(); addCredit();
wxCUserTagsService.triggerAssignTags(EnumAssignTagsTrigger.ASSIGN_TAGS_TRIGGER_CAR,getUserId());
wxCUserTagsService.triggerAssignTags(EnumAssignTagsTrigger.ASSIGN_TAGS_TRIGGER_CAR, getUserId());
} }


private ResultData tjdBindCar(@RequestBody Map<String, String> paramMap, WxPark park) { private ResultData tjdBindCar(@RequestBody Map<String, String> paramMap, WxPark park) {
@@ -385,7 +393,7 @@ public class WxCarController extends BaseController {
userCar.setUpdateDate(curr); userCar.setUpdateDate(curr);
try { try {
wxCUserCarService.save(userCar); wxCUserCarService.save(userCar);
wxScoreRulesService.addScore(EnumScoreType.BIND_CAR,userCar);
wxScoreRulesService.addScore(EnumScoreType.BIND_CAR, userCar);
//增加积分 //增加积分
addCredit(); addCredit();
} catch (Exception e) { } catch (Exception e) {
@@ -393,12 +401,12 @@ public class WxCarController extends BaseController {
return new ResultData(ErrorCode.DB_FAIL.getCode(), "TJD保存车牌失败, e:" + e.getMessage()); return new ResultData(ErrorCode.DB_FAIL.getCode(), "TJD保存车牌失败, e:" + e.getMessage());
} }


wxCUserTagsService.triggerAssignTags(EnumAssignTagsTrigger.ASSIGN_TAGS_TRIGGER_CAR,getUserId());
wxCUserTagsService.triggerAssignTags(EnumAssignTagsTrigger.ASSIGN_TAGS_TRIGGER_CAR, getUserId());
return null; return null;
} }


//-----增加积分start----- //-----增加积分start-----
private void addCredit(){
private void addCredit() {
WxCreditHistory wxCreditHistory = new WxCreditHistory(); WxCreditHistory wxCreditHistory = new WxCreditHistory();
wxCreditHistory.setCUserId(getUserId()); wxCreditHistory.setCUserId(getUserId());
wxCreditHistory.setTenantId(getTenantId()); wxCreditHistory.setTenantId(getTenantId());
@@ -411,9 +419,10 @@ public class WxCarController extends BaseController {


/** /**
* 解绑车牌 * 解绑车牌
*
* @param paramMap * @param paramMap
* @return * @return
*/
*/
@ApiOperation(value = "解绑车牌", notes = "ETCP:={\"etcpToken\":\"string\",\"carNumber\":\"string\"}\n返回:\n" + @ApiOperation(value = "解绑车牌", notes = "ETCP:={\"etcpToken\":\"string\",\"carNumber\":\"string\"}\n返回:\n" +
"{\n" + "{\n" +
" \"code\": 0,\n" + " \"code\": 0,\n" +
@@ -421,7 +430,7 @@ public class WxCarController extends BaseController {
"}" + "}" +
"TJD:={\"carNumber\":\"string\"}") "TJD:={\"carNumber\":\"string\"}")
@PostMapping("/unbindCar") @PostMapping("/unbindCar")
public ResultData unbindCar(@RequestBody Map<String, String > paramMap) {
public ResultData unbindCar(@RequestBody Map<String, String> paramMap) {
// 1, get mall's park // 1, get mall's park
WxPark park = getCurrentPark(getTenantId()); WxPark park = getCurrentPark(getTenantId());
if (park.getVendorType().equals(EnumCarVendor.CAR_ETCP.getCode())) { if (park.getVendorType().equals(EnumCarVendor.CAR_ETCP.getCode())) {
@@ -511,7 +520,7 @@ public class WxCarController extends BaseController {
if (userCar != null) { if (userCar != null) {
String params = userCar.getVendorParams(); String params = userCar.getVendorParams();
JSONObject objParams = JSON.parseObject(params); JSONObject objParams = JSON.parseObject(params);
String carId = objParams.getString("carId");
String carId = objParams.getString("carId");


params = park.getVendorParams(); params = park.getVendorParams();
String url = objParams.getString("url"); String url = objParams.getString("url");
@@ -538,6 +547,7 @@ public class WxCarController extends BaseController {


/** /**
* 停车费 * 停车费
*
* @param paramMap * @param paramMap
* @return * @return
*/ */
@@ -577,18 +587,32 @@ public class WxCarController extends BaseController {
" \"pmParkId\": \"d49aeaedcf144f1faf569846d6b16670\"\n" + " \"pmParkId\": \"d49aeaedcf144f1faf569846d6b16670\"\n" +
" }") " }")
@PostMapping("/getCarStopFee") @PostMapping("/getCarStopFee")
public ResultData getCarStopFee(@RequestBody Map<String, String > paramMap) {
public ResultData getCarStopFee(@RequestBody Map<String, String> paramMap) {
// 1, get mall's park // 1, get mall's park
WxPark park = getCurrentPark(getTenantId()); WxPark park = getCurrentPark(getTenantId());
if (park.getVendorType() == EnumCarVendor.CAR_ETCP.getCode()) {
if (park.getVendorType().equals(EnumCarVendor.CAR_ETCP.getCode())) {
return etcpCarStopFee(paramMap, park); return etcpCarStopFee(paramMap, park);
}
else if (park.getVendorType() == EnumCarVendor.CAR_TJD.getCode()) {
} else if (park.getVendorType().equals(EnumCarVendor.CAR_TJD.getCode())) {
return tjdCarStopFee(paramMap, park); return tjdCarStopFee(paramMap, park);
} else if (park.getVendorType().equals(EnumCarVendor.CAR_DAHUA.getCode())) {
return dahuaCarStopFee(paramMap, park);
} }
return new ResultData(ErrorCode.CAR_VENDOR_NOT_SUPPORT.getCode(), "停车费获取失败"); return new ResultData(ErrorCode.CAR_VENDOR_NOT_SUPPORT.getCode(), "停车费获取失败");
} }


private ResultData dahuaCarStopFee(Map<String, String> paramMap, WxPark park) {
String carNumber = paramMap.get("carNumber");
String result = DaHuaUtil.plateCharge(carNumber, park.getParkId());
logger.info("大华查询车辆费用接口返回值:{}", result);
JSONObject jsonObject = JSONObject.parseObject(result);
String code = jsonObject.getString("code");
if (!code.equals(DaHuaUtil.SUCCESS_CODE)) {
return new ResultData(ErrorCode.CAR_VENDOR_NOT_SUPPORT.getCode(), "停车费获取失败");
}
Object data = jsonObject.get("data");
return new ResultData(data);
}

private ResultData etcpCarStopFee(@RequestBody Map<String, String> paramMap, WxPark park) { private ResultData etcpCarStopFee(@RequestBody Map<String, String> paramMap, WxPark park) {
String etcpToken = paramMap.get("etcpToken"); String etcpToken = paramMap.get("etcpToken");
String carNumber = paramMap.get("carNumber"); String carNumber = paramMap.get("carNumber");
@@ -673,11 +697,11 @@ public class WxCarController extends BaseController {
/** /**
* 优免券领取 * 优免券领取
* 优免券不可退 * 优免券不可退
*/
@ApiOperation(value = "停车券使用", notes="ETCP:={\"etcpToken\":\"string(ETCP专用)\",\"carNumber\":\"string\",\"couponOrderId\"=\"String\"},输出\n{}\n" +
*/
@ApiOperation(value = "停车券使用", notes = "ETCP:={\"etcpToken\":\"string(ETCP专用)\",\"carNumber\":\"string\",\"couponOrderId\"=\"String\"},输出\n{}\n" +
"TJD:{\"carNumber\":\"string\",\"tradeId\":\"string\",\"accountId\":\"string\",\"couponOrderId\":\"string\"}") "TJD:{\"carNumber\":\"string\",\"tradeId\":\"string\",\"accountId\":\"string\",\"couponOrderId\":\"string\"}")
@PostMapping("/getCoupon") @PostMapping("/getCoupon")
public ResultData getCoupon(@RequestBody Map<String, String > paramMap) {
public ResultData getCoupon(@RequestBody Map<String, String> paramMap) {
/// 1, get mall's park /// 1, get mall's park
WxPark park = getCurrentPark(getTenantId()); WxPark park = getCurrentPark(getTenantId());
String carNumber = paramMap.get("carNumber"); String carNumber = paramMap.get("carNumber");
@@ -721,7 +745,7 @@ public class WxCarController extends BaseController {
String businessId = ""; String businessId = "";
// 获取merchantId // 获取merchantId
WxMerchantVo merchantVo = null; WxMerchantVo merchantVo = null;
if(userCar.getMerchantVoList().size() > 0) {
if (userCar.getMerchantVoList().size() > 0) {
merchantVo = userCar.getMerchantVoList().get(0); merchantVo = userCar.getMerchantVoList().get(0);
} }


@@ -759,7 +783,7 @@ public class WxCarController extends BaseController {
} else { } else {
return new ResultData(ErrorCode.ETCP_QUAN_SEND_FAIL.getCode(), retObj.getString("message")); return new ResultData(ErrorCode.ETCP_QUAN_SEND_FAIL.getCode(), retObj.getString("message"));
} }
} else if (park.getVendorType() == EnumCarVendor.CAR_TJD.getCode()){
} else if (park.getVendorType() == EnumCarVendor.CAR_TJD.getCode()) {
String tradeId = paramMap.get("tradeId"); String tradeId = paramMap.get("tradeId");
String accountId = paramMap.get("accountId"); String accountId = paramMap.get("accountId");
if (StringUtils.isBlank(tradeId)) { if (StringUtils.isBlank(tradeId)) {
@@ -799,7 +823,7 @@ public class WxCarController extends BaseController {
}) })
public ResultData list(@ModelAttribute WxCouponOrder wxCouponOrder, Integer pageNum, Integer pageSize) { public ResultData list(@ModelAttribute WxCouponOrder wxCouponOrder, Integer pageNum, Integer pageSize) {


if(pageNum == null || pageSize == null) {
if (pageNum == null || pageSize == null) {
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL); return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL);
} }
if (wxCouponOrder == null) wxCouponOrder = new WxCouponOrderCarCVo(); if (wxCouponOrder == null) wxCouponOrder = new WxCouponOrderCarCVo();
@@ -828,7 +852,7 @@ public class WxCarController extends BaseController {


private ResultData etcpParkStatus(WxPark park) { private ResultData etcpParkStatus(WxPark park) {
String params = park.getVendorParams(); String params = park.getVendorParams();
if(params == null) {
if (params == null) {
return new ResultData(ErrorCode.CAR_VENDOR_NOT_SUPPORT.getCode(), "车场不支持"); return new ResultData(ErrorCode.CAR_VENDOR_NOT_SUPPORT.getCode(), "车场不支持");
} }
JSONObject objParams = JSON.parseObject(params); JSONObject objParams = JSON.parseObject(params);


+ 1
- 0
mallinkService/src/main/java/com/iformall/common/ErrorCode.java Vedi File

@@ -156,6 +156,7 @@ public enum ErrorCode{
TJD_STOP_FEE_FAIL(2062, "TJD停车费失败"), TJD_STOP_FEE_FAIL(2062, "TJD停车费失败"),
TJD_DEDUCE_FEE_FAIL(2063, "TJD停车费抵扣失败"), TJD_DEDUCE_FEE_FAIL(2063, "TJD停车费抵扣失败"),



/** /**
* 游戏 * 游戏
*/ */


+ 2
- 1
mallinkService/src/main/java/com/iformall/enums/EnumCarVendor.java Vedi File

@@ -8,7 +8,8 @@ public enum EnumCarVendor {
// 1-ETCP, 2-TJD // 1-ETCP, 2-TJD
CAR_NOTFOUND(0, "无"), CAR_NOTFOUND(0, "无"),
CAR_ETCP(1, "ETCP"), CAR_ETCP(1, "ETCP"),
CAR_TJD(2, "TJD")
CAR_TJD(2, "TJD"),
CAR_DAHUA(3, "DAHUA"),
; ;


public static EnumCarVendor getEnum(Integer code) { public static EnumCarVendor getEnum(Integer code) {


+ 55
- 0
mallinkService/src/main/java/com/iformall/utils/car/DaHuaUtil.java Vedi File

@@ -0,0 +1,55 @@
package com.iformall.utils.car;

import com.alibaba.fastjson.JSONObject;
import com.iformall.utils.AesUtils;
import com.iformall.utils.HttpUtil;
import lombok.experimental.UtilityClass;

import java.util.HashMap;
import java.util.Map;

/**
* 大华 停车管理
*/
@UtilityClass
public class DaHuaUtil {

public static final String KEY = "8G5M4Ff9hel6fUA7";

public static final String IV = "g8v90drvOmIx1PuR";

public static final String URL = "http://47.106.104.196:8025/external/common";

public static final String SUCCESS_CODE = "0000";

public static String parkInfo(String appId) {
Map<String, Object> requestParams = new HashMap<>();
requestParams.put("method", "parkInfo");
return request(requestParams, appId);
}

public static String plateCharge(String carNum, String appId) {
Map<String, Object> requestParams = new HashMap<>();
Map<String, Object> data = new HashMap<>();
data.put("carNum", carNum);
requestParams.put("data", data);
requestParams.put("method", "plateCharge");
return request(requestParams, appId);
}

public static String request(Map<String, Object> requestParams, String appId) {
String cipher = AesUtils.encryptCtrMode(JSONObject.toJSONString(requestParams), KEY, IV);
Map<String, Object> params = new HashMap<>();
params.put("appId", appId);
params.put("cipher", cipher);
params.put("timestamp", System.currentTimeMillis());
try {
return HttpUtil.doPost(URL, JSONObject.toJSONString(params));
} catch (Exception e) {
return null;
}
}


}


Caricamento…
Annulla
Salva