diff --git a/yonghu/tixian_shenhe_services.py b/yonghu/tixian_shenhe_services.py index 47d34da..ed8f41b 100644 --- a/yonghu/tixian_shenhe_services.py +++ b/yonghu/tixian_shenhe_services.py @@ -849,6 +849,53 @@ def refund_manual_tixianjilu(user_main, tixian): refund_balance(user_main, tixian.leixing, amount) +def record_manual_withdraw_success_stats(user_main, tixian): + """ + 手动打款同意时累加每日限额统计(须在 transaction.atomic 内)。 + - 平台 TixianRiTongji:按实际到账 shijidaozhang(tixian.jine) + - 个人今日已提:按申请扣款 shenqing_jine(打手/管事/组长) + """ + from houtai.models import TixianRiTongji + + leixing = tixian.leixing + shenqing_jine = get_tixianjilu_refund_amount(tixian) + shijidaozhang = decimal.Decimal(str(tixian.jine or 0)) + today = date.today() + + platform_stat, _ = TixianRiTongji.objects.select_for_update().get_or_create( + riqi=today, + leixing=leixing, + defaults={'total_amount': decimal.Decimal('0.00')}, + ) + platform_stat.total_amount += shijidaozhang + platform_stat.save(update_fields=['total_amount']) + + if leixing == 1: + dashou = UserDashou.objects.select_for_update().get(user=user_main) + if dashou.last_tixian_date != today: + dashou.jinritixian_jine = decimal.Decimal('0.00') + dashou.last_tixian_date = today + dashou.jinritixian_jine += shenqing_jine + dashou.save(update_fields=['jinritixian_jine', 'last_tixian_date']) + elif leixing == 2: + guanshi = UserGuanshi.objects.select_for_update().get(user=user_main) + if guanshi.last_tixian_date != today: + guanshi.jinritixian_jine = decimal.Decimal('0.00') + guanshi.last_tixian_date = today + guanshi.jinritixian_jine += shenqing_jine + guanshi.save(update_fields=['jinritixian_jine', 'last_tixian_date']) + elif leixing == 3: + zuzhang = UserZuzhang.objects.select_for_update().get(user=user_main) + if zuzhang.last_tixian_time and zuzhang.last_tixian_time.date() != today: + zuzhang.jinri_tixian = decimal.Decimal('0.00') + elif not zuzhang.last_tixian_time: + zuzhang.jinri_tixian = decimal.Decimal('0.00') + zuzhang.jinri_tixian += shenqing_jine + zuzhang.last_tixian_time = timezone.now() + zuzhang.save(update_fields=['jinri_tixian', 'last_tixian_time']) + + +def refund_balance(user_main, leixing, jine): """审核驳回时退还申请扣款额 shenqing_jine(须在 transaction.atomic 内)""" if leixing == 1: dashou = UserDashou.objects.select_for_update().get(user=user_main) diff --git a/yonghu/views.py b/yonghu/views.py index a46a5f6..80fc63e 100644 --- a/yonghu/views.py +++ b/yonghu/views.py @@ -5761,17 +5761,16 @@ class AdtixianqkView(APIView): # 🟢 新增:如果同意提现(result=2),更新收支记录表 if result == 2: try: - # 查询收支记录表,id=1的记录 + tixian_jine = withdrawal.jine szjilu_record = Szjilu.objects.get(id=1) from dingdan.utils import update_daily_payout + from yonghu.tixian_shenhe_services import record_manual_withdraw_success_stats update_daily_payout(tixian_jine) + user_main = UserMain.objects.get(yonghuid=withdrawal.yonghuid) + record_manual_withdraw_success_stats(user_main, withdrawal) - # 获取提现金额 - tixian_jine = withdrawal.jine # 假设提现记录模型中有jine字段 - - # 更新收支记录 - szjilu_record.zongsy -= tixian_jine # 总收益减去提现金额 + szjilu_record.zongsy -= tixian_jine szjilu_record.zongzc += tixian_jine # 总支出加上提现金额 szjilu_record.jrzc += tixian_jine # 今日支出加上提现金额 szjilu_record.update_time = timezone.now() @@ -12135,7 +12134,9 @@ class KefuWithdrawActionView(APIView): tixian.zhuangtai = 2 try: from dingdan.utils import update_daily_payout + from .tixian_shenhe_services import record_manual_withdraw_success_stats update_daily_payout(tixian.jine) + record_manual_withdraw_success_stats(user, tixian) from peizhi.models import Szjilu szjilu, _ = Szjilu.objects.get_or_create(id=1) szjilu.zongsy -= tixian.jine