BaseAuthConfig.php 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. <?php
  2. namespace General\Services;
  3. use General\Models\Channel\Channel;
  4. use General\Models\Channel\ChannelUser;
  5. use General\Models\Config\CompanyAuthConfig;
  6. /**
  7. * 基础授权配置信息
  8. * @property-read string $app_id;
  9. * @property-read CompanyAuthConfig $config 授权配置信息
  10. * @property-read int $company_id 授权公司ID
  11. * @property-read array $channel_user_ids 所有渠道用户id
  12. * @property-read array $channel_ids 所有渠道id
  13. * @property-read array $phones 所有渠道手机号
  14. */
  15. trait BaseAuthConfig
  16. {
  17. protected $fields = [];
  18. public function __get($name)
  19. {
  20. if (!isset($this->fields[$name])) {
  21. $config = $this->getGlobalConfig();
  22. switch ($name) {
  23. case 'app_id':
  24. $this->fields[$name] = $config->app_id;
  25. break;
  26. case 'config':
  27. $this->fields[$name] = $config->config;
  28. break;
  29. case 'company_id':
  30. $this->fields[$name] = $config->company_id;
  31. break;
  32. case 'channel_user_ids':
  33. $this->fields[$name] = ChannelUser::where('company_id', $this->company_id)->pluck('id')->all();
  34. break;
  35. case 'phones':
  36. $this->fields[$name] = ChannelUser::where('company_id', $this->company_id)->pluck('phone')->all();
  37. break;
  38. case 'channel_ids':
  39. $this->fields[$name] = Channel::whereIn('channel_user_id', $this->channel_user_ids)->pluck('id')->all();
  40. break;
  41. }
  42. }
  43. return $this->fields[$name];
  44. }
  45. public function setGlobalConfig(CompanyAuthConfig $config)
  46. {
  47. $company_config = app()->make('company_config');
  48. $company_config->app_id = $config->app_id;
  49. $company_config->config = $config->config;
  50. $company_config->company_id = $config->company_id;
  51. }
  52. public function getGlobalConfig()
  53. {
  54. return app()->make('company_config');
  55. }
  56. }