Files
bbq/src/app/shared/services/business/enterprise.service.ts
Taric Xin 9ffc4c6f89 edit
2021-12-28 10:51:44 +08:00

124 lines
3.7 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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.判断用户状态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);
}
}),
);
}
}