feat: 商品/专区/店铺按俱乐部分离,工单统计与点单手机号认证
商品与专区、店铺增加 club_id(历史默认 xq);列表按俱乐部过滤;工单列表返回待办统计;新增 hqshouji/rzwlsjh 手机号查询与认证接口。 Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -281,6 +281,7 @@ class GongdanAdminListView(APIView):
|
||||
return err
|
||||
page = int(request.data.get('page') or 1)
|
||||
page_size = min(int(request.data.get('page_size') or 20), 100)
|
||||
from django.db.models import Q
|
||||
qs = Gongdan.query.all().order_by('-CreateTime')
|
||||
try:
|
||||
from jituan.services.club_context import filter_club_char_field
|
||||
@@ -290,12 +291,17 @@ class GongdanAdminListView(APIView):
|
||||
zhuangtai = request.data.get('zhuangtai')
|
||||
leixing = request.data.get('leixing')
|
||||
keyword = (request.data.get('keyword') or '').strip()
|
||||
if zhuangtai not in (None, ''):
|
||||
only_escalated = str(request.data.get('only_escalated') or '').lower() in ('1', 'true', 'yes')
|
||||
need_handle = str(request.data.get('need_handle') or '').lower() in ('1', 'true', 'yes')
|
||||
if need_handle:
|
||||
qs = qs.filter(Q(zhuangtai=1) | Q(zhuangtai=3))
|
||||
elif zhuangtai not in (None, ''):
|
||||
qs = qs.filter(zhuangtai=int(zhuangtai))
|
||||
if only_escalated:
|
||||
qs = qs.filter(shengji_cishu__gt=0).filter(Q(zhuangtai=1) | Q(zhuangtai=3))
|
||||
if leixing not in (None, ''):
|
||||
qs = qs.filter(leixing=int(leixing))
|
||||
if keyword:
|
||||
from django.db.models import Q
|
||||
qs = qs.filter(
|
||||
Q(gongdan_id__icontains=keyword)
|
||||
| Q(shenqingren_id__icontains=keyword)
|
||||
@@ -306,7 +312,32 @@ class GongdanAdminListView(APIView):
|
||||
total = qs.count()
|
||||
start = max(page - 1, 0) * page_size
|
||||
rows = [serialize_gongdan(g, include_images=False) for g in qs[start:start + page_size]]
|
||||
return _ok({'list': rows, 'total': total, 'page': page, 'page_size': page_size})
|
||||
|
||||
# 统计基于俱乐部范围全量(不受当前筛选影响),方便客服一眼看到待办量
|
||||
stats_qs = Gongdan.query.all()
|
||||
try:
|
||||
from jituan.services.club_context import filter_club_char_field
|
||||
stats_qs = filter_club_char_field(stats_qs, request, field='club_id')
|
||||
except Exception:
|
||||
pass
|
||||
stats = {
|
||||
'total': stats_qs.count(),
|
||||
'pending': stats_qs.filter(zhuangtai=1).count(),
|
||||
'done': stats_qs.filter(zhuangtai=2).count(),
|
||||
'dissatisfied': stats_qs.filter(zhuangtai=3).count(),
|
||||
'closed': stats_qs.filter(zhuangtai=4).count(),
|
||||
'escalated': stats_qs.filter(shengji_cishu__gt=0).filter(
|
||||
Q(zhuangtai=1) | Q(zhuangtai=3)
|
||||
).count(),
|
||||
'need_handle': stats_qs.filter(Q(zhuangtai=1) | Q(zhuangtai=3)).count(),
|
||||
}
|
||||
return _ok({
|
||||
'list': rows,
|
||||
'total': total,
|
||||
'page': page,
|
||||
'page_size': page_size,
|
||||
'stats': stats,
|
||||
})
|
||||
|
||||
|
||||
class GongdanAdminHandleView(APIView):
|
||||
|
||||
Reference in New Issue
Block a user