web-模块、权限、成就
This commit is contained in:
114
schoolNewsWeb/src/types/achievement/achievement.ts
Normal file
114
schoolNewsWeb/src/types/achievement/achievement.ts
Normal file
@@ -0,0 +1,114 @@
|
||||
|
||||
import { BaseDTO } from '../base';
|
||||
import { AchievementEventType } from '../enums';
|
||||
|
||||
/**
|
||||
* 成就实体
|
||||
*/
|
||||
export interface Achievement extends BaseDTO {
|
||||
/** 成就唯一标识 */
|
||||
achievementID?: string;
|
||||
/** 成就名称 */
|
||||
name?: string;
|
||||
/** 成就描述 */
|
||||
description?: string;
|
||||
/** 成就图标 */
|
||||
icon?: string;
|
||||
/** 成就类型(1勋章 2等级) */
|
||||
type?: number;
|
||||
/** 成就等级 */
|
||||
level?: number;
|
||||
/** 获取条件类型(1学习时长 2资源数量 3课程数量 4连续学习天数) */
|
||||
conditionType?: number;
|
||||
/** 条件值 */
|
||||
conditionValue?: number;
|
||||
/** 获得积分 */
|
||||
points?: number;
|
||||
/** 排序号 */
|
||||
orderNum?: number;
|
||||
/** 创建者 */
|
||||
creator?: string;
|
||||
/** 更新者 */
|
||||
updater?: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* 用户成就实体
|
||||
*/
|
||||
export interface UserAchievement extends BaseDTO {
|
||||
/** 用户ID */
|
||||
userID?: string;
|
||||
/** 成就ID */
|
||||
achievementID?: string;
|
||||
/** 获得时间 */
|
||||
obtainTime?: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* 用户成就进度实体
|
||||
*/
|
||||
export interface UserAchievementProgress extends BaseDTO {
|
||||
/** 用户ID */
|
||||
userID?: string;
|
||||
/** 成就ID */
|
||||
achievementID?: string;
|
||||
/** 当前进度值 */
|
||||
currentValue?: number;
|
||||
/** 目标进度值 */
|
||||
targetValue?: number;
|
||||
/** 进度百分比 (0-100) */
|
||||
progressPercentage?: number;
|
||||
/** 是否已完成 */
|
||||
completed?: boolean;
|
||||
/** 最后更新时间 */
|
||||
lastUpdateTime?: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* 成就视图对象 - 包含成就信息、获得状态和进度信息
|
||||
*/
|
||||
export interface AchievementVO extends Achievement {
|
||||
// ==================== 用户成就表的字段 ====================
|
||||
/** 用户成就记录ID */
|
||||
userAchievementID?: string;
|
||||
/** 用户ID */
|
||||
userID?: string;
|
||||
/** 获得时间 */
|
||||
obtainTime?: string;
|
||||
|
||||
// ==================== 成就进度表的字段 ====================
|
||||
/** 进度记录ID */
|
||||
progressID?: string;
|
||||
/** 当前进度值 */
|
||||
currentValue?: number;
|
||||
/** 目标进度值 */
|
||||
targetValue?: number;
|
||||
/** 进度百分比 (0-100) */
|
||||
progressPercentage?: number;
|
||||
/** 是否已完成 */
|
||||
completed?: boolean;
|
||||
/** 最后更新时间 */
|
||||
lastUpdateTime?: string;
|
||||
|
||||
// ==================== 扩展字段 ====================
|
||||
/** 是否已获得该成就 */
|
||||
obtained?: boolean;
|
||||
}
|
||||
|
||||
/**
|
||||
* 成就事件实体
|
||||
* 用于触发成就检测和授予
|
||||
* @since 2025-10-24
|
||||
*/
|
||||
export interface AchievementEvent {
|
||||
/** 用户ID */
|
||||
userID: string;
|
||||
/** 事件类型 */
|
||||
eventType: AchievementEventType;
|
||||
/** 事件值(如学习时长、资源数量等) */
|
||||
eventValue?: number;
|
||||
/** 事件时间 */
|
||||
eventTime?: string;
|
||||
/** 额外数据 */
|
||||
extraData?: Record<string, any>;
|
||||
}
|
||||
1
schoolNewsWeb/src/types/achievement/index.ts
Normal file
1
schoolNewsWeb/src/types/achievement/index.ts
Normal file
@@ -0,0 +1 @@
|
||||
export * from './achievement';
|
||||
186
schoolNewsWeb/src/types/enums/achievement-enums.ts
Normal file
186
schoolNewsWeb/src/types/enums/achievement-enums.ts
Normal file
@@ -0,0 +1,186 @@
|
||||
/**
|
||||
* @description 成就相关枚举辅助工具
|
||||
* @author yslg
|
||||
* @since 2025-10-25
|
||||
*/
|
||||
|
||||
import { AchievementType, AchievementConditionType, AchievementEventType } from './index';
|
||||
|
||||
/**
|
||||
* 成就类型描述映射
|
||||
*/
|
||||
export const AchievementTypeDescriptions: Record<AchievementType, string> = {
|
||||
[AchievementType.BADGE]: '勋章',
|
||||
[AchievementType.LEVEL]: '等级'
|
||||
};
|
||||
|
||||
/**
|
||||
* 成就条件类型描述映射
|
||||
*/
|
||||
export const AchievementConditionTypeDescriptions: Record<AchievementConditionType, string> = {
|
||||
[AchievementConditionType.LEARNING_TIME]: '学习时长',
|
||||
[AchievementConditionType.RESOURCE_VIEW_COUNT]: '浏览资源数量',
|
||||
[AchievementConditionType.COURSE_COMPLETE_COUNT]: '完成课程数量',
|
||||
[AchievementConditionType.CONTINUOUS_LOGIN_DAYS]: '连续登录天数',
|
||||
[AchievementConditionType.RESOURCE_COLLECT_COUNT]: '收藏资源数量',
|
||||
[AchievementConditionType.TASK_COMPLETE_COUNT]: '完成任务数量',
|
||||
[AchievementConditionType.POINTS_EARNED]: '获得积分数量',
|
||||
[AchievementConditionType.COMMENT_COUNT]: '发表评论数量',
|
||||
[AchievementConditionType.CHAPTER_COMPLETE_COUNT]: '完成章节数量',
|
||||
[AchievementConditionType.TOTAL_LOGIN_DAYS]: '累计登录天数'
|
||||
};
|
||||
|
||||
/**
|
||||
* 成就事件类型描述映射
|
||||
*/
|
||||
export const AchievementEventTypeDescriptions: Record<AchievementEventType, string> = {
|
||||
// 学习相关事件
|
||||
[AchievementEventType.LEARNING_TIME_UPDATED]: '学习时长更新',
|
||||
[AchievementEventType.COURSE_COMPLETED]: '课程完成',
|
||||
[AchievementEventType.COURSE_STARTED]: '开始学习课程',
|
||||
[AchievementEventType.CHAPTER_COMPLETED]: '章节完成',
|
||||
// 资源相关事件
|
||||
[AchievementEventType.RESOURCE_VIEWED]: '浏览资源',
|
||||
[AchievementEventType.RESOURCE_COLLECTED]: '收藏资源',
|
||||
[AchievementEventType.RESOURCE_SHARED]: '分享资源',
|
||||
// 任务相关事件
|
||||
[AchievementEventType.TASK_COMPLETED]: '任务完成',
|
||||
[AchievementEventType.TASK_ITEM_COMPLETED]: '任务项完成',
|
||||
// 互动相关事件
|
||||
[AchievementEventType.COMMENT_POSTED]: '发表评论',
|
||||
[AchievementEventType.LIKE_GIVEN]: '点赞',
|
||||
// 登录相关事件
|
||||
[AchievementEventType.USER_LOGIN]: '用户登录',
|
||||
[AchievementEventType.CONTINUOUS_LOGIN]: '连续登录',
|
||||
// 积分相关事件
|
||||
[AchievementEventType.POINTS_EARNED_EVENT]: '获得积分',
|
||||
// 测试相关事件
|
||||
[AchievementEventType.TEST_PASSED]: '测试通过',
|
||||
[AchievementEventType.TEST_PERFECT_SCORE]: '测试满分'
|
||||
};
|
||||
|
||||
/**
|
||||
* 成就枚举辅助类
|
||||
*/
|
||||
export class AchievementEnumHelper {
|
||||
|
||||
/**
|
||||
* 获取成就类型描述
|
||||
* @param type 成就类型
|
||||
* @returns 描述文本
|
||||
*/
|
||||
static getAchievementTypeDescription(type: AchievementType): string {
|
||||
return AchievementTypeDescriptions[type] || '未知类型';
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取成就条件类型描述
|
||||
* @param type 条件类型
|
||||
* @returns 描述文本
|
||||
*/
|
||||
static getConditionTypeDescription(type: AchievementConditionType): string {
|
||||
return AchievementConditionTypeDescriptions[type] || '未知条件';
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取成就事件类型描述
|
||||
* @param type 事件类型
|
||||
* @returns 描述文本
|
||||
*/
|
||||
static getEventTypeDescription(type: AchievementEventType): string {
|
||||
return AchievementEventTypeDescriptions[type] || '未知事件';
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据code获取成就条件类型
|
||||
* @param code 条件类型代码
|
||||
* @returns 条件类型枚举值或null
|
||||
*/
|
||||
static getConditionTypeFromCode(code: number): AchievementConditionType | null {
|
||||
const types = Object.values(AchievementConditionType).filter(
|
||||
(value): value is AchievementConditionType => typeof value === 'number'
|
||||
);
|
||||
return types.find(type => type === code) || null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据code获取成就事件类型
|
||||
* @param code 事件类型代码
|
||||
* @returns 事件类型枚举值或null
|
||||
*/
|
||||
static getEventTypeFromCode(code: string): AchievementEventType | null {
|
||||
const types = Object.values(AchievementEventType).filter(
|
||||
(value): value is AchievementEventType => typeof value === 'string'
|
||||
);
|
||||
return types.find(type => type === code) || null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取所有成就条件类型选项(用于下拉框等)
|
||||
* @returns 选项数组
|
||||
*/
|
||||
static getAllConditionTypeOptions(): Array<{ value: AchievementConditionType; label: string }> {
|
||||
return Object.entries(AchievementConditionTypeDescriptions).map(([value, label]) => ({
|
||||
value: Number(value) as AchievementConditionType,
|
||||
label
|
||||
}));
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取所有成就类型选项(用于下拉框等)
|
||||
* @returns 选项数组
|
||||
*/
|
||||
static getAllAchievementTypeOptions(): Array<{ value: AchievementType; label: string }> {
|
||||
return Object.entries(AchievementTypeDescriptions).map(([value, label]) => ({
|
||||
value: Number(value) as AchievementType,
|
||||
label
|
||||
}));
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取所有成就事件类型选项(用于下拉框等)
|
||||
* @returns 选项数组
|
||||
*/
|
||||
static getAllEventTypeOptions(): Array<{ value: AchievementEventType; label: string }> {
|
||||
return Object.entries(AchievementEventTypeDescriptions).map(([value, label]) => ({
|
||||
value: value as AchievementEventType,
|
||||
label
|
||||
}));
|
||||
}
|
||||
|
||||
/**
|
||||
* 格式化条件值显示
|
||||
* @param conditionType 条件类型
|
||||
* @param conditionValue 条件值
|
||||
* @returns 格式化后的显示文本
|
||||
*/
|
||||
static formatConditionValue(conditionType: AchievementConditionType, conditionValue: number): string {
|
||||
const typeDesc = this.getConditionTypeDescription(conditionType);
|
||||
|
||||
switch (conditionType) {
|
||||
case AchievementConditionType.LEARNING_TIME:
|
||||
return `${typeDesc}达到${conditionValue}分钟`;
|
||||
case AchievementConditionType.RESOURCE_VIEW_COUNT:
|
||||
return `${typeDesc}达到${conditionValue}个`;
|
||||
case AchievementConditionType.COURSE_COMPLETE_COUNT:
|
||||
return `${typeDesc}达到${conditionValue}门`;
|
||||
case AchievementConditionType.CONTINUOUS_LOGIN_DAYS:
|
||||
return `${typeDesc}达到${conditionValue}天`;
|
||||
case AchievementConditionType.RESOURCE_COLLECT_COUNT:
|
||||
return `${typeDesc}达到${conditionValue}个`;
|
||||
case AchievementConditionType.TASK_COMPLETE_COUNT:
|
||||
return `${typeDesc}达到${conditionValue}个`;
|
||||
case AchievementConditionType.POINTS_EARNED:
|
||||
return `${typeDesc}达到${conditionValue}分`;
|
||||
case AchievementConditionType.COMMENT_COUNT:
|
||||
return `${typeDesc}达到${conditionValue}条`;
|
||||
case AchievementConditionType.CHAPTER_COMPLETE_COUNT:
|
||||
return `${typeDesc}达到${conditionValue}个`;
|
||||
case AchievementConditionType.TOTAL_LOGIN_DAYS:
|
||||
return `${typeDesc}达到${conditionValue}天`;
|
||||
default:
|
||||
return `${typeDesc}达到${conditionValue}`;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -210,3 +210,90 @@ export enum TaskItemType {
|
||||
/** 课程类型 */
|
||||
COURSE = 2
|
||||
}
|
||||
|
||||
/**
|
||||
* 成就类型枚举
|
||||
*/
|
||||
export enum AchievementType {
|
||||
/** 勋章 */
|
||||
BADGE = 1,
|
||||
/** 等级 */
|
||||
LEVEL = 2
|
||||
}
|
||||
|
||||
/**
|
||||
* 成就条件类型枚举
|
||||
*/
|
||||
export enum AchievementConditionType {
|
||||
/** 学习时长(分钟) */
|
||||
LEARNING_TIME = 1,
|
||||
/** 浏览资源数量 */
|
||||
RESOURCE_VIEW_COUNT = 2,
|
||||
/** 完成课程数量 */
|
||||
COURSE_COMPLETE_COUNT = 3,
|
||||
/** 连续登录天数 */
|
||||
CONTINUOUS_LOGIN_DAYS = 4,
|
||||
/** 收藏资源数量 */
|
||||
RESOURCE_COLLECT_COUNT = 5,
|
||||
/** 完成任务数量 */
|
||||
TASK_COMPLETE_COUNT = 6,
|
||||
/** 获得积分数量 */
|
||||
POINTS_EARNED = 7,
|
||||
/** 发表评论数量 */
|
||||
COMMENT_COUNT = 8,
|
||||
/** 完成章节数量 */
|
||||
CHAPTER_COMPLETE_COUNT = 9,
|
||||
/** 累计登录天数 */
|
||||
TOTAL_LOGIN_DAYS = 10
|
||||
}
|
||||
|
||||
/**
|
||||
* 成就事件类型枚举
|
||||
*/
|
||||
export enum AchievementEventType {
|
||||
// ==================== 学习相关事件 ====================
|
||||
/** 学习时长更新 */
|
||||
LEARNING_TIME_UPDATED = 'learning_time_updated',
|
||||
/** 课程完成 */
|
||||
COURSE_COMPLETED = 'course_completed',
|
||||
/** 开始学习课程 */
|
||||
COURSE_STARTED = 'course_started',
|
||||
/** 章节完成 */
|
||||
CHAPTER_COMPLETED = 'chapter_completed',
|
||||
|
||||
// ==================== 资源相关事件 ====================
|
||||
/** 浏览资源 */
|
||||
RESOURCE_VIEWED = 'resource_viewed',
|
||||
/** 收藏资源 */
|
||||
RESOURCE_COLLECTED = 'resource_collected',
|
||||
/** 分享资源 */
|
||||
RESOURCE_SHARED = 'resource_shared',
|
||||
|
||||
// ==================== 任务相关事件 ====================
|
||||
/** 任务完成 */
|
||||
TASK_COMPLETED = 'task_completed',
|
||||
/** 任务项完成 */
|
||||
TASK_ITEM_COMPLETED = 'task_item_completed',
|
||||
|
||||
// ==================== 互动相关事件 ====================
|
||||
/** 发表评论 */
|
||||
COMMENT_POSTED = 'comment_posted',
|
||||
/** 点赞 */
|
||||
LIKE_GIVEN = 'like_given',
|
||||
|
||||
// ==================== 登录相关事件 ====================
|
||||
/** 用户登录 */
|
||||
USER_LOGIN = 'user_login',
|
||||
/** 连续登录 */
|
||||
CONTINUOUS_LOGIN = 'continuous_login',
|
||||
|
||||
// ==================== 积分相关事件 ====================
|
||||
/** 获得积分 */
|
||||
POINTS_EARNED_EVENT = 'points_earned',
|
||||
|
||||
// ==================== 测试相关事件 ====================
|
||||
/** 测试通过 */
|
||||
TEST_PASSED = 'test_passed',
|
||||
/** 测试满分 */
|
||||
TEST_PERFECT_SCORE = 'test_perfect_score'
|
||||
}
|
||||
@@ -22,6 +22,11 @@ export * from './menu';
|
||||
// 权限相关
|
||||
export * from './permission';
|
||||
|
||||
// 系统相关
|
||||
export * from './module';
|
||||
|
||||
export * from './achievement';
|
||||
|
||||
// 认证相关
|
||||
export * from './auth';
|
||||
|
||||
@@ -42,6 +47,7 @@ export * from './usercenter';
|
||||
|
||||
// 枚举类型
|
||||
export * from './enums';
|
||||
export * from './enums/achievement-enums';
|
||||
|
||||
// 常量
|
||||
export * from './constants';
|
||||
|
||||
162
schoolNewsWeb/src/types/module/index.ts
Normal file
162
schoolNewsWeb/src/types/module/index.ts
Normal file
@@ -0,0 +1,162 @@
|
||||
/**
|
||||
* @description 系统相关类型定义
|
||||
* @author yslg
|
||||
* @since 2025-10-25
|
||||
*/
|
||||
|
||||
import { BaseDTO } from '../base';
|
||||
|
||||
/**
|
||||
* 系统模块
|
||||
*/
|
||||
export interface SysModule extends BaseDTO {
|
||||
/** 模块ID */
|
||||
moduleID?: string;
|
||||
/** 模块名称 */
|
||||
name?: string;
|
||||
/** 模块代码 */
|
||||
code?: string;
|
||||
/** 模块描述 */
|
||||
description?: string;
|
||||
/** 模块图标 */
|
||||
icon?: string;
|
||||
/** 模块排序号 */
|
||||
orderNum?: number;
|
||||
/** 模块状态(0禁用 1启用) */
|
||||
status?: number;
|
||||
/** 创建者 */
|
||||
creator?: string;
|
||||
/** 更新者 */
|
||||
updater?: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* 系统配置
|
||||
*/
|
||||
export interface SysConfig extends BaseDTO {
|
||||
/** 配置键 */
|
||||
configKey?: string;
|
||||
/** 配置值 */
|
||||
configValue?: string;
|
||||
/** 配置名称 */
|
||||
configName?: string;
|
||||
/** 配置描述 */
|
||||
description?: string;
|
||||
/** 配置类型 */
|
||||
configType?: string;
|
||||
/** 是否系统内置 */
|
||||
isSystem?: boolean;
|
||||
/** 创建者 */
|
||||
creator?: string;
|
||||
/** 更新者 */
|
||||
updater?: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* 系统字典类型
|
||||
*/
|
||||
export interface SysDictType extends BaseDTO {
|
||||
/** 字典类型 */
|
||||
dictType?: string;
|
||||
/** 字典名称 */
|
||||
dictName?: string;
|
||||
/** 状态(0禁用 1启用) */
|
||||
status?: number;
|
||||
/** 备注 */
|
||||
remark?: string;
|
||||
/** 创建者 */
|
||||
creator?: string;
|
||||
/** 更新者 */
|
||||
updater?: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* 系统字典数据
|
||||
*/
|
||||
export interface SysDictData extends BaseDTO {
|
||||
/** 字典排序 */
|
||||
dictSort?: number;
|
||||
/** 字典标签 */
|
||||
dictLabel?: string;
|
||||
/** 字典键值 */
|
||||
dictValue?: string;
|
||||
/** 字典类型 */
|
||||
dictType?: string;
|
||||
/** 状态(0禁用 1启用) */
|
||||
status?: number;
|
||||
/** 是否默认 */
|
||||
isDefault?: boolean;
|
||||
/** 备注 */
|
||||
remark?: string;
|
||||
/** 创建者 */
|
||||
creator?: string;
|
||||
/** 更新者 */
|
||||
updater?: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* 系统通知
|
||||
*/
|
||||
export interface SysNotification extends BaseDTO {
|
||||
/** 通知ID */
|
||||
notificationID?: string;
|
||||
/** 通知标题 */
|
||||
title?: string;
|
||||
/** 通知内容 */
|
||||
content?: string;
|
||||
/** 通知类型 */
|
||||
type?: number;
|
||||
/** 接收用户ID */
|
||||
receiverID?: string;
|
||||
/** 是否已读 */
|
||||
isRead?: boolean;
|
||||
/** 已读时间 */
|
||||
readTime?: string;
|
||||
/** 创建者 */
|
||||
creator?: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* 系统操作日志
|
||||
*/
|
||||
export interface SysOperationLog extends BaseDTO {
|
||||
/** 操作用户 */
|
||||
operator?: string;
|
||||
/** 操作模块 */
|
||||
module?: string;
|
||||
/** 操作类型 */
|
||||
operationType?: string;
|
||||
/** 操作方法 */
|
||||
method?: string;
|
||||
/** 请求参数 */
|
||||
requestParams?: string;
|
||||
/** 返回结果 */
|
||||
responseResult?: string;
|
||||
/** 操作状态(0失败 1成功) */
|
||||
status?: number;
|
||||
/** 错误消息 */
|
||||
errorMsg?: string;
|
||||
/** 操作IP */
|
||||
operationIP?: string;
|
||||
/** 操作时间 */
|
||||
operationTime?: string;
|
||||
/** 执行时长(毫秒) */
|
||||
duration?: number;
|
||||
}
|
||||
|
||||
/**
|
||||
* 系统访问统计
|
||||
*/
|
||||
export interface SysVisitStatistics extends BaseDTO {
|
||||
/** 统计日期 */
|
||||
statisticsDate?: string;
|
||||
/** 访问量 */
|
||||
visitCount?: number;
|
||||
/** 独立访客数 */
|
||||
uniqueVisitors?: number;
|
||||
/** 页面浏览量 */
|
||||
pageViews?: number;
|
||||
/** 平均访问时长(秒) */
|
||||
avgDuration?: number;
|
||||
}
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
import { BaseDTO } from '../base';
|
||||
import { SysMenu } from '../menu';
|
||||
import { SysRole } from '../role';
|
||||
import { SysModule } from '../module';
|
||||
|
||||
/**
|
||||
* 系统权限
|
||||
@@ -16,6 +17,7 @@ export interface SysPermission extends BaseDTO {
|
||||
id?:string;
|
||||
/** 权限ID */
|
||||
permissionID?: string;
|
||||
moduleID?: string;
|
||||
/** 权限名称 */
|
||||
name?: string;
|
||||
/** 权限描述 */
|
||||
@@ -34,5 +36,5 @@ export interface SysPermission extends BaseDTO {
|
||||
menus?: SysMenu[];
|
||||
roles?: SysRole[];
|
||||
permissions?: SysPermission[];
|
||||
}
|
||||
|
||||
module?: SysModule;
|
||||
}
|
||||
@@ -68,38 +68,6 @@ export interface PointsRecord extends BaseDTO {
|
||||
relatedType?: number;
|
||||
}
|
||||
|
||||
/**
|
||||
* 用户成就实体
|
||||
*/
|
||||
export interface UserAchievement extends BaseDTO {
|
||||
/** 用户ID */
|
||||
userID?: string;
|
||||
/** 成就ID */
|
||||
achievementID?: string;
|
||||
/** 获得时间 */
|
||||
achieveTime?: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* 成就实体
|
||||
*/
|
||||
export interface Achievement extends BaseDTO {
|
||||
/** 成就名称 */
|
||||
name?: string;
|
||||
/** 成就描述 */
|
||||
description?: string;
|
||||
/** 成就图标 */
|
||||
icon?: string;
|
||||
/** 成就类型 */
|
||||
type?: number;
|
||||
/** 获得条件 */
|
||||
condition?: string;
|
||||
/** 奖励积分 */
|
||||
rewardPoints?: number;
|
||||
/** 状态(0禁用 1启用) */
|
||||
status?: number;
|
||||
}
|
||||
|
||||
/**
|
||||
* 个人中心统计信息
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user