package cn.timer.api.utils;

import com.alibaba.fastjson.JSONObject;
import com.aliyuncs.CommonRequest;
import com.aliyuncs.CommonResponse;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.exceptions.ServerException;
import com.aliyuncs.http.MethodType;
import com.aliyuncs.profile.DefaultProfile;

import cn.timer.api.dto.qyzx.EntRegisterDto;

/**
 * aliyun阿里云短信服务
 * 
 * @author dsc
 *
 */
public class AliyunSMS {

	/**
	 * 
	 * @param phone
	 * @param templateCode 1."身份验证验证码" 2."登录确认验证码" 3."登录异常验证码" 4."用户注册验证码"
	 *                     5."修改密码验证码" 6."信息变更验证码"
	 */
	@SuppressWarnings("deprecation")
	public JSONObject yzm(EntRegisterDto entRegisterDto, Integer templateCode, Integer code) {
		DefaultProfile profile = DefaultProfile.getProfile("cn-shenzhen", "LTAI4FuaShJWQ1dggsFWG5CC",
				"EJ6qToT4T4u0B5Rb6qrta9WkyGHvGR");
		IAcsClient client = new DefaultAcsClient(profile);

		CommonRequest request = new CommonRequest();
		request.setMethod(MethodType.POST);
		request.setDomain("dysmsapi.aliyuncs.com");
		request.setVersion("2017-05-25");
		request.setAction("SendSms");
		request.putQueryParameter("RegionId", "cn-shenzhen");
		request.putQueryParameter("PhoneNumbers", entRegisterDto.getPhone());
		request.putQueryParameter("SignName", "8小时人事管家");

		switch (templateCode) {
		// 1."身份验证验证码"
		case 1:
			request.putQueryParameter("TemplateCode", "SMS_178485364");
			break;
		// 2."登录确认验证码"
		case 2:
			request.putQueryParameter("TemplateCode", "SMS_178485363");
			break;
		// 3."登录异常验证码"
		case 3:
			request.putQueryParameter("TemplateCode", "SMS_178485362");
			break;
		// 4."用户注册验证码"
		case 4:
			request.putQueryParameter("TemplateCode", "SMS_178485361");
			break;
		// 5."修改密码验证码"
		case 5:
			request.putQueryParameter("TemplateCode", "SMS_178485360");
			break;
		// 6."信息变更验证码"
		case 6:
			request.putQueryParameter("TemplateCode", "SMS_178485359");
			break;
		default:
			request.putQueryParameter("TemplateCode", "SMS_178485364");
		}
		// 【8小时人事管家】验证码934169,您正在尝试修改登录密码,请妥善保管账户信息。
		request.putQueryParameter("TemplateParam", "{\"code\":\"" + code + "\"}");
		CommonResponse response = null;
		try {
			response = client.getCommonResponse(request);
		} catch (ServerException e) {
			e.printStackTrace();
		} catch (ClientException e) {
			e.printStackTrace();
		}

		return JSONObject.parseObject(response.getData());
	}

	/**
	 * 短信内容查询(短信发送日期,支持查询最近30天的记录)
	 */
	@SuppressWarnings("deprecation")
	public String QuerySendDetails(String phone, String date, String bizId) {
		DefaultProfile profile = DefaultProfile.getProfile("cn-shenzhen", "LTAI4FuaShJWQ1dggsFWG5CC",
				"EJ6qToT4T4u0B5Rb6qrta9WkyGHvGR");
		IAcsClient client = new DefaultAcsClient(profile);

		CommonRequest request = new CommonRequest();
		request.setMethod(MethodType.POST);
		request.setDomain("dysmsapi.aliyuncs.com");
		request.setVersion("2017-05-25");
		request.setAction("QuerySendDetails");
		request.putQueryParameter("RegionId", "cn-shenzhen");
		request.putQueryParameter("PhoneNumber", phone);
		request.putQueryParameter("SendDate", date);
		request.putQueryParameter("PageSize", "1");
		request.putQueryParameter("CurrentPage", "1");
		request.putQueryParameter("BizId", bizId);
		String a = null;
		try {
			CommonResponse response = client.getCommonResponse(request);

			a = response.getData();

		} catch (Exception e) {
			e.printStackTrace();
		}
		System.err.println(a);
		if (a != null && a.contains("OK")) {
			return a;// 代表请求成功
		}
		return "获取失败";
	}

	/**
	 * 提醒功能
	 * 
	 * @param name   用户名字
	 * @param htname 要提醒的东西的名字
	 * @param time   提醒的时间
	 * @param phone
	 */
	@SuppressWarnings("deprecation")
	public static void tx(String name, String htname, String time, String phone) {
		DefaultProfile profile = DefaultProfile.getProfile("cn-shenzhen", "LTAI4FuaShJWQ1dggsFWG5CC",
				"EJ6qToT4T4u0B5Rb6qrta9WkyGHvGR");
		IAcsClient client = new DefaultAcsClient(profile);

		CommonRequest request = new CommonRequest();
		request.setMethod(MethodType.POST);
		request.setDomain("dysmsapi.aliyuncs.com");
		request.setVersion("2017-05-25");
		request.setAction("SendSms");
		request.putQueryParameter("RegionId", "cn-shenzhen");
		request.putQueryParameter("PhoneNumbers", phone);
		request.putQueryParameter("SignName", "8小时人事管家");
		request.putQueryParameter("TemplateCode", "SMS_180347486");
		request.putQueryParameter("TemplateParam",
				"{\"name\":\"" + name + "\", \"htname\":\"" + htname + "\",\"time\":\"" + time + "\"}");
		try {
			CommonResponse response = client.getCommonResponse(request);
			System.out.println(response.getData());
		} catch (ServerException e) {
			e.printStackTrace();
		} catch (ClientException e) {
			e.printStackTrace();
		}
	}

//	public static void main(String[] args) {
//		AliyunSMS a = new AliyunSMS();
//		EntRegisterDto entRegisterDto = new EntRegisterDto();
//		entRegisterDto.setPhone("18711519124");
//		String a1  = a.yzm(entRegisterDto, 1, 123456);
//		JSONObject json = new JSONObject(a1);
//		String bizId = (String) json.get("BizId");
//		// 流水号
//		System.err.println("bizId:"+bizId);
//	}

}