289 lines
19 KiB
Java
289 lines
19 KiB
Java
package com.tenwa.lease.app.quartzmession;
|
||
|
||
import java.io.BufferedReader;
|
||
import java.io.InputStreamReader;
|
||
import java.io.OutputStreamWriter;
|
||
import java.net.HttpURLConnection;
|
||
import java.net.URL;
|
||
import java.util.UUID;
|
||
import org.apache.log4j.LogManager;
|
||
import org.apache.log4j.Logger;
|
||
import org.quartz.Job;
|
||
import org.quartz.JobExecutionContext;
|
||
import org.quartz.JobExecutionException;
|
||
import com.alibaba.fastjson.JSONObject;
|
||
import com.amarsoft.are.jbo.JBOException;
|
||
import com.amarsoft.awe.util.ASResultSet;
|
||
import com.amarsoft.awe.util.SqlObject;
|
||
import com.amarsoft.awe.util.Transaction;
|
||
import com.amarsoft.dict.als.cache.CacheLoaderFactory;
|
||
import com.tenwa.httpclient.resources.WechatPropertiesUtil;
|
||
import com.tenwa.util.SerialNumberUtil;
|
||
|
||
/**
|
||
* 1:微信公众号信息推送
|
||
* @author xiezhiwen
|
||
*/
|
||
public class WechatMessagePush implements Job{
|
||
private static final Logger logger = LogManager.getLogger(WechatMessagePush.class);// 引入logger日志
|
||
|
||
public void execute(JobExecutionContext arg0) throws JobExecutionException {
|
||
Transaction Sqlca=null;
|
||
try{
|
||
Sqlca = Transaction.createTransaction(CacheLoaderFactory.getDataSource());
|
||
// 执行还款消息推送
|
||
String result1 = RefundRemindPush(Sqlca);
|
||
String result2 = OverdueRefundRemindPush(Sqlca);
|
||
Sqlca.commit();
|
||
|
||
logger.info("还款提醒发送状态<<<<<<<<<<<<<: "+result1);
|
||
logger.info("逾期还款提醒发送状态<<<<<<<<<<: "+result2);
|
||
}catch(Exception e){
|
||
logger.info("<<<<<<<<<<<<<<<<<<<<<<微信推送定时任务执行异常>>>>>>>>>>>>>>>>>>>>>>>");
|
||
logger.info("<<<<<<<<<<<<<<<<<<<<<<微信推送定时任务执行异常>>>>>>>>>>>>>>>>>>>>>>>");
|
||
logger.info("<<<<<<<<<<<<<<<<<<<<<<微信推送定时任务执行异常>>>>>>>>>>>>>>>>>>>>>>>");
|
||
try {
|
||
Sqlca.rollback();
|
||
} catch (JBOException e1) {
|
||
e1.printStackTrace();
|
||
}
|
||
e.printStackTrace();
|
||
}finally {
|
||
if(Sqlca!=null) {
|
||
try {
|
||
Sqlca.commit();
|
||
Sqlca.disConnect();
|
||
} catch (JBOException e) {
|
||
e.printStackTrace();
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 1: 还款提醒发送
|
||
* @return
|
||
* @throws Exception
|
||
*/
|
||
public String RefundRemindPush(Transaction Sqlca) throws Exception {
|
||
// 定义全局对象
|
||
String contract_number=null;// 合同名称
|
||
String customer_num=null; // 客户编码
|
||
String cust_name=null; // 客户名称
|
||
String plan_list=null; // 客户名称
|
||
String mobile=null; // 手机号
|
||
String contract_id=null; // 合同id
|
||
String customer_id=null; // 客户id
|
||
String openid=null; // 微信标识
|
||
String link=null; // 详情链接
|
||
String type="1"; // 类型
|
||
String keyword1=null;// 还款日期
|
||
String keyword2=null;// 还款期次
|
||
String keyword3=null;// 还款金额
|
||
String keyword4=null;//
|
||
String uuid=null; // 记录表id
|
||
String first="尊敬的客户您好,本期还款信息如下:";// 内容头
|
||
String remark="请您在还款日前完成还款,感谢您的支持与配合,祝您生活愉快!";// 备注
|
||
String updSql="";
|
||
String insertSql="";
|
||
String msgid =null;
|
||
String result="推送成功";
|
||
String batch=SerialNumberUtil.getWechatBatchNumber(Sqlca);
|
||
int con=0;
|
||
|
||
// 查询所有需要发送还款提醒的数据
|
||
//String selSql="SELECT CI.CUSTOMERNAME AS CUST_NAME,WUI.MOBILE_,WUI.CERTID_,LCI.CONTRACT_NUMBER,CI.CUSTOMER_NUM,LRP.PLAN_LIST,LCI.ID AS CONTRACT_ID,CI.CUSTOMERID,WUI.OPENID,CONCAT('/wechat/menu?type=payments&id=',LCI.CONTRACT_NUMBER) AS LINK,CONCAT(CONVERT(YEAR(LRP.PLAN_DATE), CHAR),'年',CONVERT(MONTH(LRP.PLAN_DATE), CHAR),'月',CONVERT(DAY(LRP.PLAN_DATE), CHAR),'日') AS KEYWORD1,CONCAT('第', LRP.PLAN_LIST, '期') KEYWORD2,CONCAT(IFNULL(LRP.RENT, 0) - IFNULL(LRI.RENT, 0),'元') KEYWORD3 FROM WECHAT_USER_INFO WUI LEFT JOIN CUSTOMER_INFO CI ON CI.CERTID = WUI.CERTID_ LEFT JOIN LB_UNION_LESSEE LUL ON LUL.CUSTOMER_ID = CI.CUSTOMERID AND LUL.IS_MAIN = 'Y' LEFT JOIN LB_CONTRACT_INFO LCI ON LCI.ID = LUL.CONTRACT_ID AND LCI.CONTRACT_STATUS = '31' LEFT JOIN DISTRIBUTOR_INFO DI ON DI.DISTRIBUTOR_NO=LCI.DISTRIBUTOR_ID LEFT JOIN LC_RENT_PLAN LRP ON LRP.CONTRACT_ID = LCI.ID LEFT JOIN (SELECT CONTRACT_ID,PLAN_LIST,SUM(RENT) AS RENT FROM LC_RENT_INCOME GROUP BY CONTRACT_ID,PLAN_LIST) LRI ON LRI.CONTRACT_ID = LRP.CONTRACT_ID AND LRI.PLAN_LIST = LRP.PLAN_LIST WHERE WUI.BINDING_STATUS = 'Y' AND IFNULL(WUI.ATTENTION_STATUS, 'Y') <> 'N' AND DI.DISTRIBUTOR_NAME<>'辉煌国际融资租赁(天津)有限公司' AND (TIMESTAMPDIFF(DAY,DATE_FORMAT(NOW(), '%Y-%m-%d'),DATE_FORMAT(LRP.PLAN_DATE, '%Y-%m-%d')) <= 2 AND TIMESTAMPDIFF(DAY,DATE_FORMAT(NOW(), '%Y-%m-%d'),DATE_FORMAT(LRP.PLAN_DATE, '%Y-%m-%d')) >= 0) AND IFNULL(LRP.RENT, 0) - IFNULL(LRI.RENT, 0) > 0 AND NOT EXISTS (SELECT 1 FROM WECHAT_MESSAGE_RECORD WHERE OPENID = WUI.OPENID AND SEND_TYPE = '1' AND CONTRACT_NUMBER = LCI.CONTRACT_NUMBER AND PLAN_LIST = LRP.PLAN_LIST AND SEND_STATUS = 'Y') LIMIT 0, 50000 ";
|
||
String selSql="SELECT CI.CUSTOMERNAME AS CUST_NAME,WUI.MOBILE_,WUI.CERTID_,LCI.CONTRACT_NUMBER,CI.CUSTOMER_NUM,LRP.PLAN_LIST,LCI.ID AS CONTRACT_ID,CI.CUSTOMERID,WUI.OPENID,CONCAT('/wechat/menu?type=payments&id=',LCI.CONTRACT_NUMBER) AS LINK,CONCAT(CONVERT(YEAR(LRP.PLAN_DATE), CHAR),'年',CONVERT(MONTH(LRP.PLAN_DATE), CHAR),'月',CONVERT(DAY(LRP.PLAN_DATE), CHAR),'日') AS KEYWORD1,CONCAT('第', LRP.PLAN_LIST, '期') KEYWORD2,CONCAT(IFNULL(LRP.RENT, 0) - IFNULL(LRI.RENT, 0),'元') KEYWORD3 FROM WECHAT_USER_INFO WUI LEFT JOIN CUSTOMER_INFO CI ON CI.CERTID = WUI.CERTID_ LEFT JOIN LB_UNION_LESSEE LUL ON LUL.CUSTOMER_ID = CI.CUSTOMERID AND LUL.IS_MAIN = 'Y' LEFT JOIN LB_CONTRACT_INFO LCI ON LCI.ID = LUL.CONTRACT_ID AND LCI.CONTRACT_STATUS = '31' LEFT JOIN DISTRIBUTOR_INFO DI ON DI.DISTRIBUTOR_NO=LCI.DISTRIBUTOR_ID LEFT JOIN LC_RENT_PLAN LRP ON LRP.CONTRACT_ID = LCI.ID LEFT JOIN (SELECT CONTRACT_ID,PLAN_LIST,SUM(RENT) AS RENT FROM LC_RENT_INCOME GROUP BY CONTRACT_ID,PLAN_LIST) LRI ON LRI.CONTRACT_ID = LRP.CONTRACT_ID AND LRI.PLAN_LIST = LRP.PLAN_LIST WHERE WUI.BINDING_STATUS = 'Y' AND DI.DISTRIBUTOR_NAME<>'辉煌国际融资租赁(天津)有限公司' AND (TIMESTAMPDIFF(DAY,DATE_FORMAT(NOW(), '%Y-%m-%d'),DATE_FORMAT(LRP.PLAN_DATE, '%Y-%m-%d')) <= 2 AND TIMESTAMPDIFF(DAY,DATE_FORMAT(NOW(), '%Y-%m-%d'),DATE_FORMAT(LRP.PLAN_DATE, '%Y-%m-%d')) >= 0) AND IFNULL(LRP.RENT, 0) - IFNULL(LRI.RENT, 0) > 0 AND NOT EXISTS (SELECT 1 FROM WECHAT_MESSAGE_RECORD WHERE OPENID = WUI.OPENID AND SEND_TYPE = '1' AND CONTRACT_NUMBER = LCI.CONTRACT_NUMBER AND PLAN_LIST = LRP.PLAN_LIST AND SEND_STATUS = 'Y') LIMIT 0, 50000 ";
|
||
|
||
ASResultSet rs = Sqlca.getASResultSet(new SqlObject(selSql));
|
||
|
||
while(rs.next()) {
|
||
// 获取接口推送所需数据
|
||
con++;
|
||
uuid = UUID.randomUUID().toString().replace("-", "");
|
||
openid=rs.getString("openid");
|
||
link=rs.getString("link");
|
||
keyword1=rs.getString("keyword1");
|
||
keyword2=rs.getString("keyword2");
|
||
keyword3=rs.getString("keyword3");
|
||
contract_number=rs.getString("contract_number");
|
||
customer_num=rs.getString("customer_num");
|
||
cust_name=rs.getString("cust_name");
|
||
mobile=rs.getString("mobile_");
|
||
plan_list=rs.getString("plan_list");
|
||
contract_id=rs.getString("contract_id");
|
||
customer_id=rs.getString("customerid");
|
||
|
||
// 查寻当条是否是历史失败的
|
||
selSql="SELECT openid FROM wechat_message_record WHERE OPENID='"+openid+"' AND CONTRACT_NUMBER='"+contract_number+"' AND PLAN_LIST='"+plan_list+"' AND SEND_TYPE='1'";
|
||
ASResultSet rs1 = Sqlca.getASResultSet(new SqlObject(selSql));
|
||
|
||
if(!rs1.next()) {
|
||
insertSql="INSERT INTO WECHAT_MESSAGE_RECORD(ID,BATCH,OPENID,CONTRACT_NUMBER,CUSTOMER_NUM,CUST_NAME,PLAN_LIST,MODILE,SEND_DATE,SEND_TYPE,SEND_CONTENT,SEND_STATUS,CONTRACT_ID,CUSTOMER_ID) VALUES('"+uuid+"',CONCAT('"+batch+"','-','"+con+"'),'"+openid+"','"+contract_number+"','"+customer_num+"','"+cust_name+"','"+plan_list+"','"+mobile+"',DATE_FORMAT(NOW(),'%Y/%m/%d %H:%i:%s'),'1',CONCAT('"+first+"','还款日期: ','"+keyword1+"',',还款期数: ','"+keyword2+"',',还款金额: ','"+keyword3+"',', ','"+remark+"'),'N','"+contract_id+"','"+customer_id+"')";
|
||
Sqlca.executeSQL(new SqlObject(insertSql));
|
||
}
|
||
try {
|
||
msgid = WechatMessagePush.WechatPush(openid,link,type,first,keyword1,keyword2,keyword3,keyword4,remark);
|
||
System.out.println(con);
|
||
} catch (Exception e) {
|
||
result="推送失败";
|
||
e.printStackTrace();
|
||
}
|
||
// 成功改状态, 失败改时间
|
||
if(msgid!=null) {
|
||
updSql="UPDATE wechat_message_record SET MSGID='"+msgid+"',SEND_DATE=DATE_FORMAT(NOW(),'%Y/%m/%d %H:%i:%s'),SEND_STATUS='Y' WHERE OPENID='"+openid+"' AND CONTRACT_NUMBER='"+contract_number+"' AND PLAN_LIST='"+plan_list+"' AND SEND_TYPE='1'";
|
||
Sqlca.executeSQL(new SqlObject(updSql));
|
||
}else {
|
||
result="推送失败";
|
||
updSql="UPDATE wechat_message_record SET SEND_DATE=DATE_FORMAT(NOW(),'%Y/%m/%d %H:%i:%s'),SEND_STATUS='N' WHERE OPENID='"+openid+"' AND CONTRACT_NUMBER='"+contract_number+"' AND PLAN_LIST='"+plan_list+"' AND SEND_TYPE='1'";
|
||
Sqlca.executeSQL(new SqlObject(updSql));
|
||
}
|
||
}
|
||
return result+String.valueOf(con);
|
||
}
|
||
|
||
/**
|
||
* 2: 逾期 还款提醒发送
|
||
* @return
|
||
* @throws Exception
|
||
*/
|
||
public String OverdueRefundRemindPush(Transaction Sqlca) throws Exception {
|
||
// 定义全局对象
|
||
String contract_number=null;// 合同名称
|
||
String customer_num=null; // 客户编码
|
||
String cust_name=null; // 客户名称
|
||
String plan_list=null; // 客户名称
|
||
String mobile=null; // 手机号
|
||
String contract_id=null; // 合同id
|
||
String customer_id=null; // 客户id
|
||
String openid=null; // 微信标识
|
||
String link=null; // 详情链接
|
||
String type="2"; // 类型
|
||
String keyword1=null; // 还款日期
|
||
String keyword2=null; // 应还金额
|
||
String keyword3=null; // 逾期金额
|
||
String keyword4=null; // 罚息金额
|
||
String uuid=null; // 记录表id
|
||
String first="亲爱的用户您好,您本期应还金额尚未归还,以下是您的账单信息:"; // 内容头
|
||
String remark="您已逾期,逾期会产生利息并影响您的个人信用。为了更好地维护您的相关权益,请尽快还款。如需协商 ,请联系客服。"; // 备注
|
||
String updSql="";
|
||
String insertSql="";
|
||
String msgid =null;
|
||
String result="推送成功";
|
||
String batch=SerialNumberUtil.getWechatBatchNumber(Sqlca);
|
||
int con=0;
|
||
|
||
// 查询所有需要发送还款提醒的数据
|
||
//String selSql="SELECT CI.CUSTOMERNAME AS CUST_NAME,WUI.MOBILE_,WUI.CERTID_,LCI.CONTRACT_NUMBER,CI.CUSTOMER_NUM,LRP.PLAN_LIST,LCI.ID AS CONTRACT_ID,CI.CUSTOMERID,WUI.OPENID,CONCAT('/wechat/menu?type=payments&id=',LCI.CONTRACT_NUMBER) AS LINK,CONCAT(CONVERT(YEAR(LRP.PLAN_DATE), CHAR),'年',CONVERT(MONTH(LRP.PLAN_DATE), CHAR),'月',CONVERT(DAY(LRP.PLAN_DATE), CHAR),'日') AS KEYWORD1,CONCAT(ROUND((LRP.RENT + ROUND(IFNULL(getRentPenalty3(LRP.PAYMENT_NUMBER,LRP.PLAN_LIST,IFNULL(LRI.HIRE_DATE,DATE_FORMAT(NOW(), '%y/%m/%d'))),0),2)) - (IFNULL(LRI.RENT, 0) + IFNULL(LRI.PENALTY, 0)),2),'元') AS KEYWORD2,CONCAT((LRP.RENT - IFNULL(LRI.RENT, 0)),'元') AS KEYWORD3,CONCAT(ROUND(IFNULL(getRentPenalty(LRP.PAYMENT_NUMBER,LRP.PLAN_LIST,IFNULL(LRI.HIRE_DATE,DATE_FORMAT(NOW(), '%y/%m/%d'))),0),2),'元') AS KEYWORD4 FROM WECHAT_USER_INFO WUI LEFT JOIN CUSTOMER_INFO CI ON CI.CERTID = WUI.CERTID_ LEFT JOIN LB_UNION_LESSEE LUL ON LUL.CUSTOMER_ID = CI.CUSTOMERID AND LUL.IS_MAIN = 'Y' LEFT JOIN LB_CONTRACT_INFO LCI ON LCI.ID = LUL.CONTRACT_ID AND LCI.CONTRACT_STATUS = '31' LEFT JOIN DISTRIBUTOR_INFO DI ON DI.DISTRIBUTOR_NO=LCI.DISTRIBUTOR_ID LEFT JOIN (SELECT CONTRACT_ID,PLAN_LIST,MAX(PLAN_DATE) AS PLAN_DATE,MAX(PAYMENT_NUMBER) AS PAYMENT_NUMBER,SUM(RENT) AS RENT,SUM(IFNULL(PENALTY, 0)) AS PENALTY FROM LC_RENT_PLAN WHERE TIMESTAMPDIFF(DAY,DATE_FORMAT(PLAN_DATE, '%Y-%m-%d'),DATE_FORMAT(NOW(), '%Y-%m-%d')) >= 3 GROUP BY CONTRACT_ID,PLAN_LIST) LRP ON LRP.CONTRACT_ID = LCI.ID LEFT JOIN (SELECT CONTRACT_ID,PLAN_LIST,SUM(RENT) AS RENT,SUM(IFNULL(PENALTY, 0)) AS PENALTY,MAX(HIRE_DATE) AS HIRE_DATE FROM LC_RENT_INCOME GROUP BY CONTRACT_ID,PLAN_LIST) LRI ON LRI.CONTRACT_ID = LRP.CONTRACT_ID AND LRI.PLAN_LIST = LRP.PLAN_LIST WHERE WUI.BINDING_STATUS = 'Y' AND IFNULL(WUI.ATTENTION_STATUS,'Y')<>'N' AND DI.DISTRIBUTOR_NAME<>'辉煌国际融资租赁(天津)有限公司' AND (IFNULL(LRP.RENT, 0)+ ROUND(IFNULL(getRentPenalty3(LRP.PAYMENT_NUMBER,LRP.PLAN_LIST,IFNULL(LRI.HIRE_DATE,DATE_FORMAT(NOW(), '%y/%m/%d'))),0),2)- IFNULL(LRI.RENT, 0) - IFNULL(LRI.PENALTY, 0)) > 0 AND NOT EXISTS (SELECT 1 FROM WECHAT_MESSAGE_RECORD WHERE OPENID = WUI.OPENID AND SEND_TYPE = '2' AND CONTRACT_NUMBER = LCI.CONTRACT_NUMBER AND PLAN_LIST = LRP.PLAN_LIST AND SEND_STATUS = 'Y') ORDER BY LRP.PLAN_LIST LIMIT 0, 50000 ";
|
||
String selSql="SELECT CI.CUSTOMERNAME AS CUST_NAME,WUI.MOBILE_,WUI.CERTID_,LCI.CONTRACT_NUMBER,CI.CUSTOMER_NUM,LRP.PLAN_LIST,LCI.ID AS CONTRACT_ID,CI.CUSTOMERID,WUI.OPENID,CONCAT('/wechat/menu?type=payments&id=',LCI.CONTRACT_NUMBER) AS LINK,CONCAT(CONVERT(YEAR(LRP.PLAN_DATE), CHAR),'年',CONVERT(MONTH(LRP.PLAN_DATE), CHAR),'月',CONVERT(DAY(LRP.PLAN_DATE), CHAR),'日') AS KEYWORD1,CONCAT(ROUND((LRP.RENT + ROUND(IFNULL(getRentPenalty3(LRP.PAYMENT_NUMBER,LRP.PLAN_LIST,IFNULL(LRI.HIRE_DATE,DATE_FORMAT(NOW(), '%y/%m/%d'))),0),2)) - (IFNULL(LRI.RENT, 0) + IFNULL(LRI.PENALTY, 0)),2),'元') AS KEYWORD2,CONCAT((LRP.RENT - IFNULL(LRI.RENT, 0)),'元') AS KEYWORD3,CONCAT(ROUND(IFNULL(getRentPenalty(LRP.PAYMENT_NUMBER,LRP.PLAN_LIST,IFNULL(LRI.HIRE_DATE,DATE_FORMAT(NOW(), '%y/%m/%d'))),0),2),'元') AS KEYWORD4 FROM WECHAT_USER_INFO WUI LEFT JOIN CUSTOMER_INFO CI ON CI.CERTID = WUI.CERTID_ LEFT JOIN LB_UNION_LESSEE LUL ON LUL.CUSTOMER_ID = CI.CUSTOMERID AND LUL.IS_MAIN = 'Y' LEFT JOIN LB_CONTRACT_INFO LCI ON LCI.ID = LUL.CONTRACT_ID AND LCI.CONTRACT_STATUS = '31' LEFT JOIN DISTRIBUTOR_INFO DI ON DI.DISTRIBUTOR_NO=LCI.DISTRIBUTOR_ID LEFT JOIN (SELECT CONTRACT_ID,PLAN_LIST,MAX(PLAN_DATE) AS PLAN_DATE,MAX(PAYMENT_NUMBER) AS PAYMENT_NUMBER,SUM(RENT) AS RENT,SUM(IFNULL(PENALTY, 0)) AS PENALTY FROM LC_RENT_PLAN WHERE TIMESTAMPDIFF(DAY,DATE_FORMAT(PLAN_DATE, '%Y-%m-%d'),DATE_FORMAT(NOW(), '%Y-%m-%d')) >= 3 GROUP BY CONTRACT_ID,PLAN_LIST) LRP ON LRP.CONTRACT_ID = LCI.ID LEFT JOIN (SELECT CONTRACT_ID,PLAN_LIST,SUM(RENT) AS RENT,SUM(IFNULL(PENALTY, 0)) AS PENALTY,MAX(HIRE_DATE) AS HIRE_DATE FROM LC_RENT_INCOME GROUP BY CONTRACT_ID,PLAN_LIST) LRI ON LRI.CONTRACT_ID = LRP.CONTRACT_ID AND LRI.PLAN_LIST = LRP.PLAN_LIST WHERE WUI.BINDING_STATUS = 'Y' AND DI.DISTRIBUTOR_NAME<>'辉煌国际融资租赁(天津)有限公司' AND (IFNULL(LRP.RENT, 0)- IFNULL(LRI.RENT, 0)) > 0 AND NOT EXISTS (SELECT 1 FROM WECHAT_MESSAGE_RECORD WHERE OPENID = WUI.OPENID AND SEND_TYPE = '2' AND CONTRACT_NUMBER = LCI.CONTRACT_NUMBER AND PLAN_LIST = LRP.PLAN_LIST AND SEND_STATUS = 'Y') ORDER BY LRP.PLAN_LIST LIMIT 0, 50000 ";
|
||
|
||
ASResultSet rs = Sqlca.getASResultSet(new SqlObject(selSql));
|
||
// 循环, 逐条发送
|
||
while(rs.next()) {
|
||
con++;
|
||
// 获取接口推送所需数据
|
||
uuid = UUID.randomUUID().toString().replace("-", "");
|
||
openid=rs.getString("openid");
|
||
link=rs.getString("link");
|
||
keyword1=rs.getString("keyword1");
|
||
keyword2=rs.getString("keyword2");
|
||
keyword3=rs.getString("keyword3");
|
||
keyword4=rs.getString("keyword4");
|
||
contract_number=rs.getString("contract_number");
|
||
customer_num=rs.getString("customer_num");
|
||
cust_name=rs.getString("cust_name");
|
||
mobile=rs.getString("mobile_");
|
||
plan_list=rs.getString("plan_list");
|
||
contract_id=rs.getString("contract_id");
|
||
customer_id=rs.getString("customerid");
|
||
|
||
// 查寻当条是否是历史失败的
|
||
selSql="SELECT openid FROM wechat_message_record WHERE OPENID='"+openid+"' AND CONTRACT_NUMBER='"+contract_number+"' AND PLAN_LIST='"+plan_list+"' AND SEND_TYPE='2'";
|
||
ASResultSet rs1 = Sqlca.getASResultSet(new SqlObject(selSql));
|
||
|
||
if(!rs1.next()) {
|
||
insertSql="INSERT INTO WECHAT_MESSAGE_RECORD(ID,BATCH,OPENID,CONTRACT_NUMBER,CUSTOMER_NUM,CUST_NAME,PLAN_LIST,MODILE,SEND_DATE,SEND_TYPE,SEND_CONTENT,SEND_STATUS,CONTRACT_ID,CUSTOMER_ID) VALUES('"+uuid+"',CONCAT('"+batch+"','-','"+con+"'),'"+openid+"','"+contract_number+"','"+customer_num+"','"+cust_name+"','"+plan_list+"','"+mobile+"',DATE_FORMAT(NOW(),'%Y/%m/%d %H:%i:%s'),'2',CONCAT('"+first+"','还款日期: ','"+keyword1+"',',还款金额: ','"+keyword2+"',',逾期金额: ','"+keyword3+"',',罚息金额: ','"+keyword4+"',',','"+remark+"'),'N','"+contract_id+"','"+customer_id+"')";
|
||
Sqlca.executeSQL(new SqlObject(insertSql));
|
||
}
|
||
try {
|
||
msgid = WechatMessagePush.WechatPush(openid,link,type,first,keyword1,keyword2,keyword3,keyword4,remark);
|
||
System.out.println(con);
|
||
} catch (Exception e) {
|
||
result="推送失败";
|
||
e.printStackTrace();
|
||
}
|
||
// 成功改状态, 失败改时间
|
||
if(msgid!=null) {
|
||
updSql="UPDATE wechat_message_record SET MSGID='"+msgid+"',SEND_DATE=DATE_FORMAT(NOW(),'%Y/%m/%d %H:%i:%s'),SEND_STATUS='Y' WHERE OPENID='"+openid+"' AND CONTRACT_NUMBER='"+contract_number+"' AND PLAN_LIST='"+plan_list+"' AND SEND_TYPE='2'";
|
||
Sqlca.executeSQL(new SqlObject(updSql));
|
||
}else {
|
||
result="推送失败";
|
||
updSql="UPDATE wechat_message_record SET SEND_DATE=DATE_FORMAT(NOW(),'%Y/%m/%d %H:%i:%s'),SEND_STATUS='N' WHERE OPENID='"+openid+"' AND CONTRACT_NUMBER='"+contract_number+"' AND PLAN_LIST='"+plan_list+"' AND SEND_TYPE='2'";
|
||
Sqlca.executeSQL(new SqlObject(updSql));
|
||
}
|
||
}
|
||
return result+String.valueOf(con);
|
||
}
|
||
|
||
/**
|
||
* 3: 调用消息推送接口
|
||
*/
|
||
public synchronized static String WechatPush(String openid,String link,String type,String first,String keyword1,String keyword2,String keyword3,String keyword4,String remark) throws Exception {
|
||
String strURL = WechatPropertiesUtil.getConfigValue("WechatURL");
|
||
URL url = new URL(strURL);
|
||
HttpURLConnection httpConn = (HttpURLConnection) url.openConnection();
|
||
httpConn.setDoOutput(true);
|
||
httpConn.setDoInput(true);
|
||
httpConn.setRequestProperty("Content-Type", "application/json");
|
||
httpConn.setRequestMethod("POST");
|
||
httpConn.connect();
|
||
OutputStreamWriter out = new OutputStreamWriter(httpConn.getOutputStream(), "UTF-8");
|
||
|
||
// 发送请求参数
|
||
JSONObject json = new JSONObject();
|
||
json.put("openid", openid);// 微信的uuid
|
||
json.put("type", type);// 推送类型
|
||
json.put("link", link);// 推送详情的连接,绑定成功的推送参数为空
|
||
JSONObject data = new JSONObject();
|
||
data.put("first", first);// 推送的头部
|
||
data.put("keyword1", keyword1);// 关键字1
|
||
data.put("keyword2", keyword2);// 关键字2
|
||
data.put("keyword3", keyword3);// 关键字3
|
||
data.put("keyword4", keyword4);// 关键字4
|
||
data.put("remark", remark);// 备注
|
||
json.put("data", data);
|
||
|
||
out.write(json.toString());
|
||
out.flush();
|
||
out.close();
|
||
|
||
BufferedReader reader = null;
|
||
try {
|
||
reader = new BufferedReader(new InputStreamReader(httpConn.getInputStream()));
|
||
} catch (Exception e) {
|
||
e.printStackTrace();
|
||
logger.info("<<<<<<<<<<<<<<<获取回执信息失败>>>>>>>>>>>>>>>>>>>");
|
||
logger.info("<<<<<<<<<<<<<<<获取回执信息失败>>>>>>>>>>>>>>>>>>>");
|
||
logger.info("<<<<<<<<<<<<<<<获取回执信息失败>>>>>>>>>>>>>>>>>>>");
|
||
throw new Exception("推送失败!");
|
||
}
|
||
String line;
|
||
StringBuffer buffer = new StringBuffer();
|
||
while ((line = reader.readLine()) != null) {
|
||
buffer.append(line);
|
||
}
|
||
reader.close();
|
||
httpConn.disconnect();
|
||
|
||
logger.info("微信接口返回信息" + buffer.toString());
|
||
JSONObject resultjson = JSONObject.parseObject(buffer.toString());
|
||
String msgid = null;
|
||
if (resultjson.get("errcode").toString().equals("0")) {// 推送成功
|
||
msgid = resultjson.get("msgid").toString();
|
||
} else {// 推送失败
|
||
throw new Exception("推送失败");
|
||
}
|
||
return msgid;
|
||
}
|
||
}
|