fix: 1.用户组同步保留expiry_time,PHP→Java同步时不丢掉到期时间 2.Java/PHP到期解析:数字=分钟,中文单位秒数计算修正为秒级
This commit is contained in:
@@ -285,19 +285,38 @@ public class UserGroupManager {
|
||||
* 仅写入本地DB(不触发PHP推送,用于PHP→Java同步避免循环)
|
||||
*/
|
||||
public boolean addPlayerLocal(String player, String groupName, String addedBy) {
|
||||
return addPlayerLocalWithExpiry(player, groupName, addedBy, 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* 仅写入本地DB(带到期时间,不触发PHP推送,用于PHP→Java同步)
|
||||
* @param expiryTimeMillis 到期时间戳(ms), 0=永久
|
||||
*/
|
||||
public boolean addPlayerLocalWithExpiry(String player, String groupName, String addedBy, long expiryTimeMillis) {
|
||||
UserGroupConfig cfg = getGroupConfig(groupName);
|
||||
if (cfg == null) return false;
|
||||
groupName = cfg.name;
|
||||
long now = System.currentTimeMillis();
|
||||
try {
|
||||
PreparedStatement ps = db.prepareStatement(
|
||||
"INSERT OR REPLACE INTO user_group_member "
|
||||
+ "(player_name, group_name, added_by, added_time, expiry_time)"
|
||||
+ " VALUES (?,?,?,?,0)");
|
||||
PreparedStatement ps;
|
||||
if (expiryTimeMillis == 0) {
|
||||
ps = db.prepareStatement(
|
||||
"INSERT OR REPLACE INTO user_group_member "
|
||||
+ "(player_name, group_name, added_by, added_time, expiry_time)"
|
||||
+ " VALUES (?,?,?,?,0)");
|
||||
} else {
|
||||
ps = db.prepareStatement(
|
||||
"INSERT OR REPLACE INTO user_group_member "
|
||||
+ "(player_name, group_name, added_by, added_time, expiry_time)"
|
||||
+ " VALUES (?,?,?,?,?)");
|
||||
}
|
||||
ps.setString(1, player);
|
||||
ps.setString(2, groupName);
|
||||
ps.setString(3, addedBy);
|
||||
ps.setLong(4, now);
|
||||
if (expiryTimeMillis != 0) {
|
||||
ps.setLong(5, expiryTimeMillis);
|
||||
}
|
||||
ps.executeUpdate();
|
||||
ps.close();
|
||||
} catch (SQLException e) {
|
||||
|
||||
@@ -3483,9 +3483,18 @@ public class WebManager {
|
||||
String obj = arrStr.substring(objStart + 1, i);
|
||||
String player = extractJsonStringSafe(obj, "player_name");
|
||||
String addedBy = extractJsonStringSafe(obj, "added_by");
|
||||
String expiryStr = extractJsonField(obj, "expiry_time");
|
||||
long expiryTime = 0;
|
||||
if (!expiryStr.isEmpty()) {
|
||||
try {
|
||||
expiryTime = Long.parseLong(expiryStr) * 1000; // PHP存的是秒级时间戳
|
||||
} catch (Exception e) {
|
||||
// ignore
|
||||
}
|
||||
}
|
||||
if (player != null && !player.isEmpty()) {
|
||||
// 直接写入本地DB(不触发PHP推送,避免循环)
|
||||
ugm.addPlayerLocal(player, groupName, addedBy);
|
||||
ugm.addPlayerLocalWithExpiry(player, groupName, addedBy, expiryTime);
|
||||
imported++;
|
||||
}
|
||||
objStart = -1;
|
||||
|
||||
Reference in New Issue
Block a user