Commit 1ee7df8b authored by tywldx's avatar tywldx
parents 2321f353 7fc3c2d5
database_list=mall cash_loan_flow contract dujiangyan financial_system financial_system_api fund_manage gyxd merchant notify offline payment_center qinqiong quartz redpacket risk_control silk_road spider_center traffic_distribution user_credit xyqb xyqb_app xyqb_btzt xyqb_user
source_db_pwd=Uiwb@o^fR&nHOa5t
\ No newline at end of file
#!/bin/bash
set -u
work_dir=/home/qa-deploy-utils/db-utils
sync_config_folder=~/db_sync_configs
db_backup_folder=~/daily_db_backup
source_db_host=$1 source_db_host=$1
source_db_user=$2 source_db_user=$2
source_db_pwd='Uiwb@o^fR&nHOa5t' source_db_pwd=`grep source_db_pwd $work_dir/config/db_config | cut -d "=" -f 2`
ip_value=$4 ip_value=$4
if valid_ip $ip_value; then target_db_host="$ip_value"; else target_db_host="192.168.4.$ip_value"; fi
target_db_user=$5 target_db_user=$5
target_db_pwd=$6 target_db_pwd=$6
sync_db_name=$7 sync_db_name=$7
work_dir=/home/qa-deploy-utils/db-utils
sync_config_folder=~/db_sync_configs
db_backup_folder=~/daily_db_backup
function db_schema_sync() function db_schema_sync()
{ {
database=$1 database=$1
...@@ -24,17 +25,17 @@ function db_schema_sync() ...@@ -24,17 +25,17 @@ function db_schema_sync()
echo "mkdir -p $db_backup_sub_folders" echo "mkdir -p $db_backup_sub_folders"
mkdir -p $db_backup_sub_folders mkdir -p $db_backup_sub_folders
echo "--- Step 1: generate_config_file: $config_file_name ---" # echo "--- Step 1: generate_config_file: $config_file_name ---"
echo "source infos: $source_db_host $source_db_user" # echo "source infos: $source_db_host $source_db_user"
echo "target infos: $target_db_host $target_db_user" # echo "target infos: $target_db_host $target_db_user"
echo "database_name is : $sync_db_name" # echo "database_name is : $sync_db_name"
echo "delete_business_data : $delete_business_data"
echo "sh $work_dir/db_gen_config.sh $source_db_host $source_db_user $source_db_pwd 192.168.4.12 $target_db_user $target_db_pwd $database $config_file_name $db_backup_sub_folders false"
echo "sh $work_dir/db_gen_config.sh $source_db_host $source_db_user $source_db_pwd $target_db_host $target_db_user $target_db_pwd $database $config_file_name $db_backup_sub_folders false" sh $work_dir/db_gen_config.sh $source_db_host $source_db_user $source_db_pwd 192.168.4.12 $target_db_user $target_db_pwd $database $config_file_name $db_backup_sub_folders false
sh $work_dir/db_gen_config.sh $source_db_host $source_db_user $source_db_pwd $target_db_host $target_db_user $target_db_pwd $database $config_file_name $db_backup_sub_folders false
} }
database_list='cash_loan_flow contract dujiangyan financial_system financial_system_api fund_manage gyxd mall merchant notify offline payment_center qinqiong quartz redpacket risk_control silk_road spider_center user_credit xyqb xyqb_app xyqb_btzt xyqb_user' database_list=`grep database_list $work_dir/config/db_config | cut -d "=" -f 2`
echo "database_list:${database_list}"
for db_name in $database_list for db_name in $database_list
do do
......
...@@ -44,8 +44,6 @@ cache_dir=/root/daily_db_backup ...@@ -44,8 +44,6 @@ cache_dir=/root/daily_db_backup
echo "prepare to get port" echo "prepare to get port"
if [[ $database_name = 'xyqb' ]]; then if [[ $database_name = 'xyqb' ]]; then
# 信用钱包database # 信用钱包database
# repay v_manifest v_repay 是view类型的
# secure_proxy 表里面的数据需要被同步
sys_table_list='baitiao_merchant baitiao_secure_key channel funding_contract funding_corp loan_product merchant_channel payeco_return_url_info red_packet t_phonenum zmxy_return_url configuration secure_proxy funding_corp_config funding_info_map baitiao_preferential_rule funding_corp_policy' sys_table_list='baitiao_merchant baitiao_secure_key channel funding_contract funding_corp loan_product merchant_channel payeco_return_url_info red_packet t_phonenum zmxy_return_url configuration secure_proxy funding_corp_config funding_info_map baitiao_preferential_rule funding_corp_policy'
port='3306' port='3306'
elif [[ $database_name = 'xyqb_app' ]]; then elif [[ $database_name = 'xyqb_app' ]]; then
...@@ -73,9 +71,10 @@ elif [[ $database_name = 'qinqiong' ]]; then ...@@ -73,9 +71,10 @@ elif [[ $database_name = 'qinqiong' ]]; then
sys_table_list='secure_key secure_proxy' sys_table_list='secure_key secure_proxy'
port='3310' port='3310'
elif [[ $database_name = 'cash_loan_flow' ]]; then elif [[ $database_name = 'cash_loan_flow' ]]; then
# qinqiong # cash_loan_flow
sys_table_list='order_callback callback_configuration channel_configuration' sys_table_list='order_callback callback_configuration channel_configuration filter_configuration'
port='3310' source_db_host='192.168.4.80'
port='8001'
elif [[ $database_name = 'quartz' ]]; then elif [[ $database_name = 'quartz' ]]; then
# 定时任务 # 定时任务
sys_table_list='certain_time_job' sys_table_list='certain_time_job'
...@@ -114,7 +113,7 @@ elif [[ $database_name = 'spider_center' ]]; then ...@@ -114,7 +113,7 @@ elif [[ $database_name = 'spider_center' ]]; then
sys_table_list='merchant merchant_config' sys_table_list='merchant merchant_config'
port='3312' port='3312'
elif [[ $database_name = 'silk_road' ]]; then elif [[ $database_name = 'silk_road' ]]; then
# # silk_road
sys_table_list='' sys_table_list=''
source_db_host='192.168.4.80' source_db_host='192.168.4.80'
port='9999' port='9999'
...@@ -135,12 +134,16 @@ elif [[ $database_name = 'user_credit' ]]; then ...@@ -135,12 +134,16 @@ elif [[ $database_name = 'user_credit' ]]; then
# user_credit # user_credit
sys_table_list='' sys_table_list=''
port='9001' port='9001'
elif [[ $database_name = 'traffic_distribution' ]]; then
# traffic_distribution
sys_table_list='merchant merchant_carousel merchant_credit merchant_detail merchant_section merchant_sort ppdai_exclude_channel t_module t_module_role t_role t_user t_user_role traffic_channel_banner_ids traffic_channel_ids traffic_channel_sort traffic_infos'
source_db_host='192.168.3.36'
port='3313'
elif [[ $database_name = 'notify' ]]; then elif [[ $database_name = 'notify' ]]; then
# 通知 # 通知
sys_table_list='merchant merchant_config' sys_table_list='merchant merchant_config'
source_db_host='192.168.4.6' source_db_host='192.168.4.6'
port='7306' port='7306'
echo "---------------------------"
fi fi
echo "port is $port" echo "port is $port"
...@@ -159,12 +162,12 @@ sed -i "s/source_port/${port}/g" $config_file_name ...@@ -159,12 +162,12 @@ sed -i "s/source_port/${port}/g" $config_file_name
#同步基础数据 #同步基础数据
if [ $use_cache = true ];then if [ $use_cache = true ];then
echo "\cp -f $cache_dir/$database_name/* $db_backup_sub_folders/" echo "\cp -rf $cache_dir/$database_name/. $db_backup_sub_folders/"
\cp -f $cache_dir/$database_name/* $db_backup_sub_folders/ \cp -rf $cache_dir/$database_name/. $db_backup_sub_folders/
else else
file_name=$db_backup_sub_folders/$table_name.sql
for table_name in $sys_table_list for table_name in $sys_table_list
do do
file_name=$db_backup_sub_folders/$table_name.sql
echo "mysqldump -u${source_db_user} -p${source_db_pwd} -h${source_db_host} -P${port} $database_name --tables $table_name > $file_name" echo "mysqldump -u${source_db_user} -p${source_db_pwd} -h${source_db_host} -P${port} $database_name --tables $table_name > $file_name"
mysqldump -u${source_db_user} -p${source_db_pwd} -h${source_db_host} -P${port} $database_name --skip-lock-tables --tables $table_name --skip-add-locks > $file_name mysqldump -u${source_db_user} -p${source_db_pwd} -h${source_db_host} -P${port} $database_name --skip-lock-tables --tables $table_name --skip-add-locks > $file_name
done done
......
...@@ -23,14 +23,11 @@ fi ...@@ -23,14 +23,11 @@ fi
echo "CREATE DATABASE IF NOT EXISTS \`${database_name}\` DEFAULT CHARSET utf8 COLLATE utf8_general_ci;" echo "CREATE DATABASE IF NOT EXISTS \`${database_name}\` DEFAULT CHARSET utf8 COLLATE utf8_general_ci;"
echo "CREATE DATABASE IF NOT EXISTS \`${database_name}\` DEFAULT CHARSET utf8 COLLATE utf8_general_ci;" | mysql -h $mysql_host -uqa -pqatest echo "CREATE DATABASE IF NOT EXISTS \`${database_name}\` DEFAULT CHARSET utf8 COLLATE utf8_general_ci;" | mysql -h $mysql_host -uqa -pqatest
echo `pwd` for entry in ./*.sql
for entry in ./*
do do
echo "mysql -h $mysql_host -uqa -pqatest $database_name < $entry" echo "mysql -h $mysql_host -uqa -pqatest $database_name < $entry"
mysql -h $mysql_host -uqa -pqatest $database_name < $entry mysql -h $mysql_host -uqa -pqatest $database_name < $entry
if [ $? != 0 ];then if [ $? != 0 ];then
echo "--- mysql -h $mysql_host -uqa -pqatest $database_name < $entry import error ---" echo "--- mysql -h $mysql_host -uqa -pqatest $database_name < $entry import error ---"
exit -1
fi fi
done done
...@@ -17,12 +17,10 @@ config_server="$pwd_path/config_server" ...@@ -17,12 +17,10 @@ config_server="$pwd_path/config_server"
project_path=`cat $config_server/project_path.sh` project_path=`cat $config_server/project_path.sh`
config_path=`cat $config_server/config_path.sh` config_path=`cat $config_server/config_path.sh`
echo $server_host echo $server_host
echo cd $db_sub_backup_folder
cd $db_sub_backup_folder cd $db_sub_backup_folder
file_count=`ls -l |grep "^-"|wc -l`
hosts=`node $config_server/get_project_config.js -type multi -attr port/url -attr2 true` hosts=`node $config_server/get_project_config.js -type multi -attr port/url -attr2 true`
function transByPort() function transByPort()
...@@ -75,33 +73,30 @@ if [ $database_name = 'mall' ];then ...@@ -75,33 +73,30 @@ if [ $database_name = 'mall' ];then
fi fi
done done
else else
echo "./* file count is $file_count" sed -i "s/https\:/http\:/g" $db_sub_backup_folder/*
if [ "$file_count" -gt 0 ]; then if [ "$re_replace_ip" = false ];then
sed -i "s/https\:/http\:/g" * echo "replace ip for $db_sub_backup_folder/*"
if [ "$re_replace_ip" = true ]; then for host in $hosts
echo "replace public ip for $db_sub_backup_folder/*" do
for host in $hosts arr=${host//|/ }
do transByUrl $arr "$db_sub_backup_folder/*"
arr=${host//|/ } done
transByPort $arr "$db_sub_backup_folder/*" elif [ "$re_replace_ip" = true ]; then
done echo "replace public ip for $db_sub_backup_folder/*"
elif [ "$re_replace_ip" = false ];then for host in $hosts
echo "replace ip for $db_sub_backup_folder/*" do
for host in $hosts arr=${host//|/ }
do transByPort $arr "$db_sub_backup_folder/*"
arr=${host//|/ } done
transByUrl $arr "$db_sub_backup_folder/*" else
done echo "replace $re_replace_ip ip for $db_sub_backup_folder/*"
else echo "sed -i "s#\.xyqb\.com#-${re_replace_ip}.q-gp.com#g" $db_sub_backup_folder/*"
echo "replace $re_replace_ip ip for $db_sub_backup_folder/*" sed -i "s#\.xyqb\.com#-${re_replace_ip}.q-gp.com#g" $db_sub_backup_folder/*
echo "sed -i "s#\.xyqb\.com#-${re_replace_ip}.q-gp.com#g" $db_sub_backup_folder/*" #for host in $hosts
sed -i "s#\.xyqb\.com#-${re_replace_ip}.q-gp.com#g" $db_sub_backup_folder/* #do
#for host in $hosts # arr=${host//|/ }
#do # transByPara $arr $entry $re_replace_ip
# arr=${host//|/ } #done
# transByPara $arr $entry $re_replace_ip
#done
fi
fi fi
fi fi
......
...@@ -23,9 +23,13 @@ if [ $# -ne 10 ]; then ...@@ -23,9 +23,13 @@ if [ $# -ne 10 ]; then
exit 1 exit 1
fi fi
work_dir=/home/qa-deploy-utils/db-utils
sync_config_folder=~/db_sync_configs
db_backup_folder=~/db_backups
source_db_host=$1 source_db_host=$1
source_db_user=$2 source_db_user=$2
source_db_pwd='Uiwb@o^fR&nHOa5t' source_db_pwd=`grep source_db_pwd $work_dir/config/db_config | cut -d "=" -f 2`
ip_value=$4 ip_value=$4
...@@ -37,10 +41,6 @@ re_replace_ip=$8 ...@@ -37,10 +41,6 @@ re_replace_ip=$8
delete_business_data=$9 delete_business_data=$9
use_cache=${10} use_cache=${10}
work_dir=/home/qa-deploy-utils/db-utils
sync_config_folder=~/db_sync_configs
db_backup_folder=~/db_backups
trap "exec 1000>&-;exec 1000<&-;exit 0" 2 trap "exec 1000>&-;exec 1000<&-;exit 0" 2
tempfifo=$$.fifo tempfifo=$$.fifo
echo "mkfifo /tmp/$tempfifo" echo "mkfifo /tmp/$tempfifo"
...@@ -91,23 +91,25 @@ function db_schema_sync() ...@@ -91,23 +91,25 @@ function db_schema_sync()
sh $work_dir/db_gen_config.sh $source_db_host $source_db_user $source_db_pwd $target_db_host $target_db_user $target_db_pwd $database $config_file_name $db_backup_sub_folders $use_cache sh $work_dir/db_gen_config.sh $source_db_host $source_db_user $source_db_pwd $target_db_host $target_db_user $target_db_pwd $database $config_file_name $db_backup_sub_folders $use_cache
echo "--- Step 2: replace domain name in tables: $database $mysql_host $db_backup_sub_folders ---" cd $db_backup_sub_folders
echo "--- Step 2: is re_replace_ip: $re_replace_ip ---" file_count=`ls -l | grep .sql$ | wc -l`
sh $work_dir/db_replace_ip.sh $database $target_db_host $db_backup_sub_folders $re_replace_ip $ip_value echo "$db_backup_sub_folders/*.sql file count is $file_count"
if [ "$file_count" -gt 0 ]; then
echo "--- Step 3: import basic data from backup file: $database $mysql_host $db_backup_sub_folders ---" echo "--- Step 2: replace domain name in tables: $database $db_backup_sub_folders ---"
sh $work_dir/db_import.sh $database $target_db_host $db_backup_sub_folders $delete_business_data echo "--- Step 2: is re_replace_ip: $re_replace_ip ---"
#if [ $? != 0 ];then sh $work_dir/db_replace_ip.sh $database $target_db_host $db_backup_sub_folders $re_replace_ip $ip_value
# echo "db_import.sh error"
# exit -1 echo "--- Step 3: import basic data from backup file: $database $db_backup_sub_folders ---"
#fi sh $work_dir/db_import.sh $database $target_db_host $db_backup_sub_folders $delete_business_data
else
echo "--- Skip step 2: replace domain name in tables: $database $db_backup_sub_folders ---"
echo "--- Skip step 3: import basic data from backup file: $database $db_backup_sub_folders ---"
fi
echo "--- Step 4: sync schema: $database $target_db_host ---" echo "--- Step 4: sync schema: $database $target_db_host ---"
sync_cmd="mss -conf ${config_file_name} -sync" sync_cmd="mss -conf ${config_file_name} -sync"
echo "${sync_cmd}" echo "${sync_cmd}"
$sync_cmd $sync_cmd
rm -rf $db_sub_backup_folder
} }
function run_sql_file() function run_sql_file()
...@@ -117,7 +119,7 @@ function run_sql_file() ...@@ -117,7 +119,7 @@ function run_sql_file()
sh $work_dir/db_execute_sql.sh $target_db_host $sync_db_name sh $work_dir/db_execute_sql.sh $target_db_host $sync_db_name
} }
database_list='mall cash_loan_flow contract dujiangyan financial_system financial_system_api fund_manage gyxd merchant notify offline payment_center qinqiong quartz redpacket risk_control silk_road spider_center user_credit xyqb xyqb_app xyqb_btzt xyqb_user' database_list=`grep database_list $work_dir/config/db_config | cut -d "=" -f 2`
if [[ "$sync_db_name" = "all" ]] if [[ "$sync_db_name" = "all" ]]
then then
......
...@@ -77,7 +77,7 @@ cd $project_path/$project ...@@ -77,7 +77,7 @@ cd $project_path/$project
P_UUID=`ps -ef|grep ${project}.jar |grep -v 'grep'|awk '{print $2}'` P_UUID=`ps -ef|grep ${project}.jar |grep -v 'grep'|awk '{print $2}'`
if [ -n "${P_UUID}" ];then if [ -n "${P_UUID}" ];then
echo "Kill $project PPID=${P_UUID}" echo "Kill $project PPID=${P_UUID}"
kill ${P_UUID} kill -9 ${P_UUID}
sleep 2s sleep 2s
fi fi
......
...@@ -15,7 +15,7 @@ python_project_path=$project_path/$project${setup_path_temp/\.\//\/} ...@@ -15,7 +15,7 @@ python_project_path=$project_path/$project${setup_path_temp/\.\//\/}
P_UUID=`ps -ef|grep port=$port |grep -v 'grep'|awk '{print $2}'` P_UUID=`ps -ef|grep port=$port |grep -v 'grep'|awk '{print $2}'`
if [[ "${P_UUID}" != "" ]];then if [[ "${P_UUID}" != "" ]];then
echo "KILL $project PPID=${P_UUID}" echo "KILL $project PPID=${P_UUID}"
kill ${P_UUID} kill -9 ${P_UUID}
sleep 3 sleep 3
fi fi
mv $project_path/logs/${project}.log $project_path/logs/${project}.log.$time mv $project_path/logs/${project}.log $project_path/logs/${project}.log.$time
......
...@@ -103,7 +103,7 @@ new pClass().init(2,false, "java", "7068", "", "customer_helpdesk", "data-riskco ...@@ -103,7 +103,7 @@ new pClass().init(2,false, "java", "7068", "", "customer_helpdesk", "data-riskco
new pClass().init(1,true, "java", "7069", "", "notify", "fund_pay", "notify.log", "application.properties", "--worker 1 --currentWorker 1 -t -ts > /dev/null 2>&1 &", null, 2, "支付中心消息通知系统-server", "", "mvn clean package -Ptest -Dmaven.test.skip=true", ""); new pClass().init(1,true, "java", "7069", "", "notify", "fund_pay", "notify.log", "application.properties", "--worker 1 --currentWorker 1 -t -ts > /dev/null 2>&1 &", null, 2, "支付中心消息通知系统-server", "", "mvn clean package -Ptest -Dmaven.test.skip=true", "");
new pClass().init(1,true, "java", "7071", "", "mall-settlement", "baitiao", "mall-settlement.log", "application-test.properties", "--worker 1 --currentWorker 1 -t -ts > /dev/null 2>&1 &", null, 2, "商户结算系统", "", "mvn clean package -Ptest -Dmaven.test.skip=true", ""); new pClass().init(1,true, "java", "7071", "", "mall-settlement", "baitiao", "mall-settlement.log", "application-test.properties", "--worker 1 --currentWorker 1 -t -ts > /dev/null 2>&1 &", null, 2, "商户结算系统", "", "mvn clean package -Ptest -Dmaven.test.skip=true", "");
new pClass().init(2,true, "java", "7072", "", "data-taurus", "data-riskcontrol", "data-taurus.log", "application.properties", " /dev/null 2>&1 &", null, 2, "质保金-server", "","mvn clean package -Ptest -Dmaven.test.skip=true",""); new pClass().init(2,true, "java", "7072", "", "data-taurus", "data-riskcontrol", "data-taurus.log", "application.properties", " /dev/null 2>&1 &", null, 2, "质保金-server", "","mvn clean package -Ptest -Dmaven.test.skip=true","");
new pClass().init(2,true, "java", "7074", "", "account-center", "QG", "account_center.log", "application.properties", " /dev/null 2>&1 &", null, 2, "账户中心-server", "","mvn clean package -Ptest -Dmaven.test.skip=true",""); new pClass().init(1,true, "java", "7074", "", "account-center", "QG", "account_center.log", "application.properties", " /dev/null 2>&1 &", null, 2, "账户中心-server", "","mvn clean package -Ptest -Dmaven.test.skip=true","");
new pClass().init(1,true, "java", "7079", "", "user-credit", "QG", "user_credit.log", "application.properties", " /dev/null 2>&1 &", null, 2, "用户升级-server", "","mvn clean package -Ptest -Dmaven.test.skip=true",""); new pClass().init(1,true, "java", "7079", "", "user-credit", "QG", "user_credit.log", "application.properties", " /dev/null 2>&1 &", null, 2, "用户升级-server", "","mvn clean package -Ptest -Dmaven.test.skip=true","");
new pClass().init(2,true, "java", "7076", "", "urge_dispatcher", "data-riskcontrol", "dispatcher.log", "application.properties", "--worker 1 --currentWorker 1 -t -ts > /dev/null 2>&1 &", null, 2, "催收系统", "", "mvn clean package -Ptest -Dmaven.test.skip=true", ""); new pClass().init(2,true, "java", "7076", "", "urge_dispatcher", "data-riskcontrol", "dispatcher.log", "application.properties", "--worker 1 --currentWorker 1 -t -ts > /dev/null 2>&1 &", null, 2, "催收系统", "", "mvn clean package -Ptest -Dmaven.test.skip=true", "");
new pClass().init(1,true, "java", "7081", "", "wechat-config", "fund_pay", "wechat-config.log", "application.properties", "--worker 1 --currentWorker 1 -t -ts > /dev/null 2>&1 &", null, 2, "微信消息推送系统", "", "mvn clean package -Ptest -Dmaven.test.skip=true", ""); new pClass().init(1,true, "java", "7081", "", "wechat-config", "fund_pay", "wechat-config.log", "application.properties", "--worker 1 --currentWorker 1 -t -ts > /dev/null 2>&1 &", null, 2, "微信消息推送系统", "", "mvn clean package -Ptest -Dmaven.test.skip=true", "");
......
...@@ -171,7 +171,7 @@ tranceConfig java "ygziguan.api.url=http://139.198.0.253/receiver/grequest" "ygz ...@@ -171,7 +171,7 @@ tranceConfig java "ygziguan.api.url=http://139.198.0.253/receiver/grequest" "ygz
#4.28 #4.28
tranceConfig java "wx.api_host=https:\/\/api.mch.weixin.qq.com\/" "wx.api_host=http:\/\/mock.q-gp.com\/" "192.168.4.28" "gu-bei.properties" tranceConfig java "wx.api_host=https:\/\/api.mch.weixin.qq.com\/" "wx.api_host=http:\/\/mock.q-gp.com\/" "192.168.4.28" "gu-bei.properties"
tranceConfig node "http://139.198.2.95:38099" "http://192.168.4.48:8099" "192.168.4.28" "AppBackend.js" tranceConfig node "http://139.198.2.95:38099" "http://192.168.4.48:8088" "192.168.4.28" "AppBackend.js"
#4.72 #4.72
#tranceConfig java "sms.is.debug=1" "sms.is.debug=0" "192.168.4.24" "di-ting.properties" #tranceConfig java "sms.is.debug=1" "sms.is.debug=0" "192.168.4.24" "di-ting.properties"
...@@ -180,7 +180,7 @@ tranceConfig node "http://139.198.2.95:38099" "http://192.168.4.48:8099" "192.16 ...@@ -180,7 +180,7 @@ tranceConfig node "http://139.198.2.95:38099" "http://192.168.4.48:8099" "192.16
#tranceConfig node ":7013/app/login" ":7042/app/login2" "192.168.4.72" "AppBackend.js" #tranceConfig node ":7013/app/login" ":7042/app/login2" "192.168.4.72" "AppBackend.js"
#tranceConfig node ":7013" ":7042" "192.168.4.72" "AppBackend.js" #tranceConfig node ":7013" ":7042" "192.168.4.72" "AppBackend.js"
#tranceConfig java "wx.api_host=https:\/\/api.mch.weixin.qq.com\/" "wx.api_host=http:\/\/mock.q-gp.com\/" "192.168.4.72" "gu-bei.properties" #tranceConfig java "wx.api_host=https:\/\/api.mch.weixin.qq.com\/" "wx.api_host=http:\/\/mock.q-gp.com\/" "192.168.4.72" "gu-bei.properties"
tranceConfig node "http://139.198.2.95:38099" "http://192.168.4.48:8088" "192.168.4.72" "AppBackend.js" tranceConfig node "http://139.198.2.95:38099" "http://192.168.4.48:8099" "192.168.4.72" "AppBackend.js"
#4.151 #4.151
tranceConfig java "xyqb.is.debug=0" "xyqb.is.debug=1" "192.168.4.151" "xyqb.properties" tranceConfig java "xyqb.is.debug=0" "xyqb.is.debug=1" "192.168.4.151" "xyqb.properties"
tranceConfig java "liebao.aes.key=0123456789abcdef" "liebao.aes.key=e2XNtnB8QEEuvhEW" "192.168.4.151" "cash-loan-flow.properties" tranceConfig java "liebao.aes.key=0123456789abcdef" "liebao.aes.key=e2XNtnB8QEEuvhEW" "192.168.4.151" "cash-loan-flow.properties"
......
...@@ -60,14 +60,12 @@ function mock() ...@@ -60,14 +60,12 @@ function mock()
echo "yeepay.v2.xyqb.yeepay.publicKey=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDUgUEnNB5a/pku7qCI2Eu9V9gyemawnGwdbiAqrcvUGOltep2fLSzf3fZNmfntqxhvLOz7JKVNk/lriXg0l7P76T5ZRvP7UkVWlnK/RMz2krYt5bUlB9EDi0sqWRI00/7JbHBMY+DzDpkF1Fz94HsIzVs9XGESO3Rpyj5vmRWofwIDAQAB" >> /home/quant_group/gu-bei/config/application.properties echo "yeepay.v2.xyqb.yeepay.publicKey=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDUgUEnNB5a/pku7qCI2Eu9V9gyemawnGwdbiAqrcvUGOltep2fLSzf3fZNmfntqxhvLOz7JKVNk/lriXg0l7P76T5ZRvP7UkVWlnK/RMz2krYt5bUlB9EDi0sqWRI00/7JbHBMY+DzDpkF1Fz94HsIzVs9XGESO3Rpyj5vmRWofwIDAQAB" >> /home/quant_group/gu-bei/config/application.properties
echo "yeepay.v2.apihost=http://192.168.4.27:10085/tzt-api/api/" >> /home/quant_group/gu-bei/config/application.properties echo "yeepay.v2.apihost=http://192.168.4.27:10085/tzt-api/api/" >> /home/quant_group/gu-bei/config/application.properties
echo "yeepay.v2.btzt.merchant=10000449633" >> /home/quant_group/gu-bei/config/application.properties #echo "yeepay.v2.btzt.merchant=10000449633" >> /home/quant_group/gu-bei/config/application.properties
echo "yeepay.v2.btzt.privateKey=MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBANSBQSc0Hlr+mS7uoIjYS71X2DJ6ZrCcbB1uICqty9QY6W16nZ8tLN/d9k2Z+e2rGG8s7PskpU2T+WuJeDSXs/vpPllG8/tSRVaWcr9EzPaSti3ltSUH0QOLSypZEjTT/slscExj4PMOmQXUXP3gewjNWz1cYRI7dGnKPm+ZFah/AgMBAAECgYB8AcFngz6DkzcI8C+2K6JnJ6/+JPdv8JgWxID45tqfNrphLMB2dwJM0VY+CrCSRNnJZsoT9FqSXtuaKWqAJlbchhPZjupA9RkWFzlGpCQ63/CC71RYYY03eCnc7AIpn52whkjfWG/yf57jKzEwUT+U034uvXdaA+lVvJ0xqpj3gQJBAOmLODjecn450TJbNQaop+7Q5Hz2TUIxbYakzPpcLGv1QYgHa657r7PJ23ZltDBGldMaNTZfqJrtDcq0rTA4lBECQQDo8CcdUhMZ3JbR2UZN0CG8ljMbNWgNWBa37ebE3ZG5yYldc7zY9US/+/7lhxNDqG0saTvM9pJwEc3ccVMvksOPAkEAqq7V+zIQKVJmItBn06MFgNNoei+kTUFEk8f0CvG8gXYwW5NYzp+UzOg1HbW82B9uNmeMBl4pInknwEMF5B0lkQJAdRxQPgCGk+kAdo6LNxHd9Ed7eEF4h8Ty3xQfgnh3DHYTtsU6e8WMBA24kENB3zEtejeKFjkdVHTPD/Z1wSRDZwJAAvNuq0YuRDsESOAerkBZKonA5CD0M4vHTRqihHrjBohv6yxBU8P7gALrX7qmoaZ3aLmN8wHdOAGTR6LZjQdkoQ==" >> /home/quant_group/gu-bei/config/application.properties #echo "yeepay.v2.btzt.privateKey=MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBANSBQSc0Hlr+mS7uoIjYS71X2DJ6ZrCcbB1uICqty9QY6W16nZ8tLN/d9k2Z+e2rGG8s7PskpU2T+WuJeDSXs/vpPllG8/tSRVaWcr9EzPaSti3ltSUH0QOLSypZEjTT/slscExj4PMOmQXUXP3gewjNWz1cYRI7dGnKPm+ZFah/AgMBAAECgYB8AcFngz6DkzcI8C+2K6JnJ6/+JPdv8JgWxID45tqfNrphLMB2dwJM0VY+CrCSRNnJZsoT9FqSXtuaKWqAJlbchhPZjupA9RkWFzlGpCQ63/CC71RYYY03eCnc7AIpn52whkjfWG/yf57jKzEwUT+U034uvXdaA+lVvJ0xqpj3gQJBAOmLODjecn450TJbNQaop+7Q5Hz2TUIxbYakzPpcLGv1QYgHa657r7PJ23ZltDBGldMaNTZfqJrtDcq0rTA4lBECQQDo8CcdUhMZ3JbR2UZN0CG8ljMbNWgNWBa37ebE3ZG5yYldc7zY9US/+/7lhxNDqG0saTvM9pJwEc3ccVMvksOPAkEAqq7V+zIQKVJmItBn06MFgNNoei+kTUFEk8f0CvG8gXYwW5NYzp+UzOg1HbW82B9uNmeMBl4pInknwEMF5B0lkQJAdRxQPgCGk+kAdo6LNxHd9Ed7eEF4h8Ty3xQfgnh3DHYTtsU6e8WMBA24kENB3zEtejeKFjkdVHTPD/Z1wSRDZwJAAvNuq0YuRDsESOAerkBZKonA5CD0M4vHTRqihHrjBohv6yxBU8P7gALrX7qmoaZ3aLmN8wHdOAGTR6LZjQdkoQ==" >> /home/quant_group/gu-bei/config/application.properties
echo "yeepay.v2.btzt.yeepay.publicKey=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDUgUEnNB5a/pku7qCI2Eu9V9gyemawnGwdbiAqrcvUGOltep2fLSzf3fZNmfntqxhvLOz7JKVNk/lriXg0l7P76T5ZRvP7UkVWlnK/RMz2krYt5bUlB9EDi0sqWRI00/7JbHBMY+DzDpkF1Fz94HsIzVs9XGESO3Rpyj5vmRWofwIDAQAB" >> /home/quant_group/gu-bei/config/application.properties #echo "yeepay.v2.btzt.yeepay.publicKey=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDUgUEnNB5a/pku7qCI2Eu9V9gyemawnGwdbiAqrcvUGOltep2fLSzf3fZNmfntqxhvLOz7JKVNk/lriXg0l7P76T5ZRvP7UkVWlnK/RMz2krYt5bUlB9EDi0sqWRI00/7JbHBMY+DzDpkF1Fz94HsIzVs9XGESO3Rpyj5vmRWofwIDAQAB" >> /home/quant_group/gu-bei/config/application.properties
echo "umpay.btzt.mer_id=50079" >> /home/quant_group/gu-bei/config/application.properties #echo "umpay.btzt.mer_id=50079" >> /home/quant_group/gu-bei/config/application.properties
echo "umpay.btzt.private_key=MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBANSBQSc0Hlr+mS7uoIjYS71X2DJ6ZrCcbB1uICqty9QY6W16nZ8tLN/d9k2Z+e2rGG8s7PskpU2T+WuJeDSXs/vpPllG8/tSRVaWcr9EzPaSti3ltSUH0QOLSypZEjTT/slscExj4PMOmQXUXP3gewjNWz1cYRI7dGnKPm+ZFah/AgMBAAECgYB8AcFngz6DkzcI8C+2K6JnJ6/+JPdv8JgWxID45tqfNrphLMB2dwJM0VY+CrCSRNnJZsoT9FqSXtuaKWqAJlbchhPZjupA9RkWFzlGpCQ63/CC71RYYY03eCnc7AIpn52whkjfWG/yf57jKzEwUT+U034uvXdaA+lVvJ0xqpj3gQJBAOmLODjecn450TJbNQaop+7Q5Hz2TUIxbYakzPpcLGv1QYgHa657r7PJ23ZltDBGldMaNTZfqJrtDcq0rTA4lBECQQDo8CcdUhMZ3JbR2UZN0CG8ljMbNWgNWBa37ebE3ZG5yYldc7zY9US/+/7lhxNDqG0saTvM9pJwEc3ccVMvksOPAkEAqq7V+zIQKVJmItBn06MFgNNoei+kTUFEk8f0CvG8gXYwW5NYzp+UzOg1HbW82B9uNmeMBl4pInknwEMF5B0lkQJAdRxQPgCGk+kAdo6LNxHd9Ed7eEF4h8Ty3xQfgnh3DHYTtsU6e8WMBA24kENB3zEtejeKFjkdVHTPD/Z1wSRDZwJAAvNuq0YuRDsESOAerkBZKonA5CD0M4vHTRqihHrjBohv6yxBU8P7gALrX7qmoaZ3aLmN8wHdOAGTR6LZjQdkoQ==" >> /home/quant_group/gu-bei/config/application.properties #echo "umpay.btzt.private_key=MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBANSBQSc0Hlr+mS7uoIjYS71X2DJ6ZrCcbB1uICqty9QY6W16nZ8tLN/d9k2Z+e2rGG8s7PskpU2T+WuJeDSXs/vpPllG8/tSRVaWcr9EzPaSti3ltSUH0QOLSypZEjTT/slscExj4PMOmQXUXP3gewjNWz1cYRI7dGnKPm+ZFah/AgMBAAECgYB8AcFngz6DkzcI8C+2K6JnJ6/+JPdv8JgWxID45tqfNrphLMB2dwJM0VY+CrCSRNnJZsoT9FqSXtuaKWqAJlbchhPZjupA9RkWFzlGpCQ63/CC71RYYY03eCnc7AIpn52whkjfWG/yf57jKzEwUT+U034uvXdaA+lVvJ0xqpj3gQJBAOmLODjecn450TJbNQaop+7Q5Hz2TUIxbYakzPpcLGv1QYgHa657r7PJ23ZltDBGldMaNTZfqJrtDcq0rTA4lBECQQDo8CcdUhMZ3JbR2UZN0CG8ljMbNWgNWBa37ebE3ZG5yYldc7zY9US/+/7lhxNDqG0saTvM9pJwEc3ccVMvksOPAkEAqq7V+zIQKVJmItBn06MFgNNoei+kTUFEk8f0CvG8gXYwW5NYzp+UzOg1HbW82B9uNmeMBl4pInknwEMF5B0lkQJAdRxQPgCGk+kAdo6LNxHd9Ed7eEF4h8Ty3xQfgnh3DHYTtsU6e8WMBA24kENB3zEtejeKFjkdVHTPD/Z1wSRDZwJAAvNuq0YuRDsESOAerkBZKonA5CD0M4vHTRqihHrjBohv6yxBU8P7gALrX7qmoaZ3aLmN8wHdOAGTR6LZjQdkoQ==" >> /home/quant_group/gu-bei/config/application.properties
echo "umpay.btzt.public_key=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDUgUEnNB5a/pku7qCI2Eu9V9gyemawnGwdbiAqrcvUGOltep2fLSzf3fZNmfntqxhvLOz7JKVNk/lriXg0l7P76T5ZRvP7UkVWlnK/RMz2krYt5bUlB9EDi0sqWRI00/7JbHBMY+DzDpkF1Fz94HsIzVs9XGESO3Rpyj5vmRWofwIDAQAB" >> /home/quant_group/gu-bei/config/application.properties #echo "umpay.btzt.public_key=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDUgUEnNB5a/pku7qCI2Eu9V9gyemawnGwdbiAqrcvUGOltep2fLSzf3fZNmfntqxhvLOz7JKVNk/lriXg0l7P76T5ZRvP7UkVWlnK/RMz2krYt5bUlB9EDi0sqWRI00/7JbHBMY+DzDpkF1Fz94HsIzVs9XGESO3Rpyj5vmRWofwIDAQAB" >> /home/quant_group/gu-bei/config/application.properties
} }
function unmock() function unmock()
...@@ -101,6 +99,13 @@ function unmock() ...@@ -101,6 +99,13 @@ function unmock()
sed -i "/yeepay.v2.xyqb.privateKey/d" /home/quant_group/gu-bei/config/application.properties sed -i "/yeepay.v2.xyqb.privateKey/d" /home/quant_group/gu-bei/config/application.properties
sed -i "/yeepay.v2.xyqb.yeepay.publicKey/d" /home/quant_group/gu-bei/config/application.properties sed -i "/yeepay.v2.xyqb.yeepay.publicKey/d" /home/quant_group/gu-bei/config/application.properties
sed -i "/yeepay.v2.apihost/d" /home/quant_group/gu-bei/config/application.properties sed -i "/yeepay.v2.apihost/d" /home/quant_group/gu-bei/config/application.properties
#sed -i "/yeepay.v2.btzt.merchant/d" /home/quant_group/gu-bei/config/application.properties
#sed -i "/yeepay.v2.btzt.privateKey/d" /home/quant_group/gu-bei/config/application.properties
#sed -i "/yeepay.v2.btzt.yeepay.publicKey/d" /home/quant_group/gu-bei/config/application.properties
#sed -i "/umpay.btzt.mer_id/d" /home/quant_group/gu-bei/config/application.properties
#sed -i "/umpay.btzt.private_key/d" /home/quant_group/gu-bei/config/application.properties
#sed -i "/umpay.btzt.public_key/d" /home/quant_group/gu-bei/config/application.properties
fi fi
} }
......
qa20|192.168.167.5 qa20|192.168.167.5 qa1|192.168.167.2 qa3|192.168.167.6 qa4|192.168.167.3 qa21|192.168.167.4
...@@ -169,7 +169,7 @@ do ...@@ -169,7 +169,7 @@ do
var=(${projectAndPort//|/ }) var=(${projectAndPort//|/ })
namespace=(${host_name//|/ }) namespace=(${host_name//|/ })
addFrpcSub ${var[0]}-${var[2]} http 127.0.0 1 8000 ${var[2]}-${namespace[0]} $filename addFrpcSub ${var[0]}-${var[2]} http 127.0.0 1 8000 ${var[2]}-${namespace[0]} $filename
createNginxHttpAndSSLConf ${var[2]}-qa${namespace[0]} ${namespace[1]} ${var[1]} $nginxname/${var[0]}-${namespace[0]}.conf createNginxHttpAndSSLConf ${var[2]}-${namespace[0]} ${namespace[1]} ${var[1]} $nginxname/${var[0]}-${namespace[0]}.conf
done done
basePorts="redis|80 db|3306 rabbitmq|80" basePorts="redis|80 db|3306 rabbitmq|80"
for basePort in ${basePorts[@]} for basePort in ${basePorts[@]}
......
#!/bin/bash
ip=$1
phone_no=$2
PORT="3306"
USERNAME="qa"
PASSWORD="qatest"
mysqld="-h${ip} -P${PORT} -u${USERNAME} -p${PASSWORD}"
function baitiaoDeleteOrder(){
len=`echo $phone_no|awk '{print length($0)}'`
if [ $len -ne 11 ];then
echo "请输入11位手机号!"
exit -1
else
select_xyqb_user="select count(*) from user where phone_no='${phone_no}'"
count_xyqb_user=`mysql -N $mysqld xyqb_user -e "${select_xyqb_user}"`
# echo "count_xyqb_user = $count_xyqb_user"
#xyqb_user、xyqb
while [ $count_xyqb_user -gt 0 ];do
# echo "count_xyqb_user = $count_xyqb_user"
user_id_sql="select id from user where phone_no='${phone_no}' limit 1"
# echo $user_id_sql
user_id=`mysql -N $mysqld xyqb_user -e "${user_id_sql}"`
if [ ! $user_id ];then
echo "user_id is null"
continue
else
echo "user_id=$user_id"
order_id_sql="select id from baitiao_order where user_id=${user_id} LIMIT 1";
# echo $order_id_sql
order_id=`mysql -N $mysqld xyqb -e "${order_id_sql}"`
if [ ! $order_id ];then
echo "order_id is null"
else
# echo "order_id=$order_id"
fund_id_sql="SELECT id from xyqb.baitiao_fund_order WHERE order_id=${order_id} limit 1";
# echo $fund_id_sql
fund_id=`mysql -N $mysqld xyqb -e "${fund_id_sql}"`
#echo $fund_id_sql
delete2="delete from baitiao_fund_order where xyqb.baitiao_fund_order.order_id=${order_id}";
# echo $delete2;
mysql -N $mysqld xyqb -e "${delete2}"
delete5="delete from baitiao_fund_repayment_plan where baitiao_fund_repayment_plan.fund_order_id=${fund_id}";
#echo $delete5
mysql -N $mysqld xyqb -e "${delete5}"
fi
#xyqb.user/user_detail/baitiao_account/baitiao_bill/baitiao_bill_day/baitiao_bill_repayment_plan/
#xyqb.baitiao_consume_history/baitiao_fund_order/baitiao_fund_repayment_plan/baitiao_order/loan_application_history/loan_step_info/repayment_plan
#xyqb_user.user/user_detail
del_user="delete from user where user.id=${user_id}"
mysql -N $mysqld xyqb -e "${del_user}"
mysql -N $mysqld xyqb_user -e "${del_user}"
#echo $del_user
del_user_detail="delete from user_detail where user_detail.user_id=${user_id}"
mysql -N $mysqld xyqb -e "${del_user_detail}"
mysql -N $mysqld xyqb_user -e "${del_user_detail}"
# echo $del_user_detail
del_account="delete from baitiao_account where baitiao_account.user_id=${user_id}"
mysql -N $mysqld xyqb -e "${del_account}"
delete1="delete from baitiao_order where xyqb.baitiao_order.user_id=${user_id}";
#echo $delete1;
mysql -N $mysqld xyqb -e "${delete1}"
delete3="delete from loan_application_history where loan_application_history.user_id=${user_id}"
# echo $delete3
mysql -N $mysqld xyqb -e "${delete3}"
delete4="delete from baitiao_bill_repayment_plan where xyqb.baitiao_bill_repayment_plan.user_id=${user_id}";
#echo $delete4;
mysql -N $mysqld xyqb -e "${delete4}"
delete6="delete from baitiao_consume_history where baitiao_consume_history.user_id=${user_id} and baitiao_consume_history.order_id !=-1";
#echo $delete6;
mysql -N $mysqld xyqb -e "${delete6}"
delete7="delete from repayment_plan where repayment_plan.user_id=${user_id}"
# echo $delete7
mysql -N $mysqld xyqb -e "${delete7}"
#delete8="delete from loan_step_info where loan_step_info.user_id=${user_id}"
echo $delete8
mysql -N $mysqld xyqb -e "${delete8}"
# delete9="delete from baitiao_bill_day where baitiao_bill_day.user_id=${user_id}"
echo $delete9
fi
count_xyqb_user=$[count_xyqb_user -1]
done
del_bill="delete from baitiao_bill where baitiao_bill.user_phone=${phone_no}"
mysql -N $mysqld xyqb -e "${del_bill}"
#echo $del_bill
del_repay="delete from baitiao_bill_repayment_plan where baitiao_bill_repayment_plan.user_phone=${phone_no}"
mysql -N $mysqld xyqb -e "${del_repay}"
#echo $del_repay
del_consume="delete from baitiao_consume_history where baitiao_consume_history.consume_seq like '%${phone_no}%'"
mysql -N $mysqld xyqb -e "${del_consume}"
# echo $del_consume
#spider_center.user/user_detail/authorization
select_spi_user="select count(*) from user where phone_no='${phone_no}'"
count_spi_user=`mysql -N $mysqld spider_center -e "${select_spi_user}"`
#echo "count_spi_user =$count_spi_user"
while [ $count_spi_user -gt 0 ];do
spi_id_sql="select id from user where phone_no='${phone_no}' limit 1"
spi_user_id=`mysql -N $mysqld spider_center -e "${spi_id_sql}"`
if [ ! $spi_user_id ];then
echo "spi_user_id is null"
else
# echo "spi_user_id=${spi_user_id}"
del_spi1=" DELETE from user where user.phone_no=${phone_no}"
mysql -N $mysqld spider_center -e "${del_spi1}"
# echo ${del_spi1}
del_spi2="delete from user WHERE user.id=${spi_user_id}"
mysql -N $mysqld spider_center -e "${del_spi2}"
# echo ${del_spi2}
del_spi3="DELETE from user_detail WHERE user_detail.user_id=${spi_user_id}"
mysql -N $mysqld spider_center -e "${del_spi3}"
del_spi4="DELETE from authorization WHERE authorization.user_id=${spi_user_id}"
mysql -N $mysqld spider_center -e "${del_spi4}"
fi
count_spi_user=$[count_spi_user-1]
done
del_spi_user="delete from user where user.phone_no=${phone_no}"
mysql -N $mysqld spider_center -e "${del_spi_user}"
del_spi_detail="delete from user_detail where user_detail.phone_no=${phone_no}"
mysql -N $mysqld spider_center -e "${del_spi_detail}"
#mall.user/user_detail/baitiao_card/mall_order
select_mall_user="select count(*)from user where phone_no='${phone_no}'"
count_mall_user=`mysql -N $mysqld mall -e "${select_mall_user}"`
# echo "count_mall_user = $count_mall_user"
while [ $count_mall_user -gt 0 ];do
select_mall_id="select id from user where user.phone_no=${phone_no} limit 1"
mall_user_id=`mysql -N $mysqld spider_center -e "${spi_id_sql}"`
# echo $select_mall_id
if [ ! $mall_user_id ];then
echo "mall_user_id is null"
else
# echo "mall_user_id= ${mall_user_id}"
del_order="delete from mall_order where mall_order.user_id=${mall_user_id}"
# echo $del_order
mysql -N $mysqld mall -e "${del_order}"
del_contact="delete from contact_address where contact_address.user_id=${mall_user_id}"
mysql -N $mysqld mall -e "${del_contact}"
# echo $del_contact
fi
count_mall_user=$[count_mall_user-1]
done
del_baitiao_card="delete from baitiao_card where baitiao_card.phone_no=${phone_no}"
mysql -N $mysqld mall -e "${del_baitiao_card}"
del_mall_user="delete from user where user.phone_no=${phone_no}"
mysql -N $mysqld mall -e "${del_mall_user}"
del_mall_detail="delete from user_detail where user_detail.phone_no=${phone_no}"
mysql -N $mysqld mall -e "${del_mall_detail}"
#silk_road
#paycenter
fi
echo "done!!! `date`"
}
baitiaoDeleteOrder $ip $phone_no
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment