serv-学习
This commit is contained in:
@@ -0,0 +1,90 @@
|
||||
package org.xyzh.common.core.enums;
|
||||
|
||||
/**
|
||||
* @description 成就条件类型枚举
|
||||
* @filename AchievementConditionType.java
|
||||
* @author yslg
|
||||
* @copyright xyzh
|
||||
* @since 2025-10-24
|
||||
*/
|
||||
public enum AchievementConditionType {
|
||||
|
||||
/**
|
||||
* 1-学习时长(分钟)
|
||||
*/
|
||||
LEARNING_TIME(1, "学习时长"),
|
||||
|
||||
/**
|
||||
* 2-浏览资源数量
|
||||
*/
|
||||
RESOURCE_VIEW_COUNT(2, "浏览资源数量"),
|
||||
|
||||
/**
|
||||
* 3-完成课程数量
|
||||
*/
|
||||
COURSE_COMPLETE_COUNT(3, "完成课程数量"),
|
||||
|
||||
/**
|
||||
* 4-连续登录天数
|
||||
*/
|
||||
CONTINUOUS_LOGIN_DAYS(4, "连续登录天数"),
|
||||
|
||||
/**
|
||||
* 5-收藏资源数量
|
||||
*/
|
||||
RESOURCE_COLLECT_COUNT(5, "收藏资源数量"),
|
||||
|
||||
/**
|
||||
* 6-完成任务数量
|
||||
*/
|
||||
TASK_COMPLETE_COUNT(6, "完成任务数量"),
|
||||
|
||||
/**
|
||||
* 7-获得积分数量
|
||||
*/
|
||||
POINTS_EARNED(7, "获得积分数量"),
|
||||
|
||||
/**
|
||||
* 8-发表评论数量
|
||||
*/
|
||||
COMMENT_COUNT(8, "发表评论数量"),
|
||||
|
||||
/**
|
||||
* 9-完成章节数量
|
||||
*/
|
||||
CHAPTER_COMPLETE_COUNT(9, "完成章节数量"),
|
||||
|
||||
/**
|
||||
* 10-累计登录天数
|
||||
*/
|
||||
TOTAL_LOGIN_DAYS(10, "累计登录天数");
|
||||
|
||||
private final int code;
|
||||
private final String description;
|
||||
|
||||
AchievementConditionType(int code, String description) {
|
||||
this.code = code;
|
||||
this.description = description;
|
||||
}
|
||||
|
||||
public int getCode() {
|
||||
return code;
|
||||
}
|
||||
|
||||
public String getDescription() {
|
||||
return description;
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据code获取条件类型
|
||||
*/
|
||||
public static AchievementConditionType fromCode(int code) {
|
||||
for (AchievementConditionType type : values()) {
|
||||
if (type.code == code) {
|
||||
return type;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,84 @@
|
||||
package org.xyzh.common.core.enums;
|
||||
|
||||
/**
|
||||
* @description 成就事件类型枚举
|
||||
* @filename AchievementEventType.java
|
||||
* @author yslg
|
||||
* @copyright xyzh
|
||||
* @since 2025-10-24
|
||||
*/
|
||||
public 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("points_earned", "获得积分"),
|
||||
|
||||
/**
|
||||
* 测试相关事件
|
||||
*/
|
||||
TEST_PASSED("test_passed", "测试通过"),
|
||||
TEST_PERFECT_SCORE("test_perfect_score", "测试满分");
|
||||
|
||||
private final String code;
|
||||
private final String description;
|
||||
|
||||
AchievementEventType(String code, String description) {
|
||||
this.code = code;
|
||||
this.description = description;
|
||||
}
|
||||
|
||||
public String getCode() {
|
||||
return code;
|
||||
}
|
||||
|
||||
public String getDescription() {
|
||||
return description;
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据code获取事件类型
|
||||
*/
|
||||
public static AchievementEventType fromCode(String code) {
|
||||
for (AchievementEventType type : values()) {
|
||||
if (type.code.equals(code)) {
|
||||
return type;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
package org.xyzh.common.core.enums;
|
||||
|
||||
/**
|
||||
* @description 任务项类型常量
|
||||
* @filename TaskItemType.java
|
||||
* @author yslg
|
||||
* @copyright xyzh
|
||||
* @since 2025-10-24
|
||||
*/
|
||||
public enum TaskItemType {
|
||||
|
||||
/**
|
||||
* 资源类型
|
||||
*/
|
||||
RESOURCE(1),
|
||||
|
||||
/**
|
||||
* 课程类型
|
||||
*/
|
||||
COURSE(2);
|
||||
|
||||
private int value;
|
||||
|
||||
TaskItemType(int value) {
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
public int getValue() {
|
||||
return value;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,151 @@
|
||||
package org.xyzh.common.core.event;
|
||||
|
||||
import org.xyzh.common.core.enums.AchievementEventType;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @description 成就事件数据类
|
||||
* @filename AchievementEvent.java
|
||||
* @author yslg
|
||||
* @copyright xyzh
|
||||
* @since 2025-10-24
|
||||
*/
|
||||
public class AchievementEvent {
|
||||
|
||||
/**
|
||||
* 用户ID
|
||||
*/
|
||||
private String userID;
|
||||
|
||||
/**
|
||||
* 事件类型
|
||||
*/
|
||||
private AchievementEventType eventType;
|
||||
|
||||
/**
|
||||
* 事件值(如学习时长、资源数量等)
|
||||
*/
|
||||
private Integer eventValue;
|
||||
|
||||
/**
|
||||
* 事件时间
|
||||
*/
|
||||
private Date eventTime;
|
||||
|
||||
/**
|
||||
* 额外数据
|
||||
*/
|
||||
private Map<String, Object> extraData;
|
||||
|
||||
public AchievementEvent() {
|
||||
this.eventTime = new Date();
|
||||
this.extraData = new HashMap<>();
|
||||
}
|
||||
|
||||
public AchievementEvent(String userID, AchievementEventType eventType, Integer eventValue) {
|
||||
this.userID = userID;
|
||||
this.eventType = eventType;
|
||||
this.eventValue = eventValue;
|
||||
this.eventTime = new Date();
|
||||
this.extraData = new HashMap<>();
|
||||
}
|
||||
|
||||
/**
|
||||
* 构建器模式
|
||||
*/
|
||||
public static class Builder {
|
||||
private final AchievementEvent event;
|
||||
|
||||
public Builder(String userID, AchievementEventType eventType) {
|
||||
event = new AchievementEvent();
|
||||
event.userID = userID;
|
||||
event.eventType = eventType;
|
||||
}
|
||||
|
||||
public Builder value(Integer value) {
|
||||
event.eventValue = value;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Builder extra(String key, Object value) {
|
||||
event.extraData.put(key, value);
|
||||
return this;
|
||||
}
|
||||
|
||||
public Builder time(Date time) {
|
||||
event.eventTime = time;
|
||||
return this;
|
||||
}
|
||||
|
||||
public AchievementEvent build() {
|
||||
return event;
|
||||
}
|
||||
}
|
||||
|
||||
public static Builder builder(String userID, AchievementEventType eventType) {
|
||||
return new Builder(userID, eventType);
|
||||
}
|
||||
|
||||
public String getUserID() {
|
||||
return userID;
|
||||
}
|
||||
|
||||
public void setUserID(String userID) {
|
||||
this.userID = userID;
|
||||
}
|
||||
|
||||
public AchievementEventType getEventType() {
|
||||
return eventType;
|
||||
}
|
||||
|
||||
public void setEventType(AchievementEventType eventType) {
|
||||
this.eventType = eventType;
|
||||
}
|
||||
|
||||
public Integer getEventValue() {
|
||||
return eventValue;
|
||||
}
|
||||
|
||||
public void setEventValue(Integer eventValue) {
|
||||
this.eventValue = eventValue;
|
||||
}
|
||||
|
||||
public Date getEventTime() {
|
||||
return eventTime;
|
||||
}
|
||||
|
||||
public void setEventTime(Date eventTime) {
|
||||
this.eventTime = eventTime;
|
||||
}
|
||||
|
||||
public Map<String, Object> getExtraData() {
|
||||
return extraData;
|
||||
}
|
||||
|
||||
public void setExtraData(Map<String, Object> extraData) {
|
||||
this.extraData = extraData;
|
||||
}
|
||||
|
||||
public Object getExtraData(String key) {
|
||||
return extraData.get(key);
|
||||
}
|
||||
|
||||
public void putExtraData(String key, Object value) {
|
||||
this.extraData.put(key, value);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "AchievementEvent{" +
|
||||
"userID='" + userID + '\'' +
|
||||
", eventType=" + eventType +
|
||||
", eventValue=" + eventValue +
|
||||
", eventTime=" + eventTime +
|
||||
", extraData=" + extraData +
|
||||
'}';
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user