developing

This commit is contained in:
wystan_rin 2024-11-13 16:52:05 +08:00
parent e80ba4d90a
commit 257135a127
4 changed files with 35 additions and 37 deletions

View File

@ -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 len(addresses) == 1:
order_id = order_service.create_order(addresses[0])
return jsonify({"order_id": order_id}), 200
# 多个地址的情况
if len(addresses) > 1:
return jsonify({
"message": "请选择一个地址进行下单。",
"message": "Please select an address to place your order.",
"addresses": addresses
}), 200
# 单个地址
address = addresses[0]
order_id = order_service.create_order(address)
return jsonify({"order_id": order_id}), 200
if __name__ == '__main__':
app.run(debug=True)

View File

@ -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:

View File

@ -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')

View File

@ -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.')