diff --git a/common/api.js b/common/api.js
index a601201..41b9504 100644
--- a/common/api.js
+++ b/common/api.js
@@ -1509,15 +1509,85 @@ var default_api = 'https://api.global-interaction.com/';
method: 'GET',
});
},
- listResources: function (resourceType, pageSize) {
+ listResources: function (resourceType, pageSize, page) {
return request('/api/v1/manager-center/resource-grants/resources', {
method: 'GET',
query: {
resource_type: resourceType,
+ page: page || 1,
page_size: pageSize || 20,
},
});
},
+ listAllResources: function (resourceType, pageSize) {
+ var requestedSize = Math.floor(Number(pageSize));
+ var size =
+ Number.isFinite(requestedSize) && requestedSize > 0
+ ? Math.min(requestedSize, 20)
+ : 20;
+
+ // Gateway 单页最多返回 20 条;经理中心必须根据 total 拉完剩余分页,否则较早创建但已开启赠送的资源会永久被截断。
+ return managerCenterAPI
+ .listResources(resourceType, size, 1)
+ .then(function (firstPage) {
+ var firstItems = (firstPage && firstPage.items) || [];
+ var total = Number(firstPage && firstPage.total);
+ if (!Number.isFinite(total) || total < firstItems.length) {
+ total = firstItems.length;
+ }
+ var pageCount = Math.max(1, Math.ceil(total / size));
+ if (pageCount === 1) return firstPage || { items: [] };
+
+ var remainingRequests = [];
+ for (var page = 2; page <= pageCount; page += 1) {
+ remainingRequests.push(
+ managerCenterAPI.listResources(
+ resourceType,
+ size,
+ page
+ )
+ );
+ }
+ return Promise.all(remainingRequests).then(
+ function (remainingPages) {
+ var resources = [];
+ var seenResourceIDs = Object.create(null);
+ [firstPage]
+ .concat(remainingPages)
+ .forEach(function (pageData) {
+ (
+ (pageData && pageData.items) ||
+ []
+ ).forEach(function (resource) {
+ var resourceID =
+ resource &&
+ (resource.resource_id ||
+ resource.resourceId);
+ // 分页期间后台可能调整排序;按资源 ID 去重可避免同一素材在两个相邻页重复展示。
+ if (
+ resourceID &&
+ seenResourceIDs[String(resourceID)]
+ ) {
+ return;
+ }
+ if (resourceID) {
+ seenResourceIDs[
+ String(resourceID)
+ ] = true;
+ }
+ resources.push(resource);
+ });
+ });
+ return Object.assign({}, firstPage || {}, {
+ items: resources,
+ page: 1,
+ page_size: size,
+ total: Math.max(total, resources.length),
+ });
+ }
+ );
+ });
+ },
grantResource: function (payload) {
return request('/api/v1/manager-center/resource-grants', {
method: 'POST',
diff --git a/gonghui/manager-center/index.html b/gonghui/manager-center/index.html
index 79ca033..c928a46 100644
--- a/gonghui/manager-center/index.html
+++ b/gonghui/manager-center/index.html
@@ -714,10 +714,10 @@
-
+
-
+