| @@ -119,6 +119,7 @@ public class ShiroConfig { | |||||
| filterChainDefinitionMap.put("/wxMsgCallback/**", "anon"); | filterChainDefinitionMap.put("/wxMsgCallback/**", "anon"); | ||||
| filterChainDefinitionMap.put("/carCallback/**", "anon"); | filterChainDefinitionMap.put("/carCallback/**", "anon"); | ||||
| filterChainDefinitionMap.put("/jieshunCarCallback/**", "anon"); | filterChainDefinitionMap.put("/jieshunCarCallback/**", "anon"); | ||||
| filterChainDefinitionMap.put("/jieshunCarCallbackV2/**", "anon"); | |||||
| filterChainDefinitionMap.put("/cyfCarCallback/**", "anon"); | filterChainDefinitionMap.put("/cyfCarCallback/**", "anon"); | ||||
| filterChainDefinitionMap.put("/hkwsCarCallback/**", "anon"); | filterChainDefinitionMap.put("/hkwsCarCallback/**", "anon"); | ||||
| filterChainDefinitionMap.put("/futeCarCallback/**", "anon"); | filterChainDefinitionMap.put("/futeCarCallback/**", "anon"); | ||||
| @@ -0,0 +1,111 @@ | |||||
| package com.iformall.controller.callback.car.jieshun; | |||||
| 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("/jieshunCarCallbackV2") | |||||
| public class WxCarJieShunV2CallBackController extends WxParkCallBackBaseController { | |||||
| @Autowired | |||||
| WxParkService wxParkService; | |||||
| @Autowired | |||||
| WxCarCmdLogService wxCarCmdLogService; | |||||
| @Autowired | |||||
| WxCUserService wxCUserService; | |||||
| @Autowired | |||||
| WxCUserCarService wxCUserCarService; | |||||
| @Autowired | |||||
| WxCouponSendService wxCouponSendService; | |||||
| @Autowired | |||||
| WxCarPayRecordService wxCarPayRecordService; | |||||
| @Autowired | |||||
| WxCUserBasicInfoService wxCUserBasicInfoService; | |||||
| /** | |||||
| * @description 捷顺 车辆入场通知 | |||||
| * {dataItems=[{"inTime":"2020-12-09 11:21:15","carNumber":"浙-AF81797","inCarPhoto":"p201127315/NISSP_IMG_PARK_IN/20201209/a9f1130651b9493f8eab64f14afbdd47","isReal":0,"itemId":"a9f1130651b9493f8eab64f14afbdd47","inOperator":"超级管理员","equipName":"东门入口","parkName":"杭州东站西子国际","vehicleInfo":"{\"plateNo\":\"浙-AF81797\",\"plateColor\":\"GREEN\",\"plateBackColor\":0,\"plateWordColor\":0,\"vehicleColor\":null,\"vehicleLogo\":null,\"vehicleModel\":null,\"mainModel\":0,\"subModel\":0,\"vehicleModelTrust\":0,\"mainModelTrust\":0,\"subModelTrust\":0,\"plateNoTrust\":1,\"vehicleLogoTrust\":0,\"vehicleColorTrust\":0}","equipCode":"208202496","parkCode":"p201127315"}], pno=dzxzgj, sn=6C958D99D2769AA16F3A3F06E962263F, tn=-2, ts=20201209112118886, ve=1.0} | |||||
| * | |||||
| * | |||||
| * | |||||
| * @Params [paramMap] | |||||
| * @return com.iformall.common.Result | |||||
| * @Author furunxin | |||||
| * @Date 2020/7/8 上午8:27 | |||||
| **/ | |||||
| @PostMapping(value = "/parkIn") | |||||
| public Result parkInCallback(@RequestBody Map<String, Object> paramMap) { | |||||
| log.info("["+getIpAddr()+"] jieshunCarCallback parkIn: " + paramMap.toString()); | |||||
| //解析车易付参数 | |||||
| return super.parkInCallBack(EnumCarVendor.CAR_JIESHUN_V2, EnumCarCmd.CAR_JIESHUN_CALLBACK_PARK_IN, paramMap); | |||||
| } | |||||
| /** | |||||
| * @description 车易付 车辆离场通知 | |||||
| * @Params [param] | |||||
| * @return java.util.Map | |||||
| * @Author furunxin | |||||
| * @Date 2020/7/12 上午9:00 | |||||
| **/ | |||||
| @PostMapping(value = "/parkOut") | |||||
| public Result parkOutCallback(@RequestBody Map<String, Object> paramMap) { | |||||
| log.info("["+getIpAddr()+"] jieshunCarCallback parkOut: " + paramMap.toString()); | |||||
| return super.parkOutCallBack(EnumCarVendor.CAR_JIESHUN_V2, EnumCarCmd.CAR_JIESHUN_CALLBACK_PARK_OUT, paramMap); | |||||
| } | |||||
| @PostMapping(value = "/unbind") | |||||
| public Result unbindCallback(@RequestBody Map<String, Object> paramMap) { | |||||
| log.info("["+getIpAddr()+"] jieshunCarCallback unbind: " + paramMap.toString()); | |||||
| //解析车易付参数 | |||||
| return super.unbindCarCallBack(EnumCarVendor.CAR_JIESHUN_V2, EnumCarCmd.CAR_JIESHUN_CALLBACK_UNBIND, paramMap); | |||||
| } | |||||
| @PostMapping(value = "/paid") | |||||
| public Result paidCallback(@RequestBody Map<String, Object> paramMap) { | |||||
| log.info("["+getIpAddr()+"] jieshunCarCallback paid: " + paramMap.toString()); | |||||
| //解析车易付参数 | |||||
| return super.paidCallback(EnumCarVendor.CAR_JIESHUN_V2, EnumCarCmd.CAR_JIESHUN_CALLBACK_PAID, paramMap); | |||||
| } | |||||
| } | |||||
| @@ -1,5 +1,7 @@ | |||||
| package com.iformall.domain.po; | package com.iformall.domain.po; | ||||
| import com.alibaba.fastjson.JSON; | |||||
| import com.alibaba.fastjson.JSONObject; | |||||
| import com.baomidou.mybatisplus.annotation.TableName; | import com.baomidou.mybatisplus.annotation.TableName; | ||||
| import com.iformall.domain.po.base.TenantEntity; | import com.iformall.domain.po.base.TenantEntity; | ||||
| import lombok.Data; | import lombok.Data; | ||||
| @@ -7,6 +9,8 @@ import lombok.EqualsAndHashCode; | |||||
| import java.util.*; | import java.util.*; | ||||
| import org.apache.commons.lang3.StringUtils; | |||||
| @TableName(value = "wx_park") | @TableName(value = "wx_park") | ||||
| @Data | @Data | ||||
| @EqualsAndHashCode(callSuper = true) | @EqualsAndHashCode(callSuper = true) | ||||
| @@ -42,4 +46,12 @@ public class WxPark extends TenantEntity { | |||||
| private Integer supportPay; | private Integer supportPay; | ||||
| @io.swagger.annotations.ApiModelProperty(value="支付完成回调地址",name="paidCallBack") | @io.swagger.annotations.ApiModelProperty(value="支付完成回调地址",name="paidCallBack") | ||||
| private String paidCallBack; | private String paidCallBack; | ||||
| public Object getVendorParamsByKey(String key) { | |||||
| if (StringUtils.isBlank(this.vendorParams)) { | |||||
| return null; | |||||
| } | |||||
| JSONObject vp = JSON.parseObject(this.vendorParams); | |||||
| return vp.get(key); | |||||
| } | |||||
| } | } | ||||
| @@ -61,10 +61,8 @@ import com.iformall.utils.RedisLock; | |||||
| 1>小程序首页 | 1>小程序首页 | ||||
| path:pages/index/index | path:pages/index/index | ||||
| 2>小程序订单页(车牌+车场编号 ) path: pages/thirdPayOrder/payOrder?carNo=车牌&parkCode=车场编号 | |||||
| 3>小程序订单页(订单编号) path: pages/thirdPayOrderByNo/payOrder?orderNo=订单编号 | |||||
| 2>小程序页面 pages/thirdPayOrderByNo/payOrder?orderNo=订单编号&freeMinute=免费离场时间(分钟数) | |||||
| */ | */ | ||||
| @Service | @Service | ||||
| @@ -193,6 +191,7 @@ public class JieShunV2ParkService extends BaseParkService implements ParkAdapter | |||||
| Double totalFee = attribute.getDouble("totalFee"); | Double totalFee = attribute.getDouble("totalFee"); | ||||
| String appId = "wx24b70f0ad2a9a89a"; | String appId = "wx24b70f0ad2a9a89a"; | ||||
| String parkOrderId = attribute.getString("orderNo"); | String parkOrderId = attribute.getString("orderNo"); | ||||
| Integer freeMinute = (Integer)park.getVendorParamsByKey("freeMinute"); | |||||
| if (totalFee <= 0 ) { | if (totalFee <= 0 ) { | ||||
| String _createTime = attribute.getString("startTime");//计费时间,格式为“yyyy-MM-dd HH:mi:ss” | String _createTime = attribute.getString("startTime");//计费时间,格式为“yyyy-MM-dd HH:mi:ss” | ||||
| String _endTime = attribute.getString("endTime");//离场时间,格式为“yyyy-MM-dd HH:mi:ss” | String _endTime = attribute.getString("endTime");//离场时间,格式为“yyyy-MM-dd HH:mi:ss” | ||||
| @@ -210,7 +209,7 @@ public class JieShunV2ParkService extends BaseParkService implements ParkAdapter | |||||
| "0.00",appId,"payPath",null,msg,null); | "0.00",appId,"payPath",null,msg,null); | ||||
| }else { | }else { | ||||
| return new ParkStopFee("-999",jieshun.utcToLocal(_createTime),jieshun.utcToLocal(_endTime), | return new ParkStopFee("-999",jieshun.utcToLocal(_createTime),jieshun.utcToLocal(_endTime), | ||||
| "0.00",appId,"payPath",null,msg,"用券抵扣后账单为0,获得15分钟免费出场时间"); | |||||
| "0.00",appId,"payPath",null,msg,"用券抵扣后账单为0,获得"+freeMinute+"分钟免费出场时间"); | |||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| @@ -228,9 +227,10 @@ public class JieShunV2ParkService extends BaseParkService implements ParkAdapter | |||||
| JSONObject retObject = retArrays.getJSONObject(0).getJSONObject("attributes"); | JSONObject retObject = retArrays.getJSONObject(0).getJSONObject("attributes"); | ||||
| String createTime = retObject.getString("startTime");//计费时间,格式为“yyyy-MM-dd HH:mi:ss” | String createTime = retObject.getString("startTime");//计费时间,格式为“yyyy-MM-dd HH:mi:ss” | ||||
| String endTime = retObject.getString("endTime");//离场时间,格式为“yyyy-MM-dd HH:mi:ss” | String endTime = retObject.getString("endTime");//离场时间,格式为“yyyy-MM-dd HH:mi:ss” | ||||
| String payPath = "pages/thirdPayOrder/payOrder?carNo="+jieshun.handleCarNumber(carNumber)+"&parkCode="+park.getParkingId(); | |||||
| String payPath = "pages/thirdPayOrderByNo/payOrder?orderNo="+parkOrderId+"&freeMinute="+freeMinute; | |||||
| //String payPath = "pages/thirdPayOrder/payOrder?carNo="+jieshun.handleCarNumber(carNumber)+"&parkCode="+park.getParkingId(); | |||||
| return new ParkStopFee(parkOrderId,jieshun.utcToLocal(createTime),jieshun.utcToLocal(endTime), | return new ParkStopFee(parkOrderId,jieshun.utcToLocal(createTime),jieshun.utcToLocal(endTime), | ||||
| String.valueOf(retObject.getDouble("totalFee")),appId,payPath,null,null,"请支付后15分钟内离场"); | |||||
| String.valueOf(retObject.getDouble("totalFee")),appId,payPath,null,null,"请支付后"+freeMinute+"分钟内离场"); | |||||
| }else { | }else { | ||||
| logger.error("jieshunCarStopFee error. paramMap: {} . jieshunResult: {}",JSON.toJSONString(paramMap),ret); | logger.error("jieshunCarStopFee error. paramMap: {} . jieshunResult: {}",JSON.toJSONString(paramMap),ret); | ||||
| String msg = retObj.getString("message"); | String msg = retObj.getString("message"); | ||||