Compare commits

..

2 Commits

Author SHA1 Message Date
李京通 e62fdd9e34 Merge remote-tracking branch 'origin/master' 2026-01-20 14:15:57 +08:00
李京通 ccd9988589 积分 2026-01-20 14:15:48 +08:00
2 changed files with 169 additions and 0 deletions

View File

@ -0,0 +1,44 @@
package com.ruoyi.database.controller;
import com.ruoyi.database.service.ParkingPointsService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @Description ParkingScoreController
* @Author lijingtong
* @Date 2026-01-19
*/
@RestController
@RequestMapping("/ParkingScore")
@Api(tags = "积分")
@RequiredArgsConstructor
public class ParkingScoreController {
private final ParkingPointsService service;
@RequestMapping("/queryScore")
@ApiOperation("查询积分")
public String queryScore(String phone) throws Exception {
return service.queryScore(phone);
}
@RequestMapping("/payScore")
@ApiOperation("积分支付")
public String payScore(String phone, int money) throws Exception {
return service.payScore(phone, money);
}
/* private final ParkingScoreService parkingScoreService;
@RequestMapping("/queryScore")
@ApiOperation("查询积分")
public QueryScoreResponse queryScore(String phone) {
return parkingScoreService.queryScore(phone);
}*/
}

View File

@ -0,0 +1,125 @@
package com.ruoyi.database.service;
import org.springframework.stereotype.Service;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
@Service
public class ParkingPointsService {
// 常量定义
private static final String TOKEN = "VAR21UEUjhHmeMqiAvA7VYvQLPn5rO2z";
private static final String QUERY_SCORE_URL = "https://yxphp.ckldzsw.com/index/score/search";
private static final String PAY_SCORE_URL = "https://yxphp.ckldzsw.com/index/score/reduce";
/**
* 生成签名
* 签名规则md5(phone + timestamp + TOKEN)
*/
public String generateSign(String phone, String timestamp) throws NoSuchAlgorithmException {
String data = phone + timestamp + TOKEN;
MessageDigest md = MessageDigest.getInstance("MD5");
md.update(data.getBytes());
byte[] digest = md.digest();
StringBuilder hexString = new StringBuilder();
for (byte b : digest) {
hexString.append(String.format("%02x", b));
}
return hexString.toString();
}
/**
* 查询积分
*/
public String queryScore(String phone) throws Exception {
// 生成时间戳Unix时间戳秒级
String timestamp = String.valueOf(System.currentTimeMillis() / 1000);
// 生成签名
String sign = generateSign(phone, timestamp);
// 构建请求参数
String params = "phone=" + phone + "&timestamp=" + timestamp + "&sign=" + sign;
// 发送POST请求
HttpURLConnection conn = (HttpURLConnection) new URL(QUERY_SCORE_URL).openConnection();
conn.setRequestMethod("POST");
conn.setDoOutput(true);
conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
try (OutputStream os = conn.getOutputStream()) {
os.write(params.getBytes());
os.flush();
}
// 读取响应
StringBuilder response = new StringBuilder();
try (BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream()))) {
String line;
while ((line = br.readLine()) != null) {
response.append(line);
}
}
return response.toString();
}
/**
* 停车积分支付
*/
public String payScore(String phone, int money) throws Exception {
// 生成时间戳Unix时间戳秒级
String timestamp = String.valueOf(System.currentTimeMillis() / 1000);
// 生成签名
String sign = generateSign(phone, timestamp);
// 构建请求参数
String params = "phone=" + phone + "&timestamp=" + timestamp + "&sign=" + sign + "&money=" + money;
// 发送POST请求
HttpURLConnection conn = (HttpURLConnection) new URL(PAY_SCORE_URL).openConnection();
conn.setRequestMethod("POST");
conn.setDoOutput(true);
conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
try (OutputStream os = conn.getOutputStream()) {
os.write(params.getBytes());
os.flush();
}
// 读取响应
StringBuilder response = new StringBuilder();
try (BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream()))) {
String line;
while ((line = br.readLine()) != null) {
response.append(line);
}
}
return response.toString();
}
/*public static void main(String[] args) {
try {
// 示例查询积分
String phone = "15599026928";
String queryResult = queryScore(phone);
System.out.println("查询积分结果:" + queryResult);
// 示例停车积分支付支付1积分
String payResult = payScore(phone, 1);
System.out.println("停车积分支付结果:" + payResult);
String queryResult1 = queryScore(phone);
System.out.println("查询积分结果1" + queryResult1);
} catch (Exception e) {
e.printStackTrace();
}
}*/
}