1
This commit is contained in:
62
backend/app/routes/user_routes.py
Normal file
62
backend/app/routes/user_routes.py
Normal file
@@ -0,0 +1,62 @@
|
||||
from flask import Blueprint, request
|
||||
from flask_jwt_extended import jwt_required
|
||||
|
||||
from app.extensions import db
|
||||
from app.models import User
|
||||
from app.utils.auth import current_user
|
||||
from app.utils.response import fail, ok
|
||||
|
||||
|
||||
user_bp = Blueprint("user", __name__)
|
||||
|
||||
|
||||
@user_bp.get("/profile")
|
||||
@jwt_required()
|
||||
def get_profile():
|
||||
user = current_user()
|
||||
if not user:
|
||||
return fail("用户不存在", 404)
|
||||
return ok(user.to_dict())
|
||||
|
||||
|
||||
@user_bp.put("/profile")
|
||||
@jwt_required()
|
||||
def update_profile():
|
||||
user = current_user()
|
||||
if not user:
|
||||
return fail("用户不存在", 404)
|
||||
|
||||
payload = request.get_json(silent=True) or {}
|
||||
if "nickname" in payload:
|
||||
user.nickname = (payload.get("nickname") or user.nickname).strip() or user.nickname
|
||||
if "company" in payload:
|
||||
user.company = (payload.get("company") or "").strip()
|
||||
if "title" in payload:
|
||||
user.title = (payload.get("title") or "").strip()
|
||||
if "phone" in payload:
|
||||
user.phone = (payload.get("phone") or "").strip()
|
||||
|
||||
new_password = payload.get("password")
|
||||
if new_password:
|
||||
if len(new_password) < 6:
|
||||
return fail("新密码至少6位", 400)
|
||||
user.set_password(new_password)
|
||||
|
||||
db.session.commit()
|
||||
return ok(user.to_dict(), "个人信息更新成功")
|
||||
|
||||
|
||||
@user_bp.get("/search")
|
||||
@jwt_required()
|
||||
def search_users():
|
||||
keyword = (request.args.get("keyword") or "").strip()
|
||||
if not keyword:
|
||||
return ok([])
|
||||
|
||||
users = (
|
||||
User.query.filter(User.username.like(f"%{keyword}%") | User.nickname.like(f"%{keyword}%"))
|
||||
.order_by(User.id.desc())
|
||||
.limit(20)
|
||||
.all()
|
||||
)
|
||||
return ok([item.to_dict() for item in users])
|
||||
Reference in New Issue
Block a user