fix:更改项目结构
Change-Id: Ie016cb16e71b5d2539cdd19c835d1a38a6442ee4
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/authentication/domain/SysActivity.java b/ruoyi-admin/src/main/java/com/ruoyi/authentication/domain/SysActivity.java
new file mode 100644
index 0000000..ce2f706
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/authentication/domain/SysActivity.java
@@ -0,0 +1,27 @@
+package com.ruoyi.authentication.domain;
+
+import com.ruoyi.common.core.domain.BaseEntity;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class SysActivity extends BaseEntity {
+ private static final long serialVersionUID = 1L;
+
+ private Long activityId;
+ private String activityName;
+ private Integer rewardBonus;
+ private String conditionValue; // 上传:如“100GB”,下载:torrent_id
+ private Date startTime;
+ private Date endTime;
+ private Integer status; // 1=进行中,0=已结束
+ private String activityType; // UPLOAD, DOWNLOAD
+
+ @Data
+ public static class LeaderboardEntry {
+ private Long userId;
+ private String userName;
+ private Integer score;
+ }
+}
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/authentication/domain/SysActivityRecord.java b/ruoyi-admin/src/main/java/com/ruoyi/authentication/domain/SysActivityRecord.java
new file mode 100644
index 0000000..6a85303
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/authentication/domain/SysActivityRecord.java
@@ -0,0 +1,17 @@
+package com.ruoyi.authentication.domain;
+
+import com.ruoyi.common.core.domain.BaseEntity;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class SysActivityRecord extends BaseEntity {
+ private static final long serialVersionUID = 1L;
+
+ private Long recordId;
+ private Long activityId;
+ private Long userId;
+ private Integer rewardBonus;
+ private Date completeTime;
+}
\ No newline at end of file
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysUserInvite.java b/ruoyi-admin/src/main/java/com/ruoyi/authentication/domain/SysUserInvite.java
similarity index 85%
rename from ruoyi-system/src/main/java/com/ruoyi/system/domain/SysUserInvite.java
rename to ruoyi-admin/src/main/java/com/ruoyi/authentication/domain/SysUserInvite.java
index 3432587..984f485 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysUserInvite.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/authentication/domain/SysUserInvite.java
@@ -1,4 +1,4 @@
-package com.ruoyi.system.domain;
+package com.ruoyi.authentication.domain;
import com.ruoyi.common.core.domain.BaseEntity;
import lombok.Data;
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/authentication/domain/UserScore.java b/ruoyi-admin/src/main/java/com/ruoyi/authentication/domain/UserScore.java
index f7049d1..eb60ec5 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/authentication/domain/UserScore.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/authentication/domain/UserScore.java
@@ -1,11 +1,11 @@
package com.ruoyi.authentication.domain;
-import java.util.Date;
-import com.fasterxml.jackson.annotation.JsonFormat;
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+import java.util.Date;
/**
* 【请填写功能名称】对象 user_score
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/authentication/mapper/SysActivityMapper.java b/ruoyi-admin/src/main/java/com/ruoyi/authentication/mapper/SysActivityMapper.java
new file mode 100644
index 0000000..5716e95
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/authentication/mapper/SysActivityMapper.java
@@ -0,0 +1,13 @@
+package com.ruoyi.authentication.mapper;
+
+import com.ruoyi.authentication.domain.SysActivity;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+@Mapper
+public interface SysActivityMapper {
+ List<SysActivity> selectActivityList(SysActivity activity);
+ SysActivity selectActivityById(Long activityId);
+ List<SysActivity.LeaderboardEntry> selectLeaderboard();
+}
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/authentication/mapper/SysActivityRecordMapper.java b/ruoyi-admin/src/main/java/com/ruoyi/authentication/mapper/SysActivityRecordMapper.java
new file mode 100644
index 0000000..87cf1a2
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/authentication/mapper/SysActivityRecordMapper.java
@@ -0,0 +1,11 @@
+package com.ruoyi.authentication.mapper;
+
+import com.ruoyi.authentication.domain.SysActivityRecord;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface SysActivityRecordMapper {
+ SysActivityRecord checkParticipation(Long activityId, Long userId);
+ int insertActivityRecord(SysActivityRecord record);
+ int checkTorrentDownload(Long userId, String torrentId);
+}
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/authentication/mapper/SysUserInviteMapper.java b/ruoyi-admin/src/main/java/com/ruoyi/authentication/mapper/SysUserInviteMapper.java
new file mode 100644
index 0000000..93f1af0
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/authentication/mapper/SysUserInviteMapper.java
@@ -0,0 +1,10 @@
+package com.ruoyi.authentication.mapper;
+
+import com.ruoyi.authentication.domain.SysUserInvite;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface SysUserInviteMapper {
+ SysUserInvite selectInviteByUserId(Long userId);
+ SysUserInvite selectInviteByCode(String code);
+}
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/authentication/mapper/UserScoreMapper.java b/ruoyi-admin/src/main/java/com/ruoyi/authentication/mapper/UserScoreMapper.java
index 4c15e5e..6a704a5 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/authentication/mapper/UserScoreMapper.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/authentication/mapper/UserScoreMapper.java
@@ -1,7 +1,9 @@
package com.ruoyi.authentication.mapper;
-import java.util.List;
import com.ruoyi.authentication.domain.UserScore;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
/**
* 【请填写功能名称】Mapper接口
@@ -9,6 +11,7 @@
* @author ruoyi
* @date 2025-04-25
*/
+@Mapper
public interface UserScoreMapper
{
/**
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/authentication/service/ISysActivityService.java b/ruoyi-admin/src/main/java/com/ruoyi/authentication/service/ISysActivityService.java
new file mode 100644
index 0000000..985fa28
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/authentication/service/ISysActivityService.java
@@ -0,0 +1,12 @@
+package com.ruoyi.authentication.service;
+
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.authentication.domain.SysActivity;
+
+import java.util.List;
+
+public interface ISysActivityService {
+ List<SysActivity> selectActivityList(SysActivity activity);
+ AjaxResult participateActivity(Long activityId, Long userId);
+ List<SysActivity.LeaderboardEntry> getLeaderboard();
+}
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/authentication/service/ISysUserInviteService.java b/ruoyi-admin/src/main/java/com/ruoyi/authentication/service/ISysUserInviteService.java
new file mode 100644
index 0000000..bb71552
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/authentication/service/ISysUserInviteService.java
@@ -0,0 +1,8 @@
+package com.ruoyi.authentication.service;
+
+import com.ruoyi.authentication.domain.SysUserInvite;
+
+public interface ISysUserInviteService {
+ SysUserInvite getInviteCode(Long userId);
+ SysUserInvite getUserByInviteCode(String code);
+}
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/authentication/service/IUserScoreService.java b/ruoyi-admin/src/main/java/com/ruoyi/authentication/service/IUserScoreService.java
index b93e41e..b8fce0e 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/authentication/service/IUserScoreService.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/authentication/service/IUserScoreService.java
@@ -1,9 +1,9 @@
package com.ruoyi.authentication.service;
-import java.util.List;
-
import com.ruoyi.authentication.domain.UserScore;
+import java.util.List;
+
/**
* 【请填写功能名称】Service接口
*
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/authentication/service/impl/SysActivityServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/authentication/service/impl/SysActivityServiceImpl.java
new file mode 100644
index 0000000..fe82294
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/authentication/service/impl/SysActivityServiceImpl.java
@@ -0,0 +1,141 @@
+package com.ruoyi.authentication.service.impl;
+
+import com.ruoyi.authentication.domain.UserScore;
+import com.ruoyi.authentication.service.IUserScoreService;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.authentication.domain.SysActivity;
+import com.ruoyi.authentication.domain.SysActivityRecord;
+import com.ruoyi.system.domain.SysUserMessage;
+import com.ruoyi.authentication.mapper.SysActivityMapper;
+import com.ruoyi.authentication.mapper.SysActivityRecordMapper;
+import com.ruoyi.authentication.service.ISysActivityService;
+import com.ruoyi.system.service.ISysUserMessageService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Date;
+import java.util.List;
+
+@Service
+public class SysActivityServiceImpl implements ISysActivityService {
+ @Autowired
+ private SysActivityMapper activityMapper;
+ @Autowired
+ private SysActivityRecordMapper activityRecordMapper;
+ @Autowired
+ private IUserScoreService userScoreService;
+ @Autowired
+ private ISysUserMessageService messageService;
+
+ @Override
+ public List<SysActivity> selectActivityList(SysActivity activity) {
+ return activityMapper.selectActivityList(activity);
+ }
+
+ @Override
+ @Transactional
+ public AjaxResult participateActivity(Long activityId, Long userId) {
+ SysActivity activity = activityMapper.selectActivityById(activityId);
+ if (activity == null || activity.getStatus() == 0) {
+ return AjaxResult.error("活动不存在或已结束");
+ }
+ if (activity.getEndTime() != null && activity.getEndTime().before(new Date())) {
+ return AjaxResult.error("活动已过期");
+ }
+ if (activityRecordMapper.checkParticipation(activityId, userId) != null) {
+ return AjaxResult.error("已参与过该活动");
+ }
+
+ // 验证任务完成
+ boolean completed = checkTaskCompletion(activity, userId);
+ if (!completed) {
+ return AjaxResult.error("未满足任务条件");
+ }
+
+ // 记录参与
+ SysActivityRecord record = new SysActivityRecord();
+ record.setActivityId(activityId);
+ record.setUserId(userId);
+ record.setRewardBonus(activity.getRewardBonus());
+ activityRecordMapper.insertActivityRecord(record);
+
+ // 更新积分(仅更新 bonus,score 由生成列自动计算)
+ UserScore userScore = userScoreService.selectUserScoreByUserId(userId);
+ if (userScore != null) {
+ userScore.setBonus(userScore.getBonus() + activity.getRewardBonus().longValue()); // Integer 转 Long
+ userScoreService.updateUserScore(userScore);
+ } else {
+ userScore = new UserScore();
+ userScore.setUserId(userId);
+ userScore.setUploaded("0"); // String 类型
+ userScore.setDownloaded("0"); // String 类型
+ userScore.setBonus(activity.getRewardBonus().longValue()); // Integer 转 Long
+ userScoreService.insertUserScore(userScore);
+ }
+
+ // 发送通知
+ SysUserMessage message = new SysUserMessage();
+ message.setSenderId(0L); // 系统用户
+ message.setReceiverId(userId);
+ message.setContent("您完成了活动[" + activity.getActivityName() + "],获得" + activity.getRewardBonus() + "积分!");
+ messageService.sendMessage(message);
+
+ return AjaxResult.success("任务完成,获得" + activity.getRewardBonus() + "积分");
+ }
+
+ @Override
+ public List<SysActivity.LeaderboardEntry> getLeaderboard() {
+ return activityMapper.selectLeaderboard();
+ }
+
+ private boolean checkTaskCompletion(SysActivity activity, Long userId) {
+ UserScore userScore = userScoreService.selectUserScoreByUserId(userId);
+ if (userScore == null) return false;
+
+ if ("UPLOAD".equals(activity.getActivityType())) {
+ long conditionValue = parseDataSize(activity.getConditionValue());
+ long uploadedValue = parseUserDataSize(userScore.getUploaded());
+ return uploadedValue >= conditionValue; // long 与 long 比较
+ } else if ("DOWNLOAD".equals(activity.getActivityType())) {
+ return checkTorrentDownload(userId, activity.getConditionValue());
+ }
+ return false;
+ }
+
+ private long parseDataSize(String data) {
+ if (data == null || data.isEmpty()) return 0;
+ try {
+ data = data.toUpperCase();
+ long value = Long.parseLong(data.replaceAll("[^0-9]", ""));
+ if (data.endsWith("KB")) return value * 1024;
+ if (data.endsWith("MB")) return value * 1024 * 1024;
+ if (data.endsWith("GB")) return value * 1024 * 1024 * 1024;
+ return value;
+ } catch (NumberFormatException e) {
+ return 0;
+ }
+ }
+
+ private long parseUserDataSize(String data) {
+ if (data == null || data.isEmpty()) return 0;
+ try {
+ // 支持格式:纯数字(如 "1073741824")或带单位(如 "1GB")
+ data = data.toUpperCase();
+ if (data.matches("\\d+")) {
+ return Long.parseLong(data); // 纯数字,视为字节数
+ }
+ long value = Long.parseLong(data.replaceAll("[^0-9]", ""));
+ if (data.endsWith("KB")) return value * 1024;
+ if (data.endsWith("MB")) return value * 1024 * 1024;
+ if (data.endsWith("GB")) return value * 1024 * 1024 * 1024;
+ return value;
+ } catch (NumberFormatException e) {
+ return 0;
+ }
+ }
+
+ private boolean checkTorrentDownload(Long userId, String torrentId) {
+ return activityRecordMapper.checkTorrentDownload(userId, torrentId) > 0;
+ }
+}
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/authentication/service/impl/SysUserInviteServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/authentication/service/impl/SysUserInviteServiceImpl.java
new file mode 100644
index 0000000..1e63a0d
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/authentication/service/impl/SysUserInviteServiceImpl.java
@@ -0,0 +1,49 @@
+package com.ruoyi.authentication.service.impl;
+
+import com.ruoyi.authentication.domain.UserScore;
+import com.ruoyi.authentication.service.IUserScoreService;
+import com.ruoyi.authentication.domain.SysUserInvite;
+import com.ruoyi.authentication.mapper.SysUserInviteMapper;
+import com.ruoyi.authentication.service.ISysUserInviteService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+@Service
+public class SysUserInviteServiceImpl implements ISysUserInviteService {
+ @Autowired
+ private SysUserInviteMapper inviteMapper;
+
+ @Autowired
+ private IUserScoreService userScoreService;
+
+ @Override
+ public SysUserInvite getInviteCode(Long userId) {
+ return inviteMapper.selectInviteByUserId(userId);
+ }
+
+ @Override
+ @Transactional
+ public SysUserInvite getUserByInviteCode(String code) {
+ SysUserInvite invite = inviteMapper.selectInviteByCode(code);
+ if (invite != null) {
+ // 更新邀请人的积分
+ UserScore userScore = userScoreService.selectUserScoreByUserId(invite.getUserId());
+ if (userScore != null) {
+ userScore.setBonus(userScore.getBonus() + 10);
+ userScore.setScore(userScore.getScore() + 10);
+ userScoreService.updateUserScore(userScore);
+ } else {
+ // 如果没有积分记录,创建新记录
+ userScore = new UserScore();
+ userScore.setUserId(invite.getUserId());
+ userScore.setUploaded("0");
+ userScore.setDownloaded("0");
+ userScore.setBonus(10L);
+ userScore.setScore(10L);
+ userScoreService.insertUserScore(userScore);
+ }
+ }
+ return invite;
+ }
+}
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/authentication/service/impl/UserScoreServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/authentication/service/impl/UserScoreServiceImpl.java
index 4a41923..ca846a8 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/authentication/service/impl/UserScoreServiceImpl.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/authentication/service/impl/UserScoreServiceImpl.java
@@ -1,12 +1,12 @@
package com.ruoyi.authentication.service.impl;
-import java.util.List;
-
import com.ruoyi.authentication.domain.UserScore;
import com.ruoyi.authentication.mapper.UserScoreMapper;
+import com.ruoyi.authentication.service.IUserScoreService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
-import com.ruoyi.authentication.service.IUserScoreService;
+
+import java.util.List;
/**
* 【请填写功能名称】Service业务层处理
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysActivityController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysActivityController.java
new file mode 100644
index 0000000..e78085c
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysActivityController.java
@@ -0,0 +1,41 @@
+package com.ruoyi.web.controller.system;
+
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.core.page.TableDataInfo;
+import com.ruoyi.authentication.domain.SysActivity;
+import com.ruoyi.authentication.service.ISysActivityService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+@RestController
+@RequestMapping("/system/activity")
+public class SysActivityController extends BaseController {
+ @Autowired
+ private ISysActivityService activityService;
+
+ @PreAuthorize("@ss.hasPermi('system:activity:list')")
+ @GetMapping("/list")
+ public TableDataInfo list(SysActivity activity) {
+ startPage();
+ List<SysActivity> list = activityService.selectActivityList(activity);
+ return getDataTable(list);
+ }
+
+ @PreAuthorize("@ss.hasPermi('system:activity:participate')")
+ @PostMapping("/participate/{activityId}")
+ public AjaxResult participate(@PathVariable Long activityId) {
+ return activityService.participateActivity(activityId, getUserId());
+ }
+
+ @PreAuthorize("@ss.hasPermi('system:activity:leaderboard')")
+ @GetMapping("/leaderboard")
+ public TableDataInfo leaderboard() {
+ startPage();
+ List<SysActivity.LeaderboardEntry> list = activityService.getLeaderboard();
+ return getDataTable(list);
+ }
+}
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserInviteController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserInviteController.java
index eb22abd..7ef246d 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserInviteController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserInviteController.java
@@ -2,8 +2,8 @@
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
-import com.ruoyi.system.domain.SysUserInvite;
-import com.ruoyi.system.service.ISysUserInviteService;
+import com.ruoyi.authentication.domain.SysUserInvite;
+import com.ruoyi.authentication.service.ISysUserInviteService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
diff --git a/ruoyi-admin/src/main/resources/mapper/system/SysActivityMapper.xml b/ruoyi-admin/src/main/resources/mapper/system/SysActivityMapper.xml
new file mode 100644
index 0000000..c09494d
--- /dev/null
+++ b/ruoyi-admin/src/main/resources/mapper/system/SysActivityMapper.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.authentication.mapper.SysActivityMapper">
+ <resultMap id="ActivityMap" type="com.ruoyi.authentication.domain.SysActivity">
+ <id property="activityId" column="activity_id"/>
+ <result property="activityName" column="activity_name"/>
+ <result property="rewardBonus" column="reward_bonus"/>
+ <result property="conditionValue" column="condition_value"/>
+ <result property="startTime" column="start_time"/>
+ <result property="endTime" column="end_time"/>
+ <result property="status" column="status"/>
+ <result property="activityType" column="activity_type"/>
+ </resultMap>
+
+ <resultMap id="LeaderboardMap" type="com.ruoyi.authentication.domain.SysActivity$LeaderboardEntry">
+ <result property="userId" column="user_id"/>
+ <result property="userName" column="user_name"/>
+ <result property="score" column="score"/>
+ </resultMap>
+
+ <select id="selectActivityList" resultMap="ActivityMap">
+ select activity_id, activity_name, reward_bonus, condition_value, start_time, end_time, status, activity_type
+ from activity
+ where 1=1
+ <if test="activityType != null and activityType != ''">and activity_type = #{activityType}</if>
+ <if test="status != null">and status = #{status}</if>
+ </select>
+
+ <select id="selectActivityById" resultMap="ActivityMap">
+ select activity_id, activity_name, reward_bonus, condition_value, start_time, end_time, status, activity_type
+ from activity
+ where activity_id = #{activityId}
+ </select>
+
+ <select id="selectLeaderboard" resultMap="LeaderboardMap">
+ select u.user_id, u.user_name, s.score
+ from sys_user u
+ join user_score s on u.user_id = s.user_id
+ order by s.score desc
+ limit 100
+ </select>
+</mapper>
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/resources/mapper/system/SysActivityRecordMapper.xml b/ruoyi-admin/src/main/resources/mapper/system/SysActivityRecordMapper.xml
new file mode 100644
index 0000000..f260cd1
--- /dev/null
+++ b/ruoyi-admin/src/main/resources/mapper/system/SysActivityRecordMapper.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.authentication.mapper.SysActivityRecordMapper">
+ <resultMap id="ActivityRecordMap" type="com.ruoyi.authentication.domain.SysActivityRecord">
+ <id property="recordId" column="record_id"/>
+ <result property="activityId" column="activity_id"/>
+ <result property="userId" column="user_id"/>
+ <result property="rewardBonus" column="reward_bonus"/>
+ <result property="completeTime" column="complete_time"/>
+ </resultMap>
+
+ <select id="checkParticipation" resultMap="ActivityRecordMap">
+ select record_id, activity_id, user_id, reward_bonus, complete_time
+ from activity_record
+ where activity_id = #{activityId} and user_id = #{userId}
+ </select>
+
+ <insert id="insertActivityRecord">
+ insert into activity_record (activity_id, user_id, reward_bonus, complete_time)
+ values (#{activityId}, #{userId}, #{rewardBonus}, sysdate())
+ </insert>
+
+ <select id="checkTorrentDownload" resultType="int">
+ select count(*) from torrent_download
+ where user_id = #{userId} and torrent_id = #{torrentId}
+ </select>
+</mapper>
\ No newline at end of file
diff --git a/ruoyi-system/src/main/resources/mapper/system/SysUserInviteMapper.xml b/ruoyi-admin/src/main/resources/mapper/system/SysUserInviteMapper.xml
similarity index 88%
rename from ruoyi-system/src/main/resources/mapper/system/SysUserInviteMapper.xml
rename to ruoyi-admin/src/main/resources/mapper/system/SysUserInviteMapper.xml
index 82da470..5059af0 100644
--- a/ruoyi-system/src/main/resources/mapper/system/SysUserInviteMapper.xml
+++ b/ruoyi-admin/src/main/resources/mapper/system/SysUserInviteMapper.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.system.mapper.SysUserInviteMapper">
- <resultMap id="SysUserInviteMap" type="com.ruoyi.system.domain.SysUserInvite">
+ <resultMap id="SysUserInviteMap" type="com.ruoyi.authentication.domain.SysUserInvite">
<id property="codeId" column="code_id"/>
<result property="code" column="code"/>
<result property="userId" column="user_id"/>
diff --git a/ruoyi-system/pom.xml b/ruoyi-system/pom.xml
index a10ba16..d2a2482 100644
--- a/ruoyi-system/pom.xml
+++ b/ruoyi-system/pom.xml
@@ -47,6 +47,7 @@
<scope>provided</scope>
</dependency>
+
</dependencies>
</project>
\ No newline at end of file
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserInviteMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserInviteMapper.java
deleted file mode 100644
index b0239ca..0000000
--- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserInviteMapper.java
+++ /dev/null
@@ -1,8 +0,0 @@
-package com.ruoyi.system.mapper;
-
-import com.ruoyi.system.domain.SysUserInvite;
-
-public interface SysUserInviteMapper {
- SysUserInvite selectInviteByUserId(Long userId);
- SysUserInvite selectInviteByCode(String code);
-}
\ No newline at end of file
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserInviteService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserInviteService.java
deleted file mode 100644
index d5b04f4..0000000
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserInviteService.java
+++ /dev/null
@@ -1,8 +0,0 @@
-package com.ruoyi.system.service;
-
-import com.ruoyi.system.domain.SysUserInvite;
-
-public interface ISysUserInviteService {
- SysUserInvite getInviteCode(Long userId);
- SysUserInvite getUserByInviteCode(String code);
-}
\ No newline at end of file
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserInviteServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserInviteServiceImpl.java
deleted file mode 100644
index e499a5a..0000000
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserInviteServiceImpl.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package com.ruoyi.system.service.impl;
-
-import com.ruoyi.system.domain.SysUserInvite;
-import com.ruoyi.system.mapper.SysUserInviteMapper;
-import com.ruoyi.system.service.ISysUserInviteService;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-@Service
-public class SysUserInviteServiceImpl implements ISysUserInviteService {
- @Autowired
- private SysUserInviteMapper inviteMapper;
-
- @Override
- public SysUserInvite getInviteCode(Long userId) {
- return inviteMapper.selectInviteByUserId(userId);
- }
-
- @Override
- public SysUserInvite getUserByInviteCode(String code) {
- return inviteMapper.selectInviteByCode(code);
- }
-}
\ No newline at end of file