diff --git a/common/api.js b/common/api.js
index 2ef11f9..09b0270 100644
--- a/common/api.js
+++ b/common/api.js
@@ -130,7 +130,9 @@ var default_api = 'https://api.global-interaction.com/';
if (!api) return '';
if (env === 'local' && api.local) return normalizeBaseURL(api.local);
if (env === 'test' && api.test) return normalizeBaseURL(api.test);
- return api.prod || api.default ? normalizeBaseURL(api.prod || api.default) : '';
+ return api.prod || api.default
+ ? normalizeBaseURL(api.prod || api.default)
+ : '';
}
function buildURL(path, query) {
@@ -191,17 +193,51 @@ var default_api = 'https://api.global-interaction.com/';
return storedToken;
}
+ function themeAppCode(appCode) {
+ appCode = String(appCode || 'lalu')
+ .trim()
+ .toLowerCase();
+ return appCode === 'yumi' || appCode === 'aslan' ? appCode : 'lalu';
+ }
+
+ function applyAppTheme(appCode) {
+ if (!window.document || !window.document.documentElement) return;
+ window.document.documentElement.setAttribute(
+ 'data-hy-app-code',
+ themeAppCode(appCode)
+ );
+ }
+
+ function peekAppCode() {
+ var queryAppCode =
+ readQuery('app') || readQuery('app_code') || readQuery('appCode');
+ if (queryAppCode) return queryAppCode;
+ if (memoryAppCode) return memoryAppCode;
+ if (!shouldPersist()) return 'lalu';
+ return window.localStorage.getItem(APP_CODE_KEY) || 'lalu';
+ }
+
function getAppCode() {
- var queryAppCode = readQuery('app') || readQuery('app_code') || readQuery('appCode');
+ var queryAppCode =
+ readQuery('app') || readQuery('app_code') || readQuery('appCode');
if (queryAppCode) {
memoryAppCode = queryAppCode;
if (shouldPersist())
window.localStorage.setItem(APP_CODE_KEY, queryAppCode);
+ applyAppTheme(queryAppCode);
return queryAppCode;
}
- if (memoryAppCode) return memoryAppCode;
- if (!shouldPersist()) return 'lalu';
- return window.localStorage.getItem(APP_CODE_KEY) || 'lalu';
+ if (memoryAppCode) {
+ applyAppTheme(memoryAppCode);
+ return memoryAppCode;
+ }
+ if (!shouldPersist()) {
+ applyAppTheme('lalu');
+ return 'lalu';
+ }
+ var storedAppCode = window.localStorage.getItem(APP_CODE_KEY) || 'lalu';
+ applyAppTheme(storedAppCode);
+ return storedAppCode;
}
function setAccessToken(token) {
@@ -218,6 +254,7 @@ var default_api = 'https://api.global-interaction.com/';
function setAppCode(appCode) {
memoryAppCode = appCode || '';
+ applyAppTheme(appCode || 'lalu');
if (appCode) {
if (shouldPersist())
window.localStorage.setItem(APP_CODE_KEY, appCode);
@@ -226,6 +263,8 @@ var default_api = 'https://api.global-interaction.com/';
if (shouldPersist()) window.localStorage.removeItem(APP_CODE_KEY);
}
+ applyAppTheme(peekAppCode());
+
function setAppConfig(config) {
activeAppConfig = config || null;
if (activeAppConfig && activeAppConfig.app) {
@@ -239,17 +278,27 @@ var default_api = 'https://api.global-interaction.com/';
}
function loadAppConfig(scope) {
- var appCode = String(getAppCode() || 'lalu').trim().toLowerCase();
+ var appCode = String(getAppCode() || 'lalu')
+ .trim()
+ .toLowerCase();
if (!appCode || appCode === 'lalu') {
activeAppConfig = null;
return Promise.resolve(null);
}
var scopePath = String(scope || '').replace(/^\/+|\/+$/g, '');
var configPath =
- (scopePath ? '/' + scopePath : '.') + '/config/' + appCode + '.json';
- var configURL = new URL(configPath, window.location.origin + window.location.pathname);
+ (scopePath ? '/' + scopePath : '.') +
+ '/config/' +
+ appCode +
+ '.json';
+ var configURL = new URL(
+ configPath,
+ window.location.origin + window.location.pathname
+ );
return window
- .fetch(configURL.toString(), { cache: shouldPersist() ? 'default' : 'no-store' })
+ .fetch(configURL.toString(), {
+ cache: shouldPersist() ? 'default' : 'no-store',
+ })
.then(function (response) {
if (!response.ok) return null;
return response.json();
@@ -322,7 +371,7 @@ var default_api = 'https://api.global-interaction.com/';
: payload &&
Object.prototype.hasOwnProperty.call(payload, 'body')
? payload.body
- : payload;
+ : payload;
});
}
@@ -494,7 +543,8 @@ var default_api = 'https://api.global-interaction.com/';
).toUpperCase();
var candidates = countries.filter(function (country) {
return (
- String(country.country_code || '').toUpperCase() === countryCode ||
+ String(country.country_code || '').toUpperCase() ===
+ countryCode ||
String(country.country_code || '').toUpperCase() === 'GLOBAL'
);
});
@@ -616,9 +666,15 @@ var default_api = 'https://api.global-interaction.com/';
return {
id: item.id || '',
pay_country_id:
- item.payCountryId || item.pay_country_id || item.id || '',
+ item.payCountryId ||
+ item.pay_country_id ||
+ item.id ||
+ '',
payCountryId:
- item.payCountryId || item.pay_country_id || item.id || '',
+ item.payCountryId ||
+ item.pay_country_id ||
+ item.id ||
+ '',
country_id: item.countryId || item.country_id || '',
currency_code: item.currency || item.currency_code || '',
currencyCode: item.currency || item.currency_code || '',
@@ -640,8 +696,12 @@ var default_api = 'https://api.global-interaction.com/';
var products = (options.commodity || options.products || []).map(
function (item) {
var content = Number(item.content || 0);
- var awardContent = Number(item.awardContent || item.award_content || 0);
- var amountUsd = normalizeAmountUsd(item.amountUsd || item.amount_usd);
+ var awardContent = Number(
+ item.awardContent || item.award_content || 0
+ );
+ var amountUsd = normalizeAmountUsd(
+ item.amountUsd || item.amount_usd
+ );
return {
product_id: item.id,
productId: item.id,
@@ -707,7 +767,8 @@ var default_api = 'https://api.global-interaction.com/';
}
function yumiPaymentMethods(options) {
- var channels = (options.raw && options.raw.channels) || options.channels || [];
+ var channels =
+ (options.raw && options.raw.channels) || options.channels || [];
var supported = {};
channels.forEach(function (item) {
var channel = item.channel || {};
@@ -740,7 +801,8 @@ var default_api = 'https://api.global-interaction.com/';
trade_no: order.tradeNo || order.trade_no || '',
provider_code: factoryCode === 'MIFA_PAY' ? 'mifapay' : factoryCode,
factory_code: factoryCode,
- pay_url: order.requestUrl || order.request_url || order.pay_url || '',
+ pay_url:
+ order.requestUrl || order.request_url || order.pay_url || '',
currency_code: order.currency || order.currency_code || '',
country_code: order.countryCode || order.country_code || '',
provider_amount_minor: decimalToMinor(order.amount),
@@ -777,16 +839,22 @@ var default_api = 'https://api.global-interaction.com/';
var rechargeAPI = {
context: function (displayUserID) {
if (isAslanWebPay()) {
- return request(appEndpoint('context', '/order/web/pay/h5/context'), {
- method: 'GET',
- query: aslanUserQuery(displayUserID),
- });
+ return request(
+ appEndpoint('context', '/order/web/pay/h5/context'),
+ {
+ method: 'GET',
+ query: aslanUserQuery(displayUserID),
+ }
+ );
}
if (isYumiWebPay()) {
- return request(appEndpoint('context', '/order/web/pay/user-profile'), {
- method: 'GET',
- query: configuredWebPayUserQuery(displayUserID),
- }).then(mapYumiContext);
+ return request(
+ appEndpoint('context', '/order/web/pay/user-profile'),
+ {
+ method: 'GET',
+ query: configuredWebPayUserQuery(displayUserID),
+ }
+ ).then(mapYumiContext);
}
return request('/api/v1/recharge/h5/context', {
method: 'GET',
@@ -803,10 +871,13 @@ var default_api = 'https://api.global-interaction.com/';
regionId: extra && (extra.region_id || extra.regionId),
userId: extra && (extra.user_id || extra.userId),
});
- return request(appEndpoint('options', '/order/web/pay/h5/options'), {
- method: 'GET',
- query: query,
- }).then(function (options) {
+ return request(
+ appEndpoint('options', '/order/web/pay/h5/options'),
+ {
+ method: 'GET',
+ query: query,
+ }
+ ).then(function (options) {
options = options || {};
if (isYumiWebPay()) {
return mapYumiOptions(
@@ -828,37 +899,45 @@ var default_api = 'https://api.global-interaction.com/';
},
createOrder: function (payload) {
if (isAslanWebPay()) {
- return request(appEndpoint('orders', '/order/web/pay/h5/orders'), {
- method: 'POST',
- body: {
- applicationId: activeAppConfig.application_id,
- goodsId: payload && payload.product_id,
- payCountryId: payload && payload.pay_country_id,
- userId: payload && payload.user_id,
- providerCode: payload && payload.provider_code,
- payWay: payload && payload.pay_way,
- payType: payload && payload.pay_type,
- channelCode: payload && payload.channel_code,
- returnUrl: payload && payload.return_url,
- commandId: payload && payload.command_id,
- type: (activeAppConfig && activeAppConfig.type) || 'GOLD',
- language: readLanguageQuery() || 'en',
- },
- });
+ return request(
+ appEndpoint('orders', '/order/web/pay/h5/orders'),
+ {
+ method: 'POST',
+ body: {
+ applicationId: activeAppConfig.application_id,
+ goodsId: payload && payload.product_id,
+ payCountryId: payload && payload.pay_country_id,
+ userId: payload && payload.user_id,
+ providerCode: payload && payload.provider_code,
+ payWay: payload && payload.pay_way,
+ payType: payload && payload.pay_type,
+ channelCode: payload && payload.channel_code,
+ returnUrl: payload && payload.return_url,
+ commandId: payload && payload.command_id,
+ type:
+ (activeAppConfig && activeAppConfig.type) ||
+ 'GOLD',
+ language: readLanguageQuery() || 'en',
+ },
+ }
+ );
}
if (isYumiWebPay()) {
- return request(appEndpoint('orders', '/order/web/pay/recharge'), {
- method: 'POST',
- body: {
- applicationId: activeAppConfig.application_id,
- goodsId: payload && payload.product_id,
- payCountryId: payload && payload.pay_country_id,
- userId: payload && payload.user_id,
- channelCode: payload && payload.channel_code,
- newVersion: true,
- appVersion: 'h5',
- },
- }).then(mapYumiOrder);
+ return request(
+ appEndpoint('orders', '/order/web/pay/recharge'),
+ {
+ method: 'POST',
+ body: {
+ applicationId: activeAppConfig.application_id,
+ goodsId: payload && payload.product_id,
+ payCountryId: payload && payload.pay_country_id,
+ userId: payload && payload.user_id,
+ channelCode: payload && payload.channel_code,
+ newVersion: true,
+ appVersion: 'h5',
+ },
+ }
+ ).then(mapYumiOrder);
}
return request('/api/v1/recharge/h5/orders', {
method: 'POST',
@@ -880,21 +959,24 @@ var default_api = 'https://api.global-interaction.com/';
getOrder: function (orderID, displayUserID) {
if (isAslanWebPay()) {
return request(
- appEndpoint('order', '/order/web/pay/h5/orders/{orderId}').replace(
- '{orderId}',
- encodeURIComponent(orderID || '')
- ),
+ appEndpoint(
+ 'order',
+ '/order/web/pay/h5/orders/{orderId}'
+ ).replace('{orderId}', encodeURIComponent(orderID || '')),
{ method: 'GET' }
);
}
if (isYumiWebPay()) {
- return request(appEndpoint('order', '/order/web/pay/order-status'), {
- method: 'GET',
- query: {
- orderId: orderID || '',
- userId: displayUserID || '',
- },
- }).then(mapYumiOrderStatus);
+ return request(
+ appEndpoint('order', '/order/web/pay/order-status'),
+ {
+ method: 'GET',
+ query: {
+ orderId: orderID || '',
+ userId: displayUserID || '',
+ },
+ }
+ ).then(mapYumiOrderStatus);
}
return request(
'/api/v1/recharge/h5/orders/' +
@@ -1107,15 +1189,21 @@ var default_api = 'https://api.global-interaction.com/';
method: 'GET',
});
},
- searchUsers: function (keyword, pageSize) {
+ searchUsers: function (keyword, pageSize, scope) {
return request('/api/v1/manager-center/users/search', {
method: 'GET',
query: {
keyword: keyword,
page_size: pageSize || 20,
+ scope: scope,
},
});
},
+ listCountries: function () {
+ return request('/api/v1/countries', {
+ method: 'GET',
+ });
+ },
listResources: function (resourceType, pageSize) {
return request('/api/v1/manager-center/resource-grants/resources', {
method: 'GET',
@@ -1175,6 +1263,12 @@ var default_api = 'https://api.global-interaction.com/';
body: payload || {},
});
},
+ transferUserCountry: function (payload) {
+ return request('/api/v1/manager-center/users/country', {
+ method: 'POST',
+ body: payload || {},
+ });
+ },
};
var superadminCenterAPI = bdLeaderCenterAPI;
diff --git a/common/theme.css b/common/theme.css
index ec1001d..d593b86 100644
--- a/common/theme.css
+++ b/common/theme.css
@@ -18,6 +18,19 @@
--hy-theme-button-disabled-text: #9a8faa;
--hy-theme-button-shadow: 0 8px 18px rgba(125, 87, 199, 0.18);
--hy-theme-button-disabled-shadow: none;
+ --hy-theme-focus-ring: rgba(197, 166, 246, 0.18);
+ --hy-theme-role-shadow: 0 6px 16px rgba(91, 62, 142, 0.08);
+ --hy-theme-modal-shadow: 0 22px 54px rgba(40, 25, 72, 0.26);
+ --hy-theme-checkout-shadow: 0 -10px 28px rgba(40, 25, 72, 0.12);
+ --hy-theme-radius-tiny: 3px;
+ --hy-theme-radius-icon: 11px;
+ --hy-theme-radius-small: 12px;
+ --hy-theme-radius-control: 14px;
+ --hy-theme-radius-card: 16px;
+ --hy-theme-radius-language: 17px;
+ --hy-theme-radius-modal: 22px;
+ --hy-theme-radius-pill: 999px;
+ --hy-theme-radius-circle: 50%;
--hy-theme-hero: linear-gradient(
151deg,
#f0e6ff 0%,
@@ -25,3 +38,65 @@
rgba(251, 248, 255, 0.88) 100%
);
}
+
+:root[data-hy-app-code='yumi'] {
+ --hy-theme-bg: #f6fff8;
+ --hy-theme-surface: rgba(255, 255, 255, 0.97);
+ --hy-theme-surface-soft: #fbfffc;
+ --hy-theme-line: #d7efdf;
+ --hy-theme-primary: #bceccc;
+ --hy-theme-primary-strong: #6fd58f;
+ --hy-theme-primary-deep: #148846;
+ --hy-theme-primary-soft: #e8f8ee;
+ --hy-theme-accent: #8de0a8;
+ --hy-theme-success: #20b977;
+ --hy-theme-shadow: 0 10px 24px rgba(20, 136, 70, 0.075);
+ --hy-theme-button: #148846;
+ --hy-theme-button-disabled: #ccefd8;
+ --hy-theme-button-disabled-text: #6c9378;
+ --hy-theme-button-shadow: 0 8px 18px rgba(20, 136, 70, 0.18);
+ --hy-theme-focus-ring: rgba(20, 136, 70, 0.16);
+ --hy-theme-role-shadow: 0 6px 16px rgba(20, 136, 70, 0.08);
+ --hy-theme-modal-shadow: 0 22px 54px rgba(20, 84, 42, 0.22);
+ --hy-theme-checkout-shadow: 0 -10px 28px rgba(20, 84, 42, 0.1);
+ --hy-theme-radius-tiny: 50%;
+ --hy-theme-radius-icon: 50%;
+ --hy-theme-radius-small: 50%;
+ --hy-theme-radius-control: 50%;
+ --hy-theme-radius-card: 50%;
+ --hy-theme-radius-language: 50%;
+ --hy-theme-radius-modal: 50%;
+ --hy-theme-radius-pill: 50%;
+ --hy-theme-radius-circle: 50%;
+}
+
+:root[data-hy-app-code='aslan'] {
+ --hy-theme-bg: #fffdf3;
+ --hy-theme-surface: rgba(255, 255, 255, 0.98);
+ --hy-theme-surface-soft: #fffbf0;
+ --hy-theme-line: #efdc9f;
+ --hy-theme-primary: #ffe071;
+ --hy-theme-primary-strong: #f1bd2d;
+ --hy-theme-primary-deep: #8a5a00;
+ --hy-theme-primary-soft: #fff2bd;
+ --hy-theme-accent: #f6c43c;
+ --hy-theme-success: #2aa875;
+ --hy-theme-shadow: 0 10px 24px rgba(138, 90, 0, 0.08);
+ --hy-theme-button: #9b6500;
+ --hy-theme-button-disabled: #f0dfa9;
+ --hy-theme-button-disabled-text: #8f7b4c;
+ --hy-theme-button-shadow: 0 8px 18px rgba(138, 90, 0, 0.18);
+ --hy-theme-focus-ring: rgba(155, 101, 0, 0.18);
+ --hy-theme-role-shadow: 0 6px 16px rgba(138, 90, 0, 0.08);
+ --hy-theme-modal-shadow: 0 22px 54px rgba(92, 60, 0, 0.22);
+ --hy-theme-checkout-shadow: 0 -10px 28px rgba(92, 60, 0, 0.1);
+ --hy-theme-radius-tiny: 0;
+ --hy-theme-radius-icon: 0;
+ --hy-theme-radius-small: 0;
+ --hy-theme-radius-control: 0;
+ --hy-theme-radius-card: 0;
+ --hy-theme-radius-language: 0;
+ --hy-theme-radius-modal: 0;
+ --hy-theme-radius-pill: 0;
+ --hy-theme-radius-circle: 0;
+}
diff --git a/gonghui/manager-center/index.html b/gonghui/manager-center/index.html
index 448ae4f..8a8a7b6 100644
--- a/gonghui/manager-center/index.html
+++ b/gonghui/manager-center/index.html
@@ -107,6 +107,31 @@
>
+
+
+
+