jiaweiqi %!s(int64=3) %!d(string=hai) anos
pai
achega
ed08376468

+ 5 - 4
apps/activity/models.py

@@ -393,8 +393,8 @@ class Pay(models.Model):
 
     def split_account(self, app):
         order = Order.objects.filter(pay=self).first()
-        if order and self.status == Pay.CONFIRM and self.profit_sharing == "Y":
-            sp, spd, spr = SplitAccount._addnew(self.branch, self.id, self.rebate, self.recommend_member)
+        if order and order.rebate > 0 and order.recommend_member and self.status == Pay.CONFIRM and self.profit_sharing == "Y":
+            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)
@@ -420,7 +420,7 @@ class Order(models.Model):
     tel = models.CharField(max_length=100, verbose_name=u"电话", null=True, blank=True)
     number = models.CharField(max_length=50, verbose_name=u"车牌号", null=True, blank=True)
     name = models.CharField(max_length=50, verbose_name=u"姓名", null=True, blank=True)
-    recommend_member = models.ForeignKey(Customer, verbose_name=u"推荐人", related_name='recommend_member_ref_customer', on_delete=models.PROTECT, null=True, blank=True, editable=False)
+    recommend_member = models.ForeignKey(Customer, verbose_name=u"推荐人", related_name='recommend_member_ref_customer', on_delete=models.PROTECT, null=True, blank=True)
     rebate = models.BigIntegerField(verbose_name=u"返利", default=0)  # 单位分
     create_time = models.DateTimeField(verbose_name=u"添加时间", auto_now_add=True, editable=False)
     delete = models.BooleanField(verbose_name=u"删除", default=False)
@@ -441,7 +441,8 @@ class Order(models.Model):
             total_fee = checkRexponse.orderquery(pay_no)
             if int(total_fee) == int(self.amount):
                 wechatpay = WechatPay(app.authorizer_appid, app.agent_num, app.agent_key)
-                data = wechatpay.unifiedOrder(openid, pay_no, self.amount, self.pay.profit_sharing)
+                wechatpay.unifiedOrder(pay_no, self.amount, openid, self.pay.profit_sharing)
+                data = wechatpay.getAppString()
                 return data
             self.pay.payClosed()
 

+ 17 - 11
apps/activity/views.py

@@ -146,22 +146,28 @@ def order_split_account(request):
 
     try:
         order = Order.objects.filter(id=id).first()
+        app = WechatApplet.objects.filter().first()
+        if not app:
+            raise CustomError(u'未设置小程序信息!')
         if not order:
             raise CustomError(u'未找到相应的订单')
         if not order.pay or order.pay.status != Pay.CONFIRM:
             raise CustomError(u'该订单尚未支付,无法分账!')
-        if not order.splitaccount:
-            raise CustomError(u'该订单不需要分账')
-        sp = order.splitaccount
-        spd = SplitAccountDetail.objects.filter(main=sp).first()
-        if not spd:
-            raise CustomError(u'未找到相应的分账明细!')
-        if spd.status == SplitAccountDetail.SUCCESS:
-            raise CustomError(u'该订单已分账,禁止重复申请!')
-        app = WechatApplet.objects.filter().first()
-        if not app:
-            raise CustomError(u'未设置小程序信息!')
+
         with transaction.atomic():
+            if not order.splitaccount:
+                if (order.rebate <= 0) or (not order.recommend_member) or (order.pay.profit_sharing == "N"):
+                    raise CustomError(u'该订单无需分账!')
+                sp, spd, spr = SplitAccount._addnew(order.branch, order.id, order.rebate, order.recommend_member)
+                order.splitaccount = sp
+                order.save()
+            sp = order.splitaccount
+            spd = SplitAccountDetail.objects.filter(main=sp).first()
+            if not spd:
+                raise CustomError(u'未找到相应的分账明细!')
+            if spd.status == SplitAccountDetail.SUCCESS:
+                raise CustomError(u'该订单已分账,禁止重复申请!')
+
             order.splitaccount.handSplitAccont(spd, order.pay, app)
             BizLog.objects.addnew(request.user, BizLog.INSERT, u"订单申请分账,id=%d" % order.id)
     except CustomError as e:

+ 4 - 4
apps/customer/order/serializers.py

@@ -25,11 +25,15 @@ class ActivityOrderSerializer(serializers.ModelSerializer):
 
 class OrderSerializer(serializers.ModelSerializer):
     activity_name = serializers.CharField(source='activity.title', read_only=True)
+    show_amount = serializers.SerializerMethodField()
 
     class Meta:
         model = Order
         fields = '__all__'
 
+    def get_show_amount(self, obj):
+        return Formater.formatPriceShow(obj.amount)
+
     def validate(self, attrs):
         attrs['member'] = self.context['request'].customer
         if 'activity' in attrs and attrs['activity']:
@@ -47,10 +51,6 @@ class OrderSerializer(serializers.ModelSerializer):
                 if item == u'车型':
                     if ('model' not in attrs) or (not attrs['model']):
                         raise CustomError(u'请输入车型')
-        if 'customer_id' in attrs and attrs['customer_id']:
-            recommend_member = Customer.objects.filter(id=attrs['customer_id']).first(0)
-            if recommend_member:
-                attrs['recommend_member'] = recommend_member
         return attrs
 
     def create(self, validated_data):

+ 1 - 0
carwin_activity/settings.py

@@ -51,6 +51,7 @@ INSTALLED_APPS = [
     'rest_framework_jwt',
     'django_filters',
 
+    'apps.api',
     'apps.account',
     'apps.dashboard',
     'apps.foundation',

+ 1 - 0
carwin_activity/urls.py

@@ -22,6 +22,7 @@ from apps.dashboard.views import index
 
 urlpatterns = [
     url(r'^$', index),
+    url(r'^api/', include('apps.api.urls')),
     url(r'^account/', include('apps.account.urls')),
     url(r'^activity/', include('apps.activity.urls')),
     url(r'^customer/', include('apps.customer.urls')),