[-1, 0, 1]] ]; } //拼团区中心 public function groupPurchaseCenter() { try { $store_id = $this->store_id; $user_id = $this->user_id; $saas_id = $this->saas_id; $user = User::findOne($user_id); $saasUser = SaasUser::findOne($saas_id); $shareGroupPurchaseUser = ShareGroupPurchaseUser::findOne(['user_id' => $user_id]); //用户头像、昵称、上级名称 $parent_user_info = User::find()->alias('u') ->leftJoin(['su' => SaasUser::tableName()], 'su.mobile = u.binding') ->where(['u.id' => $shareGroupPurchaseUser->parent_user_id ?? 0, 'u.is_delete' => 0, 'su.is_delete' => 0]) ->select('su.name')->asArray()->one(); $user_info = [ 'name' => $saasUser->name, 'avatar' => $saasUser->avatar, 'parent_name' => $parent_user_info['name'] ?? '', 'share_code' => '' ]; //用户分享码 try { $form = new ShareQrcodeForm(); $form->store_id = $store_id; $form->type = Qrcode::TYPE_GROUP_PURCHASE; $form->user_id = $this->user_id; $result = $form->search(); if ($result['code']) { throw new \Exception($result['msg']); } $user_info['share_code'] = $result['data']; } catch (\Exception $e) { debug_log([ 'code' => $e->getCode(), 'message' => $e->getMessage(), 'file' => $e->getFile(), 'line' => $e->getLine(), ], 'group_purchase_qrcode.log'); } //用户佣金 可提现佣金 $wait_cash_amount = $user->price >= $shareGroupPurchaseUser->price ? $shareGroupPurchaseUser->price : $user->price; //用户佣金 未到账佣金 $no_send_amount = ShareGroupMoney::find()->where(['user_id' => $user_id, 'is_send' => 0]) ->select('amount')->sum('amount') ?: '0.00'; //用户佣金 已提现佣金 $cash_amount = Cash::find()->where(['user_id' => $user_id, 'cash_type' => Cash::IS_CASH_TYPE_SHARE_GROUP_PURCHASE, 'status' => [ Cash::STATUS_GIVEN, Cash::STATUS_HAND, Cash::STATUS_RECHARGE ]]) ->select('price')->sum('price') ?: '0.00'; //用户佣金 冻结佣金 $freeze_amount = ShareGroupMoney::find()->where(['user_id' => $user_id, 'is_freeze' => 1, 'is_send_freeze' => 0]) ->select('freeze_amount')->sum('freeze_amount') ?: '0.00'; $no_freeze_amount = ShareGroupMoney::find()->where(['user_id' => $user_id, 'is_freeze' => 1, 'is_send_freeze' => 1]) ->select('freeze_amount')->sum('freeze_amount') ?: '0.00'; //用户佣金 累计佣金 $total_amount = bcadd( $wait_cash_amount, bcadd($cash_amount, bcadd($no_send_amount, bcadd($freeze_amount, $no_freeze_amount, 2), 2) , 2) , 2); return [ 'code' => 0, 'msg' => '', 'data' => [ 'is_group_purchase_user' => !empty($shareGroupPurchaseUser), 'user_info' => $user_info, 'wait_cash_amount' => $wait_cash_amount,//可提现佣金 'no_send_amount' => $no_send_amount,//未到账佣金 'cash_amount' => $cash_amount,//已提现佣金 'freeze_amount' => $freeze_amount,//冻结佣金 'total_amount' => $user->total_price ?? 0//$total_amount,//累计佣金 ] ]; } catch (\Exception $e) { return [ 'code' => 1, 'msg' => $e->getMessage() ]; } } //拼购区商品 public function goodsList() { try { $store_id = $this->store_id; $share_group_setting = Option::get('share_group_setting', $store_id, 'share_group')['value']; $share_group_setting = json_decode($share_group_setting ?? '', true); $goods_ids = explode(',', $share_group_setting['goods_ids'] ?? ''); $query = Goods::find()->where(['id' => $goods_ids ?: [0], 'is_delete' => 0, 'store_id' => $store_id]) ->select('id, name, cover_pic, price, virtual_sales')->orderBy('sort desc'); $list = pagination_make($query); foreach ($list['list'] as &$item) { $goods_cat = GoodsCat::find()->alias('gc') ->leftJoin(['c' => Cat::tableName()], 'gc.cat_id=c.id') ->where([ 'gc.goods_id' => $item['id'], 'c.is_delete' => 0, 'gc.is_delete' => 0, 'c.store_id' => $store_id]) ->select(['c.name']) ->column(); $item['cat'] = implode(' ', $goods_cat); $goodsModel = new Goods(); $goodsModel->id = $item['id']; $item['sales_num'] = $goodsModel->getSalesVolume() + $item['virtual_sales']; } return [ 'code' => 0, 'msg' => '', 'data' => $list ]; } catch (\Exception $e) { return [ 'code' => 1, 'msg' => $e->getMessage() ]; } } //我的拼购订单 public function groupPurchaseOrder() { try { $user_id = $this->user_id; $query = ShareGroupPurchaseParentLog::find()->alias('s') ->leftJoin(['o' => Order::tableName()], 's.order_id = o.id') ->where(['s.user_id' => $user_id])->select('s.id, o.order_no, o.created_at, s.is_repeat, s.order_detail_id') ->orderBy('s.id ASC'); $list = pagination_make($query); foreach ($list['list'] as &$item) { $item['created_at'] = date('Y-m-d H:i:s', $item['created_at']); //查询当前团下级订单数量 $num = 0; $direct_child_group_purchase_id = ShareGroupPurchaseParentLog::find()->where(['parent_id' => $item['id']]) ->select('id')->column(); if ($direct_child_group_purchase_id) { $num += count($direct_child_group_purchase_id); $child_group_purchase_id = ShareGroupPurchaseParentLog::find()->where(['parent_id' => $direct_child_group_purchase_id]) ->select('id')->column(); $num += count($child_group_purchase_id); } $item['num'] = $num; //查询是否完成成团 $is_has_group = ShareGroupMoney::findOne(['type' => ShareGroupMoney::TYPE_GROUP, 'type_id' => $item['id']]); $item['is_finish'] = !empty($is_has_group); //查询商品信息 $order_detail_id = explode(',', $item['order_detail_id']); $item['goods_list'] = OrderDetail::find()->where(['id' => $order_detail_id, 'is_delete' => 0]) ->select('goods_id, total_price, goods_name, num, pic, attr')->asArray()->all(); foreach ($item['goods_list'] as &$goods_item) { $goods_item['attr'] = json_decode($goods_item['attr'], true); } } return [ 'code' => 0, 'msg' => '', 'data' => $list ]; } catch (\Exception $e) { return [ 'code' => 1, 'msg' => $e->getMessage() ]; } } //获取参团详情 public function groupPurchaseDetail() { try { $id = $this->id; $direct_child_group_purchase_id = ShareGroupPurchaseParentLog::find()->where(['parent_id' => $id]) ->select('id')->column(); if ($direct_child_group_purchase_id) { $child_group_purchase_id = ShareGroupPurchaseParentLog::find()->where(['parent_id' => $direct_child_group_purchase_id]) ->select('id')->column(); if ($child_group_purchase_id) { $direct_child_group_purchase_id = array_merge($direct_child_group_purchase_id, $child_group_purchase_id); } } $query = ShareGroupPurchaseParentLog::find()->alias('s') ->leftJoin(['o' => Order::tableName()], 's.order_id = o.id') ->where(['s.id' => $direct_child_group_purchase_id]) ->select('s.id, o.order_no, o.created_at, s.order_detail_id, o.trade_status, o.user_id'); $list = pagination_make($query); foreach ($list['list'] as &$item) { $item['created_at'] = date('Y-m-d H:i:s', $item['created_at']); $item['trade_status'] = intval($item['trade_status']); $item['trade_status_text'] = Order::TRADE_STATUS_TEXT[$item['trade_status']]; $item['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(); //查询商品信息 $order_detail_id = explode(',', $item['order_detail_id']); $item['goods_list'] = OrderDetail::find()->where(['id' => $order_detail_id, 'is_delete' => 0]) ->select('goods_id, total_price, goods_name, num, pic, attr')->asArray()->all(); foreach ($item['goods_list'] as &$goods_item) { $goods_item['attr'] = json_decode($goods_item['attr'], true); } } return [ 'code' => 0, 'msg' => '', 'data' => $list ]; } catch (\Exception $e) { return [ 'code' => 1, 'msg' => $e->getMessage() ]; } } //冻结金额 public function freezeMoney() { try { $user_id = $this->user_id; //冻结金额 $money = ShareGroupMoney::find()->where(['user_id' => $user_id, 'is_freeze' => 1, 'is_send_freeze' => 0]) ->sum('freeze_amount') ?: '0.00'; $group_purchase_parent = ShareGroupPurchaseParentLog::findOne(['user_id' => $user_id]); //直推会员 $direct_child_group_purchase_id = ShareGroupPurchaseParentLog::find()->where([ 'parent_user_id' => $user_id, 'batch_id' => $group_purchase_parent->batch_id ?: $group_purchase_parent->id ])->select('user_id, batch_id')->groupBy('user_id')->asArray()->all(); $data = []; foreach ($direct_child_group_purchase_id as $index => $item) { $data[$index]['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(); $child_group_purchase_count = ShareGroupPurchaseParentLog::find()->where([ 'parent_user_id' => $item['user_id'], 'batch_id' => $item['batch_id'] ])->groupBy('user_id')->select('user_id')->count() ?: 0; $data[$index]['is_qualify'] = false; if ($child_group_purchase_count >= 2) { $data[$index]['is_qualify'] = true; } } return [ 'code' => 0, 'msg' => '', 'data' => [ 'freeze_amount' => $money, 'user_info' => $data ] ]; } catch (\Exception $e) { return [ 'code' => 1, 'msg' => $e->getMessage() ]; } } //佣金详情 public function freezeMoneyList() { try { $status = $this->status; $query = ShareGroupMoney::find()->alias('sm') ->leftJoin(['s' => ShareGroupSupportLog::tableName()], 's.id = sm.type_id') ->leftJoin(['o' => Order::tableName()], 's.order_id = o.id') ->where([ 'sm.is_freeze' => 1, 'sm.user_id' => $this->user_id ]); if (isset($status) && in_array($status, [0, 1])) { $query->andWhere(['sm.is_send_freeze' => $status]); } $query->select('sm.id, sm.freeze_amount, sm.is_send_freeze, sm.created_at, o.order_no, sm.type, s.user_id, sm.freeze_send_time') ->orderBy('sm.created_at desc'); $list = pagination_make($query); foreach ($list['list'] as &$item) { $item['created_at'] = date('Y-m-d H:i:s', $item['created_at']); $item['freeze_send_time'] = $item['freeze_send_time'] ? date('Y-m-d H:i:s', $item['freeze_send_time']) : ''; $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')->asArray()->one(); $item['desc'] = $user_info['name'] . $item['order_no'] . '产生佣金'; $item['type'] = intval($item['type']); $item['is_send_freeze'] = intval($item['is_send_freeze']); } return [ 'code' => 0, 'msg' => '', 'data' => $list ]; } catch (\Exception $e) { return [ 'code' => 1, 'msg' => $e->getMessage() ]; } } //佣金明细 public function moneyList() { try { $status = $this->status; $user_id = $this->user_id; $query = ShareGroupMoney::find()->where(['user_id' => $user_id, 'profit_type' => ShareGroupMoney::PROFIT_TYPE_COMMON]); if (isset($status) && in_array($status, [0, 1])) { $query->andWhere(['is_send' => $status]); } $query->andWhere(['OR', ['>', 'amount', 0], ['AND', ['>', 'freeze_amount', 0], ['is_send_freeze' => 1]]]); $query->orderBy('id desc') ->select('id, type, type_id, created_at, amount, is_send, send_time, freeze_amount, is_send_freeze, is_freeze, order_id'); $list = pagination_make($query); foreach ($list['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']) : ''; if (intval($item['type']) === ShareGroupMoney::TYPE_DIRECT) { $shareGroupPurchaseParentLog = ShareGroupPurchaseParentLog::findOne($item['type_id']); // if ($shareGroupPurchaseParentLog) { $order = Order::findOne($item['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('su.name')->asArray()->one(); $item['desc'] = $user_info['name'] . $order->order_no . '产生佣金'; // } } elseif (intval($item['type']) === ShareGroupMoney::TYPE_SUPPORT) { $shareGroupSupportLog = ShareGroupSupportLog::findOne($item['type_id']); // if ($shareGroupSupportLog) { $order = Order::findOne($item['order_id']); $user_info = User::find()->alias('u') ->leftJoin(['su' => SaasUser::tableName()], 'su.mobile = u.binding') ->where(['u.id' => $shareGroupSupportLog->user_id, 'u.is_delete' => 0, 'su.is_delete' => 0]) ->select('su.name')->asArray()->one(); $item['desc'] = $user_info['name'] . $order->order_no . '产生佣金'; if ($item['is_freeze']) { if (intval($item['is_send_freeze'])) { $item['amount'] = bcadd($item['amount'], $item['freeze_amount'], 2); $item['desc'] .= "(包含冻结".$item['freeze_amount'].")"; } } // } } else { $item['desc'] = '拼购区成团产生佣金'; $shareGroupMoneySubAmount = ShareGroupMoneySub::find()->where(['share_money_id' => $item['id'], 'is_send' => 1])->sum('amount'); if ($shareGroupMoneySubAmount > 0) { $item['desc'] .= "(已发放".$shareGroupMoneySubAmount.")"; } } $item['type'] = intval($item['type']); $item['is_send'] = intval($item['is_send']); unset($list['list'][$index]['is_freeze'], $list['list'][$index]['is_send_freeze'], $list['list'][$index]['freeze_amount']); } return [ 'code' => 0, 'msg' => '', 'data' => $list ]; } catch (\Exception $e) { return [ 'code' => 1, 'msg' => $e->getMessage() ]; } } //帮扶区 public function supportList() { try { $user_id = $this->user_id; $query = ShareGroupSupportLog::find()->alias('s') ->leftJoin(['u' => User::tableName()], 's.user_id = u.id') ->leftJoin(['su' => SaasUser::tableName()], 'su.mobile = u.binding') ->where(['s.parent_user_id' => $user_id]) ->select('su.mobile, su.name, su.avatar, s.id, s.created_at, s.user_id') ->orderBy('s.id desc'); $list = pagination_make($query); foreach ($list['list'] as &$item) { $item['created_at'] = date('Y-m-d H:i:s', $item['created_at']); $ShareGroupPurchaseUser = ShareGroupPurchaseUser::find()->where(['parent_user_id' => $item['user_id']]) ->select('user_id')->column(); $item['num'] = ShareGroupSupportLog::find()->where(['user_id' => $ShareGroupPurchaseUser]) ->select('id')->count() ?: 0; } return [ 'code' => 0, 'msg' => '', 'data' => $list ]; } catch (\Exception $e) { return [ 'code' => 1, 'msg' => $e->getMessage() ]; } } }