diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxCarController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxCarController.java index b9ae3c7dc..f957c6422 100644 --- a/mallinkCApi/src/main/java/com/iformall/controller/WxCarController.java +++ b/mallinkCApi/src/main/java/com/iformall/controller/WxCarController.java @@ -15,12 +15,14 @@ import com.iformall.exception.MallinkException; import com.iformall.service.*; import com.iformall.utils.car.DaHuaUtil; import com.iformall.utils.car.ETCPUtil; +import com.iformall.utils.car.ShangAnUtil; import com.iformall.utils.car.TJDUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import org.apache.commons.lang3.StringUtils; +import org.apache.tomcat.jni.Error; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -698,8 +700,11 @@ public class WxCarController extends BaseController { * 优免券领取 * 优免券不可退 */ - @ApiOperation(value = "停车券使用", notes = "ETCP:={\"etcpToken\":\"string(ETCP专用)\",\"carNumber\":\"string\",\"couponOrderId\"=\"String\"},输出\n{}\n" + - "TJD:{\"carNumber\":\"string\",\"tradeId\":\"string\",\"accountId\":\"string\",\"couponOrderId\":\"string\"}") + @ApiOperation(value = "停车券使用", + notes = "ETCP:={\"etcpToken\":\"string(ETCP专用)\",\"carNumber\":\"string\",\"couponOrderId\"=\"String\"},输出\n{}\n" + + "TJD:{\"carNumber\":\"string\",\"tradeId\":\"string\",\"accountId\":\"string\",\"couponOrderId\":\"string\"}" + + "ShangAn:{\"carNumber\":\"string\",\"couponOrderId\":\"string\"}" + ) @PostMapping("/getCoupon") public ResultData getCoupon(@RequestBody Map paramMap) { /// 1, get mall's park @@ -731,7 +736,7 @@ public class WxCarController extends BaseController { userCar = list.get(0); } - if (park.getVendorType() == EnumCarVendor.CAR_ETCP.getCode()) { + if (park.getVendorType().equals(EnumCarVendor.CAR_ETCP.getCode())) { String etcpToken = paramMap.get("etcpToken"); if (StringUtils.isBlank(etcpToken)) { return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "etcpToken为空"); @@ -783,7 +788,7 @@ public class WxCarController extends BaseController { } else { return new ResultData(ErrorCode.ETCP_QUAN_SEND_FAIL.getCode(), retObj.getString("message")); } - } else if (park.getVendorType() == EnumCarVendor.CAR_TJD.getCode()) { + } else if (park.getVendorType().equals(EnumCarVendor.CAR_TJD.getCode())) { String tradeId = paramMap.get("tradeId"); String accountId = paramMap.get("accountId"); if (StringUtils.isBlank(tradeId)) { @@ -803,14 +808,48 @@ public class WxCarController extends BaseController { String key = objParams.getString(TJDUtil.TJD_ACCOUNT_KEY); String version = objParams.getString(TJDUtil.TJD_VERSION); + String amount = ""; + if (coupon.getUnit().equals(EnumCouponUnit.MONEY.getCode())) { + amount = coupon.getPriceStr(); + } else { + amount = String.valueOf(coupon.getPrice()* 60); + } + String ret = tjd.deductionForDetail(url, partner, key, version, - tradeId, accountId, userCar, coupon); + tradeId, accountId, String.valueOf(userCar.getId()), + coupon.getUnit().toString(), amount); JSONObject retObj = JSON.parseObject(ret); if (retObj.getString(TJDUtil.TJD_RETURN_CODE).equalsIgnoreCase(EnumTJDCode.SUCCESS.getMessage())) { return new ResultData(); } else { return new ResultData(ErrorCode.TJD_DEDUCE_FEE_FAIL.getCode(), "停车费抵扣失败"); } + } else if (park.getVendorType().equals(EnumCarVendor.CAR_SHANGAN.getCode())) { + WxCoupon coupon = couponService.getById(userCar.getCouponId()); + if (coupon == null) { + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "券为空"); + } + String params = park.getVendorParams(); + JSONObject objParams = JSON.parseObject(params); + String url = objParams.getString(ShangAnUtil.SHANGAN_URL); + String key = objParams.getString(ShangAnUtil.SHANGAN_KEY); + String parkNumber = objParams.getString(ShangAnUtil.SHANGAN_PARK_NUMBER); + + String couponModelId = coupon.getUnit().toString(); + String position = ""; + if (coupon.getUnit().equals(EnumCouponUnit.MONEY.getCode())) { + position = coupon.getPrice().toString(); + } else { + position = String.valueOf(coupon.getPrice()* 60); + } + + String ret = ShangAnUtil.couponSend(url, key, parkNumber, couponModelId, userCar.getExpiredTime(), carNumber, position); + JSONObject retObj = JSON.parseObject(ret); + if (retObj.getString(ShangAnUtil.SHANGAN_STATUS).equalsIgnoreCase(ShangAnUtil.SHANGAN_SUCCESS)) { + return new ResultData(); + } else { + return new ResultData(ErrorCode.SHANGAN_COUPON_FAIL.getCode(), retObj.getString(ShangAnUtil.SHANGAN_ERROR_CODE)); + } } return new ResultData(ErrorCode.CAR_VENDOR_NOT_SUPPORT.getCode(), "优免券领取失败"); } diff --git a/mallinkService/src/main/java/com/iformall/common/ErrorCode.java b/mallinkService/src/main/java/com/iformall/common/ErrorCode.java index d90ae549a..f484b9c48 100644 --- a/mallinkService/src/main/java/com/iformall/common/ErrorCode.java +++ b/mallinkService/src/main/java/com/iformall/common/ErrorCode.java @@ -156,6 +156,8 @@ public enum ErrorCode{ TJD_STOP_FEE_FAIL(2062, "TJD停车费失败"), TJD_DEDUCE_FEE_FAIL(2063, "TJD停车费抵扣失败"), + SHANGAN_COUPON_FAIL(2070, "优惠券失败"), + /** * 游戏 diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumCarVendor.java b/mallinkService/src/main/java/com/iformall/enums/EnumCarVendor.java index 55ad1c299..b440f1545 100644 --- a/mallinkService/src/main/java/com/iformall/enums/EnumCarVendor.java +++ b/mallinkService/src/main/java/com/iformall/enums/EnumCarVendor.java @@ -10,6 +10,7 @@ public enum EnumCarVendor { CAR_ETCP(1, "ETCP"), CAR_TJD(2, "TJD"), CAR_DAHUA(3, "DAHUA"), + CAR_SHANGAN(4, "ShangAn"), ; public static EnumCarVendor getEnum(Integer code) { diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumCouponUnit.java b/mallinkService/src/main/java/com/iformall/enums/EnumCouponUnit.java new file mode 100644 index 000000000..0b36634e0 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/enums/EnumCouponUnit.java @@ -0,0 +1,37 @@ +package com.iformall.enums; + +/** + * Created by Stormeye on 2018/08/09. + */ +public enum EnumCouponUnit { + + // 0:rmb分 1:小时 + MONEY(0, "单位:分(人民币)"), + HOUR(1, "单位;小时") + ; + + public static EnumCouponUnit getEnum(Integer code) { + for (EnumCouponUnit value : values()) { + if (value.getCode().equals(code)) { + return value; + } + } + return null; + } + + private Integer code; + private String message; + + EnumCouponUnit(Integer code, String message) { + this.code = code; + this.message = message; + } + + public Integer getCode() { + return code; + } + + public String getMessage() { + return message; + } +} diff --git a/mallinkService/src/main/java/com/iformall/utils/car/ShangAnUtil.java b/mallinkService/src/main/java/com/iformall/utils/car/ShangAnUtil.java index bd0d5452b..a81826dce 100644 --- a/mallinkService/src/main/java/com/iformall/utils/car/ShangAnUtil.java +++ b/mallinkService/src/main/java/com/iformall/utils/car/ShangAnUtil.java @@ -28,16 +28,23 @@ import java.util.Map; * 尚安停车 */ public class ShangAnUtil { - private final static Logger logger = LoggerFactory.getLogger(ShangAnUtil.class); + public static final String SHANGAN_URL = "url"; + public static final String SHANGAN_KEY = "key"; + public static final String SHANGAN_PARK_NUMBER = "parkNumber"; + public static final String KEY = "NzMFFDDJDIFACACCM2zAezDz"; public static final String PARK_NUMBER = "p190829183435"; public static final String URL = "http://www.p-share.com/shangan-yhq/web/api/outcoupon"; - public static final String SUCCESS = "success"; + public static final String SHANGAN_STATUS = "status"; + public static final String SHANGAN_SUCCESS = "success"; + public static final String SHANGAN_FAIL = "fail"; + public static final String SHANGAN_ERROR_CODE = "errorCode"; + public static final SimpleDateFormat dateInFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); diff --git a/mallinkService/src/main/java/com/iformall/utils/car/TJDUtil.java b/mallinkService/src/main/java/com/iformall/utils/car/TJDUtil.java index 62089fd95..4dc2c2507 100644 --- a/mallinkService/src/main/java/com/iformall/utils/car/TJDUtil.java +++ b/mallinkService/src/main/java/com/iformall/utils/car/TJDUtil.java @@ -3,8 +3,7 @@ package com.iformall.utils.car; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; -import com.iformall.domain.po.WxCoupon; -import com.iformall.domain.po.WxCouponOrder; +import com.iformall.enums.EnumCouponUnit; import com.iformall.utils.MapUtil; import org.apache.http.Consts; import org.apache.http.HttpEntity; @@ -378,7 +377,7 @@ public class TJDUtil { public static String deductionForDetail( String url, String partner, String key, String version, String tradeId, String accountId, - WxCouponOrder couponOrder, WxCoupon coupon) { + String couponOrderId, String couponType, String reduceAmount) { // 为指定订单抵扣停车费,如果此时车辆已经出场,返回isSuccess错误码为3,停简单系统不再接收此笔抵扣信息,对方系统 需要给用户发起退款。 String service = "parkhub.order.deductionForDetail"; Map paramMap = MapUtil.getOrderMap(); @@ -388,17 +387,16 @@ public class TJDUtil { JSONArray detailArr = new JSONArray(); JSONObject detailObj = new JSONObject(); - detailObj.put(TJD_OUT_TRADE_NO, String.valueOf(couponOrder.getId())); + detailObj.put(TJD_OUT_TRADE_NO, couponOrderId); detailObj.put(TJD_TYPE, TJD_TYPE_COUPON); detailObj.put(TJD_CHANNEL, "2204"); String memo = "会员优惠券"; - if (coupon.getUnit().equals(0)) { - detailObj.put(TJD_COUPON_TYPE, "0"); - detailObj.put(TJD_AMOUNT, coupon.getPriceStr()); + detailObj.put(TJD_COUPON_TYPE, couponType); + if (couponType.equals(String.valueOf(EnumCouponUnit.MONEY.getCode()))) { + detailObj.put(TJD_AMOUNT, reduceAmount); memo += "-金额"; } else { - detailObj.put(TJD_COUPON_TYPE, "1"); - detailObj.put(TJD_MINUTES, String.valueOf(coupon.getPrice()*60)); + detailObj.put(TJD_MINUTES, reduceAmount); memo += "-时长"; } detailObj.put(TJD_MEMO, memo);