Skip to content

Commit 00e7dc0

Browse files
committed
feat: enhance client SDK with new OrderClient and SecurityClient
- Introduced OrderClient for interacting with the order service, including methods for retrieving order security statistics. - Added SecurityClient to manage security configurations, including endpoints for updating max order limits. - Refactored existing DTOs to better organize authentication and configuration data under appropriate packages. - Removed obsolete VerifyResult entity and related configurations to streamline the codebase. - Updated application.yml for improved clarity and organization of service configurations.
1 parent 89178a9 commit 00e7dc0

File tree

32 files changed

+556
-567
lines changed

32 files changed

+556
-567
lines changed

ts-client-sdk/src/main/java/edu/fudan/common/client/AuthClient.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
package edu.fudan.common.client;
22

33
import edu.fudan.common.util.Response;
4-
import edu.fudan.common.client.dto.AuthDto;
5-
import edu.fudan.common.client.dto.BasicAuthDto;
6-
import edu.fudan.common.client.dto.TokenDto;
7-
import edu.fudan.common.client.dto.UserDto;
4+
import edu.fudan.common.client.dto.auth.AuthDto;
5+
import edu.fudan.common.client.dto.auth.BasicAuthDto;
6+
import edu.fudan.common.client.dto.auth.TokenDto;
7+
import edu.fudan.common.client.dto.user.UserDto;
88
import lombok.extern.slf4j.Slf4j;
99
import org.springframework.beans.factory.annotation.Autowired;
1010

ts-client-sdk/src/main/java/edu/fudan/common/client/ConfigClient.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package edu.fudan.common.client;
22

3-
import edu.fudan.common.client.dto.ConfigDto;
3+
import edu.fudan.common.client.dto.config.ConfigDto;
44
import edu.fudan.common.util.Response;
55
import java.util.List;
66
import lombok.extern.slf4j.Slf4j;
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
package edu.fudan.common.client;
2+
3+
import edu.fudan.common.client.dto.order.OrderSecurityDto;
4+
import edu.fudan.common.util.Response;
5+
import lombok.extern.slf4j.Slf4j;
6+
import org.springframework.beans.factory.annotation.Autowired;
7+
import org.springframework.core.ParameterizedTypeReference;
8+
import org.springframework.http.HttpEntity;
9+
import org.springframework.http.HttpHeaders;
10+
import org.springframework.http.HttpMethod;
11+
import org.springframework.http.ResponseEntity;
12+
import org.springframework.stereotype.Component;
13+
import org.springframework.web.client.RestTemplate;
14+
15+
import java.text.SimpleDateFormat;
16+
import java.util.Date;
17+
18+
/**
19+
* Client for interacting with the Order Service.
20+
*/
21+
@Slf4j
22+
@Component
23+
public class OrderClient {
24+
25+
private static final String SERVICE_NAME = "ts-order-service";
26+
private static final String BASE_URL = "/api/v1/order";
27+
28+
@Autowired
29+
private RestTemplate restTemplate;
30+
31+
private String getServiceUrl() {
32+
return "http://" + SERVICE_NAME;
33+
}
34+
35+
// FIXME 该接口暂未实现,先声明占用给 ts-security-service 使用
36+
/**
37+
* Retrieve order security statistics for specified account at given time.
38+
* Endpoint: /order/order/security/{date}/{accountId}
39+
*/
40+
public Response<OrderSecurityDto> getOrderSecurity(Date date, String accountId, HttpHeaders headers) {
41+
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
42+
String dateStr = sdf.format(date);
43+
log.info("[getOrderSecurity][date: {}][accountId: {}]", dateStr, accountId);
44+
45+
HttpEntity<?> entity = new HttpEntity<>(headers);
46+
ResponseEntity<Response<OrderSecurityDto>> response = restTemplate.exchange(
47+
getServiceUrl() + BASE_URL + "/order/order/security/" + dateStr + "/" + accountId,
48+
HttpMethod.GET,
49+
entity,
50+
new ParameterizedTypeReference<Response<OrderSecurityDto>>() {
51+
});
52+
return response.getBody();
53+
}
54+
}
Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
package edu.fudan.common.client;
2+
3+
import edu.fudan.common.util.Response;
4+
import lombok.extern.slf4j.Slf4j;
5+
import org.springframework.beans.factory.annotation.Autowired;
6+
import org.springframework.core.ParameterizedTypeReference;
7+
import org.springframework.http.HttpEntity;
8+
import org.springframework.http.HttpHeaders;
9+
import org.springframework.http.HttpMethod;
10+
import org.springframework.http.ResponseEntity;
11+
import org.springframework.stereotype.Component;
12+
import org.springframework.web.client.RestTemplate;
13+
14+
/**
15+
* Client for interacting with ts-security-service.
16+
*/
17+
@Slf4j
18+
@Component
19+
public class SecurityClient {
20+
21+
private static final String SERVICE_NAME = "ts-security-service";
22+
private static final String BASE_URL = "/api/v1/security";
23+
private static final String ADMIN_BASE_URL = "/api/v1/security/admin";
24+
25+
@Autowired
26+
private RestTemplate restTemplate;
27+
28+
private String getServiceUrl() {
29+
return "http://" + SERVICE_NAME;
30+
}
31+
32+
/**
33+
* Check order security for an account. Equivalent to SecurityController#check.
34+
*/
35+
public Response<String> check(String accountId, HttpHeaders headers) {
36+
log.info("[SecurityClient][check][accountId:{}]", accountId);
37+
HttpEntity<?> entity = new HttpEntity<>(headers);
38+
ResponseEntity<Response<String>> response = restTemplate.exchange(
39+
getServiceUrl() + BASE_URL + "/securityConfigs/" + accountId,
40+
HttpMethod.GET,
41+
entity,
42+
new ParameterizedTypeReference<Response<String>>() {
43+
});
44+
return response.getBody();
45+
}
46+
47+
/**
48+
* Update max order one hour configuration.
49+
*/
50+
public Response<Boolean> updateMaxOrderOneHour(Integer value, HttpHeaders headers) {
51+
log.info("[SecurityClient][updateMaxOrderOneHour][value:{}]", value);
52+
HttpEntity<?> entity = new HttpEntity<>(headers);
53+
ResponseEntity<Response<Boolean>> response = restTemplate.exchange(
54+
getServiceUrl() + ADMIN_BASE_URL + "/config/maxOrderOneHour/" + value,
55+
HttpMethod.PUT,
56+
entity,
57+
new ParameterizedTypeReference<Response<Boolean>>() {
58+
});
59+
return response.getBody();
60+
}
61+
62+
/**
63+
* Update max order not use configuration.
64+
*/
65+
public Response<Boolean> updateMaxOrderNotUse(Integer value, HttpHeaders headers) {
66+
log.info("[SecurityClient][updateMaxOrderNotUse][value:{}]", value);
67+
HttpEntity<?> entity = new HttpEntity<>(headers);
68+
ResponseEntity<Response<Boolean>> response = restTemplate.exchange(
69+
getServiceUrl() + ADMIN_BASE_URL + "/config/maxOrderNotUse/" + value,
70+
HttpMethod.PUT,
71+
entity,
72+
new ParameterizedTypeReference<Response<Boolean>>() {
73+
});
74+
return response.getBody();
75+
}
76+
}

ts-client-sdk/src/main/java/edu/fudan/common/client/dto/AuthDto.java renamed to ts-client-sdk/src/main/java/edu/fudan/common/client/dto/auth/AuthDto.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package edu.fudan.common.client.dto;
1+
package edu.fudan.common.client.dto.auth;
22

33
import lombok.AllArgsConstructor;
44
import lombok.Builder;

ts-client-sdk/src/main/java/edu/fudan/common/client/dto/BasicAuthDto.java renamed to ts-client-sdk/src/main/java/edu/fudan/common/client/dto/auth/BasicAuthDto.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
1-
package edu.fudan.common.client.dto;
1+
package edu.fudan.common.client.dto.auth;
22

33
import lombok.AllArgsConstructor;
4+
import lombok.Builder;
45
import lombok.Data;
56
import lombok.NoArgsConstructor;
67

78
/**
89
* DTO for user login
910
*/
1011
@Data
12+
@Builder
1113
@NoArgsConstructor
1214
@AllArgsConstructor
1315
public class BasicAuthDto {

ts-client-sdk/src/main/java/edu/fudan/common/client/dto/TokenDto.java renamed to ts-client-sdk/src/main/java/edu/fudan/common/client/dto/auth/TokenDto.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
1-
package edu.fudan.common.client.dto;
1+
package edu.fudan.common.client.dto.auth;
22

33
import lombok.AllArgsConstructor;
4+
import lombok.Builder;
45
import lombok.Data;
56
import lombok.NoArgsConstructor;
67

78
/**
89
* DTO for authentication token response
910
*/
1011
@Data
12+
@Builder
1113
@AllArgsConstructor
1214
@NoArgsConstructor
1315
public class TokenDto {

ts-client-sdk/src/main/java/edu/fudan/common/client/dto/ConfigDto.java renamed to ts-client-sdk/src/main/java/edu/fudan/common/client/dto/config/ConfigDto.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
1-
package edu.fudan.common.client.dto;
1+
package edu.fudan.common.client.dto.config;
22

33
import lombok.AllArgsConstructor;
4+
import lombok.Builder;
45
import lombok.Data;
56
import lombok.NoArgsConstructor;
67

78
/**
89
* DTO for Config entity exchanged with config service.
910
*/
1011
@Data
12+
@Builder
1113
@NoArgsConstructor
1214
@AllArgsConstructor
1315
public class ConfigDto {
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package edu.fudan.common.client.dto.order;
2+
3+
import lombok.AllArgsConstructor;
4+
import lombok.Builder;
5+
import lombok.Data;
6+
import lombok.NoArgsConstructor;
7+
8+
/**
9+
* DTO representing order security statistics returned by order-service.
10+
*/
11+
@Data
12+
@Builder
13+
@NoArgsConstructor
14+
@AllArgsConstructor
15+
public class OrderSecurityDto {
16+
17+
/** Number of orders placed in the last one hour */
18+
private int orderNumInLastOneHour;
19+
20+
/** Number of valid (unused) orders in total */
21+
private int orderNumOfValidOrder;
22+
}

ts-client-sdk/src/main/java/edu/fudan/common/client/dto/UserDto.java renamed to ts-client-sdk/src/main/java/edu/fudan/common/client/dto/user/UserDto.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
1-
package edu.fudan.common.client.dto;
1+
package edu.fudan.common.client.dto.user;
22

33
import lombok.AllArgsConstructor;
4+
import lombok.Builder;
45
import lombok.Data;
56
import lombok.NoArgsConstructor;
67

@@ -11,6 +12,7 @@
1112
* DTO for auth user information
1213
*/
1314
@Data
15+
@Builder
1416
@AllArgsConstructor
1517
@NoArgsConstructor
1618
public class UserDto {

0 commit comments

Comments
 (0)