Browse Source

fix haikangweishi car

release_toaliyun_real
xiaohanzi 4 years ago
parent
commit
391cd07480
6 changed files with 281 additions and 58 deletions
  1. +1
    -0
      mallinkCallback/src/main/java/com/iformall/config/ShiroConfig.java
  2. +222
    -0
      mallinkCallback/src/main/java/com/iformall/controller/callback/car/haikangweishi/WxCarHaiKangWeiShiCallBackController.java
  3. +5
    -1
      mallinkService/src/main/java/com/iformall/enums/EnumCarCmd.java
  4. +1
    -1
      mallinkService/src/main/java/com/iformall/enums/EnumCarVendor.java
  5. +24
    -54
      mallinkService/src/main/java/com/iformall/service/park/impl/haikangweishi/HaiKangWeiShiParkCallbackService.java
  6. +28
    -2
      mallinkService/src/main/java/com/iformall/service/park/impl/haikangweishi/HaiKangWeiShiUtil.java

+ 1
- 0
mallinkCallback/src/main/java/com/iformall/config/ShiroConfig.java View File

@@ -118,6 +118,7 @@ public class ShiroConfig {
filterChainDefinitionMap.put("/carCallback/**", "anon");
filterChainDefinitionMap.put("/jieshunCarCallback/**", "anon");
filterChainDefinitionMap.put("/cyfCarCallback/**", "anon");
filterChainDefinitionMap.put("/hkwsCarCallback/**", "anon");

// static files
filterChainDefinitionMap.put("/css/**", "anon");


+ 222
- 0
mallinkCallback/src/main/java/com/iformall/controller/callback/car/haikangweishi/WxCarHaiKangWeiShiCallBackController.java View File

@@ -0,0 +1,222 @@
package com.iformall.controller.callback.car.haikangweishi;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.github.pagehelper.PageInfo;
import com.iformall.common.Result;
import com.iformall.controller.base.BaseController;
import com.iformall.controller.callback.car.WxParkCallBackBaseController;
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.enums.EnumPayWay;
import com.iformall.service.*;
import com.iformall.service.park.impl.cyf.CYFUtil;
import com.iformall.service.park.impl.tjd.TJDUtil;

import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
* @author: furunxin
* @Date: 2020/7/6 15:29
* @Description: 海康威视回调接口
*/

@Slf4j
@RestController
@RequestMapping("/hkwsCarCallback")
public class WxCarHaiKangWeiShiCallBackController extends WxParkCallBackBaseController {

@Autowired
WxParkService wxParkService;

@Autowired
WxCarCmdLogService wxCarCmdLogService;

@Autowired
WxCUserService wxCUserService;

@Autowired
WxCUserCarService wxCUserCarService;

@Autowired
WxCouponSendService wxCouponSendService;

@Autowired
WxCarPayRecordService wxCarPayRecordService;

@Autowired
WxCUserBasicInfoService wxCUserBasicInfoService;
/**
* 入场事件:

{
"method":"OnEventNotify",
"params":{
"ability":"vehicle_pass_in_event",
"eventType":771760131,
"events":[
{
"crossTime":"2021-07-01T17:29:27+08:00",
"crossType":1,
"eventIndexCode":"74b64514-4888-4f42-8cf7-22fed37d5dc8",
"eventType":3,
"resource":{
"deviceId":"3715149265421676",
"deviceSerial":"R20150664",
"direction":0,
"entranceId":"2063867554789264",
"entranceName":"前门1",
"parkId":"2064637172217744",
"parkName":"车库",
"resType":"roadway",
"roadWayId":"2064272439342992",
"roadWayName":"前门入口"
},
"stopType":11,
"vehicle":{
"plateColor":12,
"plateNo":"苏A23658",
"plateType":8,
"vehicleColor":12,
"vehicleType":12
}
}
],
"sendTime":"2021-07-01T17:29:29.315+08:00"
}
}

3 出场事件:

{
"method":"OnEventNotify",
"params":{
"ability":"vehicle_pass_out_event",
"eventType":771760134,
"events":[
{
"crossTime":"2021-07-01T17:31:17+08:00",
"crossType":1,
"eventIndexCode":"a5464f46-ba7b-4059-b657-5ebc2f3774a9",
"eventType":4,
"resource":{
"deviceId":"370573791833424",
"deviceSerial":"9b1037b5-8a95-4657-81f0-edf27f71d92f",
"direction":1,
"entranceId":"2063867554789264",
"entranceName":"前门1",
"parkId":"2064637172217744",
"parkName":"车库",
"resType":"roadway",
"roadWayId":"2064664422217616",
"roadWayName":"前门出口test"
},
"stopType":11,
"vehicle":{
"plateColor":12,
"plateNo":"苏A23658",
"plateType":8,
"vehicleColor":12,
"vehicleType":12
}
}
],
"sendTime":"2021-07-01T17:31:17.337+08:00"
}
}

4 图片事件:
{
"method":"OnEventNotify",
"params":{
"ability":"vehicle_pass_out_event",
"eventType":771760144,
"events":[
{
"crossTime":"2021-07-01T17:31:17+08:00",
"crossType":1,
"eventIndexCode":"a5464f46-ba7b-4059-b657-5ebc2f3774a9",
"eventType":4,
"resource":{
"deviceId":"370573791833424",
"deviceSerial":"9b1037b5-8a95-4657-81f0-edf27f71d92f",
"direction":1,
"entranceId":"2063867554789264",
"entranceName":"前门1",
"parkId":"2064637172217744",
"parkName":"车库",
"resType":"roadway",
"roadWayId":"2064664422217616",
"roadWayName":"前门出口test"
},
"stopType":11,
"vehicle":{
"plateColor":12,
"plateNo":"苏A23658",
"plateNoPicUrl":"62834762",
"plateType":8,
"vehicleColor":12,
"vehiclePicUrl":"62834762",
"vehicleType":12
}
}
],
"sendTime":"2021-07-01T17:31:19.659+08:00"
}
}
* @param paramMap
* @return
*
* 这个接口需要你们实现的时候规定下:
1、POST格式,
2、接口返回参数JSON格式:{errcode:0, errmsg: "success",data:null}
3、接口建议接收到过车事件,立即返回接收成功
*
*/
@PostMapping(value = "/notify")
public Map notify(@RequestBody Map<String, Object> paramMap) {
log.info("["+getIpAddr()+"] hkwsCarCallback notify: " + paramMap.toString());
Map params = (Map)paramMap.get("params");
String eventType = params.get("eventType").toString();
Result result = null;
if ("771760131".equals(eventType)) {
//解析车易付参数
result = super.parkInCallBack(EnumCarVendor.CAR_HAIKANGWEISHI, EnumCarCmd.CAR_HAIKANGWEISHI_CALLBACK_PARK_IN, paramMap);
}else if ("771760134".equals(eventType)) {
result = super.parkOutCallBack(EnumCarVendor.CAR_HAIKANGWEISHI, EnumCarCmd.CAR_HAIKANGWEISHI_CALLBACK_PARK_OUT, paramMap);
}
Map retMap = new HashMap();
int errcode = 0;
String msg = "success";
if (null != result) {
if (result.code != Result.SUCCESS) {
errcode = result.code;
msg = result.message;
}
}else {
errcode = Result.ERROR;
msg = "no result.eventType["+eventType+"]";
}
retMap.put("errcode", errcode);
retMap.put("errmsg", msg);
retMap.put("data", null);
return retMap;
}
}

+ 5
- 1
mallinkService/src/main/java/com/iformall/enums/EnumCarCmd.java View File

@@ -23,7 +23,11 @@ public enum EnumCarCmd {
CAR_JIESHUN_CALLBACK_PARK_IN(624,"捷顺进场通知"),
CAR_JIESHUN_CALLBACK_PARK_OUT(625,"捷顺进场通知"),
CAR_JIESHUN_CALLBACK_UNBIND(626,"捷顺解绑车牌通知"),
CAR_JIESHUN_CALLBACK_PAID(627,"捷顺支付通知")
CAR_JIESHUN_CALLBACK_PAID(627,"捷顺支付通知"),
CAR_HAIKANGWEISHI_CALLBACK_PARK_IN(628,"捷顺进场通知"),
CAR_HAIKANGWEISHI_CALLBACK_PARK_OUT(629,"捷顺进场通知"),
CAR_HAIKANGWEISHI_CALLBACK_UNBIND(630,"捷顺解绑车牌通知"),
CAR_HAIKANGWEISHI_CALLBACK_PAID(631,"捷顺支付通知")
;

public static EnumCarCmd getEnum(Integer code) {


+ 1
- 1
mallinkService/src/main/java/com/iformall/enums/EnumCarVendor.java View File

@@ -14,7 +14,7 @@ public enum EnumCarVendor {
CAR_BOLINK(5, "BoLink",false),
CAE_CYF(6,"CYF",false),
CAR_JIESHUN(7,"JIESHUN",true),
CAR_HAIKANGWEISHI(8,"HAIKANGWEISHI",false)
CAR_HAIKANGWEISHI(8,"HAIKANGWEISHI",true)
;

public static EnumCarVendor getEnum(Integer code) {


+ 24
- 54
mallinkService/src/main/java/com/iformall/service/park/impl/haikangweishi/HaiKangWeiShiParkCallbackService.java View File

@@ -88,10 +88,9 @@ public class HaiKangWeiShiParkCallbackService extends BaseParkService implements
@Override
public List<ParkNotifyParam> parseInNoticyParam(Object param) {
Map<String,Object> paramm = (Map<String, Object>) param;
String paramsstr = (String) paramm.get("params");
JSONObject paramobject = JSONArray.parseObject(paramsstr);
if (null != paramobject) {
JSONArray list = paramobject.getJSONArray("events");
Map params = (Map) paramm.get("params");
if (null != params) {
List list = (List)params.get("events");
if (null != list && list.size() > 0 ) {
List<ParkNotifyParam> retList = new ArrayList<ParkNotifyParam>();
for (int i = 0 ; i < list.size() ; i ++) {
@@ -108,16 +107,18 @@ public class HaiKangWeiShiParkCallbackService extends BaseParkService implements
}
private ParkNotifyParam parseInNoticyParamSingle(Map<String,Object> paramMap) {
String carNumber = paramMap.get("carNumber").toString();
String parkCode = paramMap.get("parkCode").toString();
String parkName = paramMap.get("parkName").toString();
Map vehicle = (Map)paramMap.get("vehicle");
Map resource = (Map)paramMap.get("resource");
String carNumber = vehicle.get("plateNo").toString();
String parkCode = resource.get("parkId").toString();
String parkName = resource.get("parkName").toString();
String synId = paramMap.get("itemId").toString();
String entranceTime = paramMap.get("inTime").toString();
String synId = paramMap.get("eventIndexCode").toString();
String entranceTime = paramMap.get("crossTime").toString();
ParkNotifyParam p = new ParkNotifyParam();
String realCarNumber = carNumber;
p.setCarNumber(realCarNumber);
p.setCarNumber(carNumber);
p.setParkId(parkCode);
p.setParkName(parkName);
p.setSynId(synId);
@@ -172,10 +173,9 @@ public class HaiKangWeiShiParkCallbackService extends BaseParkService implements
@Override
public List<ParkNotifyParam> parseOutNoticyParam(Object param) {
Map<String,Object> paramm = (Map<String, Object>) param;
String paramsstr = (String) paramm.get("params");
JSONObject paramobject = JSONArray.parseObject(paramsstr);
if (null != paramobject) {
JSONArray list = paramobject.getJSONArray("events");
Map params = (Map) paramm.get("params");
if (null != params) {
List list = (List)params.get("events");
if (null != list && list.size() > 0 ) {
List<ParkNotifyParam> retList = new ArrayList<ParkNotifyParam>();
for (int i = 0 ; i < list.size() ; i ++) {
@@ -188,23 +188,23 @@ public class HaiKangWeiShiParkCallbackService extends BaseParkService implements
return retList;
}
}
return null;
}
private ParkNotifyParam parseOutNoticyParamSingle(Map<String, Object> paramMap) {
String carNumber = paramMap.get("carNumber").toString();
String parkCode = paramMap.get("parkCode").toString();
String parkName = paramMap.get("parkName").toString();
Map vehicle = (Map)paramMap.get("vehicle");
Map resource = (Map)paramMap.get("resource");
String carNumber = vehicle.get("plateNo").toString();
String parkCode = resource.get("parkId").toString();
String parkName = resource.get("parkName").toString();
String synId = paramMap.get("itemId").toString();
String entranceTime = paramMap.get("outTime").toString();
String synId = paramMap.get("eventIndexCode").toString();
String entranceTime = paramMap.get("crossTime").toString();
String realCarNumber = carNumber;
ParkNotifyParam p = new ParkNotifyParam();
p.setCarNumber(realCarNumber);
p.setCarNumber(carNumber);
p.setParkId(parkCode);
p.setParkName(parkName);
p.setSynId(synId);
@@ -220,7 +220,6 @@ public class HaiKangWeiShiParkCallbackService extends BaseParkService implements
// log.error("cyf outTime format error",e);
// return null;
// }
p.setFee(String.valueOf(paramMap.get("ssMoney")));
return p;
}

@@ -231,35 +230,6 @@ public class HaiKangWeiShiParkCallbackService extends BaseParkService implements

@Override
public List<ParkNotifyParam> parsePaidNoticyParam(Object param) {
Map<String,Object> paramm = (Map<String, Object>) param;
String liststr = (String) paramm.get("dataItems");
JSONArray list = JSONArray.parseArray(liststr);
if (null != list && list.size() > 0 ) {
List<ParkNotifyParam> retList = new ArrayList<ParkNotifyParam>();
for (int i = 0 ; i < list.size() ; i ++) {
Map<String,Object> map = (Map<String, Object>) list.get(i);
ParkNotifyParam ret = parsePaidNoticyParamSingle(map);
if (null != ret ) {
retList.add(ret);
}
}
return retList;
}
return null;
}
private ParkNotifyParam parsePaidNoticyParamSingle(Map<String,Object> vo) {
ParkNotifyParam p = new ParkNotifyParam();
p.setCarNumber((String) vo.get("carNumber"));
p.setParkId(String.valueOf(vo.get("parkCode")));
p.setParkOrderId((String) vo.get("itemId"));
p.setSynId((String) vo.get("itemId"));
p.setFee(vo.get("ssMoney").toString());
// try {
// p.setPayTime(jieshun.utcToLocal((String)vo.get("feesTime")));
// } catch (ParseException e) {
// e.printStackTrace();
// }
return p;
}
}

+ 28
- 2
mallinkService/src/main/java/com/iformall/service/park/impl/haikangweishi/HaiKangWeiShiUtil.java View File

@@ -43,6 +43,7 @@ public class HaiKangWeiShiUtil {
public static final String TOKEN_URL = "https://open.hikyun.com/artemis/oauth/token";
public static final String GET_FEE = "https://open.hikyun.com/api/pmsc/v1/pay/ quickGetVehicleBill";
public static final String COUPON_USE = "https://open.hikyun.com/api/pmsc/v1/coupon/addition";
public static final String SUBSCRIPTION = "https://open.hikyun.com/api/pmsc/v1/sub/subscription";

/**
@@ -98,7 +99,7 @@ public class HaiKangWeiShiUtil {
JSONObject vp = JSON.parseObject(vendroParams);
ArrayList<NameValuePair> list = new ArrayList<NameValuePair>();
list.add(new BasicNameValuePair("chargeSource", "THIRD"));//商户编号
list.add(new BasicNameValuePair("parkId", wxPark.getParkId()));
list.add(new BasicNameValuePair("parkId", wxPark.getParkingId()));
list.add(new BasicNameValuePair("plateNo", carNumber));
String retCode= ProcBussiness(GET_FEE, list, token);
if (StringUtils.isBlank(retCode)) {
@@ -145,6 +146,32 @@ public class HaiKangWeiShiUtil {
return result;
}
/**
* 消息订阅 3.1.8
* @param clientId
* @param clientSecret
* @return
*/
public JSONObject subscription(WxPark wxPark,String couponNo,String carNumber,String orderNo,String token){
String vendroParams = wxPark.getVendorParams();
JSONObject vp = JSON.parseObject(vendroParams);
ArrayList<NameValuePair> list = new ArrayList<NameValuePair>();
list.add(new BasicNameValuePair("partnerAppKey", vp.getString("AppKey")));//商户编号
list.add(new BasicNameValuePair("projectId", vp.getString("projectId")));
list.add(new BasicNameValuePair("eventTypes", carNumber));
list.add(new BasicNameValuePair("subUrl", vp.getString("subUrl")));
String retCode = ProcBussiness(SUBSCRIPTION, list,token);
if (StringUtils.isBlank(retCode)) {
throw new MallinkException(ErrorCode.SYS_SERVER_ERROR.getCode(), "haikang useCoupon error. has no result");
}
JSONObject result = JSON.parseObject(retCode);
if (result.getInteger("code") != 0 ) {
String message = result.getString("msg");
throw new MallinkException(result.getInteger("code"), "haikang useCoupon error."+message);
}
return result;
}
/*token认证登陆**/
private static String ProcLogin(String clientId,String clientSecret) {
ArrayList<NameValuePair> list = new ArrayList<NameValuePair>();
@@ -155,7 +182,6 @@ public class HaiKangWeiShiUtil {
private static String ProcBussiness(String url,ArrayList<NameValuePair> list,String token) {
try {
//TODO 11111111
String authorization = "";
return Proc(url,list,token,authorization);
} catch (Exception e) {


Loading…
Cancel
Save