核销订单修改。
This commit is contained in:
parent
16e398c744
commit
2c6b54ab65
@ -42,4 +42,12 @@ async def get_deliveryman_user(
|
||||
"""验证配送员权限"""
|
||||
if UserRole.DELIVERYMAN not in current_user.roles:
|
||||
raise HTTPException(status_code=403, detail="需要配送员权限")
|
||||
return current_user
|
||||
|
||||
async def get_merchant_user(
|
||||
current_user: UserDB = Depends(get_current_user)
|
||||
) -> UserDB:
|
||||
"""验证商家权限"""
|
||||
if UserRole.MERCHANT not in current_user.roles:
|
||||
raise HTTPException(status_code=403, detail="需要商家权限")
|
||||
return current_user
|
||||
@ -10,7 +10,7 @@ from app.models.merchant_order import (
|
||||
)
|
||||
from app.models.merchant_product import MerchantProductDB
|
||||
from app.models.database import get_db
|
||||
from app.api.deps import get_current_user, get_admin_user
|
||||
from app.api.deps import get_current_user, get_admin_user, get_merchant_user
|
||||
from app.models.user import UserDB
|
||||
from app.core.response import success_response, error_response, ResponseModel
|
||||
from datetime import datetime, timezone
|
||||
@ -28,6 +28,7 @@ from fastapi import UploadFile
|
||||
from app.core.qcloud import qcloud_manager
|
||||
from app.core.imageprocessor import process_image, ImageFormat
|
||||
from starlette.datastructures import Headers
|
||||
from app.models.merchant_order import MerchantOrderVerify
|
||||
|
||||
router = APIRouter()
|
||||
|
||||
@ -144,12 +145,36 @@ async def get_user_orders(
|
||||
|
||||
return success_response(data=order_list)
|
||||
|
||||
@router.post("/{order_id}/verify", response_model=ResponseModel)
|
||||
async def verify_order(
|
||||
order_id: str,
|
||||
verify_code: str,
|
||||
@router.get("/merchant/query_verify", response_model=ResponseModel)
|
||||
async def query_verify(
|
||||
request: MerchantOrderVerify,
|
||||
db: Session = Depends(get_db),
|
||||
current_user: UserDB = Depends(get_current_user)
|
||||
merchant_user: UserDB = Depends(get_merchant_user)
|
||||
):
|
||||
"""查询待核销订单"""
|
||||
order = db.query(
|
||||
MerchantOrderDB,
|
||||
MerchantProductDB,
|
||||
MerchantDB
|
||||
).join(
|
||||
MerchantProductDB,
|
||||
MerchantOrderDB.merchant_product_id == MerchantProductDB.id
|
||||
).join(
|
||||
MerchantDB,
|
||||
MerchantProductDB.merchant_id == MerchantDB.id
|
||||
).filter(
|
||||
MerchantOrderDB.order_verify_code == request.verify_code,
|
||||
MerchantOrderDB.status == MerchantOrderStatus.UNVERIFIED,
|
||||
MerchantDB.user_id == merchant_user.userid
|
||||
).first()
|
||||
|
||||
return success_response(data=MerchantOrderInfo.model_validate(order))
|
||||
|
||||
@router.post("/merchant/verify", response_model=ResponseModel)
|
||||
async def verify_order(
|
||||
request: MerchantOrderVerify,
|
||||
db: Session = Depends(get_db),
|
||||
merchant_user: UserDB = Depends(get_merchant_user)
|
||||
):
|
||||
"""核销订单"""
|
||||
# 查询订单及相关信息
|
||||
@ -164,9 +189,9 @@ async def verify_order(
|
||||
MerchantDB,
|
||||
MerchantProductDB.merchant_id == MerchantDB.id
|
||||
).filter(
|
||||
MerchantOrderDB.order_id == order_id,
|
||||
MerchantOrderDB.order_verify_code == verify_code,
|
||||
MerchantOrderDB.verify_time.is_(None) # 未核销
|
||||
MerchantOrderDB.order_verify_code == request.verify_code,
|
||||
MerchantOrderDB.status == MerchantOrderStatus.UNVERIFIED,
|
||||
MerchantDB.user_id == merchant_user.userid
|
||||
).first()
|
||||
|
||||
if not order:
|
||||
@ -175,9 +200,9 @@ async def verify_order(
|
||||
try:
|
||||
# 更新核销时间和核销用户
|
||||
order.MerchantOrderDB.verify_time = datetime.now(timezone.utc)
|
||||
order.MerchantOrderDB.verify_user_id = current_user.userid
|
||||
order.MerchantOrderDB.verify_user_id = merchant_user.userid
|
||||
order.MerchantOrderDB.status = MerchantOrderStatus.VERIFIED
|
||||
|
||||
|
||||
# 对商家进行结算
|
||||
account_manager = AccountManager(db)
|
||||
settlement_amount = float(order.MerchantProductDB.settlement_amount)
|
||||
|
||||
@ -40,6 +40,9 @@ class MerchantOrderDB(Base):
|
||||
class MerchantOrderCreate(BaseModel):
|
||||
merchant_product_id: int
|
||||
|
||||
class MerchantOrderVerify(BaseModel):
|
||||
verify_code: str
|
||||
|
||||
class MerchantOrderInfo(BaseModel):
|
||||
id: int
|
||||
order_id: str
|
||||
|
||||
Loading…
Reference in New Issue
Block a user