fix: 商家/管事/组长封禁写入原因,详情返回 fengjin_yuanyin

This commit is contained in:
XingQue committed 2026-08-09 17:02:02 +08:00
1 parent 545b235379
commit 962689e579
3 files changed
+46 -8

No files matched your search

+15 -2
View File
@@ -241,6 +241,7 @@ class GetGuanliListView(APIView):
'avatar': user.Avatar or '',
'nickname': boss.nickname if boss else '',
'zhuangtai': guanshi.zhuangtai,
'fengjin_yuanyin': getattr(guanshi, 'fengjin_yuanyin', '') or '',
'yaogingshuliang': guanshi.yaogingshuliang,
'yue': str(guanshi.yue),
'chongzhifenrun': str(guanshi.chongzhifenrun),
@@ -318,6 +319,7 @@ class GetGuanliDetailView(APIView):
'dianhua': guanshi.dianhua or '',
'wechat': guanshi.wechat or '',
'zhuangtai': guanshi.zhuangtai,
'fengjin_yuanyin': getattr(guanshi, 'fengjin_yuanyin', '') or '',
'yaoqingma': guanshi.yaoqingma,
'yaoqingren': guanshi.yaoqingren,
'invite_qrcode_url': guanshi.invite_qrcode_url or '',
@@ -615,11 +617,22 @@ class UpdateGuanliView(APIView):
try:
zt = int(zhuangtai)
if zt in (0, 1):
yuanyin = (request.data.get('yuanyin') or request.data.get('fengjin_yuanyin') or '').strip()
if zt == 0 and zt != old_zhuangtai and not yuanyin:
return Response({'code': 400, 'msg': '封禁必须填写原因'})
guanshi.zhuangtai = zt
if zt == 0:
if yuanyin:
guanshi.fengjin_yuanyin = yuanyin[:200]
else:
guanshi.fengjin_yuanyin = ''
if zt != old_zhuangtai:
zt_map = {0: '禁用', 1: '正常'}
base_changes.append(f'状态:{zt_map.get(old_zhuangtai, old_zhuangtai)}→{zt_map.get(zt, zt)}')
except:
reason_part = f',原因={yuanyin}' if (zt == 0 and yuanyin) else ''
base_changes.append(
f'状态:{zt_map.get(old_zhuangtai, old_zhuangtai)}→{zt_map.get(zt, zt)}{reason_part}'
)
except ValueError:
pass
if avatar is not None:
user.Avatar = avatar
+16 -4
View File
@@ -763,6 +763,8 @@ class KefuUpdateDashouView(APIView):
if new_status not in [0, 1]:
return Response({'code': 400, 'msg': '状态值无效(0=封禁,1=正常)'})
yuanyin = (request.data.get('yuanyin') or request.data.get('fengjin_yuanyin') or '').strip()
if new_status == 0 and not yuanyin:
return Response({'code': 400, 'msg': '封禁必须填写原因'})
dashou_profile.zhanghaozhuangtai = new_status
if new_status == 0:
dashou_profile.fengjin_yuanyin = yuanyin[:200]
@@ -1121,6 +1123,7 @@ class KefuGetShangjiaDetailView(APIView):
'avatar': user.Avatar or '',
'nicheng': shangjia.nicheng,
'zhuangtai': shangjia.zhuangtai, # 1正常,2禁用
'fengjin_yuanyin': getattr(shangjia, 'fengjin_yuanyin', '') or '',
'dianhua': shangjia.dianhua,
'wechat': shangjia.wechat,
'yue': str(shangjia.yue),
@@ -1255,25 +1258,34 @@ class KefuUpdateShangjiaView(APIView):
if action == 'ban':
if shangjia.zhuangtai == 2:
return Response({'code': 400, 'msg': '商家已是封禁状态'})
yuanyin = (request.data.get('yuanyin') or request.data.get('fengjin_yuanyin') or '').strip()
if not yuanyin:
return Response({'code': 400, 'msg': '封禁必须填写原因'})
shangjia.zhuangtai = 2
shangjia.save(update_fields=['zhuangtai'])
shangjia.fengjin_yuanyin = yuanyin[:200]
shangjia.save(update_fields=['zhuangtai', 'fengjin_yuanyin'])
write_xiugai_log(
yonghuid=yonghuid,
xiugaiid=kefu.user.Phone,
leixing=XIUGAI_LEIXING_SHANGJIA,
qitashuoming=(
f'【后台】封禁商家账号:正常 → 禁用,'
f'【后台】封禁商家账号:正常 → 禁用,原因={yuanyin},'
f'商家ID={yonghuid},昵称={shangjia.nicheng},操作人={kefu.user.Phone}'
),
)
return Response({'code': 0, 'msg': '商家已封禁', 'data': {'zhuangtai': 2}})
return Response({
'code': 0,
'msg': '商家已封禁',
'data': {'zhuangtai': 2, 'fengjin_yuanyin': shangjia.fengjin_yuanyin},
})
# 解封
if action == 'unban':
if shangjia.zhuangtai == 1:
return Response({'code': 400, 'msg': '商家已是正常状态'})
shangjia.zhuangtai = 1
shangjia.save(update_fields=['zhuangtai'])
shangjia.fengjin_yuanyin = ''
shangjia.save(update_fields=['zhuangtai', 'fengjin_yuanyin'])
write_xiugai_log(
yonghuid=yonghuid,
xiugaiid=kefu.user.Phone,
+15 -2
View File
@@ -233,6 +233,7 @@ class GetZuzhangListView(APIView):
'ketixian_jine': float(zu.ketixian_jine),
'yaoqing_zongshu': zu.yaoqing_zongshu,
'zhuangtai': zu.zhuangtai,
'fengjin_yuanyin': getattr(zu, 'fengjin_yuanyin', '') or '',
})
return Response({
@@ -312,6 +313,7 @@ class GetZuzhangDetailView(APIView):
'dianhua': '', # 组长表无电话字段?组长扩展表没有电话/微信,但前端可能需要,可从User关联?实际上组长表无电话字段,这里留空或从其他表获取
'wechat': '',
'zhuangtai': zuzhang.zhuangtai,
'fengjin_yuanyin': getattr(zuzhang, 'fengjin_yuanyin', '') or '',
'yaoqingma': zuzhang.yaoqingma,
'yaoqingren': '', # 组长表没有邀请人字段
'haibao_url': zuzhang.haibao_url or '',
@@ -461,11 +463,22 @@ class UpdateZuzhangView(APIView):
try:
zt = int(zhuangtai)
if zt in (0, 1):
yuanyin = (request.data.get('yuanyin') or request.data.get('fengjin_yuanyin') or '').strip()
if zt == 0 and zt != old_zhuangtai and not yuanyin:
return Response({'code': 400, 'msg': '封禁必须填写原因'})
zuzhang.zhuangtai = zt
if zt == 0:
if yuanyin:
zuzhang.fengjin_yuanyin = yuanyin[:200]
else:
zuzhang.fengjin_yuanyin = ''
if zt != old_zhuangtai:
zt_map = {0: '禁用', 1: '正常'}
base_changes.append(f'状态:{zt_map.get(old_zhuangtai, old_zhuangtai)}→{zt_map.get(zt, zt)}')
except:
reason_part = f',原因={yuanyin}' if (zt == 0 and yuanyin) else ''
base_changes.append(
f'状态:{zt_map.get(old_zhuangtai, old_zhuangtai)}→{zt_map.get(zt, zt)}{reason_part}'
)
except ValueError:
pass
if nickname:
if not boss: