services->setting->addons->get($mall_id, ValetOrderEnum::ADDONS_NAME, 'basic') ?? []; } /** * 设置配置信息 * @param int $mall_id * @param array $data * @return bool */ public function save(int $mall_id, array $data) :bool { return Yii::$app->services->setting->addons->set($mall_id, ValetOrderEnum::ADDONS_NAME, ['basic' => $data]); } /** * 给代客下单创建一个默认用户,用于下单预览页展示 * * @param int $mallId * * @return int * @throws Exception */ public function createValetOrderDefaultUser(int $mallId): int { // 此商城创建过了则不在创建 if ($userId = $this->getValetOrderDefaultUser($mallId)) { return $userId; } $t = Yii::$app->db->beginTransaction(); try { // 实施注册 $user = User::setData([ 'parent_id' => 0, 'nickname' => '代客下单预览用户', 'mall_id' => $mallId, 'username' => "代客下单预览用户", 'source' => User::SOURCE_VALET_ORDER_DEFAULT_USER, 'platform' => User::PLATFORM_H5, 'password' => '' ]); if ($user === false || empty($user->id)) { Yii::error('注册代客下单预览用户数据失败,errmsg:' . User::getStaticError()); throw new Exception('保存配置失败'); } // 开启时,检查是否创建了默认用户 $valetOrderDefaultUserModel = ValetOrderDefaultUser::setData(['mall_id' => $mallId, 'user_id' => $user->id]); if ($valetOrderDefaultUserModel === false || empty($valetOrderDefaultUserModel->id)) { Yii::error('保存代客下单预览用户数据失败,errmsg:' . ValetOrderDefaultUser::getStaticError()); throw new Exception('保存配置失败'); } $t->commit(); return $user->id; }catch (\Exception $e) { $t->rollBack(); throw $e; } } /** * 获取默认下单的用户 * * @param int $mallId * * @return int */ public function getValetOrderDefaultUser(int $mallId): int { return ValetOrderDefaultUser::find()->where(['mall_id' => $mallId])->select('user_id')->scalar() ?: 0; } /** * 返回当前用户等级是否显示代客下单按钮 * * @return void */ public function getIsShowValetOrderBtn($mallId, $level, $config = []): bool { if (!$config) { $config = $this->get($mallId); } // 当前等级是否允许代客下单 $is_show_valet_order_btn = true; // 如果配置了 不允许所有等级代客下单,并且不在允许代客下单的等级数组内 if (isset($config['allow_all_level_valet_order']) && !$config['allow_all_level_valet_order']) { $allow_valet_order_user_levels = $config['allow_valet_order_user_levels'] ?? ''; if (!$allow_valet_order_user_levels || !in_array($level, explode(',', $allow_valet_order_user_levels))) { $is_show_valet_order_btn = false; } } return $is_show_valet_order_btn; } }