#!/bin/bash
##############################################################
# システム名    ：eo顧客基幹システム
#
# サブシステム名：請求収納
#
# シェル名      ：クレジット請求結果受信（オーソリ無）復号化／解凍
#
# 機能          ：ペイジェントから連携される請求結果情報を存在チェック後、復号化を解凍をおこなう。
#
#
# コマンド形式  ：EO60D0240J0.sh
#
# 実行環境      ：.../app/shl
#
# 終了ステータス：ゼロ以外異常
#
# 特記事項      ：特になし
#
# 変更履歴      ：変更日      変更者       障害／仕様変更No.
# v58.0.0         2022/05/24  FJ）中原     【ANK-3846-00-00】【クレカ】クリアパス→ペイジェント移行
#
##############################################################

##############################################################
# 環境変数定義
##############################################################

#
#---ツール格納場所
#
G_TOOLSH=.

#
#---環境変数定義Shell呼び出し
#
. EOK010110J0.sh

#
#---ＪＯＢ名
#
JOBNAME=`basename $0 | sed -e "s/\.sh//g"`

#
#---サービス（業務プロセス）
#
SVC=$JOBNAME

#
#---OPD
#
OPD=$1

#
#---業務で必要な変数定義
#
#---運用日付取得
if [ "${OPD}" = "" ]; then
   . EOK010310J0.sh "BDATE"
else
   RSLT_OPEDATE="${OPD}"
fi

##############################################################
# 業務処理
##############################################################
sh ${G_TOOLSH}/EOK010210J0.sh CS00025I $JOBNAME

#
# 関数定義
#
make_dir(){
    if [ ! -d $1 ]; then
        mkdir -p $1 > /dev/null 2>&1
        rc2=$?
        if [ $rc2 -ne 0 ]
        then
            sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " MKDIR Error($SVC mkdir:rc=$rc2) "
            echo $JOBNAME " MKDIR Error($SVC mkdir:rc=$rc2)ディレクトリの作成に失敗しました。 "
            echo "ディレクトリ名:"+$1
        fi
    fi
}
#
#---パラメタ定義
#

P1="OPD=,"
P2="SVCCTL=,"
P3="JOB=EO60D0240J0,"
P4="IND1=,"
P5="INF1=,"
P6="IND2=,"
P7="INF2=,"
P8="OTD1=,"
P9="OTF1=,"
P10="OTD2=,"
P11="OTF2=,"
P12="TABLENAME=,"
P13="SQLKEY=,"
P14="SQLPARAM=,"
P15="ERRFILE=,"
P16="RECOVERY=,"
P17="BREAKPTN=,"
P18="FREE="
PARA="$P1$P2$P3$P4$P5$P6$P7$P8$P9$P10$P11$P12$P13$P14$P15$P16$P17$P18"

sh ${G_TOOLSH}/EOK010210J0.sh CS00027I $JOBNAME

#-------------------------------------------------------------
#--- ファイル定義
#-------------------------------------------------------------
# 業務パラメータ管理取得
ZM_M_WORK_PARAM_KNRI_ULD=${SQL_DIR}/CH_U_ZM0321_01.sql
ZM_M_WORK_PARAM_KNRI_ULD_WORK=${LOC_DIR_CH}/${JOBNAME}_CH_U_ZM0321_01.sql
ZM_M_WORK_PARAM_KNRI_ULD_FILE=${LOC_DIR_CH}/${JOBNAME}_PAYGENT_MERCHANT_ID.csv


#-------------------------------------------------------------
#---業務パラメータ管理からマーチャントIDを取得
#-------------------------------------------------------------
# 業務パラメータ(ペイジェント向けマーチャントID)
WORK_PARAM_ID="PAYGENT_MERCHANT_ID"

# １．業務パラメータを設定
# ２．業務パラメータ適用開始年月日に運用日を設定
# ３．業務パラメータ適用終了年月日に運用日を設定
cp  -f ${ZM_M_WORK_PARAM_KNRI_ULD} ${ZM_M_WORK_PARAM_KNRI_ULD_WORK}
sed -i -e s@':WORK_PARAM'@${WORK_PARAM_ID}@g       ${ZM_M_WORK_PARAM_KNRI_ULD_WORK}
sed -i -e s@:OPE_DATE@${RSLT_OPEDATE}@g            ${ZM_M_WORK_PARAM_KNRI_ULD_WORK}
sed -i -e s@:OPE_DATE@${RSLT_OPEDATE}@g            ${ZM_M_WORK_PARAM_KNRI_ULD_WORK}

# 業務パラメータ管理SQL実行結果を格納
#- UNLOAD実行
sh ${G_TOOLSH}/EOKULD03.sh ${ZM_M_WORK_PARAM_KNRI_ULD_WORK} ${ZM_M_WORK_PARAM_KNRI_ULD_FILE}
rc=$?
if [ $rc -ne 0 ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " UNLOAD ERROR (IN:${ZM_M_WORK_PARAM_KNRI_ULD_WORK} rc=$rc) "
    echo $JOBNAME " UNLOAD ERROR (IN:${ZM_M_WORK_PARAM_KNRI_ULD_WORK} rc=$rc) "
    exit ${G_RTN_ERROR}
fi

#- ペイジェントID取得　取得した値に先頭0埋め
PAYGENT_MERCHANT_ID=`cat ${ZM_M_WORK_PARAM_KNRI_ULD_FILE}| awk '{printf "%09d",$1}'`


#-------------------------------------------------------------
#--- 各ファイルの存在チェックを行う
#-------------------------------------------------------------
# 受信ファイル
CHEKFILE=${GAIBU_RECEIVE_DIR_CH}/CHIFE099/fpres_${PAYGENT_MERCHANT_ID}_023_*.enc
FLGFILE=${GAIBU_RECEIVE_DIR_CH}/CHIFE099/fpres_${PAYGENT_MERCHANT_ID}_023_*.flg

# フラグファイル確認
if [ ! -r $FLGFILE ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " File is nonexist($FLGFILE) "
    echo $JOBNAME " File is nonexist($FLGFILE) "
    exit ${G_RTN_ERROR}
fi

# 暗号化ファイル確認
if [ ! -r $CHEKFILE ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " File is nonexist($CHEKFILE) "
    echo $JOBNAME " File is nonexist($CHEKFILE) "
    exit ${G_RTN_ERROR}
fi


#-------------------------------------------------------------
#---業務パラメータ管理からペイジェント向け暗号化復号化用鍵・イニシャルベクトルを取得
#-------------------------------------------------------------
# 業務パラメータ(ペイジェント向け暗号化復号化用鍵・イニシャルベクトル)
WORK_PARAM_ID="PAYGENT_ENC_KEY_IV"

# １．業務パラメータを設定
# ２．業務パラメータ適用開始年月日に運用日を設定
# ３．業務パラメータ適用終了年月日に運用日を設定
cp  -f ${ZM_M_WORK_PARAM_KNRI_ULD} ${ZM_M_WORK_PARAM_KNRI_ULD_WORK}
sed -i -e s@':WORK_PARAM'@${WORK_PARAM_ID}@g       ${ZM_M_WORK_PARAM_KNRI_ULD_WORK}
sed -i -e s@:OPE_DATE@${RSLT_OPEDATE}@g            ${ZM_M_WORK_PARAM_KNRI_ULD_WORK}
sed -i -e s@:OPE_DATE@${RSLT_OPEDATE}@g            ${ZM_M_WORK_PARAM_KNRI_ULD_WORK}

# 業務パラメータ管理SQL実行結果を格納
#- UNLOAD実行
sh ${G_TOOLSH}/EOKULD03.sh ${ZM_M_WORK_PARAM_KNRI_ULD_WORK} ${ZM_M_WORK_PARAM_KNRI_ULD_FILE}
rc=$?
if [ $rc -ne 0 ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " UNLOAD ERROR (IN:${ZM_M_WORK_PARAM_KNRI_ULD_WORK} rc=$rc) "
    echo $JOBNAME " UNLOAD ERROR (IN:${ZM_M_WORK_PARAM_KNRI_ULD_WORK} rc=$rc) "
    exit ${G_RTN_ERROR}
fi

#- ペイジェント向け暗号化復号化用鍵・イニシャルベクトル取得
PAYGENT_ENC_KEY=`cat ${ZM_M_WORK_PARAM_KNRI_ULD_FILE}|awk -F, '{print $1}'`
PAYGENT_ENC_IV=`cat ${ZM_M_WORK_PARAM_KNRI_ULD_FILE}|awk -F, '{print $2}'`

#-------------------------------------------------------------
#--- 暗号化ファイルの復号、解凍を行う
#-------------------------------------------------------------
FILENAME="`ls -lt ${CHEKFILE} | head -n 1 | awk '{print $9}' | awk -F. '{print $1}'`"
OUTFILE=${MID_DIR_CH}/CHIFM409002.csv		

# 暗号化ファイルの復号
openssl enc -aes-256-cbc -d -in ${FILENAME}.enc -out ${FILENAME}.zip -iv ${PAYGENT_ENC_IV} -K ${PAYGENT_ENC_KEY}
rc=$?
if [ $rc -ne 0 ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " UNENC ERROR (IN:${FILENAME}.enc rc=$rc) "
    echo $JOBNAME " UNENC ERROR (IN:${FILENAME}.enc rc=$rc) "
    exit ${G_RTN_ERROR}
fi

# 圧縮ファイルの解凍
unzip ${FILENAME}.zip -d ${GAIBU_RECEIVE_DIR_CH}/CHIFE099
rc=$?
if [ $rc -ne 0 ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " UNZIP ERROR (IN:${FILENAME}.zip rc=$rc) "
    echo $JOBNAME " UNZIP ERROR (IN:${FILENAME}.zip rc=$rc) "
    exit ${G_RTN_ERROR}
fi

#---ファイルコピー
cp -f ${FILENAME}.csv ${OUTFILE}
rc=$?
if [ $rc -ne 0 ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " CP Error($SVC mv:rc=$rc) "
    echo $JOBNAME " CP Error($SVC mv:rc=$rc) "
    exit ${G_RTN_ERROR}
fi

#---一時ファイルの削除
rm -f ${ZM_M_WORK_PARAM_KNRI_ULD_WORK}
rm -f ${ZM_M_WORK_PARAM_KNRI_ULD_FILE}
rm -f ${FILENAME}.zip
rm -f ${FILENAME}.enc

# バックアップディレクトリ作成
make_dir  ${GAIBU_RECEIVE_DIR_CH}/CHIFE099/bk

#---ファイルバックアップ
mv -f ${FILENAME}* ${GAIBU_RECEIVE_DIR_CH}/CHIFE099/bk/
rc=$?
if [ $rc -ne 0 ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " BackUp Error($SVC mv:rc=$rc) "
    echo $JOBNAME " BackUp Error($SVC mv:rc=$rc) "
    exit ${G_RTN_ERROR}
fi

#
#--- ジョブの終了メッセージを出力する
#
sh ${G_TOOLSH}/EOK010210J0.sh CS00028I $JOBNAME
sh ${G_TOOLSH}/EOK010210J0.sh CS00026I $JOBNAME

exit ${G_RTN_NORMAL}
