feat: 投诉工单支持填写QQ/微信/手机联系方式

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
XingQue
2026-07-27 04:15:59 +08:00
parent f59ae2416f
commit 842cfbe5e1
4 changed files with 42 additions and 0 deletions

View File

@@ -0,0 +1,26 @@
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('gongdan', '0003_club_human_kefu'),
]
operations = [
migrations.AddField(
model_name='gongdan',
name='contact_qq',
field=models.CharField(blank=True, default='', max_length=32, verbose_name='联系QQ'),
),
migrations.AddField(
model_name='gongdan',
name='contact_wechat',
field=models.CharField(blank=True, default='', max_length=64, verbose_name='联系微信'),
),
migrations.AddField(
model_name='gongdan',
name='contact_phone',
field=models.CharField(blank=True, default='', max_length=20, verbose_name='联系手机'),
),
]

View File

@@ -19,6 +19,10 @@ class Gongdan(QModel):
target_user_id = models.CharField(max_length=32, blank=True, default='', db_index=True, verbose_name='被投诉人UID')
shuoming = models.CharField(max_length=500, verbose_name='投诉说明')
# 投诉人自填联系方式(选填,便于客服回访)
contact_qq = models.CharField(max_length=32, blank=True, default='', verbose_name='联系QQ')
contact_wechat = models.CharField(max_length=64, blank=True, default='', verbose_name='联系微信')
contact_phone = models.CharField(max_length=20, blank=True, default='', verbose_name='联系手机')
shenqingren_id = models.CharField(max_length=32, db_index=True, verbose_name='申请人UserUID')
club_id = models.CharField(max_length=16, null=True, blank=True, db_index=True, verbose_name='俱乐部')

View File

@@ -333,6 +333,9 @@ def serialize_gongdan(gd, include_images=True, include_shengji=False, *, viewer_
'chongzhi_id': gd.chongzhi_id or '',
'fadan_id': gd.fadan_id or '',
'shuoming': gd.shuoming or '',
'contact_qq': getattr(gd, 'contact_qq', '') or '',
'contact_wechat': getattr(gd, 'contact_wechat', '') or '',
'contact_phone': getattr(gd, 'contact_phone', '') or '',
'club_id': gd.club_id or '',
'zhuangtai': gd.zhuangtai,
'zhuangtai_label': STATUS_LABELS.get(gd.zhuangtai, str(gd.zhuangtai)),
@@ -601,6 +604,9 @@ def create_gongdan(
target_role=None,
target_user_id=None,
image_urls=None,
contact_qq=None,
contact_wechat=None,
contact_phone=None,
):
try:
leixing = int(leixing)
@@ -640,6 +646,9 @@ def create_gongdan(
target_role=t_role or '',
target_user_id=t_uid or '',
shuoming=text,
contact_qq=_trim(contact_qq or '', 32),
contact_wechat=_trim(contact_wechat or '', 64),
contact_phone=_trim(contact_phone or '', 20),
shenqingren_id=yonghuid,
club_id=club_id or None,
zhuangtai=STATUS_PROCESSING,

View File

@@ -108,6 +108,9 @@ class GongdanCreateView(APIView):
target_role=d.get('target_role'),
target_user_id=d.get('target_user_id') or d.get('zuzhang_id') or d.get('guanshi_id'),
image_urls=images,
contact_qq=d.get('contact_qq') or d.get('qq') or '',
contact_wechat=d.get('contact_wechat') or d.get('wechat') or d.get('wx') or '',
contact_phone=d.get('contact_phone') or d.get('phone') or d.get('mobile') or '',
)
return _ok(
serialize_gongdan(gd, include_images=True, include_shengji=True, viewer_uid=request.user.UserUID),