import { Observable } from 'rxjs'; import { _HttpClient } from '@delon/theme'; import { Inject, Injectable } from '@angular/core'; import { User } from '@domain'; interface Access { accessStyle: string; userName: string; mobile: string; } /** * 处理登录名,将之转换为手机号或用户名 * 处理登录名和密码,将之转换为用户实例User * * @export * @class UserService */ @Injectable({providedIn: 'root'}) // 只注入到core 不是顶层 export class UserService { private uri: string; phonerule = /^\d+$/; /** *构造函数用于注入服务的依赖以及进行必要的初始化 * @param {*} urisConfig * @memberof UserService */ constructor( // @Inject('uris') private urisConfig, // private http: _HttpClient ) { // this.uri = urisConfig.usersUri; } public get_accessStyle(accessNo: string): string { let accessStyle = 'USERNAME'; if ( this.phonerule.test(accessNo) ) { accessStyle = 'PHONE'; } else if (accessNo === '' || accessNo === 'null' || accessNo === null) { accessStyle = ''; } return accessStyle; } public get_mobile(accessStyle: string, accessNo: string): string { let mobile = ''; if ( accessStyle === 'PHONE' ) { mobile = accessNo; } return mobile; } public get_userName(accessStyle: string, accessNo: string): string { let userName = ''; if ( accessStyle === 'USERNAME' ) { userName = accessNo; } return userName; } public createUser(accessStyle, accessNo, password): User { const user: User = new User(); if (accessStyle === 'USERNAME') { user.userName = accessNo; user.password = password; } else if (accessStyle === 'PHONE') { user.mobile = accessNo; user.password = password; } return user; } public createAccess(accessNo: string): Access { const accessStyle = this.get_accessStyle(accessNo); const access = { name: this.get_userName(accessStyle, accessNo), phone: this.get_mobile(accessStyle, accessNo) }; return { accessStyle: accessStyle, userName: access.name, mobile: access.phone }; } }