feat: AI套图分层方案 + Gemini集成 - 4种图案类型处理 + 正片叠底 + 宽高比 + 模型选择
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -12,21 +12,17 @@ from sqlalchemy import func
|
||||
from app.db import get_db
|
||||
from app.models.user import User
|
||||
from app.models.business import CheckInConfig, VipConfig, CheckInRecord, PointsHistory
|
||||
from app.core.security import get_current_user
|
||||
|
||||
router = APIRouter()
|
||||
|
||||
# ==================== 数据模型 ====================
|
||||
|
||||
class CheckInRequest(BaseModel):
|
||||
username: str
|
||||
|
||||
# ==================== 签到功能 ====================
|
||||
|
||||
@router.post("/checkin/daily")
|
||||
async def daily_checkin(data: CheckInRequest, db: Session = Depends(get_db)):
|
||||
async def daily_checkin(db: Session = Depends(get_db), current_username: str = Depends(get_current_user)):
|
||||
"""每日签到"""
|
||||
# 1. 获取用户信息
|
||||
user = db.query(User).filter(User.username == data.username).first()
|
||||
user = db.query(User).filter(User.username == current_username).first()
|
||||
if not user:
|
||||
raise HTTPException(status_code=404, detail="用户不存在")
|
||||
|
||||
@@ -85,7 +81,7 @@ async def daily_checkin(data: CheckInRequest, db: Session = Depends(get_db)):
|
||||
# 7. 记录签到记录
|
||||
checkin_record = CheckInRecord(
|
||||
user_id=user.id,
|
||||
username=data.username,
|
||||
username=current_username,
|
||||
check_in_date=today,
|
||||
points_earned=points_earned,
|
||||
consecutive_days=consecutive_days,
|
||||
@@ -96,7 +92,7 @@ async def daily_checkin(data: CheckInRequest, db: Session = Depends(get_db)):
|
||||
# 8. 记录积分历史
|
||||
points_history = PointsHistory(
|
||||
user_id=user.id,
|
||||
username=data.username,
|
||||
username=current_username,
|
||||
type='checkin',
|
||||
amount=points_earned,
|
||||
balance=new_balance,
|
||||
@@ -145,9 +141,9 @@ async def get_checkin_config(db: Session = Depends(get_db)):
|
||||
}
|
||||
|
||||
@router.get("/checkin/status")
|
||||
async def get_checkin_status(username: str, db: Session = Depends(get_db)):
|
||||
async def get_checkin_status(db: Session = Depends(get_db), current_username: str = Depends(get_current_user)):
|
||||
"""获取签到状态"""
|
||||
user = db.query(User).filter(User.username == username).first()
|
||||
user = db.query(User).filter(User.username == current_username).first()
|
||||
if not user:
|
||||
raise HTTPException(status_code=404, detail="用户不存在")
|
||||
|
||||
@@ -160,14 +156,15 @@ async def get_checkin_status(username: str, db: Session = Depends(get_db)):
|
||||
"today_checked": today_checked,
|
||||
"consecutive_days": user.consecutive_check_in if user.consecutive_check_in else 0,
|
||||
"total_days": user.total_check_in_days if user.total_check_in_days else 0,
|
||||
"total_points": user.points if user.points else 0,
|
||||
"last_check_in_date": user.last_check_in_date.isoformat() if user.last_check_in_date else None
|
||||
}
|
||||
}
|
||||
|
||||
@router.get("/checkin/calendar/{year}/{month}")
|
||||
async def get_checkin_calendar(username: str, year: int, month: int, db: Session = Depends(get_db)):
|
||||
async def get_checkin_calendar(year: int, month: int, db: Session = Depends(get_db), current_username: str = Depends(get_current_user)):
|
||||
"""获取签到日历"""
|
||||
user = db.query(User).filter(User.username == username).first()
|
||||
user = db.query(User).filter(User.username == current_username).first()
|
||||
if not user:
|
||||
raise HTTPException(status_code=404, detail="用户不存在")
|
||||
|
||||
@@ -199,9 +196,9 @@ async def get_checkin_calendar(username: str, year: int, month: int, db: Session
|
||||
}
|
||||
|
||||
@router.get("/checkin/history")
|
||||
async def get_checkin_history(username: str, page: int = 1, limit: int = 10, db: Session = Depends(get_db)):
|
||||
async def get_checkin_history(page: int = 1, limit: int = 10, db: Session = Depends(get_db), current_username: str = Depends(get_current_user)):
|
||||
"""签到记录"""
|
||||
user = db.query(User).filter(User.username == username).first()
|
||||
user = db.query(User).filter(User.username == current_username).first()
|
||||
if not user:
|
||||
raise HTTPException(status_code=404, detail="用户不存在")
|
||||
|
||||
@@ -232,23 +229,3 @@ async def get_checkin_history(username: str, page: int = 1, limit: int = 10, db:
|
||||
"records": result_records
|
||||
}
|
||||
}
|
||||
|
||||
@router.get("/checkin/config")
|
||||
async def get_checkin_config(db: Session = Depends(get_db)):
|
||||
"""获取签到奖励规则 (公开接口)"""
|
||||
configs = db.query(CheckInConfig).filter(CheckInConfig.enabled == True).order_by(CheckInConfig.consecutive_days.asc()).all()
|
||||
|
||||
data = []
|
||||
for c in configs:
|
||||
data.append({
|
||||
"consecutive_days": c.consecutive_days,
|
||||
"base_points": c.base_points,
|
||||
"bonus_points": c.bonus_points,
|
||||
"total_points": c.total_points
|
||||
})
|
||||
|
||||
return {
|
||||
"code": 200,
|
||||
"data": data
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user