jiaweiqi 3 роки тому
батько
коміт
69b330bd84
3 змінених файлів з 59 додано та 1 видалено
  1. 1 1
      apps/activity/models.py
  2. 0 0
      scripts/__init__.py
  3. 58 0
      scripts/auto_splict_account.py

+ 1 - 1
apps/activity/models.py

@@ -392,7 +392,7 @@ class Pay(models.Model):
             sp, spd, spr = SplitAccount._addnew(self.branch, order.id, order.rebate, order.recommend_member)
             order.splitaccount = sp
             order.save()
-            sp.splitAccount(app, spd, spr, self)
+            # sp.splitAccount(app, spd, spr, self)
 
 
 class Order(models.Model):

+ 0 - 0
scripts/__init__.py


+ 58 - 0
scripts/auto_splict_account.py

@@ -0,0 +1,58 @@
+# coding=utf-8
+
+import imp
+import os
+import sys
+import traceback
+import datetime
+
+import django
+from django.utils import timezone
+from django.db import transaction
+from django.db.models import Sum, Q
+
+def autoSplitAccount():
+    # 查询状态是未处理和处理中的分账明细进行分账处理(处理中就查询结果  未处理的就进行分账)
+    details = SplitAccountDetail.objects.filter(Q(status=SplitAccountDetail.DEFAULT) | Q(status=SplitAccountDetail.PENDING))
+    app = WechatApplet.objects.filter().first()
+    if not app:
+        return
+    for instance in details:
+        main = instance.main
+        if (not main) or (main.status == SplitAccount.FINISHED):
+            continue
+        order = Order.objects.filter(splitaccount=main).first()
+        if (not order) or (order.status != Order.FINISH) or (not order.recommend_member) or (order.rebate <= 0):
+            continue
+        pay = order.pay
+        if (not pay) or (pay.status != Pay.CONFIRM) or (pay.profit_sharing == 'N'):
+            continue
+        try:
+            main.handSplitAccont(instance, pay, app)
+        except:
+            traceback.print_exc()
+            continue
+
+def setup_django_env(path):
+    sys.path.insert(0, path)
+
+    f, filename, desc = imp.find_module('settings', [path])
+    imp.load_module('settings', f, filename, desc)
+    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "settings")
+    sys.path.append(os.path.abspath(os.path.join(path, os.path.pardir)))
+
+if __name__ == '__main__':
+    dirname, filename = os.path.split(os.path.abspath(sys.argv[0]))
+    setup_django_env(dirname+'/../carwin_activity')
+    django.setup()
+
+    from apps.activity.models import SplitAccount, SplitAccountDetail, Order, Pay
+    from apps.WechatApplet.models import WechatApplet
+
+    try:
+        print('start=======',timezone.now())
+        # with transaction.atomic():
+        autoSplitAccount()
+        print('end========', timezone.now())
+    except Exception as e:
+        traceback.print_exc()