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) ->whereJsonContains('join_pay_object_json->order_id',$params['orderId']) ->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'] = json_encode($inoutObjectJson); $data['inout_name'] = implode(',', $data['inout_name']); $payJson = [ 'trade'=>'', 'if_union' => count($payDetails) > 1 ? 'Y' : 'N', 'union_order_id' => count($payDetails) > 1 ? $params['orderId'] : '' ]; 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'; } $data['inout_amount'] = $payDetail['pay_amount']; $prepayId = explode('-', $payDetail['pay_prepayid']); if (count($prepayId) == 1) { $data['pay_type'] = $payDetail['pay_prepayid']; } elseif (count($prepayId) > 1) { $data['pay_type'] = $prepayId[1]; } if (!empty($payDetail['pay_json_response'])) { $payJsonResponse = json_decode($payDetail['pay_json_response'], true); if (isset($payJsonResponse['transaction_id'])){ $payJson['trade'] = $payJsonResponse['transaction_id']; }elseif (isset($payJsonResponse['trade_no'])){ $payJson['trade'] = $payJsonResponse['trade_no']; } } $data['pay_json'] = json_encode($payJson); $this->dataSave($data); } } catch (\Exception $e) { _syslog("统计", '收支明细统计失败', ['msg' => $e->getMessage()]); Log::error("收支明细统计失败", ['msg' => $e->getMessage()]); } } public function dataOut() { } 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_amount'], 'data_inout_count' => 0, 'data_inout_json' => '[]', 'data_inout_pay_type' => $data['pay_type'] ?? '', 'data_inout_pay_json' => $data['pay_json'], 'data_inout_process_json' => '[]', 'data_inout_occurtime' => date('Y-m-d H:i:s'), 'data_inout_remark' => '', 'data_inout_extend_json' => '[]', 'data_inout_addtimes' => time() ]); } }