Shopizerマルチマーチャントシステム設定:多店舗管理をサポートする完全ガイド
ShopizerはJavaベースのオープンソース電子商取引ソリューションで、ヘッドレスコマースとREST APIを提供し、現代的な電子商取引プラットフォームの構築をサポートします。本チュートリアルでは、Shopizerのマルチマーチャントシステム設定を詳細に説明し、多店舗管理機能を実装する方法を解説します。これにより、事業者は複数の独立した店舗を簡単に構築・管理できます。
一、マルチマーチャントシステムの基本概念
ShopizerのマルチマーチャントシステムはShopEntityモデルに基づいて実装されており、各マーチャント店舗は独立した設定、商品、注文、ユーザーデータを持ちます。主要なクラスは以下の通りです:
- ShopEntity:店舗の基本情報(名称、URL、連絡先など)を格納
- ReadableShopEntity:店舗情報読み取りモデル
- PersistableShopEntity:店舗情報永続化モデル
関連実装はこちらで確認できます:sm-shop-model/src/main/java/com/salesmanager/shop/model/store/ShopEntity.java
二、マルチマーチャント環境の迅速な構築
2.1 環境準備
- プロジェクトリポジトリをクローンします:
git clone https://gitcode.com/gh_mirrors/sh/shopizer
- システムに以下がインストールされていることを確認します:
- JDK 11+
- Maven 3.6+
- MySQL 8.0+
2.2 マルチマーチャントサポートの設定
Shopizerのマルチマーチャント機能はデフォルトで統合されており、主な設定ファイルは以下にあります:
- コア設定:
sm-core/src/main/java/com/salesmanager/core/business/configuration/CoreApplicationConfiguration.java - データ設定:
sm-core/src/main/java/com/salesmanager/core/business/configuration/DataConfiguration.java
三、マーチャント店舗の作成と管理
3.1 新規店舗の作成
APIを使用して新規店舗を作成する例:
PersistableShopEntity newShop = new PersistableShopEntity();
newShop.setCode("SHOP2023");
newShop.setName("私の新しいストア");
newShop.setUrl("https://newstore.example.com");
// その他の店舗情報を設定...
// 店舗作成APIを呼び出し
ResponseEntity<Void> creationResponse = restTemplate.exchange(
"/api/v1/private/shop/" + ShopEntity.DEFAULT_SHOP,
HttpMethod.POST,
new HttpEntity<>(newShop, headers),
Void.class
);
詳細な実装はテストクラスを参照:sm-shop/src/test/java/com/salesmanager/test/shop/integration/shop/ShopApiIntegrationTest.java
3.2 店舗情報の管理
Shopizerは以下の店舗管理機能を提供します:
- 店舗情報の更新
- 店舗ロゴの設定
- 配送方法の設定
- 支払いオプションの管理
関連APIインターフェースはsm-shop/src/main/java/com/salesmanager/shop/store/api/v1/ディレクトリの店舗管理コントローラにあります。
四、多店舗間のデータ分離
ShopizerはShopEntityパラメータを使用してデータ分離を実装し、すべてのコアサービスに店舗識別子を渡す必要があります:
// 指定された店舗の商品リストを取得
ReadableProductList fetchProductsByShop(
ShopEntity shop,
Language language,
Long manufacturerId,
int startPosition,
int maxResults
) throws Exception;
例はこちらから:sm-shop-model/src/main/java/com/salesmanager/shop/store/controller/items/facade/ProductItemsFacade.java
五、店舗のカスタマイズ設定
5.1 配送設定
各店舗は配送方法とエリアを独立して設定できます:
// 店舗の配送設定を取得
ExpeditionConfiguration retrieveShippingConfig(ShopEntity shop, Language language);
// 店舗の配送設定を保存
void saveShippingConfig(ExpeditionConfiguration config, ShopEntity shop);
実装クラス:sm-shop-model/src/main/java/com/salesmanager/shop/store/controller/shipping/facade/ShippingFacade.java
5.2 ユーザー権限管理
マルチ店舗環境でのユーザー権限制御:
// ユーザーが店舗にアクセスする権限があるか確認
boolean checkShopAccess(ShopEntity shop, String requestPath);
実装クラス:sm-shop-model/src/main/java/com/salesmanager/shop/store/controller/user/facade/UserFacade.java
六、よくある問題の解決策
6.1 店舗間のデータ競合
すべてのデータベースクエリにShopEntity条件を含め、店舗間のデータ混同を避けてください。
6.2 複数店舗間のアクセス制御
checkShopAccessメソッドを使用してユーザーの店舗アクセス権を検証します。実装はユーザー管理モジュールにあります。
6.3 店舗設定のバックアップ
定期的に店舗設定データをバックアップしてください。関連設定ファイルはsm-shop/files/shop/ディレクトリにあります。
七、まとめ
ShopizerのマルチマーチャントシステムはShopEntityモデルを通じて強力な多店舗管理機能を提供し、店舗の独立した設定、データ分離、権限制御をサポートします。本チュートリアルの設定ガイドにより、マルチマーチャント対応の電子商取引プラットフォームを迅速に構築し、各事業者の個別のニーズに対応できます。
さらなる機能の詳細については、プロジェクト内のテストケースとAPIドキュメントを参照してください。マルチマーチャントの電子商取引プラットフォーム構築を始めましょう! 🚀