|
4 | 4 | namespace Module\Vendor\Provider\RandomImage; |
5 | 5 |
|
6 | 6 |
|
| 7 | +use ModStart\Core\Assets\AssetsUtil; |
| 8 | +use ModStart\Core\Input\Response; |
| 9 | +use ModStart\Core\Util\SerializeUtil; |
| 10 | +use Module\Vendor\Provider\ProviderTrait; |
| 11 | + |
| 12 | + |
| 13 | +/** |
| 14 | + * @method static AbstractRandomImageProvider first() |
| 15 | + * @method static AbstractRandomImageProvider[] listAll() |
| 16 | + */ |
7 | 17 | class RandomImageProvider |
8 | 18 | { |
9 | | - /** |
10 | | - * @return AbstractRandomImageProvider |
11 | | - */ |
12 | | - public static function get() |
| 19 | + use ProviderTrait; |
| 20 | + |
| 21 | + public static function getImage($provider, $biz, $type = 'background', $param = []) |
13 | 22 | { |
14 | | - static $instance = null; |
15 | | - if (null === $instance) { |
16 | | - $driver = config('RandomImageProvider'); |
17 | | - if (empty($driver)) { |
18 | | - $driver = DefaultRandomImageProvider::class; |
19 | | - } |
20 | | - $instance = app($driver); |
| 23 | + $ret = null; |
| 24 | + $error = null; |
| 25 | + if ($provider) { |
| 26 | + $ret = $provider->get($biz, $type, $param); |
| 27 | + } else { |
| 28 | + $error = 'NoProvider'; |
| 29 | + } |
| 30 | + if (Response::isSuccess($ret)) { |
| 31 | + return $ret['data']; |
21 | 32 | } |
22 | | - return $instance; |
| 33 | + if (isset($ret['msg'])) { |
| 34 | + $error = $ret['msg']; |
| 35 | + } else { |
| 36 | + $error = 'ERROR:' . SerializeUtil::jsonEncode($ret); |
| 37 | + } |
| 38 | + return [ |
| 39 | + 'url' => AssetsUtil::fixFull('asset/image/none.svg'), |
| 40 | + 'error' => $error, |
| 41 | + ]; |
23 | 42 | } |
24 | 43 |
|
25 | | - public static function getImage($biz = '', $param = []) |
| 44 | + public static function getProviderImage($name, $biz, $type = 'background', $param = []) |
26 | 45 | { |
27 | | - return self::get()->get(array_merge(['biz' => $biz], $param)); |
| 46 | + $provider = self::getByName($name); |
| 47 | + return self::getImage($provider, $biz, $type, $param); |
28 | 48 | } |
| 49 | + |
| 50 | + public static function getConfigProviderImage($configName, $biz, $type = 'background', $param = []) |
| 51 | + { |
| 52 | + $name = modstart_config($configName, ''); |
| 53 | + if ($name) { |
| 54 | + $provider = self::getByName($name); |
| 55 | + } else { |
| 56 | + $provider = self::first(); |
| 57 | + } |
| 58 | + return self::getImage($provider, $biz, $type, $param); |
| 59 | + } |
| 60 | + |
| 61 | + public static function getFirstImage($biz, $type = 'background', $param = []) |
| 62 | + { |
| 63 | + return self::getImage(self::first(), $biz, $type, $param); |
| 64 | + } |
| 65 | + |
29 | 66 | } |
0 commit comments