developing
This commit is contained in:
parent
e80ba4d90a
commit
257135a127
|
@ -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)
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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')
|
||||
|
|
|
@ -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.')
|
||||
|
|
Loading…
Reference in New Issue