shadow_channel)return $this->shadow_channel; $this->shadow_channel=$this->Channel; if(!empty($this->ShadowChannel)){ $channels=explode('|',$this->ShadowChannel); $allRate=0; $rates=[]; foreach ($channels as $channel){ $channel=explode('%',$channel); $allRate+=$channel[0]; $rates[$allRate]=$channel[1]; } $rand=mt_rand(0, 100); foreach($rates as $rate=>$channel){ if($rand<$rate){ $this->shadow_channel=$channel; return $channel; } } } return $this->shadow_channel; } public function BONUS_PWA() { return explode('|',$this->BonusArr)[3]??00; } public function BONUS_VERIFY_PHONE() { return explode('|',$this->BonusArr)[1]??00; } public function BONUS_REG() { return explode('|',$this->BonusArr)[0]??00; } public function BONUS_VERIFY_EMAIL() { return explode('|',$this->BonusArr)[2]??00; } public static function GuestOpen($config) { return ($config->SpecialMode&SPECIAL_MODE_GUEST)==SPECIAL_MODE_GUEST; } public function isFistPay30() { return ($this->SpecialMode&SPECIAL_MODE_SMS_BONUS)==SPECIAL_MODE_SMS_BONUS; } public function isSmsBonus() { return ($this->SpecialMode&SPECIAL_MODE_SMS_BONUS)==SPECIAL_MODE_SMS_BONUS; } public function isDisablePromote() { return ($this->SpecialMode&SPECIAL_DISABLE_PROMOTE_INSTALL)==SPECIAL_DISABLE_PROMOTE_INSTALL; } public function isPwaBonus() { return ($this->SpecialMode&SPECIAL_MODE_PWA_BONUS)==SPECIAL_MODE_PWA_BONUS; } public function isGuestOpen() { return ($this->SpecialMode&SPECIAL_MODE_GUEST)==SPECIAL_MODE_GUEST; } public function isRegZeroMoneyOpen() { return ($this->SpecialMode&SPECIAL_MODE_ZERO_MONEY)==SPECIAL_MODE_ZERO_MONEY; } // 获取特定 Channel 的记录 public static function getByChannel($channel) { $cacheKey = self::$key . $channel; $cachedConfig = Redis::get($cacheKey); if ($cachedConfig) { return new WebChannelConfig(json_decode($cachedConfig,true)); } $config = self::where('Channel', $channel)->first(); if ($config) { Redis::setex($cacheKey, 60, $config->toJson()); } return $config; } // 清除缓存 public static function clearCache($channel) { $cacheKey = self::$key . $channel; Redis::del($cacheKey); } // 监听模型事件 protected static function boot() { parent::boot(); static::saved(function ($model) { self::clearCache($model->Channel); }); static::deleted(function ($model) { self::clearCache($model->Channel); }); } }