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

View File

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

View File

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

View File

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