项目初始化

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,125 @@
import { Injectable, Injector } from '@angular/core';
import { cacheConf } from '@conf/cache.conf';
import { Observable } from 'rxjs';
import { tap } from 'rxjs/operators';
import { BaseService } from '../core/base.service';
import { EACacheService } from '../core/cache.service';
@Injectable({
providedIn: 'root',
})
export class EAEnterpriseService extends BaseService {
// 获取当前用户绑定的分销商/代理商/供应商
public $api_get_my_enterprises = `/chia/enterpriseInfo/list/queryMyAppInfo`;
// 向服务器变更默认企业
public $api_selectEnterprise = '/chia/userApp/selectEnterprise';
constructor(public injector: Injector) {
super(injector);
}
// 注入缓存服务
private get cacheSrv(): EACacheService {
return this.injector.get(EACacheService);
}
/**
* 加载企业信息
*/
loadEnterpises(): Observable<any> {
return this.request(this.$api_get_my_enterprises);
}
/**
* 根据租户ID获取指定的企业
* @param tenantId 租户ID
*/
getOne(tenantId: string): any {
const enterprises = this.getAll();
return enterprises.find((r) => r.tenantId === tenantId);
}
/**
* 获取所有企业
*/
getAll(): Array<any> {
return this.cacheSrv.get(cacheConf.enterprise) || [];
}
/**
* 获取默认企业
*/
getDefault(): any {
const list = this.getAll();
return list.find((r) => r.defaultState) || list[0] || null;
}
/**
* 设置默认企业
*/
setDefault(tenantId: string): void {
// 获取指定tenantId的企业
const enterprise = this.getOne(tenantId);
if (enterprise) {
let enterpriseList = this.getAll();
// 设置指定tenantId的企业为默认企业其他的企业为非默认企业
enterpriseList = enterpriseList.map((m) => {
if (m.tenantId === enterprise.tenantId) {
m.defaultState = true;
} else {
m.defaultState = false;
}
return m;
});
// 重新缓存新的企业列表
this.setCache(enterpriseList);
// 广播当前环境信息
this.envSrv.setEnvironment(enterprise.appId, enterprise.tenantId);
}
}
/**
* 设置缓存企业信息
* @param enterpriseData 企业信息信息
*/
setCache(enterpriseData: any): void {
this.cacheSrv.set(cacheConf.enterprise, enterpriseData);
}
/**
* 选择企业
* @param item 企业实体
* 选择企业进入管理后台
* 1. 判断当前企业是否被冻结如企业为冻结状态则toast提示“供应商已被冻结无法访问请联系客服处理”
* 2. 向服务器请求变更当前企业身份
* 3. 服务器变更当前企业后,刷新本地缓存中的企业信息
* 4. 跳转到管理后台首页
*/
changeDefaultEnterprise(item: any): Observable<any> {
// 1. 判断冻结状态
// if (item.stateLocked) {
// this.msgSrv.warning('代理商已被冻结,无法访问,请联系客服处理');
// return of(false);
// }
// 2.判断用户状态userStatus0-正常1-冻结2-废弃
// if (item.userStatus === 1) {
// this.msgSrv.warning('您的帐号已被企业冻结,无法访问,请联系客服处理');
// return of(false);
// }
// if (item.userStatus === 2) {
// this.msgSrv.warning('您的帐号已被企业废弃,无法访问,请联系客服处理');
// return of(false);
// }
// 3. 向服务器请求变更当前企业身份
return this.request(this.$api_selectEnterprise, { tenantId: item.tenantId }).pipe(
tap((data) => {
if (data) {
// 切换成功则广播当前环境信息
this.envSrv.setEnvironment(item.appId, item.tenantId);
}
}),
);
}
}