diff --git a/beike/Models/Plugin.php b/beike/Models/Plugin.php new file mode 100644 index 00000000..745d04ed --- /dev/null +++ b/beike/Models/Plugin.php @@ -0,0 +1,19 @@ + + * @created 2022-07-01 14:22:15 + * @modified 2022-07-01 14:22:15 + */ + +namespace Beike\Models; + +use Illuminate\Database\Eloquent\Model; + +class Plugin extends Model +{ + +} diff --git a/beike/Plugin/Plugin.php b/beike/Plugin/Plugin.php index ed605612..46a915ef 100644 --- a/beike/Plugin/Plugin.php +++ b/beike/Plugin/Plugin.php @@ -13,6 +13,7 @@ namespace Beike\Plugin; use Illuminate\Support\Arr; use Illuminate\Support\Str; +use Beike\Repositories\PluginRepo; use Beike\Repositories\SettingRepo; use Illuminate\Contracts\Support\Arrayable; @@ -108,7 +109,7 @@ class Plugin implements Arrayable, \ArrayAccess public function getInstalled(): bool { - return true; + return PluginRepo::installed($this->code); } public function getEnabled(): bool diff --git a/beike/Repositories/PluginRepo.php b/beike/Repositories/PluginRepo.php new file mode 100644 index 00000000..83ec4f43 --- /dev/null +++ b/beike/Repositories/PluginRepo.php @@ -0,0 +1,45 @@ + + * @created 2022-07-01 14:23:41 + * @modified 2022-07-01 14:23:41 + */ + +namespace Beike\Repositories; + +use Beike\Models\Plugin; +use Illuminate\Database\Eloquent\Collection; + +class PluginRepo +{ + public static $installedPlugins; + + /** + * 判断插件是否安装 + * + * @param $code + * @return bool + */ + public static function installed($code): bool + { + $plugins = self::listByCode(); + return $plugins->has($code); + } + + + /** + * 获取所有已安装插件 + * @return Plugin[]|Collection + */ + public static function listByCode() + { + if (self::$installedPlugins !== null) { + return self::$installedPlugins; + } + return self::$installedPlugins = Plugin::all()->keyBy('code'); + } +} diff --git a/database/migrations/2022_06_30_112601_order.php b/database/migrations/2022_07_01_061732_create_plugins.php similarity index 50% rename from database/migrations/2022_06_30_112601_order.php rename to database/migrations/2022_07_01_061732_create_plugins.php index 1b14dce2..4b8a6b37 100644 --- a/database/migrations/2022_06_30_112601_order.php +++ b/database/migrations/2022_07_01_061732_create_plugins.php @@ -4,7 +4,7 @@ use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; -class Order extends Migration +class CreatePlugins extends Migration { /** * Run the migrations. @@ -13,7 +13,12 @@ class Order extends Migration */ public function up() { - // + Schema::create('plugins', function (Blueprint $table) { + $table->id(); + $table->string('type')->comment('类型: shipping, payment'); + $table->string('code')->comment('唯一标识'); + $table->timestamps(); + }); } /** @@ -23,6 +28,6 @@ class Order extends Migration */ public function down() { - // + Schema::dropIfExists('plugins'); } }