Browse Source

[车流][修复]:车流数据库操作

release_toaliyun_real
Stormeye.Wu 7 years ago
parent
commit
e3f606cd01
4 changed files with 183 additions and 74 deletions
  1. +157
    -65
      mallinkCApi/src/main/java/com/simple/controller/WxCarController.java
  2. +3
    -3
      mallinkCApi/src/main/resources/application-dev.yml
  3. +12
    -5
      mallinkService/src/main/java/com/simple/service/WxCUserCarService.java
  4. +11
    -1
      mallinkService/src/main/java/com/simple/service/impl/WxCUserCarServiceImpl.java

+ 157
- 65
mallinkCApi/src/main/java/com/simple/controller/WxCarController.java View File

@@ -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");


+ 3
- 3
mallinkCApi/src/main/resources/application-dev.yml View File

@@ -1,9 +1,9 @@
spring:
# JDBC
datasource:
url: jdbc:mysql://localhost:3306/mallink?characterEncoding=UTF-8&useSSL=false
username: userone
password: 123456
url: jdbc:mysql://202.165.179.86:3306/mallink?characterEncoding=UTF-8&useSSL=false
username: mallone
password: m@1l0ne123@#
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.jdbc.Driver
filters: stat


+ 12
- 5
mallinkService/src/main/java/com/simple/service/WxCUserCarService.java View File

@@ -23,6 +23,13 @@ public interface WxCUserCarService {
* @return
*/
List<WxCUserCar> getList(WxCUserCar record);

/**
* 根据实体查询
* @param record
* @return
*/
WxCUserCar getOne(WxCUserCar record);
/**
* 根据Id获得实体
@@ -45,12 +52,12 @@ public interface WxCUserCarService {
* @param id
*/
void deleteById(Long id);

/**
* 根据WxCUserCar删除实体
* @param record
*/
void deleteByObj(WxCUserCar record);
}

+ 11
- 1
mallinkService/src/main/java/com/simple/service/impl/WxCUserCarServiceImpl.java View File

@@ -27,6 +27,12 @@ public class WxCUserCarServiceImpl implements WxCUserCarService {
return wxCUserCarMapper.findList(record);
}

@Override
public WxCUserCar getOne(WxCUserCar record) {
return wxCUserCarMapper.selectOne(record);
}


@Override
public WxCUserCar getById(Long id) {
return wxCUserCarMapper.selectByPrimaryKey(id);
@@ -35,7 +41,6 @@ public class WxCUserCarServiceImpl implements WxCUserCarService {
@Override
public void saveOrUpdate(WxCUserCar record) {
if (record.getId() == null) {
//record.setId(UUID.randomUUID().toString().replaceAll("-", ""));
final IdWorker idWorker = IdWorker.get();
record.setId(idWorker.nextId());
wxCUserCarMapper.insertSelective(record);
@@ -48,6 +53,11 @@ public class WxCUserCarServiceImpl implements WxCUserCarService {
public void deleteById(Long id) {
wxCUserCarMapper.deleteByPrimaryKey(id);
}

@Override
public void deleteByObj(WxCUserCar record) {
wxCUserCarMapper.delete(record);
}


Loading…
Cancel
Save