82 lines
3.1 KiB
Python
82 lines
3.1 KiB
Python
from flask import Blueprint, request
|
|
|
|
from old_routes import other_bp
|
|
from utils.jwt_utils import verify_access_token
|
|
from utils.response_utils import use_response_success, use_page_response_success, un_authorized_response
|
|
from mock_data import MOCK_CODES, MOCK_MENUS
|
|
from faker import Faker
|
|
|
|
|
|
|
|
@other_bp.route('/all', methods=['GET'])
|
|
def get_all():
|
|
user_info = verify_access_token()
|
|
if not user_info:
|
|
return un_authorized_response()
|
|
menus = next((m['menus'] for m in MOCK_MENUS if m['username'] == user_info['username']), [])
|
|
return use_response_success(menus)
|
|
|
|
@other_bp.route('/codes', methods=['GET'])
|
|
def get_codes():
|
|
user_info = verify_access_token()
|
|
if not user_info:
|
|
return un_authorized_response()
|
|
codes = next((c['codes'] for c in MOCK_CODES if c['username'] == user_info['username']), [])
|
|
return use_response_success(codes)
|
|
|
|
@other_bp.route('/info', methods=['GET'])
|
|
def get_info():
|
|
user_info = verify_access_token()
|
|
if not user_info:
|
|
return un_authorized_response()
|
|
return use_response_success(user_info)
|
|
|
|
@other_bp.route('/list', methods=['GET'])
|
|
def get_list():
|
|
user_info = verify_access_token()
|
|
if not user_info:
|
|
return un_authorized_response()
|
|
fake = Faker()
|
|
def generate_mock_data_list(count):
|
|
data_list = []
|
|
for _ in range(count):
|
|
data_item = {
|
|
'id': fake.uuid4(),
|
|
'imageUrl': fake.image_url(),
|
|
'imageUrl2': fake.image_url(),
|
|
'open': fake.boolean(),
|
|
'status': fake.random_element(['success', 'error', 'warning']),
|
|
'productName': fake.word(),
|
|
'price': fake.random_int(min=1, max=1000),
|
|
'currency': fake.currency_code(),
|
|
'quantity': fake.random_int(min=1, max=100),
|
|
'available': fake.boolean(),
|
|
'category': fake.word(),
|
|
'releaseDate': fake.date_time_this_decade().strftime('%Y-%m-%d'),
|
|
'rating': fake.random_float(min=1, max=5),
|
|
'description': fake.sentence(),
|
|
'weight': fake.random_float(min=0.1, max=10),
|
|
'color': fake.color_name(),
|
|
'inProduction': fake.boolean(),
|
|
'tags': [fake.word() for _ in range(3)]
|
|
}
|
|
data_list.append(data_item)
|
|
return data_list
|
|
mock_data = generate_mock_data_list(100)
|
|
page = request.args.get('page', 1)
|
|
page_size = request.args.get('pageSize', 10)
|
|
sort_by = request.args.get('sortBy')
|
|
sort_order = request.args.get('sortOrder', 'asc')
|
|
list_data = mock_data.copy()
|
|
if sort_by and sort_by in list_data[0]:
|
|
if sort_order == 'asc':
|
|
if sort_by == 'price':
|
|
list_data.sort(key=lambda x: float(x[sort_by]))
|
|
else:
|
|
list_data.sort(key=lambda x: x[sort_by])
|
|
else:
|
|
if sort_by == 'price':
|
|
list_data.sort(key=lambda x: float(x[sort_by]), reverse=True)
|
|
else:
|
|
list_data.sort(key=lambda x: x[sort_by], reverse=True)
|
|
return use_page_response_success(page, page_size, list_data) |