package com.ssj.framework.weixin.util;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.ssj.bean.weixin.push.domain.SendTemplate;
import com.ssj.framework.weixin.news.bean.Industry;
import com.ssj.framework.weixin.news.bean.Template;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class NewsUtil {
	private static Logger logger = LoggerFactory.getLogger(NewsUtil.class);
	
	public static String WX_TPL_BODY="{\"touser\":\"#OPENID#\",\"template_id\":\"#TPLID#\",\"url\":\"#URL#\"#MINIPROQRAM_TEXT#,\"data\":#DATA#,\"topcolor\":\"#TOPCOLOR#\"}";
	
	public static final String TPL_CODE_OPENID = "#OPENID#";
    
	public static final String TPL_CODE_TPLID = "#TPLID#";
    
	public static final String TPL_CODE_URL = "#URL#";
    
	public static final String TPL_CODE_DATA = "#DATA#";
    
	public static final String TPL_CODE_TOPCOLOR = "#TOPCOLOR#";
	
	public static final String TPL_SUB_MINIPROQRAM_DATA = ",\"miniprogram\":#MINIPROQRAM_DATA#";
	
	public static final String MINIPROQRAM_DATA ="#MINIPROQRAM_DATA#";
	
	public static final String TPL_CODE_MINIPROQRAM_TEXT = "#MINIPROQRAM_TEXT#";
	
	// 发送模板消息
	public static String API_SEND_TEMPLATE_URL="https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=ACCESS_TOKEN";
    //客服接口-发消息
	public static String API_SEND_CUSTOM="https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=ACCESS_TOKEN";
	// 设置所属行业
	public static String API_SET_INDUSTRY_URL="https://api.weixin.qq.com/cgi-bin/template/api_set_industry?access_token=ACCESS_TOKEN";
	// 获取设置的行业信息
	public static String API_GET_INDUSTRY_URL="https://api.weixin.qq.com/cgi-bin/template/get_industry?access_token=ACCESS_TOKEN";
	// 获得模板ID
	public static String API_ADD_TEMPLATE_URL="https://api.weixin.qq.com/cgi-bin/template/api_add_template?access_token=ACCESS_TOKEN";
	// 获取模板列表
	public static String API_GET_ALL_PRIVATE_TEMPLATE_URL="https://api.weixin.qq.com/cgi-bin/template/get_all_private_template?access_token=ACCESS_TOKEN";
	// 删除模板
	public static String API_DEL_TEMPLATE_URL="https://api.weixin.qq.com/cgi-bin/template/del_private_template?access_token=ACCESS_TOKEN";
    /**
     *  {
          "industry_id1":"1",
          "industry_id2":"4"
       }
       设置行业可在MP中完成，每月可修改行业1次，账号仅可使用所属行业中相关的模板，为方便第三方开发者，提供通过接口调用的方式来修改账号所属行业
     * @param accessToken
     * @param map
     */
	public static JSONObject setIndustry(String accessToken,Map<String,Object> map){
		 //String API_SET_INDUSTRY_URL="https://api.weixin.qq.com/cgi-bin/template/api_set_industry?access_token=ACCESS_TOKEN";
		 String url = API_SET_INDUSTRY_URL.replace("ACCESS_TOKEN", accessToken);  
		 String json = JSONObject.toJSONString(map);
		 JSONObject jsonObject = WeixinUtil.httpRequest(url, "POST", json);  
		 return jsonObject;
	}
	/**
	 * 获取设置的行业信息
	 * 提供通过接口调用的方式来获取帐号所设置的行业信息
	 * @param accessToken
	 * @return
	 * @throws Exception
	 */
	public static Industry getIndustry(String accessToken) {
		String url = API_GET_INDUSTRY_URL.replace("ACCESS_TOKEN", accessToken);  
    	 String object = WeixinUtil.httpRequestString(url, "GET", null); 
    	 Industry industry=JSON.parseObject(object, Industry.class);
    	 return industry;
	}
	/**
	 * 提供通过接口调用的方式来获取模板ID
	 * 模板库中模板的编号，有“TM**”和“OPENTMTM**”等形式
	 * @param accessToken
	 * @param template_id_short
	 */
	public static String getTemplate(String accessToken,String template_id_short){
		 String url = API_ADD_TEMPLATE_URL.replace("ACCESS_TOKEN", accessToken);  
		 Map<String,Object> map = new HashMap<String, Object>();
		 map.put("template_id_short", template_id_short);
		 String result=null;
		 String json = JSONObject.toJSONString(map);
		 JSONObject jsonObject = WeixinUtil.httpRequest(url, "POST", json);  
		 logger.info(template_id_short+"获取模板ID返回----"+jsonObject.toJSONString());
		 if (null != jsonObject) {  
	            if (0 == jsonObject.getIntValue("errcode")) {  
	                result = jsonObject.getString("template_id");  
	            }  
	     }  
		 return   result;
	}
	/**
	 * 为方便第三方开发者，提供通过接口调用的方式来获取帐号下所有模板信息
	 * @param accessToken
	 * @return
	 */
	public static List<Template> getAllTemplate(String accessToken){
		String url = API_GET_ALL_PRIVATE_TEMPLATE_URL.replace("ACCESS_TOKEN", accessToken);  
   	    String object = WeixinUtil.httpRequestString(url, "GET", null);
   	    logger.info("所有模板信息----"+object+"-----\n+"+JSONObject.parseObject(object).getString("template_list"));
   	    List<Template> list= JSON.parseArray(JSONObject.parseObject(object).getString("template_list"), Template.class);
   	    return  list;
	}
		
	/**
	 * 提供通过接口调用的方式来删除某帐号下的模板
	 * @param accessToken
	 * @param template_id
	 * @return
	 */
	public static JSONObject  delTemplate(String accessToken,String template_id){
		String url = API_DEL_TEMPLATE_URL.replace("ACCESS_TOKEN", accessToken);  
		 Map<String,Object> map = new HashMap<String, Object>();
		 map.put("template_id", template_id);
		 String json = JSONObject.toJSONString(map);
		 JSONObject jsonObject =  WeixinUtil.httpRequest(url, "POST", json);
		return  jsonObject;
	}
	/**
	 * 发送模板消息
	 * @param accessToken
	 * @param
	 * @return	
	 */
	public static JSONObject  sendTemplate(String accessToken, SendTemplate sendTemplate){
		String url = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=ACCESS_TOKEN".replace("ACCESS_TOKEN", accessToken);  
		String json = JSONObject.toJSONString(sendTemplate);
		JSONObject jsonObject =  WeixinUtil.httpRequest(url, "POST", json);
		return jsonObject;
		
	}
	/**
	 * json 格式推送
	* @param accessToken
	* @param json
	* @return
	* 创建人：ZhangCaibao 
	* 2017年5月3日 下午4:44:28 
	* @JSONObject
	 */
	public static JSONObject  sendTemplate(String accessToken,String json){
		String url = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=ACCESS_TOKEN".replace("ACCESS_TOKEN", accessToken);  
		JSONObject jsonObject =  WeixinUtil.httpRequest(url, "POST", json);
		return jsonObject;
		
	}
	/**
	 * //客服接口-发消息
	 * @param accessToken
	 * @param obj
	 * @return
	 */
	public static JSONObject  send(String accessToken,Object obj){
		String url = "https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=ACCESS_TOKEN".replace("ACCESS_TOKEN", accessToken);  
		String json = JSONObject.toJSONString(obj);
		JSONObject jsonObject =  WeixinUtil.httpRequest(url, "POST", json);
		logger.info("传送json："+json+"；微信返回消息："+jsonObject.toString());
		return jsonObject;
	}
	/**
	 * 临时二维码请求说明
	 * @param accessToken
	 * @param obj
	 * @return
	 */
	public static JSONObject  ticket(String accessToken,Object obj){
		String url = "https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=ACCESS_TOKEN".replace("ACCESS_TOKEN", accessToken);
		String json = JSONObject.toJSONString(obj);
		JSONObject jsonObject =  WeixinUtil.httpRequest(url, "POST", json);
		return jsonObject;
	}

}
