@@ -317,6 +317,7 @@ class KefuGetDashouDetailView(APIView):
|
||||
'zaixianzhuangtai': dashou.zaixianzhuangtai,
|
||||
'zhanghaozhuangtai': dashou.zhanghaozhuangtai,
|
||||
'zhuangtai': dashou.zhuangtai,
|
||||
'fengjin_yuanyin': getattr(dashou, 'fengjin_yuanyin', '') or '',
|
||||
'nicheng': dashou.nicheng or '',
|
||||
'chenghao': dashou.chenghao or '',
|
||||
'dianhua': dashou.dianhua or '',
|
||||
@@ -585,20 +586,33 @@ class KefuUpdateDashouView(APIView):
|
||||
new_status = int(value)
|
||||
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()
|
||||
dashou_profile.zhanghaozhuangtai = new_status
|
||||
dashou_profile.save()
|
||||
if new_status == 0:
|
||||
dashou_profile.fengjin_yuanyin = yuanyin[:200]
|
||||
else:
|
||||
dashou_profile.fengjin_yuanyin = ''
|
||||
dashou_profile.save(update_fields=['zhanghaozhuangtai', 'fengjin_yuanyin'])
|
||||
status_label = '正常' if new_status == 1 else '封禁'
|
||||
old_label = '正常' if before['zhanghaozhuangtai'] == 1 else '封禁'
|
||||
reason_part = f',原因={yuanyin}' if (new_status == 0 and yuanyin) else ''
|
||||
write_xiugai_log(
|
||||
yonghuid=dashou_id,
|
||||
xiugaiid=kefu.user.Phone,
|
||||
leixing=XIUGAI_LEIXING_DASHOU,
|
||||
qitashuoming=(
|
||||
f'【后台】修改打手账号状态:{old_label} → {status_label},'
|
||||
f'【后台】修改打手账号状态:{old_label} → {status_label}{reason_part},'
|
||||
f'打手ID={dashou_id},操作人={kefu.user.Phone}'
|
||||
),
|
||||
)
|
||||
return Response({'code': 0, 'msg': '修改账号状态成功', 'data': {'new_zhanghaozhuangtai': new_status}})
|
||||
return Response({
|
||||
'code': 0,
|
||||
'msg': '修改账号状态成功',
|
||||
'data': {
|
||||
'new_zhanghaozhuangtai': new_status,
|
||||
'fengjin_yuanyin': dashou_profile.fengjin_yuanyin or '',
|
||||
},
|
||||
})
|
||||
|
||||
elif caozuo == 'gai_zaixianzhuangtai':
|
||||
if '001ee' not in permissions:
|
||||
|
||||
33
users/migrations/0008_fengjin_yuanyin.py
Normal file
33
users/migrations/0008_fengjin_yuanyin.py
Normal file
@@ -0,0 +1,33 @@
|
||||
# Generated manually for ban reason fields
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('users', '0007_role_fund_freeze_fields'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='userdashou',
|
||||
name='fengjin_yuanyin',
|
||||
field=models.CharField(blank=True, default='', max_length=200, verbose_name='封禁原因'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='userguanshi',
|
||||
name='fengjin_yuanyin',
|
||||
field=models.CharField(blank=True, default='', max_length=200, verbose_name='封禁原因'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='userzuzhang',
|
||||
name='fengjin_yuanyin',
|
||||
field=models.CharField(blank=True, default='', max_length=200, verbose_name='封禁原因'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='usershangjia',
|
||||
name='fengjin_yuanyin',
|
||||
field=models.CharField(blank=True, default='', max_length=200, verbose_name='封禁原因'),
|
||||
),
|
||||
]
|
||||
@@ -143,6 +143,7 @@ class UserDashou(QModel):
|
||||
zhuangtai = models.IntegerField(default=1, verbose_name='打手状态')
|
||||
zaixianzhuangtai = models.IntegerField(default=1, verbose_name='打手在线状态')
|
||||
zhanghaozhuangtai = models.IntegerField(default=1, verbose_name='打手账号状态')
|
||||
fengjin_yuanyin = models.CharField(max_length=200, blank=True, default='', verbose_name='封禁原因')
|
||||
jieshao = models.TextField(null=True, verbose_name='打手介绍')
|
||||
jiedanzongliang = models.IntegerField(default=0, verbose_name='接单总量')
|
||||
chengjiaozongliang = models.IntegerField(default=0, verbose_name='成交单总量')
|
||||
@@ -192,6 +193,7 @@ class UserShangjia(QModel):
|
||||
nicheng = models.CharField(max_length=50, unique=True, db_index=True, verbose_name='商家昵称')
|
||||
zhuangtai = models.IntegerField(choices=[(0, '待审核'), (1, '正常'), (2, '禁用')], default=1,
|
||||
verbose_name='商家状态')
|
||||
fengjin_yuanyin = models.CharField(max_length=200, blank=True, default='', verbose_name='封禁原因')
|
||||
dianhua = models.CharField(max_length=20,null=True,verbose_name='商家电话')
|
||||
wechat = models.CharField(max_length=50, null=True, verbose_name='商家微信号')
|
||||
fabu = models.IntegerField(default=0, verbose_name='发布订单总数量')
|
||||
@@ -226,6 +228,7 @@ class UserGuanshi(QModel):
|
||||
wechat = models.CharField(max_length=50,null=True, verbose_name='管事微信号')
|
||||
yaogingshuliang = models.IntegerField(default=0, verbose_name='邀请打手总数')
|
||||
zhuangtai = models.IntegerField(choices=[(0, '禁用'), (1, '正常')], default=1, verbose_name='管事状态')
|
||||
fengjin_yuanyin = models.CharField(max_length=200, blank=True, default='', verbose_name='封禁原因')
|
||||
jinrichongzhi = models.IntegerField(default=0, verbose_name='今日充值打手数量')
|
||||
jinyuechongzhi = models.IntegerField(default=0, verbose_name='今月充值打手数量')
|
||||
chongzhifenrun = models.DecimalField(max_digits=12, decimal_places=2, default=0.00, verbose_name='充值分佣总额')
|
||||
@@ -293,6 +296,7 @@ class UserZuzhang(QModel):
|
||||
jinyue_fenyong = models.DecimalField(max_digits=10, decimal_places=2, default=0.00, verbose_name='今月分佣(元)')
|
||||
# 账号状态
|
||||
zhuangtai = models.IntegerField(choices=[(0, '禁用'), (1, '正常')], default=1, verbose_name='账号状态')
|
||||
fengjin_yuanyin = models.CharField(max_length=200, blank=True, default='', verbose_name='封禁原因')
|
||||
# 推广海报相对URL
|
||||
haibao_url = models.CharField(max_length=500, null=True, blank=True, verbose_name='推广海报相对URL')
|
||||
# 今日提现
|
||||
|
||||
@@ -1897,6 +1897,9 @@ class ZuzhangXinxiView(APIView):
|
||||
'ketixian': str(zuzhang.ketixian_jine),
|
||||
'dongjie_yue': str(getattr(zuzhang, 'dongjie_yue', 0) or 0),
|
||||
'guanshiCount': guanshi_count,
|
||||
'fenhongZonge': str(zuzhang.fenyong_zonge)
|
||||
'fenhongZonge': str(zuzhang.fenyong_zonge),
|
||||
'zhuangtai': zuzhang.zhuangtai,
|
||||
'zuzhangstatus': 1 if int(getattr(zuzhang, 'zhuangtai', 0) or 0) == 1 else 0,
|
||||
'fengjin_yuanyin': getattr(zuzhang, 'fengjin_yuanyin', '') or '',
|
||||
}
|
||||
return Response({'code': 200, 'msg': 'success', 'data': data})
|
||||
|
||||
@@ -403,6 +403,7 @@ class DashouXinxiAPIView(APIView):
|
||||
data = {
|
||||
'dashounicheng': dashou_profile.nicheng or '',
|
||||
'zhanghaostatus': dashou_profile.zhanghaozhuangtai,
|
||||
'fengjin_yuanyin': getattr(dashou_profile, 'fengjin_yuanyin', '') or '',
|
||||
'zaixianzhuangtai': dashou_profile.zaixianzhuangtai,
|
||||
'dashouzhuangtai': dashou_profile.zhuangtai,
|
||||
'yongjin': str(dashou_profile.yue) if dashou_profile.yue is not None else '0.00',
|
||||
@@ -416,6 +417,29 @@ class DashouXinxiAPIView(APIView):
|
||||
'chenghao': dashou_profile.chenghao or '',
|
||||
}
|
||||
|
||||
# 身份状态:下拉刷新可即时更新入口(仅正常态为 1)
|
||||
try:
|
||||
gs = UserGuanshi.query.filter(user=current_user).first()
|
||||
data['guanshistatus'] = 1 if gs and int(getattr(gs, 'zhuangtai', 0) or 0) == 1 else 0
|
||||
data['guanshi_fengjin_yuanyin'] = (getattr(gs, 'fengjin_yuanyin', '') or '') if gs else ''
|
||||
except Exception:
|
||||
data['guanshistatus'] = 0
|
||||
data['guanshi_fengjin_yuanyin'] = ''
|
||||
try:
|
||||
zz = UserZuzhang.query.filter(user=current_user).first()
|
||||
data['zuzhangstatus'] = 1 if zz and int(getattr(zz, 'zhuangtai', 0) or 0) == 1 else 0
|
||||
data['zuzhang_fengjin_yuanyin'] = (getattr(zz, 'fengjin_yuanyin', '') or '') if zz else ''
|
||||
except Exception:
|
||||
data['zuzhangstatus'] = 0
|
||||
data['zuzhang_fengjin_yuanyin'] = ''
|
||||
try:
|
||||
sj = UserShangjia.query.filter(user=current_user).first()
|
||||
data['shangjiastatus'] = 1 if sj and int(getattr(sj, 'zhuangtai', 0) or 0) == 1 else 0
|
||||
data['shangjia_fengjin_yuanyin'] = (getattr(sj, 'fengjin_yuanyin', '') or '') if sj else ''
|
||||
except Exception:
|
||||
data['shangjiastatus'] = 0
|
||||
data['shangjia_fengjin_yuanyin'] = ''
|
||||
|
||||
# 4. 查询会员信息(每次请求同步权益 + clumber,体验=正式)
|
||||
try:
|
||||
from jituan.services.huiyuan_bundle import refresh_grab_pool_membership_state
|
||||
@@ -665,6 +689,7 @@ class GuanshiXinxiView(APIView):
|
||||
'msg': '获取成功',
|
||||
'data': {
|
||||
'gszhstatus': guanshi_profile.zhuangtai, # 管事账号状态
|
||||
'fengjin_yuanyin': getattr(guanshi_profile, 'fengjin_yuanyin', '') or '',
|
||||
'yaoqingzongshu': guanshi_profile.yaogingshuliang, # 邀请打手总数
|
||||
'fenyongzonge': float(guanshi_profile.chongzhifenrun), # 充值分佣总额
|
||||
'fenyongtixian': float(guanshi_profile.yue), # 可提现余额
|
||||
@@ -719,6 +744,7 @@ class ShangJiaXinXiView(APIView):
|
||||
response_data = {
|
||||
'nicheng': shangjia.nicheng or '',
|
||||
'sjzhzhuangtai': shangjia.zhuangtai, # 商家账号状态
|
||||
'fengjin_yuanyin': getattr(shangjia, 'fengjin_yuanyin', '') or '',
|
||||
'fadanzong': shangjia.fabu, # 发单总量(累计)
|
||||
'fabu': shangjia.fabu,
|
||||
'tuikuanzong': shangjia.tuikuan, # 退款总量(累计)
|
||||
|
||||
Reference in New Issue
Block a user