'', 'shipping_money' => '', 'member_price' => '', 'score' => ['num' => '', 'money' => ''], 'pay_money' => '', 'give_score' => '', 'store_name' => '', 'logo_img' => '', 'is_show_wechat_video_number' => 0, 'wechat_video_number_id' => '', 'store_style' => 1, 'store_id' => 0, 'order_type' => '', 'share_title' => '', 'share_desc' => '', 'share_pic' => '', 'remaining_seconds'=>0 ]; $payment_trade_order_list = PaymentTradeOrder::lists(['where' => [ ['trade_id' => $trade_id], ['order_type'=>['order','cashier_order']] ] ]); if (empty($payment_trade_order_list)) { return $data; } $order_no_arr = array_column($payment_trade_order_list, 'order_no'); $original_goods_price = $shipping_money = $pay_money = $store_id = 0; $pre = $payment_trade_order_list[0]['order_no'][0]; switch ($pre) { case 's': $detail_ids = []; $store_order_list = StoreOrder::lists([ 'where' => [ ['order_no' => $order_no_arr], ['user_id' => $params['user_id']] ], 'with' => ['detail'] ]); $mall_id = 0; foreach ($store_order_list as $item) { $original_goods_price += $item['original_goods_price']; $shipping_money += $item['shipping_money']; $pay_money += $item['pay_money']; $store_id = $item['store_id']; $mall_id = $item['mall_id']; $detail_ids = array_merge($detail_ids, array_column($item['detail'], 'id')); } $store_order_marketing_list = StoreOrderMarketing::lists(['where' => [['order_detail_id' => $detail_ids]]]); $data['member_price'] = array_sum(array_column($store_order_marketing_list, 'member_price_deduct')); $score_num = $score_money = $give_score = 0; foreach ($store_order_marketing_list as $value) { $score_num += $value['deduct_score']; $give_score += $value['give_score']; $deduct_currency = json_decode($value['deduct_currency'], true); if (isset($deduct_currency['score'])) { $score_money += $deduct_currency['score']['money']; } } $data['score'] = [ 'num' => !empty($score_num) ? bcadd($score_num, 0, 2) : '', 'money' => !empty($score_money) ? bcadd($score_money, 0, 2) : '', ]; $data['give_score'] = !empty($give_score) ? bcadd($give_score, 0, 2) : ''; $data['order_type'] = 'order'; if($payment_trade_order_list[0]['is_pay']==OrderStatusEnum::NOT_PAY){ $order_auto_handle_time = \Yii::$app->services->setting->mall->get($mall_id, 'order.payment_expire_time'); if(empty($order_auto_handle_time)){ $order_auto_handle_time = 10; } $data['remaining_seconds'] = $order_auto_handle_time*60; } break; case 'C': $member_price = $score_num = $score_money = $give_score = 0; $store_cashier_order_list = StoreCashierOrder::lists([ 'where' => [ ['order_no' => $order_no_arr], ['user_id' => $params['user_id']] ], ]); foreach ($store_cashier_order_list as $item) { $store_id = $item['store_id']; $original_goods_price += $item['money']; $pay_money += $item['pay_money']; $extra = json_decode($item['extra'], true); $member_price += $extra['member_deduct_money'] ?? 0; $score_num += $extra['deduct_num_score'] ?? 0; $score_money += $extra['discount_money'] ?? 0; $give_score += $extra['give_score'] ?? 0; } $data['member_price'] = bcadd($member_price, 0, 2); $data['score'] = [ 'num' => bcadd($score_num, 0, 2), 'money' => bcadd($score_money, 0, 2) ]; $data['give_score'] = bcadd($give_score, 0, 2); $data['order_type'] = 'cashier_order'; break; } $store = Store::findOne(['id' => $store_id]); if (!empty($store)) { $data['store_name'] = $store['store_name']; $data['logo_img'] = $store['logo_img']; $data['is_show_wechat_video_number'] = $store['is_show_wechat_video_number']; $data['wechat_video_number_id'] = $store['wechat_video_number_id']; $data['share_title'] = $store['share_title']; $data['share_desc'] = $store['share_desc']; $data['share_pic'] = $store['share_pic']; } $data['original_goods_price'] = bcadd($original_goods_price, 0, 2); $data['shipping_money'] = bcadd($shipping_money, 0, 2); $data['pay_money'] = bcadd($pay_money, 0, 2); $data['store_id'] = $store_id; $decoration = \Yii::$app->services->setting->addons->get($this->mall_id, StoreEnum::ADDONS_NAME, 'decoration'); if(!empty($decoration['custom_store_style'])){ $data['store_style'] = $store['show_style']??1; }else{ $data['store_style'] = $decoration['default_store_style']??1; } return $data; } public function getCashierLog($params) { try { $where = [ ['mall_id' => $this->mall_id], ['store_id' => $this->store_id], ['pay_status' => 1], ['status' => StatusEnum::ENABLED], ]; if (!empty($params['keyword'])) { $user_list = User::lists(['where' => [['mall_id' => $this->mall_id], [ 'or', ['like', 'username', $params['keyword']], ['like', 'nickname', $params['keyword']], ['like', 'mobile', $params['keyword']], ['like', 'id', $params['keyword']], ]], 'select' => 'id']); $user_ids = array_column($user_list, 'id'); $where[] = ['in', 'user_id', $user_ids]; } if (!empty($params['order_no'])) $where[] = ['like', 'order_no', $params['order_no']]; if (!empty($params['start_time'])) $where[] = ['>=', 'pay_time', strtotime($params['start_time'])]; if (!empty($params['end_time'])) $where[] = ['<=', 'pay_time', strtotime($params['end_time'] . ' 23:59:59')]; $cash_params = [ 'where' => $where, 'order' => 'id desc', 'with' => ['user'], 'page' => $params['page'], 'limit' => $params['limit'], ]; $list = StoreCashierOrder::listPage($cash_params); if (!empty($list['list'])) { foreach ($list['list'] as &$item) { $item['pay_time'] = date('Y-m-d H:i:s', $item['pay_time']); } } return $list; } catch (\Exception $e) { throw new Exception($e->getMessage()); } } }