新增 软杰道闸系统对接

This commit is contained in:
Lemon
2023-09-22 14:40:09 +08:00
parent dff9271288
commit 098768249b
4 changed files with 190 additions and 0 deletions

View File

@@ -0,0 +1,43 @@
package com.jsowell.ruanjie;
import com.alibaba.fastjson2.JSON;
import com.jsowell.common.annotation.Anonymous;
import com.jsowell.common.core.controller.BaseController;
import com.jsowell.common.response.RestApiResponse;
import com.jsowell.pile.dto.ruanjie.UseCouponDTO;
import com.jsowell.thirdparty.ruanjie.service.RJService;
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;
/**
* 软杰controller
*
* @author Lemon
* @Date 2023/9/22 9:00
*/
@Anonymous
@RestController
@RequestMapping("/ruanjie")
public class RJController extends BaseController {
@Autowired
private RJService rjService;
@PostMapping("/useCoupon")
public RestApiResponse<?> useCoupon(@RequestBody UseCouponDTO dto) {
logger.info("软杰--使用优惠券 params:{}", JSON.toJSONString(dto));
RestApiResponse<?> response = null;
try {
String result = rjService.useCoupon(dto);
response = new RestApiResponse<>(result);
} catch (Exception e) {
logger.error("软杰--使用优惠券 error, ", e);
response = new RestApiResponse<>(e);
}
logger.info("软杰--使用优惠券 result:{}", response);
return response;
}
}

View File

@@ -0,0 +1,52 @@
package com.jsowell.pile.dto.ruanjie;
import com.alibaba.fastjson2.annotation.JSONField;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
/**
* 软杰使用优惠券DTO
*
* @author Lemon
* @Date 2023/9/22 8:42
*/
@Data
public class UseCouponDTO {
/**
* 客户编号
* 该值由厂商提供
*/
private String fCustNo;
/**
* 车牌号码
* 该值来源进场数据
*/
@JsonProperty(value = "fPlateCode")
private String fPlateCode;
/**
* 优惠券类型ID
* 0 表示 免费停车
* 1 表示 抵扣金额(元)
* 2 表示 抵扣时间
*/
@JsonProperty(value = "fCouponType")
private String fCouponType;
/**
* 优惠券面值
* fCouponType=0 时 fCouponValue=”0” 免费停车优惠券
* fCouponType=1时 fCouponValue 表示实际抵扣金额,单位元。
* fCouponType=2时 fCouponValue 表示实际抵扣时间,单位分钟
*/
@JsonProperty(value = "fCouponValue")
private String fCouponValue;
/**
* 优惠券编号
*/
@JsonProperty(value = "fCouponCode")
private String fCouponCode;
}

View File

@@ -0,0 +1,19 @@
package com.jsowell.thirdparty.ruanjie.service;
import com.jsowell.pile.dto.ruanjie.UseCouponDTO;
/**
* 软杰Service
*
* @author Lemon
* @Date 2023/9/22 8:41
*/
public interface RJService {
/**
* 软杰--使用优惠券
* @param dto
* @return
*/
public String useCoupon(UseCouponDTO dto);
}

View File

@@ -0,0 +1,76 @@
package com.jsowell.thirdparty.ruanjie.service.impl;
import cn.hutool.http.HttpUtil;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
import com.jsowell.common.util.sign.MD5Util;
import com.jsowell.pile.dto.ruanjie.UseCouponDTO;
import com.jsowell.thirdparty.lutongyunting.service.impl.LTYTServiceImpl;
import com.jsowell.thirdparty.ruanjie.service.RJService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
import java.util.Locale;
import java.util.TreeMap;
/**
* TODO
*
* @author Lemon
* @Date 2023/9/22 8:46
*/
@Service
public class RJServiceImpl implements RJService {
private static final Logger log = LoggerFactory.getLogger(LTYTServiceImpl.class);
private static final String BASE_URL = "https://redpay.ruanjiesh.com/ThirdAPI";
private static final String SECRET_KEY = "ced9ar3ingZ";
/**
* 软杰--使用优惠券
* @param dto
* @return
*/
@Override
public String useCoupon(UseCouponDTO dto) {
String url = BASE_URL + "/api/Coupon/UseCoupon";
JSONObject jsonObject = new JSONObject();
jsonObject.put("fCustID", 0);
jsonObject.put("fCustNo", "390099");
jsonObject.put("fBusID", 0);
jsonObject.put("fInTime", 0);
jsonObject.put("fPlateCode", dto.getFPlateCode());
jsonObject.put("fCouponType", dto.getFCouponType());
jsonObject.put("fCouponValue", dto.getFCouponValue());
jsonObject.put("fCouponCode", dto.getFCouponCode());
jsonObject.put("fStatus", "1"); // 1-有效
// 获取sign
String sign = getSign(jsonObject, SECRET_KEY);
jsonObject.put("sign", sign);
// 发送post请求
log.info("软杰--使用优惠券 params:{}, url:{}", JSON.toJSONString(jsonObject), url);
String result = HttpUtil.post(url, JSON.toJSONString(jsonObject));
log.info("软杰--使用优惠券 result:{}", result);
JSONObject resultJson = JSONObject.parseObject(result);
return resultJson.getString("return_msg");
}
private static String getSign(JSONObject jsonObject, String secretKey) {
// String secretKey = "";
TreeMap<String, Object> params = new TreeMap<>(jsonObject);
StringBuilder sb = new StringBuilder();
for (String key : params.keySet()) {
sb.append(key).append("=").append(params.get(key)).append("&");
}
sb.deleteCharAt(sb.length() - 1);
sb.append("&key=").append(secretKey);
return MD5Util.MD5Encode(sb.toString()).toLowerCase(Locale.ROOT);
}
}