package flow;

import java.util.Date;
import java.util.HashMap;

import org.apache.log4j.Logger;
import org.codehaus.jettison.json.JSONException;
import org.codehaus.jettison.json.JSONObject;

public class GetVIP {
private static Logger log = Logger.getLogger(GetVIP.class);
	
	/**
	 * 利用GetVIP进行黑名单>紫珀>红珀>金珀>heytap>=红名单>普通用户
	 * @ClassName: getVIP 
	 * @Description: seven
	 * @author: 进行黑名单>紫珀>红珀>金珀>heytap>=红名单>普通用户
	 * @date 2021年7月23日 下午2:23
	 *  
	 */
	//黑名单（挂机）>svip名单（进入svip技能组）>红名单（进入find）>高端定制（进入find）>高端（进入find）>金钻卡（进入vip技能组）>heytap（进入普通）>普通用户（非以上进普通）
	public void getVIP(com.avaya.sce.runtimecommon.SCESession mySession) {
		//进线电话号码去除0
		String ani = mySession.getVariableField(IProjectVariables.SESSION,IProjectVariables.SESSION_FIELD_ANI).getStringValue();
		if(ani.length()==12){
			String substring = ani.substring(0, 1);
			try {
				if (substring.equals("0")) {
					String substring2 = ani.substring(1, 12);
					mySession.getVariableField(IProjectVariables.SESSION,IProjectVariables.SESSION_FIELD_ANI).setValue(substring2);
				}
			} catch (Exception e) {
				log.info(e.getMessage());
			}
		}
		
		mySession.getVariableField(IProjectVariables.VIPTYPE).setValue("普通用户");
		//mySession.getVariableField(IProjectVariables.VIPTYPE).setValue("紫珀用户");
		String vipss = mySession.getVariableField(IProjectVariables.VIPTYPE).getStringValue();
		log.info("---GetVIP---初始化用户等级："+vipss+"  此用户为普通用户"+"    手机号码："+ani);
		//红黑白名单
		HashMap<String, String> blackMap = BlackMap(mySession);
		//会员名单
		HashMap<String, String> ivrUserStar = IVRUserStar(mySession);

		ani = mySession.getVariableField(IProjectVariables.SESSION,IProjectVariables.SESSION_FIELD_ANI).getStringValue();
		//是否是黑名单
		if(blackMap.containsKey("type")){
			String type = blackMap.get("type");
			if (type.equals("3")) {
				mySession.getVariableField(IProjectVariables.WHITE).setValue(1);
				log.info("---GetVIP---"+"  此用户为白名单用户"+"    手机号码："+ani);
			}
			if(type.equals("1")){
				
				mySession.getVariableField(IProjectVariables.VIPGRADE).setValue(1);
				mySession.getVariableField(IProjectVariables.VIPTYPE).setValue("黑名单用户");
				String VIP = mySession.getVariableField(IProjectVariables.VIPTYPE).getStringValue();
				log.info("---GetVIP---判断用户等级："+VIP+"  此用户为黑名单用户"+"    手机号码："+ani);
				return;
			}
		}
		//是否是孔雀客户
		/*if(ivrUserStar.containsKey("isModelPeacock")){
			String gradeCode = ivrUserStar.get("isModelPeacock");
			if(gradeCode.equals("true")){
				mySession.getVariableField(IProjectVariables.VIPTYPE).setValue("孔雀用户");
				String VIP = mySession.getVariableField(IProjectVariables.VIPTYPE).getStringValue();
				log.info("---GetVIP---判断用户等级："+VIP+"  此用户为孔雀用户"+"    手机号码："+ani);
				return;
			}
		}*/
		//是否是紫珀用户，红珀用户，金珀用户
		if(ivrUserStar.containsKey("amberVipLevel")){
			String amberVipLevel = ivrUserStar.get("amberVipLevel");
			if(amberVipLevel.equals("11")){
				mySession.getVariableField(IProjectVariables.VIPGRADE).setValue(4);
				mySession.getVariableField(IProjectVariables.VIPTYPE).setValue("紫珀用户");
				String VIP = mySession.getVariableField(IProjectVariables.VIPTYPE).getStringValue();
				log.info("---GetVIP---判断用户等级："+VIP+"  此用户为紫珀用户"+"    手机号码："+ani);
				return;
			}else if (amberVipLevel.equals("10")) {
				mySession.getVariableField(IProjectVariables.VIPGRADE).setValue(3);
				mySession.getVariableField(IProjectVariables.VIPTYPE).setValue("红珀用户");
				String VIP = mySession.getVariableField(IProjectVariables.VIPTYPE).getStringValue();
				log.info("---GetVIP---判断用户等级："+VIP+"  此用户为红珀用户"+"    手机号码："+ani);
				return;
			}else if (amberVipLevel.equals("7")||amberVipLevel.equals("8")||amberVipLevel.equals("9")) {
				mySession.getVariableField(IProjectVariables.VIPGRADE).setValue(3);
				mySession.getVariableField(IProjectVariables.VIPTYPE).setValue("金珀用户");
				String VIP = mySession.getVariableField(IProjectVariables.VIPTYPE).getStringValue();
				log.info("---GetVIP---判断用户等级："+VIP+"  此用户为金珀用户"+"    手机号码："+ani);
				return;
			}
					
		}
		//HeyTap
		if(ivrUserStar.containsKey("isHeyTapVip")){
			String isHeyTapVip = ivrUserStar.get("isHeyTapVip");
			if(isHeyTapVip.equals("true")){
				mySession.getVariableField(IProjectVariables.VIPGRADE).setValue(0);
				mySession.getVariableField(IProjectVariables.VIPTYPE).setValue("HeyTap用户");
				String VIP = mySession.getVariableField(IProjectVariables.VIPTYPE).getStringValue();
				log.info("---GetVIP---判断用户等级："+VIP+"  此用户为HeyTap用户"+"    手机号码："+ani);
				return;
			}		
		}
		//是否是红白名单
		if(blackMap.containsKey("type")){
			String type = blackMap.get("type");
			if (type.equals("2")) {
				mySession.getVariableField(IProjectVariables.VIPGRADE).setValue(6);
				mySession.getVariableField(IProjectVariables.VIPTYPE).setValue("红名单用户");
				String VIP = mySession.getVariableField(IProjectVariables.VIPTYPE).getStringValue();
				log.info("---GetVIP---判断用户等级："+VIP+"  此用户为红名单用户"+"    手机号码："+ani);
				return;
			}
			/*if(ivrUserStar.containsKey("ModelVipType")){
				String ModelVipType = ivrUserStar.get("ModelVipType");
					if (ModelVipType.equals("1")) {
						mySession.getVariableField(IProjectVariables.VIPTYPE).setValue("FIND用户");
						String VIP = mySession.getVariableField(IProjectVariables.VIPTYPE).getStringValue();
						log.info("---GetVIP---判断用户等级："+VIP+"  此用户为高端(定制)用户"+"    手机号码："+ani);
						return;
					}
					if (ModelVipType.equals("2")) {
						mySession.getVariableField(IProjectVariables.VIPTYPE).setValue("FIND用户");
						String VIP = mySession.getVariableField(IProjectVariables.VIPTYPE).getStringValue();
						log.info("---GetVIP---判断用户等级："+VIP+"  此用户为高端"+"    手机号码："+ani);
						return;
					}
			}else*/ 
			
					
		}
		//是否是钻石用户，黄金用户
		/*if(ivrUserStar.containsKey("gradeCode")){
			String gradeCode = ivrUserStar.get("gradeCode");
			if(gradeCode.equals("diamondcard")){
				mySession.getVariableField(IProjectVariables.VIPTYPE).setValue("钻石用户");
				String VIP = mySession.getVariableField(IProjectVariables.VIPTYPE).getStringValue();
				log.info("---GetVIP---判断用户等级："+VIP+"  此用户为钻石用户"+"    手机号码："+ani);
				return;
			}else if (gradeCode.equals("goldcard")) {
				mySession.getVariableField(IProjectVariables.VIPTYPE).setValue("黄金用户");
				log.info("---GetVIP---判断用户等级："+4+"  此用户为黄金用户"+"    手机号码："+ani);
				return;
			}
		}*/
		
		//是否是HeyTap用户
		/*if(ivrUserStar.containsKey("isHeyTapVip")){
			String isHeyTap = ivrUserStar.get("isHeyTapVip");
			if(isHeyTap.equals("true")){
				mySession.getVariableField(IProjectVariables.VIPTYPE).setValue("HeyTap用户");
				String VIP = mySession.getVariableField(IProjectVariables.VIPTYPE).getStringValue();
				log.info("---GetVIP---判断用户等级："+VIP+"  此用户为HeyTap用户"+"    手机号码："+ani);
				return;
			}
		}*/
		//银卡用户
		/*if(ivrUserStar.containsKey("gradeCode")){
			String gradeCode = ivrUserStar.get("gradeCode");
			if(gradeCode.equals("silvercard")){
				mySession.getVariableField(IProjectVariables.VIPTYPE).setValue("银卡用户");
				String VIP = mySession.getVariableField(IProjectVariables.VIPTYPE).getStringValue();
				log.info("---GetVIP---判断用户等级："+VIP+"  此用户为银卡用户"+"    手机号码："+ani);
				return;
			}
		}*/
	}
	
	/**
	 * 利用GetVIP进行BlackMap请求的工具类获取红黑白名单
	 * @ClassName: BlackMap 
	 * @Description: seven
	 * @author Devin <xxx> 
	 * @date 2021年7月23日 下午2:23
	 *  
	 */
	public HashMap<String , String > BlackMap(com.avaya.sce.runtimecommon.SCESession mySession){
		HashMap<String , String >blackMAP =new HashMap<String , String >();
		//OD变量钟HTTP接口钟获取ip为IP地址，url为红黑白名单url
		String ip = mySession.getVariableField(IProjectVariables.HTTP,IProjectVariables.HTTP_FIELD_IP).getStringValue();
		String url = mySession.getVariableField(IProjectVariables.HTTP,IProjectVariables.HTTP_FIELD_URL_1).getStringValue();
		//从session中获取ani参数获取用户手机号码
		String ani = mySession.getVariableField(IProjectVariables.SESSION,IProjectVariables.SESSION_FIELD_ANI).getStringValue();
		log.info("---GetVIP---红黑白名单"+"    手机号码："+ani+"    ip："+ip+"    url："+url);
		
		JSONObject json = new JSONObject();
		try {
			json.put("phone", ani);
			json.put("callType", 1);
			log.info("---GetVIP---红黑白名单"+"    手机号码："+ani+"    json："+json.toString());
			//String post = mySession.getVariableField(IProjectVariables.TESTCESHI).getStringValue();
			String post = HttpClientUtil.doPost(ip+url, json, "utf-8");
			log.info("---GetVIP---红黑白名单"+"    接口回传值："+post);
			
			JSONObject jo = new JSONObject(post);
			try {

				String status = (String) jo.get("status");
				String message = (String) jo.get("message");
				String type = (String) jo.get("type");
				blackMAP.put("status", status);
				blackMAP.put("message", message);
				blackMAP.put("type", type);
				log.info("---GetVIP---红黑白名单"+"    blackMAP："+blackMAP.toString());
				
			} catch (Exception e) {
				log.info("---GetVIP---红黑白名单"+"    接口回传值解析异常："+e.getMessage());
				
			}
		} catch (Exception e) {
			log.info("---GetVIP---"+"红黑白名单出现异常："+e.getMessage());
		}
		return blackMAP;
		
	}
	
	
	/**
	 * 利用GetVIP进行IVRUserStar请求的工具类获取会员相关接口
	 * @ClassName: IVRUserStar 
	 * @Description: seven
	 * @author Devin <xxx> 
	 * @date 2021年7月23日 下午2:23
	 *  
	 */
	public HashMap<String , String > IVRUserStar(com.avaya.sce.runtimecommon.SCESession mySession){
		HashMap<String , String >ivrUserStarMap =new HashMap<String , String >();
		//OD变量钟HTTP接口钟获取ip为IP地址，url为红黑白名单url
		String ip = mySession.getVariableField(IProjectVariables.HTTP,IProjectVariables.HTTP_FIELD_IP).getStringValue();
		String url = mySession.getVariableField(IProjectVariables.HTTP,IProjectVariables.HTTP_FIELD_URL_2).getStringValue();
		//从session中获取ani参数获取用户手机号码
		String ani = mySession.getVariableField(IProjectVariables.SESSION,IProjectVariables.SESSION_FIELD_ANI).getStringValue();
		log.info("---GetVIP---会员相关接口"+"    手机号码："+ani+"    ip："+ip+"    url："+url);
		
		JSONObject json = new JSONObject();
		try {
			json.put("phone", ani);
			log.info("---GetVIP---会员相关接口"+"    手机号码："+ani+"    json："+json.toString());
			//String post = mySession.getVariableField(IProjectVariables.TESTCESHI).getStringValue();
			String post = HttpClientUtil.doPost(ip+url, json, "utf-8");
			log.info("---GetVIP---会员相关接口"+"    接口回传值："+post);
			
			JSONObject jo = new JSONObject(post);
			try {

				String status = (String) jo.get("status");
				String message = (String) jo.get("message");
				String gradeCode= (String) jo.get("gradeCode");
				//String isHeyTapVip= (String) jo.get("isHeyTapVip");
				boolean HeyTapVip=(boolean)jo.get("isHeyTapVip");
				String isHeyTapVip=String.valueOf(HeyTapVip);
				String ModelVipType= (String) jo.get("ModelVipType");
				int amberVipLevel= (int) jo.get("amberVipLevel");
				String amberVipLevelS=amberVipLevel+"";

				
				ivrUserStarMap.put("status", status);
				ivrUserStarMap.put("message", message);
				ivrUserStarMap.put("gradeCode", gradeCode);
				ivrUserStarMap.put("isHeyTapVip", isHeyTapVip);
				ivrUserStarMap.put("ModelVipType", ModelVipType);
				ivrUserStarMap.put("amberVipLevel", amberVipLevelS);

				log.info("---GetVIP---会员相关接口"+"    blackMAP："+ivrUserStarMap.toString());
				
			} catch (Exception e) {
				System.out.println(e.getMessage());
				log.info("---GetVIP---会员相关接口"+"    接口回传值解析异常："+e.getMessage());
				
			}
		} catch (Exception e) {
			log.info("---GetVIP---"+"会员相关接口出现异常："+e.getMessage());
		}
		return ivrUserStarMap;
		
	}

}
