更新ASIN库新需求

This commit is contained in:
super
2026-07-20 20:12:38 +08:00
parent cbde22ec79
commit ba48bbc6af
13 changed files with 1313 additions and 212 deletions

View File

@@ -35,7 +35,7 @@ def _can_access_dedupe_total_data(role, current_row):
def _ensure_dedupe_total_data_access():
return _ensure_admin_menu_access('dedupe-total-data')
return _ensure_backend_menu_access('dedupe-total-data')
role, current_row = get_current_admin_role()
if not _can_access_dedupe_total_data(role, current_row):
return None, None, (jsonify({'success': False, 'error': '无权访问数据去重汇总数据'}), 403)
@@ -623,7 +623,7 @@ def _ensure_admin_menu_access(*menu_names):
def _ensure_dedupe_total_data_access():
return _ensure_admin_menu_access('dedupe-total-data')
return _ensure_backend_menu_access('dedupe-total-data')
def _load_current_admin_menu_items():
@@ -802,7 +802,9 @@ def list_users():
if not role:
return jsonify({'success': False, 'error': '需要登录'}), 403
page = max(1, int(request.args.get('page', 1)))
_, _, denied = _ensure_backend_menu_access('users', 'history', 'shop-manage', 'skip-price-asin', 'query-asin')
_, _, denied = _ensure_backend_menu_access(
'users', 'history', 'shop-manage', 'skip-price-asin', 'query-asin', 'dedupe-total-data'
)
if denied:
return denied
page_size = min(999, max(5, int(request.args.get('page_size', 15))))
@@ -2301,18 +2303,25 @@ def delete_shop_key(item_id):
# ---------- 数据去重总数据 ----------
@admin_api.route('/dedupe-total-data')
@admin_required
@login_required
def list_dedupe_total_data():
_, _, denied = _ensure_dedupe_total_data_access()
_, current_row, denied = _ensure_dedupe_total_data_access()
if denied:
return denied
page = max(1, int(request.args.get('page', 1)))
page_size = min(100, max(1, int(request.args.get('page_size', 15))))
keyword = (request.args.get('keyword') or '').strip()
username = (request.args.get('username') or '').strip()
data, error_response, status = _proxy_backend_java(
'GET',
'/api/admin/dedupe-total-data',
params={'page': page, 'pageSize': page_size, 'keyword': keyword},
params={
'page': page,
'pageSize': page_size,
'keyword': keyword,
'username': username,
'operatorId': current_row.get('id'),
},
)
if error_response is not None:
return error_response, status
@@ -2321,6 +2330,8 @@ def list_dedupe_total_data():
{
'id': item.get('id'),
'data_value': item.get('dataValue') or '',
'uploader_user_id': item.get('uploaderUserId'),
'username': item.get('username') or '',
'created_at': (item.get('createdAt') or '').replace('T', ' ')[:16],
}
for item in (payload.get('items') or [])
@@ -2335,14 +2346,15 @@ def list_dedupe_total_data():
@admin_api.route('/dedupe-total-data/import/<import_id>')
@admin_required
@login_required
def dedupe_total_data_import_progress(import_id):
_, _, denied = _ensure_dedupe_total_data_access()
_, current_row, denied = _ensure_dedupe_total_data_access()
if denied:
return denied
result, error_response, status = _proxy_backend_java(
'GET',
f'/api/admin/dedupe-total-data/import/{import_id}',
params={'operatorId': current_row.get('id')},
)
if error_response is not None:
return error_response, status
@@ -2362,9 +2374,9 @@ def dedupe_total_data_import_progress(import_id):
@admin_api.route('/dedupe-total-data/import', methods=['POST'])
@admin_required
@login_required
def import_dedupe_total_data():
_, _, denied = _ensure_dedupe_total_data_access()
_, current_row, denied = _ensure_dedupe_total_data_access()
if denied:
return denied
file_storage = request.files.get('file')
@@ -2377,6 +2389,7 @@ def import_dedupe_total_data():
'POST',
'/api/admin/dedupe-total-data/import',
files=files,
data={'operatorId': current_row.get('id')},
)
if error_response is not None:
return error_response, status
@@ -2389,14 +2402,15 @@ def import_dedupe_total_data():
@admin_api.route('/dedupe-total-data/delete-import/<import_id>')
@admin_required
@login_required
def dedupe_total_data_delete_import_progress(import_id):
_, _, denied = _ensure_dedupe_total_data_access()
_, current_row, denied = _ensure_dedupe_total_data_access()
if denied:
return denied
result, error_response, status = _proxy_backend_java(
'GET',
f'/api/admin/dedupe-total-data/delete-import/{import_id}',
params={'operatorId': current_row.get('id')},
)
if error_response is not None:
return error_response, status
@@ -2416,9 +2430,9 @@ def dedupe_total_data_delete_import_progress(import_id):
@admin_api.route('/dedupe-total-data/delete-import', methods=['POST'])
@admin_required
@login_required
def delete_import_dedupe_total_data():
_, _, denied = _ensure_dedupe_total_data_access()
_, current_row, denied = _ensure_dedupe_total_data_access()
if denied:
return denied
file_storage = request.files.get('file')
@@ -2431,6 +2445,7 @@ def delete_import_dedupe_total_data():
'POST',
'/api/admin/dedupe-total-data/delete-import',
files=files,
data={'operatorId': current_row.get('id')},
)
if error_response is not None:
return error_response, status
@@ -2443,9 +2458,9 @@ def delete_import_dedupe_total_data():
@admin_api.route('/dedupe-total-data', methods=['POST'])
@admin_required
@login_required
def create_dedupe_total_data():
_, _, denied = _ensure_dedupe_total_data_access()
_, current_row, denied = _ensure_dedupe_total_data_access()
if denied:
return denied
data = request.get_json() or {}
@@ -2453,6 +2468,7 @@ def create_dedupe_total_data():
result, error_response, status = _proxy_backend_java(
'POST',
'/api/admin/dedupe-total-data',
params={'operatorId': current_row.get('id')},
json_data=payload,
)
if error_response is not None:
@@ -2464,15 +2480,17 @@ def create_dedupe_total_data():
'item': {
'id': item.get('id'),
'data_value': item.get('dataValue') or '',
'uploader_user_id': item.get('uploaderUserId'),
'username': item.get('username') or '',
'created_at': (item.get('createdAt') or '').replace('T', ' ')[:16],
},
})
@admin_api.route('/dedupe-total-data/<int:item_id>', methods=['PUT'])
@admin_required
@login_required
def update_dedupe_total_data(item_id):
_, _, denied = _ensure_dedupe_total_data_access()
_, current_row, denied = _ensure_dedupe_total_data_access()
if denied:
return denied
data = request.get_json() or {}
@@ -2480,6 +2498,7 @@ def update_dedupe_total_data(item_id):
result, error_response, status = _proxy_backend_java(
'PUT',
f'/api/admin/dedupe-total-data/{item_id}',
params={'operatorId': current_row.get('id')},
json_data=payload,
)
if error_response is not None:
@@ -2491,20 +2510,23 @@ def update_dedupe_total_data(item_id):
'item': {
'id': item.get('id'),
'data_value': item.get('dataValue') or '',
'uploader_user_id': item.get('uploaderUserId'),
'username': item.get('username') or '',
'created_at': (item.get('createdAt') or '').replace('T', ' ')[:16],
},
})
@admin_api.route('/dedupe-total-data/<int:item_id>', methods=['DELETE'])
@admin_required
@login_required
def delete_dedupe_total_data(item_id):
_, _, denied = _ensure_dedupe_total_data_access()
_, current_row, denied = _ensure_dedupe_total_data_access()
if denied:
return denied
result, error_response, status = _proxy_backend_java(
'DELETE',
f'/api/admin/dedupe-total-data/{item_id}',
params={'operatorId': current_row.get('id')},
)
if error_response is not None:
return error_response, status
@@ -2824,7 +2846,9 @@ def delete_shop_manage(item_id):
@admin_api.route('/shop-manage-groups')
@login_required
def list_shop_manage_groups():
role, current_row, denied = _ensure_backend_menu_access('shop-manage', 'skip-price-asin', 'query-asin')
role, current_row, denied = _ensure_backend_menu_access(
'shop-manage', 'skip-price-asin', 'query-asin', 'dedupe-total-data'
)
if denied:
return denied
groups, error_response, status = _load_expanded_shop_manage_groups(role, current_row)
@@ -2836,7 +2860,9 @@ def list_shop_manage_groups():
@admin_api.route('/shop-manage-group', methods=['POST'])
@login_required
def create_shop_manage_group():
role, current_row, denied = _ensure_backend_menu_access('shop-manage', 'skip-price-asin', 'query-asin')
role, current_row, denied = _ensure_backend_menu_access(
'shop-manage', 'skip-price-asin', 'query-asin', 'dedupe-total-data'
)
if denied:
return denied
data = request.get_json() or {}
@@ -2881,7 +2907,9 @@ def create_shop_manage_group():
@admin_api.route('/shop-manage-group/<int:item_id>', methods=['PUT'])
@login_required
def update_shop_manage_group(item_id):
role, current_row, denied = _ensure_backend_menu_access('shop-manage', 'skip-price-asin', 'query-asin')
role, current_row, denied = _ensure_backend_menu_access(
'shop-manage', 'skip-price-asin', 'query-asin', 'dedupe-total-data'
)
if denied:
return denied
data = request.get_json() or {}
@@ -3126,7 +3154,9 @@ def delete_skip_price_asin_country(item_id, country):
@admin_api.route('/shop-manage-group/<int:item_id>', methods=['DELETE'])
@login_required
def delete_shop_manage_group(item_id):
role, current_row, denied = _ensure_backend_menu_access('shop-manage', 'skip-price-asin', 'query-asin')
role, current_row, denied = _ensure_backend_menu_access(
'shop-manage', 'skip-price-asin', 'query-asin', 'dedupe-total-data'
)
if denied:
return denied
result, error_response, status = _proxy_backend_java(