Files
blog-frontEnd/admin/src/app/services/visitor/visitor.service.ts
2019-11-28 19:26:45 +08:00

77 lines
2.1 KiB
TypeScript

import {Injectable} from '@angular/core';
import {HttpService} from '../http.service';
import {Page} from '../../classes/page';
import {Visitor} from '../../classes/visitor';
@Injectable({
providedIn: 'root'
})
export class VisitorService {
constructor(public http: HttpService) {
}
public pageList: Page<Visitor>[] = [];
public currentPage: Page<Visitor>;
public dayVisit: number;
public totalVisitCount: number;
private ipLocationList: { ip: string, location: string }[] = [];
getVisitor(pageNum: number, pageSize: number) {
const observable = this.http.get(`/admin/visitor/page?count=${pageSize}&page=${pageNum}&showLocation=false`);
observable.subscribe(data => {
if (data.code === 0) {
this.pageList.unshift(data.result);
this.currentPage = data.result;
}
});
}
getDayVisitor() {
this.http.get('/dayVisitCount').subscribe(data => {
if (data.code === 0) {
this.dayVisit = data.result;
}
});
}
getTotalVisitorCount() {
this.http.get('/visitor/count').subscribe(data => {
this.totalVisitCount = data.result;
});
}
getIp(ip: string) {
const location = this.exist(ip);
if (location) {
return location;
}
const observable = this.http.get(`/ip/${ip}`);
observable.subscribe(data => {
if (data.code === 0) {
this.ipLocationList.unshift(data.result);
}
});
return observable;
}
getLocalIp() {
return this.http.get('/ip');
}
private exist(ip): string {
if (this.ipLocationList.length === 0) {
return null;
}
// tslint:disable-next-line:prefer-for-of
for (let i = 0; i < this.ipLocationList.length; i++) {
if (this.ipLocationList[i].ip === ip) {
return this.ipLocationList[i].location;
}
}
}
}