package com.util;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.model.*;
import org.apache.http.entity.StringEntity;
import org.apache.log4j.Logger;
import java.util.HashMap;
import java.util.Map;
public class SendServiceNotification {
private static Logger logger = Logger.getLogger(SendServiceNotification.class);
public static boolean sendNewUserMessage(ServiceRemindData orderModel, String appId, String appSecret, String mchId, String key,String template) {
AccessToken accessToken = getAccessToken(appId, appSecret, mchId, key);
if (null != accessToken) {
OrderRemindModel model = new OrderRemindModel();
model.setTemplate_id(template);
model.setTouser(orderModel.getOpenId());
model.setForm_id(orderModel.getFormId());
model.setPage("pages/index/index");
// Set the param
Map<String, Object> datas = new HashMap<String, Object>();
TemplateData keyword1 = new TemplateData();
keyword1.setValue(orderModel.getKeyword1());
datas.put("keyword1", keyword1);
TemplateData keyword2 = new TemplateData();
keyword2.setValue(orderModel.getKeyword2());
datas.put("keyword2", keyword2);
TemplateData keyword3 = new TemplateData();
keyword3.setValue(orderModel.getKeyword3()); //温馨提示
datas.put("keyword3", keyword3);
TemplateData keyword4 = new TemplateData();
keyword4.setValue(orderModel.getKeyword4());
datas.put("keyword4", keyword4);
model.setData(datas);
model.setEmphasis_keyword("keyword1.DATA"); //放大标题
String templeteUrl = "";
System.out.println("templete param ========= " + JSON.toJSONString(model));
String returnMessage = PayUtil.httpRequest(templeteUrl, "POST", JSON.toJSONString(model), false,
new XcxWxLogin(appId, appSecret, mchId, key));
System.out.println("returnMessage ========= " + returnMessage);
JSONObject jsonObject = JSON.parseObject(returnMessage);
if (0 != (Integer) jsonObject.get("errcode")) {
logger.warn("--- Error find while sending the order message. ----");
return false;
} else {
logger.info("--- The order was sent successfully.. ----");
return true;
}
} else {
logger.error("------ The access token is null. -------");
return false;
}
}
public static boolean sendAssembleMessage(ServiceAssembleData orderModel, String appId, String appSecret, String mchId, String key, String template) {
AccessToken accessToken = getAccessToken(appId, appSecret, mchId, key);
if (null != accessToken) {
OrderRemindModel model = new OrderRemindModel();
model.setTemplate_id(template);
model.setTouser(orderModel.getOpenId());
model.setForm_id(orderModel.getFormId());
model.setPage("pages/index/index");
// Set the param
Map<String, Object> datas = new HashMap<String, Object>();
TemplateData keyword1 = new TemplateData();
keyword1.setValue(orderModel.getKeyword1());
datas.put("keyword1", keyword1);
TemplateData keyword2 = new TemplateData();
keyword2.setValue(orderModel.getKeyword2());
datas.put("keyword2", keyword2);
TemplateData keyword3 = new TemplateData();
keyword3.setValue(orderModel.getKeyword3()); //温馨提示
datas.put("keyword3", keyword3);
TemplateData keyword4 = new TemplateData();
keyword4.setValue(orderModel.getKeyword4());
datas.put("keyword4", keyword4);
TemplateData keyword5 = new TemplateData();
keyword5.setValue(orderModel.getKeyword5());
datas.put("keyword5", keyword5);
TemplateData keyword6 = new TemplateData();
keyword6.setValue(orderModel.getKeyword6());
datas.put("keyword6", keyword6);
model.setData(datas);
// model.setEmphasis_keyword("keyword1.DATA"); //放大标题
String templeteUrl = "";
System.out.println("templete param ========= " + JSON.toJSONString(model));
String returnMessage = PayUtil.httpRequest(templeteUrl, "POST", JSON.toJSONString(model),
false, new XcxWxLogin(appId, appSecret, mchId, key));
System.out.println("returnMessage ========= " + returnMessage);
JSONObject jsonObject = JSON.parseObject(returnMessage);
if (0 != (Integer) jsonObject.get("errcode")) {
logger.warn("--- Error find while sending the order message. ----");
return false;
} else {
logger.info("--- The order was sent successfully.. ----");
return true;
}
} else {
logger.error("------ The access token is null. -------");
return false;
}
}
public static boolean sendWeekMessage(ServiceAssembleData orderModel, String appId, String appSecret, String mchId, String key, String template) {
AccessToken accessToken = getAccessToken(appId, appSecret, mchId, key);
if (null != accessToken) {
OrderRemindModel model = new OrderRemindModel();
model.setTemplate_id(template);
model.setTouser(orderModel.getOpenId());
model.setForm_id(orderModel.getFormId());
model.setPage("pages/index/index");
// Set the param
Map<String, Object> datas = new HashMap<String, Object>();
TemplateData keyword1 = new TemplateData();
keyword1.setValue(orderModel.getKeyword1());
datas.put("keyword1", keyword1);
TemplateData keyword2 = new TemplateData();
keyword2.setValue(orderModel.getKeyword2());
datas.put("keyword2", keyword2);
TemplateData keyword3 = new TemplateData();
keyword3.setValue(orderModel.getKeyword3()); //温馨提示
datas.put("keyword3", keyword3);
TemplateData keyword4 = new TemplateData();
keyword4.setValue(orderModel.getKeyword4());
datas.put("keyword4", keyword4);
model.setData(datas);
String templeteUrl = "|";
System.out.println("templete param ========= " + JSON.toJSONString(model));
String returnMessage = PayUtil.httpRequest(templeteUrl, "POST", JSON.toJSONString(model),
false, new XcxWxLogin(appId, appSecret, mchId, key));
System.out.println("returnMessage ========= " + returnMessage);
JSONObject jsonObject = JSON.parseObject(returnMessage);
if (0 != (Integer) jsonObject.get("errcode")) {
logger.warn("--- Error find while sending the order message. ----");
return false;
} else {
logger.info("--- The order was sent successfully.. ----");
return true;
}
} else {
logger.error("------ The access token is null. -------");
return false;
}
}
public static boolean sendNewUserMessage(ServiceRemindData orderModel, String appId, String appSecret, String mchId, String key) {
AccessToken accessToken = getAccessToken(appId, appSecret, mchId, key);
if (null != accessToken) {
OrderRemindModel model = new OrderRemindModel();
model.setTemplate_id("");
model.setTouser(orderModel.getOpenId());
model.setForm_id(orderModel.getFormId());
model.setPage("pages/index/index");
// Set the param
Map<String, Object> datas = new HashMap<String, Object>();
TemplateData keyword1 = new TemplateData();
keyword1.setValue(orderModel.getKeyword1());
datas.put("keyword1", keyword1);
TemplateData keyword2 = new TemplateData();
keyword2.setValue(orderModel.getKeyword2());
datas.put("keyword2", keyword2);
TemplateData keyword3 = new TemplateData();
keyword3.setValue(orderModel.getKeyword3()); //温馨提示
datas.put("keyword3", keyword3);
TemplateData keyword4 = new TemplateData();
keyword4.setValue(orderModel.getKeyword4());
datas.put("keyword4", keyword4);
model.setData(datas);
model.setEmphasis_keyword("keyword1.DATA"); //放大标题
String templeteUrl = "";
System.out.println("templete param ========= " + JSON.toJSONString(model));
String returnMessage = PayUtil.httpRequest(templeteUrl, "POST", JSON.toJSONString(model), false,
new XcxWxLogin(appId, appSecret, mchId, key));
System.out.println("returnMessage ========= " + returnMessage);
JSONObject jsonObject = JSON.parseObject(returnMessage);
if (0 != (Integer) jsonObject.get("errcode")) {
logger.warn("--- Error find while sending the order message. ----");
return false;
} else {
logger.info("--- The order was sent successfully.. ----");
return true;
}
} else {
logger.error("------ The access token is null. -------");
return false;
}
}
/**
* Get the access token
*
* @return
*/
private static AccessToken getAccessToken(String appId, String appSecret, String mchId, String key) {
try {
String tokenUrl = "";
logger.info("tokenUrl = " + tokenUrl);
String accessToken = PayUtil.httpRequest(tokenUrl, "POST", null, false, new XcxWxLogin(appId, appSecret, mchId, key));
JSONObject json = JSON.parseObject(accessToken);
AccessToken at = new AccessToken();
at.setAccessToken(json.getString("access_token"));
at.setExpiresIn(json.getIntValue("expires_in"));
return at;
} catch (Exception e) {
logger.error("------ Get access token error!!! -------");
return null;
}
}
}
//构建推送内容
String formId = serviceNotificationService.getFormIdByUserId(user.getUserId(), “_assemble”);
if (!StringUtil.isEmpty(formId)) {
try {
ServiceAssembleData assembleData = new ServiceAssembleData();
assembleData.setOpenId(user.getOpenId());
assembleData.setFormId(formId);
Object userName = user.getUserName();
if (userName != null && !"".equals(userName) ) {
try {
userName = new String((byte[]) userName, "UTF-8");
log.info(userName+"");
// user.setUserName(EscapeUnescapeUtil.escape((String)userName));
assembleData.setKeyword1(userName+"");
} catch (UnsupportedEncodingException e) {
log.error("userName convert error - " + e.getMessage());
}
}
if(userName.equals("{}") || userName.equals("") || null==userName){
assembleData.setKeyword1("游客");
}
assembleData.setKeyword2(String.valueOf(product.getNumberGroup()));
assembleData.setKeyword3(product.getDescribe());
assembleData.setKeyword4(String.valueOf(product.getPrice().divide(new BigDecimal(100),2,BigDecimal.ROUND_HALF_DOWN)));
StringBuffer sb = new StringBuffer();
users.forEach(user1 -> {
if(!user.getUserName().equals(user1.getUserName())) {
sb.append(user1.getUserName().toString()+" ");
}});
assembleData.setKeyword5(sb.toString());
assembleData.setKeyword6("拼团成功-待发货");
SendServiceNotification.sendAssembleMessage(assembleData, appId, appSecret, mchId, key, Constants.GOLDEN_STEP_ASSEMBLE_TEMP);
} catch (Exception e) {
log.error("发送拼团模板消息出错:::" + e.getMessage());
}
}