chore: 重写初始提交(清空历史,整理后全量提交)

This commit is contained in:
ywxapp
2026-08-16 16:54:14 +08:00
commit 6c1a106bc1
1808 changed files with 238144 additions and 0 deletions
@@ -0,0 +1,272 @@
// 消息实体类
class Message implements JsonSerializable {
private fields: string[] = ['ver', 'header', 'payload', 'timestamp', 'token'];
private ver: string = '1.0.0';
private header!: Header;
private payload?: Payload;
private timestamp: number = Date.now();
private token: string = '';
constructor() {
this.header = new Header();
this.payload = new Payload();
}
// // 序列化接口实现
// jsonSerialize(): object {
// const data: Record<string, any> = {};
// this.fields.forEach(key => {
// const value = (this as any)[key];
// if (value !== undefined && value !== null) {
// data[key] = value instanceof JsonSerializable
// ? value.jsonSerialize()
// : value;
// }
// });
// return data;
// }
// 反序列化:JSON → Message
static fromJson(json: string): Message {
try {
const data = JSON.parse(json);
return Message.fromObject(data);
} catch (e) {
throw new Error('Invalid JSON structure');
}
}
// 反序列化:对象 → Message
static fromObject(data: Record<string, any>): Message {
const message = new Message();
message.fields.forEach(key => {
if (data[key] !== undefined && data[key] !== null) {
if (key === 'header') {
message.header = Header.fromObject(data.header);
} else if (key === 'payload') {
message.payload = Payload.fromObject(data.payload);
} else {
(message as any)[key] = data[key];
}
}
});
return message;
}
// Getter/Setter 方法
getVer(): string { return this.ver; }
setVer(value: string): void { this.ver = value; }
getHeader(): Header { return this.header; }
setHeader(value: Header): void { this.header = value; }
getPayload(): Payload | undefined { return this.payload; }
setPayload(value: Payload): void { this.payload = value; }
getTimestamp(): number { return this.timestamp; }
setTimestamp(value: number): void { this.timestamp = value; }
getToken(): string { return this.token; }
setToken(value: string): void { this.token = value; }
}
// 消息头信息
class Header implements JsonSerializable {
private fields: string[] = ['id', 'frame', 'type', 'target', 'from', 'to'];
private id: string = '';
private frame: string = '';
private type: string = '';
private target: string = '';
private from: any = null;
private to: any = null;
constructor() {
this.id = 'msg_' + this.generateShortId();
}
// 生成短ID(替代PHP的uniqid+md5
private generateShortId(): string {
return Math.random().toString(36).substring(2, 10) +
Date.now().toString(36).substring(4, 8);
}
jsonSerialize(): object {
const data: Record<string, any> = {};
this.fields.forEach(key => {
const value = (this as any)[key];
if (value !== undefined && value !== null) {
data[key] = value;
}
});
return data;
}
static fromJson(json: string): Header {
try {
const data = JSON.parse(json);
return Header.fromObject(data);
} catch (e) {
throw new Error('Invalid JSON structure');
}
}
static fromObject(data: Record<string, any>): Header {
const header = new Header();
header.fields.forEach(key => {
if (data[key] !== undefined && data[key] !== null) {
(header as any)[key] = data[key];
}
});
return header;
}
// Getter/Setter 方法
getId(): string { return this.id; }
setId(value: string): void { this.id = value; }
getFrame(): string { return this.frame; }
setFrame(value: string): void { this.frame = value; }
getType(): string { return this.type; }
setType(value: string): void { this.type = value; }
getTarget(): string { return this.target; }
setTarget(value: string): void { this.target = value; }
getFrom(): any { return this.from; }
setFrom(value: any): void { this.from = value; }
getTo(): any { return this.to; }
setTo(value: any): void { this.to = value; }
}
// 消息扩展信息
class Payload implements JsonSerializable {
private fields: string[] = ['name', 'content', 'url', 'width', 'height', 'duration', 'size', 'reply', 'mention'];
private name: string = '';
private content: any = null;
private url: string = '';
private width: number = 0;
private height: number = 0;
private duration: number = 0;
private size: number = 0;
private reply: string = '';
private mention: any[] = [];
jsonSerialize(): object {
const data: Record<string, any> = {};
this.fields.forEach(key => {
const value = (this as any)[key];
if (value !== undefined && value !== null) {
data[key] = value;
}
});
return data;
}
static fromJson(json: string): Payload {
try {
const data = JSON.parse(json);
return Payload.fromObject(data);
} catch (e) {
throw new Error('Invalid JSON structure');
}
}
static fromObject(data: Record<string, any>): Payload {
const payload = new Payload();
payload.fields.forEach(key => {
if (data[key] !== undefined && data[key] !== null) {
(payload as any)[key] = data[key];
}
});
return payload;
}
// Getter/Setter 方法
getName(): string { return this.name; }
setName(value: string): void { this.name = value; }
getContent(): any { return this.content; }
setContent(value: any): void { this.content = value; }
getUrl(): string { return this.url; }
setUrl(value: string): void { this.url = value; }
getWidth(): number { return this.width; }
setWidth(value: number): void { this.width = value; }
getHeight(): number { return this.height; }
setHeight(value: number): void { this.height = value; }
getDuration(): number { return this.duration; }
setDuration(value: number): void { this.duration = value; }
getSize(): number { return this.size; }
setSize(value: number): void { this.size = value; }
getReply(): string { return this.reply; }
setReply(value: string): void { this.reply = value; }
getMention(): any[] { return this.mention; }
setMention(value: any[]): void { this.mention = value; }
}
// 序列化接口
interface JsonSerializable {
jsonSerialize(): object;
}
//import {Message, Header, Payload} from "@/utlis/messageStruct.uts"
// 使用示例
const exampleUsage = () => {
// 创建消息对象
const message = new Message();
message.setToken('abc123xyz');
// 设置头部信息
const header = message.getHeader();
header.setFrame('msg');
header.setType('chat');
header.setFrom('user123');
header.setTo('user456');
// 设置负载信息
const payload = message.getPayload() || new Payload();
payload.setName('image.jpg');
payload.setUrl('https://example.com/images/image.jpg');
payload.setWidth(800);
payload.setHeight(600);
payload.setSize(102400);
payload.setMention(['user789']);
message.setPayload(payload);
// 序列化为JSON
const jsonStr = JSON.stringify(message.jsonSerialize());
console.log('Serialized JSON:', jsonStr);
// 反序列化
try {
const parsed = Message.fromJson(jsonStr);
console.log('Deserialized message:', parsed);
const headerObj = parsed.getHeader();
console.log('Header type:', headerObj.getType());
const payloadObj = parsed.getPayload();
if (payloadObj) {
console.log('Payload URL:', payloadObj.getUrl());
}
} catch (e) {
console.error('Deserialization failed:', e);
}
};
// 导出类
export { Message, Header, Payload };