/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：JCKSV903001CC
*   ソースファイル名：JCKSV903001CC.java
*   作成者          ：富士通
*   日付            ：2011年12月19日
*＜機能概要＞
*  対象会員の連絡用メールアドレスを本登録移行する。
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v1.00.00    2011/12/19   FJ）三浦    新規作成
*   v27.00.00   2016/10/10   FJ) 阮      ANK-2987-00-00対応 
*   v27.00.00   2016/10/26   FJ) 阮      IT2-2016-0000057 対応     
*   v27.00.01   2016/11/02   FJ) 藤本    【ST-2016-0000034】eoメールアドレスに紐付くオプトインメール受信設定を無効化している
*   v47.00.00   2019/11/07   FJ) 三原    【ANK-3706-00-00】ｅｏＩＤログインのセキュリティ強化対応
*   v48.00.00   2020/02/17   FJ)美濃原   【ANK-3814-00-00】eoIDログインセキュリティ強化フォロー対応
**********************************************************************/

package com.fujitsu.futurity.bp.custom.common;

import static com.fujitsu.futurity.bp.custom.common.JCKPmpCommonUtil.addUpdRrksMlad;
import static com.fujitsu.futurity.bp.custom.common.JCKPmpCommonUtil.callECK0011B050;
import static com.fujitsu.futurity.bp.custom.common.JCKPmpCommonUtil.callECK0011B120;
import static com.fujitsu.futurity.bp.custom.common.JCKPmpCommonUtil.callECK0141B020;
import static com.fujitsu.futurity.bp.custom.common.JCKPmpCommonUtil.callECK0141C030;
import static com.fujitsu.futurity.bp.custom.common.JCKPmpCommonUtil.callECK0151D010Map;
import static com.fujitsu.futurity.bp.custom.common.JCKPmpCommonUtil.callECKA9020001;
import static com.fujitsu.futurity.bp.custom.common.JCKPmpCommonUtil.callEKK0361B020;
import static com.fujitsu.futurity.bp.custom.common.JCKPmpCommonUtil.getLastResult;
import static com.fujitsu.futurity.bp.custom.common.JCKPmpCommonUtil.getSecurityRenkeiTelno;
import static com.fujitsu.futurity.bp.custom.common.JCKPmpScParamHenshu.getResultMsgList;
import static com.fujitsu.futurity.bp.custom.common.JCKPmpScParamHenshu.getResultString;
import static com.fujitsu.futurity.bp.custom.common.JCKPmpScParamHenshu.getReturnCode;
import static com.fujitsu.futurity.bp.custom.common.JCKPmpScParamHenshu.getStatus;
import static com.fujitsu.futurity.bp.custom.common.JCKPmpScParamHenshu.isError;
import static com.fujitsu.futurity.bp.custom.common.JCKPmpScParamHenshu.isSuccess;
import static com.fujitsu.futurity.bp.custom.common.JCKPmpScParamHenshu.setResultCtrlData;
import static com.fujitsu.futurity.bp.custom.common.JCKPmpScParamHenshu.setResultUserData;
import static eo.common.constant.JCKStrConst.ADMIN_SJISHO_PARAM1_UPD_PART;
import static eo.common.constant.JCKStrConst.MMB_SBT_CD_MASTER_HOJIN;
import static eo.common.constant.JCKStrConst.MMB_SBT_CD_MASTER_KOJIN;
import static eo.common.constant.JCKStrConst.PMP_ERR_EXCLUSION;
import static eo.common.constant.JCKStrConst.PMP_ERR_MAILREGIST_TERM;
import static eo.common.constant.JCKStrConst.PMP_ERR_NODATA;
import static eo.common.constant.JCKStrConst.PMP_ERR_PARAM;
import static eo.common.constant.JCKStrConst.PMP_ERR_SYSTEM;
import static eo.common.constant.JCKStrConst.PMP_NORMAL_END;
import static eo.common.constant.JCKStrConst.SJISHO_TRN_CD_ADMIN_API;

import java.util.HashMap;
import java.util.Map;

import com.fujitsu.futurity.bp.custom.constant.CKSV9030_CKSV9030OP_CKSV903001CC;
import com.fujitsu.futurity.bp.x21.bpm.db.SessionHandle;
import com.fujitsu.futurity.bp.x21.bpm.parameter.IRequestParameterReadWrite;
import com.fujitsu.futurity.bp.x21.cc.AbstractCommonComponent;
import com.fujitsu.futurity.bp.x21.cc.ICommonComponent;
import com.fujitsu.futurity.bp.x21.cc.exception.CCException;
import com.fujitsu.futurity.model.base.CAANMsg;

import eo.ejb.cbs.cbsmsg.ECK0011B050CBSMsg;
import eo.ejb.cbs.cbsmsg.ECK0011B050CBSMsg1List;
import eo.ejb.cbs.cbsmsg.ECK0011B120CBSMsg;
import eo.ejb.cbs.cbsmsg.ECK0011B120CBSMsg1List;
import eo.ejb.cbs.cbsmsg.ECK0141B020CBSMsg;
import eo.ejb.cbs.cbsmsg.ECK0141B020CBSMsg1List;
import eo.ejb.cbs.cbsmsg.ECK0141C030CBSMsg;
import eo.ejb.cbs.cbsmsg.ECK0151D010CBSMsg;
import eo.ejb.cbs.cbsmsg.ECKA9020001CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0361B020CBSMsg;

/**
 * 対象会員の連絡用メールアドレスを本登録移行する。
 * <BR>
 * @author 富士通
 */
public class JCKSV903001CC extends AbstractCommonComponent implements ICommonComponent
{
	/** 当CCの内部でしか使わないエラーコード */
	private static final String PMP_ERR_OTHER = "OTHER";

	/**
	 * eoID変更メイン処理。<br />
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText ユーザ定義文字列
	 * @return リクエストパラメータ
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	public IRequestParameterReadWrite executeMain(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Throwable
	{
		// 入力パラメータ取得
		Map inMap = (Map)param.getData(fixedText);
		String sysid = (String)inMap.get(CKSV9030_CKSV9030OP_CKSV903001CC.SYSID);
		String workDiv = (String)inMap.get(CKSV9030_CKSV9030OP_CKSV903001CC.WORK_DIV);
		// ANK-2987-00-00 DEL START
//		String svcKeiNo = (String)inMap.get(CKSV9030_CKSV9030OP_CKSV903001CC.SVC_KEI_NO);
//		String tsyrnSvkeicdSeq = (String)inMap.get(CKSV9030_CKSV9030OP_CKSV903001CC.TSYRN_SVKEI_CD_SEQ);
//		List mailRcvSetteList = (List)inMap.get(CKSV9030_CKSV9030OP_CKSV903001CC.MAIL_RCV_SETTE_LIST);
		// ANK-2987-00-00 DEL END

		// リターンコード初期化
		String returnCd = PMP_NORMAL_END;

		//***************************************************
		// 内部で使用する変数の初期化
		//***************************************************
		String opeDate = JCCBPCommon.getOpeDate(null);
		String lastCustUpdDtm = null;
		String memberSbtCd = null;
		String nowMlad = null;
		String chgechuMlad = null;
		String optinmNo = null;
		String rcvDiv = null;
		// ANK-3706-00-00 ADD START
		// ■ANK-3814-00-00 連携電話番号（契約者電話番号、コンテンツ電話番号等）を設定
		String keishaTelno = "";
		// ANK-3706-00-00 ADD END

		//***************************************************
		// PMP連携用排他制御
		//***************************************************
		Map result = callECKA9020001(handle, param, sysid, "1");
		if (isSuccess(result))
		{
			String errFlg = getResultString(result, ECKA9020001CBSMsg.LOCK_ERR_FLG);
			if (!"0".equals(errFlg))
			{
				returnCd = PMP_ERR_EXCLUSION;
			}
		}
		else
		{
			returnCd = PMP_ERR_OTHER;
		}

		//***************************************************
		// 最終更新日時取得
		//***************************************************
		String lastCkUpdDtm = null;
		String lastKkUpdDtm = null;
		if (JCKBPCommon.inArray(returnCd, PMP_NORMAL_END, PMP_ERR_EXCLUSION))
		{
			result = callECK0011B120(handle, param, sysid);
			if (isSuccess(result))
			{
				String mapKeyPre = ECK0011B120CBSMsg.ECK0011B120CBSMSG1LIST + "[0].";
				String chkCkUpdDtm = getResultString(result, mapKeyPre + ECK0011B120CBSMsg1List.CK_UPD_DTM);
				String chkKkUpdDtm = getResultString(result, mapKeyPre + ECK0011B120CBSMsg1List.KK_UPD_DTM);
				lastCustUpdDtm = getResultString(result, mapKeyPre + ECK0011B120CBSMsg1List.CK_UPD_DTM);

				if (PMP_ERR_EXCLUSION.equals(returnCd))
				{
					if ((chkCkUpdDtm  != null) && (chkKkUpdDtm != null))
					{
						lastCkUpdDtm = chkCkUpdDtm;
						lastKkUpdDtm = chkKkUpdDtm;
						returnCd = PMP_ERR_EXCLUSION;
					}
					else
					{
						returnCd = PMP_ERR_NODATA;   // 該当データが存在しない場合はデータ無しエラー
					}
				}
			}
			else
			{
				returnCd = PMP_ERR_OTHER;   // その他のエラー
			}
		}
		
		//***************************************************
		// お客様情報取得
		//***************************************************
		if (PMP_NORMAL_END.equals(returnCd))
		{
			//お客様情報照会（PMP連携）
			result = callECK0011B050(handle, param, "1", sysid);
			if (isSuccess(result))
			{
				
				CAANMsg[] dataList = getResultMsgList(result, ECK0011B050CBSMsg.ECK0011B050CBSMSG1LIST);
				if ((dataList == null) || (dataList.length == 0))
				{
					returnCd = PMP_ERR_NODATA;   // データなし
				}
				else
				{
					String mapKeyPre = ECK0011B050CBSMsg.ECK0011B050CBSMSG1LIST + "[0].";
					memberSbtCd = getResultString(result, mapKeyPre + ECK0011B050CBSMsg1List.MEMBER_SBT_CD);
					nowMlad =  getResultString(result, mapKeyPre + ECK0011B050CBSMsg1List.MLAD);
					chgechuMlad = getResultString(result, mapKeyPre + ECK0011B050CBSMsg1List.CHGECHU_MLAD);
					// ANK-3814-00-00 DEL START
					// ANK-3706-00-00 ADD START
					//keishaTelno = getResultString(result, mapKeyPre + ECK0011B050CBSMsg1List.KEISHA_TELNO);
					// ANK-3706-00-00 ADD END
					// ANK-3814-00-00 DEL END
					// ANK-3814-00-00 ADD START
					// eoIDセキュリティ強化連携電話番号取得
					String wkTelno = getResultString(result, mapKeyPre + ECK0011B050CBSMsg1List.KEISHA_TELNO);
					keishaTelno = getSecurityRenkeiTelno(handle, param, sysid, memberSbtCd, wkTelno);
					// ANK-3814-00-00 ADD END
				}
			}
			else
			{
				returnCd = PMP_ERR_OTHER;   // その他のエラー
			}
		}

// ANK-2987-00-00 DEL START
//		//***************************************************
//		// サービス契約番号存在チェック
//		//***************************************************
//		if (PMP_NORMAL_END.equals(returnCd))
//		{
//			if("0".equals(workDiv) && !SVC_KEI_NO_RRKS_MLAD.equals(svcKeiNo))
//			{
//				if (!checkSvcKeiNo(handle, param, sysid, svcKeiNo))
//				{
//					returnCd = PMP_ERR_NODATA_SVCKEINO;// サービス契約番号なしエラー
//				}
//			}
//		}
// ANK-2987-00-00 DEL END
		
		//***************************************************
		// メールアドレス本登録有効期限超過エラーチェック
		//***************************************************
		if (PMP_NORMAL_END.equals(returnCd))
		{
			if (JCKBPCommon.isNullOrBlank(chgechuMlad))
			{
				returnCd = PMP_ERR_MAILREGIST_TERM;   // メールアドレス本登録有効期限超過エラー
			}
		}
		
// ANK-2987-00-00 DEL START
//		//***************************************************
//		//オプトインメール受信設定一覧照会
//		//***************************************************
//		if (PMP_NORMAL_END.equals(returnCd))
//		{
//			//マスター会員以外の場合
//			if("1".equals(workDiv))
//			{
//				// オプトインメール受信設定一覧取得（公開）
//				result = callECK0141B020(handle, param, "4", sysid);
//				
//				
//				if (isSuccess(result))
//				{
//					mailRcvSetteList = new ArrayList();
//					
//					CAANMsg[] optinmList = getResultMsgList(result, ECK0141B020CBSMsg.ECK0141B020CBSMSG1LIST);
//					for(int i = 0; i < optinmList.length; i++)
//					{
//						CAANMsg msg = optinmList[i];
//						String workSvcKei = msg.getString(ECK0141B020CBSMsg1List.SVC_KEI_NO);
//						//連絡先メールアドレスの場合
//						if(SVC_KEI_NO_RRKS_MLAD.equals(workSvcKei))
//						{
//							optinmNo = msg.getString(ECK0141B020CBSMsg1List.OPTINM_NO);
//							rcvDiv = msg.getString(ECK0141B020CBSMsg1List.RCV_DIV);
//
//							Map optinMap = new HashMap<String, List>();
//							optinMap.put("kmk_number", optinmNo);
//							optinMap.put("rcv_div", rcvDiv);
//							mailRcvSetteList.add((Map<String, List>)optinMap);
//						}
//					}
//					
//				}
//				else
//				{
//					returnCd = PMP_ERR_OTHER;   // データなし
//				}
//			}
//		}
// ANK-2987-00-00 DEL END

// ANK-2987-00-00 MOD START
//		//***************************************************
//		// オプトインメール受信設定登録更新
//		//***************************************************
		//**************************************************
		// オプトインメール受信設定削除
		//**************************************************
		if (PMP_NORMAL_END.equals(returnCd))
		{
//			Map tmpResult = 
//				addUpdOptinmRcvSette(handle, param, opeDate, sysid, memberSbtCd, nowMlad, chgechuMlad, svcKeiNo,
//						tsyrnSvkeicdSeq, (List)mailRcvSetteList, lastCustUpdDtm, false);
			
//			result = (Map)tmpResult.get("result");
			// 変更前アドレスに紐付くオプトインメール受信設定を削除する
			// ST-2016-0000034 MOD START
//			Map tmpResult = 
//				deleOptinmRcvSette(handle, param, opeDate, sysid, nowMlad, chgechuMlad, lastCustUpdDtm);
			Map tmpResult = 
				deleOptinmRcvSette(handle, param, opeDate, sysid, memberSbtCd, nowMlad, chgechuMlad, lastCustUpdDtm);

			result = (Map)tmpResult.get("result");
			// ST-2016-0000034 MOD END
// ANK-2987-00-00 MOD END
			if (isSuccess(result))
			{
				lastCustUpdDtm = (String)tmpResult.get("upd_dtm_sysid");
			}
			else
			{
				returnCd = PMP_ERR_OTHER;   // その他のエラー
			}
		}
		
		//***************************************************
		// 連絡先メールアドレス本登録
		//***************************************************
		if (PMP_NORMAL_END.equals(returnCd))
		{
			//連絡先メールアドレス登録更新
			Map tmpResult = addUpdRrksMlad(handle, param, opeDate, "1", sysid, chgechuMlad, lastCustUpdDtm, opeDate);
			
			result = (Map)tmpResult.get("result");
			if (isSuccess(result))
			{
				lastCustUpdDtm = (String)tmpResult.get("upd_dtm_sysid");
			}
			else
			{
				returnCd = PMP_ERR_OTHER;   // その他のエラー
			}
		}
		
		//***************************************************
		// 指示書登録
		//***************************************************
		if (PMP_NORMAL_END.equals(returnCd))
		{
			// メールアドレス本登録連携用の指示書作成
			// ANK-3706-00-00 MOD START
			//Map sjishoMap = createShijisho(sysid, chgechuMlad);
			Map sjishoMap = createShijisho(sysid, chgechuMlad, keishaTelno);
			// ANK-3706-00-00 MOD END
			result = callECK0151D010Map(handle, param, sjishoMap);
			
			if (isError(result))
			{
				returnCd = PMP_ERR_OTHER;   // その他のエラー
			}
		}

		//***************************************************
		// 返却パラメータ設定
		//***************************************************

		// 最後に実行したSCの実行結果を取得
		result = getLastResult(param);

		// 下りコントロールマップのセット
		setResultCtrlData(param, result, fixedText);

		// SC実行エラーの場合は、結果に応じてリターンコードを設定
		if (PMP_ERR_OTHER.equals(returnCd)) {
			String scReturnCd = getReturnCode(result).toString();
			String scStatusCd = getStatus(result).toString();
			returnCd = ("0".equals(scReturnCd) && "1000".equals(scStatusCd)) ? PMP_ERR_PARAM : PMP_ERR_SYSTEM;
		}

		// 下りユーザデータマップのセット
		Map<String, Object> resultMap = new HashMap();
		resultMap.put(CKSV9030_CKSV9030OP_CKSV903001CC.RETURN_CD, returnCd);
		resultMap.put(CKSV9030_CKSV9030OP_CKSV903001CC.CK_UPD_DTM_RES, lastCkUpdDtm); // 処理後最新更新日時(お客様)
		resultMap.put(CKSV9030_CKSV9030OP_CKSV903001CC.KK_UPD_DTM_RES, lastKkUpdDtm); // 処理後最新更新日時(サービス契約)

		setResultUserData(param, fixedText, resultMap);

		//*************************************************
		// 処理結果の判定
		//*************************************************
		if (isError(result))
		{
			String errMsg = "メールアドレス本登録移行CCでエラーが発生しました(リターンコード：" + returnCd + ")";
			throw new CCException(errMsg, new Exception(errMsg));
		}

		return param;
	}
	
	/**
	 * メールアドレス本登録移行の指示書パラメータ作成。<br />
	 * @param sysid
	 * @param rrkMlad
	 * @param keishaTelno 連携電話番号（契約者電話番号、コンテンツ電話番号等）
	 * @return 指示書登録用パラメータ
	 */
	// ANK-3706-00-00 MOD START
	//private Map<String, Object> createShijisho(String sysid, String rrkMlad)
	private Map<String, Object> createShijisho(String sysid, String rrkMlad, String keishaTelno)
	// ANK-3706-00-00 MOD END
	{
		Map<String, Object> inMap = new HashMap<String, Object>();
		inMap.put(ECK0151D010CBSMsg.TRN_CD, SJISHO_TRN_CD_ADMIN_API);
		inMap.put(ECK0151D010CBSMsg.ERR_CNT, "0");
		inMap.put(ECK0151D010CBSMsg.TRAN_TRGT_SYSID, sysid);
		inMap.put(ECK0151D010CBSMsg.RSLT_FLG, "0");
		// ANK-3706-00-00 MOD START
		//inMap.put(ECK0151D010CBSMsg.PARAMETER_YK_CNT, "19");
		inMap.put(ECK0151D010CBSMsg.PARAMETER_YK_CNT, "22");
		// ANK-3706-00-00 MOD END
		inMap.put(ECK0151D010CBSMsg.PARAMETER_1, ADMIN_SJISHO_PARAM1_UPD_PART);
		inMap.put(ECK0151D010CBSMsg.PARAMETER_3, sysid);
		inMap.put(ECK0151D010CBSMsg.PARAMETER_7, rrkMlad);
		inMap.put(ECK0151D010CBSMsg.PARAMETER_19, JCCBPCommon.getSysDateTime());
		// ANK-3706-00-00 ADD START
		inMap.put(ECK0151D010CBSMsg.PARAMETER_20, keishaTelno);
		inMap.put(ECK0151D010CBSMsg.PARAMETER_21, "");
		inMap.put(ECK0151D010CBSMsg.PARAMETER_22, "");
		// ANK-3706-00-00 ADD END
		return inMap;
	}

	/**
	 * BPチェック用パラメータ作成。<br />
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText ユーザ定義文字列
	 * @return BPチェック用パラメータ
	 */
	@SuppressWarnings("unchecked")
	public HashMap getInvokeCBS(SessionHandle handle, IRequestParameterReadWrite param, String fixedText)
	{
		// BPチェックはスキップする
		return JCKPmpScParamHenshu.createBpNotCheckParam();
	}

	/**
	 * ＢＰチェック結果を編集する。<br />
	 * @param param リクエストパラメータ
	 * @param caanMsgs サービスインターフェイス用のパラメータ配列
	 * @param returnCode リターンコード
	 * @return リクエストパラメータ
	 * @throws Throwable 
	 */
	public IRequestParameterReadWrite editErrorInfo(IRequestParameterReadWrite param, CAANMsg[] caanMsgs, Integer returnCode) throws Throwable
	{
		return JCKPmpScParamHenshu.editErrorInfo(param, caanMsgs, returnCode);
	}
	// ANK-2987-00-00 ADD START
	/**
	 * オプトインメール受信設定削除（）<br />
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param opeDate 運用日付
	 * @param sysid SYSID
	 * @param memberSbtCd 会員種別コード
	 * @param nowRrksMlad 旧連絡先メールアドレス
	 * @param newMlad 新連絡先メールアドレス
	 * @param updDtmBf 更新年月日時分秒(更新前)
	 * @return ＳＣ実行結果
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	// ST-2016-0000034 MOD START
//	private static Map<?, ?> deleOptinmRcvSette(SessionHandle handle, IRequestParameterReadWrite param, String opeDate, String sysid, 
//			String nowRrksMlad, String newMlad , String updDtmBf) throws Throwable
	private static Map<?, ?> deleOptinmRcvSette(SessionHandle handle, IRequestParameterReadWrite param, String opeDate, String sysid, 
			 String memberSbtCd, String nowRrksMlad, String newMlad , String updDtmBf) throws Throwable
	// ST-2016-0000034 MOD END
	{
		Map returnMap = new HashMap();
		Map<?, ?> result = null;				// SC実行結果
		// ST-2016-0000034 ADD START
		CAANMsg[] msgList = null;				// 検索結果
		// ST-2016-0000034 ADD END
		CAANMsg[] optinmList = null;			// オプトインメールリスト
		String retMlad = null;					// オプトインメール受信設定リストから取得した連絡先メールアドレス
		String retOptinmNo = null;				// オプトインメール受信設定リストから取得したオプトインメール番号
		boolean eoMladFlg = false;				// eoメールアドレスフラグ
		
		// オプトインメール受信設定一覧取得（非公開含む）
		result = callECK0141B020(handle, param, "3", sysid);
		
		// エラー判定
		if (isError(result))
		{
			returnMap.put("result", result);
			return returnMap;
		}
		
		optinmList = getResultMsgList(result, ECK0141B020CBSMsg.ECK0141B020CBSMSG1LIST);

		// ST-2016-0000034 ADD START
		// メールアドレス変更あり または 変更前メールアドレス未設定(メールアドレス新規登録)
		if (!newMlad.equals(nowRrksMlad) || "".equals(nowRrksMlad))
		{
			// マスター会員（個人・法人）かつ 変更前メールアドレス設定済(メールアドレス新規登録以外)
			if ((MMB_SBT_CD_MASTER_KOJIN.equals( memberSbtCd) || MMB_SBT_CD_MASTER_HOJIN.equals( memberSbtCd)) && (nowRrksMlad != null && !"".equals(nowRrksMlad)))
			{
				// eoメールアドレスを判定
				result = callEKK0361B020(handle, param, "2", "", nowRrksMlad);
				// エラー判定
				if (isError(result))
				{
					returnMap.put("result", result);
					return returnMap;
				}

				// 検索結果を取得
				msgList = getResultMsgList(result, EKK0361B020CBSMsg.EKK0361B020CBSMSG1LIST);

				if (msgList.length > 0)
				{
					// 変更前メールアドレスは、eoメール
					eoMladFlg = true;
				}
			}
			// ST-2016-0000034 ADD END

			// eoのメールアドレス以外 かつ 変更前メールアドレス設定済(メールアドレス新規登録以外) の場合、
			// 変更前メールアドレスのオプトインメール受信設定(非公開含む)を無効化
			// IT2-2016-0000057 MOD START 
	//		if (!eoMladFlg && !"".equals(nowRrksMlad))
			// 変更前アドレス空白またはＮＵＬＬの場合、変更前後メールが一致する場合（仮登録のみ）旧情報の無効化はスキップ
			if (!eoMladFlg && nowRrksMlad != null && !"".equals(nowRrksMlad) && !nowRrksMlad.equals(newMlad))
			// IT2-2016-0000057 MOD END
			{
				if (optinmList != null)
				{
					for (CAANMsg msg : optinmList)
					{
						retOptinmNo = msg.getString(ECK0141B020CBSMsg1List.OPTINM_NO);
						retMlad = msg.getString(ECK0141B020CBSMsg1List.MLAD);
	
						// メールアドレスが異なる場合は、次のレコードへ
						// IT2-2016-0000057 MOD START 
	//					if (newMlad.equals(retMlad))
						if (!nowRrksMlad.equals(retMlad))
						// IT2-2016-0000057 MOD END
						{
							continue;
						}
							
						// オプトインメール受信設定無効SC呼出
						result = callECK0141C030(handle, param, retOptinmNo, sysid, retMlad, updDtmBf);
	
						// エラー判定
						if (isError(result))
						{
							returnMap.put("result", result);
							return returnMap;
						}
						// 更新年月日時分秒を取得
						updDtmBf = getResultString(result, ECK0141C030CBSMsg.UPD_DTM);
					}
	
				}
			}
		// ST-2016-0000034 ADD START
		}
		// ST-2016-0000034 ADD END

		// 結果の返却を行なう
		returnMap.put("result", result);
		returnMap.put("upd_dtm_sysid", updDtmBf);
		return returnMap;
	}
	// ANK-2987-00-00 ADD END
}
