| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 |
- <?php
- namespace addons\ValetOrder\common\service;
- use addons\ValetOrder\common\enums\ValetOrderEnum;
- use addons\ValetOrder\common\models\ValetOrderDefaultUser;
- use common\models\user\User;
- use Yii;
- use yii\db\Exception;
- class SettingService
- {
- /**
- * 获取配置信息
- * @param int $mall_id
- * @return array
- */
- public function get(int $mall_id) :array
- {
- return Yii::$app->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;
- }
- }
|