|
|
|
@@ -95,50 +95,7 @@ public class WxCarController extends BaseController { |
|
|
|
WxPark park = getCurrentPark(getTenantId()); |
|
|
|
// 2. get vendor params |
|
|
|
if (park.getVendorType() == EnumCarVendor.CAR_ETCP.getCode()) { |
|
|
|
String phone = paramMap.get("phone"); |
|
|
|
if (StringUtils.isBlank(phone) && StringUtils.isBlank(user.getPhone()) && StringUtils.isBlank(user.getVerifyCodePhone())) { |
|
|
|
logger.error("手机号为空,请授权手机号"); |
|
|
|
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "手机号为空,请授权手机号"); |
|
|
|
} |
|
|
|
if (!StringUtils.isBlank(user.getPhone()) && !user.getPhone().contains("*")) { |
|
|
|
phone = user.getPhone(); |
|
|
|
} else { |
|
|
|
phone = user.getVerifyCodePhone(); |
|
|
|
} |
|
|
|
String params = park.getVendorParams(); |
|
|
|
JSONObject objParams = JSON.parseObject(params); |
|
|
|
String url = objParams.getString("url"); |
|
|
|
String appId = objParams.getString("appId"); |
|
|
|
String merchantNo = objParams.getString("merchantNo"); |
|
|
|
String merchantKey = objParams.getString("merchantKey"); |
|
|
|
String version = objParams.getString("version"); |
|
|
|
|
|
|
|
String ret = ""; |
|
|
|
try { |
|
|
|
ret = etcp.userSignin(url, appId, merchantNo, merchantKey, version, phone); |
|
|
|
} catch (MallinkException e) { |
|
|
|
logger.error("ETCP failed: " + e.getMessage()); |
|
|
|
return new ResultData(e.getErrorCode(), e.getMessage()); |
|
|
|
} |
|
|
|
JSONObject retObj = JSON.parseObject(ret); |
|
|
|
if (retObj.getIntValue("code") == EnumETCPCode.SUCCESS.getCode()) { |
|
|
|
// 获取绑定的车牌 |
|
|
|
JSONObject dataObj = retObj.getJSONObject("data"); |
|
|
|
dataObj.put("vendor", EnumCarVendor.CAR_ETCP.getCode()); |
|
|
|
String etcpToken = dataObj.getString("token"); |
|
|
|
try { |
|
|
|
JSONObject dataObj1 = syncCarNumbers(user.getId(), user.getTenantId(), park.getVendorType(), |
|
|
|
url, merchantNo, merchantKey, version, |
|
|
|
etcpToken); |
|
|
|
} catch (MallinkException e) { |
|
|
|
logger.error("ETCP cmd error: " + e.getMessage()); |
|
|
|
} |
|
|
|
// c端必须保存此token |
|
|
|
return new ResultData(dataObj); |
|
|
|
} else { |
|
|
|
logger.error("共同登录失败: "+phone); |
|
|
|
return new ResultData(ErrorCode.ETCP_LOGIN_FAIL.getCode(), "共同登录失败"); |
|
|
|
} |
|
|
|
return initForEtcp(paramMap, user, park); |
|
|
|
} else if (park.getVendorType() == EnumCarVendor.CAR_TJD.getCode()){ |
|
|
|
// TJD不需要共同登录 |
|
|
|
Map resultMap = new HashMap(); |
|
|
|
@@ -149,8 +106,55 @@ public class WxCarController extends BaseController { |
|
|
|
return new ResultData(ErrorCode.CAR_VENDOR_NOT_SUPPORT.getCode(), "登录失败"); |
|
|
|
} |
|
|
|
|
|
|
|
private ResultData initForEtcp(Map<String, String> paramMap, WxCUser user, WxPark park) { |
|
|
|
String phone = paramMap.get("phone"); |
|
|
|
if (StringUtils.isBlank(phone) && StringUtils.isBlank(user.getPhone()) && StringUtils.isBlank(user.getVerifyCodePhone())) { |
|
|
|
logger.error("手机号为空,请授权手机号"); |
|
|
|
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "手机号为空,请授权手机号"); |
|
|
|
} |
|
|
|
if (!StringUtils.isBlank(user.getPhone()) && !user.getPhone().contains("*")) { |
|
|
|
phone = user.getPhone(); |
|
|
|
} else { |
|
|
|
phone = user.getVerifyCodePhone(); |
|
|
|
} |
|
|
|
String params = park.getVendorParams(); |
|
|
|
JSONObject objParams = JSON.parseObject(params); |
|
|
|
String url = objParams.getString("url"); |
|
|
|
String appId = objParams.getString("appId"); |
|
|
|
String merchantNo = objParams.getString("merchantNo"); |
|
|
|
String merchantKey = objParams.getString("merchantKey"); |
|
|
|
String version = objParams.getString("version"); |
|
|
|
|
|
|
|
String ret = ""; |
|
|
|
try { |
|
|
|
ret = etcp.userSignin(url, appId, merchantNo, merchantKey, version, phone); |
|
|
|
} catch (MallinkException e) { |
|
|
|
logger.error("ETCP failed: " + e.getMessage()); |
|
|
|
return new ResultData(e.getErrorCode(), e.getMessage()); |
|
|
|
} |
|
|
|
JSONObject retObj = JSON.parseObject(ret); |
|
|
|
if (retObj.getIntValue("code") == EnumETCPCode.SUCCESS.getCode()) { |
|
|
|
// 获取绑定的车牌 |
|
|
|
JSONObject dataObj = retObj.getJSONObject("data"); |
|
|
|
dataObj.put("vendor", EnumCarVendor.CAR_ETCP.getCode()); |
|
|
|
String etcpToken = dataObj.getString("token"); |
|
|
|
try { |
|
|
|
JSONObject dataObj1 = etcpSyncCarNumbers(user.getId(), user.getTenantId(), park.getVendorType(), |
|
|
|
url, merchantNo, merchantKey, version, |
|
|
|
etcpToken); |
|
|
|
} catch (MallinkException e) { |
|
|
|
logger.error("ETCP cmd error: " + e.getMessage()); |
|
|
|
} |
|
|
|
// c端必须保存此token |
|
|
|
return new ResultData(dataObj); |
|
|
|
} else { |
|
|
|
logger.error("共同登录失败: "+phone); |
|
|
|
return new ResultData(ErrorCode.ETCP_LOGIN_FAIL.getCode(), "共同登录失败"); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 同步 |
|
|
|
* ETCP同步 |
|
|
|
* @param cUserId |
|
|
|
* @param tenantId |
|
|
|
* @param iVendorType |
|
|
|
@@ -161,9 +165,9 @@ public class WxCarController extends BaseController { |
|
|
|
* @param etcpToken |
|
|
|
* @return |
|
|
|
*/ |
|
|
|
private JSONObject syncCarNumbers(Long cUserId, String tenantId, int iVendorType, |
|
|
|
String url, String merchantNo, String merchantKey, String version, |
|
|
|
String etcpToken) { |
|
|
|
private JSONObject etcpSyncCarNumbers(Long cUserId, String tenantId, int iVendorType, |
|
|
|
String url, String merchantNo, String merchantKey, String version, |
|
|
|
String etcpToken) { |
|
|
|
String ret; |
|
|
|
JSONObject retObj; |
|
|
|
/*{"code": 0,"msg": "ok","data": {"number": 3,"carList": ["晋 BMZ105","云 C12345"]}} */ |
|
|
|
@@ -253,115 +257,134 @@ public class WxCarController extends BaseController { |
|
|
|
WxPark park = getCurrentPark(getTenantId()); |
|
|
|
// 2. get vendor params |
|
|
|
if (park.getVendorType() == EnumCarVendor.CAR_ETCP.getCode()) { |
|
|
|
String etcpToken = paramMap.get("etcpToken"); |
|
|
|
if (StringUtils.isBlank(etcpToken)) { |
|
|
|
logger.error("etcpToken为空"); |
|
|
|
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "etcpToken为空"); |
|
|
|
} |
|
|
|
String carNumber = paramMap.get("carNumber"); |
|
|
|
if (StringUtils.isBlank(carNumber)) { |
|
|
|
logger.error("carNumber为空"); |
|
|
|
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "carNumber为空"); |
|
|
|
} |
|
|
|
String params = park.getVendorParams(); |
|
|
|
JSONObject objParams = JSON.parseObject(params); |
|
|
|
String url = objParams.getString("url"); |
|
|
|
String merchantNo = objParams.getString("merchantNo"); |
|
|
|
String merchantKey = objParams.getString("merchantKey"); |
|
|
|
String version = objParams.getString("version"); |
|
|
|
return etcpBindCar(paramMap, park); |
|
|
|
} |
|
|
|
else if (park.getVendorType() == EnumCarVendor.CAR_TJD.getCode()) { |
|
|
|
return tjdBindCar(paramMap, park); |
|
|
|
} |
|
|
|
return new ResultData(ErrorCode.CAR_VENDOR_NOT_SUPPORT.getCode(), "绑车牌失败"); |
|
|
|
} |
|
|
|
|
|
|
|
String ret = ""; |
|
|
|
try { |
|
|
|
ret = etcp.bindCar(url, merchantNo, merchantKey, version, etcpToken, carNumber, null); |
|
|
|
} catch (MallinkException e) { |
|
|
|
logger.error("ETCP failed: " + e.getMessage()); |
|
|
|
return new ResultData(e.getErrorCode(), e.getMessage()); |
|
|
|
} |
|
|
|
JSONObject retObj = JSON.parseObject(ret); |
|
|
|
if (retObj.getIntValue("code") == 0) { |
|
|
|
// 插入车牌 |
|
|
|
Date curr = new Date(); |
|
|
|
WxCUserCar userCar = new WxCUserCar(); |
|
|
|
userCar.setCUserId(getUserId()); |
|
|
|
userCar.setTenantId(getTenantId()); |
|
|
|
userCar.setCarNumber(carNumber); |
|
|
|
userCar.setVendorType(EnumCarVendor.CAR_ETCP.getCode()); |
|
|
|
userCar.setCreateDate(curr); |
|
|
|
userCar.setUpdateDate(curr); |
|
|
|
wxCUserCarService.saveOrUpdate(userCar); |
|
|
|
private ResultData etcpBindCar(Map<String, String> paramMap, WxPark park) { |
|
|
|
String etcpToken = paramMap.get("etcpToken"); |
|
|
|
if (StringUtils.isBlank(etcpToken)) { |
|
|
|
logger.error("etcpToken为空"); |
|
|
|
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "etcpToken为空"); |
|
|
|
} |
|
|
|
String carNumber = paramMap.get("carNumber"); |
|
|
|
if (StringUtils.isBlank(carNumber)) { |
|
|
|
logger.error("carNumber为空"); |
|
|
|
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "carNumber为空"); |
|
|
|
} |
|
|
|
String params = park.getVendorParams(); |
|
|
|
JSONObject objParams = JSON.parseObject(params); |
|
|
|
String url = objParams.getString("url"); |
|
|
|
String merchantNo = objParams.getString("merchantNo"); |
|
|
|
String merchantKey = objParams.getString("merchantKey"); |
|
|
|
String version = objParams.getString("version"); |
|
|
|
|
|
|
|
String ret = ""; |
|
|
|
try { |
|
|
|
ret = etcp.bindCar(url, merchantNo, merchantKey, version, etcpToken, carNumber, null); |
|
|
|
} catch (MallinkException e) { |
|
|
|
logger.error("ETCP failed: " + e.getMessage()); |
|
|
|
return new ResultData(e.getErrorCode(), e.getMessage()); |
|
|
|
} |
|
|
|
JSONObject retObj = JSON.parseObject(ret); |
|
|
|
if (retObj.getIntValue("code") == 0) { |
|
|
|
addCarInfoToDB(carNumber); |
|
|
|
JSONObject dataObj = retObj.getJSONObject("data"); |
|
|
|
return new ResultData(dataObj); |
|
|
|
} else { |
|
|
|
String message = retObj.getString("message"); |
|
|
|
logger.error("绑车牌失败: " + carNumber); |
|
|
|
return new ResultData(ErrorCode.ETCP_BIND_FAIL.getCode(), message, retObj); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
wxScoreRulesService.addScore(EnumScoreType.BIND_CAR,userCar); |
|
|
|
//增加积分 |
|
|
|
addCredit(); |
|
|
|
JSONObject dataObj = retObj.getJSONObject("data"); |
|
|
|
wxCUserTagsService.triggerAssignTags(EnumAssignTagsTrigger.ASSIGN_TAGS_TRIGGER_CAR,getUserId()); |
|
|
|
return new ResultData(dataObj); |
|
|
|
} else { |
|
|
|
String message = retObj.getString("message"); |
|
|
|
logger.error("绑车牌失败: " + carNumber); |
|
|
|
return new ResultData(ErrorCode.ETCP_BIND_FAIL.getCode(), message, retObj); |
|
|
|
} |
|
|
|
private void addCarInfoToDB(String carNumber) { |
|
|
|
// 插入车牌 |
|
|
|
Date curr = new Date(); |
|
|
|
WxCUserCar userCar = new WxCUserCar(); |
|
|
|
userCar.setCUserId(getUserId()); |
|
|
|
userCar.setTenantId(getTenantId()); |
|
|
|
userCar.setCarNumber(carNumber); |
|
|
|
userCar.setVendorType(EnumCarVendor.CAR_ETCP.getCode()); |
|
|
|
userCar.setCreateDate(curr); |
|
|
|
userCar.setUpdateDate(curr); |
|
|
|
wxCUserCarService.saveOrUpdate(userCar); |
|
|
|
|
|
|
|
// 成长值 |
|
|
|
wxScoreRulesService.addScore(EnumScoreType.BIND_CAR,userCar); |
|
|
|
//增加积分 |
|
|
|
addCredit(); |
|
|
|
wxCUserTagsService.triggerAssignTags(EnumAssignTagsTrigger.ASSIGN_TAGS_TRIGGER_CAR,getUserId()); |
|
|
|
} |
|
|
|
|
|
|
|
private ResultData tjdBindCar(@RequestBody Map<String, String> paramMap, WxPark park) { |
|
|
|
String carNumber = paramMap.get("carNumber"); |
|
|
|
if (StringUtils.isBlank(carNumber)) { |
|
|
|
logger.error("carNumber为空"); |
|
|
|
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "carNumber为空"); |
|
|
|
} |
|
|
|
else if (park.getVendorType() == EnumCarVendor.CAR_TJD.getCode()) { |
|
|
|
String carNumber = paramMap.get("carNumber"); |
|
|
|
if (StringUtils.isBlank(carNumber)) { |
|
|
|
logger.error("carNumber为空"); |
|
|
|
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "carNumber为空"); |
|
|
|
} |
|
|
|
String carNumColor = paramMap.get("carNumColor"); |
|
|
|
//if (StringUtils.isBlank(carNumColor)) { |
|
|
|
// logger.error("carNumColor为空"); |
|
|
|
// return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "carNumColor为空"); |
|
|
|
//} |
|
|
|
Long newCarId = 0L; |
|
|
|
String outCarId = paramMap.get("outCarId"); |
|
|
|
if (StringUtils.isBlank(outCarId)) { |
|
|
|
logger.warn("outCarId为空"); |
|
|
|
newCarId = wxCUserCarService.getNewCarID(); |
|
|
|
outCarId = String.valueOf(newCarId); |
|
|
|
} |
|
|
|
String params = park.getVendorParams(); |
|
|
|
JSONObject objParams = JSON.parseObject(params); |
|
|
|
String url = objParams.getString("url"); |
|
|
|
String partner = objParams.getString("partner"); |
|
|
|
String key = objParams.getString("key"); |
|
|
|
String version = objParams.getString("version"); |
|
|
|
String ret = tjd.registerCar(url, partner, key, version, |
|
|
|
carNumber, carNumColor, null, outCarId); |
|
|
|
JSONObject retObj = JSON.parseObject(ret); |
|
|
|
retObj.put("vendor", park.getVendorType()); |
|
|
|
if (retObj.getString("returnCode").equalsIgnoreCase(EnumTJDCode.SUCCESS.getMessage())) { |
|
|
|
String carId = retObj.getString("carId"); |
|
|
|
// 插入车牌 |
|
|
|
Date curr = new Date(); |
|
|
|
WxCUserCar userCar = new WxCUserCar(); |
|
|
|
userCar.setId(newCarId); |
|
|
|
userCar.setCUserId(getUserId()); |
|
|
|
userCar.setTenantId(getTenantId()); |
|
|
|
userCar.setCarNumber(carNumber); |
|
|
|
userCar.setVendorType(EnumCarVendor.CAR_TJD.getCode()); |
|
|
|
JSONObject jo = new JSONObject(); |
|
|
|
jo.put("carId", carId); |
|
|
|
userCar.setVendorParams(JSON.toJSONString(jo)); |
|
|
|
userCar.setCreateDate(curr); |
|
|
|
userCar.setUpdateDate(curr); |
|
|
|
try { |
|
|
|
wxCUserCarService.save(userCar); |
|
|
|
wxScoreRulesService.addScore(EnumScoreType.BIND_CAR,userCar); |
|
|
|
//增加积分 |
|
|
|
addCredit(); |
|
|
|
} catch (Exception e) { |
|
|
|
logger.error(e.getMessage()); |
|
|
|
return new ResultData(ErrorCode.DB_FAIL.getCode(), "TJD保存车牌失败, e:" + e.getMessage()); |
|
|
|
} |
|
|
|
String carNumColor = paramMap.get("carNumColor"); |
|
|
|
//if (StringUtils.isBlank(carNumColor)) { |
|
|
|
// logger.error("carNumColor为空"); |
|
|
|
// return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "carNumColor为空"); |
|
|
|
//} |
|
|
|
Long newCarId = 0L; |
|
|
|
String outCarId = paramMap.get("outCarId"); |
|
|
|
if (StringUtils.isBlank(outCarId)) { |
|
|
|
logger.warn("outCarId为空"); |
|
|
|
newCarId = wxCUserCarService.getNewCarID(); |
|
|
|
outCarId = String.valueOf(newCarId); |
|
|
|
} |
|
|
|
String params = park.getVendorParams(); |
|
|
|
JSONObject objParams = JSON.parseObject(params); |
|
|
|
String url = objParams.getString("url"); |
|
|
|
String partner = objParams.getString("partner"); |
|
|
|
String key = objParams.getString("key"); |
|
|
|
String version = objParams.getString("version"); |
|
|
|
String ret = tjd.registerCar(url, partner, key, version, |
|
|
|
carNumber, carNumColor, null, outCarId); |
|
|
|
JSONObject retObj = JSON.parseObject(ret); |
|
|
|
retObj.put("vendor", park.getVendorType()); |
|
|
|
if (retObj.getString("returnCode").equalsIgnoreCase(EnumTJDCode.SUCCESS.getMessage())) { |
|
|
|
ResultData e = tjdInsertToDB(carNumber, newCarId, retObj); |
|
|
|
if (e != null) return e; |
|
|
|
return new ResultData(retObj); |
|
|
|
} else { |
|
|
|
return new ResultData(ErrorCode.TJD_BIND_FAIL.getCode(), "绑车牌失败", retObj); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
wxCUserTagsService.triggerAssignTags(EnumAssignTagsTrigger.ASSIGN_TAGS_TRIGGER_CAR,getUserId()); |
|
|
|
return new ResultData(retObj); |
|
|
|
} else { |
|
|
|
return new ResultData(ErrorCode.TJD_BIND_FAIL.getCode(), "绑车牌失败", retObj); |
|
|
|
} |
|
|
|
private ResultData tjdInsertToDB(String carNumber, Long newCarId, JSONObject retObj) { |
|
|
|
String carId = retObj.getString("carId"); |
|
|
|
// 插入车牌 |
|
|
|
Date curr = new Date(); |
|
|
|
WxCUserCar userCar = new WxCUserCar(); |
|
|
|
userCar.setId(newCarId); |
|
|
|
userCar.setCUserId(getUserId()); |
|
|
|
userCar.setTenantId(getTenantId()); |
|
|
|
userCar.setCarNumber(carNumber); |
|
|
|
userCar.setVendorType(EnumCarVendor.CAR_TJD.getCode()); |
|
|
|
JSONObject jo = new JSONObject(); |
|
|
|
jo.put("carId", carId); |
|
|
|
userCar.setVendorParams(JSON.toJSONString(jo)); |
|
|
|
userCar.setCreateDate(curr); |
|
|
|
userCar.setUpdateDate(curr); |
|
|
|
try { |
|
|
|
wxCUserCarService.save(userCar); |
|
|
|
wxScoreRulesService.addScore(EnumScoreType.BIND_CAR,userCar); |
|
|
|
//增加积分 |
|
|
|
addCredit(); |
|
|
|
} catch (Exception e) { |
|
|
|
logger.error(e.getMessage()); |
|
|
|
return new ResultData(ErrorCode.DB_FAIL.getCode(), "TJD保存车牌失败, e:" + e.getMessage()); |
|
|
|
} |
|
|
|
return new ResultData(ErrorCode.CAR_VENDOR_NOT_SUPPORT.getCode(), "绑车牌失败"); |
|
|
|
|
|
|
|
wxCUserTagsService.triggerAssignTags(EnumAssignTagsTrigger.ASSIGN_TAGS_TRIGGER_CAR,getUserId()); |
|
|
|
return null; |
|
|
|
} |
|
|
|
|
|
|
|
//-----增加积分start----- |
|
|
|
@@ -399,89 +422,98 @@ public class WxCarController extends BaseController { |
|
|
|
// 1, get mall's park |
|
|
|
WxPark park = getCurrentPark(getTenantId()); |
|
|
|
if (park.getVendorType() == EnumCarVendor.CAR_ETCP.getCode()) { |
|
|
|
String etcpToken = paramMap.get("etcpToken"); |
|
|
|
if (StringUtils.isBlank(etcpToken)) { |
|
|
|
logger.error("etcpToken为空"); |
|
|
|
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "etcpToken为空"); |
|
|
|
} |
|
|
|
String carNumber = paramMap.get("carNumber"); |
|
|
|
if (StringUtils.isBlank(carNumber)) { |
|
|
|
logger.error("carNumber为空"); |
|
|
|
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "carNumber为空"); |
|
|
|
} |
|
|
|
String params = park.getVendorParams(); |
|
|
|
JSONObject objParams = JSON.parseObject(params); |
|
|
|
String url = objParams.getString("url"); |
|
|
|
String merchantNo = objParams.getString("merchantNo"); |
|
|
|
String merchantKey = objParams.getString("merchantKey"); |
|
|
|
String version = objParams.getString("version"); |
|
|
|
return etcpUnbindCar(paramMap, park); |
|
|
|
} |
|
|
|
else if (park.getVendorType() == EnumCarVendor.CAR_TJD.getCode()) { |
|
|
|
ResultData e = tjdUnbindCar(paramMap, park); |
|
|
|
if (e != null) return e; |
|
|
|
} |
|
|
|
return new ResultData(ErrorCode.CAR_VENDOR_NOT_SUPPORT.getCode(), "解绑车牌失败"); |
|
|
|
} |
|
|
|
|
|
|
|
String ret = ""; |
|
|
|
private ResultData etcpUnbindCar(Map<String, String> paramMap, WxPark park) { |
|
|
|
String etcpToken = paramMap.get("etcpToken"); |
|
|
|
if (StringUtils.isBlank(etcpToken)) { |
|
|
|
logger.error("etcpToken为空"); |
|
|
|
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "etcpToken为空"); |
|
|
|
} |
|
|
|
String carNumber = paramMap.get("carNumber"); |
|
|
|
if (StringUtils.isBlank(carNumber)) { |
|
|
|
logger.error("carNumber为空"); |
|
|
|
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "carNumber为空"); |
|
|
|
} |
|
|
|
String params = park.getVendorParams(); |
|
|
|
JSONObject objParams = JSON.parseObject(params); |
|
|
|
String url = objParams.getString("url"); |
|
|
|
String merchantNo = objParams.getString("merchantNo"); |
|
|
|
String merchantKey = objParams.getString("merchantKey"); |
|
|
|
String version = objParams.getString("version"); |
|
|
|
|
|
|
|
String ret = ""; |
|
|
|
try { |
|
|
|
ret = etcp.unbindCar(url, merchantNo, merchantKey, version, etcpToken, carNumber); |
|
|
|
} catch (MallinkException e) { |
|
|
|
logger.error("ETCP failed: " + e.getMessage()); |
|
|
|
return new ResultData(e.getErrorCode(), e.getMessage()); |
|
|
|
} |
|
|
|
|
|
|
|
JSONObject retObj = JSON.parseObject(ret); |
|
|
|
if (retObj.getIntValue("code") == 0) { |
|
|
|
try { |
|
|
|
ret = etcp.unbindCar(url, merchantNo, merchantKey, version, etcpToken, carNumber); |
|
|
|
} catch (MallinkException e) { |
|
|
|
logger.error("ETCP failed: " + e.getMessage()); |
|
|
|
return new ResultData(e.getErrorCode(), e.getMessage()); |
|
|
|
WxCUserCar userCar = new WxCUserCar(); |
|
|
|
userCar.setCUserId(getUserId()); |
|
|
|
userCar.setTenantId(getTenantId()); |
|
|
|
userCar.setCarNumber(carNumber); |
|
|
|
wxCUserCarService.deleteByObj(userCar); |
|
|
|
} catch (Exception e) { |
|
|
|
logger.error(e.getMessage()); |
|
|
|
return new ResultData(ErrorCode.DB_FAIL.getCode(), "解绑车牌数据库错误, e:" + e.getMessage()); |
|
|
|
} |
|
|
|
|
|
|
|
return new ResultData(); |
|
|
|
} else { |
|
|
|
String message = retObj.getString("message"); |
|
|
|
logger.error("解绑车牌失败"); |
|
|
|
return new ResultData(ErrorCode.ETCP_UNBIND_FAIL.getCode(), message, retObj); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
private ResultData tjdUnbindCar(@RequestBody Map<String, String> paramMap, WxPark park) { |
|
|
|
String carNumber = paramMap.get("carNumber"); |
|
|
|
if (StringUtils.isBlank(carNumber)) { |
|
|
|
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "carNumber为空"); |
|
|
|
} |
|
|
|
WxCUserCar queryOne = new WxCUserCar(); |
|
|
|
queryOne.setCarNumber(carNumber); |
|
|
|
queryOne.setTenantId(getTenantId()); |
|
|
|
queryOne.setCUserId(getUserId()); |
|
|
|
WxCUserCar userCar = wxCUserCarService.getOne(queryOne); |
|
|
|
if (userCar != null) { |
|
|
|
String params = userCar.getVendorParams(); |
|
|
|
JSONObject objParams = JSON.parseObject(params); |
|
|
|
String carId = objParams.getString("carId"); |
|
|
|
|
|
|
|
params = park.getVendorParams(); |
|
|
|
String url = objParams.getString("url"); |
|
|
|
String partner = objParams.getString("partner"); |
|
|
|
String key = objParams.getString("key"); |
|
|
|
String version = objParams.getString("version"); |
|
|
|
String ret = tjd.writeOffCar(url, partner, key, version, carId); |
|
|
|
JSONObject retObj = JSON.parseObject(ret); |
|
|
|
if (retObj.getIntValue("code") == 0) { |
|
|
|
if (retObj.getString("returnCode").equalsIgnoreCase(EnumTJDCode.SUCCESS.getMessage())) { |
|
|
|
try { |
|
|
|
WxCUserCar userCar = new WxCUserCar(); |
|
|
|
userCar.setCUserId(getUserId()); |
|
|
|
userCar.setTenantId(getTenantId()); |
|
|
|
userCar.setCarNumber(carNumber); |
|
|
|
wxCUserCarService.deleteByObj(userCar); |
|
|
|
} catch (Exception e) { |
|
|
|
logger.error(e.getMessage()); |
|
|
|
logger.error("解绑车牌数据库错误, e:" + e.getMessage()); |
|
|
|
return new ResultData(ErrorCode.DB_FAIL.getCode(), "解绑车牌数据库错误, e:" + e.getMessage()); |
|
|
|
} |
|
|
|
|
|
|
|
return new ResultData(); |
|
|
|
} else { |
|
|
|
String message = retObj.getString("message"); |
|
|
|
logger.error("解绑车牌失败"); |
|
|
|
return new ResultData(ErrorCode.ETCP_UNBIND_FAIL.getCode(), message, retObj); |
|
|
|
return new ResultData(ErrorCode.TJD_UNBIND_FAIL, "解绑车牌失败"); |
|
|
|
} |
|
|
|
} |
|
|
|
else if (park.getVendorType() == EnumCarVendor.CAR_TJD.getCode()) { |
|
|
|
String carNumber = paramMap.get("carNumber"); |
|
|
|
if (StringUtils.isBlank(carNumber)) { |
|
|
|
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "carNumber为空"); |
|
|
|
} |
|
|
|
WxCUserCar queryOne = new WxCUserCar(); |
|
|
|
queryOne.setCarNumber(carNumber); |
|
|
|
queryOne.setTenantId(getTenantId()); |
|
|
|
queryOne.setCUserId(getUserId()); |
|
|
|
WxCUserCar userCar = wxCUserCarService.getOne(queryOne); |
|
|
|
if (userCar != null) { |
|
|
|
String params = userCar.getVendorParams(); |
|
|
|
JSONObject objParams = JSON.parseObject(params); |
|
|
|
String carId = objParams.getString("carId"); |
|
|
|
|
|
|
|
params = park.getVendorParams(); |
|
|
|
String url = objParams.getString("url"); |
|
|
|
String partner = objParams.getString("partner"); |
|
|
|
String key = objParams.getString("key"); |
|
|
|
String version = objParams.getString("version"); |
|
|
|
String ret = tjd.writeOffCar(url, partner, key, version, carId); |
|
|
|
JSONObject retObj = JSON.parseObject(ret); |
|
|
|
if (retObj.getString("returnCode").equalsIgnoreCase(EnumTJDCode.SUCCESS.getMessage())) { |
|
|
|
try { |
|
|
|
wxCUserCarService.deleteByObj(userCar); |
|
|
|
} catch (Exception e) { |
|
|
|
logger.error("解绑车牌数据库错误, e:" + e.getMessage()); |
|
|
|
return new ResultData(ErrorCode.DB_FAIL.getCode(), "解绑车牌数据库错误, e:" + e.getMessage()); |
|
|
|
} |
|
|
|
|
|
|
|
return new ResultData(); |
|
|
|
} else { |
|
|
|
return new ResultData(ErrorCode.TJD_UNBIND_FAIL, "解绑车牌失败"); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
return new ResultData(ErrorCode.CAR_VENDOR_NOT_SUPPORT.getCode(), "解绑车牌失败"); |
|
|
|
return null; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
@@ -529,76 +561,84 @@ public class WxCarController extends BaseController { |
|
|
|
// 1, get mall's park |
|
|
|
WxPark park = getCurrentPark(getTenantId()); |
|
|
|
if (park.getVendorType() == EnumCarVendor.CAR_ETCP.getCode()) { |
|
|
|
String etcpToken = paramMap.get("etcpToken"); |
|
|
|
String carNumber = paramMap.get("carNumber"); |
|
|
|
if (StringUtils.isBlank(etcpToken)) { |
|
|
|
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "etcpToken为空"); |
|
|
|
} |
|
|
|
if (StringUtils.isBlank(carNumber)) { |
|
|
|
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "carNumber为空"); |
|
|
|
} |
|
|
|
String params = park.getVendorParams(); |
|
|
|
JSONObject objParams = JSON.parseObject(params); |
|
|
|
String url = objParams.getString("url"); |
|
|
|
String appId = objParams.getString("appId"); |
|
|
|
String merchantNo = objParams.getString("merchantNo"); |
|
|
|
String merchantKey = objParams.getString("merchantKey"); |
|
|
|
String version = objParams.getString("version"); |
|
|
|
return etcpCarStopFee(paramMap, park); |
|
|
|
} |
|
|
|
else if (park.getVendorType() == EnumCarVendor.CAR_TJD.getCode()) { |
|
|
|
return tjdCarStopFee(paramMap, park); |
|
|
|
} |
|
|
|
return new ResultData(ErrorCode.CAR_VENDOR_NOT_SUPPORT.getCode(), "停车费获取失败"); |
|
|
|
} |
|
|
|
|
|
|
|
String ret = ""; |
|
|
|
private ResultData etcpCarStopFee(@RequestBody Map<String, String> paramMap, WxPark park) { |
|
|
|
String etcpToken = paramMap.get("etcpToken"); |
|
|
|
String carNumber = paramMap.get("carNumber"); |
|
|
|
if (StringUtils.isBlank(etcpToken)) { |
|
|
|
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "etcpToken为空"); |
|
|
|
} |
|
|
|
if (StringUtils.isBlank(carNumber)) { |
|
|
|
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "carNumber为空"); |
|
|
|
} |
|
|
|
String params = park.getVendorParams(); |
|
|
|
JSONObject objParams = JSON.parseObject(params); |
|
|
|
String url = objParams.getString("url"); |
|
|
|
String appId = objParams.getString("appId"); |
|
|
|
String merchantNo = objParams.getString("merchantNo"); |
|
|
|
String merchantKey = objParams.getString("merchantKey"); |
|
|
|
String version = objParams.getString("version"); |
|
|
|
|
|
|
|
String ret = ""; |
|
|
|
try { |
|
|
|
ret = etcp.orderUnpay(url, appId, merchantNo, merchantKey, version, etcpToken, carNumber); |
|
|
|
} catch (MallinkException e) { |
|
|
|
logger.error("ETCP failed: " + e.getMessage()); |
|
|
|
return new ResultData(e.getErrorCode(), e.getMessage()); |
|
|
|
} |
|
|
|
|
|
|
|
JSONObject retObj = JSON.parseObject(ret); |
|
|
|
if (retObj.getIntValue("code") == 0) { |
|
|
|
JSONObject feeObj = retObj.getJSONArray("data").getJSONObject(0); |
|
|
|
/* |
|
|
|
Date currentDate = new Date(); |
|
|
|
WxCarCmdLog wxCarCmdLog = new WxCarCmdLog(); |
|
|
|
wxCarCmdLog.setTenantId(user.getTenantId()); |
|
|
|
wxCarCmdLog.setVendorType(EnumCarVendor.CAR_ETCP.getCode()); |
|
|
|
wxCarCmdLog.setCmdType(EnumCarCmd.CAR_ETCP_CALLBACK_UNPAY.getCode()); |
|
|
|
String feeStr = JSON.toJSONString(feeObj); |
|
|
|
wxCarCmdLog.setCmdJson(feeStr); |
|
|
|
wxCarCmdLog.setCreateDate(currentDate); |
|
|
|
wxCarCmdLog.setUpdateDate(currentDate); |
|
|
|
try { |
|
|
|
ret = etcp.orderUnpay(url, appId, merchantNo, merchantKey, version, etcpToken, carNumber); |
|
|
|
} catch (MallinkException e) { |
|
|
|
logger.error("ETCP failed: " + e.getMessage()); |
|
|
|
return new ResultData(e.getErrorCode(), e.getMessage()); |
|
|
|
} |
|
|
|
wxCarCmdLogService.saveOrUpdate(wxCarCmdLog); |
|
|
|
} catch (Exception e) { |
|
|
|
logger.error("etcpOrderUnpay: 入库错误:" + feeStr); |
|
|
|
return new ResultData(ErrorCode.DB_FAIL.getCode(), "入库错误", feeStr); |
|
|
|
} |
|
|
|
*/ |
|
|
|
return new ResultData(Result.SUCCESS, "停车费获取成功", feeObj); |
|
|
|
} else { |
|
|
|
String message = retObj.getString("message"); |
|
|
|
return new ResultData(ErrorCode.ETCP_STOP_FEE_FAIL.getCode(), message, retObj); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
JSONObject retObj = JSON.parseObject(ret); |
|
|
|
if (retObj.getIntValue("code") == 0) { |
|
|
|
JSONObject feeObj = retObj.getJSONArray("data").getJSONObject(0); |
|
|
|
/* |
|
|
|
Date currentDate = new Date(); |
|
|
|
WxCarCmdLog wxCarCmdLog = new WxCarCmdLog(); |
|
|
|
wxCarCmdLog.setTenantId(user.getTenantId()); |
|
|
|
wxCarCmdLog.setVendorType(EnumCarVendor.CAR_ETCP.getCode()); |
|
|
|
wxCarCmdLog.setCmdType(EnumCarCmd.CAR_ETCP_CALLBACK_UNPAY.getCode()); |
|
|
|
String feeStr = JSON.toJSONString(feeObj); |
|
|
|
wxCarCmdLog.setCmdJson(feeStr); |
|
|
|
wxCarCmdLog.setCreateDate(currentDate); |
|
|
|
wxCarCmdLog.setUpdateDate(currentDate); |
|
|
|
try { |
|
|
|
wxCarCmdLogService.saveOrUpdate(wxCarCmdLog); |
|
|
|
} catch (Exception e) { |
|
|
|
logger.error("etcpOrderUnpay: 入库错误:" + feeStr); |
|
|
|
return new ResultData(ErrorCode.DB_FAIL.getCode(), "入库错误", feeStr); |
|
|
|
} |
|
|
|
*/ |
|
|
|
return new ResultData(Result.SUCCESS, "停车费获取成功", feeObj); |
|
|
|
} else { |
|
|
|
String message = retObj.getString("message"); |
|
|
|
return new ResultData(ErrorCode.ETCP_STOP_FEE_FAIL.getCode(), message, retObj); |
|
|
|
} |
|
|
|
private ResultData tjdCarStopFee(@RequestBody Map<String, String> paramMap, WxPark park) { |
|
|
|
String carNumber = paramMap.get("carNumber"); |
|
|
|
if (StringUtils.isBlank(carNumber)) { |
|
|
|
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "carNumber为空"); |
|
|
|
} |
|
|
|
else if (park.getVendorType() == EnumCarVendor.CAR_TJD.getCode()) { |
|
|
|
String carNumber = paramMap.get("carNumber"); |
|
|
|
if (StringUtils.isBlank(carNumber)) { |
|
|
|
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "carNumber为空"); |
|
|
|
} |
|
|
|
String params = park.getVendorParams(); |
|
|
|
JSONObject objParams = JSON.parseObject(params); |
|
|
|
String url = objParams.getString("url"); |
|
|
|
String partner = objParams.getString("partner"); |
|
|
|
String key = objParams.getString("key"); |
|
|
|
String version = objParams.getString("version"); |
|
|
|
String ret = tjd.infoForFreeMins(url, partner, key, version, carNumber); |
|
|
|
JSONObject retObj = JSON.parseObject(ret); |
|
|
|
if (retObj.getString("returnCode").equalsIgnoreCase(EnumTJDCode.SUCCESS.getMessage())) { |
|
|
|
return new ResultData(retObj); |
|
|
|
} else { |
|
|
|
return new ResultData(ErrorCode.TJD_STOP_FEE_FAIL.getCode(), "停车费获取失败"); |
|
|
|
} |
|
|
|
String params = park.getVendorParams(); |
|
|
|
JSONObject objParams = JSON.parseObject(params); |
|
|
|
String url = objParams.getString("url"); |
|
|
|
String partner = objParams.getString("partner"); |
|
|
|
String key = objParams.getString("key"); |
|
|
|
String version = objParams.getString("version"); |
|
|
|
String ret = tjd.infoForFreeMins(url, partner, key, version, carNumber); |
|
|
|
JSONObject retObj = JSON.parseObject(ret); |
|
|
|
if (retObj.getString("returnCode").equalsIgnoreCase(EnumTJDCode.SUCCESS.getMessage())) { |
|
|
|
return new ResultData(retObj); |
|
|
|
} else { |
|
|
|
return new ResultData(ErrorCode.TJD_STOP_FEE_FAIL.getCode(), "停车费获取失败"); |
|
|
|
} |
|
|
|
return new ResultData(ErrorCode.CAR_VENDOR_NOT_SUPPORT.getCode(), "停车费获取失败"); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
@@ -782,62 +822,68 @@ public class WxCarController extends BaseController { |
|
|
|
/// 1, get mall's park |
|
|
|
WxPark park = getCurrentPark(getTenantId()); |
|
|
|
if (park.getVendorType() == EnumCarVendor.CAR_ETCP.getCode()) { |
|
|
|
String params = park.getVendorParams(); |
|
|
|
if(params == null) { |
|
|
|
return new ResultData(ErrorCode.CAR_VENDOR_NOT_SUPPORT.getCode(), "车场不支持"); |
|
|
|
} |
|
|
|
JSONObject objParams = JSON.parseObject(params); |
|
|
|
String url = objParams.getString("url"); |
|
|
|
String merchantNo = objParams.getString("merchantNo"); |
|
|
|
String merchantKey = objParams.getString("merchantKey"); |
|
|
|
String version = objParams.getString("version"); |
|
|
|
if (park.getParkingId() == null) { |
|
|
|
// those code is not supported |
|
|
|
/* |
|
|
|
String lat = objParams.getString("lat"); |
|
|
|
String lon = objParams.getString("lon"); |
|
|
|
String radius = objParams.getString("radius"); |
|
|
|
String ret = etcp.parkingInfo(url, merchantNo, merchantKey, version, lat, lon, radius); |
|
|
|
logger.info(ret); |
|
|
|
JSONObject retObj = JSON.parseObject(ret); |
|
|
|
if (retObj.getIntValue("code") == EnumETCPCode.SUCCESS.getCode()) { |
|
|
|
JSONObject retData = retObj.getJSONObject("data"); |
|
|
|
if (retData != null) { |
|
|
|
JSONArray retDataList = retData.getJSONArray("list"); |
|
|
|
if (retDataList != null) { |
|
|
|
JSONObject parkData = retDataList.getJSONObject(0); |
|
|
|
if (parkData != null) { |
|
|
|
String parkId = parkData.getString("id"); |
|
|
|
objParams.put("parkId", parkId); |
|
|
|
params = JSON.toJSONString(objParams); |
|
|
|
park.setVendorParams(params); |
|
|
|
park.setParkingId(parkId); |
|
|
|
wxParkService.saveOrUpdate(park); |
|
|
|
} |
|
|
|
ResultData e = etcpParkStatus(park); |
|
|
|
if (e != null) return e; |
|
|
|
} |
|
|
|
return new ResultData(ErrorCode.CAR_VENDOR_NOT_SUPPORT.getCode(), "车场不支持"); |
|
|
|
} |
|
|
|
|
|
|
|
private ResultData etcpParkStatus(WxPark park) { |
|
|
|
String params = park.getVendorParams(); |
|
|
|
if(params == null) { |
|
|
|
return new ResultData(ErrorCode.CAR_VENDOR_NOT_SUPPORT.getCode(), "车场不支持"); |
|
|
|
} |
|
|
|
JSONObject objParams = JSON.parseObject(params); |
|
|
|
String url = objParams.getString("url"); |
|
|
|
String merchantNo = objParams.getString("merchantNo"); |
|
|
|
String merchantKey = objParams.getString("merchantKey"); |
|
|
|
String version = objParams.getString("version"); |
|
|
|
if (park.getParkingId() == null) { |
|
|
|
// those code is not supported |
|
|
|
/* |
|
|
|
String lat = objParams.getString("lat"); |
|
|
|
String lon = objParams.getString("lon"); |
|
|
|
String radius = objParams.getString("radius"); |
|
|
|
String ret = etcp.parkingInfo(url, merchantNo, merchantKey, version, lat, lon, radius); |
|
|
|
logger.info(ret); |
|
|
|
JSONObject retObj = JSON.parseObject(ret); |
|
|
|
if (retObj.getIntValue("code") == EnumETCPCode.SUCCESS.getCode()) { |
|
|
|
JSONObject retData = retObj.getJSONObject("data"); |
|
|
|
if (retData != null) { |
|
|
|
JSONArray retDataList = retData.getJSONArray("list"); |
|
|
|
if (retDataList != null) { |
|
|
|
JSONObject parkData = retDataList.getJSONObject(0); |
|
|
|
if (parkData != null) { |
|
|
|
String parkId = parkData.getString("id"); |
|
|
|
objParams.put("parkId", parkId); |
|
|
|
params = JSON.toJSONString(objParams); |
|
|
|
park.setVendorParams(params); |
|
|
|
park.setParkingId(parkId); |
|
|
|
wxParkService.saveOrUpdate(park); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
*/ |
|
|
|
} |
|
|
|
*/ |
|
|
|
} |
|
|
|
|
|
|
|
if (park.getParkingId() != null) { |
|
|
|
String ret = ""; |
|
|
|
try { |
|
|
|
ret = etcp.parkingStatus(url, merchantNo, merchantKey, version, park.getParkingId()); |
|
|
|
} catch (MallinkException e) { |
|
|
|
logger.error("ETCP failed: " + e.getMessage()); |
|
|
|
return new ResultData(e.getErrorCode(), e.getMessage()); |
|
|
|
} |
|
|
|
if (park.getParkingId() != null) { |
|
|
|
String ret = ""; |
|
|
|
try { |
|
|
|
ret = etcp.parkingStatus(url, merchantNo, merchantKey, version, park.getParkingId()); |
|
|
|
} catch (MallinkException e) { |
|
|
|
logger.error("ETCP failed: " + e.getMessage()); |
|
|
|
return new ResultData(e.getErrorCode(), e.getMessage()); |
|
|
|
} |
|
|
|
|
|
|
|
JSONObject retObj = JSON.parseObject(ret); |
|
|
|
if (retObj.getIntValue("code") == EnumETCPCode.SUCCESS.getCode()) { |
|
|
|
if (retObj.get("data") != null) { |
|
|
|
return new ResultData(retObj.getJSONObject("data")); |
|
|
|
} |
|
|
|
JSONObject retObj = JSON.parseObject(ret); |
|
|
|
if (retObj.getIntValue("code") == EnumETCPCode.SUCCESS.getCode()) { |
|
|
|
if (retObj.get("data") != null) { |
|
|
|
return new ResultData(retObj.getJSONObject("data")); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
return new ResultData(ErrorCode.CAR_VENDOR_NOT_SUPPORT.getCode(), "车场不支持"); |
|
|
|
return null; |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|