expandAdminFunction
Change-Id: If3b875b3017d1922b15150dd735ca2ce5a3a77f0
diff --git a/src/main/java/com/example/g8backend/service/AdminService.java b/src/main/java/com/example/g8backend/service/AdminService.java
index 1f84eec..da672f5 100644
--- a/src/main/java/com/example/g8backend/service/AdminService.java
+++ b/src/main/java/com/example/g8backend/service/AdminService.java
@@ -2,4 +2,8 @@
public interface AdminService {
boolean grantVip(Long targetUserId);
+ boolean banUser(Long userId, String reason, Long adminId);
+ boolean unbanUser(Long userId, Long adminId);
+ boolean lockPost(Long postId, String reason, Long adminId);
+ boolean unlockPost(Long postId, Long adminId);
}
\ No newline at end of file
diff --git a/src/main/java/com/example/g8backend/service/impl/AdminServiceImpl.java b/src/main/java/com/example/g8backend/service/impl/AdminServiceImpl.java
index d3be9fe..24434f4 100644
--- a/src/main/java/com/example/g8backend/service/impl/AdminServiceImpl.java
+++ b/src/main/java/com/example/g8backend/service/impl/AdminServiceImpl.java
@@ -1,12 +1,16 @@
package com.example.g8backend.service.impl;
+import com.example.g8backend.entity.Post;
import com.example.g8backend.entity.User;
import com.example.g8backend.mapper.UserMapper;
+import com.example.g8backend.mapper.PostMapper;
import com.example.g8backend.service.AdminService;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
+import java.time.LocalDateTime;
+
@Service
@RequiredArgsConstructor
public class AdminServiceImpl implements AdminService {
@@ -23,4 +27,62 @@
userMapper.updateById(user);
return true;
}
+
+ private final PostMapper postMapper;
+
+ @Override
+ @Transactional
+ public boolean banUser(Long userId, String reason, Long adminId) {
+ User user = userMapper.selectById(userId);
+ if (user == null) return false;
+
+ user.setIsBanned(true);
+ user.setBannedReason(reason);
+ user.setBannedAt(LocalDateTime.now());
+ user.setBannedBy(adminId);
+
+ return userMapper.updateById(user) > 0;
+ }
+
+ @Override
+ @Transactional
+ public boolean unbanUser(Long userId, Long adminId) {
+ User user = userMapper.selectById(userId);
+ if (user == null) return false;
+
+ user.setIsBanned(false);
+ user.setBannedReason(null);
+ user.setBannedAt(null);
+ user.setBannedBy(null);
+
+ return userMapper.updateById(user) > 0;
+ }
+
+ @Override
+ @Transactional
+ public boolean lockPost(Long postId, String reason, Long adminId) {
+ Post post = postMapper.selectById(postId);
+ if (post == null) return false;
+
+ post.setIsLocked(true);
+ post.setLockedReason(reason);
+ post.setLockedAt(LocalDateTime.now());
+ post.setLockedBy(adminId);
+
+ return postMapper.updateById(post) > 0;
+ }
+
+ @Override
+ @Transactional
+ public boolean unlockPost(Long postId, Long adminId) {
+ Post post = postMapper.selectById(postId);
+ if (post == null) return false;
+
+ post.setIsLocked(false);
+ post.setLockedReason(null);
+ post.setLockedAt(null);
+ post.setLockedBy(null);
+
+ return postMapper.updateById(post) > 0;
+ }
}
\ No newline at end of file
diff --git a/src/main/java/com/example/g8backend/service/impl/PostServiceImpl.java b/src/main/java/com/example/g8backend/service/impl/PostServiceImpl.java
index 1fda1e2..2a43439 100644
--- a/src/main/java/com/example/g8backend/service/impl/PostServiceImpl.java
+++ b/src/main/java/com/example/g8backend/service/impl/PostServiceImpl.java
@@ -178,7 +178,6 @@
.orderByDesc("hot_score"); // 确保排序条件正确
return postMapper.selectPage(new Page<>(page, size), queryWrapper);
}
-
@Override
public List<PostHistoryDTO> getViewHistoryWithTitles(Long userId) {
// 1. 查询浏览记录(按时间倒序)
@@ -187,15 +186,12 @@
.eq("user_id", userId)
.orderByDesc("view_time")
);
-
-
// 2. 转换为DTO并填充标题
return history.stream().map(view -> {
PostHistoryDTO dto = new PostHistoryDTO();
dto.setViewId(view.getViewId());
dto.setPostId(view.getPostId());
dto.setViewTime(view.getViewTime());
-
// 3. 查询帖子标题
Post post = postMapper.selectById(view.getPostId());
if (post != null) {