|
|
|
@@ -33,6 +33,7 @@ import com.iformall.service.park.ParkAdapterService; |
|
|
|
import com.iformall.service.park.entity.ParkStopFee; |
|
|
|
import com.iformall.service.park.impl.BaseParkService; |
|
|
|
import com.iformall.service.park.impl.util.ParkHelper; |
|
|
|
import com.iformall.service.park.utils.ParkCacheUtils; |
|
|
|
import com.iformall.utils.RedisCacheUtils; |
|
|
|
import com.iformall.utils.RedisLock; |
|
|
|
|
|
|
|
@@ -59,7 +60,7 @@ public class JieShunParkService extends BaseParkService implements ParkAdapterSe |
|
|
|
|
|
|
|
@Autowired |
|
|
|
@Qualifier("objectCommonRedisTemplate") |
|
|
|
RedisTemplate<String, Object> baseCUserTokenRedisTemplate; |
|
|
|
RedisTemplate<String, Object> redisTemplate; |
|
|
|
|
|
|
|
@Autowired |
|
|
|
RedisLock redisLock; |
|
|
|
@@ -72,7 +73,7 @@ public class JieShunParkService extends BaseParkService implements ParkAdapterSe |
|
|
|
|
|
|
|
|
|
|
|
private String getCacheToken(WxPark park) { |
|
|
|
String token = RedisCacheUtils.getCacheString(baseCUserTokenRedisTemplate, "carStop:jieshuntoken:"+park.getId()); |
|
|
|
String token = RedisCacheUtils.getCacheString(redisTemplate, "carStop:jieshuntoken:"+park.getId()); |
|
|
|
if (StringUtils.isBlank(token)) { |
|
|
|
String lockKey = "carStop:jieshuntokenlock:"+park.getTenantId(); |
|
|
|
long time = System.currentTimeMillis() + 2000; |
|
|
|
@@ -93,11 +94,11 @@ public class JieShunParkService extends BaseParkService implements ParkAdapterSe |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
return RedisCacheUtils.getCacheString(baseCUserTokenRedisTemplate, "carStop:jieshuntoken:"+park.getId()); |
|
|
|
return RedisCacheUtils.getCacheString(redisTemplate, "carStop:jieshuntoken:"+park.getId()); |
|
|
|
} |
|
|
|
|
|
|
|
private void setCacheToken(WxPark park,String token) { |
|
|
|
RedisCacheUtils.cache(baseCUserTokenRedisTemplate, "carStop:jieshuntoken:"+park.getId(), token, 3600); |
|
|
|
RedisCacheUtils.cache(redisTemplate, "carStop:jieshuntoken:"+park.getId(), token, 3600); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@@ -150,7 +151,7 @@ public class JieShunParkService extends BaseParkService implements ParkAdapterSe |
|
|
|
//如果车牌号是鄂AAAAAA, 为测试车牌 |
|
|
|
if (carNumber.equals("鄂AAAAAA")) { |
|
|
|
return new ResultData(new ParkStopFee("-111",jieshun.utcToLocal("2020-12-16 00:00:00"),jieshun.utcToLocal("2020-12-17 00:00:00"), |
|
|
|
"0.01","wx24b70f0ad2a9a89a","payPath",null,"测试车牌,仅测试用")); |
|
|
|
"0.01","wx24b70f0ad2a9a89a","payPath",null,"测试车牌,仅测试用",null)); |
|
|
|
}else if(carNumber.equals("鄂AAAAAB")) { |
|
|
|
return new ResultData(21000,"车辆未入场"); |
|
|
|
} |
|
|
|
@@ -172,6 +173,7 @@ public class JieShunParkService extends BaseParkService implements ParkAdapterSe |
|
|
|
JSONObject attribute = arrays.getJSONObject(0).getJSONObject("attributes"); |
|
|
|
Double totalFee = attribute.getDouble("totalFee"); |
|
|
|
String appId = "wx24b70f0ad2a9a89a"; |
|
|
|
String parkOrderId = attribute.getString("orderNo"); |
|
|
|
if (totalFee <= 0 ) { |
|
|
|
String _createTime = attribute.getString("startTime");//计费时间,格式为“yyyy-MM-dd HH:mi:ss” |
|
|
|
String _endTime = attribute.getString("endTime");//离场时间,格式为“yyyy-MM-dd HH:mi:ss” |
|
|
|
@@ -179,15 +181,42 @@ public class JieShunParkService extends BaseParkService implements ParkAdapterSe |
|
|
|
if (!StringUtils.isBlank(msg)) { |
|
|
|
if (msg.contains("未入场")) { |
|
|
|
return new ResultData(new ParkStopFee(null,jieshun.utcToLocal(_createTime),jieshun.utcToLocal(_endTime), |
|
|
|
"0.00",appId,"payPath",null,msg)); |
|
|
|
"0.00",appId,"payPath",null,msg,null)); |
|
|
|
}else { |
|
|
|
return new ResultData(new ParkStopFee("-999",jieshun.utcToLocal(_createTime),jieshun.utcToLocal(_endTime), |
|
|
|
"0.00",appId,"payPath",null,msg)); |
|
|
|
//0元订单结清,查询是否用过打折方案,如果用过,则需要调用接口结清订单 |
|
|
|
Integer used = ParkCacheUtils.getCarCouponUseCacheLock(redisTemplate, EnumCarVendor.CAR_JIESHUN.getMessage(), carNumber); |
|
|
|
if (null == used || (null != used && used.intValue() < 1)) { |
|
|
|
//未使用停车券 |
|
|
|
return new ResultData(new ParkStopFee("-999",jieshun.utcToLocal(_createTime),jieshun.utcToLocal(_endTime), |
|
|
|
"0.00",appId,"payPath",null,msg,null)); |
|
|
|
}else { |
|
|
|
String notifyResult = jieshun.notifyOrderResult(park, parkOrderId, getCacheToken(park)); |
|
|
|
JSONObject notiryRetObj = JSON.parseObject(notifyResult); |
|
|
|
if (notiryRetObj.getIntValue("resultCode") == 0){ |
|
|
|
JSONArray notiryRetArrays = notiryRetObj.getJSONArray("dataItems"); |
|
|
|
if (null != notiryRetArrays && notiryRetArrays.size() == 0 ) { |
|
|
|
JSONObject notifyRetObject = notiryRetArrays.getJSONObject(0).getJSONObject("attributes"); |
|
|
|
if(notifyRetObject.getIntValue("retCode") == 0) { |
|
|
|
return new ResultData(new ParkStopFee("-999",jieshun.utcToLocal(_createTime),jieshun.utcToLocal(_endTime), |
|
|
|
"0.00",appId,"payPath",null,msg,"用券抵扣后账单为0,获得15分钟免费出场时间")); |
|
|
|
}else { |
|
|
|
return new ResultData(new ParkStopFee("-999",jieshun.utcToLocal(_createTime),jieshun.utcToLocal(_endTime), |
|
|
|
"0.00",appId,"payPath",null,msg,"用券抵扣后账单为0,但是结清订单失败,无免费出场时间,请刷新")); |
|
|
|
} |
|
|
|
}else { |
|
|
|
return new ResultData(new ParkStopFee("-999",jieshun.utcToLocal(_createTime),jieshun.utcToLocal(_endTime), |
|
|
|
"0.00",appId,"payPath",null,msg,"用券抵扣后账单为0,但是结清订单失败,无免费出场时间,请刷新")); |
|
|
|
} |
|
|
|
}else { |
|
|
|
return new ResultData(new ParkStopFee("-999",jieshun.utcToLocal(_createTime),jieshun.utcToLocal(_endTime), |
|
|
|
"0.00",appId,"payPath",null,msg,"用券抵扣后账单为0,但是结清订单失败,无免费出场时间,请刷新")); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
String parkOrderId = attribute.getString("orderNo"); |
|
|
|
|
|
|
|
String ret = jieshun.getCarStopFee(park, parkOrderId, getCacheToken(park)); |
|
|
|
JSONObject retObj = JSON.parseObject(ret); |
|
|
|
if (retObj.getIntValue("resultCode") == 0){ |
|
|
|
@@ -201,7 +230,7 @@ public class JieShunParkService extends BaseParkService implements ParkAdapterSe |
|
|
|
String endTime = retObject.getString("endTime");//离场时间,格式为“yyyy-MM-dd HH:mi:ss” |
|
|
|
String payPath = "pages/thirdPayOrder/payOrder?carNo="+jieshun.handleCarNumber(carNumber)+"&parkCode="+park.getParkingId(); |
|
|
|
return new ResultData(new ParkStopFee(parkOrderId,jieshun.utcToLocal(createTime),jieshun.utcToLocal(endTime), |
|
|
|
String.valueOf(retObject.getDouble("totalFee")),appId,payPath,null,null)); |
|
|
|
String.valueOf(retObject.getDouble("totalFee")),appId,payPath,null,null,"请支付后15分钟内离场")); |
|
|
|
}else { |
|
|
|
logger.error("jieshunCarStopFee error. paramMap: {} . jieshunResult: {}",JSON.toJSONString(paramMap),ret); |
|
|
|
String msg = retObj.getString("message"); |
|
|
|
|