From 842cfbe5e122652d049a1343095d3bc6eeb3f5a8 Mon Sep 17 00:00:00 2001 From: XingQue Date: Mon, 27 Jul 2026 04:15:59 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=8A=95=E8=AF=89=E5=B7=A5=E5=8D=95?= =?UTF-8?q?=E6=94=AF=E6=8C=81=E5=A1=AB=E5=86=99QQ/=E5=BE=AE=E4=BF=A1/?= =?UTF-8?q?=E6=89=8B=E6=9C=BA=E8=81=94=E7=B3=BB=E6=96=B9=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Cursor --- gongdan/migrations/0004_gongdan_contact.py | 26 ++++++++++++++++++++++ gongdan/models.py | 4 ++++ gongdan/services.py | 9 ++++++++ gongdan/views.py | 3 +++ 4 files changed, 42 insertions(+) create mode 100644 gongdan/migrations/0004_gongdan_contact.py diff --git a/gongdan/migrations/0004_gongdan_contact.py b/gongdan/migrations/0004_gongdan_contact.py new file mode 100644 index 0000000..5ae803e --- /dev/null +++ b/gongdan/migrations/0004_gongdan_contact.py @@ -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='联系手机'), + ), + ] diff --git a/gongdan/models.py b/gongdan/models.py index d5e79fe..8fb3361 100644 --- a/gongdan/models.py +++ b/gongdan/models.py @@ -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='俱乐部') diff --git a/gongdan/services.py b/gongdan/services.py index 47f259d..a9e4f5f 100644 --- a/gongdan/services.py +++ b/gongdan/services.py @@ -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, diff --git a/gongdan/views.py b/gongdan/views.py index 74cf7a3..551475d 100644 --- a/gongdan/views.py +++ b/gongdan/views.py @@ -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),