diff --git a/gongdan/services.py b/gongdan/services.py index e111ff7..e265c9e 100644 --- a/gongdan/services.py +++ b/gongdan/services.py @@ -156,8 +156,16 @@ def validate_type_refs(leixing, order_id=None, chongzhi_id=None, fadan_id=None, if not chongzhi_id: raise GongdanError('充值投诉请填写充值记录ID', 'need_chongzhi_id') from products.models import Czjilu - if not Czjilu.query.filter(dingdan_id=chongzhi_id).exists(): + from products.czjilu_types import CZJILU_PAID_STATUS + cz = Czjilu.query.filter(dingdan_id=chongzhi_id).first() + if not cz: raise GongdanError('充值记录不存在,请核对充值ID', 'chongzhi_not_found') + try: + z = int(cz.zhuangtai) if cz.zhuangtai is not None else None + except (TypeError, ValueError): + z = None + if z != CZJILU_PAID_STATUS: + raise GongdanError('仅已支付的充值单可投诉', 'chongzhi_not_paid') return None, chongzhi_id, None, None if leixing == TYPE_PENALTY: diff --git a/gongdan/views.py b/gongdan/views.py index a2b1c9d..8014d77 100644 --- a/gongdan/views.py +++ b/gongdan/views.py @@ -330,6 +330,15 @@ class ChongzhiRecordListView(APIView): leixing = request.data.get('leixing') if leixing not in (None, ''): qs = qs.filter(leixing=int(leixing)) + # 投诉选单:仅已支付;普通充值记录页不传此参数则展示全部状态 + only_paid = str( + request.data.get('only_paid') + or request.data.get('for_complaint') + or '' + ).lower() in ('1', 'true', 'yes') + if only_paid: + from products.czjilu_types import CZJILU_PAID_STATUS + qs = qs.filter(zhuangtai=CZJILU_PAID_STATUS) total = qs.count() start = max(page - 1, 0) * page_size type_map = {