(#22) Add Data Modular.
This commit is contained in:
parent
f2f68c1f4a
commit
2fd3f5a0db
@ -32,11 +32,6 @@ interface ILoginOutput {
|
|||||||
*/
|
*/
|
||||||
actualName: string;
|
actualName: string;
|
||||||
|
|
||||||
/**
|
|
||||||
* 用户是否关注了公共号
|
|
||||||
*/
|
|
||||||
isSubscribeWxAccount: boolean;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 教务处的 session
|
* 教务处的 session
|
||||||
*/
|
*/
|
||||||
|
@ -1,12 +1,46 @@
|
|||||||
import { Data } from "../core/Data";
|
import { Data } from "../core/Data";
|
||||||
|
import { Storage } from "../core/Storage";
|
||||||
|
import { Login, ILoginOutput } from "../api/Login";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 登录状态
|
* 登录状态
|
||||||
*/
|
*/
|
||||||
enum LoginStatus {
|
enum LoginStatus {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 已认证
|
||||||
|
*/
|
||||||
|
verified = 1,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 失效的认证
|
||||||
|
* 通常为用户名密码错误
|
||||||
|
*/
|
||||||
|
invalid = 2,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 没有登录信息
|
||||||
|
*/
|
||||||
|
none = 3
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* API 返回数据
|
||||||
|
*/
|
||||||
|
type ILoginApiData = {
|
||||||
|
[P in keyof ILoginOutput]: {
|
||||||
|
type: ILoginOutput[P];
|
||||||
|
getAsync: () => Promise<ILoginOutput[P]>;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Storage 缓存数据类型
|
||||||
|
*/
|
||||||
|
type IStudentInfoStorageData = ILoginOutput & {
|
||||||
|
[P in keyof IStudentInfoData]: IStudentInfoData[P]["type"];
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 学生信息数据结构
|
* 学生信息数据结构
|
||||||
*/
|
*/
|
||||||
@ -27,49 +61,94 @@ type IStudentInfoData = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 身份证后六位
|
* 登录状态
|
||||||
* 用于尝试水卡登录
|
|
||||||
*/
|
*/
|
||||||
idCardLast6: {
|
loginStatus: {
|
||||||
type: string
|
type: LoginStatus
|
||||||
};
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 使用的教务处链接
|
* 上次登录时间
|
||||||
|
* 时间戳
|
||||||
*/
|
*/
|
||||||
eduService: {
|
lastLoginTime: {
|
||||||
type: string
|
type: number
|
||||||
};
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 用户的真实姓名
|
* 距离上次登录后
|
||||||
|
* 学号和密码是否发生过改变
|
||||||
*/
|
*/
|
||||||
actualName: {
|
isUserInfoChange: {
|
||||||
type: string
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 用户是否关注了公共号
|
|
||||||
*/
|
|
||||||
isSubscribeWxAccount: {
|
|
||||||
type: boolean
|
type: boolean
|
||||||
};
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 教务处的 session
|
|
||||||
*/
|
|
||||||
eduSession: {
|
|
||||||
type: string
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 学生信息
|
* 学生信息
|
||||||
*/
|
*/
|
||||||
class StudentInfo extends Data<IStudentInfoData> {
|
class StudentInfo extends Data<IStudentInfoData & ILoginApiData> {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 学生信息缓存
|
||||||
|
*/
|
||||||
|
private eduStorage = new Storage<IStudentInfoStorageData>("StudentInfo", {
|
||||||
|
idCardLast6: "",
|
||||||
|
eduService: "",
|
||||||
|
actualName: "",
|
||||||
|
eduSession: "",
|
||||||
|
studentId: "",
|
||||||
|
password: "",
|
||||||
|
loginStatus: LoginStatus.none,
|
||||||
|
lastLoginTime: 0,
|
||||||
|
isUserInfoChange: false
|
||||||
|
});
|
||||||
|
|
||||||
public override onLoad() {
|
public override onLoad() {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
/**
|
||||||
|
* 用户登录
|
||||||
|
*/
|
||||||
|
private async login(): Promise<boolean> {
|
||||||
|
|
||||||
|
// 获取账号密码
|
||||||
|
const stuId = this.eduStorage.get("studentId");
|
||||||
|
const pwd = this.eduStorage.get("password");
|
||||||
|
|
||||||
|
if (!stuId || !pwd) return false;
|
||||||
|
|
||||||
|
// 发送请求
|
||||||
|
const data = await new Login().param({
|
||||||
|
studentId: stuId,
|
||||||
|
password: pwd
|
||||||
|
}).request().wait();
|
||||||
|
|
||||||
|
// 请求成功
|
||||||
|
let res = data.data;
|
||||||
|
if (res) {
|
||||||
|
|
||||||
|
// 保存数据
|
||||||
|
this.eduStorage.set("actualName", res.actualName);
|
||||||
|
this.eduStorage.set("eduService", res.eduService);
|
||||||
|
this.eduStorage.set("eduSession", res.eduSession);
|
||||||
|
this.eduStorage.set("idCardLast6", res.idCardLast6);
|
||||||
|
|
||||||
|
// 记录时间
|
||||||
|
this.eduStorage.set("lastLoginTime", new Date().getTime());
|
||||||
|
|
||||||
|
return true;
|
||||||
|
} else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取状态
|
||||||
|
*/
|
||||||
|
private async getStatus() {}
|
||||||
|
}
|
||||||
|
|
||||||
|
export { StudentInfo };
|
||||||
|
export default StudentInfo;
|
Loading…
Reference in New Issue
Block a user