支付功能+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