项目初始化

This commit is contained in:
Taric Xin
2021-11-26 16:34:35 +08:00
parent 66644bcf0a
commit 5287578452
354 changed files with 45736 additions and 0 deletions

View File

@ -0,0 +1,306 @@
/*
* @Author: Maple
* @Date: 2021-03-22 11:42:26
* @LastEditors: Do not edit
* @LastEditTime: 2021-05-27 11:07:18
* @Description: 全局系统服务
*/
import { Injectable, Injector } from '@angular/core';
import { Observable, zip } from 'rxjs';
import { catchError, switchMap } from 'rxjs/operators';
import { CoreService } from 'src/app/core/core.service';
import { EAEncryptUtil } from '../../utils';
import { BaseService } from '../core/base.service';
@Injectable({
providedIn: 'root',
})
export class EAPlatformService extends BaseService {
public $api_update_platform_name = `/chia/operationInfo/updatePlatformName`; // 修改当前登录平台名称
/**
* 判断是否已经设置平台名称
*/
private $api_is_set_platform_name = `/chia/operationInfo/judgeSetPlatformName`;
/**
* 获取当前登录用户绑定的运营商有效期
*/
private $api_get_validity_period_of_operator = `/chia/operationInfo/getOperationDetailByToken`;
/**
* 缓存平台状态键名
*/
private _cachePlatformStatusKey = '_cpsk';
/**
* 运营商剩余有效期
*/
private _validityPeriodOfOperator: Observable<number> | null = null;
/**
* 允许运营商超出有效期时登录
*/
private _allowLoginBeyondValidity = true;
/**
* 获取基础配置
*/
// public $api_get_config = `/scce/pbc/pbc/baseConfig/getBaseConfigList?_allow_anonymous=true`;
constructor(public injector: Injector) {
super(injector);
}
// 注入核心服务
private get coreSrv(): CoreService {
return this.injector.get(CoreService);
}
/**
* 获取平台状态(参考Http状态码)
* 200平台状态正常
* 401: 未设置平台名称
* 403
*/
getPlatformStatus(): number {
const encryptStatus = this.coreSrv.cacheSrv.getNone<string>(this._cachePlatformStatusKey);
try {
const status = EAEncryptUtil.deencryptByDeAES(encryptStatus);
return +status;
} catch (error) {
return 0;
}
}
/**
* 获取当前运营商剩余有效期
* @returns 有效期天数
*/
getValidityPeriodOfOperator(): Observable<number> {
return this.loadValidityPeriodOfOperator();
}
/**
* 加载平台状态
*
* @returns 平台状态码
*/
loadPlatformStatus(): Promise<void> {
return new Promise((resolve) => {
zip(this.loadIsSetPlatformName(), this.loadValidityPeriodOfOperator())
.pipe(
catchError((res) => {
console.error(`加载平台状态时发生错误:`, res);
this.msgSrv.error(`加载平台状态时发生错误!`);
resolve();
return [];
}),
)
.subscribe(
([nameStauts, validityPeriod]) => this.setPlatformStatus(nameStauts, validityPeriod),
() => {},
() => resolve(),
);
});
}
/**
* 获取平台名称设置状态
* @param nameStatus 平台名称设置状态
* @param validityPeriod 运营剩余有效期天数
*/
setPlatformStatus(nameStatus: boolean, validityPeriod: number) {
let status = 0;
// 判断平台名称
if (status !== 200) {
status = nameStatus ? 200 : 401;
}
// 判断运营商有效期
if (!this._allowLoginBeyondValidity && status === 200) {
status = validityPeriod > 0 ? 200 : 402;
}
// 加密并保存平台状态
const ciphertext = EAEncryptUtil.encryptByEnAES(status.toString());
this.coreSrv.cacheSrv.set(this._cachePlatformStatusKey, ciphertext);
}
/**
* 获取平台是否设置平台名称
* @returns true | false
*/
private loadIsSetPlatformName(): Observable<boolean> {
return this.request(this.$api_is_set_platform_name).pipe(switchMap(async (sm) => sm === true));
}
/**
* 获取当前账户绑定的运营商有效期
* @returns 有效期时间(天)
*/
private loadValidityPeriodOfOperator(): Observable<number> {
return this.request(this.$api_get_validity_period_of_operator);
}
/**
* 获取指定平台的地址
* @param platformName 平台名称
* @param hasOperationCode 是否需要运营商代码
*/
getPlatfomrUrl(platformName: string, hasOperationCode = true) {
const url: string = this.getAllPlatformUrls().find((r: any) => r.name === platformName)?.url || '';
if (hasOperationCode) {
return url;
}
return url.includes('?') ? url.substring(0, url.indexOf('?')) : url;
}
/**
* 获取所有平台的地址
*/
getAllPlatformUrls() {
let platforms: any = [];
const sc = this.coreSrv.tokenSrv.get()?.sc;
const protocol = window.location.protocol;
const hostname = window.location.hostname;
const port = window.location.port;
switch (hostname) {
case 'localhost':
platforms = [
{
name: '运营后台',
url: `${protocol}//${hostname}:8001/#/?v=${sc}`,
},
{
name: '开放平台',
url: `${protocol}//localhost:8005/#/?v=${sc}`,
},
{
name: '供应商平台',
url: `${protocol}//localhost:8004/#/?v=${sc}`,
},
{
name: '分销商平台',
url: `${protocol}//localhost:8003/#/?v=${sc}`,
},
{
name: '代理商平台',
url: `${protocol}//localhost:8002/#/?v=${sc}`,
},
];
break;
case 'sce-ows-test.380star.com':
platforms = [
{
name: '运营后台',
url: `${protocol}//${hostname}${port ? ':' + port : ''}/#/?v=${sc}`,
},
{
name: '开放平台',
url: `${protocol}//sce-opc-test.380star.com${port ? ':' + port : ''}/#/?v=${sc}`,
},
{
name: '供应商平台',
url: `${protocol}//sce-cvc-test.380star.com${port ? ':' + port : ''}/#/?v=${sc}`,
},
{
name: '分销商平台',
url: `${protocol}//sce-cdc-test.380star.com${port ? ':' + port : ''}/#/?v=${sc}`,
},
{
name: '代理商平台',
url: `${protocol}//sce-cac-test.380star.com${port ? ':' + port : ''}/#/?v=${sc}`,
},
];
break;
case 'sce-ows-pre.380star.com':
platforms = [
{
name: '运营后台',
url: `${protocol}//${hostname}${port ? ':' + port : ''}/#/?v=${sc}`,
},
{
name: '开放平台',
url: `${protocol}//sce-opc-pre.380star.com${port ? ':' + port : ''}/#/?v=${sc}`,
},
{
name: '供应商平台',
url: `${protocol}//sce-cvc-pre.380star.com${port ? ':' + port : ''}/#/?v=${sc}`,
},
{
name: '分销商平台',
url: `${protocol}//sce-cdc-pre.380star.com${port ? ':' + port : ''}/#/?v=${sc}`,
},
{
name: '代理商平台',
url: `${protocol}//sce-cac-pre.380star.com${port ? ':' + port : ''}/#/?v=${sc}`,
},
];
break;
case 'sce-ows-demo.380star.com':
platforms = [
{
name: '运营后台',
url: `${protocol}//${hostname}${port ? ':' + port : ''}/#/?v=${sc}`,
},
{
name: '开放平台',
url: `${protocol}//sce-opc-demo.380star.com${port ? ':' + port : ''}/#/?v=${sc}`,
},
{
name: '供应商平台',
url: `${protocol}//sce-cvc-demo.380star.com${port ? ':' + port : ''}/#/?v=${sc}`,
},
{
name: '分销商平台',
url: `${protocol}//sce-cdc-demo.380star.com${port ? ':' + port : ''}/#/?v=${sc}`,
},
{
name: '代理商平台',
url: `${protocol}//sce-cac-demo.380star.com${port ? ':' + port : ''}/#/?v=${sc}`,
},
];
break;
case 'sce-ows.380star.com':
platforms = [
{
name: '运营后台',
url: `${protocol}//${hostname}${port ? ':' + port : ''}/#/?v=${sc}`,
},
{
name: '开放平台',
url: `${protocol}//sce-opc.380star.com${port ? ':' + port : ''}/#/?v=${sc}`,
},
{
name: '供应商平台',
url: `${protocol}//sce-cvc.380star.com${port ? ':' + port : ''}/#/?v=${sc}`,
},
{
name: '分销商平台',
url: `${protocol}//sce-cdc.380star.com${port ? ':' + port : ''}/#/?v=${sc}`,
},
{
name: '代理商平台',
url: `${protocol}//sce-cac.380star.com${port ? ':' + port : ''}/#/?v=${sc}`,
},
];
break;
}
return platforms;
}
/**
* 获取运营商代码
* @returns 运营商代码
*/
getOperatorCode() {
return this.coreSrv.tokenSrv.get()?.sc || this.coreSrv.settingSrv.getData('app')?.v || '';
}
/**
* 获取平台配置信息列表
*/
// getPlatformConfigurationList(): Observable<Array<any>> {
// return this.request(this.$api_get_config, {
// pageIndex: 1,
// pageSize: 999,
// });
// }
}