package com.offcn.process;

import io.restassured.http.Headers;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;

import com.offcn.TestUnti.Log;
import com.offcn.TestUnti.MD5keyUtil;
import com.offcn.TestUnti.MYSQLConnection;
import com.offcn.TestUnti.MapUtil;
import com.offcn.TestUnti.ReadProperties;
import com.offcn.TestUnti.cmdUtil;
import com.offcn.system.system;


public class HT extends BasicsGM{
	
	public static boolean isClearMysql =false;
	
	public static String Location="";//Location，调用接口发现还是需要登录，获取到的连接
	public static String app_id="";//Location，调用接口发现还是需要登录，获取到的连接
	public static String ref="";//Location，调用接口发现还是需要登录，获取到的连接
	
	public static String admin_login_ssid="";//后台登录cookie
	public static String admin_28_encode="";//后台登录cookie
	public static String PHPSESSID="";//Cookie，后台第77个接口使用
	public static String url="";//url，登录接口返回，获取到的连接
	
	
	//必有
	public void Connectionsa(){
		//================设置数据库连接池=====================
//		ConnectionsMap=getConnections(new String[]{"tk"});
//		StatementsMap=getStatements(ConnectionsMap);
//		conn=ConnectionsMap.get("tk");//设置默认的连接对象
//		stmt=StatementsMap.get("tk");//设置默认的连接对象
//		//================设置公共参数========================
//		PublicParameter.put("appid","tiku");//静态公共参数
//		DynamicParameter.put("sign","code");//动态公共参数
	}
	
	//必有
	public HT(){
		Connectionsa();
	}
	
	//必有//动态公共参数
	public HashMap<String, Object> setDynamicParameter(HashMap<String, Object> data) {
		String parameter =null;
		HashMap<String, Object> dataNew=data;
		if(DynamicParameter.size()!=0){
			parameter = MapUtil.getValue("parameter", data);
			String Request = MapUtil.getValue("Request", data);
			Set<Map.Entry<String,String>> entrySet = DynamicParameter.entrySet();
			Iterator<Map.Entry<String,String>> it = entrySet.iterator();
			while(it.hasNext()){
				Map.Entry<String,String> me = it.next();
				String key = me.getKey();
				String value = me.getValue();
//				Log.logInfo("公共动态参数："+key+":"+value);
				if(!parameter.contains("\""+key+"\"") && !parameter.contains(key+"=")){
					if("get".equals(Request)){
						if(parameter==null || parameter.length()==0){
							parameter=key+"="+GetSignValue(parameter);
						}else{
							parameter=parameter+"&"+key+"="+GetSignValue(parameter);
						}
					}else{
						if(parameter==null || parameter.length()==0){
							parameter=key+"\":\""+GetSignValue(parameter)+"\"";
						}else{
							parameter=parameter+",\""+key+"\":\""+GetSignValue(parameter)+"\"";
						}
					}
				}
			}
			dataNew.put("parameter", parameter);
		}
		return dataNew;
	}

	//必有
	public HashMap<String, Object> setPublicParameter(HashMap<String, Object> data) {

		String parameter =null;
		HashMap<String, Object> dataNew=data;
		if(PublicParameter.size()!=0){
			parameter = MapUtil.getValue("parameter", data);
			String Request = MapUtil.getValue("Request", data);
			Set<Map.Entry<String,String>> entrySet = PublicParameter.entrySet();
			Iterator<Map.Entry<String,String>> it = entrySet.iterator();
			while(it.hasNext()){
				Map.Entry<String,String> me = it.next();
				String key = me.getKey();
				String value = me.getValue();
//				Log.logInfo("公共静态参数："+key+":"+value);
				if(!parameter.contains("\""+key+"\"") && !parameter.contains(key+"=")){
					if("get".equals(Request)){
						if(parameter==null || parameter.length()==0){
							parameter=key+"="+value;
						}else{
							parameter=parameter+"&"+key+"="+value;
						}
					}else{
						if(parameter==null || parameter.length()==0){
							parameter=key+"\":\""+value+"\"";
						}else{
							parameter=parameter+",\""+key+"\":\""+value+"\"";
						}
					}
				}
			}
			dataNew.put("parameter", parameter);
		}
		return dataNew;
	}
	
	//验签值
	public static String GetSign(String parameter){
		parameter=parameter+",\"sign\":\""+GetSignValue(parameter)+"\"";
		return parameter;
	}
	
	
	//验签值
	public static String GetSignValue(String parameter){
		parameter=parameter.replace("\"", "");
		parameter=parameter.replace(":", "=");
		String arr[]=parameter.split(",");
		Arrays.sort(arr);
		parameter=Arrays.toString(arr);
		parameter=parameter.toString().replace(", ", "&");
		parameter=(parameter.substring(1,parameter.length()-1))+"&123456";
		return MD5keyUtil.getMD5Str(parameter);
	}
	
	//必有
	public void cleanMysqlData() {
		 if (!isClearMysql) {
			Log.logInfo("tk=====cleanMysqlData");
		  }
	}
	
}
