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

fix jieshun

release_toaliyun_real
xiaohanzi 4 лет назад
Родитель
Сommit
7cdc18836a
4 измененных файлов: 69 добавлений и 12 удалений
  1. +8
    -1
      mallinkService/src/main/java/com/iformall/service/park/entity/ParkStopFee.java
  2. +1
    -1
      mallinkService/src/main/java/com/iformall/service/park/impl/cyf/CYFParkService.java
  3. +39
    -10
      mallinkService/src/main/java/com/iformall/service/park/impl/jieshun/JieShunParkService.java
  4. +21
    -0
      mallinkService/src/main/java/com/iformall/service/park/impl/jieshun/JieShunUtil.java

+ 8
- 1
mallinkService/src/main/java/com/iformall/service/park/entity/ParkStopFee.java Просмотреть файл

@@ -28,9 +28,10 @@ public class ParkStopFee implements Serializable{
private Map extraData=new HashMap();
/*备注**/
private String remark="";
private String sysNotice="";//系统提示,非车厂提示;
public ParkStopFee(String orderId,Date startTime,Date endTime,String fee,String appId,String payPath,Map extraData,String remark) {
public ParkStopFee(String orderId,Date startTime,Date endTime,String fee,String appId,String payPath,Map extraData,String remark,String sysNotice) {
if (!StringUtils.isBlank(orderId)) {
this.orderId = orderId;
}
@@ -55,6 +56,9 @@ public class ParkStopFee implements Serializable{
if (!StringUtils.isBlank(remark)) {
this.remark = remark;
}
if (!StringUtils.isBlank(sysNotice)) {
this.sysNotice = sysNotice;
}
}
@@ -111,4 +115,7 @@ public class ParkStopFee implements Serializable{
public void setRemark(String remark) {
this.remark = remark;
}
public String getSysNotice() {
return sysNotice;
}
}

+ 1
- 1
mallinkService/src/main/java/com/iformall/service/park/impl/cyf/CYFParkService.java Просмотреть файл

@@ -136,7 +136,7 @@ public class CYFParkService extends BaseParkService implements ParkAdapterServic
String appId = "";
String payPath = "http://wechat.cheyifu2016.com/fm-pay/#/transit?encodeURIComponent('orderNo=123&couponFee=2&actualFee=20')";
return new ResultData(new ParkStopFee(retObj.getString("orderId"), cyf.utcToLocal(String.valueOf(createTime)),
cyf.utcToLocal(String.valueOf(endTime)), String.valueOf(retObj.getDouble("fee")),appId,payPath,null,msg));
cyf.utcToLocal(String.valueOf(endTime)), String.valueOf(retObj.getDouble("fee")),appId,payPath,null,msg,null));
}else {
logger.error("cyfCarStopFee error. paramMap: {} . cyfResult: {}",JSON.toJSONString(paramMap),ret);
String msg = retObj.getString("strError");


+ 39
- 10
mallinkService/src/main/java/com/iformall/service/park/impl/jieshun/JieShunParkService.java Просмотреть файл

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


+ 21
- 0
mallinkService/src/main/java/com/iformall/service/park/impl/jieshun/JieShunUtil.java Просмотреть файл

@@ -263,6 +263,27 @@ public class JieShunUtil {
return Proc(url,null);
}
/**
* 优惠券使用完毕,0元停车费需调用次接口结清订单
* @param wxPark
* @param planId
* @param userId
* @param carNumber
* @param token
* @return
*/
public String notifyOrderResult(WxPark wxPark,String orderNo,String token) {
String vendroParams = wxPark.getVendorParams();
JSONObject vp = JSON.parseObject(vendroParams);
Map param = new HashMap();
param.put("orderNo", orderNo);//商户编号
param.put("tradeStatus", 0);//优惠券编号
param.put("isCallBack", 0);//优惠券编号
Map map = generateMap("3c.pay.notifyorderresult",param);
log.info("jieshun notifyOrderResult :" + JSON.toJSONString(map));
return ProcBussiness(PLAN_EXECUTE, wxPark.getParkId(), map, token,vp.getString("version"),vp.getString("signkey"));
}
private static String ProcBussiness(String url,String cid,Map<String,Object> param,String token,String version,String signKey) {
try {
MessageDigest md5Tool = MessageDigest.getInstance("MD5");


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