| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190 |
- <?php
- namespace addons\Store\common\services;
- use addons\Store\common\enums\StoreEnum;
- use addons\Store\common\models\Store;
- use addons\Store\common\models\StoreCashierOrder;
- use addons\Store\common\models\StoreOrder;
- use addons\Store\common\models\StoreOrderMarketing;
- use common\models\user\User;
- use common\enums\OrderStatusEnum;
- use common\enums\StatusEnum;
- use common\models\common\PaymentTradeOrder;
- use Yii;
- use Exception;
- class StoreOrderService extends BaseService
- {
- public function paySuccessOrderInfo($params)
- {
- $trade_id = $params['trade_id'] ?? '';
- $data = [
- 'original_goods_price' => '',
- '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());
- }
- }
- }
|