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