Quellcode durchsuchen

对接停车厂商车易付

release_toaliyun_real
furunxin vor 5 Jahren
Ursprung
Commit
888c47fa4d
8 geänderte Dateien mit 224 neuen und 1 gelöschten Zeilen
  1. +20
    -0
      mallinkCApi/src/main/java/com/iformall/controller/WxCarController.java
  2. +84
    -0
      mallinkCallback/src/main/java/com/iformall/controller/callback/WxCarCYFCallBackController.java
  3. +2
    -0
      mallinkService/src/main/java/com/iformall/common/ErrorCode.java
  4. +33
    -0
      mallinkService/src/main/java/com/iformall/domain/vo/WxCarCYFInfoVo.java
  5. +31
    -0
      mallinkService/src/main/java/com/iformall/domain/vo/WxCarCYFPayInfoVo.java
  6. +32
    -0
      mallinkService/src/main/java/com/iformall/domain/vo/WxCarCYFVo.java
  7. +1
    -0
      mallinkService/src/main/java/com/iformall/enums/EnumCarCmd.java
  8. +21
    -1
      mallinkService/src/main/java/com/iformall/utils/car/CYFUtil.java

+ 20
- 0
mallinkCApi/src/main/java/com/iformall/controller/WxCarController.java Datei anzeigen

@@ -3,6 +3,7 @@ package com.iformall.controller;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.extension.api.R;
import com.iformall.common.ErrorCode;
import com.iformall.common.Result;
import com.iformall.common.ResultData;
@@ -626,6 +627,8 @@ public class WxCarController extends BaseController {
return dahuaCarStopFee(paramMap, park);
} else if (park.getVendorType().equals(EnumCarVendor.CAR_BOLINK.getCode())) {
return bolinkCarStopFee(paramMap, park);
}else if (park.getVendorType().equals(EnumCarVendor.CAE_CYF.getCode())){
return cyfCarStopFee(paramMap,park);
}
return new ResultData(ErrorCode.CAR_VENDOR_NOT_SUPPORT.getCode(), "停车费获取失败");
}
@@ -715,6 +718,23 @@ public class WxCarController extends BaseController {
}
}

private ResultData cyfCarStopFee(@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为空");
}
String params = park.getVendorParams();
JSONObject objParams = JSON.parseObject(params);
String token = objParams.getString("token");
String ret = cyf.getCarStopFee(token,park.getParkingId(),carNumber);
JSONObject retObj = JSON.parseObject(ret);
if (retObj.getIntValue("result") == 1){
return new ResultData(retObj);
}else {
return new ResultData(ErrorCode.CYF_STOP_FEE_FAIL.getCode(), "停车费获取失败");
}
}

private String getETCPBusinessID(Long merchantId) {
String businessId;
WxMerchant wxMerchant = wxMerchantService.getById(merchantId);


+ 84
- 0
mallinkCallback/src/main/java/com/iformall/controller/callback/WxCarCYFCallBackController.java Datei anzeigen

@@ -1,14 +1,17 @@
package com.iformall.controller.callback;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.github.pagehelper.PageInfo;
import com.iformall.controller.base.BaseController;
import com.iformall.domain.po.*;
import com.iformall.domain.vo.WxCarCYFVo;
import com.iformall.enums.EnumCarCmd;
import com.iformall.enums.EnumCarVendor;
import com.iformall.enums.EnumCouponSendSendType;
import com.iformall.service.*;
import com.iformall.utils.car.CYFUtil;
import com.iformall.utils.car.TJDUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
@@ -151,4 +154,85 @@ public class WxCarCYFCallBackController extends BaseController {
map.put(CYFUtil.CYF_IS_RESULT, CYFUtil.CYF_SUC);
return map;
}


/**
* @description 车易付 车辆离场通知
* @Params [param]
* @return java.util.Map
* @Author furunxin
* @Date 2020/7/12 上午9:00
**/
@PostMapping(value = "/cyfParkOutCallback")
public Map cyfParkOutCallback(@RequestBody WxCarCYFVo param) {
String requestJson = JSONObject.toJSONString(param);
log.info("["+getIpAddr()+"cyfParkOutCallback: " + requestJson);
Map map = new HashMap();

Date currentDate = new Date();
WxCarCmdLog wxCarCmdLog = new WxCarCmdLog();
wxCarCmdLog.setVendorType(EnumCarVendor.CAE_CYF.getCode());
wxCarCmdLog.setCmdType(EnumCarCmd.CAR_CYF_CALLBACK_PARK_OUT.getCode());
wxCarCmdLog.setCmdJson(JSON.toJSONString(requestJson));
wxCarCmdLog.setCreateDate(currentDate);
wxCarCmdLog.setUpdateDate(currentDate);

String tenantId = null;
WxPark parkQ = new WxPark();
parkQ.setVendorType(EnumCarVendor.CAE_CYF.getCode());
parkQ.setParkId(String.valueOf(param.getParkingId()));
WxPark park = wxParkService.getByObj(parkQ);
if (park == null) {
log.error("cyfParkOutCallback: 车场未找到" + param.getParkingId());
map.put(CYFUtil.CYF_IS_RESULT, CYFUtil.CYF_ERR);
map.put(CYFUtil.CYF_ERR_MSG, "车场未找到" + param.getParkingId());
return map;
} else {
tenantId = park.getTenantId();
wxCarCmdLog.updateTenantInfo(park);
}
try {
wxCarCmdLogService.saveOrUpdate(wxCarCmdLog);
} catch (Exception e) {
log.error("cyfParkOutCallback: 入库错误" + requestJson);
map.put(CYFUtil.CYF_IS_RESULT, CYFUtil.CYF_ERR);
map.put(CYFUtil.CYF_ERR_MSG, "入库错误" + param.getParkingId());
return map;
}
try {
// 保存WxCarPayRecord
WxCarPayRecord record = new WxCarPayRecord();
record.updateTenantInfo(park);
record.setVendorType(wxCarCmdLog.getVendorType());
record.setParkId(String.valueOf(param.getParkingId()));
record.setParkName(param.getRecordOrderId());
record.setPlateNumber(param.getPlate());
record.setSynId(param.getRecordOrderId());
if(StringUtils.isNotBlank(param.getInInfo().getTime())) {
record.setEntranceTime(TJDUtil.dateOutFormat.parse(param.getInInfo().getTime()));
}
if(StringUtils.isNotBlank(param.getOutInfo().getTime())) {
record.setExitTime(TJDUtil.dateOutFormat.parse(param.getOutInfo().getTime()));
Long stayedTime = (record.getExitTime().getTime() - record.getEntranceTime().getTime())/ 1000;
record.setStayedTime(stayedTime);
}
if (StringUtils.isNotBlank(String.valueOf(param.getPayInfoList().getActualFee()))) {
record.setFee(String.valueOf(param.getPayInfoList().getActualFee()));
}
WxCarPayRecord query = new WxCarPayRecord();
query.updateTenantInfo(park);
query.setParkId(String.valueOf(param.getParkingId()));
query.setSynId(param.getRecordOrderId());
PageInfo<WxCarPayRecord> page = wxCarPayRecordService.findCarPayListByPage(query,1,1);
if(page != null && CollectionUtils.isNotEmpty(page.getList())){
record.setId(page.getList().get(0).getId());
}
wxCarPayRecordService.saveOrUpdate(record);
} catch (Exception e) {
log.error("WxCarPayRecord: 出场更新错误 " +e.getMessage()+", " +requestJson);
}

map.put(CYFUtil.CYF_IS_RESULT, CYFUtil.CYF_SUC);
return map;
}
}

+ 2
- 0
mallinkService/src/main/java/com/iformall/common/ErrorCode.java Datei anzeigen

@@ -164,6 +164,8 @@ public enum ErrorCode{
BOLINK_SIGN_ERR(2066, "泊链签名错误"),
BOLINK_STOP_FEE_FAIL(2067, "泊链停车费获取失败"),

CYF_STOP_FEE_FAIL(2068, "CYF获取停车费失败"),

/**
* 游戏
*/


+ 33
- 0
mallinkService/src/main/java/com/iformall/domain/vo/WxCarCYFInfoVo.java Datei anzeigen

@@ -0,0 +1,33 @@
package com.iformall.domain.vo;

import lombok.Data;

/**
* @author: furunxin
* @Date: 2020/7/12 08:52
* @Description:
*/

@Data
public class WxCarCYFInfoVo {

private int deviceId;

private String deviceName;

private int sentryBoxId;

private String sentryBoxName;

private int dutyId;

private String dutyName;

private String time;

private String imageUrl;

private int plateColor;

private int mode;
}

+ 31
- 0
mallinkService/src/main/java/com/iformall/domain/vo/WxCarCYFPayInfoVo.java Datei anzeigen

@@ -0,0 +1,31 @@
package com.iformall.domain.vo;

import lombok.Data;

/**
* @author: furunxin
* @Date: 2020/7/12 08:56
* @Description:
*/

@Data
public class WxCarCYFPayInfoVo {

private int actualFee;

private int couponFee;

private int shouldFee;

private int cardFee;

private int discountFee;

private int freeFee;

private int payWay;

private String payTime;

private String orderId;
}

+ 32
- 0
mallinkService/src/main/java/com/iformall/domain/vo/WxCarCYFVo.java Datei anzeigen

@@ -0,0 +1,32 @@
package com.iformall.domain.vo;

import lombok.Data;

/**
* @author: furunxin
* @Date: 2020/7/12 08:49
* @Description:
*/

@Data
public class WxCarCYFVo {
private int parkingId;

private int localInoutparkingId;

private String recordOrderId;

private String plate;

private WxCarCYFInfoVo inInfo;

private WxCarCYFInfoVo outInfo;

private int feeGroupId;

private String feeGroupName;

private String MemoMemo;

private WxCarCYFPayInfoVo payInfoList;
}

+ 1
- 0
mallinkService/src/main/java/com/iformall/enums/EnumCarCmd.java Datei anzeigen

@@ -17,6 +17,7 @@ public enum EnumCarCmd {
CAR_TJD_CALLBACK_PAID(613, "停简单支付通知"),
CAR_TJD_CALLBACK_REFUND(614, "停简单退款通知"),
CAR_CYF_CALLBACK_PARK_IN(620,"车易付进场通知"),
CAR_CYF_CALLBACK_PARK_OUT(621,"车易付进场通知"),
;

public static EnumCarCmd getEnum(Integer code) {


+ 21
- 1
mallinkService/src/main/java/com/iformall/utils/car/CYFUtil.java Datei anzeigen

@@ -49,6 +49,9 @@ public class CYFUtil {
public static final String REGISTER_CAR_URL = "http://oepn.cheyifu2016.com:8892/openapi/personCar";


public static final String GET_CAR_STOPFEE = "http://open.cheyifu2016.com:8892/openapi/getFee";


/**
* @description UTC时间转化为本地时间
* @Params [utcTime]
@@ -99,7 +102,7 @@ public class CYFUtil {
public String registerCar(String token,int carport,int feeGroupId,String parkingId,String plates,long personId,String personName){
Map<String, Object> paramMap = new HashMap<>();
paramMap.put("token ",token);
paramMap.put("parkingId",parkingId);
paramMap.put("parkingId",Integer.valueOf(parkingId));
paramMap.put("beginTime",getLocalDate());
paramMap.put("endTime",getLocalDate());
paramMap.put("feeGroupId",feeGroupId);
@@ -111,6 +114,23 @@ public class CYFUtil {
return result;
}

/**
* @description 根据车牌号获取停车费
* @Params [token, parkingId, plates]
* @return java.lang.String
* @Author furunxin
* @Date 2020/7/12 下午3:51
**/
public String getCarStopFee(String token,String parkingId,String plates){
Map<String, Object> paramMap = new HashMap<>();
paramMap.put("token ",token);
paramMap.put("parkingId",Integer.valueOf(parkingId));
paramMap.put("plates",plates);
paramMap.put("carOutTime",0);
String result = Proc(GET_CAR_STOPFEE, paramMap);
return result;
}



private static String Proc(String url, Map<String, Object> paramMap) {


Laden…
Abbrechen
Speichern