diff --git a/payment_backend/app.py b/payment_backend/app.py index 48aa46c..94a0d1a 100644 --- a/payment_backend/app.py +++ b/payment_backend/app.py @@ -2,41 +2,46 @@ from flask import Flask, request, jsonify from config import get_config from services.order import OrderService +from services.user import UserService config = get_config() app = Flask(__name__) -order_service = OrderService() # 获取单例实例 +order_service = OrderService() +user_service = UserService() + @app.route('/createOrder', methods=['POST']) def create_order(): data = request.get_json() + name = data.get('name', None) phone = data.get('phone', None) email = data.get('email', None) - address = data.get('address', None) - try: - payment_method = data['paymentMethod'] - except KeyError: + payment_method = data.get('payment_method', None) + if payment_method not in config['PaymentAddresses']: return jsonify({ "message": "Unsupported payment method. Currently, only USDT payments are supported." }), 400 - addresses = order_service.get_user_addresses(phone, email, address, payment_method) + address = data.get('address', None) + if address is None: + addresses = user_service.get_addresses(name, phone, email) - if not addresses: - return jsonify({ - "message": "No payment address associated with you was found. Please provide a payment address." - }), 400 + if not addresses: + return jsonify({ + "message": "No payment address associated with you was found. Please provide a payment address." + }), 400 + if len(addresses) > 1: + return jsonify({ + "message": "Please select an address to place your order.", + "addresses": addresses + }), 200 + # 单个地址 + address = addresses[0] - if len(addresses) == 1: - order_id = order_service.create_order(addresses[0]) - return jsonify({"order_id": order_id}), 200 + order_id = order_service.create_order(address) + return jsonify({"order_id": order_id}), 200 - # 多个地址的情况 - return jsonify({ - "message": "请选择一个地址进行下单。", - "addresses": addresses - }), 200 if __name__ == '__main__': app.run(debug=True) diff --git a/payment_backend/models.py b/payment_backend/models.py index 1dd08ea..3686d81 100644 --- a/payment_backend/models.py +++ b/payment_backend/models.py @@ -35,11 +35,6 @@ class User: params = {} else: raise ValueError("format must be list or dict") - if self.uid: - if format == "list": - params.append(self.uid) - elif format == "dict": - params["uid"] = self.uid if self.name: if format == "list": params.append(self.name) @@ -69,8 +64,6 @@ class User: def get_difference(self, other_user): different_attrs = {} - if self.uid != other_user.uid: - different_attrs["uid"] = (self.uid, other_user.uid) if self.name != other_user.name: different_attrs["name"] = (self.name, other_user.name) if self.phone != other_user.phone: diff --git a/payment_backend/services/order.py b/payment_backend/services/order.py index 1272db4..6d8cade 100644 --- a/payment_backend/services/order.py +++ b/payment_backend/services/order.py @@ -3,7 +3,6 @@ import uuid from custom_decorators import singleton from models import User from repositories.order import OrderRepository -from repositories.user import UserRepository from services.payment import PaymentService from utils.datetime import current, current_timestamp, is_time_difference_greater_than @@ -14,16 +13,6 @@ class OrderService: self.config = config self.payment_service = PaymentService() self.order_repo = OrderRepository(config) - self.user_repo = UserRepository(config) - - def get_user_addresses(self, phone=None, email=None, address=None, payment_method=None): - if address is None: - if phone or email: - users = self.user_repo.get_or_create(User(phone=phone, email=email)) - addresses = set(user.address for user in users if address) - return list(addresses) - raise ValueError('A phone number, email, or address is required.') - return [address] def create_order(self, address=None): date_str = current().strftime('%Y%m%d%H%M%S') diff --git a/payment_backend/services/user.py b/payment_backend/services/user.py index 7fbae0d..b1e5501 100644 --- a/payment_backend/services/user.py +++ b/payment_backend/services/user.py @@ -1,6 +1,17 @@ from custom_decorators import singleton +from models import User +from repositories.user import UserRepository @singleton class UserService: - pass + def __init__(self, config): + self.config = config + self.user_repo = UserRepository(config) + + def get_addresses(self, name=None, phone=None, email=None): + if phone or email: + users = self.user_repo.get_or_create(User(name=name, phone=phone, email=email)) + addresses = set(user.address for user in users if user.address) + return list(addresses) + raise ValueError('A phone number, email, or address is required.')