"Store Id", 'nickname' => '用户昵称', 'mobile' => '手机号码', 'start_time' => '起止时间-开始', 'end_time' => '起止时间-结束', 'order_no' => '订单编号', 'goods_name' => '商品名称', 'status' => '状态' ]; } public function headUserList() { try { $store_id = $this->store_id; $nickname = $this->nickname; $mobile = $this->mobile; $start_time = $this->start_time; $end_time = $this->end_time; $query = ShareGroupPurchaseParentLog::find()->alias('sg') ->leftJoin(['u' => User::tableName()], 'sg.user_id = u.id') ->leftJoin(['su' => SaasUser::tableName()], 'su.mobile = u.binding') ->leftJoin(['spu' => ShareGroupPurchaseUser::tableName()], 'spu.user_id = u.id') ->where(['sg.store_id' => $store_id, 'u.is_delete' => 0, 'su.is_delete' => 0]); if (!empty($nickname)) { $query->andWhere(['OR', ['LIKE', 'su.name', $nickname], ['LIKE', 'u.nickname', $nickname]]); } if (!empty($mobile)) { $query->andWhere(['LIKE', 'su.mobile', $mobile]); } if (!empty($start_time)) { $start_time = strtotime($start_time); $query->andWhere(['>=', 'spu.created_at', $start_time]); } if (!empty($end_time)) { $end_time = strtotime($end_time); $query->andWhere(['<=', 'spu.created_at', $end_time]); } $query->select('sg.id, sg.user_id, sg.parent_user_id, su.name, su.avatar, su.mobile, spu.created_at, sg.parent_id, sg.child_level') ->orderBy('spu.created_at DESC')->groupBy('sg.user_id'); $pagination = pagination_make($query); foreach ($pagination['list'] as &$item) { $item['created_at'] = date('Y-m-d H:i:s', $item['created_at']); $shareGroupPurchaseUser = ShareGroupPurchaseUser::findOne(['user_id' => $item['user_id']]); $item['group_price'] = $shareGroupPurchaseUser->group_price ?? '0.00'; $item['direct_price'] = $shareGroupPurchaseUser->direct_price ?? '0.00'; $item['support_price'] = $shareGroupPurchaseUser->support_price ?? '0.00'; // $shareGroupSupportLog = ShareGroupSupportLog::findOne(['user_id' => $item['user_id']]); // if ($shareGroupSupportLog && $shareGroupSupportLog->parent_id) { // $parentShareGroupSupportLog = ShareGroupSupportLog::findOne(['id' => $shareGroupSupportLog->parent_id]); // $item['parent_user_id'] = $parentShareGroupSupportLog->user_id; // } $parent_user = User::find()->alias('u') ->leftJoin(['su' => SaasUser::tableName()], 'su.mobile = u.binding') ->where(['u.id' => $shareGroupPurchaseUser->parent_user_id, 'u.is_delete' => 0, 'su.is_delete' => 0]) ->select('su.name, su.avatar, su.mobile')->asArray()->one(); $item['parent_user'] = $parent_user ?: []; $first_child = ShareGroupPurchaseParentLog::find()->where(['parent_id' => $item['id']]) ->select('id, user_id')->asArray()->all(); $group_purchase_child_data_id = array_column($first_child, 'id'); $group_purchase_child_data_user_id = array_column($first_child, 'user_id'); // $second_child = ShareGroupPurchaseParentLog::find()->where(['parent_id' => $first_child_id]) // ->select('id, user_id')->asArray()->all(); // $second_child_id = array_column($second_child, 'id'); // $second_child_user_id = array_column($second_child, 'user_id'); // // $group_purchase_child_data_id = array_merge($first_child_id, $second_child_id); // // $group_purchase_child_data_user_id = array_merge($first_child_user_id, $second_child_user_id); // $group_purchase_child_data_id = array_unique($group_purchase_child_data); $item['group_purchase_child_count'] = count($group_purchase_child_data_id); $item['group_purchase_child_list'] = []; foreach ($group_purchase_child_data_user_id as $purchase_user_id_item) { $item['group_purchase_child_list'][] = User::find()->alias('u') ->leftJoin(['su' => SaasUser::tableName()], 'su.mobile = u.binding') ->where(['u.id' => $purchase_user_id_item, 'u.is_delete' => 0, 'su.is_delete' => 0]) ->select('su.name, su.avatar, su.mobile')->asArray()->one(); } $group_support_child_data = ShareGroupSupportLog::find()->where(['parent_user_id' => $item['user_id']]) ->select('user_id')->column(); $item['group_support_child_count'] = count($group_support_child_data); $child_list = User::find()->alias('u') ->leftJoin(['su' => SaasUser::tableName()], 'su.mobile = u.binding') ->where(['u.id' => $group_support_child_data, 'u.is_delete' => 0, 'su.is_delete' => 0]) ->select('su.name, su.avatar, su.mobile')->asArray()->all(); $item['group_support_child_list'] = $child_list; } return [ 'code' => 0, 'msg' => 'success', 'data' => $pagination ]; } catch (\Exception $e) { return [ 'code' => 1, 'msg' => $e->getMessage() ]; } } //拼购记录 public function amountList() { try { $order_no = $this->order_no; $nickname = $this->nickname; $mobile = $this->mobile; $start_time = $this->start_time; $end_time = $this->end_time; $store_id = $this->store_id; $query = ShareGroupMoney::find()->alias('sgm') ->leftJoin(['s' => ShareGroupPurchaseParentLog::tableName()], 's.id = sgm.type_id') ->leftJoin(['o' => Order::tableName()], 's.order_id = o.id') ->leftJoin(['u' => User::tableName()], 'sgm.user_id = u.id') ->leftJoin(['su' => SaasUser::tableName()], 'su.mobile = u.binding') ->where(['sgm.store_id' => $store_id]) // ->andWhere(['OR', // ['sgm.type' => ShareGroupMoney::TYPE_DIRECT], // ['sgm.type' => ShareGroupMoney::TYPE_GROUP, 'profit_type' => ShareGroupMoney::PROFIT_TYPE_COMMON] // ]); ->andWhere([ 'sgm.type' => ShareGroupMoney::TYPE_GROUP, // 'profit_type' => ShareGroupMoney::PROFIT_TYPE_COMMON ]); if (!empty($nickname)) { $query->andWhere(['OR', ['LIKE', 'su.name', $nickname], ['LIKE', 'u.nickname', $nickname]]); } if (!empty($mobile)) { $query->andWhere(['LIKE', 'su.mobile', $mobile]); } if (!empty($order_no)) { $query->andWhere(['OR', ['LIKE', 'o.order_no', $order_no], ['LIKE', 'sgm.group_data', $order_no]]); } if (!empty($start_time)) { $start_time = strtotime($start_time); $query->andWhere(['>=', 'sgm.created_at', $start_time]); } if (!empty($end_time)) { $end_time = strtotime($end_time); $query->andWhere(['<=', 'sgm.created_at', $end_time]); } $query->select('sgm.id, sgm.amount, sgm.created_at, sgm.type, sgm.is_send, sgm.send_time, su.name, su.mobile, su.avatar, sgm.group_data, o.id order_id, sgm.amount, sgm.radix, sgm.profit_type') ->orderBy('sgm.id DESC'); $pagination = pagination_make($query); foreach ($pagination['list'] as $index => &$item) { $item['created_at'] = date('Y-m-d H:i:s', $item['created_at']); $item['send_time'] = $item['send_time'] ? date('Y-m-d H:i:s', $item['send_time']) : ''; $item['type'] = intval($item['type']); $item['profit_type'] = intval($item['profit_type']); //查询成团奖人员 $item['group_data'] = json_decode($item['group_data'] ?? '', true) ?: null; if (!empty($item['group_data'])) { $item['group_data'] = ShareGroupMoneySub::find()->where(['share_money_id' => $item['id']]) ->select('order_id, amount, radix, is_send')->asArray()->all(); foreach ($item['group_data'] as &$group_item) { $item_order = Order::findOne($group_item['order_id']); $parent_user = User::find()->alias('u') ->leftJoin(['su' => SaasUser::tableName()], 'su.mobile = u.binding') ->where(['u.id' => $item_order['user_id'], 'u.is_delete' => 0, 'su.is_delete' => 0]) ->select('su.name, su.avatar, su.mobile')->asArray()->one(); $group_item['user_info'] = $parent_user; $group_item['order_no'] = $item_order->order_no; $group_item['is_send'] = intval($group_item['is_send']); } } else { $item_order = Order::findOne($item['order_id']); $parent_user = User::find()->alias('u') ->leftJoin(['su' => SaasUser::tableName()], 'su.mobile = u.binding') ->where(['u.id' => $item_order['user_id'], 'u.is_delete' => 0, 'su.is_delete' => 0]) ->select('su.name, su.avatar, su.mobile')->asArray()->one(); $item['group_data'] = [ [ 'user_info' => $parent_user, 'order_no' => $item_order->order_no, 'radix' => $item['radix'], 'amount' => $item['amount'], 'is_send' => intval($item['is_send']) ] ]; } $item['is_send'] = intval($item['is_send']); unset($pagination['list'][$index]['radix'], $pagination['list'][$index]['order_id']); } return [ 'code' => 0, 'msg' => 'success', 'data' => $pagination ]; } catch (\Exception $e) { return [ 'code' => 1, 'msg' => $e->getMessage() ]; } } //分润订单 public function orderAmountList() { try { $order_no = $this->order_no; $goods_name = $this->goods_name; $start_time = $this->start_time; $end_time = $this->end_time; $store_id = $this->store_id; $status = $this->status; $query = Order::find()->alias('o') // ->leftJoin(['s' => ShareGroupPurchaseParentLog::tableName()], 'o.id = s.order_id') ->leftJoin(['sgm' => ShareGroupMoney::tableName()], 'sgm.order_id = o.id AND sgm.type = ' . ShareGroupMoney::TYPE_DIRECT) // ->leftJoin(['s_' => ShareGroupSupportLog::tableName()], 'o.id = s_.order_id') ->leftJoin(['sgm_' => ShareGroupMoney::tableName()], 'sgm_.order_id = o.id AND sgm_.type = ' . ShareGroupMoney::TYPE_SUPPORT) ->leftJoin(['sgms' => ShareGroupMoneySub::tableName()], 'sgms.order_id = o.id') ->leftJoin(['od' => OrderDetail::tableName()], 'od.order_id = o.id') ->where(['o.store_id' => $store_id])->andWhere(['OR', ['>', 'sgm.amount', 0], ['>', 'sgm_.amount', 0], ['>', 'sgms.amount', 0]]); if (!empty($order_no)) { $query->andWhere(['LIKE', 'o.order_no', $order_no]); } if (!empty($goods_name)) { $query->andWhere(['OR', ['LIKE', 's.goods_name', $goods_name], ['LIKE', 'sgms.goods_name', $goods_name]]); } if (!empty($start_time)) { $start_time = strtotime($start_time); $query->andWhere(['>=', 'o.created_at', $start_time]); } if (!empty($end_time)) { $end_time = strtotime($end_time); $query->andWhere(['<=', 'o.created_at', $end_time]); } if (isset($status) && in_array($status, [0, 1])) { $query->andWhere(['OR', ['sgm.is_send' => $status], ['sgm_.is_send' => $status], ['sgms.is_send' => $status]]); } $query->select('o.id, o.order_no, o.created_at, o.user_id'); $query->groupBy('o.id')->orderBy('o.id desc'); $pagination = pagination_make($query); foreach ($pagination['list'] as &$item) { $item['created_at'] = date('Y-m-d H:i:s', $item['created_at']); //计算所有佣金 $item['amount'] = 0; $item['is_send'] = 1;//假如是发放状态 如果有一个未发放则改为未发放 $item['desc'] = ''; // $item['parent_user_info'] = [ // 'name' => '', // 'avatar' => '', // 'mobile' => '', // ]; $item['amount_detail'] = []; $parent_user_id = 0; // $purchaseLog = ShareGroupPurchaseParentLog::findOne(['order_id' => $item['id']]); // if ($purchaseLog) { $shareGroupMoney = ShareGroupMoney::findOne(['order_id' => $item['id'], 'type' => ShareGroupMoney::TYPE_DIRECT]); if ($shareGroupMoney) { $item['amount'] = bcadd($item['amount'], $shareGroupMoney->amount, 2); $item['is_send'] = $shareGroupMoney->is_send; if ($shareGroupMoney->amount > 0) { $item['desc'] .= "直推佣金:" . ($shareGroupMoney->amount ?: "0") . ';'; $parent_user_id = $shareGroupMoney->user_id; $user_info = User::find()->alias('u') ->leftJoin(['su' => SaasUser::tableName()], 'su.mobile = u.binding') ->where(['u.id' => $parent_user_id, 'u.is_delete' => 0, 'su.is_delete' => 0]) ->select('su.name, su.avatar, su.mobile')->asArray()->one(); $item['amount_detail'][] = [ 'type' => ShareGroupMoney::TYPE_DIRECT, 'amount' => $shareGroupMoney->amount, 'type_text' => '直推奖', 'parent_user_info' => $user_info, 'is_send' => intval($shareGroupMoney->is_send) ]; } } // } // $purchaseLog = ShareGroupSupportLog::findOne(['order_id' => $item['id']]); // if ($purchaseLog) { $shareGroupMoney = ShareGroupMoney::findOne(['order_id' => $item['id'], 'type' => ShareGroupMoney::TYPE_SUPPORT]); if ($shareGroupMoney) { $item['amount'] = bcadd($item['amount'], $shareGroupMoney->amount, 2); $item['is_send'] = $shareGroupMoney->is_send; $item['desc'] .= "帮扶佣金:" . $shareGroupMoney->amount . ';'; $parent_user_id = $shareGroupMoney->user_id; $user_info = User::find()->alias('u') ->leftJoin(['su' => SaasUser::tableName()], 'su.mobile = u.binding') ->where(['u.id' => $parent_user_id, 'u.is_delete' => 0, 'su.is_delete' => 0]) ->select('su.name, su.avatar, su.mobile')->asArray()->one(); $item['amount_detail'][] = [ 'type' => ShareGroupMoney::TYPE_SUPPORT, 'amount' => $shareGroupMoney->amount, 'type_text' => '帮扶奖', 'parent_user_info' => $user_info, 'is_send' => intval($shareGroupMoney->is_send) ]; } // } $money_sub_amount = ShareGroupMoneySub::find()->alias('sb') ->leftJoin(['s' => ShareGroupMoney::tableName()], 'sb.share_money_id = s.id') ->where(['sb.order_id' => $item['id'], 's.profit_type' => ShareGroupMoney::PROFIT_TYPE_COMMON]) ->select('sb.amount, sb.is_send, s.user_id')->asArray()->one(); if ($money_sub_amount) { $item['amount'] = bcadd($item['amount'], $money_sub_amount['amount'] ?? 0, 2); $item['is_send'] = $money_sub_amount['is_send']; $item['desc'] .= "成团佣金:" . $money_sub_amount['amount'] ?? 0 . ';'; $parent_user_id = $money_sub_amount['user_id']; $user_info = User::find()->alias('u') ->leftJoin(['su' => SaasUser::tableName()], 'su.mobile = u.binding') ->where(['u.id' => $parent_user_id, 'u.is_delete' => 0, 'su.is_delete' => 0]) ->select('su.name, su.avatar, su.mobile')->asArray()->one(); $item['amount_detail'][] = [ 'type' => ShareGroupMoney::TYPE_GROUP, 'amount' => $money_sub_amount['amount'] ?? 0, 'type_text' => '成团奖', 'parent_user_info' => $user_info, 'is_send' => intval($money_sub_amount['is_send']) ]; } $item['is_send'] = intval($item['is_send']); $order_detail = OrderDetail::find()->where(['order_id' => $item['id']]) ->select('goods_name, pic, attr, total_price, num')->asArray()->all(); foreach ($order_detail as &$goods_item) { $goods_item['price'] = bcdiv($goods_item['total_price'], $goods_item['num'], 2); } $item['goods_list'] = $order_detail; $user_info = User::find()->alias('u') ->leftJoin(['su' => SaasUser::tableName()], 'su.mobile = u.binding') ->where(['u.id' => $item['user_id'], 'u.is_delete' => 0, 'su.is_delete' => 0]) ->select('su.name, su.avatar, su.mobile')->asArray()->one(); $item['user_info'] = $user_info; } return [ 'code' => 0, 'msg' => 'success', 'data' => $pagination ]; } catch (\Exception $e) { return [ 'code' => 1, 'msg' => $e->getMessage() ]; } } //复购记录 public function orderRepeatLog() { try { $store_id = $this->store_id; $order_no = $this->order_no; $goods_name = $this->goods_name; $nickname = $this->nickname; $mobile = $this->mobile; $start_time = $this->start_time; $end_time = $this->end_time; $query = ShareGroupPurchaseParentLog::find()->alias('s') ->leftJoin(['o' => Order::tableName()], 's.order_id = o.id') ->leftJoin(['od' => OrderDetail::tableName()], 'od.order_id = o.id') ->leftJoin(['u' => User::tableName()], 'o.user_id = u.id') ->leftJoin(['su' => SaasUser::tableName()], 'su.mobile = u.binding') ->where(['s.store_id' => $store_id, 's.is_repeat' => 1]); if (!empty($order_no)) { $query->andWhere(['LIKE', 'o.order_no', $order_no]); } if (!empty($goods_name)) { $query->andWhere(['LIKE', 's.goods_name', $goods_name]); } if (!empty($nickname)) { $query->andWhere(['OR', ['LIKE', 'su.name', $nickname], ['LIKE', 'u.nickname', $nickname]]); } if (!empty($mobile)) { $query->andWhere(['LIKE', 'su.mobile', $mobile]); } if (!empty($start_time)) { $start_time = strtotime($start_time); $query->andWhere(['>=', 'o.created_at', $start_time]); } if (!empty($end_time)) { $end_time = strtotime($end_time); $query->andWhere(['<=', 'o.created_at', $end_time]); } $query->select('o.id, o.order_no, o.created_at, o.user_id, su.name, su.mobile, su.avatar, s.order_detail_id, s.is_auto_repeat'); $query->groupBy('s.id')->orderBy('o.id desc'); $pagination = pagination_make($query); foreach ($pagination['list'] as &$item) { $item['created_at'] = date('Y-m-d H:i:s', $item['created_at']); $item['order_detail_id'] = explode(',', $item['order_detail_id']); $order_detail = OrderDetail::find()->where(['order_id' => $item['id'], 'id' => $item['order_detail_id']]) ->select('goods_name, pic, attr, total_price')->asArray()->all(); $item['total_price'] = 0; foreach ($order_detail as $order_detail_item) { $item['total_price'] = bcadd($item['total_price'], $order_detail_item['total_price'], 2); } $item['goods_list'] = $order_detail; $item['is_auto_repeat'] = intval($item['is_auto_repeat']); } return [ 'code' => 0, 'msg' => 'success', 'data' => $pagination ]; } catch (\Exception $e) { return [ 'code' => 1, 'msg' => $e->getMessage() ]; } } //拼购区公排列表 public function groupList() { $store_id = $this->store_id; $order_no = $this->order_no; $batch_id = $this->batch_id ?: 0; $child_level = $this->child_level; $nickname = $this->nickname; $mobile = $this->mobile; $team_group = ShareGroupPurchaseParentLog::find()->alias('p') ->leftJoin(['o' => Order::tableName()], 'p.order_id = o.id') ->leftJoin(['u' => User::tableName()], 'o.user_id = u.id') ->leftJoin(['su' => SaasUser::tableName()], 'su.mobile = u.binding') ->where(['p.store_id' => $store_id, 'p.parent_id' => 0]) ->select('p.id, o.order_no, u.nickname, su.mobile')->asArray()->all(); foreach ($team_group as &$team_group_item) { $team_group_item['max_level'] = ShareGroupPurchaseParentLog::find() ->where(['batch_id' => $team_group_item['id']])->select('child_level')->max('child_level'); } $query = ShareGroupPurchaseParentLog::find()->alias('p') ->leftJoin(['o' => Order::tableName()], 'p.order_id = o.id') ->leftJoin(['u' => User::tableName()], 'o.user_id = u.id') ->leftJoin(['su' => SaasUser::tableName()], 'su.mobile = u.binding') ->where(['p.store_id' => $store_id]); if ($child_level) { $query->andWhere(['p.child_level' => $child_level]); } if (!empty($order_no)) { $query->andWhere(['LIKE', 'o.order_no', $order_no]); } if (!empty($nickname)) { $query->andWhere(['LIKE', 'u.nickname', $nickname]); } if (!empty($mobile)) { $query->andWhere(['LIKE', 'su.mobile', $mobile]); } if (!empty($batch_id)) { $query->andWhere(['OR', ['p.batch_id' => $batch_id], ['p.id' => $batch_id]]); } if (empty($order_no) && empty($nickname) && empty($mobile) && empty($batch_id)) { $query->andWhere(['p.batch_id' => 0]); } $query->select('p.id, p.order_id, o.order_no, p.user_id, u.nickname, su.mobile, u.avatar_url avatar, p.child_level, p.points, p.created_at, p.parent_user_id, p.batch_id, p.parent_id') ->orderBy('p.child_level ASC, p.points ASC'); $pagination = pagination_make($query); foreach ($pagination['list'] as &$item) { $item['is_support'] = 0; $item['created_at'] = date('Y-m-d H:i:s', $item['created_at']); //订单上级信息 $user_info = [ 'nickname' => '', 'mobile' => '' ]; $shareGroupPurchaseParentLog = ShareGroupPurchaseParentLog::findOne($item['parent_id']); if ($shareGroupPurchaseParentLog) { $order = Order::findOne($shareGroupPurchaseParentLog->order_id); $user_info = User::find()->alias('u') ->leftJoin(['su' => SaasUser::tableName()], 'su.mobile = u.binding') ->where(['u.id' => $shareGroupPurchaseParentLog->user_id, 'u.is_delete' => 0, 'su.is_delete' => 0]) ->select('u.nickname, su.mobile')->asArray()->one(); $user_info['order_no'] = $order->order_no; } $item['parent_user'] = $user_info; //佣金信息 $money_purchase = ShareGroupMoneySub::find()->alias('ss') ->leftJoin(['s' => ShareGroupMoney::tableName()], 's.id = ss.share_money_id') ->leftJoin(['p' => ShareGroupPurchaseParentLog::tableName()], 'p.id = s.type_id') ->leftJoin(['u' => User::tableName()], 'p.user_id = u.id') ->leftJoin(['su' => SaasUser::tableName()], 'su.mobile = u.binding') ->where([ 'ss.order_id' => $item['order_id'], 's.profit_type' => ShareGroupMoney::PROFIT_TYPE_COMMON ])->select('ss.amount, ss.is_send, u.nickname, u.avatar_url, su.mobile, ss.created_at, p.points, p.child_level') ->orderBy('p.child_level ASC, p.points ASC')->asArray()->all(); $item['amount'] = 0; foreach ($money_purchase as &$money_purchase_item) { $money_purchase_item['is_send'] = intval($money_purchase_item['is_send']); $item['amount'] = bcadd($item['amount'], $money_purchase_item['amount'], 2); $money_purchase_item['created_at'] = date('Y-m-d H:i:s', $money_purchase_item['created_at']); } $item['money_purchase'] = $money_purchase; } $pagination['team_group'] = $team_group; return [ 'code' => 0, 'msg' => 'success', 'data' => $pagination ]; } // }