124 lines
3.7 KiB
TypeScript
124 lines
3.7 KiB
TypeScript
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()
|
||
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.判断用户状态userStatus:0-正常,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);
|
||
}
|
||
}),
|
||
);
|
||
}
|
||
}
|