perf: P1 性能优化批量修复 + kefu 视图拆分
P1 性能优化(避免循环内 N+1 / N 次 DB 查询): - shop_order_views._batch_images: 移除 ThreadPoolExecutor 掩盖的 N 次查询,改单次批量 + Python 侧分组 - product_query.DashouHuiyuanList: 5N 查询 -> 3 次批量预取 + 本地闭包判断 - roles.GetRolePermissionView / 用户列表: 循环内 RolePermission/Permission/UserRole/Role -> 批量 __in 预取 - guanli / zuzhang 杜次分红 4.2/4.3: 循环内 update_or_create + 单条 delete -> bulk_create + bulk_update + 批量 delete - admin_config QQ 群配置: 循环内 exists/first/save/create -> 批量预取 + bulk_create + bulk_update - jituan 服务层多处合并统计查询、批量预取 map - rank 多处循环 N+1 改批量预取 - backend 多处循环内 count/create 改批量 - config/orders/merchant_ops 多处循环 N+1 改批量预取 其他改动: - users/views/kefu.py 拆分为 kefu_base/kefu_dashou/kefu_orders/kefu_punishment/kefu_withdraw 5 个文件 - 删除遗留脚本 check_prod_uid.py / create_rbac_tables.sql
This commit is contained in:
@@ -526,16 +526,16 @@ class DashouShensuView(APIView):
|
||||
chufa_record.save()
|
||||
|
||||
# 6. 保存申诉图片(如果有)
|
||||
saved_tupian_urls = []
|
||||
if shensu_tupian_urls:
|
||||
for tupian_url in shensu_tupian_urls:
|
||||
if tupian_url: # 确保URL不为空
|
||||
chufa_tupian = PenaltyEvidenceImage.query.create(
|
||||
OrderID=chufa_record.OrderID,
|
||||
UserID=yonghuid,
|
||||
ImageURL=tupian_url
|
||||
)
|
||||
saved_tupian_urls.append(tupian_url)
|
||||
saved_tupian_urls = [u for u in shensu_tupian_urls if u] if shensu_tupian_urls else []
|
||||
if saved_tupian_urls:
|
||||
PenaltyEvidenceImage.objects.bulk_create([
|
||||
PenaltyEvidenceImage(
|
||||
OrderID=chufa_record.OrderID,
|
||||
UserID=yonghuid,
|
||||
ImageURL=tupian_url,
|
||||
)
|
||||
for tupian_url in saved_tupian_urls
|
||||
])
|
||||
|
||||
# 7. 构建返回数据
|
||||
response_data = {
|
||||
|
||||
Reference in New Issue
Block a user