|
|
|
|
@ -26,36 +26,58 @@ import java.util.concurrent.ConcurrentHashMap;
|
|
|
|
|
public class UserService {
|
|
|
|
|
//private static final Path USER_FILE_PATH = Paths.get("./src/main/java/com/mathgenerator/auth/users.json");
|
|
|
|
|
private static final Path USER_FILE_PATH = Paths.get("users.json");
|
|
|
|
|
private final Map<String, User> userDatabase;
|
|
|
|
|
private Map<String, User> userDatabase;
|
|
|
|
|
private final Gson gson = new GsonBuilder().setPrettyPrinting().create();
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* UserService 构造函数。
|
|
|
|
|
* 在实例化时会自动从 users.json 文件加载用户数据。
|
|
|
|
|
* TODO:这里后续需要改成不自动建立默认用户
|
|
|
|
|
*/
|
|
|
|
|
public UserService() {
|
|
|
|
|
this.userDatabase = loadUsers();
|
|
|
|
|
if (Files.exists(USER_FILE_PATH)) {
|
|
|
|
|
this.userDatabase = loadUsersFromFile();
|
|
|
|
|
} else {
|
|
|
|
|
this.userDatabase = createAndSaveDefaultUsers();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 从 users.json 文件加载用户数据。
|
|
|
|
|
*
|
|
|
|
|
* @return 包含所有用户的Map。
|
|
|
|
|
* 从文件中加载用户数据
|
|
|
|
|
* 当用户不存在时,会自动创建文件并调用{@link #createAndSaveDefaultUsers}创建默认用户
|
|
|
|
|
* TODO:后续需要删除该逻辑
|
|
|
|
|
*/
|
|
|
|
|
private Map<String, User> loadUsers() {
|
|
|
|
|
if (!Files.exists(USER_FILE_PATH)) {
|
|
|
|
|
return new ConcurrentHashMap<>(); // 如果文件不存在,返回一个空的Map
|
|
|
|
|
}
|
|
|
|
|
private Map<String, User> loadUsersFromFile() {
|
|
|
|
|
try (FileReader reader = new FileReader(USER_FILE_PATH.toFile())) {
|
|
|
|
|
Type type = new TypeToken<Map<String, User>>() {}.getType();
|
|
|
|
|
Map<String, User> loadedUsers = gson.fromJson(reader, type);
|
|
|
|
|
return new ConcurrentHashMap<>(loadedUsers); // 确保线程安全
|
|
|
|
|
return loadedUsers != null ? new ConcurrentHashMap<>(loadedUsers) : new ConcurrentHashMap<>();
|
|
|
|
|
} catch (IOException e) {
|
|
|
|
|
System.err.println("错误:加载用户文件失败 - " + e.getMessage());
|
|
|
|
|
return new ConcurrentHashMap<>();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 创建默认用户
|
|
|
|
|
* 调用json库函数创建默认用户
|
|
|
|
|
*/
|
|
|
|
|
private Map<String, User> createAndSaveDefaultUsers() {
|
|
|
|
|
System.out.println("未找到用户文件,正在创建并初始化默认用户...");
|
|
|
|
|
|
|
|
|
|
// --- 核心改动:调用独立的初始化类来获取默认用户 ---
|
|
|
|
|
Map<String, User> defaultUsers = DefaultUserInitializer.createDefaultUsers();
|
|
|
|
|
|
|
|
|
|
try (FileWriter writer = new FileWriter(USER_FILE_PATH.toFile())) {
|
|
|
|
|
gson.toJson(defaultUsers, writer);
|
|
|
|
|
System.out.println("默认用户初始化完成。");
|
|
|
|
|
} catch (IOException e) {
|
|
|
|
|
System.err.println("错误:保存初始用户文件失败 - " + e.getMessage());
|
|
|
|
|
}
|
|
|
|
|
return defaultUsers;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 将当前的用户数据保存到 users.json 文件。
|
|
|
|
|
*/
|
|
|
|
|
|