个人页面修复完成
Change-Id: I031b4f1f6bf77f1c38b6ab91eb399cf3ad1875ad
diff --git a/Merge/back_ljc/app.py b/Merge/back_ljc/app.py
index 0e10b68..182a6e5 100644
--- a/Merge/back_ljc/app.py
+++ b/Merge/back_ljc/app.py
@@ -1,6 +1,7 @@
from flask import Flask, jsonify, request, session
from flask_sqlalchemy import SQLAlchemy
from flask_cors import CORS
+from flask_jwt_extended import jwt_required, get_jwt_identity
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://root:123456@10.126.59.25/redbook'
@@ -351,9 +352,10 @@
return jsonify(following_list)
# 关注/取消关注用户
-@app.route('/api/follow/<int:followee_id>', methods=['POST', 'DELETE'])
-def follow_user(followee_id):
- follower_id = session.get('user_id', 1)
+@app.route('/api/follow/<int:follower_id>/<int:followee_id>', methods=['POST', 'DELETE'])
+def follow_user(follower_id,followee_id):
+ # follower_id = session.get('user_id', 1)
+ print(follower_id)
if follower_id == followee_id:
return jsonify({'error': 'Cannot follow yourself'}), 400
@@ -468,6 +470,130 @@
app.logger.error(f"获取用户互动数据失败: {str(e)}")
return jsonify({'error': '获取互动数据失败'}), 500
+# 点赞/取消点赞路由 - 修改为包含用户ID
+@app.route('/api/users/<int:user_id>/posts/<int:post_id>/like', methods=['POST', 'DELETE'])
+def handle_like(user_id, post_id):
+ # 检查用户是否登录
+ if 'user_id' not in session:
+ return jsonify({'error': '未登录'}), 401
+
+ # 验证请求用户ID与登录用户ID是否一致
+ if session['user_id'] != user_id:
+ return jsonify({'error': '无权限操作'}), 403
+
+ post = Post.query.get(post_id)
+
+ if not post:
+ return jsonify({'error': '帖子不存在'}), 404
+
+ # 检查行为类型
+ behavior = Behavior.query.filter_by(
+ user_id=user_id,
+ post_id=post_id,
+ type='like'
+ ).first()
+
+ if request.method == 'POST':
+ # 点赞
+ if not behavior:
+ new_behavior = Behavior(
+ user_id=user_id,
+ post_id=post_id,
+ type='like',
+ value=1
+ )
+ db.session.add(new_behavior)
+ db.session.commit()
+ return jsonify({'message': '点赞成功', 'liked': True})
+ return jsonify({'message': '已点赞', 'liked': True})
+
+ elif request.method == 'DELETE':
+ # 取消点赞
+ if behavior:
+ db.session.delete(behavior)
+ db.session.commit()
+ return jsonify({'message': '已取消点赞', 'liked': False})
+ return jsonify({'message': '未点赞', 'liked': False})
+
+# 收藏/取消收藏路由 - 修改为包含用户ID
+@app.route('/api/users/<int:user_id>/posts/<int:post_id>/favorite', methods=['POST', 'DELETE'])
+def handle_favorite(user_id, post_id):
+ # 检查用户是否登录
+ if 'user_id' not in session:
+ return jsonify({'error': '未登录'}), 401
+
+ # 验证请求用户ID与登录用户ID是否一致
+ if session['user_id'] != user_id:
+ return jsonify({'error': '无权限操作'}), 403
+
+ post = Post.query.get(post_id)
+
+ if not post:
+ return jsonify({'error': '帖子不存在'}), 404
+
+ # 检查行为类型
+ behavior = Behavior.query.filter_by(
+ user_id=user_id,
+ post_id=post_id,
+ type='favorite'
+ ).first()
+
+ if request.method == 'POST':
+ # 收藏
+ if not behavior:
+ new_behavior = Behavior(
+ user_id=user_id,
+ post_id=post_id,
+ type='favorite',
+ value=1
+ )
+ db.session.add(new_behavior)
+ db.session.commit()
+ return jsonify({'message': '收藏成功', 'favorited': True})
+ return jsonify({'message': '已收藏', 'favorited': True})
+
+ elif request.method == 'DELETE':
+ # 取消收藏
+ if behavior:
+ db.session.delete(behavior)
+ db.session.commit()
+ return jsonify({'message': '已取消收藏', 'favorited': False})
+ return jsonify({'message': '未收藏', 'favorited': False})
+
+# 获取帖子互动状态(是否点赞/收藏) - 修改为包含用户ID
+@app.route('/api/users/<int:user_id>/posts/<int:post_id>/interaction-status')
+def get_post_interaction_status(user_id, post_id):
+ # 检查用户是否登录
+ if 'user_id' not in session:
+ return jsonify({
+ 'liked': False,
+ 'favorited': False
+ })
+
+ # 验证请求用户ID与登录用户ID是否一致
+ if session['user_id'] != user_id:
+ return jsonify({
+ 'liked': False,
+ 'favorited': False
+ })
+
+ liked = Behavior.query.filter_by(
+ user_id=user_id,
+ post_id=post_id,
+ type='like'
+ ).first() is not None
+
+ favorited = Behavior.query.filter_by(
+ user_id=user_id,
+ post_id=post_id,
+ type='favorite'
+ ).first() is not None
+
+ return jsonify({
+ 'liked': liked,
+ 'favorited': favorited
+ })
+
if __name__ == '__main__':
app.run(debug=True,port='5715',host='0.0.0.0')
\ No newline at end of file