|  | @ -1,15 +1,24 @@
 | 
	
		
			
				|  |  | package com.yihu.jw.wx.service;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | import com.fasterxml.jackson.core.type.TypeReference;
 | 
	
		
			
				|  |  | import com.fasterxml.jackson.databind.ObjectMapper;
 | 
	
		
			
				|  |  | import com.yihu.jw.mysql.query.BaseJpaService;
 | 
	
		
			
				|  |  | import com.yihu.jw.restmodel.common.CommonContants;
 | 
	
		
			
				|  |  | import com.yihu.jw.restmodel.exception.ApiException;
 | 
	
		
			
				|  |  | import com.yihu.jw.restmodel.wx.WxContants;
 | 
	
		
			
				|  |  | import com.yihu.jw.util.HttpUtil;
 | 
	
		
			
				|  |  | import com.yihu.jw.wx.dao.WxTemplateDao;
 | 
	
		
			
				|  |  | import com.yihu.jw.wx.model.WxTemplate;
 | 
	
		
			
				|  |  | import com.yihu.jw.wx.model.*;
 | 
	
		
			
				|  |  | import org.json.JSONObject;
 | 
	
		
			
				|  |  | import org.springframework.beans.factory.annotation.Autowired;
 | 
	
		
			
				|  |  | import org.springframework.stereotype.Service;
 | 
	
		
			
				|  |  | import org.springframework.util.StringUtils;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | import java.util.ArrayList;
 | 
	
		
			
				|  |  | import java.util.HashMap;
 | 
	
		
			
				|  |  | import java.util.List;
 | 
	
		
			
				|  |  | import java.util.Map;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | /**
 | 
	
		
			
				|  |  |  * Created by Administrator on 2017/5/19 0019.
 | 
	
		
			
				|  |  |  */
 | 
	
	
		
			
				|  | @ -19,6 +28,9 @@ public class WxTemplateService extends BaseJpaService<WxTemplate, WxTemplateDao>
 | 
	
		
			
				|  |  |     @Autowired
 | 
	
		
			
				|  |  |     private WxTemplateDao wxTemplateDao;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     @Autowired
 | 
	
		
			
				|  |  |     private WxAccessTokenService wxAccessTokenService;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     public WxTemplate createWxTemplate(WxTemplate wxTemplate) {
 | 
	
		
			
				|  |  |         if (StringUtils.isEmpty(wxTemplate.getCode())) {
 | 
	
	
		
			
				|  | @ -61,4 +73,65 @@ public class WxTemplateService extends BaseJpaService<WxTemplate, WxTemplateDao>
 | 
	
		
			
				|  |  |         return wxTemplate;
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     public JSONObject sendTemplateMessage(String openid, String templateCode, String url, String data,Miniprogram miniprogram) {
 | 
	
		
			
				|  |  |         try {
 | 
	
		
			
				|  |  |             //首先根据wechatTemplate获取微信模版
 | 
	
		
			
				|  |  |             WxTemplate wxTemplate = findByCode(templateCode);
 | 
	
		
			
				|  |  |             String wechatCode =  wxTemplate.getWechatCode();
 | 
	
		
			
				|  |  |             String content = wxTemplate.getContent().replaceAll(" ", "");//{{result.DATA}}领奖金额:{{withdrawMoney.DATA}   }领奖  时间:{ {withdrawTime.DATA} }银行信息:{ {cardInfo.DATA} }到账时间:{{arrivedTime.DATA}}{{remark.DATA}}
 | 
	
		
			
				|  |  |             String[] contentArray = content.split("\\{\\{");
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |             //将result,withdrawMoney,withdrawTime,cardInfo,arrivedTime等字符串放入contentList中
 | 
	
		
			
				|  |  |             List<String> contentList = new ArrayList<>();
 | 
	
		
			
				|  |  |             for(int i=1;i<contentArray.length;i++){
 | 
	
		
			
				|  |  |                 contentList.add(contentArray[i].substring(0,contentArray[i].indexOf(".")));
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |             ObjectMapper mapper = new ObjectMapper();
 | 
	
		
			
				|  |  |             ////将data转为对象
 | 
	
		
			
				|  |  |             Map<String, WechatTemplateData> dataMap = mapper.readValue(data, new TypeReference<HashMap<String, WechatTemplateData>>() {});
 | 
	
		
			
				|  |  |             Map<String, WechatTemplateData> newDataMap = new HashMap<String, WechatTemplateData>();
 | 
	
		
			
				|  |  |             int j = 0;
 | 
	
		
			
				|  |  |             for (Map.Entry<String, WechatTemplateData> entry : dataMap.entrySet()) {//(keyword1,WechatTemplateData)
 | 
	
		
			
				|  |  |                 String key = entry.getKey();//keyword1   转为result
 | 
	
		
			
				|  |  |                 newDataMap.put(contentList.get(j),entry.getValue());
 | 
	
		
			
				|  |  |                 j++;
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |             //将数据封装在WechatTemplate对象中
 | 
	
		
			
				|  |  |             WechatTemplate wechatTemplate = new WechatTemplate();
 | 
	
		
			
				|  |  |             wechatTemplate.setTouser(openid);
 | 
	
		
			
				|  |  |             wechatTemplate.setUrl(url);
 | 
	
		
			
				|  |  |             wechatTemplate.setTemplate_id(wxTemplate.getTemplateId());
 | 
	
		
			
				|  |  |             if(miniprogram!=null){
 | 
	
		
			
				|  |  |                 wechatTemplate.setMiniprogram(miniprogram);
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |             wechatTemplate.setData(newDataMap);
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |             String params = mapper.writeValueAsString(wechatTemplate);
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |             WxAccessToken wxAccessTokenByCode = wxAccessTokenService.getWxAccessTokenByCode(wechatCode);
 | 
	
		
			
				|  |  |             String token = wxAccessTokenByCode.getAccessToken();
 | 
	
		
			
				|  |  |             String token_url = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=" + token;
 | 
	
		
			
				|  |  |             String result = HttpUtil.sendPost(token_url, params);
 | 
	
		
			
				|  |  |             JSONObject jsonResult = new JSONObject(result);
 | 
	
		
			
				|  |  |             return jsonResult;
 | 
	
		
			
				|  |  |         } catch (Exception e) {
 | 
	
		
			
				|  |  |             e.printStackTrace();
 | 
	
		
			
				|  |  |             JSONObject jsonResult = new JSONObject(e);
 | 
	
		
			
				|  |  |             return jsonResult;
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     public static void main(String[] args) {
 | 
	
		
			
				|  |  |         String a = "{{result.DATA}}领奖金额:{{withdrawMoney.DATA}   }领奖  时间:{ {withdrawTime.DATA} }银行信息:{ {cardInfo.DATA} }到账时间:{{arrivedTime.DATA}}{{remark.DATA}}".replaceAll(" ", "");
 | 
	
		
			
				|  |  |         System.out.println(a);
 | 
	
		
			
				|  |  |         String[] strings = a.split("\\{\\{");
 | 
	
		
			
				|  |  |         List<String> contentList = new ArrayList<>();
 | 
	
		
			
				|  |  |         for(int i=1;i<strings.length;i++){
 | 
	
		
			
				|  |  |             System.out.println(strings[i].substring(0,strings[i].indexOf(".")));
 | 
	
		
			
				|  |  |             contentList.add(strings[i].substring(0,strings[i].indexOf(".")));
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | }
 |