feat(client): 实现账号设备试用期管理功能
- 新增设备试用期过期时间字段及管理接口 - 实现试用期状态检查与过期提醒逻辑 - 支持账号类型区分试用与付费用户 - 添加设备注册时自动设置3天试用期- 实现VIP状态刷新与过期类型判断 -优化账号列表查询支持按客户端用户名过滤 - 更新客户端设备管理支持试用期控制- 完善登录流程支持试用期状态提示 -修复设备离线通知缺少用户名参数问题 - 调整账号默认设置清除逻辑关联客户端用户名
This commit is contained in:
@@ -54,36 +54,18 @@ public class BanmaOrderServiceImpl implements IBanmaOrderService {
|
||||
builder.readTimeout(Duration.ofSeconds(10));
|
||||
restTemplate = builder.build();
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
private void fetchTokenFromServer(Long accountId) {
|
||||
ResponseEntity<Map> resp = restTemplate.getForEntity(RUOYI_ADMIN_BASE + "/tool/banma/accounts", Map.class);
|
||||
Object body = resp.getBody();
|
||||
if (body == null) return;
|
||||
Object data = ((Map<String, Object>) body).get("data");
|
||||
List<Map<String, Object>> list;
|
||||
if (data instanceof List) {
|
||||
list = (List<Map<String, Object>>) data;
|
||||
} else if (body instanceof Map && ((Map) body).get("list") instanceof List) {
|
||||
list = (List<Map<String, Object>>) ((Map) body).get("list");
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
if (list.isEmpty()) return;
|
||||
Map<String, Object> picked;
|
||||
if (accountId != null) {
|
||||
picked = list.stream().filter(m -> Objects.equals(((Number) m.get("id")).longValue(), accountId)).findFirst().orElse(null);
|
||||
if (picked == null) return;
|
||||
} else {
|
||||
picked = list.stream()
|
||||
.filter(m -> Objects.equals(((Number) m.getOrDefault("status", 1)).intValue(), 1))
|
||||
.sorted((a,b) -> Integer.compare(((Number) b.getOrDefault("isDefault", 0)).intValue(), ((Number) a.getOrDefault("isDefault", 0)).intValue()))
|
||||
.findFirst().orElse(list.get(0));
|
||||
}
|
||||
Object token = picked.get("token");
|
||||
if (token instanceof String && !((String) token).isEmpty()) {
|
||||
String t = (String) token;
|
||||
currentAuthToken = t.startsWith("Bearer ") ? t : ("Bearer " + t);
|
||||
Map<String, Object> resp = restTemplate.getForObject(RUOYI_ADMIN_BASE + "/tool/banma/accounts", Map.class);
|
||||
List<Map<String, Object>> list = (List<Map<String, Object>>) resp.get("data");
|
||||
if (list == null || list.isEmpty()) return;
|
||||
Map<String, Object> account = accountId != null
|
||||
? list.stream().filter(m -> accountId.equals(((Number) m.get("id")).longValue())).findFirst().orElse(null)
|
||||
: list.stream().filter(m -> ((Number) m.getOrDefault("isDefault", 0)).intValue() == 1).findFirst().orElse(list.get(0));
|
||||
|
||||
if (account != null) {
|
||||
String token = (String) account.get("token");
|
||||
currentAuthToken = token != null && token.startsWith("Bearer ") ? token : "Bearer " + token;
|
||||
currentAccountId = accountId;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user