package com.winsun.smsUtils;

import lombok.extern.slf4j.Slf4j;
import net.sf.json.JSONObject;
import org.apache.commons.codec.digest.DigestUtils;

import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.*;

@Slf4j
public class SendSmsAndMail {
	/**
	 * url前半部分
	 */
	public static final String BASE_URL = "https://openapi.danmi.com/distributor/sendSMS";

	/**
	 * 开发者注册后系统自动生成的账号，可在官网登录后查看
	 */
	public static final String ACCOUNT_SID = "2acd89bd98ff690b1a0f8a7c0afefd18";

	/**
	 * 开发者注册后系统自动生成的TOKEN，可在官网登录后查看
	 */
	public static final String AUTH_TOKEN = "171a104a486f28af727c9c69207fc365";


	/*public static void main(String[] args) {
		ArrayList<String> obj = new ArrayList<String>();
		List<String> list = Arrays.asList(
				"13697427771/t1836@sise.cn/660040Abca"
				);
		obj.addAll(list);
		for (String s : obj) {
			String[] split = s.split("/");
			log.info(split[0]+"--"+split[1]+"---"+split[2]);
//			log.info(sendSms(s,"http://yrym.winsun-aly.com/gdtel-xyzx-hhr/customer/plan.do?orderId=d70f3423a6f","2"));
			log.info("返回："+sendSms("11111111111","111111","7"));
		}
		log.info("发送完成");

//	String res = BaiduDwz.createShortUrl("http://yrym.winsun-aly.com/gdtel-xyzx-hhr/customer/plan.do?orderId=d70f3423a6f");
//		生成url
//		log.info(res);

	}*/

	public static String sendSms(String contactPhone,String speed,String name,String t) throws Exception {
		StringBuilder sb = new StringBuilder();
		sb.append("accountSid").append("=").append(ACCOUNT_SID);
		sb.append("&to").append("=").append(contactPhone);
		if ("2".equals(t)){
			speed = speed.replace("https://dx.dianyuanjiangli.com/mobile/#/hhr/handleSuccessful?orderId=", "");
			sb.append("&param").append("=").append(URLEncoder.encode(speed,"UTF-8"));
			//【飞young校园】尊敬的客户，您已成功下单！如需了解订单详情请点击@_url_@，如有任何问题请点击订单详情页面右上角，咨询客服。
			sb.append("&templateid").append("=").append("319435");
		}else if ("3".equals(t)){
			sb.append("&param").append("=").append(URLEncoder.encode(speed,"UTF-8"));
			//【飞young校园】尊敬的用户：您已完成手机卡的活体认证，请在5分钟后插卡拨打电话进行激活。
			sb.append("&templateid").append("=").append("319133");
		}else if ("7".equals(t)){
			sb.append("&param").append("=").append(URLEncoder.encode(speed,"UTF-8"));
			//【飞young校园】您获取的验证码为：@_code_@ 半小时后过期，请及时使用。
			sb.append("&templateid").append("=").append("319126");
		}else if ("11".equals(t)){
			sb.append("&param").append("=").append(URLEncoder.encode(speed+","+name,"UTF-8"));
			//【飞young校园】尊敬的用户，您的订单已受理成功！按照国家实名制规定，请您收到手机卡后尽快进行实名激活。快递公司：@_company_@；单号：@_kuaidi_order_@
			sb.append("&templateid").append("=").append("319135");
		}else if ("12".equals(t)){
			sb.append("&param").append("=").append(URLEncoder.encode(speed+","+name,"UTF-8"));
			//【飞young校园】尊敬的用户：您好！您的校园宽带已开通，宽带账号：@_kd_@，登录密码：@_pass_@ ！请保存好账号密码，如有疑问可咨询学校网络中心。祝您生活愉快！
			sb.append("&templateid").append("=").append("319128");
		}else if ("14".equals(t)){
			sb.append("&param").append("=").append(URLEncoder.encode("","UTF-8"));
			//【飞young校园】尊敬的用户：您的校园宽带开通失败，详细原因可向学校网络中心咨询，协商解决后重新下单，祝您生活愉快！
			sb.append("&templateid").append("=").append("319134");
		}
		String body = sb.toString() + createCommonParam(ACCOUNT_SID, AUTH_TOKEN);
		log.info("send body:" + body);
		try {
			String post = HttpUtil.post(BASE_URL, body);
			return post;
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}

	/**
	 * @param contactPhone
	 *   (旧)接收短信的手机号
	 */
	public static String oldSendSms(String contactPhone,String preurl,String t) {
		String url = "https://ytx.21cn.com/sendApi//send/smv"; // 生产

		String accessTokenJsonString = new GetAccessToken().getAccessToken();// 获得accessToken
		JSONObject jsonOne = JSONObject.fromObject(accessTokenJsonString);
		String accessToken = jsonOne.get("accessToken").toString();
		String appKey = "6SXyMB2IG";// appKey 固定
		String appSecret = "92a1861c7a94a49fb165a22cb0d7dfad14196c25";// 固定的appSecret
		String version = "2.0v";// 版本
		String format = "json";// 数据类型
		String clientType = "10001";
		Map<String, String> requestData = new HashMap<>();
		requestData.put("timeStamp", String.valueOf(System.currentTimeMillis()));
		requestData.put("accessToken", accessToken);
		requestData.put("type", "1");// type=1 只发短信

		requestData.put("mobile", contactPhone);// 接收短信的联系电
		//老客户订单通知
		if(t.equals("1")){
			//【飞young校园】尊敬的用户，您已成功提交申请！每月25号前提交申请，升级套餐次月生效，25号之后提交申请的，升级套餐则次次月生效.升级新套餐成功后原套餐所有优惠失效不能恢复。如需了解订单详情请点击@_url_@
			requestData.put("smsTemplateId", "00T3ANwPDbeK");// 短信模板id   创建成功
			requestData.put("data", "{\"url\":\"" + preurl + "\"}"); // 数据
		}else if(t.equals("2")){
			//【飞young校园】尊敬的客户，您已成功下单！如需了解订单详情请点击@_url_@，如有任何问题请点击订单详情页面右上角，添加客服微信咨询。
			requestData.put("smsTemplateId", "00SyB8gIpbZg");// 短信模板id   创建成功
			requestData.put("data", "{\"url\":\"" + preurl + "\"}"); // 数据
		}else if(t.equals("3")){
			//【飞young校园】尊敬的用户：您已完成手机卡的活体认证，请在5分钟后插卡拨打电话进行激活。
			requestData.put("data", "{}"); // 数据
			requestData.put("smsTemplateId", "00N1kCqpMfDs");// 短信模板id   创建成功
		}else if(t.equals("4")){
			//【飞young校园】尊敬的用户，您是本次套餐升级活动的目标用户，诚邀您开学后到广大商中二楼电信营业厅登记升级，升级套餐为19元60G不限速新黑牛卡套餐。温馨提醒：广州大学室内信号优化已完成，其中包括梅苑，竹苑，兰苑和榕轩。回复T退订
			requestData.put("data", "{}"); // 数据
			requestData.put("smsTemplateId", "00N3YTcilddg");// 短信模板id   创建成功
		}else if(t.equals("5")){
			//【飞young校园】@_url_@ 尊敬的用户，您已成功提交申请！每月25号前提交申请，升级套餐次月生效，25号之后提交申请的，升级套餐则次次月生效.升级新套餐成功后原套餐所有优惠失效不能恢复。如需了解订单详情请点击连接。
			requestData.put("smsTemplateId", "00NGrNOhwfTs");// 短信模板id   创建成功
			requestData.put("data", "{\"url\":\"" + preurl + "\"}"); // 数据
		}else if(t.equals("6")){
			//【飞young校园】尊敬的用户，您已提交校园宽带开户预约单。根据国家实名制规定，请在 7天内点击 @_url_@ 按要求上传照片完成实名认证。如已上传完成，请忽略本信息
			requestData.put("smsTemplateId", "00NP1ndH2gpU");// 短信模板id   创建成功
			requestData.put("data", "{\"url\":\"" + preurl + "\"}"); // 数据
		}else if(t.equals("7")){
			//【飞young校园】您获取的验证码为：@_code_@ 半小时后过期，请及时使用。
			requestData.put("smsTemplateId", "00OCutbVIXGS");// 短信模板id   创建成功
			requestData.put("data", "{\"code\":\"" + preurl + "\"}"); // 数据
		}else if(t.equals("9")){
			//【飞young校园】尊敬的用户，您已提交校园网绑定申请，请您完成手机卡实名激活后，关注微信公众号“ @_name_@ ”绑定校园网进行提速
			requestData.put("smsTemplateId", "00OKpTZgHm3E");// 短信模板id   创建成功
			requestData.put("data", "{\"name\":\"" + preurl + "\"}"); // 数据
		}else if(t.equals("12")){
			//【飞young校园】同学您好，经系统核查，您满足升级为每月70G大流量新套餐的条件，请在1月25日24点前点击“广航D人”公众号菜单栏“校园功能”“升级套餐”办理升级。本优惠将于1月25日24点截止，请尽快在公众号登记。
			requestData.put("smsTemplateId", "00RFwbnkDsZM");// 短信模板id   创建成功
			requestData.put("data", "{}"); // 数据
		}else if(t.equals("13")){
			//【飞young校园】尊敬的用户，您满足升级为每月28元享70G大流量套餐。请1月16日24点前关注“@_name_@”菜单栏“升级套餐”参与。详情咨询广州小young客服！本活动将于1月16日24点截止！
			requestData.put("smsTemplateId", "00RqWcH8X1LE");// 短信模板id   创建成功
			requestData.put("data", "{\"name\":\"" + preurl + "\"}"); // 数据
		}else if(t.equals("14")){
			//【飞young校园】尊敬的用户：您的校园宽带开通失败，详细原因可向学校网络中心咨询，协商解决后重新下单，祝您生活愉快！
			requestData.put("smsTemplateId", "00UbC7MEwyGW");// 短信模板id   创建成功
			requestData.put("data", "{}"); // 数据
		}

		requestData.put("requestId", String.valueOf(System.currentTimeMillis())); // 16位请求标识码
																					// 每次不一样就
		RequestParasUtil.setParas(requestData, appKey, appSecret, version, format, clientType);
		log.info("send msgData:" + JSONObject.fromObject(requestData).toString());
		try {
			 HttpUtil.httpPostMethodNoReTryWithStr(url, requestData);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}


	public static String oldSendSms2(String contactPhone,String speed,String name,String t) {
		String url = "https://ytx.21cn.com/sendApi//send/smv"; // 生产

		String accessTokenJsonString = new GetAccessToken().getAccessToken();// 获得accessToken
		JSONObject jsonOne = JSONObject.fromObject(accessTokenJsonString);
		String accessToken = jsonOne.get("accessToken").toString();
		String appKey = "6SXyMB2IG";// appKey 固定
		String appSecret = "92a1861c7a94a49fb165a22cb0d7dfad14196c25";// 固定的appSecret
		String version = "2.0v";// 版本
		String format = "json";// 数据类型
		String clientType = "10001";
		Map<String, String> requestData = new HashMap<>();
		requestData.put("timeStamp", String.valueOf(System.currentTimeMillis()));
		requestData.put("accessToken", accessToken);
		requestData.put("type", "1");// type=1 只发短信

		requestData.put("mobile", contactPhone);// 接收短信的联系电
		//老客户订单通知
		if(t.equals("8")){
			//【飞young校园】尊敬的用户，您的校园网已成功提速到 @_speed_@ ，如有任何疑问可关注微信公众号“ @_name_@ ”咨询。
			requestData.put("smsTemplateId", "00OKhpE0A3FY");// 短信模板id   创建成功
			requestData.put("data", "{\"speed\":\"" + speed + "\",\"name\":\""+name+"\"}"); // 数据
		}else if(t.equals("10")){
			//【飞young校园】尊敬的用户：您好，您已具备校园网提速的条件，您的校园网可提速为 @_speed_@ ，具体操作步骤可关注微信公众号“ @_name_@ ”咨询。
			requestData.put("smsTemplateId", "00OKpX6Mmvwm");// 短信模板id   创建成功
			requestData.put("data", "{\"speed\":\"" + speed + "\",\"name\":\""+name+"\"}"); // 数据
		}else if(t.equals("11")){
			//【飞young校园】尊敬的用户，您的订单已受理成功！按照国家实名制规定，请您收到手机卡后尽快进行实名激活。快递公司：@_company_@；单号：@_kuaidi_order_@
			requestData.put("smsTemplateId", "00QiOt2Pjygy");// 短信模板id   创建成功
			requestData.put("data", "{\"company\":\"" + speed + "\",\"kuaidi_order\":\""+name+"\"}"); // 数据
		}else if(t.equals("12")){
			//【飞young校园】尊敬的用户：您好！您的校园宽带已开通，宽带账号：@_kd_@，登录密码：@_pass_@ ！请保存好账号密码，如有疑问可咨询学校网络中心。祝您生活愉快！
			requestData.put("smsTemplateId", "00TOMT9K3UPo");// 短信模板id   创建成功
			requestData.put("data", "{\"kd\":\"" + speed + "\",\"pass\":\""+name+"\"}"); // 数据
		}


		requestData.put("requestId", String.valueOf(System.currentTimeMillis())); // 16位请求标识码
		// 每次不一样就
		RequestParasUtil.setParas(requestData, appKey, appSecret, version, format, clientType);

		try {
			HttpUtil.httpPostMethodNoReTryWithStr(url, requestData);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}

	/**
	 * 构造通用参数timestamp、sig和respDataType
	 *
	 * @return
	 */
	public static String createCommonParam(String sid,String token) {
		// 时间戳
		long timestamp = System.currentTimeMillis();
		// 签名
		String sig = DigestUtils.md5Hex(sid + token + timestamp);

		return "&timestamp=" + timestamp + "&sig=" + sig + "&respDataType=JSON";
	}
}
