serv-学习

This commit is contained in:
2025-10-24 18:28:26 +08:00
parent 6f5603dd8b
commit 8968409b2d
55 changed files with 2144 additions and 2570 deletions

View File

@@ -0,0 +1,24 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.xyzh</groupId>
<artifactId>api</artifactId>
<version>${school-news.version}</version>
</parent>
<groupId>org.xyzh</groupId>
<artifactId>api-achievement</artifactId>
<version>${school-news.version}</version>
<packaging>jar</packaging>
<name>api-achievement</name>
<description>成就模块API接口</description>
<properties>
<maven.compiler.source>21</maven.compiler.source>
<maven.compiler.target>21</maven.compiler.target>
</properties>
</project>

View File

@@ -0,0 +1,184 @@
package org.xyzh.api.achievement;
import org.xyzh.common.core.domain.ResultDomain;
import org.xyzh.common.core.event.AchievementEvent;
import org.xyzh.common.core.page.PageDomain;
import org.xyzh.common.core.page.PageParam;
import org.xyzh.common.dto.usercenter.TbAchievement;
import org.xyzh.common.dto.usercenter.TbUserAchievement;
import org.xyzh.common.dto.usercenter.TbUserAchievementProgress;
import java.util.List;
import java.util.Map;
/**
* @description 成就服务接口
* @filename AchievementService.java
* @author yslg
* @copyright xyzh
* @since 2025-10-24
*/
public interface AchievementService {
// ==================== 成就定义管理 ====================
/**
* @description 创建成就
* @param achievement 成就信息
* @return ResultDomain<TbAchievement> 创建结果
*/
ResultDomain<TbAchievement> createAchievement(TbAchievement achievement);
/**
* @description 更新成就
* @param achievement 成就信息
* @return ResultDomain<TbAchievement> 更新结果
*/
ResultDomain<TbAchievement> updateAchievement(TbAchievement achievement);
/**
* @description 删除成就
* @param achievementID 成就ID
* @return ResultDomain<Void> 删除结果
*/
ResultDomain<Void> deleteAchievement(String achievementID);
/**
* @description 获取所有成就列表
* @param type 成就类型(可选)
* @param level 成就等级(可选)
* @return ResultDomain<TbAchievement> 成就列表
*/
ResultDomain<TbAchievement> getAllAchievements(Integer type, Integer level);
/**
* @description 分页查询成就
* @param filter 过滤条件
* @param pageParam 分页参数
* @return ResultDomain<TbAchievement> 成就分页数据
*/
ResultDomain<TbAchievement> getAchievementPage(TbAchievement filter, PageParam pageParam);
/**
* @description 获取成就详情
* @param achievementID 成就ID
* @return ResultDomain<TbAchievement> 成就详情
*/
ResultDomain<TbAchievement> getAchievementDetail(String achievementID);
// ==================== 用户成就管理 ====================
/**
* @description 获取用户已获得的成就
* @param userID 用户ID
* @param type 成就类型(可选)
* @return ResultDomain<TbUserAchievement> 用户成就列表
*/
ResultDomain<TbUserAchievement> getUserAchievements(String userID, Integer type);
/**
* @description 获取当前用户的成就列表
* @param type 成就类型(可选)
* @return ResultDomain<TbUserAchievement> 用户成就列表
*/
ResultDomain<TbUserAchievement> getMyAchievements(Integer type);
/**
* @description 检查用户是否已获得成就
* @param userID 用户ID
* @param achievementID 成就ID
* @return ResultDomain<Boolean> 是否已获得
*/
ResultDomain<Boolean> hasAchievement(String userID, String achievementID);
/**
* @description 手动授予用户成就(管理员功能)
* @param userID 用户ID
* @param achievementID 成就ID
* @return ResultDomain<TbUserAchievement> 授予结果
*/
ResultDomain<TbUserAchievement> grantAchievement(String userID, String achievementID);
/**
* @description 撤销用户成就(管理员功能)
* @param userID 用户ID
* @param achievementID 成就ID
* @return ResultDomain<Void> 撤销结果
*/
ResultDomain<Void> revokeAchievement(String userID, String achievementID);
// ==================== 成就进度管理 ====================
/**
* @description 获取用户成就进度
* @param userID 用户ID
* @param achievementID 成就ID可选为空则获取所有进度
* @return ResultDomain<TbUserAchievementProgress> 成就进度列表
*/
ResultDomain<TbUserAchievementProgress> getUserAchievementProgress(String userID, String achievementID);
/**
* @description 获取当前用户的成就进度
* @param achievementID 成就ID可选
* @return ResultDomain<TbUserAchievementProgress> 成就进度列表
*/
ResultDomain<TbUserAchievementProgress> getMyAchievementProgress(String achievementID);
/**
* @description 更新用户成就进度
* @param userID 用户ID
* @param achievementID 成就ID
* @param incrementValue 增量值
* @return ResultDomain<TbUserAchievementProgress> 更新后的进度
*/
ResultDomain<TbUserAchievementProgress> updateProgress(String userID, String achievementID, Integer incrementValue);
// ==================== 成就检测与触发 ====================
/**
* @description 处理成就事件(核心方法)
* @param event 成就事件
* @return ResultDomain<List<TbUserAchievement>> 本次触发的成就列表
*/
ResultDomain<List<TbUserAchievement>> processAchievementEvent(AchievementEvent event);
/**
* @description 检查用户是否满足成就条件
* @param userID 用户ID
* @param achievementID 成就ID
* @return ResultDomain<Boolean> 是否满足条件
*/
ResultDomain<Boolean> checkAchievementCondition(String userID, String achievementID);
/**
* @description 批量检查用户可获得的成就
* @param userID 用户ID
* @return ResultDomain<List<TbAchievement>> 可获得的成就列表
*/
ResultDomain<List<TbAchievement>> checkAvailableAchievements(String userID);
// ==================== 成就统计 ====================
/**
* @description 获取用户成就统计
* @param userID 用户ID
* @return ResultDomain<Map<String, Object>> 统计信息
*/
ResultDomain<Map<String, Object>> getUserAchievementStatistics(String userID);
/**
* @description 获取成就排行榜
* @param limit 排行榜条数
* @return ResultDomain<Map<String, Object>> 排行榜数据
*/
ResultDomain<Map<String, Object>> getAchievementRanking(Integer limit);
/**
* @description 获取最近获得成就的用户
* @param achievementID 成就ID
* @param limit 查询条数
* @return ResultDomain<List<TbUserAchievement>> 用户成就列表
*/
ResultDomain<List<TbUserAchievement>> getRecentAchievers(String achievementID, Integer limit);
}