diff --git a/mallinkCallback/src/main/java/com/iformall/config/ShiroConfig.java b/mallinkCallback/src/main/java/com/iformall/config/ShiroConfig.java index f44e37547..f787a458c 100644 --- a/mallinkCallback/src/main/java/com/iformall/config/ShiroConfig.java +++ b/mallinkCallback/src/main/java/com/iformall/config/ShiroConfig.java @@ -119,6 +119,7 @@ public class ShiroConfig { filterChainDefinitionMap.put("/wxMsgCallback/**", "anon"); filterChainDefinitionMap.put("/carCallback/**", "anon"); filterChainDefinitionMap.put("/jieshunCarCallback/**", "anon"); + filterChainDefinitionMap.put("/jieshunCarCallbackV2/**", "anon"); filterChainDefinitionMap.put("/cyfCarCallback/**", "anon"); filterChainDefinitionMap.put("/hkwsCarCallback/**", "anon"); filterChainDefinitionMap.put("/futeCarCallback/**", "anon"); diff --git a/mallinkCallback/src/main/java/com/iformall/controller/callback/car/jieshun/WxCarJieShunV2CallBackController.java b/mallinkCallback/src/main/java/com/iformall/controller/callback/car/jieshun/WxCarJieShunV2CallBackController.java new file mode 100644 index 000000000..387551485 --- /dev/null +++ b/mallinkCallback/src/main/java/com/iformall/controller/callback/car/jieshun/WxCarJieShunV2CallBackController.java @@ -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 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 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 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 paramMap) { + log.info("["+getIpAddr()+"] jieshunCarCallback paid: " + paramMap.toString()); + //解析车易付参数 + return super.paidCallback(EnumCarVendor.CAR_JIESHUN_V2, EnumCarCmd.CAR_JIESHUN_CALLBACK_PAID, paramMap); + } +} diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxPark.java b/mallinkService/src/main/java/com/iformall/domain/po/WxPark.java index 9f3a826ed..c5708c29d 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxPark.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxPark.java @@ -1,5 +1,7 @@ package com.iformall.domain.po; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.annotation.TableName; import com.iformall.domain.po.base.TenantEntity; import lombok.Data; @@ -7,6 +9,8 @@ import lombok.EqualsAndHashCode; import java.util.*; +import org.apache.commons.lang3.StringUtils; + @TableName(value = "wx_park") @Data @EqualsAndHashCode(callSuper = true) @@ -42,4 +46,12 @@ public class WxPark extends TenantEntity { private Integer supportPay; @io.swagger.annotations.ApiModelProperty(value="支付完成回调地址",name="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); + } } diff --git a/mallinkService/src/main/java/com/iformall/service/park/impl/jieshunV2/JieShunV2ParkService.java b/mallinkService/src/main/java/com/iformall/service/park/impl/jieshunV2/JieShunV2ParkService.java index 6afe04cab..dbb90cf3a 100644 --- a/mallinkService/src/main/java/com/iformall/service/park/impl/jieshunV2/JieShunV2ParkService.java +++ b/mallinkService/src/main/java/com/iformall/service/park/impl/jieshunV2/JieShunV2ParkService.java @@ -61,10 +61,8 @@ import com.iformall.utils.RedisLock; 1>小程序首页 path:pages/index/index - - 2>小程序订单页(车牌+车场编号 ) path: pages/thirdPayOrder/payOrder?carNo=车牌&parkCode=车场编号 - - 3>小程序订单页(订单编号) path: pages/thirdPayOrderByNo/payOrder?orderNo=订单编号 + + 2>小程序页面 pages/thirdPayOrderByNo/payOrder?orderNo=订单编号&freeMinute=免费离场时间(分钟数) */ @Service @@ -193,6 +191,7 @@ public class JieShunV2ParkService extends BaseParkService implements ParkAdapter Double totalFee = attribute.getDouble("totalFee"); String appId = "wx24b70f0ad2a9a89a"; String parkOrderId = attribute.getString("orderNo"); + Integer freeMinute = (Integer)park.getVendorParamsByKey("freeMinute"); 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” @@ -210,7 +209,7 @@ public class JieShunV2ParkService extends BaseParkService implements ParkAdapter "0.00",appId,"payPath",null,msg,null); }else { 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"); String createTime = retObject.getString("startTime");//计费时间,格式为“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), - String.valueOf(retObject.getDouble("totalFee")),appId,payPath,null,null,"请支付后15分钟内离场"); + String.valueOf(retObject.getDouble("totalFee")),appId,payPath,null,null,"请支付后"+freeMinute+"分钟内离场"); }else { logger.error("jieshunCarStopFee error. paramMap: {} . jieshunResult: {}",JSON.toJSONString(paramMap),ret); String msg = retObj.getString("message");