Compare commits
	
		
			4 Commits
		
	
	
		
			1917828eab
			...
			bb962cb8cf
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| bb962cb8cf | |||
| d733c75371 | |||
| 2fd3f5a0db | |||
| f2f68c1f4a | 
| @ -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; | ||||||
| @ -1,5 +1,5 @@ | |||||||
| import { IAnyData } from "core/Api"; | import { IAnyData } from "../core/Api"; | ||||||
| import { Emitter } from "core/Emitter"; | import { Emitter } from "../core/Emitter"; | ||||||
| import { Modular, Manager } from "../core/Module"; | import { Modular, Manager } from "../core/Module"; | ||||||
| 
 | 
 | ||||||
| /** | /** | ||||||
|  | |||||||
| @ -1,7 +1,8 @@ | |||||||
| { | { | ||||||
|   "description": "项目配置文件", |   "description": "项目配置文件,详见文档:https://developers.weixin.qq.com/miniprogram/dev/devtools/projectconfig.html", | ||||||
|   "packOptions": { |   "packOptions": { | ||||||
|     "ignore": [] |     "ignore": [], | ||||||
|  |     "include": [] | ||||||
|   }, |   }, | ||||||
|   "miniprogramRoot": "miniprogram/", |   "miniprogramRoot": "miniprogram/", | ||||||
|   "compileType": "miniprogram", |   "compileType": "miniprogram", | ||||||
| @ -46,13 +47,16 @@ | |||||||
|     "useCompilerPlugins": [ |     "useCompilerPlugins": [ | ||||||
|       "typescript", |       "typescript", | ||||||
|       "sass" |       "sass" | ||||||
|     ] |     ], | ||||||
|  |     "useStaticServer": true | ||||||
|   }, |   }, | ||||||
|   "simulatorType": "wechat", |   "simulatorType": "wechat", | ||||||
|   "simulatorPluginLibVersion": {}, |   "simulatorPluginLibVersion": {}, | ||||||
|   "appid": "wx7d809f5e8955843d", |   "appid": "wx7d809f5e8955843d", | ||||||
|   "scripts": { |   "condition": {}, | ||||||
|     "beforeCompile": "" |   "srcMiniprogramRoot": "miniprogram/", | ||||||
|   }, |   "editorSetting": { | ||||||
|   "condition": {} |     "tabIndent": "insertSpaces", | ||||||
|  |     "tabSize": 2 | ||||||
|  |   } | ||||||
| } | } | ||||||
| @ -1,14 +1,5 @@ | |||||||
| { | { | ||||||
|   "condition": { |   "condition": { | ||||||
|     "plugin": { |  | ||||||
|       "list": [] |  | ||||||
|     }, |  | ||||||
|     "game": { |  | ||||||
|       "list": [] |  | ||||||
|     }, |  | ||||||
|     "gamePlugin": { |  | ||||||
|       "list": [] |  | ||||||
|     }, |  | ||||||
|     "miniprogram": { |     "miniprogram": { | ||||||
|       "list": [ |       "list": [ | ||||||
|         { |         { | ||||||
| @ -19,5 +10,10 @@ | |||||||
|         } |         } | ||||||
|       ] |       ] | ||||||
|     } |     } | ||||||
|   } |   }, | ||||||
|  |   "projectname": "mini-dlpu-v3", | ||||||
|  |   "setting": { | ||||||
|  |     "compileHotReLoad": true | ||||||
|  |   }, | ||||||
|  |   "description": "项目私有配置文件。此文件中的内容将覆盖 project.config.json 中的相同字段。项目的改动优先同步到此文件中。详见文档:https://developers.weixin.qq.com/miniprogram/dev/devtools/projectconfig.html" | ||||||
| } | } | ||||||
		Loading…
	
		Reference in New Issue
	
	Block a user