BaseService.ts
import { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';
import { Injectable } from '@angular/core';
import { Router } from '@angular/router';
import { AppCommon } from "../common/app-common";
@Injectable()
export class BaseService {
public path: string = '';
public protocol = document.location.protocol;
public downUrl: string = this.protocol + '//' + window.location.host; //下载地址
constructor(
public httpClient: HttpClient,
public router: Router
) { }
getParams(data: any, isJsonp = false): HttpParams {
let params = new HttpParams();
for (const key in data) {
let val = data[key];
if (typeof val == 'function') { continue; }
params = params.set(key, val);
}
if (isJsonp) {
params = params.set('callback', 'JSONP_CALLBACK');
}
return params;
}
jsonCall(data: any, url: string, type:string = 'get', withToken = true): any {
// 使用httpClient模块开始
// const lang = Language.getLanguage();
let myHeader = new HttpHeaders();
//myHeader.append('Accept-Language', lang);
// if (!!AppCommon.userInfo) {
// myHeader.append('tenantId', AppCommon.userInfo.organization.id);
// myHeader.append('userId', AppCommon.userInfo.id);
// }
let options = { observe: 'response', headers: myHeader };
return new Promise((resolve, reject) => {
if (type == 'get' || type == 'delete') {
let obj:any = Object.assign(options, { params: this.getParams(data) });
this.httpClient[type](url, obj)
.subscribe(res => {
try {
this.processCallback(resolve, reject, data, res);
} catch (error) {
const data={
errData:error
}
this.processCallback(resolve, reject, data);
}
}, err => {
this.processCallback(resolve, reject, data, err);
});
} else {
this.httpClient[type](url, data, options)
.subscribe(res => {
try {
this.processCallback(resolve, reject, data, res);
} catch (error) {
const data={
errData:error
}
this.processCallback(resolve, reject, data);
}
}, err => {
this.processCallback(resolve, reject, data, err);
});
}
});
}
processCallback(resolve: Function, reject: Function, params: any, data?: any) {
//活跃用户刷新token
// if (data.headers.get('authorization') && data.headers.get('refreshtoken')) {
// let obj = {
// access_token: data.headers.get('authorization'),
// refresh_token: data.headers.get('refreshtoken')
// }
// }
if (!!params&&!!params.errData){
reject({ status_code: -2000, 'msg': params.errData });
return
};
if (data['status'] == '200' || data['status'] == '201') {
resolve(data.body);
} else if (data['status'] == '401') {
AppCommon.userInfo = null;
} else if (data['status'] == '400') {
reject({ 'status_code': 400, 'msg': data.error.message } || { status_code: '-2000' });
} else if (data['status'] == '403') {
reject({ 'status_code': 403, 'msg': data.error.message } || { status_code: '-2000' });
} else if (data['status'] == '404') {
reject({ 'status_code': 404, 'msg': data.error.message } || { status_code: '-2000' });
} else {// 请求出错
reject({ 'status_code': data['status'], 'msg': data.error } || { status_code: '-2000' });
}
}
网友评论