Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Y
YGOMobile-Cn-Ko-En
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Locked Files
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Security & Compliance
Security & Compliance
Dependency List
License Compliance
Packages
Packages
List
Container Registry
Analytics
Analytics
CI / CD
Code Review
Insights
Issues
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
fallenstardust
YGOMobile-Cn-Ko-En
Commits
38a4bae1
Commit
38a4bae1
authored
Jul 02, 2025
by
fallenstardust
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
登录后自动上传本地存在但未被云备份的卡组
parent
d06f7832
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
29 additions
and
16 deletions
+29
-16
mobile/src/main/java/cn/garymb/ygomobile/deck_square/DeckSquareApiUtil.java
...va/cn/garymb/ygomobile/deck_square/DeckSquareApiUtil.java
+29
-16
No files found.
mobile/src/main/java/cn/garymb/ygomobile/deck_square/DeckSquareApiUtil.java
View file @
38a4bae1
...
...
@@ -33,6 +33,7 @@ import cn.garymb.ygomobile.deck_square.api_response.SquareDeckResponse;
import
cn.garymb.ygomobile.deck_square.api_response.SyncDecksResponse
;
import
cn.garymb.ygomobile.lite.R
;
import
cn.garymb.ygomobile.ui.plus.VUiKit
;
import
cn.garymb.ygomobile.utils.DeckUtil
;
import
cn.garymb.ygomobile.utils.LogUtil
;
import
cn.garymb.ygomobile.utils.OkhttpUtil
;
import
cn.garymb.ygomobile.utils.SharedPreferenceUtil
;
...
...
@@ -444,45 +445,58 @@ public class DeckSquareApiUtil {
}
List
<
MyOnlineDeckDetail
>
onlineDecks
=
onlineDecksResponse
.
getData
();
// 用于标记在线卡组是否在本地有对应
Map
<
String
,
Boolean
>
onlineDeckProcessed
=
new
HashMap
<>();
for
(
MyOnlineDeckDetail
onlineDeck
:
onlineDecks
)
{
onlineDeckProcessed
.
put
(
onlineDeck
.
getDeckName
(),
false
);
}
// 用于标记本地卡组是否在在线有对应
Map
<
String
,
Boolean
>
localDeckProcessed
=
new
HashMap
<>();
for
(
MyDeckItem
localDeck
:
localDecks
)
{
String
deckName
=
localDeck
.
getDeckName
().
replace
(
".ydk"
,
""
);
localDeckProcessed
.
put
(
deckName
,
false
);
}
// 遍历本地卡组,处理同名卡组的情况
for
(
MyDeckItem
localDeck
:
localDecks
)
{
String
localDeckName
=
localDeck
.
getDeckName
();
localDeckName
=
localDeckName
.
replace
(
".ydk"
,
""
);
String
localDeckName
=
localDeck
.
getDeckName
().
replace
(
".ydk"
,
""
);
boolean
foundOnlineDeck
=
false
;
for
(
MyOnlineDeckDetail
onlineDeck
:
onlineDecks
)
{
if
(
localDeckName
.
equals
(
onlineDeck
.
getDeckName
()))
{
// 标记该在线卡组已处理
onlineDeckProcessed
.
put
(
onlineDeck
.
getDeckName
(),
true
);
// 标记该本地卡组已处理
localDeckProcessed
.
put
(
localDeckName
,
true
);
foundOnlineDeck
=
true
;
// 比对更新时间
String
localUpdateDate
=
localDeck
.
getUpdateDate
();
String
onlineUpdateDate
=
""
;
String
onlineUpdateDate
=
""
;
if
(
android
.
os
.
Build
.
VERSION
.
SDK_INT
>=
android
.
os
.
Build
.
VERSION_CODES
.
O
)
{
LocalDateTime
dateTime
=
LocalDateTime
.
parse
(
onlineDeck
.
getDeckUpdateDate
());
onlineUpdateDate
=
String
.
valueOf
(
dateTime
.
toInstant
(
ZoneOffset
.
UTC
).
toEpochMilli
());
}
LogUtil
.
d
(
"seesee"
,
localUpdateDate
+
"//"
+
onlineUpdateDate
);
if
(
onlineUpdateDate
!=
null
)
{
if
(
onlineUpdateDate
.
compareTo
(
localUpdateDate
)
>
0
)
{
// 在线卡组更新时间更晚,下载在线卡组覆盖本地卡组
downloadOnlineDeck
(
onlineDeck
,
localDeck
.
getDeckPath
());
}
else
{
// 本地卡组更新时间更晚,上传本地卡组覆盖在线卡组
uploadLocalDeck
(
localDeck
,
onlineDeck
.
getDeckId
(),
loginToken
);
}
}
else
{
if
(
onlineUpdateDate
!=
null
&&
onlineUpdateDate
.
compareTo
(
localUpdateDate
)
>
0
)
{
// 在线卡组更新时间更晚,下载在线卡组覆盖本地卡组
downloadOnlineDeck
(
onlineDeck
,
localDeck
.
getDeckPath
());
}
else
{
// 本地卡组更新时间更晚,上传本地卡组覆盖在线卡组
uploadLocalDeck
(
localDeck
,
onlineDeck
.
getDeckId
(),
loginToken
);
}
break
;
}
}
// 本地卡组在在线列表中不存在,直接上传
if
(!
foundOnlineDeck
)
{
DeckFile
deckFile
=
new
DeckFile
(
localDeck
.
getDeckName
(),
new
File
(
localDeck
.
getDeckPath
()),
DeckType
.
ServerType
.
MY_SQUARE
,
localDeck
.
getDeckId
());
deckFile
.
setName
(
localDeck
.
getDeckName
());
deckFile
.
setFirstCode
(
DeckUtil
.
getFirstCardCode
(
localDeck
.
getDeckPath
()));
requestIdAndPushDeck
(
deckFile
,
loginToken
);
}
}
// 处理只存在于在线的卡组(即本地没有同名卡组)
...
...
@@ -493,7 +507,6 @@ public class DeckSquareApiUtil {
}
return
true
;
}
private
static
boolean
downloadMissingDeckToLocal
(
MyOnlineDeckDetail
onlineDeck
)
{
...
...
@@ -579,7 +592,7 @@ public class DeckSquareApiUtil {
try
{
DeckFile
deckFile
=
new
DeckFile
(
localDeck
.
getDeckName
(),
new
File
(
localDeck
.
getDeckPath
()),
DeckType
.
ServerType
.
MY_SQUARE
,
localDeck
.
getDeckId
());
deckFile
.
setName
(
localDeck
.
getDeckName
());
deckFile
.
setFirstCode
(
localDeck
.
getDeckCoverCard1
(
));
deckFile
.
setFirstCode
(
DeckUtil
.
getFirstCardCode
(
localDeck
.
getDeckPath
()
));
// 上传本地卡组,使用在线卡组的deckId
PushDeckResponse
response
=
DeckSquareApiUtil
.
pushDeck
(
deckFile
,
loginToken
,
onlineDeckId
);
if
(
response
==
null
||
!
response
.
isData
())
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment