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

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

release_toaliyun_real
gongbiao 6 лет назад
Родитель
Сommit
d7f6347d82
4 измененных файлов: 119 добавлений и 38 удалений
  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 Просмотреть файл

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

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

TJDUtil tjd = new TJDUtil();

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

@Autowired
@Autowired
WxCarCmdLogService wxCarCmdLogService;

@Autowired
@Autowired
WxCreditHistoryService wxCreditHistoryService;

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

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

/**
* 初始化/etcp共同登录
*
* @param paramMap
* @return
*/
@ApiOperation(value = "初始化/etcp共同登录",notes="{\"phone\":\"string\"}")
@ApiOperation(value = "初始化/etcp共同登录", notes = "{\"phone\":\"string\"}")
@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
WxPark park = getCurrentPark(getTenantId());
// 2. get vendor params
if (park.getVendorType() == EnumCarVendor.CAR_ETCP.getCode()) {
if (park.getVendorType().equals(EnumCarVendor.CAR_ETCP.getCode())) {
return initForEtcp(paramMap, user, park);
} else if (park.getVendorType() == EnumCarVendor.CAR_TJD.getCode()){
} else if (park.getVendorType().equals(EnumCarVendor.CAR_TJD.getCode())) {
// TJD不需要共同登录
Map resultMap = new HashMap();
resultMap.put("vendor", EnumCarVendor.CAR_TJD.getCode());
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(), "登录失败");
@@ -152,13 +158,14 @@ public class WxCarController extends BaseController {
// c端必须保存此token
return new ResultData(dataObj);
} else {
logger.error("共同登录失败: "+phone);
logger.error("共同登录失败: " + phone);
return new ResultData(ErrorCode.ETCP_LOGIN_FAIL.getCode(), "共同登录失败");
}
}

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

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

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

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

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

// 成长值
wxScoreRulesService.addScore(EnumScoreType.BIND_CAR,userCar);
wxScoreRulesService.addScore(EnumScoreType.BIND_CAR, userCar);
//增加积分
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) {
@@ -385,7 +393,7 @@ public class WxCarController extends BaseController {
userCar.setUpdateDate(curr);
try {
wxCUserCarService.save(userCar);
wxScoreRulesService.addScore(EnumScoreType.BIND_CAR,userCar);
wxScoreRulesService.addScore(EnumScoreType.BIND_CAR, userCar);
//增加积分
addCredit();
} catch (Exception e) {
@@ -393,12 +401,12 @@ public class WxCarController extends BaseController {
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;
}

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

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

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

/**
* 停车费
*
* @param paramMap
* @return
*/
@@ -577,18 +587,32 @@ public class WxCarController extends BaseController {
" \"pmParkId\": \"d49aeaedcf144f1faf569846d6b16670\"\n" +
" }")
@PostMapping("/getCarStopFee")
public ResultData getCarStopFee(@RequestBody Map<String, String > paramMap) {
public ResultData getCarStopFee(@RequestBody Map<String, String> paramMap) {
// 1, get mall's park
WxPark park = getCurrentPark(getTenantId());
if (park.getVendorType() == EnumCarVendor.CAR_ETCP.getCode()) {
if (park.getVendorType().equals(EnumCarVendor.CAR_ETCP.getCode())) {
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);
} else if (park.getVendorType().equals(EnumCarVendor.CAR_DAHUA.getCode())) {
return dahuaCarStopFee(paramMap, park);
}
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) {
String etcpToken = paramMap.get("etcpToken");
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\"}")
@PostMapping("/getCoupon")
public ResultData getCoupon(@RequestBody Map<String, String > paramMap) {
public ResultData getCoupon(@RequestBody Map<String, String> paramMap) {
/// 1, get mall's park
WxPark park = getCurrentPark(getTenantId());
String carNumber = paramMap.get("carNumber");
@@ -721,7 +745,7 @@ public class WxCarController extends BaseController {
String businessId = "";
// 获取merchantId
WxMerchantVo merchantVo = null;
if(userCar.getMerchantVoList().size() > 0) {
if (userCar.getMerchantVoList().size() > 0) {
merchantVo = userCar.getMerchantVoList().get(0);
}

@@ -759,7 +783,7 @@ public class WxCarController extends BaseController {
} else {
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 accountId = paramMap.get("accountId");
if (StringUtils.isBlank(tradeId)) {
@@ -799,7 +823,7 @@ public class WxCarController extends BaseController {
})
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);
}
if (wxCouponOrder == null) wxCouponOrder = new WxCouponOrderCarCVo();
@@ -828,7 +852,7 @@ public class WxCarController extends BaseController {

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


+ 1
- 0
mallinkService/src/main/java/com/iformall/common/ErrorCode.java Просмотреть файл

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


/**
* 游戏
*/


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

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

public static EnumCarVendor getEnum(Integer code) {


+ 55
- 0
mallinkService/src/main/java/com/iformall/utils/car/DaHuaUtil.java Просмотреть файл

@@ -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;
}
}


}


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