save code

This commit is contained in:
Your Name
2026-01-27 17:30:17 +08:00
parent a416e2091f
commit 884b9f47a2
17 changed files with 910 additions and 44 deletions
Binary file not shown.
Binary file not shown.
+4 -3
View File
@@ -3,11 +3,12 @@ from fastapi import APIRouter, Depends, HTTPException, status
from fastapi.security import OAuth2PasswordRequestForm
from sqlalchemy.orm import Session
import os
import bcrypt
from app.config import settings
from app.database.database import get_db
from app.models.user import User
from app.schemas.auth import Token
from app.common.utils import verify_password, create_access_token
from app.common.utils import create_access_token
router = APIRouter(prefix="/auth", tags=["认证"])
@@ -17,8 +18,8 @@ def login(form_data: OAuth2PasswordRequestForm = Depends(), db: Session = Depend
"""用户登录"""
user = db.query(User).filter(User.username == form_data.username).first()
# 密码验证:比较用户存储的密码
if not user or form_data.password != user.password:
# 密码验证:使用bcrypt直接验证密码
if not user or not bcrypt.checkpw(form_data.password.encode('utf-8'), user.password.encode('utf-8')):
raise HTTPException(
status_code=status.HTTP_401_UNAUTHORIZED,
detail="Incorrect username or password",
+36 -3
View File
@@ -1,4 +1,4 @@
from typing import List
from typing import List, Optional
from fastapi import APIRouter, Depends, HTTPException, status
from sqlalchemy.orm import Session
from app.database.database import get_db
@@ -16,11 +16,32 @@ router = APIRouter(prefix="/projects", tags=["项目管理"])
def get_projects(
skip: int = 0,
limit: int = 100,
start_date: Optional[str] = None,
end_date: Optional[str] = None,
min_budget: Optional[int] = None,
max_budget: Optional[int] = None,
db: Session = Depends(get_db),
current_user: User = Depends(get_current_active_user)
):
"""获取项目列表"""
projects = db.query(Project).offset(skip).limit(limit).all()
projects = db.query(Project)
# 按开始日期筛选
if start_date:
projects = projects.filter(Project.start_date >= start_date)
# 按结束日期筛选
if end_date:
projects = projects.filter(Project.end_date <= end_date)
# 按预算范围筛选
if min_budget is not None:
projects = projects.filter(Project.budget >= min_budget)
if max_budget is not None:
projects = projects.filter(Project.budget <= max_budget)
projects = projects.offset(skip).limit(limit).all()
return projects
@@ -38,12 +59,24 @@ def create_project(
)
# 创建新项目
db_project = Project(
project_code=project.project_code,
name=project.name,
project_type=project.project_type,
description=project.description,
department=project.department,
contract_amount=project.contract_amount,
project_manager=project.project_manager,
client_company=project.client_company,
client_contact=project.client_contact,
contract_date=project.contract_date,
budget=project.budget,
start_date=project.start_date,
end_date=project.end_date,
planned_end_date=project.planned_end_date,
actual_end_date=project.actual_end_date,
progress=project.progress,
actual_received_amount=project.actual_received_amount,
payment_completion_rate=project.payment_completion_rate,
payment_terms=project.payment_terms,
status=project.status,
created_by=current_user.id
)