get($mall_id); if ($entry_setting['is_enable'] == 0) { // 应用没有开启,买任意门店的商品都可以 return true; } else { // 应用开启 // 判断直推下级是否满足条件 $child_counts = UserPartitionRelationship::getChildCounts($user_id, 1); // 直推人数 if ($child_counts < $entry_setting['invite_num']) { return false; } $direct_child_ids = UserPartitionRelationship::getChildIdArr($user_id, 1); //查询直推下级 // 是否满足购买订单数量 $i = 0; foreach ($direct_child_ids as $child_id) { $res = self::checkCount($child_id, $mall_id, $setting); if ($res === false) continue; $i++; if ($i >= $setting['buy_store_num']) { return true; } } return false; } } return true; } /** * 检查用户是否满足入驻条件 * @param $user_id * @param $mall_id * @param $setting * @return bool */ public static function checkCount($user_id, $mall_id, $setting) { $store_count = StoreEffectOrder::find()->alias('eo')->join('INNER JOIN', StoreOrder::tableName() . ' o', 'eo.order_id = o.id')->where(['eo.user_id' => $user_id, 'eo.mall_id' => $mall_id, 'eo.status' => StatusEnum::ENABLED, 'o.status' => StatusEnum::ENABLED, 'o.order_status' => OrderStatusEnum::ACCOMPLISH])->select('eo.store_id, COUNT(*) as count')->having('count >= :limit', [':limit' => $setting['finish_order_num']])->groupBy('eo.store_id')->count(); if ($store_count < $setting['buy_store_num']) { return false; } return true; } public static function getStoreList($mall_id, $limit = 10, $ignore_ids = []) { $list_query = Store::find()->alias('s')->join('INNER JOIN', User::tableName() . ' u', 'u.id = s.user_id')->where(['s.status' => StatusEnum::ENABLED, 'u.status' => StatusEnum::ENABLED, 's.check_status' => StoreEnum::CHECK_ADOPT, 's.mall_id' => $mall_id, 'u.parent_id' => 0]); if ($ignore_ids) { $list_query->andWhere(['not in', 's.id', $ignore_ids]); } $list = $list_query->select('s.id, s.store_name, s.logo_img, s.sales_volume, s.praise')->orderBy('s.created_at desc')->limit($limit)->asArray()->all(); return $list; } public static function getSpecailStoreList($user_id, $mall_id, $limit = 10) { $parent_id_arr = UserPartitionRelationship::getParentIdArr($user_id); if ($parent_id_arr) { $parent_id_arr = array_reverse($parent_id_arr); $list = Store::find()->where(['user_id' => $parent_id_arr, 'status' => StatusEnum::ENABLED, 'check_status' => StoreEnum::CHECK_ADOPT])->select('id, store_name, logo_img, sales_volume, praise')->orderBy(new \yii\db\Expression("FIELD(user_id, " . implode(',', $parent_id_arr) . ")"))->limit($limit)->asArray()->all(); } $list = $list ?? []; // $length = count($list); // if ($length < $limit) { // $ignore_ids = array_column($list, 'id'); // $child_ids = UserPartitionRelationship::getChildIdArr($user_id); // $child_ids = Store::find()->where(['user_id' => $child_ids, 'check_status' => StoreEnum::CHECK_ADOPT, 'status' => StatusEnum::ENABLED])->select('id')->column(); // $ignore_ids = array_merge($ignore_ids, $child_ids); // $platform_list = self::getStoreList($mall_id, $limit - $length, $ignore_ids); // $platform_list = $platform_list ?? []; // $list = array_merge($list, $platform_list); // } return $list; } public static function getMode3($mall_id, $parent_id, $settings) { $mode_3_text = '任意'; $mode_3_url = 1; $is_agree = 0; $recommend_user = []; $other_condition_text = ''; if (MallAddons::isInstall($mall_id, AddonsEnum::ADDONS_NAME_STORE_ENTRY_LIMIT)) { $service = (new SettingService()); $entry_setting = $service->get($mall_id); if ($entry_setting['is_enable'] == 1) { $mode_3_text = '就近'; $mode_3_url = 2; if ($entry_setting['recommend_user']) { $recommend_user_obj = User::findOne(['id' => $entry_setting['recommend_user']]); if ($parent_id == 0) { $is_agree = 1; $recommend_user = [ 'text' => '若需要入驻门店,请先成为 ' . ($recommend_user_obj->nickname ?? '') . ' 的好友,点击“同意”视为确认', 'user_id' => $entry_setting['recommend_user'], ]; } } if ($entry_setting['invite_num'] > 0) { $other_condition_text = "必须有{$entry_setting['invite_num']}个好友以上,且至少{$entry_setting['invite_num']}个好友在就近{$settings['buy_store_num']}家门店中各产生{$settings['finish_order_num']}张已完成订单"; } } } return [ 'text' => "购买{$mode_3_text}{$settings['buy_store_num']}家门店商品,且每家产生{$settings['finish_order_num']}笔已完成订单后再入驻", 'url_type' => $mode_3_url, 'other_condition_text' => $other_condition_text, 'recommend_user' => $recommend_user, 'is_agree' => $is_agree, ]; } }