Jelajahi Sumber

收支明细表

gorden 5 bulan lalu
induk
melakukan
353b8e5774

+ 3 - 1
app/admin/controller/order/WholeController.php

@@ -4952,8 +4952,10 @@ class WholeController extends Curd
                     $this->insertBenefitPackage($groupId);
                 }
 
-                // 给上级提成
+                // 给上级提成-拆单
                 OrderService::splitOrderCommission($params);
+                // 入收支明细表
+//                OrderService::splitOrderStatisticsInOut($params);
 
                 return json_success('success');
             }

+ 13 - 0
app/admin/service/order/OrderService.php

@@ -942,6 +942,19 @@ class OrderService
         }
     }
 
+    public static function splitOrderStatisticsInOut($params)
+    {
+        $orders = Order::where('order_groupby', $params['orderGroupId'])->get()->toArray();
+        if (!empty($orders)) {
+            foreach ($orders as $orderItem) {
+                $params['member_id'] = $orderItem['join_order_member_id'];
+                $params['orderId'] = $orderItem['order_id'];
+                $params['inout_category'] = '标准订单收入';
+                Event::dispatch('statistics.inout.in', $params);
+            }
+        }
+    }
+
 
     public static $couponClassify = [
         'wipe' => '抹零',

+ 115 - 3
app/event/statistics/InOutEvent.php

@@ -2,11 +2,101 @@
 
 namespace app\event\statistics;
 
+use app\model\DataInout;
+use app\model\Order;
+use app\model\OrderSheet;
+use app\model\PayDetail;
+use app\model\SysDept;
+use support\Log;
+
 class InOutEvent
 {
-    public function dataIn()
+    /*
+     * 	{"label": "标准订单收入", "value": "标准订单收入"},
+        {"label": "餐饮订单收入", "value": "餐饮订单收入"},
+        {"label": "购买康养城VIP套餐包收入", "value": "购买康养城VIP套餐包收入"},
+        {"label": "购买会员合伙人收入", "value": "购买会员合伙人收入"},
+        {"label": "购买康养推荐官收入", "value": "购买康养推荐官收入"},
+        {"label": "购买组合包收入", "value": "购买组合包收入"},
+        {"label": "会员充值订单收入", "value": "会员充值订单收入"},
+        {"label": "挂账订单结算收入", "value": "挂账订单结算收入"},
+        {"label": "购买储值卡订单收入", "value": "购买储值卡订单收入"},
+        {"label": "佣金提现", "value": "佣金提现"},
+        {"label": "退款", "value": "退款"}
+     */
+
+    public function dataIn($params)
     {
+        try {
+            $order = Order::where('order_id', $params['orderId'])->first();
+            $sheets = OrderSheet::with([
+                'goods' => function ($query) {
+                    $query->select('goods_id', 'goods_name', 'goods_classify');
+                }
+            ])->where('join_sheet_order_id', $params['orderId'])
+                ->get()
+                ->toArray();
+            $payDetails = PayDetail::where('join_pay_order_id', $order->order_groupby)
+                ->where('pay_status', 'SUCCESS')
+                ->get()
+                ->toArray();
+
+            $data = [
+                'dept_id' => 0,
+                'member_id' => $order->join_order_member_id,
+                'inout_classify' => 'IN',
+                'inout_category' => $params['inout_category'] ?? '标准订单收入',
+
+            ];
+            // 部门id
+            if (!empty($order->order_config_json)) {
+                $orderConfigJson = json_decode($order->order_config_json, true);
+                if (!empty($orderConfigJson['dept'])) {
+                    $data['dept_id'] = $orderConfigJson['dept'];
+                } elseif (!empty($orderConfigJson['premises'])) {
+                    $data['dept_id'] = SysDept::where('dept_name', $orderConfigJson['premises'])->value('dept_id');
+                }
+            }
+            $inoutObjectJson = [];
+            // 产品
+            foreach ($sheets as $sheet) {
+                $inoutObjectJson['goods'][] = [
+                    'goods_id' => $sheet['goods']['goods_id'] ?? '',
+                    'goods_name' => $sheet['goods']['goods_name'] ?? ''
+                ];
+                $data['inout_name'][] = $sheet['goods']['goods_name'] ?? '';
+                if (!isset($inoutObjectJson['order'])) {
+                    $inoutObjectJson['order'][$params['orderId']] = [
+                        'pay' => $order->order_amount_pay,
+                        'classify' => $order->order_classify,
+                        'discount' => $order->order_discount_json ?? json_decode($order->order_discount_json)
+                    ];
+                }
+                $inoutObjectJson['order'][$params['orderId']]['goods'][] = [
+                    'goods_id' => $sheet['goods']['goods_id'] ?? '',
+                    'goods_name' => $sheet['goods']['goods_name'] ?? '',
+                    'order_sheet_num' => $sheet['order_sheet_amount'],
+                    'order_sheet_pay' => $sheet['order_sheet_pay']
+                ];
+                $inoutObjectJson['classify'][] = $sheet['goods']['goods_classify'] ?? '';
+            }
+            $data['inout_object_json'] = $inoutObjectJson;
+            $data['inout_name'] = implode(',',$data['inout_name']);
 
+            foreach ($payDetails as $payDetail) {
+                if (in_array($payDetail['pay_prepayid'],['WXPAY','ALIPAY','OFFLINE_WXPAY','OFFLINE_ALIPAY','MONEY'])){
+                    $data['inout_attr'] = 'MONEY';
+                }else{
+                    $data['inout_attr'] = 'ACCOUNT';
+                }
+
+                $this->dataSave($data);
+            }
+
+        } catch (\Exception $e) {
+            _syslog("统计", '收支明细统计失败', ['msg' => $e->getMessage()]);
+            Log::error("收支明细统计失败", ['msg' => $e->getMessage()]);
+        }
     }
 
     public function dataOut()
@@ -14,8 +104,30 @@ class InOutEvent
 
     }
 
-    public function dataSave()
+    public function dataSave($data)
     {
-
+        DataInout::insert([
+            'join_data_inout_dept_id' => $data['dept_id'],
+            'join_data_inout_member_id' => $data['member_id'],
+            'join_data_inout_object_json' => $data['inout_object_json'],
+            'data_inout_is_valid' => 'Y',
+            'data_inout_valid_date' => date('Y-m-d'),
+            'data_inout_valid_time' => date('Y-m-d H:i:s'),
+            'data_inout_status' => 'VALID',
+            'data_inout_attr' => $data['inout_attr'],
+            'data_inout_classify' => $data['inout_classify'],
+            'data_inout_category' => $data['inout_category'],
+            'data_inout_name' => $data['inout_name'],
+            'data_inout_amount' => '',
+            'data_inout_count' => '',
+            'data_inout_json' => '',
+            'data_inout_pay_type' => '',
+            'data_inout_pay_json' => '',
+            'data_inout_process_json' => '',
+            'data_inout_occurtime' => '',
+            'data_inout_remark' => '',
+            'data_inout_extend_json' => '',
+            'data_inout_addtimes' => time()
+        ]);
     }
 }

+ 21 - 0
app/model/DataInout.php

@@ -0,0 +1,21 @@
+<?php
+
+namespace app\model;
+
+use support\Model;
+
+class DataInout extends Model
+{
+    protected $table = 'data_inout';
+
+    protected $primaryKey = 'data_inout_id';
+
+    protected $dateFormat = 'U';
+
+    const CREATED_AT = 'data_inout_addtimes';
+
+    public function serializeDate(\DateTimeInterface $date)
+    {
+        return $date->format('Y-m-d H:i:s');
+    }
+}

+ 3 - 0
config/event.php

@@ -33,5 +33,8 @@ return [
     ],
     'commission.order' => [
         [\app\event\order\CommissionEvent::class, 'order']
+    ],
+    'statistics.inout.in' => [
+        [\app\event\statistics\InOutEvent::class, 'dataIn']
     ]
 ];