Commit 3641d897 authored by fallenstardust's avatar fallenstardust

我的在线备份显示deckType值

移除不使用方法
parent 02c5793e
...@@ -581,117 +581,6 @@ public class DeckSquareApiUtil { ...@@ -581,117 +581,6 @@ public class DeckSquareApiUtil {
String url = "http://rarnu.xyz:38383/api/mdpro3/deck/" + deckId; String url = "http://rarnu.xyz:38383/api/mdpro3/deck/" + deckId;
} }
public static SyncMutliDeckResult synchronizeDecksV2() throws IOException {
SyncMutliDeckResult autoSyncResult = new SyncMutliDeckResult();
// 检查用户是否登录
LoginToken loginToken = DeckSquareApiUtil.getLoginData();
if (loginToken == null) {
autoSyncResult.setFlag(false);
autoSyncResult.setInfo("need login");
return autoSyncResult;
}
// 获取本地卡组列表
List<MyDeckItem> localDecks = DeckSquareFileUtil.getMyDeckItem();
// 获取在线卡组列表
MyDeckResponse onlineDecksResponse = DeckSquareApiUtil.getUserDecks(loginToken);
if (onlineDecksResponse == null || onlineDecksResponse.getData() == null) {
autoSyncResult.setFlag(false);
autoSyncResult.setInfo("no online decks");
return autoSyncResult;
}
List<MyOnlineDeckDetail> onlineDecks = onlineDecksResponse.getData();
// 用于标记在线卡组是否在本地有对应
Map<String, Boolean> onlineDeckProcessed = new HashMap<>();
for (MyOnlineDeckDetail onlineDeck : onlineDecks) {
onlineDeckProcessed.put(onlineDeck.getDeckName(), false);
}
List<MyDeckItem> syncUploadDecks = new ArrayList<>();
List<MyDeckItem> newPushDecks = new ArrayList<>();
// 遍历本地卡组,处理同名卡组的情况
for (MyDeckItem localDeck : localDecks) {
boolean foundOnlineDeck = false;
String localDeckName = localDeck.getDeckName().replace(Constants.YDK_FILE_EX, "");
for (MyOnlineDeckDetail onlineDeck : onlineDecks) {
String onLineDeckName = onlineDeck.getDeckName().replace(Constants.YDK_FILE_EX, "");
if (localDeckName.equals(onLineDeckName)) {
// 标记该在线卡组已处理
onlineDeckProcessed.put(onLineDeckName, true);
// 标记该本地卡组已处理
foundOnlineDeck = true;
// 比对更新时间
long localUpdateDate = localDeck.getUpdateTimestamp();
long onlineUpdateDate = onlineDeck.getDeckUpdateDate();//todo 这里应该把2025-05-19T06:11:17转成毫秒,onlineDeck.getDeckUpdateDate();
LogUtil.d("seesee 本地和在线时间差", localDeckName + ": " + (localUpdateDate - onlineUpdateDate > 0 ? "本地的-新" : "在线的-新"));
LogUtil.d("seesee 差多少", localDeckName + ": " + (localUpdateDate - onlineUpdateDate));
if (onlineUpdateDate > localUpdateDate) {
// 在线卡组更新时间更晚,下载在线卡组覆盖本地卡组
LogUtil.w(TAG, "seesee *下载* " + localDeck.getDeckPath());
autoSyncResult.syncDownload.add(localDeck);
downloadOnlineDeck(onlineDeck, localDeck.getDeckPath(), onlineUpdateDate);
} else if (onlineUpdateDate == localUpdateDate) {
LogUtil.w(TAG, "seesee 不需要同步: " + localDeck.getDeckName());
//时间戳相同,不需要更新
} else {
// 本地卡组更新时间更晚,上传本地卡组覆盖在线卡组
localDeck.setDeckName(localDeck.getDeckName().replace(Constants.YDK_FILE_EX, ""));//TODO 上版本很多人已经传了带.ydk的云备份,姑且只在这次再次上传时去掉.ydk
localDeck.setDeckCoverCard1(DeckUtil.getFirstCardCode(localDeck.getDeckPath()));
localDeck.setDeckId(onlineDeck.getDeckId());
LogUtil.w(TAG, "seesee -上传-" + localDeck.getDeckName());
syncUploadDecks.add(localDeck);
autoSyncResult.syncUpload.add(localDeck);
}
break;
}
}
// 本地卡组在在线列表中不存在,则需要获取新的deckid来直接上传
if (!foundOnlineDeck) {
localDeck.setDeckName(localDeck.getDeckName().replace(Constants.YDK_FILE_EX, ""));
localDeck.setDeckCoverCard1(DeckUtil.getFirstCardCode(localDeck.getDeckPath()));
LogUtil.w(TAG, "seesee upload deck new: " + localDeck.getDeckName() + "、封面id:" + localDeck.getDeckCoverCard1());
newPushDecks.add(localDeck);
autoSyncResult.newUpload.add(localDeck);
}
}
LogUtil.w(TAG, "before syncMyDecks-unpload syncUploadDecks size(): " + syncUploadDecks.size());
if (!syncUploadDecks.isEmpty()) {
PushMultiResponse response = syncMyDecks(syncUploadDecks, loginToken);
autoSyncResult.pushResponse = response;
LogUtil.w(TAG, "after syncMyDecks-upload");
}
LogUtil.w(TAG, "newPushDecks size " + newPushDecks.size());
if (!newPushDecks.isEmpty()) {
LogUtil.w(TAG, "before new decks-upload");
PushMultiResponse pushNewRes = requestIdAndPushNewDecks(newPushDecks, loginToken);
LogUtil.w(TAG, "after new decks-upload");
}
LogUtil.w(TAG, "before download online decks " + onlineDecks.size());
// 处理只存在于在线的卡组(即本地没有同名卡组)
for (MyOnlineDeckDetail onlineDeck : onlineDecks) {
String onLineDeckName = onlineDeck.getDeckName().replace(Constants.YDK_FILE_EX, "");
if (!onlineDeckProcessed.get(onLineDeckName)) {
autoSyncResult.newDownload.add(onlineDeck);
LogUtil.w(TAG, "sync-download new deck: " + onlineDeck.getDeckName());
SyncMutliDeckResult.DownloadResult downloadResult = downloadMissingDeckToLocal(onlineDeck, onlineDeck.getDeckUpdateDate());
autoSyncResult.downloadResponse.add(downloadResult);
}
}
return autoSyncResult;
}
public static void synchronizeDecks() throws IOException { public static void synchronizeDecks() throws IOException {
// 检查用户是否登录 // 检查用户是否登录
LoginToken loginToken = DeckSquareApiUtil.getLoginData(); LoginToken loginToken = DeckSquareApiUtil.getLoginData();
...@@ -778,111 +667,4 @@ public class DeckSquareApiUtil { ...@@ -778,111 +667,4 @@ public class DeckSquareApiUtil {
LogUtil.w(TAG, "seesee +要上传的 本地卡组: " + newPushDecks); LogUtil.w(TAG, "seesee +要上传的 本地卡组: " + newPushDecks);
} }
} }
private static SyncMutliDeckResult.DownloadResult downloadMissingDeckToLocal(MyOnlineDeckDetail onlineDeck, Long onlineUpdateDate) {
try {
// 根据卡组ID查询在线卡组详情
DownloadDeckResponse deckResponse = DeckSquareApiUtil.getDeckById(onlineDeck.getDeckId());
if (deckResponse == null || deckResponse.getData() == null) {
LogUtil.e(TAG, "seesee Failed to get deck details for: " + onlineDeck.getDeckName());
return new SyncMutliDeckResult.DownloadResult(false, onlineDeck.getDeckId(), "Failed to get deck details for: " + onlineDeck.getDeckName());
}
// 构建本地文件路径
String deckDirectory = AppsSettings.get().getDeckDir();
File dir = new File(deckDirectory);
if (!dir.exists()) {
boolean created = dir.mkdirs();
if (!created) {
LogUtil.e(TAG, "seesee Failed to create directory: " + deckDirectory);
return new SyncMutliDeckResult.DownloadResult(false, onlineDeck.getDeckId(), "Failed to create directory: " + deckDirectory);
}
}
// 确保文件名包含.ydk扩展名
String fileName = onlineDeck.getDeckName();
if (!fileName.toLowerCase().endsWith(Constants.YDK_FILE_EX)) {
fileName += Constants.YDK_FILE_EX;
}
String fileFullPath = deckDirectory + "/" + fileName;
// 保存在线卡组到本地
boolean saved = DeckSquareFileUtil.saveFileToPath(fileFullPath, deckResponse.getData().getDeckYdk(), onlineUpdateDate);
if (!saved) {
LogUtil.e(TAG, "seesee Failed to save deck file: " + fileFullPath);
return new SyncMutliDeckResult.DownloadResult(false, onlineDeck.getDeckId(), "Failed to save deck file: " + fileFullPath);
}
LogUtil.i(TAG, "seesee Deck saved to: " + fileFullPath);
return new SyncMutliDeckResult.DownloadResult(true, onlineDeck.getDeckId());
} catch (Exception e) {
LogUtil.e(TAG, "seesee Error downloading missing deck: " + e.getMessage());
e.printStackTrace();
return new SyncMutliDeckResult.DownloadResult(false, onlineDeck.getDeckId(), "Error downloading missing deck: " + e.getMessage());
}
}
private static boolean downloadOnlineDeck(MyOnlineDeckDetail onlineDeck, String fileFullPath, Long onlineUpdateDate) {
try {
// 根据卡组ID查询在线卡组详情
DownloadDeckResponse deckResponse = DeckSquareApiUtil.getDeckById(onlineDeck.getDeckId());
if (deckResponse == null || deckResponse.getData() == null) {
LogUtil.e(TAG, "Failed to get deck details for: " + onlineDeck.getDeckName());
return false;
}
MyOnlineDeckDetail deckDetail = deckResponse.getData();
String deckContent = deckDetail.getDeckYdk();
// 保存在线卡组到本地
boolean saved = DeckSquareFileUtil.saveFileToPath(fileFullPath, deckContent, onlineUpdateDate);
if (!saved) {
LogUtil.e(TAG, "Failed to save deck file: " + fileFullPath);
return false;
}
LogUtil.i(TAG, "Deck updated: " + fileFullPath);
return true;
} catch (Exception e) {
LogUtil.e(TAG, "Error downloading deck: " + e.getMessage());
e.printStackTrace();
return false;
}
}
/**
* 将MyDeckItem调用单卡组同步接口推送到服务器
*
* @param localDeck
* @param onlineDeckId
* @param loginToken
* @return
*/
private static boolean uploadLocalDeck(MyDeckItem localDeck, String
onlineDeckId, LoginToken loginToken) {
try {
DeckFile deckFile = new DeckFile(localDeck.getDeckPath(), DeckType.ServerType.MY_SQUARE);
deckFile.setName(localDeck.getDeckName());
deckFile.setFirstCode(localDeck.getDeckCoverCard1());
// 上传本地卡组,使用在线卡组的deckId
PushSingleDeckResponse response = DeckSquareApiUtil.pushDeck(deckFile, loginToken, onlineDeckId);
if (response == null || !response.isData()) {
LogUtil.e(TAG, "Failed to upload deck: " + localDeck.getDeckName());
return false;
}
// 上传成功,更新本地卡组的deckId和上传状态
localDeck.setDeckId(onlineDeckId);
localDeck.setIdUploaded(2);
LogUtil.i(TAG, "Deck uploaded successfully: " + localDeck.getDeckName());
return true;
} catch (Exception e) {
LogUtil.e(TAG, "Error uploading deck: " + e.getMessage());
e.printStackTrace();
return false;
}
}
} }
\ No newline at end of file
...@@ -157,7 +157,7 @@ public class MyDeckListAdapter extends BaseQuickAdapter<MyOnlineDeckDetail, Base ...@@ -157,7 +157,7 @@ public class MyDeckListAdapter extends BaseQuickAdapter<MyOnlineDeckDetail, Base
@Override @Override
protected void convert(BaseViewHolder helper, MyOnlineDeckDetail item) { protected void convert(BaseViewHolder helper, MyOnlineDeckDetail item) {
helper.setText(R.id.my_deck_name, item.getDeckName()); helper.setText(R.id.my_deck_name, item.getDeckType().equals("") ? item.getDeckName() : "-"+item.getDeckType()+ "-\n" + item.getDeckName());
helper.setText(R.id.deck_update_date, convertToGMTDate(item.getDeckUpdateDate())); helper.setText(R.id.deck_update_date, convertToGMTDate(item.getDeckUpdateDate()));
ImageView cardImage = helper.getView(R.id.deck_info_image); ImageView cardImage = helper.getView(R.id.deck_info_image);
long code = item.getDeckCoverCard1(); long code = item.getDeckCoverCard1();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment