|  | @@ -416,3 +416,171 @@ export class CloudQuery {
 | 
	
		
			
				|  |  |          return null;
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  | +// CloudUser.ts
 | 
	
		
			
				|  |  | +export class CloudUser extends CloudObject {
 | 
	
		
			
				|  |  | +    constructor() {
 | 
	
		
			
				|  |  | +        super("_User"); // 假设用户类在Parse中是"_User"
 | 
	
		
			
				|  |  | +        // 读取用户缓存信息
 | 
	
		
			
				|  |  | +        let userCacheStr = localStorage.getItem("NCloud/dev/User")
 | 
	
		
			
				|  |  | +        if (userCacheStr) {
 | 
	
		
			
				|  |  | +            let userData = JSON.parse(userCacheStr)
 | 
	
		
			
				|  |  | +            // 设置用户信息
 | 
	
		
			
				|  |  | +            this.id = userData?.objectId;
 | 
	
		
			
				|  |  | +            this.sessionToken = userData?.sessionToken;
 | 
	
		
			
				|  |  | +            this.data = userData; // 保存用户数据
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    sessionToken: string | null = ""
 | 
	
		
			
				|  |  | +    /** 获取当前用户信息 */
 | 
	
		
			
				|  |  | +    async current() {
 | 
	
		
			
				|  |  | +        if (!this.sessionToken) {
 | 
	
		
			
				|  |  | +            console.error("用户未登录");
 | 
	
		
			
				|  |  | +            return null;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        return this;
 | 
	
		
			
				|  |  | +        // const response = await fetch(`http://dev.fmode.cn:1337/parse/users/me`, {
 | 
	
		
			
				|  |  | +        //     headers: {
 | 
	
		
			
				|  |  | +        //         "x-parse-application-id": "dev",
 | 
	
		
			
				|  |  | +        //         "x-parse-session-token": this.sessionToken // 使用sessionToken进行身份验证
 | 
	
		
			
				|  |  | +        //     },
 | 
	
		
			
				|  |  | +        //     method: "GET"
 | 
	
		
			
				|  |  | +        // });
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        // const result = await response?.json();
 | 
	
		
			
				|  |  | +        // if (result?.error) {
 | 
	
		
			
				|  |  | +        //     console.error(result?.error);
 | 
	
		
			
				|  |  | +        //     return null;
 | 
	
		
			
				|  |  | +        // }
 | 
	
		
			
				|  |  | +        // return result;
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    /** 登录 */
 | 
	
		
			
				|  |  | +    async login(username: string, password: string): Promise<CloudUser | null> {
 | 
	
		
			
				|  |  | +        const response = await fetch(`http://dev.fmode.cn:1337/parse/login`, {
 | 
	
		
			
				|  |  | +            headers: {
 | 
	
		
			
				|  |  | +                "x-parse-application-id": "dev",
 | 
	
		
			
				|  |  | +                "Content-Type": "application/json"
 | 
	
		
			
				|  |  | +            },
 | 
	
		
			
				|  |  | +            body: JSON.stringify({ username, password }),
 | 
	
		
			
				|  |  | +            method: "POST"
 | 
	
		
			
				|  |  | +        });
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        const result = await response?.json();
 | 
	
		
			
				|  |  | +        if (result?.error) {
 | 
	
		
			
				|  |  | +            console.error(result?.error);
 | 
	
		
			
				|  |  | +            return null;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        // 设置用户信息
 | 
	
		
			
				|  |  | +        this.id = result?.objectId;
 | 
	
		
			
				|  |  | +        this.sessionToken = result?.sessionToken;
 | 
	
		
			
				|  |  | +        this.data = result; // 保存用户数据
 | 
	
		
			
				|  |  | +        // 缓存用户信息
 | 
	
		
			
				|  |  | +        console.log(result)
 | 
	
		
			
				|  |  | +        localStorage.setItem("NCloud/dev/User", JSON.stringify(result))
 | 
	
		
			
				|  |  | +        return this;
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    /** 登出 */
 | 
	
		
			
				|  |  | +    async logout() {
 | 
	
		
			
				|  |  | +        if (!this.sessionToken) {
 | 
	
		
			
				|  |  | +            console.error("用户未登录");
 | 
	
		
			
				|  |  | +            return;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        const response = await fetch(`http://dev.fmode.cn:1337/parse/logout`, {
 | 
	
		
			
				|  |  | +            headers: {
 | 
	
		
			
				|  |  | +                "x-parse-application-id": "dev",
 | 
	
		
			
				|  |  | +                "x-parse-session-token": this.sessionToken
 | 
	
		
			
				|  |  | +            },
 | 
	
		
			
				|  |  | +            method: "POST"
 | 
	
		
			
				|  |  | +        });
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        const result = await response?.json();
 | 
	
		
			
				|  |  | +        if (result?.error) {
 | 
	
		
			
				|  |  | +            console.error(result?.error);
 | 
	
		
			
				|  |  | +            return false;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        // 清除用户信息
 | 
	
		
			
				|  |  | +        localStorage.removeItem("NCloud/dev/User")
 | 
	
		
			
				|  |  | +        this.id = null;
 | 
	
		
			
				|  |  | +        this.sessionToken = null;
 | 
	
		
			
				|  |  | +        this.data = {};
 | 
	
		
			
				|  |  | +        return true;
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    /** 注册 */
 | 
	
		
			
				|  |  | +    async signUp(username: string, password: string, additionalData: Record<string, any> = {}) {
 | 
	
		
			
				|  |  | +        const userData = {
 | 
	
		
			
				|  |  | +            username,
 | 
	
		
			
				|  |  | +            password,
 | 
	
		
			
				|  |  | +            ...additionalData // 合并额外的用户数据
 | 
	
		
			
				|  |  | +        };
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        const response = await fetch(`http://dev.fmode.cn:1337/parse/users`, {
 | 
	
		
			
				|  |  | +            headers: {
 | 
	
		
			
				|  |  | +                "x-parse-application-id": "dev",
 | 
	
		
			
				|  |  | +                "Content-Type": "application/json"
 | 
	
		
			
				|  |  | +            },
 | 
	
		
			
				|  |  | +            body: JSON.stringify(userData),
 | 
	
		
			
				|  |  | +            method: "POST"
 | 
	
		
			
				|  |  | +        });
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        const result = await response?.json();
 | 
	
		
			
				|  |  | +        if (result?.error) {
 | 
	
		
			
				|  |  | +            console.error(result?.error);
 | 
	
		
			
				|  |  | +            return null;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        // 设置用户信息
 | 
	
		
			
				|  |  | +        // 缓存用户信息
 | 
	
		
			
				|  |  | +        console.log(result)
 | 
	
		
			
				|  |  | +        localStorage.setItem("NCloud/dev/User", JSON.stringify(result))
 | 
	
		
			
				|  |  | +        this.id = result?.objectId;
 | 
	
		
			
				|  |  | +        this.sessionToken = result?.sessionToken;
 | 
	
		
			
				|  |  | +        this.data = result; // 保存用户数据
 | 
	
		
			
				|  |  | +        return this;
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    override async save() {
 | 
	
		
			
				|  |  | +        let method = "POST";
 | 
	
		
			
				|  |  | +        let url = `http://dev.fmode.cn:1337/parse/users`;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        // 更新用户信息
 | 
	
		
			
				|  |  | +        if (this.id) {
 | 
	
		
			
				|  |  | +            url += `/${this.id}`;
 | 
	
		
			
				|  |  | +            method = "PUT";
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        let data: any = JSON.parse(JSON.stringify(this.data))
 | 
	
		
			
				|  |  | +        delete data.createdAt
 | 
	
		
			
				|  |  | +        delete data.updatedAt
 | 
	
		
			
				|  |  | +        delete data.ACL
 | 
	
		
			
				|  |  | +        delete data.objectId
 | 
	
		
			
				|  |  | +        const body = JSON.stringify(data);
 | 
	
		
			
				|  |  | +        let headersOptions: any = {
 | 
	
		
			
				|  |  | +            "content-type": "application/json;charset=UTF-8",
 | 
	
		
			
				|  |  | +            "x-parse-application-id": "dev",
 | 
	
		
			
				|  |  | +            "x-parse-session-token": this.sessionToken, // 添加sessionToken以进行身份验证
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        const response = await fetch(url, {
 | 
	
		
			
				|  |  | +            headers: headersOptions,
 | 
	
		
			
				|  |  | +            body: body,
 | 
	
		
			
				|  |  | +            method: method,
 | 
	
		
			
				|  |  | +            mode: "cors",
 | 
	
		
			
				|  |  | +            credentials: "omit"
 | 
	
		
			
				|  |  | +        });
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        const result = await response?.json();
 | 
	
		
			
				|  |  | +        if (result?.error) {
 | 
	
		
			
				|  |  | +            console.error(result?.error);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        if (result?.objectId) {
 | 
	
		
			
				|  |  | +            this.id = result?.objectId;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        localStorage.setItem("NCloud/dev/User", JSON.stringify(this.data))
 | 
	
		
			
				|  |  | +        return this;
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +}
 |