From d4ea6ae946c925dc20d1615aa47f6211489c2928 Mon Sep 17 00:00:00 2001 From: aaron <> Date: Wed, 22 Jan 2025 17:26:25 +0800 Subject: [PATCH] =?UTF-8?q?=E7=A7=BB=E9=99=A4=E5=9B=A2=E8=B4=AD=E7=A7=AF?= =?UTF-8?q?=E5=88=86=E6=8A=B5=E6=89=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/endpoints/merchant_order.py | 59 +++-------------------------- app/models/merchant_order.py | 2 - 2 files changed, 5 insertions(+), 56 deletions(-) diff --git a/app/api/endpoints/merchant_order.py b/app/api/endpoints/merchant_order.py index 955d9c6..b339dff 100644 --- a/app/api/endpoints/merchant_order.py +++ b/app/api/endpoints/merchant_order.py @@ -22,7 +22,7 @@ from app.core.account import AccountManager router = APIRouter() @router.post("", response_model=ResponseModel) -async def create_order( +async def create_merchant_order( order: MerchantOrderCreate, db: Session = Depends(get_db), current_user: UserDB = Depends(get_current_user) @@ -35,16 +35,8 @@ async def create_order( if not product: return error_response(code=404, message="商品不存在") - # 计算积分抵扣 - available_points = current_user.points or 0 - deduct_amount = min( - float(product.max_deduct_points), - available_points - ) if available_points > 0 else 0 - - # 计算实际支付金额 original_amount = float(product.sale_price) - pay_amount = max(0, original_amount - deduct_amount) + pay_amount = original_amount # 生成订单号和核销码 while True: @@ -63,27 +55,13 @@ async def create_order( user_id=current_user.userid, merchant_product_id=order.merchant_product_id, order_amount=original_amount, - deduct_amount=deduct_amount, pay_amount=pay_amount, status=MerchantOrderStatus.CREATED, order_verify_code=verify_code ) - # 扣除用户积分并记录日志 - if deduct_amount > 0: - current_user.points -= deduct_amount - - # 记录积分变动日志 - point_record = PointRecordDB( - user_id=current_user.userid, - points=-float(deduct_amount), # 负数表示扣减 - description=f"订单消费抵扣" - ) - db.add(point_record) - - db.add(db_order) - try: + db.add(db_order) db.commit() db.refresh(db_order) return success_response(data=MerchantOrderInfo.model_validate(db_order)) @@ -276,19 +254,6 @@ async def confirm_refund( try: # 更新状态为已退款 order.status = MerchantOrderStatus.REFUNDED - - # 如果有积分抵扣,返还积分 - if order.deduct_amount > 0: - # 返还用户积分 - order.user.points += float(order.deduct_amount) - - point_record = PointRecordDB( - user_id=order.user_id, - points=float(order.deduct_amount), # 正数表示返还 - description=f"订单退款返还" - ) - db.add(point_record) - db.commit() return success_response( message="退款确认成功", @@ -375,22 +340,8 @@ async def calculate_order_price( if not product: return error_response(code=404, message="商品不存在") - # 获取用户积分 - available_points = current_user.points or 0 - - # 计算最高可抵扣金额(1积分 = 1分钱) - max_deduct_amount = min( - float(product.max_deduct_points), # 商品最高可抵扣金额 - available_points # 用户可用积分 - ) if available_points > 0 else 0 - - # 计算最终支付金额 - final_amount = max(0, float(product.sale_price) - max_deduct_amount) - + return success_response(data={ "original_price": float(product.sale_price), - "available_points": available_points, - "max_deduct_points": float(product.max_deduct_points), - "max_deduct_amount": max_deduct_amount, - "final_amount": final_amount + "final_amount": product.sale_price }) \ No newline at end of file diff --git a/app/models/merchant_order.py b/app/models/merchant_order.py index 67d5738..c5d2c04 100644 --- a/app/models/merchant_order.py +++ b/app/models/merchant_order.py @@ -24,7 +24,6 @@ class MerchantOrderDB(Base): user_id = Column(Integer, ForeignKey("users.userid"), nullable=False) merchant_product_id = Column(Integer, ForeignKey("merchant_products.id"), nullable=False) order_amount = Column(DECIMAL(10,2), nullable=False) - deduct_amount = Column(DECIMAL(10,2), nullable=False, default=0) pay_amount = Column(DECIMAL(10,2), nullable=False, default=0) status = Column(Enum(MerchantOrderStatus), nullable=False, default=MerchantOrderStatus.CREATED) order_verify_code = Column(String(21), unique=True, nullable=False) @@ -43,7 +42,6 @@ class MerchantOrderInfo(BaseModel): user_id: int merchant_product_id: int order_amount: float - deduct_amount: float pay_amount: float status: MerchantOrderStatus order_verify_code: str