| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227 |
- import type { IStudio } from "../auth/Studio"
- import type { IUser } from "../auth/User"
- import type { IChannel } from "../channel/Channel"
- import type { _TRole } from "./Auth"
- export interface ICourseListApiResponse {
- article: string;
- title: string;
- level: string;
- children: number;
- }
- export interface ICourseDataRequest {
- id?: string; //课程ID
- title: string; //标题
- subtitle?: string; //副标题
- summary?: string; //副标题
- content?: string | null;
- sign_up_message?: string | null;
- cover?: string; //封面图片文件名
- teacher_id?: string; //UserID
- publicity: number; //类型-公开/内部
- anthology_id?: string; //文集ID
- channel_id?: string; //标准答案channel
- start_at?: string; //课程开始时间
- end_at?: string; //课程结束时间
- sign_up_start_at: string | null; //报名开始时间
- sign_up_end_at: string | null; //报名结束时间
- join: string;
- request_exp: string;
- number: number;
- }
- export type TCourseRole =
- | "owner"
- | "teacher"
- | "manager"
- | "assistant"
- | "student";
- export type TCourseJoinMode = "invite" | "manual" | "open";
- export type TCourseExpRequest = "none" | "begin-end" | "daily";
- export interface IMember {
- role: TCourseRole;
- status: TCourseMemberStatus;
- }
- export interface ICourseDataResponse {
- id: string; //课程ID
- title: string; //标题
- subtitle: string; //副标题
- summary?: string; //副标题
- sign_up_message?: string | null; //报名弹窗消息
- teacher?: IUser; //UserID
- course_count?: number; //课程数
- publicity: number; //类型-公开/内部
- anthology_id?: string; //文集ID
- anthology_title?: string; //文集标题
- anthology_owner?: IStudio; //文集拥有者
- channel_id: string; //标准答案ID
- channel_name?: string; //文集标题
- channel_owner?: IStudio; //文集拥有者
- studio?: IStudio; //课程拥有者
- start_at: string; //课程开始时间
- end_at: string; //课程结束时间
- sign_up_start_at: string; //报名开始时间
- sign_up_end_at: string; //报名结束时间
- content: string; //简介
- cover: string; //封面图片文件名
- cover_url?: string[]; //封面图片文件名
- member_count: number;
- join: TCourseJoinMode; //报名方式
- request_exp: TCourseExpRequest;
- my_status?: TCourseMemberStatus;
- my_status_id?: string;
- count_progressing?: number;
- number: number;
- members?: IMember[];
- my_role?: TCourseRole;
- created_at: string; //创建时间
- updated_at: string; //修改时间
- }
- export interface ICourseResponse {
- ok: boolean;
- message: string;
- data: ICourseDataResponse;
- }
- export interface ICourseListResponse {
- ok: boolean;
- message: string;
- data: {
- rows: ICourseDataResponse[];
- count: number;
- };
- }
- export interface ICourseCreateRequest {
- title: string;
- lang: string;
- studio: string;
- }
- export interface IAnthologyCreateRequest {
- title: string;
- lang: string;
- studio: string;
- }
- export interface ICourseNumberResponse {
- ok: boolean;
- message: string;
- data: {
- create: number;
- teach: number;
- study: number;
- };
- }
- export type TCourseMemberStatus =
- | "none" /*无*/
- | "normal" /*开放课程直接加入*/
- | "joined" /*开放课程已经加入*/
- | "applied" /**学生已经报名 管理员尚未审核 */
- | "canceled" /**学生取消报名 */
- | "agreed" /**学生/助教已经接受邀请 */
- | "disagreed" /**学生/助教已经拒绝邀请 */
- | "left" /**学生自己退出 */
- | "invited" /**管理员已经邀请学生加入 */
- | "revoked" /**管理员撤销邀请 */
- | "accepted" /**已经被管理员录取 */
- | "rejected" /**报名已经被管理员拒绝 */
- | "blocked"; /**被管理员清退 */
- export type TCourseMemberAction =
- | "join" /*加入自学课程*/
- | "apply" /**学生报名 */
- | "cancel" /**学生取消报名 */
- | "agree" /**学生/助教接受邀请 */
- | "disagree" /**学生/助教拒绝邀请 */
- | "leave" /**学生/助教自己退出 */
- | "invite" /**管理员邀请学生加入 */
- | "revoke" /**管理员撤销邀请 */
- | "accept" /**管理员录取 */
- | "reject" /**管理员拒绝 */
- | "block"; /**管理员清退 */
- interface IActionMap {
- action: TCourseMemberAction;
- status: TCourseMemberStatus;
- }
- export const actionMap = (action: TCourseMemberAction) => {
- const data: IActionMap[] = [
- { action: "join", status: "joined" },
- { action: "apply", status: "applied" },
- { action: "cancel", status: "canceled" },
- { action: "agree", status: "agreed" },
- { action: "disagree", status: "disagreed" },
- { action: "leave", status: "left" },
- { action: "invite", status: "invited" },
- { action: "revoke", status: "revoked" },
- { action: "accept", status: "accepted" },
- { action: "reject", status: "rejected" },
- { action: "block", status: "blocked" },
- ];
- const current = data.find((value) => value.action === action);
- return current?.status;
- };
- export interface ICourseMemberData {
- id?: string;
- user_id: string;
- course_id: string;
- course?: ICourseDataResponse;
- channel_id?: string;
- channel?: IChannel;
- role?: TCourseRole;
- operating?: "invite" | "sign_up";
- user?: IUser;
- editor?: IUser;
- status?: TCourseMemberStatus;
- created_at?: string;
- updated_at?: string;
- }
- export interface ICourseMemberResponse {
- ok: boolean;
- message: string;
- data: ICourseMemberData;
- }
- export interface ICourseMemberListResponse {
- ok: boolean;
- message: string;
- data: {
- rows: ICourseMemberData[];
- role: TCourseRole;
- count: number;
- };
- }
- export interface ICourseMemberDeleteResponse {
- ok: boolean;
- message: string;
- data: boolean;
- }
- export interface ICourseUser {
- role: TCourseRole;
- channel_id?: string | null;
- }
- export interface ICourseCurrUserResponse {
- ok: boolean;
- message: string;
- data: ICourseUser;
- }
- export interface IExerciseListData {
- user: IUser;
- wbw: number;
- translation: number;
- question: number;
- html: string;
- }
- export interface ICourseExerciseResponse {
- ok: boolean;
- message: string;
- data: {
- rows: IExerciseListData[];
- count: number;
- };
- }
|