package login;
|
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
|
/**
|
* 用户注册工具类
|
* 用于用户注册功能
|
*/
|
public class UserRegister {
|
|
private static final String REGISTER_API = "/api/auth/register";
|
|
private final HttpClientLoca httpClient;
|
private final ApiConfig config;
|
private final ObjectMapper objectMapper;
|
|
/**
|
* 使用默认配置创建UserRegister
|
*/
|
public UserRegister() {
|
this.config = ApiConfig.getDefault();
|
this.httpClient = new HttpClientLoca(config);
|
this.objectMapper = new ObjectMapper();
|
}
|
|
/**
|
* 使用自定义配置创建UserRegister
|
*/
|
public UserRegister(ApiConfig config) {
|
this.config = config != null ? config : ApiConfig.getDefault();
|
this.httpClient = new HttpClientLoca(this.config);
|
this.objectMapper = new ObjectMapper();
|
}
|
|
/**
|
* 用户注册(实例方法)
|
*
|
* @param email 邮箱地址
|
* @param password 密码
|
* @param code 验证码(6位数字)
|
* @param nickname 用户昵称
|
* @return RegisterResponse 包含响应状态码和响应内容的对象
|
*/
|
public RegisterResponse registerInstance(String email, String password, String code, String nickname,String confirmPassword) {
|
// 参数校验
|
String validationError = validateParams(email, password, code, nickname);
|
if (validationError != null) {
|
return RegisterResponse.failure(400, validationError);
|
}
|
|
try {
|
// 构建请求体JSON
|
RegisterRequest request = new RegisterRequest(email, password, code, nickname,confirmPassword);
|
String jsonData = objectMapper.writeValueAsString(request);
|
|
// 发送POST请求
|
String url = config.getBaseUrl() + REGISTER_API;
|
ApiResponse apiResponse = httpClient.postJson(url, jsonData);
|
|
// 解析响应并判断是否成功
|
boolean success = false;
|
String message = "注册失败";
|
|
if (apiResponse.getResponseBody() != null && !apiResponse.getResponseBody().isEmpty()) {
|
try {
|
RegisterApiResponse registerResponse = objectMapper.readValue(
|
apiResponse.getResponseBody(), RegisterApiResponse.class);
|
success = registerResponse.getCode() == 200;
|
message = registerResponse.getMessage();
|
} catch (Exception e) {
|
// JSON解析失败,使用HTTP状态码判断
|
success = apiResponse.isSuccess();
|
message = success ? "注册成功" : "注册失败";
|
}
|
} else {
|
success = apiResponse.isSuccess();
|
message = apiResponse.getErrorMessage() != null ?
|
apiResponse.getErrorMessage() : "注册失败";
|
}
|
|
if (success) {
|
return RegisterResponse.success(apiResponse.getStatusCode(),
|
message, apiResponse.getResponseBody());
|
} else {
|
return RegisterResponse.failure(apiResponse.getStatusCode(), message);
|
}
|
|
} catch (Exception e) {
|
return RegisterResponse.failure(500, "请求异常: " + e.getMessage());
|
}
|
}
|
|
/**
|
* 参数校验
|
*/
|
private String validateParams(String email, String password, String code, String nickname) {
|
if (email == null || email.trim().isEmpty()) {
|
return "邮箱地址不能为空";
|
}
|
if (password == null || password.trim().isEmpty()) {
|
return "密码不能为空";
|
}
|
if (code == null || code.trim().isEmpty()) {
|
return "验证码不能为空";
|
}
|
if (nickname == null || nickname.trim().isEmpty()) {
|
return "用户昵称不能为空";
|
}
|
return null;
|
}
|
|
/**
|
* 静态方法:使用默认配置注册(保持向后兼容)
|
*/
|
public static RegisterResponse register(String email, String password, String code, String nickname,String confirmPassword) {
|
return new UserRegister().registerInstance(email, password, code, nickname,confirmPassword);
|
}
|
|
/**
|
* 注册请求对象
|
*/
|
@SuppressWarnings("unused")
|
private static class RegisterRequest {
|
private String email;
|
private String password;
|
private String confirmPassword;
|
private String code;
|
private String username;
|
|
public RegisterRequest(String email, String password, String code, String nickname,String confirmPassword) {
|
this.email = email;
|
this.password = password;
|
this.code = code;
|
this.username = nickname;
|
this.confirmPassword = confirmPassword;
|
}
|
|
public String getEmail() {
|
return email;
|
}
|
|
public void setEmail(String email) {
|
this.email = email;
|
}
|
|
public String getPassword() {
|
return password;
|
}
|
|
public void setPassword(String password) {
|
this.password = password;
|
}
|
|
public String getCode() {
|
return code;
|
}
|
|
public void setCode(String code) {
|
this.code = code;
|
}
|
|
|
public String getConfirmPassword() {
|
return confirmPassword;
|
}
|
|
public void setConfirmPassword(String confirmPassword) {
|
this.confirmPassword = confirmPassword;
|
}
|
|
public String getUsername() {
|
return username;
|
}
|
|
public void setUsername(String username) {
|
this.username = username;
|
}
|
}
|
|
/**
|
* 注册响应对象(对应接口文档的响应格式)
|
*/
|
@SuppressWarnings("unused")
|
private static class RegisterApiResponse {
|
private int code;
|
private String message;
|
private Object data;
|
private long timestamp;
|
|
public int getCode() {
|
return code;
|
}
|
|
public void setCode(int code) {
|
this.code = code;
|
}
|
|
public String getMessage() {
|
return message;
|
}
|
|
public void setMessage(String message) {
|
this.message = message;
|
}
|
|
public Object getData() {
|
return data;
|
}
|
|
public void setData(Object data) {
|
this.data = data;
|
}
|
|
public long getTimestamp() {
|
return timestamp;
|
}
|
|
public void setTimestamp(long timestamp) {
|
this.timestamp = timestamp;
|
}
|
}
|
|
/**
|
* 用户注册响应结果封装类
|
*/
|
public static class RegisterResponse {
|
private final boolean success;
|
private final int statusCode;
|
private final String message;
|
private final String responseBody;
|
|
private RegisterResponse(boolean success, int statusCode, String message, String responseBody) {
|
this.success = success;
|
this.statusCode = statusCode;
|
this.message = message;
|
this.responseBody = responseBody;
|
}
|
|
/**
|
* 创建成功响应
|
*/
|
public static RegisterResponse success(int statusCode, String message, String responseBody) {
|
return new RegisterResponse(true, statusCode, message, responseBody);
|
}
|
|
/**
|
* 创建失败响应
|
*/
|
public static RegisterResponse failure(int statusCode, String message) {
|
return new RegisterResponse(false, statusCode, message, null);
|
}
|
|
public boolean isSuccess() {
|
return success;
|
}
|
|
public int getStatusCode() {
|
return statusCode;
|
}
|
|
public String getMessage() {
|
return message;
|
}
|
|
public String getResponseBody() {
|
return responseBody;
|
}
|
|
@Override
|
public String toString() {
|
return "RegisterResponse{" +
|
"success=" + success +
|
", statusCode=" + statusCode +
|
", message='" + message + '\'' +
|
", responseBody='" + responseBody + '\'' +
|
'}';
|
}
|
}
|
}
|