/** 
 * @Title: TemplateService.java 
 * @Package com.zhiwei.service 
 * @Description: TODO(用一句话描述该文件做什么) 
 * @author hero 
 * @date 2016年1月27日 下午5:38:09 
 * @version V1.0 
 */
package com.zhiwei.weixin.service;

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

import net.sf.json.JSONObject;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.zhiwei.conf.Conf;
import com.zhiwei.dao.TemplatesDao;
import com.zhiwei.dao.impl.TemplatesDaoImpl;
import com.zhiwei.weixin.Templates;
import com.zhiwei.weixin.pojo.Template;

/**
 * @ClassName: TemplateService
 * @Description: TODO(模版通知实现类)
 * @author hero
 * @date 2016年1月27日 下午5:38:09
 */
public class TemplateService
{

    private Templates templates;
    private static Logger log = LoggerFactory.getLogger(TemplateService.class);
    private GroupsService gs;
    private TemplatesDao templatesDao;

    public TemplateService()
    {
        this.gs = new GroupsService();
        this.templates = new Templates();
        this.templatesDao = new TemplatesDaoImpl();
    }

    /***
     * 
     * @Title: sendTemplate
     * @Description: TODO(发送模版消息)
     * @param @param groupName
     * @param @param template_id
     * @param @param url
     * @param @param dataMap
     * @param @return 设定文件
     * @return int 返回类型
     */
    public int sendTemplate(JSONObject dataJson)
    {
        String groupName = dataJson.getString("groupName");
        String template_id_short = dataJson.getString("template_id_short");
        String url = dataJson.getString("url");
        HashMap<String, String> dataMap = (HashMap<String, String>) JSONObject
                .toBean(JSONObject.fromObject(dataJson.get("dataMap")),
                        HashMap.class);
        int result = -1;
//        List<String> openidList = this.gs.getOpenIdList(groupName);
        List<String> openidList = this.gs.getOpenIdList_m(groupName);
        if (null != openidList)
        {

            String template_id = getTemplate_id(template_id_short);
            // System.out.println("template_id===="+template_id);
            Template template;
            for (String openid : openidList)
            {
                template = new Template();
                template.setTouser(openid);
                template.setUrl(url);
                template.setTemplate_id(template_id);
                template.setData(dataMap);
                result = this.templates.send(template);
                if (0 == result)
                {
                    result = -1;
                    log.info("发送模版消息时出现错误......");
                    break;
                }
                log.info("已发【{}】",template);
                
                try {
					Thread.sleep(200);
				} catch (InterruptedException e) {
					e.printStackTrace();
				}
            }
        }
        else
        {
            log.info("分组不存在或分组中没有用户......");
        }
        return result;
    }

    /**
     * 
     * @Title: getTemplate_id
     * @Description: TODO(查询模版消息id)
     * @param @param template_id_short
     * @param @return 设定文件
     * @return String 返回类型
     */
    public String getTemplate_id(String template_id_short)
    {
        String template_id = this.templatesDao.getTemplate_id(template_id_short,
                Conf.appId);
        if (template_id == null)
        {
            template_id = this.templates.gettemplateId(template_id_short);
            this.templatesDao.addTemplates(template_id, Conf.appId,
                    template_id_short);
        }
        return template_id;
    }
}
