mirror of
https://codeup.aliyun.com/67c68d4e484ca2f0a13ac3c1/ydc/jsowell-charger-web.git
synced 2026-04-21 11:35:12 +08:00
修改thirdparty中停车平台代码位置
This commit is contained in:
48
jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/parking/common/LTYTCommonParams.java
vendored
Normal file
48
jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/parking/common/LTYTCommonParams.java
vendored
Normal file
@@ -0,0 +1,48 @@
|
||||
package com.jsowell.thirdparty.parking.common;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* 路通云停道闸系统 通用参数
|
||||
*
|
||||
* @author Lemon
|
||||
* @Date 2023/8/21 9:26
|
||||
*/
|
||||
@Data
|
||||
public class LTYTCommonParams {
|
||||
/**
|
||||
* 应用标识 Y
|
||||
* 一个 AppId 对应唯一的 SecretKey,用来生成签名信息
|
||||
*/
|
||||
private String appId;
|
||||
|
||||
/**
|
||||
* 放行标志 Y
|
||||
* 登入获取
|
||||
*/
|
||||
private String token;
|
||||
|
||||
/**
|
||||
* 请求时间 Y
|
||||
* 格式:YYYYMMDDHHMMSS
|
||||
*/
|
||||
private String accTime;
|
||||
|
||||
/**
|
||||
* 版本 Y
|
||||
* 例:1.0
|
||||
*/
|
||||
private String version;
|
||||
|
||||
/**
|
||||
* 请求条件 N
|
||||
* 查询条件
|
||||
*/
|
||||
private String data;
|
||||
|
||||
/**
|
||||
* 城市编码 N
|
||||
* 用于标记来源的城市平台
|
||||
*/
|
||||
private String cityCode;
|
||||
}
|
||||
22
jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/parking/common/LTYTCommonResult.java
vendored
Normal file
22
jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/parking/common/LTYTCommonResult.java
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
package com.jsowell.thirdparty.parking.common;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* 路通云停
|
||||
*
|
||||
* @author Lemon
|
||||
* @Date 2023/8/21 9:52
|
||||
*/
|
||||
@Data
|
||||
public class LTYTCommonResult {
|
||||
/**
|
||||
* 错误编码
|
||||
*/
|
||||
private String code;
|
||||
|
||||
/**
|
||||
* 错误描述
|
||||
*/
|
||||
private String msg;
|
||||
}
|
||||
29
jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/parking/service/LTYTService.java
vendored
Normal file
29
jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/parking/service/LTYTService.java
vendored
Normal file
@@ -0,0 +1,29 @@
|
||||
package com.jsowell.thirdparty.parking.service;
|
||||
|
||||
import com.jsowell.pile.dto.lutongyunting.BindCouponDTO;
|
||||
import com.jsowell.pile.dto.lutongyunting.GetTokenDTO;
|
||||
|
||||
import java.io.UnsupportedEncodingException;
|
||||
|
||||
/**
|
||||
* 路通云停 Service
|
||||
*
|
||||
* @author Lemon
|
||||
* @Date 2023/8/23 11:07
|
||||
*/
|
||||
public interface LTYTService {
|
||||
|
||||
/**
|
||||
* 获取平台令牌
|
||||
* @param dto
|
||||
* @return
|
||||
*/
|
||||
String getToken(GetTokenDTO dto);
|
||||
|
||||
/**
|
||||
* 给指定车辆绑定优惠券
|
||||
* @param dto
|
||||
* @return
|
||||
*/
|
||||
String bindCoupon(BindCouponDTO dto) throws UnsupportedEncodingException;
|
||||
}
|
||||
19
jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/parking/service/RJService.java
vendored
Normal file
19
jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/parking/service/RJService.java
vendored
Normal file
@@ -0,0 +1,19 @@
|
||||
package com.jsowell.thirdparty.parking.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);
|
||||
}
|
||||
188
jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/parking/service/impl/LTYTServiceImpl.java
vendored
Normal file
188
jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/parking/service/impl/LTYTServiceImpl.java
vendored
Normal file
@@ -0,0 +1,188 @@
|
||||
package com.jsowell.thirdparty.parking.service.impl;
|
||||
|
||||
import cn.hutool.http.HttpUtil;
|
||||
import com.alibaba.fastjson2.JSON;
|
||||
import com.alibaba.fastjson2.JSONObject;
|
||||
import com.jsowell.common.constant.CacheConstants;
|
||||
import com.jsowell.common.core.redis.RedisCache;
|
||||
import com.jsowell.common.exception.BusinessException;
|
||||
import com.jsowell.common.util.DateUtils;
|
||||
import com.jsowell.common.util.StringUtils;
|
||||
import com.jsowell.common.util.sign.MD5Util;
|
||||
import com.jsowell.pile.domain.CarCouponRecord;
|
||||
import com.jsowell.pile.domain.OrderBasicInfo;
|
||||
import com.jsowell.pile.dto.lutongyunting.BindCouponDTO;
|
||||
import com.jsowell.pile.dto.lutongyunting.GetTokenDTO;
|
||||
import com.jsowell.pile.service.CarCouponRecordService;
|
||||
import com.jsowell.thirdparty.parking.service.LTYTService;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.io.UnsupportedEncodingException;
|
||||
import java.net.URLEncoder;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
/**
|
||||
* TODO
|
||||
*
|
||||
* @author Lemon
|
||||
* @Date 2023/8/23 11:19
|
||||
*/
|
||||
@Service
|
||||
public class LTYTServiceImpl implements LTYTService {
|
||||
|
||||
@Autowired
|
||||
private RedisCache redisCache;
|
||||
|
||||
@Autowired
|
||||
private CarCouponRecordService carCouponRecordService;
|
||||
|
||||
// private static final String APP_ID = "I2qa3hdr116100dc"; // I2qa3hdr116100dc I2qa3jfnd96f267c
|
||||
|
||||
// private static final String SECRET_KEY = "2qa3hdr13754a8e"; // 2qa3hdr13754a8e 2qa3jfndb37926d
|
||||
|
||||
private static final String BASE_URL = "https://entry-openapi.sn6.co/api/";
|
||||
|
||||
private static final Logger log = LoggerFactory.getLogger(LTYTServiceImpl.class);
|
||||
|
||||
/**
|
||||
* 路通云停系统获取令牌
|
||||
* @param dto
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public String getToken(GetTokenDTO dto) {
|
||||
// 检查缓存中是否有token
|
||||
String key = CacheConstants.LTYT_TOKEN_BY_APPID + dto.getAppId();
|
||||
String token = redisCache.getCacheObject(key);
|
||||
if (StringUtils.isNotBlank(token)) {
|
||||
return token;
|
||||
}
|
||||
// String appId = "I2qa3hdr116100dc";
|
||||
String accTime = DateUtils.dateTimeNow(DateUtils.YYYYMMDDHHMMSS);
|
||||
|
||||
String url = BASE_URL + "getApiToken";
|
||||
|
||||
// 封装参数
|
||||
JSONObject jsonObject = new JSONObject();
|
||||
jsonObject.put("appId", dto.getAppId());
|
||||
jsonObject.put("accTime", accTime);
|
||||
jsonObject.put("version", "1.0");
|
||||
|
||||
// 获取sign签名
|
||||
String sign = getSign(jsonObject, dto.getSecretKey());
|
||||
jsonObject.put("sign", sign);
|
||||
|
||||
// 发送请求
|
||||
String result = HttpUtil.post(url, JSON.toJSONString(jsonObject));
|
||||
log.info("路通云停系统获取令牌 result:{}", result);
|
||||
JSONObject resultJson = JSONObject.parseObject(result);
|
||||
Integer code = resultJson.getInteger("code");
|
||||
if (code == 200) {
|
||||
token = resultJson.getJSONObject("data").getString("token");
|
||||
Integer expiredTime = resultJson.getJSONObject("data").getInteger("expiry");
|
||||
// 存入缓存
|
||||
redisCache.setCacheObject(key, token, expiredTime, TimeUnit.HOURS);
|
||||
return redisCache.getCacheObject(key);
|
||||
}else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 给指定车辆绑定优惠券
|
||||
* @param dto
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public String bindCoupon(BindCouponDTO dto) throws UnsupportedEncodingException {
|
||||
OrderBasicInfo orderBasicInfo = dto.getOrderBasicInfo();
|
||||
// 获取令牌
|
||||
GetTokenDTO tokenDTO = new GetTokenDTO();
|
||||
tokenDTO.setAppId(dto.getAppId());
|
||||
tokenDTO.setSecretKey(dto.getSecretKey());
|
||||
String token = getToken(tokenDTO);
|
||||
if (StringUtils.isBlank(token)) {
|
||||
throw new BusinessException("", "路通云停系统 给指定车辆绑定优惠券 方法获取令牌失败");
|
||||
}
|
||||
|
||||
String url = BASE_URL + "bindCoupon";
|
||||
JSONObject jsonObject = new JSONObject();
|
||||
// 公共参数
|
||||
jsonObject.put("appId", dto.getAppId());
|
||||
jsonObject.put("token", token);
|
||||
jsonObject.put("accTime", DateUtils.dateTimeNow(DateUtils.YYYYMMDDHHMMSS));
|
||||
jsonObject.put("version", "1.0");
|
||||
// 业务参数
|
||||
jsonObject.put("merchantId", dto.getMerchantId());
|
||||
jsonObject.put("couponId", dto.getCouponId());
|
||||
jsonObject.put("plateNumber", dto.getPlateNumber());
|
||||
jsonObject.put("plateColor", dto.getPlateColor());
|
||||
|
||||
String encodeData = URLEncoder.encode(JSON.toJSONString(jsonObject), "UTF-8");
|
||||
jsonObject.put("data", encodeData);
|
||||
|
||||
// 发送请求
|
||||
String result = HttpUtil.post(url, JSON.toJSONString(jsonObject));
|
||||
log.info("给指定车辆绑定优惠券 params:{}, result:{}", JSON.toJSONString(jsonObject), result);
|
||||
JSONObject resultJson = JSONObject.parseObject(result);
|
||||
String msg = resultJson.getString("msg");
|
||||
|
||||
// 将下发优惠券信息存入表
|
||||
CarCouponRecord carCouponRecord = new CarCouponRecord();
|
||||
carCouponRecord.setOrderCode(orderBasicInfo.getOrderCode());
|
||||
carCouponRecord.setReturnCode(String.valueOf(resultJson.get("code")));
|
||||
carCouponRecord.setReturnMsg(msg);
|
||||
carCouponRecord.setPlateNumber(dto.getPlateNumber());
|
||||
carCouponRecord.setStationId(Long.parseLong(orderBasicInfo.getStationId()));
|
||||
|
||||
carCouponRecordService.insertCarCouponRecord(carCouponRecord);
|
||||
|
||||
return msg;
|
||||
}
|
||||
|
||||
public static void main(String[] args) throws UnsupportedEncodingException {
|
||||
JSONObject jsonObject = new JSONObject();
|
||||
jsonObject.put("merchantId", "merchantId");
|
||||
jsonObject.put("couponId", "couponId");
|
||||
jsonObject.put("plateNumber", "plateNumber");
|
||||
jsonObject.put("plateColor", 2);
|
||||
|
||||
String encodeData = URLEncoder.encode(JSON.toJSONString(jsonObject), "UTF-8");
|
||||
System.out.println(encodeData);
|
||||
// String accTime = DateUtils.dateTimeNow(DateUtils.YYYYMMDDHHMMSS);
|
||||
// Map<String, Object> map = new LinkedMap<>();
|
||||
// map.put("appId", "appId");
|
||||
// map.put("accTime", accTime);
|
||||
// map.put("version", "version");
|
||||
// System.out.println(map);
|
||||
// // 排序
|
||||
// TreeMap<String, Object> params = new TreeMap<String, Object>(map);
|
||||
//
|
||||
// StringBuilder sb = new StringBuilder();
|
||||
// for (String key : params.keySet()) {
|
||||
// sb.append(key).append("=").append(params.get(key)).append("&");
|
||||
// }
|
||||
// sb.deleteCharAt(sb.length() - 1);
|
||||
//
|
||||
// String dataStr = sb + "secretKey";
|
||||
// String sign = MD5Util.MD5Encode(dataStr).toLowerCase(Locale.ROOT);
|
||||
// System.out.println(sign);
|
||||
}
|
||||
|
||||
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(secretKey);
|
||||
return MD5Util.MD5Encode(sb.toString()).toLowerCase(Locale.ROOT);
|
||||
}
|
||||
}
|
||||
78
jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/parking/service/impl/RJServiceImpl.java
vendored
Normal file
78
jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/parking/service/impl/RJServiceImpl.java
vendored
Normal file
@@ -0,0 +1,78 @@
|
||||
package com.jsowell.thirdparty.parking.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.parking.service.impl.LTYTServiceImpl;
|
||||
import com.jsowell.thirdparty.parking.service.RJService;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.Locale;
|
||||
import java.util.TreeMap;
|
||||
|
||||
/**
|
||||
* 软杰停车道闸系统Service
|
||||
*
|
||||
* @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";
|
||||
|
||||
private static final String FCUST_NO = "390099";
|
||||
|
||||
/**
|
||||
* 软杰--使用优惠券
|
||||
* @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", FCUST_NO);
|
||||
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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user