支付功能+bugfix
Change-Id: I8407d4dcd4ec19b53ac4934813ed9af380642d98
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/post/controller/PostCenterController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/post/controller/PostCenterController.java
index e05e55e..9df8f03 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/post/controller/PostCenterController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/post/controller/PostCenterController.java
@@ -430,7 +430,11 @@
int result = postService.insertPost(post);
if (result > 0) {
- return success("帖子发布成功,等待管理员审核");
+ // 返回新创建的帖子信息,包含postId
+ Map<String, Object> data = new HashMap<>();
+ data.put("postId", post.getPostId());
+ data.put("message", "帖子发布成功,等待管理员审核");
+ return success(data);
} else {
return error("帖子发布失败");
}
@@ -593,20 +597,38 @@
}
try {
- // 级联删除相关数据
- // 1. 删除帖子评论
- postCommentService.deletePostCommentByPostId(postId);
-
- // 2. 删除帖子收藏记录
- postFavoriteService.deletePostFavoriteByPostId(postId);
-
- // 3. 删除帖子本身
- int result = postService.deletePostById(postId);
-
- if (result > 0) {
- return success("帖子删除成功");
- } else {
- return error("帖子删除失败");
+ // 如果是草稿帖子(状态为待审核"0"),直接删除,无需级联删除
+ if ("0".equals(existingPost.getStatus())) {
+ // 删除相关支付记录(如果有)
+ postPaymentMapper.deletePostPaymentByPostId(postId);
+
+ // 直接删除帖子
+ int result = postService.deletePostById(postId);
+
+ if (result > 0) {
+ return success("草稿帖子删除成功");
+ } else {
+ return error("草稿帖子删除失败");
+ }
+ } else {
+ // 对于已发布的帖子,进行级联删除
+ // 1. 删除帖子评论
+ postCommentService.deletePostCommentByPostId(postId);
+
+ // 2. 删除帖子收藏记录
+ postFavoriteService.deletePostFavoriteByPostId(postId);
+
+ // 3. 删除支付记录
+ postPaymentMapper.deletePostPaymentByPostId(postId);
+
+ // 4. 删除帖子本身
+ int result = postService.deletePostById(postId);
+
+ if (result > 0) {
+ return success("帖子删除成功");
+ } else {
+ return error("帖子删除失败");
+ }
}
} catch (Exception e) {
return error("删除失败:" + e.getMessage());
@@ -883,6 +905,12 @@
return error("只能为自己的帖子购买推广");
}
+ // 检查该帖子是否已有有效的推广支付记录
+ PostPayment existingPayment = postPaymentMapper.selectLatestPaymentByPostId(request.getPostId());
+ if (existingPayment != null && "paid".equals(existingPayment.getPaymentStatus())) {
+ return error("该帖子已购买推广服务");
+ }
+
// 创建支付记录
PostPayment payment = new PostPayment();
payment.setPostId(request.getPostId());
@@ -979,19 +1007,23 @@
payment.setPaymentTime(new Date());
postPaymentMapper.updatePostPayment(payment);
- // 更新帖子的推广计划ID
- Post updatePost = new Post();
- updatePost.setPostId(payment.getPostId());
- updatePost.setPromotionPlanId(payment.getPlanId());
- updatePost.setUpdateBy(getUsername());
-
- int result = postService.updatePost(updatePost);
-
- if (result > 0) {
- return success("支付成功,推广已生效");
+ // 更新帖子的推广计划ID(不管是新帖子还是现有帖子都要更新)
+ if (payment.getPostId() != null && payment.getPostId() > 0) {
+ Post updatePost = new Post();
+ updatePost.setPostId(payment.getPostId());
+ updatePost.setPromotionPlanId(payment.getPlanId());
+ updatePost.setUpdateBy(getUsername());
+
+ int result = postService.updatePost(updatePost);
+
+ if (result <= 0) {
+ return error("支付确认失败:无法更新帖子推广信息");
+ }
} else {
- return error("支付确认失败");
+ return error("支付记录中的帖子ID无效");
}
+
+ return success("支付成功,推广已生效");
}
/**
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/post/mapper/PostPaymentMapper.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/post/mapper/PostPaymentMapper.java
index 538338c..fe39d3f 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/post/mapper/PostPaymentMapper.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/post/mapper/PostPaymentMapper.java
@@ -73,4 +73,12 @@
* @return 结果
*/
public int deletePostPaymentByIds(Long[] paymentIds);
+
+ /**
+ * 根据帖子ID删除支付记录
+ *
+ * @param postId 帖子ID
+ * @return 结果
+ */
+ public int deletePostPaymentByPostId(Long postId);
}
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/resources/mapper/post/PostPaymentMapper.xml b/ruoyi-admin/src/main/resources/mapper/post/PostPaymentMapper.xml
index c12dc2e..5c93b35 100644
--- a/ruoyi-admin/src/main/resources/mapper/post/PostPaymentMapper.xml
+++ b/ruoyi-admin/src/main/resources/mapper/post/PostPaymentMapper.xml
@@ -101,4 +101,8 @@
</foreach>
</delete>
+ <delete id="deletePostPaymentByPostId" parameterType="Long">
+ delete from post_payment where post_id = #{postId}
+ </delete>
+
</mapper>
\ No newline at end of file