開発者向けサポート

CASE.03 専用のテーブルへCSVアップロードの形で情報を登録したい

概要

会員毎に購入可能な商品を紐づけて購入可能な商品のみ表示をしたいが、会員情報の自由項目等に登録するのではなく、
専用のテーブルを用意し、そのテーブルを操作することによって表示可能な商品を編集・取得したい
というご要望があった際に利用されたAPIについての紹介になります。

利用するAPI

カスタマイズ例

APPCASE_16フロー図

こちらの例では管理画面カスタマイズAPIを利用することでご要望を実現しています。
管理画面カスタマイズAPI専用のテーブルを用意し、【/admin_screen_customizes】を利用することで
専用テーブルに対する操作が可能な画面を作成します。
"ADMIN_SCREEN_CUSTOMIZE_POINT"に対して、"admin_extra_screen/upload"を指定したこの画面は
該当テーブルへCSVアップロードによってレコードを登録できる画面になります。

管理画面カスタマイズAPI CSVアップロード画面

管理画面カスタマイズAPIとは、本件のような店舗様専用のテーブルに対して、
レコードを登録、検索、CSVアップロード等の操作が可能な画面を作成・カスタマイズできる仕組みになります。

まず初めに、こちらの画面へアクセスを可能とするためにサイドメニューへ画面名を表示する必要があります。
こちらの作業はメニューマスタへ登録が必要なため、メニュー名を決定次第弊社サポートまでご依頼ください。

管理画面カスタマイズAPIの登録には /admin_screen_customizes を利用します。
今回の例のように、会員ID(MEMBER_ID)と商品コード(ITEM_CD)を保持するためのテーブルを
SAMPLE_APP_MEMBER_ITEMという名前で作成したとすると、CSVアップロード画面は次のリクエストを送ることで生成されます。

CSVアップロード画面の画像
POST /admin_screen_customizes.json
[
	"ADMIN_SCREEN_CUSTOMIZE_POINT": "admin_extra_screen/upload",
	"DISP_NAME": "SAMPLE_会員毎表示商品一括アップロード",
	"KEY1": "SAMPLE_APP_MEMBER_ITEM",
	"OPTION_DATA": {
		"description": "会員毎表示商品の一括アップロードを行います。",
		"tableName": "SAMPLE_APP_MEMBER_ITEM",
		"tableDispName": "会員毎表示商品設定マスタ",
		"columnDefinition": [
		  {
			"NAME": "MEMBER_ID",
			"DISP_NAME": "会員ID",
			"DISP_COMMENT": "キー項目",
			"CHECK_PROPERTY": 2,
			"CHECK_NEED": true,
			"CHECK_INT_SIZE": 8,
			"CHECK_DEC_SIZE": 0,
			"CHECK_NEGATIVE_FLG":false,
			"FORM_TYPE":1,
			"FORM_SIZE":8,
			"FORM_MAXLENGTH":8,
			"FORM_TRIM": true,
			"FORM_IME_MODE":2
		  },
		  {
			"NAME": "ITEM_CD",
			"DISP_NAME": "商品コード",
			"DISP_COMMENT": "キー項目",
			"CHECK_PROPERTY": 1,
			"CHECK_NEED": true,
			"CHECK_BYTE_SIZE": 50,
			"FORM_TYPE":1,
			"FORM_SIZE":20,
			"FORM_MAXLENGTH":50,
			"FORM_TRIM": true,
			"FORM_IME_MODE":2
		  }
		],
		"keyColumnNames": ["MEMBER_ID", "ITEM_CD"],
		"csvColumnNames":["MEMBER_ID", "ITEM_CD"],
		"isDeleteInsertMode":true
	}
]

まず、OPTION_DATAを除き、それぞれの設定項目に設定した値は次のような内容になります。

ADMIN_SCREEN_CUSTOMIZE_POINT
登録する画面が管理画面カスタマイズAPIのどの画面に該当するかを指定します。
CSVアップロード画面を指定する値は"admin_extra_screen/upload"となります。
DISP_NAME
「会員新規登録」、「商品新規登録」等のように、ページに表示するページ名称を指定します。
KEY1
操作対象のテーブル名を指定します。

次に、OPTION_DATAに関してですが、この要素には表示する画面をJson形式で記述します。

上記Jsonの内容を簡潔にまとめると、"csvColumnNames"に記載したカラムをCSVアップロード可能にする画面を生成するという内容になります。
"keyColumnNames"に記載されたカラムはアップロード時のキーとして使用されます。
そのため、この要素がない場合はアップロードした情報は常に新規のレコードとして登録されます。
また、"isDeleteInsertMode"をtrueで定義した場合、アップロード方法を追加登録か一括更新から選択できるようになります。
一括更新を選択した場合、一度全レコードを削除したのち、アップロードされたCSVの情報を登録します。
追加登録を選択した場合、従来通りの挙動となります。
なお、これらのようなカラムを指定する要素を利用する場合、"columnDefinition"にてカラムの定義をする必要がある点はご注意ください。

その他Jsonの各要素に関しては、 管理画面カスタマイズAPIページ に記載されている内容をご参照ください。

関連する内容として、専用テーブルの操作を実施することが可能なデータアクセスAPIに /extra/{table_name} がございます。
また、管理画面カスタマイズAPIの登録画面、検索画面ついては以下のページにて別途まとめております。
これらの記事についても併せて閲覧頂くことを推奨いたします。