jiaweiqi 3 years ago
parent
commit
caba83da7c
5 changed files with 91 additions and 20 deletions
  1. 4 0
      apps/activity/models.py
  2. 16 0
      apps/activity/serializers.py
  3. 1 0
      apps/activity/urls.py
  4. 30 0
      apps/activity/views.py
  5. 40 20
      uis/views/order/index.html

+ 4 - 0
apps/activity/models.py

@@ -145,6 +145,10 @@ class SplitAccount(models.Model):
                 spd.detail_no = item['detail_id']
                 spd.save()
 
+    def updateAccountSplit(self, spd, pay, app):
+        spc = SplitAccountFuc(app.authorizer_appid, app.agent_num, app.cert_serial_no, app.apiv3_key)
+        self.splictAccountQuery(spc, pay.transaction_id, self.no, spd)
+
     def splictAccountAddReceiver(self, split_account_func, spr):
         '''添加分账接收人'''
         if spr.status != SplitAccountReceiver.ADD:

+ 16 - 0
apps/activity/serializers.py

@@ -99,6 +99,7 @@ class OrderSerializer(serializers.ModelSerializer):
     create_time = serializers.DateTimeField(format='%Y-%m-%d %H:%M', read_only=True)
     amount = PriceShowCharField(read_only=True)
     rebate = PriceShowCharField(read_only=True)
+    split_button = serializers.SerializerMethodField()
 
     class Meta:
         model = Order
@@ -108,6 +109,21 @@ class OrderSerializer(serializers.ModelSerializer):
         if obj.delete:
             return u'是'
         return u'否'
+    
+    def get_split_button(self, obj):
+        if obj.recommend_member and obj.rebate > 0:
+            if obj.pay and obj.pay.status == Pay.CONFIRM and obj.pay.profit_sharing == "Y":
+                account_detail = SplitAccountDetail.objects.filter(main_id=obj.splitaccount_id).first()
+                if account_detail:
+                    if account_detail.status == SplitAccountDetail.PENDING:
+                        return '1'   # 显示 刷新分账结果按钮
+                    elif account_detail.status == SplitAccountDetail.CLOSED:
+                        return '2'   # 显示  分账按钮
+                    else:
+                        return ''
+                return ''
+            return ''
+        return ''
 
     def get_split_status_text(self, obj):
         if obj.status == Order.FINISH:

+ 1 - 0
apps/activity/urls.py

@@ -14,6 +14,7 @@ urlpatterns = (
 
     url(r'^order/data/$', order_list),
     url(r'^order/split_account/$', order_split_account),
+    url(r'^order/update_split/$', order_update_split),
 
     url(r'^coupon/data/$', coupon_list),
     url(r'^coupon/save/$', coupon_save),

+ 30 - 0
apps/activity/views.py

@@ -179,6 +179,36 @@ def order_split_account(request):
     return JSONResponse()
 
 
+@token_required
+@login_required()
+def order_update_split(request):
+    id = request.GET.get('id')
+
+    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.splitaccount:
+            raise CustomError(u'未找到该订单分账信息!')
+        sp = order.splitaccount
+        spd = SplitAccountDetail.objects.filter(main=sp).first()
+        if not spd:
+            raise CustomError(u'未找到相应的分账明细!')
+
+        with transaction.atomic():
+            order.splitaccount.updateAccountSplit(spd, order.pay, app)
+            BizLog.objects.addnew(request.user, BizLog.INSERT, u"刷新订单分账结果,id=%d" % order.id)
+    except CustomError as e:
+        return JSONError(e.get_error_msg())
+    except Exception as e:
+        traceback.print_exc()
+        return JSONError(u'刷新订单分账结果失败!')
+    return JSONResponse()
+
+
 @token_required
 @login_required()
 def coupon_list(request):

+ 40 - 20
uis/views/order/index.html

@@ -17,11 +17,21 @@
         <div class="layui-row layui-col-space15">
           <div class="layui-col-md12">
             <div class="LAY-btns" style="margin-bottom: 10px;">
-                <button class="layui-btn layui-btn-sm"  id="btn_split"><i class="layui-icon layui-icon-dollar"></i>分账</button>
               <button class="layui-btn layui-btn-sm" id="btn_query"><i class="layui-icon layui-icon-search"></i>查询</button>
             </div>
             <table class="layui-hide" id="datagrid" lay-filter="datagrid-operate"></table>
-
+            <script type="text/html" id="datagrid-operate-bar">
+                <div class="layui-btn-group">
+                    {{# if(d.split_button){ }}
+                    {{# if(d.split_button === '2'){ }}
+                  <a class="layui-btn layui-btn-xs"  lay-event="view_split">分账</a>
+                    {{# } }}
+                    {{# if(d.split_button === '1'){ }}
+                  <a class="layui-btn layui-btn-xs"  lay-event="view_update_split">刷新分账</a>
+                    {{# } }}
+                    {{# } }}
+                </div>
+            </script>
           </div>
         </div>
         </div>
@@ -108,6 +118,7 @@
         ,{field:'split_status_text', title:'分账状态', width:90}
         ,{field:'delete_text', title:'是否删除', width:100}
         ,{field:'create_time', title:'创建时间', width:180}
+        ,{width:90, align:'center', fixed: 'right', toolbar: '#datagrid-operate-bar'}
       ]]
       ,page: true
       ,height: 'full-104'
@@ -134,28 +145,37 @@
       }
     });
 
-    //分账
-    $('#btn_split').on('click', function(){
-        var data = utils.getSelectedRow('datagrid');
-         if(data == false){
-             layer.msg('请选择一条记录');
-             return false;
-         }
 
-         if (data.split_status_text !== '已关闭') {
+    //监听工具条
+    table.on('tool(datagrid-operate)', function(obj){
+      var data = obj.data;
+        if(obj.event === 'view_split'){
+
+            if (data.split_status_text !== '已关闭') {
               layer.msg('该订单当前状态不允许分账');
                 return false;
-         }
+            }
 
-          layer.confirm('确定要分账吗?', function (index) {
-             layer.close(index);
-             layui.admin.req({
-                 url: '/activity/order/split_account/?id=' + data.id
-                 , done: function (res) {
-                     table.reload('datagrid', {});
-                 }
-             });
-        });
+            layer.confirm('确定要对该订单分账吗?', function(index){
+                layer.close(index);
+                layui.admin.req({
+                    notice: true
+                    ,url: '/activity/order/split_account/?id=' + data.id
+                    ,type: 'post'
+                    ,done: function(res){
+                        table.reload('datagrid',{});
+                    }
+                });
+            });
+      } else if (obj.event === 'view_update_split'){
+            layui.admin.req({
+                url: '/activity/order/update_split/?id=' + data.id
+                , type: 'post'
+                , done: function (res) {
+                    table.reload('datagrid', {});
+                }
+            });
+        }
     });
 
     $('#btn_query').on('click', function(){