From 96649f201272835e803fd5e48bf76fe42eb21c05 Mon Sep 17 00:00:00 2001
From: fengxiang <110431245@qq.com>
Date: Mon, 04 Jun 2018 13:11:12 +0800
Subject: [PATCH] 默认未登录消息设置

---
 src/app/core/net/default.interceptor.ts |   57 +++++++++++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 47 insertions(+), 10 deletions(-)

diff --git a/src/app/core/net/default.interceptor.ts b/src/app/core/net/default.interceptor.ts
index 5d7b2e0..ff67769 100644
--- a/src/app/core/net/default.interceptor.ts
+++ b/src/app/core/net/default.interceptor.ts
@@ -7,28 +7,53 @@
 import { of } from 'rxjs/observable/of';
 import { ErrorObservable } from 'rxjs/observable/ErrorObservable';
 import { mergeMap, catchError } from 'rxjs/operators';
-import { NzMessageService } from 'ng-zorro-antd';
+import { NzMessageService, NzModalService } from 'ng-zorro-antd';
 import { _HttpClient } from '@delon/theme';
 import { environment } from '@env/environment';
+import { LoginService } from '@business/services/http/login.service';
+import { Subject } from 'rxjs/Subject';
+import { error } from 'protractor';
+import { debug } from 'util';
+import {Location} from '@angular/common';
 
 /**
  * ������HTTP������������������������������ `app.module.ts`
  */
 @Injectable()
 export class DefaultInterceptor implements HttpInterceptor {
-    constructor(private injector: Injector) {}
+    private unLoginHandle: Subject<HttpErrorResponse> = new Subject<HttpErrorResponse>();
+    constructor(private injector: Injector) {
+         this.unLoginHandle.debounceTime(100).subscribe(event => {
+             if (!!event.error) {
+                  let errorMsg = '';
+                  const erroCode = Number.parseInt(event.error['errorCode']);
+                  switch (erroCode) {
+                     case 10: errorMsg = '���������,���������'; break;
+                     case 11: errorMsg = '������������,���������������'; break;
+                     case 12: errorMsg = '������������,������������������'; break;
+                     default: errorMsg = '������������,���������������'; break;
+                  }
+                  this.model.info({
+                    title: errorMsg,
+                    onOk: () => this.goTo('/passport/login')
+                  });
+             }
+         });
+    }
 
     get msg(): NzMessageService {
         return this.injector.get(NzMessageService);
     }
-
+    get model(): NzModalService {
+        return this.injector.get(NzModalService);
+    }
     private goTo(url: string) {
         setTimeout(() => this.injector.get(Router).navigateByUrl(url));
     }
 
     private handleData(event: HttpResponse<any> | HttpErrorResponse): Observable<any> {
         // ��������������� `throw` ������������������ `_HttpClient` ��� `end()` ������
-        this.injector.get(_HttpClient).end();
+        // this.injector.get(_HttpClient).end();
         // ���������������������������������
         switch (event.status) {
             case 200:
@@ -44,7 +69,10 @@
                 // }
                 break;
             case 401: // ������������������
-                this.goTo('/passport/login');
+            // this.goTo('/passport/login');
+                if (location.hash && !location.hash.endsWith('login')) {
+                    this.unLoginHandle.next(<HttpErrorResponse>event);
+                }
                 break;
             case 403:
             case 404:
@@ -52,23 +80,32 @@
                 this.goTo(`/${event.status}`);
                 break;
         }
-        return of(event);
+        // ��������������������� httpclient ������������
+        if (event instanceof HttpErrorResponse) {
+            return ErrorObservable.create(event);
+        } else {
+            return of(event);
+        }       
     }
 
     intercept(req: HttpRequest<any>, next: HttpHandler):
         Observable<HttpSentEvent | HttpHeaderResponse | HttpProgressEvent | HttpResponse<any> | HttpUserEvent<any>> {
-
+        if (!req.headers.get('X-Refrsh-Token')) {
+            const loginService = <LoginService>this.injector.get(LoginService);
+            loginService.refreshToken();
+        }        
         // ���������������������������
         let url = req.url;
-        if (!url.startsWith('https://') && !url.startsWith('http://')) {
-            url = environment.SERVER_URL + url;
+        if (!url.startsWith('https://') && !url.startsWith('http://') && !url.startsWith('assets')) {
+            // url = environment.SERVER_URL + url;
+            url = environment.SERVER_BASH_URL + url;
         }
 
         const newReq = req.clone({
             url: url
         });
         return next.handle(newReq).pipe(
-                    mergeMap((event: any) => {
+                    mergeMap((event: any) => {                        
                         // ������������������������������������������������������������������������������������������������HTTP������������������200������������������
                         if (event instanceof HttpResponse && event.status === 200)
                             return this.handleData(event);

--
Gitblit v1.8.0