feat(lottery):草创抽奖详情

This commit is contained in:
BTMuli
2023-03-30 22:52:28 +08:00
parent 842066f345
commit 9298f23ae9
5 changed files with 170 additions and 1 deletions

View File

@@ -2,7 +2,7 @@
* @file plugins Mys index.ts
* @description Mys plugin index
* @author BTMuli<bt-muli@outlook.com>
* @since Alpha
* @since Alpha v0.1.1
*/
// Post
@@ -14,6 +14,8 @@ import { getGachaCard } from "./utils/gacha";
// News
import { getNoticeList, getActivityList, getNewsList } from "./request/news";
import { getNoticeCard, getActivityCard, getNewsCard } from "./utils/news";
// Lottery
import { getLotteryData } from "./request/lottery";
const MysOper = {
Post: {
@@ -36,6 +38,9 @@ const MysOper = {
news: getNewsCard,
},
},
Lottery: {
get: getLotteryData,
},
};
export default MysOper;

View File

@@ -0,0 +1,83 @@
/**
* @file plugins Mys interface lottery.ts
* @description Mys 插件抽奖接口
* @author BTMuli<bt-muli@outlook.com>
* @since Alpha v0.1.1
*/
import { MysResponse } from "./base";
import { User } from "./user";
/**
* @description 抽奖返回数据
* @since Alpha v0.1.1
* @interface LotteryResponse
* @extends {MysResponse}
* @property {LotteryData} data.show_lottery 抽奖数据
* @return {LotteryResponse}
*/
export interface LotteryResponse extends MysResponse {
data: {
show_lottery: LotteryData;
};
}
/**
* @description 抽奖数据
* @since Alpha v0.1.1
* @interface LotteryData
* @property {string} id 抽奖 ID
* @property {User} creator 创建者
* @property {string} draw_time 抽奖时间
* @property {string} participant_way 参与方式 // Forward: 转发
* @property {boolean} is_expect_unfocus_user 是否限制未关注用户
* @property {boolean} is_expect_non_real_name_user 是否限制未实名用户
* @property {LotteryReward[]} user_rewards 用户奖励
* @property {string} status 状态 // Settled: 已结算
* @property {boolean} is_blocked 是否被屏蔽
* @property {string} user_status 用户状态 // NotParticipant: 未参与
* @property {boolean} is_upload_address 是否上传地址
* @property {string} lottery_entity_summary 抽奖实体摘要
* @property {string} entity_id 实体 ID // 若为帖子,则为帖子 ID
* @property {string} entity_type 实体类型 // Post: 帖子
* @property {string} now_time 当前时间
* @return {LotteryData}
*/
export interface LotteryData {
id: string;
creator: User;
draw_time: string;
participant_way: string;
is_expect_unfocus_user: boolean;
is_expect_non_real_name_user: boolean;
user_rewards: LotteryReward[];
status: string;
is_blocked: boolean;
user_status: string;
is_upload_address: boolean;
lottery_entity_summary: string;
entity_id: string;
entity_type: string;
now_time: string;
}
/**
* @description 抽奖奖励
* @since Alpha v0.1.1
* @interface LotteryReward
* @property {string} reward_name 奖励名称
* @property {number} winner_number 获奖人数
* @property {number} scheduled_winner_number 预计获奖人数
* @property {boolean} is_send_by_post 是否通过帖子发放
* @property {User[]} users 用户列表
* @property {string} id 奖励 ID
* @return {LotteryReward}
*/
export interface LotteryReward {
reward_name: string;
winner_number: number;
scheduled_winner_number: number;
is_send_by_post: boolean;
users: User[];
id: string;
}

View File

@@ -0,0 +1,32 @@
/**
* @file plugins Mys interface lottery.ts
* @description Mys 插件抽奖接口
* @author BTMuli<bt-muli@outlook.com>
* @since Alpha v0.1.1
*/
import { http } from "@tauri-apps/api";
import { LotteryResponse, LotteryData } from "../interface/lottery";
// 抽奖 API
const LOTTERY_API =
"https://bbs-api.miyoushe.com/painter/wapi/lottery/user/show?gids=2&id={lottery_id}";
/**
* @description 获取抽奖信息
* @since Alpha v0.1.1
* @param {string} lottery_id 抽奖 ID
* @return {Promise<LotteryData>}
*/
export async function getLotteryData(lottery_id: string): Promise<LotteryData> {
return await http
.fetch<LotteryResponse>(LOTTERY_API.replace("{lottery_id}", lottery_id), {
method: "GET",
headers: {
"Content-Type": "application/json",
},
})
.then(res => {
return res.data.data.show_lottery;
});
}