✏️ 合并相同类型数据

This commit is contained in:
目棃
2024-03-19 20:36:26 +08:00
parent 3501590fb4
commit 43232548bb
5 changed files with 32 additions and 101 deletions

View File

@@ -1,12 +1,12 @@
/** /**
* @file plugins/Mys/types/Forum.d.ts * @file plugins/Mys/types/Forum.d.ts
* @description Mys 插件论坛类型定义文件 * @description Mys 插件论坛类型定义文件
* @since Beta v0.4.0 * @since Beta v0.4.5
*/ */
/** /**
* @description Mys 插件论坛类型 * @description Mys 插件论坛类型
* @since Beta v0.3.7 * @since Beta v0.4.5
* @namespace TGApp.Plugins.Mys.Forum * @namespace TGApp.Plugins.Mys.Forum
* @memberof TGApp.Plugins.Mys * @memberof TGApp.Plugins.Mys
*/ */
@@ -25,14 +25,14 @@ declare namespace TGApp.Plugins.Mys.Forum {
/** /**
* @description 特定论坛数据 * @description 特定论坛数据
* @since Beta v0.3.7 * @since Beta v0.4.5
* @interface FullData * @interface FullData
* @property {number} last_id 最后一条帖子 ID * @property {number} last_id 最后一条帖子 ID
* @property {boolean} is_last 是否最后一页 * @property {boolean} is_last 是否最后一页
* @property {boolean} is_origin 是否原创 * @property {boolean} is_origin 是否原创
* @property {number} page 页码 * @property {number} page 页码
* @property {unknown} databox 数据盒子 * @property {unknown} databox 数据盒子
* @property {TGApp.Plugins.Mys.News.Item[]} list 帖子列表 * @property {TGApp.Plugins.Mys.Post.FullData[]} list 帖子列表
* @return FullData * @return FullData
*/ */
interface FullData { interface FullData {
@@ -41,7 +41,7 @@ declare namespace TGApp.Plugins.Mys.Forum {
is_origin: boolean; is_origin: boolean;
page: number; page: number;
databox: unknown; databox: unknown;
list: TGApp.Plugins.Mys.News.Item[]; list: TGApp.Plugins.Mys.Post.FullData[];
} }
/** /**

View File

@@ -1,12 +1,12 @@
/** /**
* @file plugins/Mys/types/news.d.ts * @file plugins/Mys/types/news.d.ts
* @description Mys 插件咨讯类型定义文件 * @description Mys 插件咨讯类型定义文件
* @since Beta v0.4.0 * @since Beta v0.4.5
*/ */
/** /**
* @description Mys 插件咨讯类型 * @description Mys 插件咨讯类型
* @since Alpha v0.2.1 * @since Beta v0.4.5
* @namespace TGApp.Plugins.Mys.News * @namespace TGApp.Plugins.Mys.News
* @memberof TGApp.Plugins.Mys * @memberof TGApp.Plugins.Mys
*/ */
@@ -25,7 +25,7 @@ declare namespace TGApp.Plugins.Mys.News {
/** /**
* @description 咨讯数据 * @description 咨讯数据
* @since Alpha v0.2.1 * @since Beta v0.4.5
* @interface FullData * @interface FullData
* @property {number} last_id 最后一条咨讯 ID * @property {number} last_id 最后一条咨讯 ID
* @property {boolean} is_last 是否最后一页 * @property {boolean} is_last 是否最后一页
@@ -35,74 +35,7 @@ declare namespace TGApp.Plugins.Mys.News {
interface FullData { interface FullData {
last_id: number; last_id: number;
is_last: boolean; is_last: boolean;
list: Item[]; list: TGApp.Plugins.Mys.Post.FullData[];
}
/**
* @description 咨讯列表项
* @since Beta v0.3.7
* @interface Item
* @property {TGApp.Plugins.Mys.Post.Post} post 帖子
* @property {TGApp.Plugins.Mys.Post.Forum} forum 版块
* @property {TGApp.Plugins.Mys.Post.Topic[]} topics 话题
* @property {TGApp.Plugins.Mys.User.Post} user 发帖用户
* @property {TGApp.Plugins.Mys.User.SelfOperation} self_operation 用户操作
* @property {TGApp.Plugins.Mys.Post.Stat} stat 帖子统计
* @property {TGApp.Plugins.Mys.Post.HelpSys} help_sys 帮助系统,可能为 null
* @property {TGApp.Plugins.Mys.Post.Image} cover 封面图片 URL
* @property {TGApp.Plugins.Mys.Post.Image[]} image_list 图片列表
* @property {boolean} is_official_master 是否为官方
* @property {boolean} is_user_master 是否用户
* @property {boolean} hot_reply_exist 是否热门回复
* @property {number} vote_count 投票数
* @property {number} last_modify_time 最后修改时间
* @property {string} recommend_type 推荐类型
* @property {unknown} collection 合集, 可能为 null
* @property {TGApp.Plugins.Mys.Post.Vod[]} vod_list 视频列表
* @property {boolean} is_block_on 是否屏蔽
* @property {unknown} forum_rank_info 版块排名信息,可能为 null
* @property {unknown[]} link_card_list 链接卡片列表,可能为 null
* @property {Meta} news_meta 元数据
* @property {TGApp.Plugins.Mys.Post.RecommendReason|null} recommend_reason 推荐理由,可能为 null
* @property {unknown} villa_card 别墅卡片,可能为 null
* @property {boolean} is_mentor 是否为导师
* @property {unknown} villa_room_card 别墅房间卡片,可能为 null
* @property {unknown} reply_avatar_action_info 回复头像动作信息,可能为 null
* @property {TGApp.Plugins.Mys.Post.Challenge} challenge 挑战信息,可能为 null
* @property {unknown[]} hot_reply_list 热门回复列表
* @property {unknown[]} villa_msg_image_list 别墅消息图片列表
* @returns Item
*/
interface Item {
post: TGApp.Plugins.Mys.Post.Post;
forum: TGApp.Plugins.Mys.Post.Forum;
topics: TGApp.Plugins.Mys.Post.Topic[];
user: TGApp.Plugins.Mys.User.Post;
self_operation: TGApp.Plugins.Mys.User.SelfOperation;
stat: TGApp.Plugins.Mys.Post.Stat;
help_sys: TGApp.Plugins.Mys.Post.HelpSys;
cover: TGApp.Plugins.Mys.Post.Image;
image_list: TGApp.Plugins.Mys.Post.Image[];
is_official_master: boolean;
is_user_master: boolean;
hot_reply_exist: boolean;
vote_count: number;
last_modify_time: number;
recommend_type: string;
collection: unknown;
vod_list: TGApp.Plugins.Mys.Post.Vod[];
is_block_on: boolean;
forum_rank_info: unknown;
link_card_list: unknown[];
news_meta: Meta;
recommend_reason: TGApp.Plugins.Mys.Post.RecommendReason | null;
villa_card: unknown | null;
is_mentor: boolean;
villa_room_card: unknown | null;
reply_avatar_action_info: unknown | null;
challenge: TGApp.Plugins.Mys.Post.Challenge | null;
hot_reply_list: unknown[];
villa_msg_image_list: unknown[];
} }
/** /**

View File

@@ -1,7 +1,7 @@
/** /**
* @file plugins/Mys/utils/news.ts * @file plugins/Mys/utils/news.ts
* @description Mys 插件咨讯工具 * @description Mys 插件咨讯工具
* @since Beta v0.4.4 * @since Beta v0.4.5
*/ */
/** /**
@@ -53,11 +53,11 @@ export function getActivityStatus(status: number): TGApp.Plugins.Mys.News.Render
/** /**
* @description 获取封面图 * @description 获取封面图
* @since Beta v0.4.4 * @since Beta v0.4.5
* @param {TGApp.Plugins.Mys.News.Item} item 咨讯列表项 * @param {TGApp.Plugins.Mys.Post.FullData} item 咨讯列表项
* @returns {string} 封面图链接 * @returns {string} 封面图链接
*/ */
export function getPostCover(item: TGApp.Plugins.Mys.News.Item): string { export function getPostCover(item: TGApp.Plugins.Mys.Post.FullData): string {
// 默认封面图 // 默认封面图
const defaultCover = "/source/UI/defaultCover.webp"; const defaultCover = "/source/UI/defaultCover.webp";
let cover; let cover;
@@ -75,11 +75,11 @@ export function getPostCover(item: TGApp.Plugins.Mys.News.Item): string {
/** /**
* @description 获取公共属性 * @description 获取公共属性
* @since Beta v0.4.0 * @since Beta v0.4.5
* @param {TGApp.Plugins.Mys.News.Item} item 咨讯列表项 * @param {TGApp.Plugins.Mys.Post.FullData} item 咨讯列表项
* @returns {TGApp.Plugins.Mys.News.RenderCard} 渲染用咨讯列表项 * @returns {TGApp.Plugins.Mys.News.RenderCard} 渲染用咨讯列表项
*/ */
function getCommonCard(item: TGApp.Plugins.Mys.News.Item): TGApp.Plugins.Mys.News.RenderCard { function getCommonCard(item: TGApp.Plugins.Mys.Post.FullData): TGApp.Plugins.Mys.News.RenderCard {
return { return {
title: item.post.subject, title: item.post.subject,
cover: getPostCover(item), cover: getPostCover(item),
@@ -102,7 +102,7 @@ function getCommonCard(item: TGApp.Plugins.Mys.News.Item): TGApp.Plugins.Mys.New
/** /**
* @description 获取渲染用公告数据 * @description 获取渲染用公告数据
* @since Alpha v0.2.1 * @since Beta v0.4.5
* @param {TGApp.Plugins.Mys.News.FullData} noticeData 公告数据 * @param {TGApp.Plugins.Mys.News.FullData} noticeData 公告数据
* @returns {TGApp.Plugins.Mys.News.RenderCard[]} * @returns {TGApp.Plugins.Mys.News.RenderCard[]}
*/ */
@@ -110,15 +110,13 @@ export function getNoticeCard(
noticeData: TGApp.Plugins.Mys.News.FullData, noticeData: TGApp.Plugins.Mys.News.FullData,
): TGApp.Plugins.Mys.News.RenderCard[] { ): TGApp.Plugins.Mys.News.RenderCard[] {
const noticeCard: TGApp.Plugins.Mys.News.RenderCard[] = []; const noticeCard: TGApp.Plugins.Mys.News.RenderCard[] = [];
noticeData.list.map((item: TGApp.Plugins.Mys.News.Item) => { noticeData.list.map((item) => noticeCard.push(getCommonCard(item)));
return noticeCard.push(getCommonCard(item));
});
return noticeCard; return noticeCard;
} }
/** /**
* @description 获取渲染用活动数据 * @description 获取渲染用活动数据
* @since Alpha v0.2.1 * @since Beta v0.4.5
* @param {TGApp.Plugins.Mys.News.FullData} activityData 活动数据 * @param {TGApp.Plugins.Mys.News.FullData} activityData 活动数据
* @returns {TGApp.Plugins.Mys.News.RenderCard[]} * @returns {TGApp.Plugins.Mys.News.RenderCard[]}
*/ */
@@ -126,10 +124,10 @@ export function getActivityCard(
activityData: TGApp.Plugins.Mys.News.FullData, activityData: TGApp.Plugins.Mys.News.FullData,
): TGApp.Plugins.Mys.News.RenderCard[] { ): TGApp.Plugins.Mys.News.RenderCard[] {
const activityCard: TGApp.Plugins.Mys.News.RenderCard[] = []; const activityCard: TGApp.Plugins.Mys.News.RenderCard[] = [];
activityData.list.map((item: TGApp.Plugins.Mys.News.Item) => { activityData.list.map((item) => {
const startTime = new Date(Number(item.news_meta.start_at_sec) * 1000).toLocaleDateString(); const startTime = new Date(Number(item.news_meta!.start_at_sec) * 1000).toLocaleDateString();
const endTime = new Date(Number(item.news_meta.end_at_sec) * 1000).toLocaleDateString(); const endTime = new Date(Number(item.news_meta!.end_at_sec) * 1000).toLocaleDateString();
const statusInfo = getActivityStatus(item.news_meta.activity_status); const statusInfo = getActivityStatus(item.news_meta!.activity_status);
const commonCard = getCommonCard(item); const commonCard = getCommonCard(item);
commonCard.subtitle = `${startTime} - ${endTime}`; commonCard.subtitle = `${startTime} - ${endTime}`;
commonCard.status = statusInfo; commonCard.status = statusInfo;
@@ -140,7 +138,7 @@ export function getActivityCard(
/** /**
* @description 获取渲染用新闻数据 * @description 获取渲染用新闻数据
* @since Alpha v0.2.1 * @since Beta v0.4.5
* @param {TGApp.Plugins.Mys.News.FullData} newsData 新闻数据 * @param {TGApp.Plugins.Mys.News.FullData} newsData 新闻数据
* @returns {TGApp.Plugins.Mys.News.RenderCard[]} * @returns {TGApp.Plugins.Mys.News.RenderCard[]}
*/ */
@@ -148,8 +146,6 @@ export function getNewsCard(
newsData: TGApp.Plugins.Mys.News.FullData, newsData: TGApp.Plugins.Mys.News.FullData,
): TGApp.Plugins.Mys.News.RenderCard[] { ): TGApp.Plugins.Mys.News.RenderCard[] {
const newsCard: TGApp.Plugins.Mys.News.RenderCard[] = []; const newsCard: TGApp.Plugins.Mys.News.RenderCard[] = [];
newsData.list.map((item: TGApp.Plugins.Mys.News.Item) => { newsData.list.map((item) => newsCard.push(getCommonCard(item)));
return newsCard.push(getCommonCard(item));
});
return newsCard; return newsCard;
} }

View File

@@ -1,18 +1,20 @@
/** /**
* @file plugins/Mys/utils/getPostsCard.ts * @file plugins/Mys/utils/getPostsCard.ts
* @description Mys 插件帖子渲染 * @description Mys 插件帖子渲染
* @since Beta v0.4.0 * @since Beta v0.4.5
*/ */
import { getPostCover } from "./getNewsCard"; import { getPostCover } from "./getNewsCard";
/** /**
* @description 解析单个帖子 * @description 解析单个帖子
* @since Beta v0.4.0 * @since Beta v0.4.5
* @param {TGApp.Plugins.Mys.News.Item} post 帖子 * @param {TGApp.Plugins.Mys.Post.FullData} post 帖子
* @returns {TGApp.Plugins.Mys.Forum.RenderCard} 渲染用帖子 * @returns {TGApp.Plugins.Mys.Forum.RenderCard} 渲染用帖子
*/ */
function getPostCard(post: TGApp.Plugins.Mys.News.Item): TGApp.Plugins.Mys.Forum.RenderCard { export function getPostCard(
post: TGApp.Plugins.Mys.Post.FullData,
): TGApp.Plugins.Mys.Forum.RenderCard {
return { return {
title: post.post.subject, title: post.post.subject,
cover: getPostCover(post), cover: getPostCover(post),

View File

@@ -36,7 +36,7 @@ export async function getTokensByLoginTicket(
}) })
.then((res) => { .then((res) => {
console.log(res); console.log(res);
if (res.data.retcode !== 0) return res.data; if (res.data.retcode !== 0) return <TGApp.BBS.Response.Base>res.data;
return res.data.data.list; return res.data.data.list;
}); });
} }