项目初始化
This commit is contained in:
112
src/app/shared/services/business/account.service.ts
Normal file
112
src/app/shared/services/business/account.service.ts
Normal file
@ -0,0 +1,112 @@
|
||||
/*
|
||||
* @Author: Maple
|
||||
* @Date: 2021-03-22 11:42:26
|
||||
* @LastEditors: Do not edit
|
||||
* @LastEditTime: 2021-05-27 11:22:02
|
||||
* @Description: 全局账号服务
|
||||
*/
|
||||
import { Injectable, Injector } from '@angular/core';
|
||||
import { Router } from '@angular/router';
|
||||
import { CoreService, StartupService } from '@core';
|
||||
import { ReuseTabService } from '@delon/abc/reuse-tab';
|
||||
import { BaseService } from '../core/base.service';
|
||||
@Injectable({
|
||||
providedIn: 'root',
|
||||
})
|
||||
export class EAAccountService extends BaseService {
|
||||
// 验证码登录
|
||||
public $api_login_by_captcha = `/scm/cuc/cuc/user/sms/login?_allow_anonymous=true`;
|
||||
// 账号密码登录
|
||||
public $api_login_by_account = `/scm/cuc/cuc/user/login?_allow_anonymous=true`;
|
||||
// 退出登录
|
||||
public $api_logout = `/chia/user/logout`;
|
||||
|
||||
constructor(public injector: Injector) {
|
||||
super(injector);
|
||||
}
|
||||
|
||||
// 注入核心服务
|
||||
private get coreSrv(): CoreService {
|
||||
return this.injector.get(CoreService);
|
||||
}
|
||||
|
||||
// 注入路由
|
||||
private get router(): Router {
|
||||
return this.injector.get(Router);
|
||||
}
|
||||
|
||||
// 注入路由复用服务
|
||||
private get reuseTabService(): ReuseTabService {
|
||||
return this.injector.get(ReuseTabService);
|
||||
}
|
||||
// 注入全局启动服务
|
||||
private get startSrv(): StartupService {
|
||||
return this.injector.get(StartupService);
|
||||
}
|
||||
|
||||
// 登录状态
|
||||
public get loginStatus(): boolean {
|
||||
return this.coreSrv.loginStatus;
|
||||
}
|
||||
|
||||
/**
|
||||
* 账号密码登录
|
||||
* @param username 登录账号
|
||||
* @param password 登录密码
|
||||
*/
|
||||
loginByAccount(username: string, password: string): void {
|
||||
this.asyncRequest(this.$api_login_by_account, { username, password, type: 0 }, 'POST', true, 'FORM').then((res) => {
|
||||
console.log(res);
|
||||
this.doAfterLogin(res);
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 短信验证码登录
|
||||
* @param phone 手机号码
|
||||
* @param smsCode 短信验证码
|
||||
*/
|
||||
loginByCaptcha(phone: string, smsCode: string): void {
|
||||
this.asyncRequest(this.$api_login_by_captcha, { phone, smsCode }, 'POST', true, 'FORM').then((res) => {
|
||||
this.doAfterLogin(res);
|
||||
});
|
||||
}
|
||||
|
||||
private doAfterLogin(res: any): void {
|
||||
const token = res?.token;
|
||||
if (token) {
|
||||
// 清空路由复用信息
|
||||
this.reuseTabService.clear();
|
||||
|
||||
// 设置用户Token信息
|
||||
// TODO: Mock expired value
|
||||
// res.user.expired = +new Date() + 1000 * 60 * 5;
|
||||
this.coreSrv.tokenSrv.set({ token });
|
||||
// 重新获取 StartupService 内容,我们始终认为应用信息一般都会受当前用户授权范围而影响
|
||||
this.startSrv.load().then(() => {
|
||||
let url = this.coreSrv.tokenSrv.referrer!.url || '/';
|
||||
if (url.includes('/passport')) {
|
||||
url = '/';
|
||||
}
|
||||
this.router.navigateByUrl(url);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 登出系统
|
||||
* @param showMsg 是否显示登录过期弹窗
|
||||
*/
|
||||
logout(showMsg: boolean): void {
|
||||
this.coreSrv.logout(showMsg);
|
||||
}
|
||||
|
||||
/**
|
||||
* 向服务器请求登出
|
||||
*/
|
||||
requestLogout(): void {
|
||||
this.asyncRequest(this.$api_logout).finally(() => {
|
||||
this.logout(false);
|
||||
});
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user