Skip to content

顧客情報変更実装編#

1.1. 処理概要#

顧客情報の検索で取得した情報をもとに、画面上で入力ができる形で顧客情報を表示します。
変更ボタンが押された際に、画面の入力内容をもとに顧客情報の変更を行います。
本処理を行うには、API認証よりAPIを呼び出すためのアクセストークンが必要となります。

1.1.1. 呼出API#

以下、顧客情報変更で呼び出すAPIとなります。

No API 処理内容 使用用途
1 PUT /v2/api/customers/{customer_id} 顧客を変更する 顧客変更画面で変更ボタン押下時に顧客情報を変更
2 GET /v2/api/customers 顧客を検索する 顧客変更画面表示時に変更対象の顧客情報を検索

1.1.2. 処理フロー#

顧客情報変更を行うまでの処理は以下のフローとなります。

1.1.3. 実装例#

以下API呼出の実装例となります。
顧客変更画面表示時の「顧客を検索する」API呼び出しについては、「顧客情報検索実装編」及び提供ソースをご確認ください。
※本マニュアルに記載している実装例は、分かりやすさを優先し簡易的に記載しております。提供しているソースと異なりますので詳細については提供ソースをご確認ください。

CustomerChangeController.java

/**
 * 変更ボタン処理
 */
// Spring annotation
@RequestMapping(value = "/CustomerChange/change" , method = RequestMethod.POST)
public String change(
    Model   model,
    @Valid  CustomerChangeForm form,
    BindingResult result
) {
    // 項目チェック
    if (result.hasErrors()) {
        return ControllerConstants.CUSTOMER_CHANGE_JSP;
    }
    // エラーメッセージをクリア
    form.setErrorInformation(null);

    Web_IFCustomerChange_I iFCustomerChange_I = new Web_IFCustomerChange_I();
    Web_IFCustomerChange_O iFCustomerChange_O = new Web_IFCustomerChange_O();

    // 現在日時(UTC)を取得
    String timestamp = this.getNowDate();

    iFCustomerChange_I.entry_id = CommonConstants.登録者ID;
    iFCustomerChange_I.address1 = form.getAddress1();
    iFCustomerChange_I.address2 = form.getAddress2();
    iFCustomerChange_I.address3 = form.getAddress3();
    iFCustomerChange_I.address4 = form.getAddress4();
    iFCustomerChange_I.address_of_workplace1 = form.getAddressOfWorkplace1();
    iFCustomerChange_I.address_of_workplace2 = form.getAddressOfWorkplace2();
    iFCustomerChange_I.address_of_workplace3 = form.getAddressOfWorkplace3();
    iFCustomerChange_I.address_of_workplace4 = form.getAddressOfWorkplace4();
    iFCustomerChange_I.company_name = form.getCompanyName();
    iFCustomerChange_I.customer_name1 = form.getCustomerName1();
    iFCustomerChange_I.customer_name2 = form.getCustomerName2();
    iFCustomerChange_I.customer_name3 = form.getCustomerName3();
    iFCustomerChange_I.customer_name4 = form.getCustomerName4();
    iFCustomerChange_I.customer_name5 = form.getCustomerName5();
    iFCustomerChange_I.customer_name6 = form.getCustomerName6();
    iFCustomerChange_I.date_of_birth = form.getDateOfBirth();
    iFCustomerChange_I.department = form.getDepartment();
    iFCustomerChange_I.email_address1 = form.getEmailAddress1();
    iFCustomerChange_I.email_address2 = form.getEmailAddress2();
    iFCustomerChange_I.gender = form.getGender();
    iFCustomerChange_I.nationality = form.getNationality();
    iFCustomerChange_I.occupation = form.getOccupation();
    iFCustomerChange_I.phone_number1 = form.getPhoneNumber1();
    iFCustomerChange_I.phone_number2 = form.getPhoneNumber2();
    iFCustomerChange_I.position = form.getPosition();
    iFCustomerChange_I.postcode_of_workplace = form.getPostcodeOfWorkplace();
    iFCustomerChange_I.status = SampleUtil.emptyToNull(form.getStatus());
    if (form.getStatus().equals(CustomerConstants.仮登録_code)) {
        iFCustomerChange_I.temporary_registration_date_and_time = timestamp;
    } else if (form.getStatus().equals(CustomerConstants.本登録_code)) {
        iFCustomerChange_I.official_registration_date_and_time  = timestamp;
    }
    iFCustomerChange_I.zip_code = form.getZipCode();
    // フリー項目
    JsonObject freeItem = new JsonObject();
    if (!form.getFree1().isEmpty() || !form.getFree2().isEmpty() ||
            !form.getFree3().isEmpty() || !form.getFree4().isEmpty()) {
        freeItem.addProperty("free1", SampleUtil.emptyToNull(form.getFree1()));
        freeItem.addProperty("free2", SampleUtil.emptyToNull(form.getFree2()));
        freeItem.addProperty("free3", SampleUtil.emptyToNull(form.getFree3()));
        freeItem.addProperty("free4", SampleUtil.emptyToNull(form.getFree4()));
    }
    iFCustomerChange_I.freeItem = freeItem;
    iFCustomerChange_I.free_item1 = form.getFreeItem1();
    iFCustomerChange_I.version_info = form.getVersionInfo();

    try {
        iFCustomerChange_O = customerService.customerChange(iFCustomerChange_I, form.getCustomerId());
        if (ControllerConstants.API_RESULT_NG.equals(iFCustomerChange_O.result_information.result)) {
            form.setErrorInformation(iFCustomerChange_O.result_information.detailed_result);
            return ControllerConstants.CUSTOMER_CHANGE_JSP;
        }
    } catch (ApiException e) {
        if(ApiErrorType.排他エラー.getValue().equals(e.getErrorCode())) {
            // メッセージ表示
            form.setErrorInformation(getMsg(MessageConstants.MSGE00001,
                    getMsg(MessageConstants.SCN000010)));
            return ControllerConstants.CUSTOMER_CHANGE_JSP;
        } else {
            model.addAttribute("errorCode", e.getErrorCode().getValue());
            return ControllerConstants.SYSTEM_ERROR_JSP;
        }
    } catch (Exception e) {
        return ControllerConstants.SYSTEM_ERROR_JSP;
    }

    model.addAttribute("customerChangeForm", form);

    form.setMessage(getMsg(MessageConstants.MSGI00002,
            getMsg(MessageConstants.LBL000004),
                iFCustomerChange_O.customer_id));

    return ControllerConstants.CUSTOMER_CHANGE_JSP;
}

CustomerService.java

/**
 * 顧客_変更 API
 * 
 * @param web_IFCustomerChange_I IF顧客_変更_入力
 * @return IF顧客_変更_出力
 */
public Web_IFCustomerChange_O customerChange(Web_IFCustomerChange_I web_IFCustomerChange_I, String customerId) {
    // 通信設定
    String strURI = ClientUtil.makeURI(UriInfo.CustomerChange + customerId, null, null);
    HttpPut postMethod = ClientUtil.makeHttpPut(strURI, web_IFCustomerChange_I);

    return CommonHttpClient.httpPut(postMethod, Web_IFCustomerChange_O.class);
}

共通HTTPリクエストクラス[CommonHttpClient.java]の実装例についてはこちらをご参照ください。

Top