fix(oppo): remap audit_status=5 to UNDER_REVIEW; restore REJECTED→UNDER_REVIEW in poll

OPPO returns audit_status=5 for versions currently under review (审核中);
previously this was mapped to REJECTED causing a state mismatch. Only 444
is now treated as the rejected aggregate code.

Also extend the scheduled poll to restore REJECTED→UNDER_REVIEW for any
store (not just Xiaomi) when the vendor API reports the version is under
review, covering cases where the submission succeeded after our platform
recorded an exception.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
这个提交包含在:
XuqmGroup 2026-05-20 10:59:52 +08:00
父节点 4d2faa33de
当前提交 4432c7dc28

查看文件

@ -554,15 +554,19 @@ public class StoreSubmissionService {
String onlineVersionName = appData.path("versionName").asText("");
int auditInt = appData.path("audit_status").asInt(appData.path("auditStatus").asInt(-1));
String submittedCode = String.valueOf(v.getVersionCode());
// OPPO audit_status: 2/3/4/111 = online variants, 444 = rejected aggregate.
// 5 is NOT rejected it maps to "审核中" (under review) per observed API behavior.
boolean isLive = auditInt == 111 || List.of("2", "3", "4").contains(String.valueOf(auditInt));
StoreRemoteState.ReviewState reviewState;
if (auditInt == 444 || "5".equals(String.valueOf(auditInt))) {
if (auditInt == 444) {
reviewState = StoreRemoteState.ReviewState.REJECTED;
} else if (isLive) {
reviewState = StoreRemoteState.ReviewState.ONLINE;
} else {
reviewState = StoreRemoteState.ReviewState.UNDER_REVIEW;
}
log.info("OPPO remote state: versionId={} auditInt={} onlineCode={} submittedCode={} reviewState={}",
v.getId(), auditInt, onlineVersionCode, submittedCode, reviewState);
return StoreRemoteState.ok(
AppStoreConfigEntity.StoreType.OPPO,
reviewState,
@ -728,6 +732,14 @@ public class StoreSubmissionService {
storeService.updateStoreReview(v.getId(), storeType,
AppVersionEntity.StoreReviewState.UNDER_REVIEW,
"小米应用商店当前提交版本审核中");
} else if (polled.getReviewState() == StoreRemoteState.ReviewState.UNDER_REVIEW) {
// Submission may have succeeded after our platform recorded an exception.
// Remote shows under review restore from REJECTED.
log.info("Store review poll: {}/{} was REJECTED but remote shows UNDER_REVIEW — restoring",
v.getId(), storeType);
storeService.updateStoreReview(v.getId(), storeType,
AppVersionEntity.StoreReviewState.UNDER_REVIEW,
"厂商审核状态轮询检测:商店显示审核中");
}
// otherwise leave REJECTED as-is
}