|
|
|
@@ -24,7 +24,9 @@ import org.apache.log4j.Logger; |
|
|
|
import org.springframework.beans.factory.annotation.Autowired; |
|
|
|
import org.springframework.web.bind.annotation.*; |
|
|
|
|
|
|
|
import java.util.Date; |
|
|
|
import java.util.HashMap; |
|
|
|
import java.util.List; |
|
|
|
import java.util.Map; |
|
|
|
|
|
|
|
@RestController |
|
|
|
@@ -43,8 +45,7 @@ public class WxCarController extends BaseController |
|
|
|
@Autowired |
|
|
|
WxCUserCarService wxCUserCarService; |
|
|
|
|
|
|
|
private WxPark getCurrentPark() { |
|
|
|
WxCUser user = getUser(); |
|
|
|
private WxPark getCurrentPark(WxCUser user) { |
|
|
|
WxPark wxPark = wxParkService.getByTenantId(user.getTenantId()); |
|
|
|
// 1, get mall's park |
|
|
|
// future use redis to optimize |
|
|
|
@@ -54,8 +55,9 @@ public class WxCarController extends BaseController |
|
|
|
@ApiOperation(value = "获取车场支持的厂家",notes="") |
|
|
|
@GetMapping("/getVendor") |
|
|
|
public ResultData getVendor() { |
|
|
|
WxCUser user = getUser(); |
|
|
|
// 1, get mall's park |
|
|
|
WxPark park = getCurrentPark(); |
|
|
|
WxPark park = getCurrentPark(user); |
|
|
|
Map map = new HashMap(); |
|
|
|
map.put("vendor", park.getVendorType()); |
|
|
|
return new ResultData(map); |
|
|
|
@@ -69,8 +71,9 @@ public class WxCarController extends BaseController |
|
|
|
@ApiOperation(value = "初始化/etcp共同登录",notes="{\"phone\":\"string\"}") |
|
|
|
@PostMapping("/init") |
|
|
|
public ResultData init(Map<String, String > paramMap) { |
|
|
|
WxCUser user = getUser(); |
|
|
|
// 1, get mall's park |
|
|
|
WxPark park = getCurrentPark(); |
|
|
|
WxPark park = getCurrentPark(user); |
|
|
|
// 2. get vendor params |
|
|
|
if (park.getVendorType() == EnumCarVendor.CAR_ETCP.getCode()) { |
|
|
|
String phone = paramMap.get("phone"); |
|
|
|
@@ -92,29 +95,9 @@ public class WxCarController extends BaseController |
|
|
|
// 获取绑定的车牌 |
|
|
|
JSONObject dataObj = retObj.getJSONObject("data"); |
|
|
|
String etcpToken = dataObj.getString("token"); |
|
|
|
ret = etcp.carNum(url, merchantNo, merchantKey, version, etcpToken); |
|
|
|
/* |
|
|
|
{ |
|
|
|
"code": 0, |
|
|
|
"msg": "ok", |
|
|
|
"data": { |
|
|
|
"number": 3, |
|
|
|
"carList": [ |
|
|
|
"晋 BMZ105", |
|
|
|
"云 C12345" |
|
|
|
] |
|
|
|
} |
|
|
|
} |
|
|
|
*/ |
|
|
|
retObj = JSON.parseObject(ret); |
|
|
|
JSONObject dataObj1 = retObj.getJSONObject("data"); |
|
|
|
dataObj1.put("vendor", park.getVendorType()); |
|
|
|
JSONArray arr = dataObj1.getJSONArray("carList"); |
|
|
|
for(int i=0;i<arr.size();i++) { |
|
|
|
// TODO save car |
|
|
|
// check carNum+cUserId是否存在, 不存在新建 |
|
|
|
// wxCUserCarService.saveOrUpdate(); |
|
|
|
} |
|
|
|
JSONObject dataObj1 = syncCarNumbers(user.getId(), user.getTenantId(), park.getVendorType(), |
|
|
|
url, merchantNo, merchantKey, version, |
|
|
|
etcpToken); |
|
|
|
// c端必须保存此token |
|
|
|
return new ResultData(dataObj1); |
|
|
|
} else { |
|
|
|
@@ -129,6 +112,72 @@ public class WxCarController extends BaseController |
|
|
|
return new ResultData(ErrorCode.CAR_VENDOR_NOT_SUPPORT.getCode(), "登录失败"); |
|
|
|
} |
|
|
|
|
|
|
|
private JSONObject syncCarNumbers(Long cUserId, String tenantId, int iVendorType, |
|
|
|
String url, String merchantNo, String merchantKey, String version, |
|
|
|
String etcpToken) { |
|
|
|
String ret; |
|
|
|
JSONObject retObj; |
|
|
|
ret = etcp.carNum(url, merchantNo, merchantKey, version, etcpToken); |
|
|
|
/*{"code": 0,"msg": "ok","data": {"number": 3,"carList": ["晋 BMZ105","云 C12345"]}} */ |
|
|
|
retObj = JSON.parseObject(ret); |
|
|
|
JSONObject dataObj1 = retObj.getJSONObject("data"); |
|
|
|
dataObj1.put("vendor", iVendorType); |
|
|
|
JSONArray arr = dataObj1.getJSONArray("carList"); |
|
|
|
WxCUserCar queryUserCar = new WxCUserCar(); |
|
|
|
queryUserCar.setCUserId(cUserId); |
|
|
|
List<WxCUserCar> uclist = wxCUserCarService.getList(queryUserCar); |
|
|
|
// 删除ETCP不存在 |
|
|
|
for(WxCUserCar userCar: uclist) { |
|
|
|
boolean bExist = isExistInArray(arr, userCar.getCarNumber()); |
|
|
|
if (!bExist) { |
|
|
|
wxCUserCarService.deleteById(userCar.getId()); |
|
|
|
uclist.remove(userCar); |
|
|
|
} |
|
|
|
} |
|
|
|
// 添加ETCP的 |
|
|
|
for(int i=0;i<arr.size();i++) { |
|
|
|
String _carNum = arr.getString(i); |
|
|
|
boolean bExist = isExistInList(uclist, _carNum); |
|
|
|
if(!bExist) { |
|
|
|
Date curr = new Date(); |
|
|
|
WxCUserCar userCar = new WxCUserCar(); |
|
|
|
userCar.setCUserId(cUserId); |
|
|
|
userCar.setTenantId(tenantId); |
|
|
|
userCar.setCarNumber(_carNum); |
|
|
|
userCar.setVendorType(EnumCarVendor.CAR_ETCP.getCode()); |
|
|
|
userCar.setCreateDate(curr); |
|
|
|
userCar.setUpdateDate(curr); |
|
|
|
wxCUserCarService.saveOrUpdate(userCar); |
|
|
|
} |
|
|
|
} |
|
|
|
return dataObj1; |
|
|
|
} |
|
|
|
|
|
|
|
private boolean isExistInArray(JSONArray arr, String carNumber) { |
|
|
|
boolean bExist = false; |
|
|
|
for(int i=0;i<arr.size();i++) { |
|
|
|
// check carNum+cUserId是否存在, 不存在新建 |
|
|
|
String _carNum = arr.getString(i); |
|
|
|
|
|
|
|
if (carNumber.equals(_carNum)) { |
|
|
|
bExist = true; |
|
|
|
break; |
|
|
|
} |
|
|
|
} |
|
|
|
return bExist; |
|
|
|
} |
|
|
|
|
|
|
|
private boolean isExistInList(List<WxCUserCar> list, String carNumber) { |
|
|
|
boolean bExist = false; |
|
|
|
for(WxCUserCar userCar: list) { |
|
|
|
if(carNumber.equals(userCar.getCarNumber())) { |
|
|
|
bExist = true; |
|
|
|
break; |
|
|
|
} |
|
|
|
} |
|
|
|
return bExist; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 绑车牌 |
|
|
|
* @param paramMap |
|
|
|
@@ -138,8 +187,9 @@ public class WxCarController extends BaseController |
|
|
|
"TJD:={\"carNumber\":\"string\",\"carNumColor\":\"string\",\"outCarId\":\"string\"}") |
|
|
|
@PostMapping("/bindCar") |
|
|
|
public ResultData bindCar(Map<String, String > paramMap) { |
|
|
|
WxCUser user = getUser(); |
|
|
|
// 1, get mall's park |
|
|
|
WxPark park = getCurrentPark(); |
|
|
|
WxPark park = getCurrentPark(user); |
|
|
|
// 2. get vendor params |
|
|
|
if (park.getVendorType() == EnumCarVendor.CAR_ETCP.getCode()) { |
|
|
|
String etcpToken = paramMap.get("etcpToken"); |
|
|
|
@@ -162,7 +212,16 @@ public class WxCarController extends BaseController |
|
|
|
String ret = etcp.bindCar(url, merchantNo, merchantKey, version, etcpToken, carNumber, null); |
|
|
|
JSONObject retObj = JSON.parseObject(ret); |
|
|
|
if (retObj.getIntValue("code") == 0) { |
|
|
|
// TODO insert carNumber |
|
|
|
// 插入车牌 |
|
|
|
Date curr = new Date(); |
|
|
|
WxCUserCar userCar = new WxCUserCar(); |
|
|
|
userCar.setCUserId(user.getId()); |
|
|
|
userCar.setTenantId(user.getTenantId()); |
|
|
|
userCar.setCarNumber(carNumber); |
|
|
|
userCar.setVendorType(EnumCarVendor.CAR_ETCP.getCode()); |
|
|
|
userCar.setCreateDate(curr); |
|
|
|
userCar.setUpdateDate(curr); |
|
|
|
wxCUserCarService.saveOrUpdate(userCar); |
|
|
|
JSONObject dataObj = retObj.getJSONObject("data"); |
|
|
|
dataObj.put("vendor", park.getVendorType()); |
|
|
|
return new ResultData(dataObj); |
|
|
|
@@ -174,17 +233,19 @@ public class WxCarController extends BaseController |
|
|
|
else if (park.getVendorType() == EnumCarVendor.CAR_TJD.getCode()) { |
|
|
|
String carNumber = paramMap.get("carNumber"); |
|
|
|
if (StringUtils.isBlank(carNumber)) { |
|
|
|
logger.error("carNumber为空"); |
|
|
|
return new ResultData(ErrorCode.PARAMETER_NOT_NULL.getCode(), "carNumber为空"); |
|
|
|
} |
|
|
|
String carNumColor = paramMap.get("carNumColor"); |
|
|
|
if (StringUtils.isBlank(carNumColor)) { |
|
|
|
logger.error("carNumColor为空"); |
|
|
|
return new ResultData(ErrorCode.PARAMETER_NOT_NULL.getCode(), "carNumColor为空"); |
|
|
|
} |
|
|
|
String outCarId = paramMap.get("outCarId"); |
|
|
|
if (StringUtils.isBlank(outCarId)) { |
|
|
|
logger.error("outCarId为空"); |
|
|
|
return new ResultData(ErrorCode.PARAMETER_NOT_NULL.getCode(), "outCarId为空"); |
|
|
|
} |
|
|
|
// TODO insert carNumber |
|
|
|
String params = park.getVendorParams(); |
|
|
|
JSONObject objParams = JSON.parseObject(params); |
|
|
|
String url = objParams.getString("url"); |
|
|
|
@@ -206,8 +267,20 @@ public class WxCarController extends BaseController |
|
|
|
JSONObject retObj = JSON.parseObject(ret); |
|
|
|
retObj.put("vendor", park.getVendorType()); |
|
|
|
if (retObj.getString("returnCode") == "T") { |
|
|
|
// TODO save car id |
|
|
|
String carId = retObj.getString("carId"); |
|
|
|
// 插入车牌 |
|
|
|
Date curr = new Date(); |
|
|
|
WxCUserCar userCar = new WxCUserCar(); |
|
|
|
userCar.setCUserId(user.getId()); |
|
|
|
userCar.setTenantId(user.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); |
|
|
|
wxCUserCarService.saveOrUpdate(userCar); |
|
|
|
return new ResultData(retObj); |
|
|
|
} else { |
|
|
|
return new ResultData(ErrorCode.TJD_BIND_FAIL.getCode(), "绑车牌失败", retObj); |
|
|
|
@@ -225,15 +298,18 @@ public class WxCarController extends BaseController |
|
|
|
"TJD:={\"carNumber\":\"string\",\"carNumColor\":\"string\",\"outCarId\":\"string\"}") |
|
|
|
@PostMapping("/unbindCar") |
|
|
|
public ResultData unbindCar(Map<String, String > paramMap) { |
|
|
|
WxCUser user = getUser(); |
|
|
|
// 1, get mall's park |
|
|
|
WxPark park = getCurrentPark(); |
|
|
|
WxPark park = getCurrentPark(user); |
|
|
|
if (park.getVendorType() == EnumCarVendor.CAR_ETCP.getCode()) { |
|
|
|
String etcpToken = paramMap.get("etcpToken"); |
|
|
|
if (StringUtils.isBlank(etcpToken)) { |
|
|
|
logger.error("etcpToken为空"); |
|
|
|
return new ResultData(ErrorCode.PARAMETER_NOT_NULL.getCode(), "etcpToken为空"); |
|
|
|
} |
|
|
|
String carNumber = paramMap.get("carNumber"); |
|
|
|
if (StringUtils.isBlank(carNumber)) { |
|
|
|
logger.error("carNumber为空"); |
|
|
|
return new ResultData(ErrorCode.PARAMETER_NOT_NULL.getCode(), "carNumber为空"); |
|
|
|
} |
|
|
|
String params = park.getVendorParams(); |
|
|
|
@@ -247,9 +323,14 @@ public class WxCarController extends BaseController |
|
|
|
String ret = etcp.unbindCar(url, merchantNo, merchantKey, version, etcpToken, carNumber); |
|
|
|
JSONObject retObj = JSON.parseObject(ret); |
|
|
|
if (retObj.getIntValue("code") == 0) { |
|
|
|
// TODO delete carNumber |
|
|
|
WxCUserCar userCar = new WxCUserCar(); |
|
|
|
userCar.setCUserId(user.getId()); |
|
|
|
userCar.setTenantId(user.getTenantId()); |
|
|
|
userCar.setCarNumber(carNumber); |
|
|
|
wxCUserCarService.deleteByObj(userCar); |
|
|
|
return new ResultData(); |
|
|
|
} else { |
|
|
|
logger.error("解绑车牌失败"); |
|
|
|
return new ResultData(ErrorCode.ETCP_UNBIND_FAIL.getCode(), "解绑车牌失败"); |
|
|
|
} |
|
|
|
} |
|
|
|
@@ -258,35 +339,42 @@ public class WxCarController extends BaseController |
|
|
|
if (StringUtils.isBlank(carNumber)) { |
|
|
|
return new ResultData(ErrorCode.PARAMETER_NOT_NULL.getCode(), "carNumber为空"); |
|
|
|
} |
|
|
|
String carId = paramMap.get("carId"); |
|
|
|
if (StringUtils.isBlank(carId)) { |
|
|
|
return new ResultData(ErrorCode.PARAMETER_NOT_NULL.getCode(), "carId为空"); |
|
|
|
} |
|
|
|
// TODO to get TJD carId |
|
|
|
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.writeOffCar(url, partner, key, version, carId); |
|
|
|
/* |
|
|
|
{ |
|
|
|
"timestamp": "1464235239561", |
|
|
|
"returnCode": "T", |
|
|
|
"errorMsg": "", |
|
|
|
"returnMsg": "OK", |
|
|
|
"isSuccess": "0", |
|
|
|
"carId": "5836b8b52ada463ebc6199579f029561" |
|
|
|
} |
|
|
|
*/ |
|
|
|
JSONObject retObj = JSON.parseObject(ret); |
|
|
|
if (retObj.getString("returnCode") == "T") { |
|
|
|
// TODO remove carNumber |
|
|
|
return new ResultData(); |
|
|
|
} else { |
|
|
|
return new ResultData(ErrorCode.TJD_UNBIND_FAIL, "解绑车牌失败"); |
|
|
|
WxCUserCar queryOne = new WxCUserCar(); |
|
|
|
queryOne.setCarNumber(carNumber); |
|
|
|
queryOne.setTenantId(user.getTenantId()); |
|
|
|
queryOne.setCUserId(user.getId()); |
|
|
|
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); |
|
|
|
|
|
|
|
/* |
|
|
|
{ |
|
|
|
"timestamp": "1464235239561", |
|
|
|
"returnCode": "T", |
|
|
|
"errorMsg": "", |
|
|
|
"returnMsg": "OK", |
|
|
|
"isSuccess": "0", |
|
|
|
"carId": "5836b8b52ada463ebc6199579f029561" |
|
|
|
} |
|
|
|
*/ |
|
|
|
JSONObject retObj = JSON.parseObject(ret); |
|
|
|
if (retObj.getString("returnCode") == "T") { |
|
|
|
wxCUserCarService.deleteByObj(userCar); |
|
|
|
return new ResultData(); |
|
|
|
} else { |
|
|
|
return new ResultData(ErrorCode.TJD_UNBIND_FAIL, "解绑车牌失败"); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
return new ResultData(ErrorCode.CAR_VENDOR_NOT_SUPPORT.getCode(), "解绑车牌失败"); |
|
|
|
} |
|
|
|
@@ -300,8 +388,9 @@ public class WxCarController extends BaseController |
|
|
|
"TJD:={\"carNumber\":\"string\",\"carNumColor\":\"string\",\"outCarId\":\"string\"}") |
|
|
|
@PostMapping("/getCarStopFee") |
|
|
|
public ResultData getCarStopFee(Map<String, String > paramMap) { |
|
|
|
WxCUser user = getUser(); |
|
|
|
// 1, get mall's park |
|
|
|
WxPark park = getCurrentPark(); |
|
|
|
WxPark park = getCurrentPark(user); |
|
|
|
if (park.getVendorType() == EnumCarVendor.CAR_ETCP.getCode()) { |
|
|
|
String etcpToken = paramMap.get("etcpToken"); |
|
|
|
String carNumber = paramMap.get("carNumber"); |
|
|
|
@@ -400,8 +489,9 @@ public class WxCarController extends BaseController |
|
|
|
@ApiOperation("停车费抵扣") |
|
|
|
@PostMapping("/deductionFee") |
|
|
|
public ResultData deductionFee(Map<String, String > paramMap) { |
|
|
|
WxCUser user = getUser(); |
|
|
|
/// 1, get mall's park |
|
|
|
WxPark park = getCurrentPark(); |
|
|
|
WxPark park = getCurrentPark(user); |
|
|
|
if (park.getVendorType() == EnumCarVendor.CAR_TJD.getCode()) { |
|
|
|
String tradeId = paramMap.get("tradeId"); |
|
|
|
String deductionAmount = paramMap.get("deductionAmount"); |
|
|
|
@@ -468,8 +558,9 @@ public class WxCarController extends BaseController |
|
|
|
@ApiOperation("优免券模板") |
|
|
|
@PostMapping("/quanTemplate") |
|
|
|
public ResultData quanTemplate(Map<String, String > paramMap) { |
|
|
|
WxCUser user = getUser(); |
|
|
|
/// 1, get mall's park |
|
|
|
WxPark park = getCurrentPark(); |
|
|
|
WxPark park = getCurrentPark(user); |
|
|
|
if (park.getVendorType() == EnumCarVendor.CAR_ETCP.getCode()) { |
|
|
|
String params = park.getVendorParams(); |
|
|
|
JSONObject objParams = JSON.parseObject(params); |
|
|
|
@@ -519,8 +610,9 @@ public class WxCarController extends BaseController |
|
|
|
@ApiOperation(value = "优免券领取", notes="ETCP:={\"etcpToken\":\"string\",\"carNumber\":\"string\",\"couponFreeId\":\"string\"}") |
|
|
|
@PostMapping("/getCoupon") |
|
|
|
public ResultData getCoupon(Map<String, String > paramMap) { |
|
|
|
WxCUser user = getUser(); |
|
|
|
/// 1, get mall's park |
|
|
|
WxPark park = getCurrentPark(); |
|
|
|
WxPark park = getCurrentPark(user); |
|
|
|
if (park.getVendorType() == EnumCarVendor.CAR_ETCP.getCode()) { |
|
|
|
String etcpToken = paramMap.get("etcpToken"); |
|
|
|
String carNumber = paramMap.get("carNumber"); |
|
|
|
|