91 lines
3.3 KiB
Python
91 lines
3.3 KiB
Python
"""后台 — 提现冻结配置/解冻接口"""
|
||
import logging
|
||
|
||
from django.db import transaction
|
||
from rest_framework.parsers import JSONParser
|
||
from rest_framework.response import Response
|
||
from rest_framework.views import APIView
|
||
|
||
from yonghu.freeze_service import (
|
||
FREEZE_LEIXING_SET,
|
||
admin_unfreeze_balance,
|
||
get_public_freeze_settings,
|
||
get_user_freeze_info,
|
||
save_public_freeze_settings,
|
||
save_user_freeze_settings,
|
||
)
|
||
from yonghu.models import UserMain
|
||
|
||
from .view import verify_kefu_permission
|
||
|
||
logger = logging.getLogger(__name__)
|
||
|
||
_WITHDRAW_PERMS = ('5500a', '5500b', '5500c')
|
||
|
||
|
||
def _check_withdraw_perm(permissions):
|
||
return any(p in permissions for p in _WITHDRAW_PERMS)
|
||
|
||
|
||
class DongjieUserConfigView(APIView):
|
||
"""
|
||
用户单独冻结配置 / 解冻(打手佣金1、管事2、押金5、商家6 共用)
|
||
GET POST /houtai/hqdjdongjie
|
||
"""
|
||
permission_classes = []
|
||
parser_classes = [JSONParser]
|
||
|
||
def post(self, request):
|
||
username = (request.data.get('username') or '').strip()
|
||
action = (request.data.get('action') or 'get').strip()
|
||
|
||
kefu, permissions = verify_kefu_permission(request, username)
|
||
if kefu is None:
|
||
return permissions
|
||
if not _check_withdraw_perm(permissions):
|
||
return Response({'code': 403, 'msg': '无权限操作冻结配置'})
|
||
|
||
yonghuid = (request.data.get('yonghuid') or '').strip()
|
||
leixing_raw = request.data.get('leixing')
|
||
try:
|
||
leixing = int(leixing_raw)
|
||
except (TypeError, ValueError):
|
||
return Response({'code': 400, 'msg': 'leixing 无效'})
|
||
if leixing not in FREEZE_LEIXING_SET:
|
||
return Response({'code': 400, 'msg': '该提现类型不支持冻结配置'})
|
||
|
||
try:
|
||
user_main = UserMain.objects.get(yonghuid=yonghuid)
|
||
except UserMain.DoesNotExist:
|
||
return Response({'code': 404, 'msg': '用户不存在'})
|
||
|
||
if action == 'get':
|
||
return Response({'code': 0, 'data': get_user_freeze_info(user_main, leixing)})
|
||
|
||
if action == 'save':
|
||
try:
|
||
with transaction.atomic():
|
||
data = save_user_freeze_settings(user_main, leixing, request.data)
|
||
return Response({'code': 0, 'msg': '保存成功', 'data': data})
|
||
except ValueError as e:
|
||
return Response({'code': 400, 'msg': str(e)})
|
||
|
||
if action == 'unfreeze':
|
||
jine = request.data.get('jiedong_jine') or request.data.get('jine')
|
||
beizhu = (request.data.get('beizhu') or '').strip()
|
||
if jine is None:
|
||
return Response({'code': 400, 'msg': '请填写解冻金额'})
|
||
try:
|
||
with transaction.atomic():
|
||
new_balance = admin_unfreeze_balance(
|
||
user_main, leixing, jine,
|
||
operator_id=username, beizhu=beizhu,
|
||
)
|
||
info = get_user_freeze_info(user_main, leixing)
|
||
info['balance'] = str(new_balance)
|
||
return Response({'code': 0, 'msg': '解冻成功', 'data': info})
|
||
except ValueError as e:
|
||
return Response({'code': 400, 'msg': str(e)})
|
||
|
||
return Response({'code': 400, 'msg': 'action 无效,支持 get/save/unfreeze'})
|