Commit 6aef475a by chenweitao

“初始提交”

parents
10
dir
16191
svn://192.168.0.30/project/bjfzxWebapp/wechat_Fuwu/com/zhiwei
svn://192.168.0.30
2017-12-07T07:18:45.664747Z
15877
chenweitao
svn:special svn:externals svn:needs-lock
21a4f42a-c9d9-498b-9054-f75f9d41c267
DBTemplate
dir
conf
dir
dao
dir
servlet
dir
util
dir
weixin
dir
10
dir
16191
svn://192.168.0.30/project/bjfzxWebapp/wechat_Fuwu/com/zhiwei/DBTemplate
svn://192.168.0.30
2016-12-06T09:22:15.298093Z
9711
test3
svn:special svn:externals svn:needs-lock
21a4f42a-c9d9-498b-9054-f75f9d41c267
MongoDBTemplate.java
file
2018-02-01T05:50:18.274000Z
19207deca249f4ead077bfe5523c9f97
2016-12-06T09:22:15.298093Z
9711
test3
1829
package com.zhiwei.DBTemplate;
import java.net.UnknownHostException;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.Mongo;
import com.mongodb.MongoException;
import com.zhiwei.conf.Conf;
/**
* @deprecated: mongoDB模板类
* @author LihuaTang
*
*/
public class MongoDBTemplate {
protected static Mongo reader;
protected static Mongo writer;
protected String collName;
protected String dbName;
public MongoDBTemplate() {
if (reader == null) {
try {
reader = new Mongo(Conf.mongoReadIp, 27017);
reader.slaveOk();
} catch (MongoException e) {
e.printStackTrace();
}
}
if (writer == null) {
try {
writer = new Mongo(Conf.mongoWriteIp, 27017);
} catch (MongoException e) {
e.printStackTrace();
}
}
}
public DBCollection getReadColl() {
final DB db = getReader().getDB(dbName);
final DBCollection coll = db.getCollection(collName);
return coll;
}
protected Mongo getReader() {
return reader;
}
public DBCollection getWriteColl() {
final DB db = getWriter().getDB(dbName);
final DBCollection coll = db.getCollection(collName);
return coll;
}
protected Mongo getWriter() {
return writer;
}
public String getCollName() {
return collName;
}
public String getDbName() {
return dbName;
}
protected void setCollName(final String collName) {
this.collName = collName;
}
protected void setDbName(final String dbName) {
this.dbName = dbName;
}
@SuppressWarnings("static-access")
protected void setReader(final Mongo reader) {
this.reader = reader;
}
@SuppressWarnings("static-access")
protected void setWriter(final Mongo writer) {
this.writer = writer;
}
public static void main(String[] args) {
}
}
package com.zhiwei.DBTemplate;
import java.net.UnknownHostException;
import java.util.ArrayList;
import java.util.List;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.Mongo;
import com.mongodb.MongoClient;
import com.mongodb.MongoCredential;
import com.mongodb.MongoException;
import com.mongodb.ServerAddress;
import com.zhiwei.conf.Conf;
/**
* @deprecated: mongoDB模板类
* @author LihuaTang
*
*/
public class MongoDBTemplate {
protected static Mongo reader;
protected static Mongo writer;
protected String collName;
protected String dbName;
public MongoDBTemplate() {
try {
ServerAddress serverAddress = new ServerAddress(Conf.mongoReadIp,27017);
List<MongoCredential> credentialList = new ArrayList<MongoCredential>();
MongoCredential credential = MongoCredential.createCredential(Conf.mongoUserName,
Conf.mongodefaultDB, Conf.mongoPwd.toCharArray());
credentialList.add(credential);
reader = new MongoClient(serverAddress, credentialList);
// reader = new MongoClient(new MongoClientURI(DBConfig.mongoURI,options));
// reader = new Mongo(DBConfig.mongoReadIpHZ_91,27017);
reader.addOption(com.mongodb.Bytes.QUERYOPTION_NOTIMEOUT);
reader.slaveOk();
} catch (MongoException e) {
e.printStackTrace();
}
if (writer == null) {
try {
List<ServerAddress> serverAddrList = new ArrayList<ServerAddress>();
ServerAddress serverAddress = new ServerAddress(Conf.mongoWriteIp, 27017);
serverAddrList.add(serverAddress);
List<MongoCredential> credentialList = new ArrayList<MongoCredential>();
MongoCredential credential = MongoCredential.createCredential(Conf.mongoUserName,
Conf.mongodefaultDB, Conf.mongoPwd.toCharArray());
credentialList.add(credential);
writer = new MongoClient(serverAddrList, credentialList);
// writer = new MongoClient(new MongoClientURI(DBConfig.mongoURI,options));
} catch (MongoException e) {
e.printStackTrace();
}
}
//
// if (reader == null) {
// try {
// reader = new Mongo(Conf.mongoReadIp, 27017);
// reader.slaveOk();
// } catch (MongoException e) {
// e.printStackTrace();
// }
// }
// if (writer == null) {
// try {
// writer = new Mongo(Conf.mongoWriteIp, 27017);
// } catch (MongoException e) {
// e.printStackTrace();
// }
// }
}
public DBCollection getReadColl() {
final DB db = getReader().getDB(dbName);
final DBCollection coll = db.getCollection(collName);
return coll;
}
protected Mongo getReader() {
return reader;
}
public DBCollection getWriteColl() {
final DB db = getWriter().getDB(dbName);
final DBCollection coll = db.getCollection(collName);
return coll;
}
protected Mongo getWriter() {
return writer;
}
public String getCollName() {
return collName;
}
public String getDbName() {
return dbName;
}
protected void setCollName(final String collName) {
this.collName = collName;
}
protected void setDbName(final String dbName) {
this.dbName = dbName;
}
@SuppressWarnings("static-access")
protected void setReader(final Mongo reader) {
this.reader = reader;
}
@SuppressWarnings("static-access")
protected void setWriter(final Mongo writer) {
this.writer = writer;
}
public static void main(String[] args) {
}
}
10
dir
16191
svn://192.168.0.30/project/bjfzxWebapp/wechat_Fuwu/com/zhiwei/conf
svn://192.168.0.30
2016-12-06T09:22:15.298093Z
9711
test3
svn:special svn:externals svn:needs-lock
21a4f42a-c9d9-498b-9054-f75f9d41c267
Conf.java
file
2018-02-01T05:50:20.155000Z
b782919eaa11cdc19e753bd837aff6fa
2016-12-06T09:22:15.298093Z
9711
test3
920
package com.zhiwei.conf;
import java.io.InputStream;
import java.util.Properties;
/**
* @deprecated:配置参数类
* @author TangTou
*
*/
public class Conf {
static {
Properties conf = null;
try {
InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream("config.properties");
conf = new Properties();
conf.load(is);
is.close();
} catch (Exception e) {
e.printStackTrace();
}
mongoWriteIp = conf.getProperty("mongoWriteIp");
mongoReadIp = conf.getProperty("mongoReadIp");
dbName = conf.getProperty("dbName");
appId = conf.getProperty("appId");
appSecret = conf.getProperty("appSecret");
token = conf.getProperty("token");
}
public static String mongoWriteIp;
public static String mongoReadIp;
public static String dbName;
public static String appId;
public static String appSecret;
public static String token;
}
package com.zhiwei.conf;
import java.io.InputStream;
import java.util.Properties;
/**
* @deprecated:配置参数类
* @author TangTou
*
*/
public class Conf {
static {
Properties conf = null;
try {
InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream("config.properties");
conf = new Properties();
conf.load(is);
is.close();
} catch (Exception e) {
e.printStackTrace();
}
mongoWriteIp = conf.getProperty("mongoWriteIp");
mongoReadIp = conf.getProperty("mongoReadIp");
dbName = conf.getProperty("dbName");
appId = conf.getProperty("appId");
appSecret = conf.getProperty("appSecret");
token = conf.getProperty("token");
mongoUserName = conf.getProperty("mongoUserName");
mongoPwd = conf.getProperty("mongoPwd");
mongodefaultDB = conf.getProperty("mongodefaultDB");
}
public static String mongoWriteIp;
public static String mongoReadIp;
public static String dbName;
public static String appId;
public static String appSecret;
public static String token;
public static String mongoUserName;
public static String mongoPwd;
public static String mongodefaultDB;
}
10
dir
16191
svn://192.168.0.30/project/bjfzxWebapp/wechat_Fuwu/com/zhiwei/dao
svn://192.168.0.30
2017-12-07T07:18:45.664747Z
15877
chenweitao
svn:special svn:externals svn:needs-lock
21a4f42a-c9d9-498b-9054-f75f9d41c267
GroupsDao.java
file
2018-02-01T05:50:18.387000Z
63ab3a351a124f54351650bb722c5140
2016-12-06T09:22:15.298093Z
9711
test3
721
TemplatesDao.java
file
2018-02-01T05:50:18.378000Z
1d58649e29c84d58c73bac303b5a8b9e
2016-12-06T09:22:15.298093Z
9711
test3
838
impl
dir
package com.zhiwei.dao;
import com.zhiwei.weixin.pojo.Group;
/**
* @ClassName: GroupsDao
* @Description: TODO(分组用户)
* @author hero
* @date 2016129 上午10:31:49
*/
public interface GroupsDao {
/**
*
* @Title: addGroup
* @Description: TODO(添加分组)
* @param @param group
* @param @return 设定文件
* @return int 返回类型
*/
int addGroup(Group group,String appId);
/**
*
* @Title: getGroupId
* @Description: TODO(根据分组名查询分组id)
* @param @param appId
* @param @param groupName
* @param @return 设定文件
* @return String 返回类型
*/
int getGroupId(String appId,String groupName);
}
package com.zhiwei.dao;
/**
* @ClassName: TemplatesDao
* @Description: TODO(公众号消息模版类)
* @author hero
* @date 2016129 上午10:10:44
*/
public interface TemplatesDao {
/***
*
* @Title: addTemplates
* @Description: TODO(添加存储模版消息)
* @param @param id
* @param @param appid
* @param @param template_id_short
* @param @return 设定文件
* @return int 返回类型
*/
int addTemplates(String id,String appid,String template_id_short);
/***
*
* @Title: getTemplate_id
* @Description: TODO(根据模版消息短id获取长id)
* @param @param template_id_short
* @param @param appid
* @param @return 设定文件
* @return String 返回类型
*/
String getTemplate_id(String template_id_short,String appid);
}
package com.zhiwei.dao;
import com.zhiwei.weixin.pojo.Group;
/**
* @ClassName: GroupsDao
* @Description: TODO(分组用户)
* @author hero
* @date 2016年1月29日 上午10:31:49
*/
public interface GroupsDao {
/**
*
* @Title: addGroup
* @Description: TODO(添加分组)
* @param @param group
* @param @return 设定文件
* @return int 返回类型
*/
int addGroup(Group group,String appId);
/**
*
* @Title: getGroupId
* @Description: TODO(根据分组名查询分组id)
* @param @param appId
* @param @param groupName
* @param @return 设定文件
* @return String 返回类型
*/
int getGroupId(String appId,String groupName);
}
package com.zhiwei.dao;
/**
* @ClassName: TemplatesDao
* @Description: TODO(公众号消息模版类)
* @author hero
* @date 2016年1月29日 上午10:10:44
*/
public interface TemplatesDao {
/***
*
* @Title: addTemplates
* @Description: TODO(添加存储模版消息)
* @param @param id
* @param @param appid
* @param @param template_id_short
* @param @return 设定文件
* @return int 返回类型
*/
int addTemplates(String id,String appid,String template_id_short);
/***
*
* @Title: getTemplate_id
* @Description: TODO(根据模版消息短id获取长id)
* @param @param template_id_short
* @param @param appid
* @param @return 设定文件
* @return String 返回类型
*/
String getTemplate_id(String template_id_short,String appid);
}
10
dir
16191
svn://192.168.0.30/project/bjfzxWebapp/wechat_Fuwu/com/zhiwei/dao/impl
svn://192.168.0.30
2017-12-07T07:18:45.664747Z
15877
chenweitao
svn:special svn:externals svn:needs-lock
21a4f42a-c9d9-498b-9054-f75f9d41c267
GroupsDaoImpl.java
file
2018-02-01T05:50:18.353000Z
a9855ab49998a0d03638e44129e7b91c
2017-12-07T07:18:45.664747Z
15877
chenweitao
2151
TemplatesDaoImpl.java
file
2018-02-01T05:50:18.342000Z
389f223b61eaf88f79ebb776849f61cc
2016-12-06T09:22:15.298093Z
9711
test3
1806
/**
* @Title: GroupsDao.java
* @Package com.zhiwei.dao.impl
* @Description: TODO(用一句话描述该文件做什么)
* @author hero
* @date 2016129 上午10:37:24
* @version V1.0
*/
package com.zhiwei.dao.impl;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.mongodb.BasicDBObject;
import com.mongodb.DBObject;
import com.zhiwei.DBTemplate.MongoDBTemplate;
import com.zhiwei.conf.Conf;
import com.zhiwei.dao.GroupsDao;
import com.zhiwei.weixin.pojo.Group;
/**
* @ClassName: GroupsDao
* @Description: TODO(这里用一句话描述这个类的作用)
* @author hero
* @date 2016129 上午10:37:24
*/
public class GroupsDaoImpl extends MongoDBTemplate implements GroupsDao {
private String collName = "groups";
private static Logger logger = LoggerFactory.getLogger(TemplatesDaoImpl.class);
public GroupsDaoImpl()
{
super();
super.setDbName(Conf.dbName);
super.setCollName(collName);
}
@Override
public int addGroup(Group group, String appId) {
try {
DBObject saveDoc = new BasicDBObject();
saveDoc.put("_id", group.getId()+"_"+appId);
saveDoc.put("appid", appId);
saveDoc.put("groupid", group.getId());
saveDoc.put("groupName", group.getGroupName());
saveDoc.put("groupCount", group.getCount());
this.getReadColl().insert(saveDoc);
return 1;
} catch (Exception e) {
logger.error("向数据库中添加模版消息失败:【{}】",e.getMessage());
return 0;
}
}
@Override
public int getGroupId(String appId, String groupName) {
int groupid = -100;
DBObject query = new BasicDBObject();
query.put("appid", appId);
query.put("groupName", groupName);
try {
DBObject doc = this.getReadColl().findOne(query);
if(null != doc)
{
groupid = Integer.valueOf(doc.get("groupid").toString());
}
} catch (Exception e) {
logger.error("从数据查询模版消息长id时连接数据库超时:【{}】,【{}】",this.getReadColl().getDB().getMongo().getAddress(),e.getMessage());
groupid = -100;
}
return groupid;
}
}
package com.zhiwei.dao.impl;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.mongodb.BasicDBObject;
import com.mongodb.DBObject;
import com.zhiwei.DBTemplate.MongoDBTemplate;
import com.zhiwei.conf.Conf;
import com.zhiwei.dao.TemplatesDao;
/**
* @ClassName: TemplatesDaoImpl
* @Description: TODO(这里用一句话描述这个类的作用)
* @author hero
* @date 2016129 上午10:16:07
*/
public class TemplatesDaoImpl extends MongoDBTemplate implements TemplatesDao{
private String collName = "templates";
private static Logger logger = LoggerFactory.getLogger(TemplatesDaoImpl.class);
public TemplatesDaoImpl()
{
super();
super.setDbName(Conf.dbName);
super.setCollName(collName);
}
@Override
public int addTemplates(String template_id, String appid, String template_id_short) {
try {
DBObject saveDoc = new BasicDBObject();
saveDoc.put("_id", template_id);
saveDoc.put("appid", appid);
saveDoc.put("template_id_short", template_id_short);
this.getReadColl().insert(saveDoc);
return 1;
} catch (Exception e) {
logger.error("向数据库中添加模版消息失败",e.getMessage());
return 0;
}
}
@Override
public String getTemplate_id(String template_id_short, String appid) {
String template_id = null;
DBObject query = new BasicDBObject();
query.put("template_id_short", template_id_short);
query.put("appid", appid);
try {
DBObject doc = this.getReadColl().findOne(query);
if(null != doc)
{
template_id = doc.get("_id").toString();
}
} catch (Exception e) {
logger.error("从数据查询模版消息长id时连接数据库超时",e.getMessage());
template_id = null;
}
return template_id;
}
}
/**
* @Title: GroupsDao.java
* @Package com.zhiwei.dao.impl
* @Description: TODO(用一句话描述该文件做什么)
* @author hero
* @date 2016年1月29日 上午10:37:24
* @version V1.0
*/
package com.zhiwei.dao.impl;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.mongodb.BasicDBObject;
import com.mongodb.DBObject;
import com.zhiwei.DBTemplate.MongoDBTemplate;
import com.zhiwei.conf.Conf;
import com.zhiwei.dao.GroupsDao;
import com.zhiwei.weixin.pojo.Group;
/**
* @ClassName: GroupsDao
* @Description: TODO(这里用一句话描述这个类的作用)
* @author hero
* @date 2016年1月29日 上午10:37:24
*/
public class GroupsDaoImpl extends MongoDBTemplate implements GroupsDao {
private String collName = "groups";
private static Logger logger = LoggerFactory.getLogger(TemplatesDaoImpl.class);
public GroupsDaoImpl()
{
super();
super.setDbName(Conf.dbName);
super.setCollName(collName);
}
@Override
public int addGroup(Group group, String appId) {
try {
DBObject saveDoc = new BasicDBObject();
saveDoc.put("_id", group.getId()+"_"+appId);
saveDoc.put("appid", appId);
saveDoc.put("groupid", group.getId());
saveDoc.put("groupName", group.getGroupName());
saveDoc.put("groupCount", group.getCount());
this.getReadColl().insert(saveDoc);
return 1;
} catch (Exception e) {
logger.error("向数据库中添加模版消息失败:【{}】",e.getMessage());
return 0;
}
}
@Override
public int getGroupId(String appId, String groupName) {
int groupid = -100;
DBObject query = new BasicDBObject();
query.put("appid", appId);
query.put("groupName", groupName);
try {
DBObject doc = this.getReadColl().findOne(query);
if(null != doc)
{
groupid = Integer.valueOf(doc.get("groupid").toString());
}
} catch (Exception e) {
logger.error("从数据查询模版消息长id时连接数据库超时:【{}】,【{}】",this.getReadColl().getDB().getMongo().getAddress(),e.getMessage());
groupid = -100;
}
return groupid;
}
}
package com.zhiwei.dao.impl;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.mongodb.BasicDBObject;
import com.mongodb.DBObject;
import com.zhiwei.DBTemplate.MongoDBTemplate;
import com.zhiwei.conf.Conf;
import com.zhiwei.dao.TemplatesDao;
/**
* @ClassName: TemplatesDaoImpl
* @Description: TODO(这里用一句话描述这个类的作用)
* @author hero
* @date 2016年1月29日 上午10:16:07
*/
public class TemplatesDaoImpl extends MongoDBTemplate implements TemplatesDao{
private String collName = "templates";
private static Logger logger = LoggerFactory.getLogger(TemplatesDaoImpl.class);
public TemplatesDaoImpl()
{
super();
super.setDbName(Conf.dbName);
super.setCollName(collName);
}
@Override
public int addTemplates(String template_id, String appid, String template_id_short) {
try {
DBObject saveDoc = new BasicDBObject();
saveDoc.put("_id", template_id);
saveDoc.put("appid", appid);
saveDoc.put("template_id_short", template_id_short);
this.getReadColl().insert(saveDoc);
return 1;
} catch (Exception e) {
logger.error("向数据库中添加模版消息失败",e.getMessage());
return 0;
}
}
@Override
public String getTemplate_id(String template_id_short, String appid) {
String template_id = null;
DBObject query = new BasicDBObject();
query.put("template_id_short", template_id_short);
query.put("appid", appid);
try {
DBObject doc = this.getReadColl().findOne(query);
if(null != doc)
{
template_id = doc.get("_id").toString();
}
} catch (Exception e) {
logger.error("从数据查询模版消息长id时连接数据库超时",e.getMessage());
template_id = null;
}
return template_id;
}
}
10
dir
16191
svn://192.168.0.30/project/bjfzxWebapp/wechat_Fuwu/com/zhiwei/servlet
svn://192.168.0.30
2016-12-06T09:22:15.298093Z
9711
test3
svn:special svn:externals svn:needs-lock
21a4f42a-c9d9-498b-9054-f75f9d41c267
CoreServlet.java
file
2018-02-01T05:50:20.120000Z
4a0d0d277269d9337d3c3d607604c20c
2016-12-06T09:22:15.298093Z
9711
test3
2224
TemplatesServlet.java
file
2018-02-01T05:50:20.111000Z
f4dd1606078b5b916cc95ffef2387fdf
2016-12-06T09:22:15.298093Z
9711
test3
1494
package com.zhiwei.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.zhiwei.weixin.service.CoreService;
import com.zhiwei.weixin.util.SignUtil;
/**
* 核心请求处理类
*
* @author HLW_MT
* @date 2013-09-05
*/
public class CoreServlet extends HttpServlet {
private static final long serialVersionUID = 4440739483644821986L;
/**
* 确认请求来自微信服务器
*/
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 微信加密签名
String signature = request.getParameter("signature");
// 时间戳
String timestamp = request.getParameter("timestamp");
// 随机数
String nonce = request.getParameter("nonce");
// 随机字符串
String echostr = request.getParameter("echostr");
PrintWriter out = response.getWriter();
// 通过检验signature对请求进行校验,若校验成功则原样返回echostr,表示接入成功,否则接入失败
if (SignUtil.checkSignature(signature, timestamp, nonce)) {
out.print(echostr);
}
out.close();
out = null;
}
/**
* 处理微信服务器发来的消息
*/
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO 消息的接收、处理、响应
// 将请求、响应的编码均设置为UTF-8(防止中文乱码)
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
// 调用核心业务类接收消息、处理消息
String respMessage = CoreService.processRequest(request);
// 响应消息
PrintWriter out = response.getWriter();
out.print(respMessage);
out.close();
}
}
\ No newline at end of file
package com.zhiwei.servlet;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import net.sf.json.JSONObject;
import com.zhiwei.util.HandleJSON;
import com.zhiwei.weixin.service.TemplateService;
/**
* @ClassName: TemplatesServlet
* @Description: TODO(发送模版消息)
* @author hero
* @date 2016128 下午6:21:38
*/
public class TemplatesServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
InputStream in = request.getInputStream();
JSONObject dataJSON = HandleJSON.handleJSON(in);
TemplateService templateService = new TemplateService();
int k = templateService.sendTemplate(dataJSON);
Map<String,Integer> resultmap = new HashMap<String,Integer>();
resultmap.put("message", k);
JSONObject result = JSONObject.fromObject(resultmap);
out.write(result.toString());
out.flush();
out.close();
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
package com.zhiwei.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.zhiwei.weixin.service.CoreService;
import com.zhiwei.weixin.util.SignUtil;
/**
* 核心请求处理类
*
* @author HLW_MT
* @date 2013-09-05
*/
public class CoreServlet extends HttpServlet {
private static final long serialVersionUID = 4440739483644821986L;
/**
* 确认请求来自微信服务器
*/
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 微信加密签名
String signature = request.getParameter("signature");
// 时间戳
String timestamp = request.getParameter("timestamp");
// 随机数
String nonce = request.getParameter("nonce");
// 随机字符串
String echostr = request.getParameter("echostr");
PrintWriter out = response.getWriter();
// 通过检验signature对请求进行校验,若校验成功则原样返回echostr,表示接入成功,否则接入失败
if (SignUtil.checkSignature(signature, timestamp, nonce)) {
out.print(echostr);
}
out.close();
out = null;
}
/**
* 处理微信服务器发来的消息
*/
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO 消息的接收、处理、响应
// 将请求、响应的编码均设置为UTF-8(防止中文乱码)
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
// 调用核心业务类接收消息、处理消息
String respMessage = CoreService.processRequest(request);
// 响应消息
PrintWriter out = response.getWriter();
out.print(respMessage);
out.close();
}
}
\ No newline at end of file
package com.zhiwei.servlet;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import net.sf.json.JSONObject;
import com.zhiwei.util.HandleJSON;
import com.zhiwei.weixin.service.TemplateService;
/**
* @ClassName: TemplatesServlet
* @Description: TODO(发送模版消息)
* @author hero
* @date 2016年1月28日 下午6:21:38
*/
public class TemplatesServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
InputStream in = request.getInputStream();
JSONObject dataJSON = HandleJSON.handleJSON(in);
TemplateService templateService = new TemplateService();
int k = templateService.sendTemplate(dataJSON);
Map<String,Integer> resultmap = new HashMap<String,Integer>();
resultmap.put("message", k);
JSONObject result = JSONObject.fromObject(resultmap);
out.write(result.toString());
out.flush();
out.close();
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
10
dir
16191
svn://192.168.0.30/project/bjfzxWebapp/wechat_Fuwu/com/zhiwei/util
svn://192.168.0.30
2016-12-06T09:22:15.298093Z
9711
test3
svn:special svn:externals svn:needs-lock
21a4f42a-c9d9-498b-9054-f75f9d41c267
HandleJSON.java
file
2018-02-01T05:50:20.187000Z
188ac1a47ec1dfe3f289e9eacf5c5255
2016-12-06T09:22:15.298093Z
9711
test3
1323
/**
* @Title: HandleJSON.java
* @Package com.zhiwei.util
* @Description: TODO(用一句话描述该文件做什么)
* @author hero
* @date 2016128 下午6:36:32
* @version V1.0
*/
package com.zhiwei.util;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import net.sf.json.JSONObject;
/**
* @ClassName: HandleJSON
* @Description: TODO(处理服务器传递过来的json文件)
* @author hero
* @date 2016128 下午6:36:32
*/
public class HandleJSON {
/**
*
* @Title: getJson
* @Description: TODO(处理服务器传递过来的json文件)
* @param @param in
* @param @return 设定文件
* @return String 返回类型
*/
public static JSONObject handleJSON(InputStream in)
{
JSONObject dataJSON = new JSONObject();
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(in,"utf-8"));
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line);
}
String result = sb.toString();
reader.close();
in.close();
dataJSON = JSONObject.fromObject(result);
} catch (Exception e) {
e.printStackTrace();
return null;
}
return dataJSON;
}
}
/**
* @Title: HandleJSON.java
* @Package com.zhiwei.util
* @Description: TODO(用一句话描述该文件做什么)
* @author hero
* @date 2016年1月28日 下午6:36:32
* @version V1.0
*/
package com.zhiwei.util;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import net.sf.json.JSONObject;
/**
* @ClassName: HandleJSON
* @Description: TODO(处理服务器传递过来的json文件)
* @author hero
* @date 2016年1月28日 下午6:36:32
*/
public class HandleJSON {
/**
*
* @Title: getJson
* @Description: TODO(处理服务器传递过来的json文件)
* @param @param in
* @param @return 设定文件
* @return String 返回类型
*/
public static JSONObject handleJSON(InputStream in)
{
JSONObject dataJSON = new JSONObject();
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(in,"utf-8"));
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line);
}
String result = sb.toString();
reader.close();
in.close();
dataJSON = JSONObject.fromObject(result);
} catch (Exception e) {
e.printStackTrace();
return null;
}
return dataJSON;
}
}
10
dir
16191
svn://192.168.0.30/project/bjfzxWebapp/wechat_Fuwu/com/zhiwei/weixin
svn://192.168.0.30
2017-12-07T07:18:45.664747Z
15877
chenweitao
svn:special svn:externals svn:needs-lock
21a4f42a-c9d9-498b-9054-f75f9d41c267
Groups.java
file
16196
2018-02-01T07:44:53.497000Z
a84868e338342a0b901520a309122131
2018-02-01T07:44:35.041215Z
16196
chenweitao
8145
Templates.java
file
16193
2018-02-01T05:56:17.913000Z
e837e9df6ee9ae8ec88b2f7bb1a19342
2018-02-01T05:55:26.156092Z
16193
chenweitao
3252
Users.java
file
16196
2018-02-01T07:44:51.114000Z
8195041cf45627d57b8a91b4e89375b2
2016-12-12T09:45:38.635001Z
9841
test3
5066
accesstoken
dir
card
dir
http
dir
jsticket
dir
main
dir
model
dir
pojo
dir
service
dir
util
dir
/**
* @Title: Groups.java
* @Package com.zhiwei.weixin
* @Description: TODO(用一句话描述该文件做什么)
* @author hero
* @date 2016127 下午1:58:33
* @version V1.0
*/
package com.zhiwei.weixin;
import java.util.HashMap;
import java.util.List;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.zhiwei.bjfzx.util.WechatCodeUtil;
import com.zhiwei.weixin.accesstoken.CreatAccessToken;
import com.zhiwei.weixin.http.HttpRequest;
import com.zhiwei.weixin.pojo.Group;
/**
* @ClassName: Groups
* @Description: TODO(分组管理接口)
* @author hero
* @date 2016127 下午1:58:33
*/
public class Groups {
// 调用接口获取access_token
private static String accessToken ;
//记录日志
private static Logger log = LoggerFactory.getLogger(Groups.class);
//创建分组链接
private static String create_group_url = "https://api.weixin.qq.com/cgi-bin/groups/create?access_token=ACCESS_TOKEN";
//查询所有分组
private static String getall_group_url = "https://api.weixin.qq.com/cgi-bin/groups/get?access_token=ACCESS_TOKEN";
//查询用户所在分组
private static String getid_url = "https://api.weixin.qq.com/cgi-bin/groups/getid?access_token=ACCESS_TOKEN";
//修改分组名称
private static String updateGroupName_url = "https://api.weixin.qq.com/cgi-bin/groups/update?access_token=ACCESS_TOKEN";
//移动用户分组
private static String move_userGroup_url = "https://api.weixin.qq.com/cgi-bin/groups/members/update?access_token=ACCESS_TOKEN";
//批量移动用户分组
private static String move_userGroups_url = "https://api.weixin.qq.com/cgi-bin/groups/members/batchupdate?access_token=ACCESS_TOKEN";
//删除分组
private static String delete_groups_url = "https://api.weixin.qq.com/cgi-bin/groups/delete?access_token=ACCESS_TOKEN";
public Groups()
{
accessToken = WechatCodeUtil.getToken();
// accessToken = new CreatAccessToken().getAccessToken();
}
/**
*
* @Title: createGroup
* @Description: TODO(创建分组)
* @param @param groupName
* @param @return 设定文件
* @return Group 返回类型
*/
public Group createGroup(String groupName)
{
Group group = new Group();
String requestUrl = create_group_url.replace("ACCESS_TOKEN", accessToken);
// 将菜单对象转换成json字符串
JSONObject jsonGroup = new JSONObject();
jsonGroup.put("group", new JSONObject().put("name", groupName));
// 调用接口创建菜单
JSONObject jsonObject = HttpRequest.httpRequest(requestUrl, "POST", jsonGroup.toString());
//解析数据
if (null != jsonObject) {
try {
if(null != jsonObject.get("group"))
{
JSONObject json = (JSONObject) jsonObject.get("group");
group.setId(json.getInt("id"));
group.setGroupName(json.getString("name"));
group.setCount(0);
}
} catch (Exception e) {
log.error("创建分组数据时出错:", e.getMessage());
return null;
}
}
return group;
}
/**
*
* @Title: findAllGroup
* @Description: TODO(查询所有分组)
* @param @return 设定文件
* @return List<Group> 返回类型
*/
public HashMap<String,Group> findAllGroup()
{
HashMap<String,Group> groupMap = new HashMap<String,Group>();
String requestUrl = getall_group_url.replace("ACCESS_TOKEN", accessToken);
// 调用接口创建菜单
JSONObject jsonObject = HttpRequest.httpRequest(requestUrl, "GET", null);
if(null != jsonObject)
{
try {
JSONArray josnArray = jsonObject.getJSONArray("groups");
for(int i = 0;i<josnArray.size();i++)
{
JSONObject json = josnArray.getJSONObject(i);
Group group = new Group();
group.setId(json.getInt("id"));
group.setGroupName(json.getString("name"));
group.setCount(json.getInt("count"));
groupMap.put(json.getString("name"), group);
}
} catch (Exception e) {
log.error("解析所有分组数据时出错:", e.getMessage());
return null;
}
}
return groupMap;
}
/**
*
* @Title: showGroupIdByOpenid
* @Description: TODO(根据用户uid查询用户所在分组)
* @param @param openid
* @param @return 设定文件
* @return int 返回类型
*/
public int showGroupIdByOpenid(String openid)
{
int groupId = -1;
String requestUrl = getid_url.replace("ACCESS_TOKEN", accessToken);
// 将菜单对象转换成json字符串
JSONObject dataJson = new JSONObject();
dataJson.put("openid", openid);
// 调用接口创建菜单
JSONObject jsonObject = HttpRequest.httpRequest(requestUrl, "POST", dataJson.toString());
if(null != jsonObject)
{
try {
groupId = jsonObject.getInt("groupid");
} catch (Exception e) {
log.error("根据用户openid查询分组时出错:", e.getMessage());
return -1;
}
}
return groupId;
}
/**
*
* @Title: updateGroupName
* @Description: TODO(修改分组名称)
* @param @param groupId
* @param @param groupName
* @param @return 设定文件
* @return int 返回类型
*/
public int updateGroupName(int groupId,String groupName)
{
int errcode = 0;
String requestUrl = updateGroupName_url.replace("ACCESS_TOKEN", accessToken);
JSONObject dataJson = new JSONObject();
JSONObject groupJson = new JSONObject();
groupJson.put("id", groupId);
groupJson.put("name", groupName);
dataJson.put("group", groupJson);
JSONObject jsonObject = HttpRequest.httpRequest(requestUrl, "POST", dataJson.toString());
if(null != jsonObject)
{
errcode = jsonObject.getInt("errcode");
}
return errcode;
}
/**
*
* @Title: updateGroupByOpenid
* @Description: TODO(根据用户openid移动用户分组)
* @param @param openid
* @param @param to_groupid
* @param @return 设定文件
* @return int 返回类型
*/
public int updateGroupByOpenid(String openid, String to_groupid)
{
int errcode = 0;
String requestUrl = move_userGroup_url.replace("ACCESS_TOKEN", accessToken);
JSONObject dataJson = new JSONObject();
dataJson.put("openid", openid);
dataJson.put("to_groupid", to_groupid);
JSONObject jsonObject = HttpRequest.httpRequest(requestUrl, "POST", dataJson.toString());
if(null != jsonObject)
{
errcode = jsonObject.getInt("errcode");
}
return errcode;
}
/**
* @deprecated:批量移动用户分组
* @param User
* 微信用户信息
* @return int
* **/
public int moveUserGroup(List<String> openids,String to_groupid)
{
int result = 0;
String requestUrl = move_userGroups_url.replace("ACCESS_TOKEN", accessToken);
// 将菜单对象转换成json字符串
JSONObject jsonUser = new JSONObject();
jsonUser.put("openid_list", openids);
jsonUser.put("to_groupid", to_groupid);
System.out.println(jsonUser);
// 调用接口创建菜单
JSONObject jsonObject = HttpRequest.httpRequest(requestUrl, "POST", jsonUser.toString());
//解析数据
if (null != jsonObject)
{
if (0 != jsonObject.getInt("errcode"))
{
result = jsonObject.getInt("errcode");
}
}
return result;
}
/**
*
* @Title: deleteGroup
* @Description: TODO(删除用户分组)
* @param @param groupId
* @param @return 设定文件
* @return int 返回类型
*/
public int deleteGroup(String groupId)
{
int result = 0;
String requestUrl = delete_groups_url.replace("ACCESS_TOKEN", accessToken);
// 将菜单对象转换成json字符串
JSONObject dataJSON = new JSONObject();
JSONObject groupJSON = new JSONObject();
groupJSON.put("id", groupId);
dataJSON.put("group", groupJSON);
// 调用接口创建菜单
JSONObject jsonObject = HttpRequest.httpRequest(requestUrl, "POST", dataJSON.toString());
//解析数据
if (null != jsonObject)
{
result = jsonObject.getInt("errcode");
}
return result;
}
}
package com.zhiwei.weixin;
import net.sf.json.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.zhiwei.bjfzx.util.WechatCodeUtil;
import com.zhiwei.weixin.accesstoken.CreatAccessToken;
import com.zhiwei.weixin.http.HttpRequest;
import com.zhiwei.weixin.pojo.AccessToken;
import com.zhiwei.weixin.pojo.Template;
/**
* @Package com.zhiwei.weixin.industry
* @ClassName: CreateIndustry
* @Description: TODO(模版消息管理)
* @author 志伟
* @date 2015-3-27 下午7:10:39
*/
public class Templates {
private static Logger logger = LoggerFactory.getLogger(Templates.class);
//获取模版消息template_id
private static String add_template_url = "https://api.weixin.qq.com/cgi-bin/template/api_add_template?access_token=ACCESS_TOKEN";
//发送模版消息
private static String send_url = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=ACCESS_TOKEN";
// 调用接口获取access_token
private static String accessToken = null;
public Templates()
{
// accessToken = new CreatAccessToken().getAccessToken();
accessToken = WechatCodeUtil.getToken();//从微信中间件获取token
}
/**
*
* @Title: gettemplateId
* @Description: TODO(根据消息模版的短id获取长id)
* @param @param template_id_short
* @param @return 设定文件
* @return String 返回类型
*/
public String gettemplateId(String template_id_short)
{
String template_id = null;
String url = add_template_url.replace("ACCESS_TOKEN", accessToken);
JSONObject json = new JSONObject();
json.put("template_id_short", template_id_short);
try {
JSONObject jsonObject = HttpRequest.httpRequest(url, "POST", json.toString());
System.out.println(jsonObject);
if("ok".equals(jsonObject.getString("errmsg")))
{
template_id = jsonObject.getString("template_id");
}else
{
logger.info("消息模版已到上限");
}
} catch (Exception e) {
e.printStackTrace();
logger.error("从接口访问数据出错",e.getMessage());
return template_id;
}
return template_id;
}
/**
*
* @Title: okNotice
* @Description: TODO(发送通过模版通知)
* @param @param openid
* @param @param template_id
* @param @return 设定文件
* @return int 返回类型
*/
public int send(Template template)
{
int msgid = 0;
String url = send_url.replace("ACCESS_TOKEN", accessToken);
try {
String templateJson = JSONObject.fromObject(template).toString();
System.out.println(templateJson);
JSONObject jsonObject = HttpRequest.httpRequest(url, "POST", templateJson);
if(null != jsonObject)
{
if("ok".equals(jsonObject.getString("errmsg")))
{
msgid = jsonObject.getInt("msgid");
}
}
} catch (Exception e) {
e.printStackTrace();
logger.error("发送创建模版消息请求时出现错误", e.getMessage());
msgid = 0;
}
return msgid;
}
public static void main(String[] args)throws Exception
{
Templates templates = new Templates();
Template template = new Template();
templates.send(template);
}
}
package com.zhiwei.weixin;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import net.sf.json.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.zhiwei.weixin.accesstoken.CreatAccessToken;
import com.zhiwei.weixin.http.HttpRequest;
import com.zhiwei.weixin.pojo.User;
/**
* @Package com.zhiwei.weixin.util
* @ClassName: UserManager
* @Description: TODO(用户管理接口)
* @author 志伟
* @date 2015-3-10 下午6:20:08
*/
public class Users {
// 调用接口获取access_token
private static String token ;
//记录日志
private static Logger log = LoggerFactory.getLogger(Users.class);
//根据微信id查询微信用户信息
private static String show_userInfo_url = "https://api.weixin.qq.com/cgi-bin/user/info?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN";
//获取标签下粉丝列表
private static String showOpenids_bygroup_url = "https://api.weixin.qq.com/cgi-bin/user/tag/get?access_token=ACCESS_TOKEN";
//查看微信公号的所有用户(前10000名)
private static String show_openid_url = "https://api.weixin.qq.com/cgi-bin/user/get?access_token=ACCESS_TOKEN";
private static String show_openidNext_url = "https://api.weixin.qq.com/cgi-bin/user/get?access_token=ACCESS_TOKEN&next_openid=NEXT_OPENID";
public Users()
{
token = new CreatAccessToken().getAccessToken();
}
/**
*
* @Title: showUserByWxId
* @Description: TODO(查看用户信息)
* @param @param openid
* @param @return 设定文件
* @return User 返回类型
*/
public User showUserByWxId(String openid)
{
User user = new User();
String requestUrl = show_userInfo_url.replace("ACCESS_TOKEN", token).replace("OPENID", openid);
JSONObject jsonObject = HttpRequest.httpRequest(requestUrl, "GET", null);
// 如果请求成功
if (null != jsonObject)
{
String nickname = null;
if(null != jsonObject.get("nickname"))
{
nickname = jsonObject.getString("nickname");
}
user.setGroupid(null);
user.setOpenid(openid);
user.setNickname(nickname);
user.setHeadimgurl(jsonObject.getString("headimgurl"));
user.setSex(jsonObject.getString("sex"));
user.setCountry(jsonObject.getString("country"));
user.setProvince(jsonObject.getString("province"));
user.setCity(jsonObject.getString("city"));
user.setSubscribe_time(jsonObject.getString("subscribe_time"));
}
return user;
}
/**
*
* @Title: getUserList
* @Description: TODO(拉取公告所有粉丝用户openid)
* @param @return 设定文件
* @return HashMap 返回类型
*/
@SuppressWarnings({ "unchecked"})
public List<String> getUserList()
{
boolean f = true;
String next_openid = "";
List<String> list = new ArrayList<String>();
int i = 0;
while(f)
{
String requestUrl = show_openid_url.replace("ACCESS_TOKEN", token);
String requestUrlNext = show_openidNext_url.replace("ACCESS_TOKEN", token).replace("NEXT_OPENID", next_openid);
JSONObject jsonObject = HttpRequest.httpRequest(requestUrl, "GET", null);
if(null != jsonObject)
{
try {
int page = (int)Math.ceil((jsonObject.getInt("total")/10000.00));
if(i==page)
{
break;
}else
{
jsonObject = HttpRequest.httpRequest(requestUrlNext, "GET", null);
}
List<String> openIdList = (List<String>)jsonObject.getJSONObject("data").get("openid");
list.addAll(openIdList);
next_openid = jsonObject.getString("next_openid");
i++;
} catch (Exception e) {
e.printStackTrace();
log.error("拉取微信公众号粉丝用户信息时出现错误:"+jsonObject,e.getMessage());
return list;
}
}
}
return list;
}
/**
*
* @Title: getUserListByGroupId
* @Description: TODO(获取此分组下粉丝用户openid)
* @param @return 设定文件
* @return HashMap 返回类型
*/
public List<String> getUserListByGroupId(int groupId)
{
boolean f = true;
String next_openid = "";
List<String> list = new ArrayList<String>();
while(f)
{
String requestUrl = showOpenids_bygroup_url.replace("ACCESS_TOKEN", token);
JSONObject postData = new JSONObject();
postData.put("tagid", groupId);
postData.put("next_openid", next_openid);
JSONObject jsonObject = HttpRequest.httpRequest(requestUrl, "GET", postData.toString());
if(null != jsonObject)
{
try {
String count = jsonObject.getString("count");
if(count.equals("0"))
{
break;
}
List<String> openIdList = (List<String>)jsonObject.getJSONObject("data").get("openid");
list.addAll(openIdList);
next_openid = jsonObject.getString("next_openid");
} catch (Exception e) {
e.printStackTrace();
log.error("拉取微信公众号粉丝用户信息时出现错误:"+jsonObject,e.getMessage());
return list;
}
}
}
return list;
}
}
/**
* @Title: Groups.java
* @Package com.zhiwei.weixin
* @Description: TODO(用一句话描述该文件做什么)
* @author hero
* @date 2016年1月27日 下午1:58:33
* @version V1.0
*/
package com.zhiwei.weixin;
import java.util.HashMap;
import java.util.List;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.zhiwei.weixin.accesstoken.CreatAccessToken;
import com.zhiwei.weixin.http.HttpRequest;
import com.zhiwei.weixin.pojo.Group;
import com.zhiweidata.bjfzxWebapp.util.WechatCodeUtil;
/**
* @ClassName: Groups
* @Description: TODO(分组管理接口)
* @author hero
* @date 2016年1月27日 下午1:58:33
*/
public class Groups {
// 调用接口获取access_token
private static String accessToken ;
//记录日志
private static Logger log = LoggerFactory.getLogger(Groups.class);
//创建分组链接
private static String create_group_url = "https://api.weixin.qq.com/cgi-bin/groups/create?access_token=ACCESS_TOKEN";
//查询所有分组
private static String getall_group_url = "https://api.weixin.qq.com/cgi-bin/groups/get?access_token=ACCESS_TOKEN";
//查询用户所在分组
private static String getid_url = "https://api.weixin.qq.com/cgi-bin/groups/getid?access_token=ACCESS_TOKEN";
//修改分组名称
private static String updateGroupName_url = "https://api.weixin.qq.com/cgi-bin/groups/update?access_token=ACCESS_TOKEN";
//移动用户分组
private static String move_userGroup_url = "https://api.weixin.qq.com/cgi-bin/groups/members/update?access_token=ACCESS_TOKEN";
//批量移动用户分组
private static String move_userGroups_url = "https://api.weixin.qq.com/cgi-bin/groups/members/batchupdate?access_token=ACCESS_TOKEN";
//删除分组
private static String delete_groups_url = "https://api.weixin.qq.com/cgi-bin/groups/delete?access_token=ACCESS_TOKEN";
public Groups()
{
accessToken = WechatCodeUtil.getToken();
// accessToken = new CreatAccessToken().getAccessToken();
}
/**
*
* @Title: createGroup
* @Description: TODO(创建分组)
* @param @param groupName
* @param @return 设定文件
* @return Group 返回类型
*/
public Group createGroup(String groupName)
{
Group group = new Group();
String requestUrl = create_group_url.replace("ACCESS_TOKEN", accessToken);
// 将菜单对象转换成json字符串
JSONObject jsonGroup = new JSONObject();
jsonGroup.put("group", new JSONObject().put("name", groupName));
// 调用接口创建菜单
JSONObject jsonObject = HttpRequest.httpRequest(requestUrl, "POST", jsonGroup.toString());
//解析数据
if (null != jsonObject) {
try {
if(null != jsonObject.get("group"))
{
JSONObject json = (JSONObject) jsonObject.get("group");
group.setId(json.getInt("id"));
group.setGroupName(json.getString("name"));
group.setCount(0);
}
} catch (Exception e) {
log.error("创建分组数据时出错:", e.getMessage());
return null;
}
}
return group;
}
/**
*
* @Title: findAllGroup
* @Description: TODO(查询所有分组)
* @param @return 设定文件
* @return List<Group> 返回类型
*/
public HashMap<String,Group> findAllGroup()
{
HashMap<String,Group> groupMap = new HashMap<String,Group>();
String requestUrl = getall_group_url.replace("ACCESS_TOKEN", accessToken);
// 调用接口创建菜单
JSONObject jsonObject = HttpRequest.httpRequest(requestUrl, "GET", null);
if(null != jsonObject)
{
try {
JSONArray josnArray = jsonObject.getJSONArray("groups");
for(int i = 0;i<josnArray.size();i++)
{
JSONObject json = josnArray.getJSONObject(i);
Group group = new Group();
group.setId(json.getInt("id"));
group.setGroupName(json.getString("name"));
group.setCount(json.getInt("count"));
groupMap.put(json.getString("name"), group);
}
} catch (Exception e) {
log.error("解析所有分组数据时出错:", e.getMessage());
return null;
}
}
return groupMap;
}
/**
*
* @Title: showGroupIdByOpenid
* @Description: TODO(根据用户uid查询用户所在分组)
* @param @param openid
* @param @return 设定文件
* @return int 返回类型
*/
public int showGroupIdByOpenid(String openid)
{
int groupId = -1;
String requestUrl = getid_url.replace("ACCESS_TOKEN", accessToken);
// 将菜单对象转换成json字符串
JSONObject dataJson = new JSONObject();
dataJson.put("openid", openid);
// 调用接口创建菜单
JSONObject jsonObject = HttpRequest.httpRequest(requestUrl, "POST", dataJson.toString());
if(null != jsonObject)
{
try {
groupId = jsonObject.getInt("groupid");
} catch (Exception e) {
log.error("根据用户openid查询分组时出错:", e.getMessage());
return -1;
}
}
return groupId;
}
/**
*
* @Title: updateGroupName
* @Description: TODO(修改分组名称)
* @param @param groupId
* @param @param groupName
* @param @return 设定文件
* @return int 返回类型
*/
public int updateGroupName(int groupId,String groupName)
{
int errcode = 0;
String requestUrl = updateGroupName_url.replace("ACCESS_TOKEN", accessToken);
JSONObject dataJson = new JSONObject();
JSONObject groupJson = new JSONObject();
groupJson.put("id", groupId);
groupJson.put("name", groupName);
dataJson.put("group", groupJson);
JSONObject jsonObject = HttpRequest.httpRequest(requestUrl, "POST", dataJson.toString());
if(null != jsonObject)
{
errcode = jsonObject.getInt("errcode");
}
return errcode;
}
/**
*
* @Title: updateGroupByOpenid
* @Description: TODO(根据用户openid移动用户分组)
* @param @param openid
* @param @param to_groupid
* @param @return 设定文件
* @return int 返回类型
*/
public int updateGroupByOpenid(String openid, String to_groupid)
{
int errcode = 0;
String requestUrl = move_userGroup_url.replace("ACCESS_TOKEN", accessToken);
JSONObject dataJson = new JSONObject();
dataJson.put("openid", openid);
dataJson.put("to_groupid", to_groupid);
JSONObject jsonObject = HttpRequest.httpRequest(requestUrl, "POST", dataJson.toString());
if(null != jsonObject)
{
errcode = jsonObject.getInt("errcode");
}
return errcode;
}
/**
* @deprecated:批量移动用户分组
* @param User
* 微信用户信息
* @return int
* **/
public int moveUserGroup(List<String> openids,String to_groupid)
{
int result = 0;
String requestUrl = move_userGroups_url.replace("ACCESS_TOKEN", accessToken);
// 将菜单对象转换成json字符串
JSONObject jsonUser = new JSONObject();
jsonUser.put("openid_list", openids);
jsonUser.put("to_groupid", to_groupid);
System.out.println(jsonUser);
// 调用接口创建菜单
JSONObject jsonObject = HttpRequest.httpRequest(requestUrl, "POST", jsonUser.toString());
//解析数据
if (null != jsonObject)
{
if (0 != jsonObject.getInt("errcode"))
{
result = jsonObject.getInt("errcode");
}
}
return result;
}
/**
*
* @Title: deleteGroup
* @Description: TODO(删除用户分组)
* @param @param groupId
* @param @return 设定文件
* @return int 返回类型
*/
public int deleteGroup(String groupId)
{
int result = 0;
String requestUrl = delete_groups_url.replace("ACCESS_TOKEN", accessToken);
// 将菜单对象转换成json字符串
JSONObject dataJSON = new JSONObject();
JSONObject groupJSON = new JSONObject();
groupJSON.put("id", groupId);
dataJSON.put("group", groupJSON);
// 调用接口创建菜单
JSONObject jsonObject = HttpRequest.httpRequest(requestUrl, "POST", dataJSON.toString());
//解析数据
if (null != jsonObject)
{
result = jsonObject.getInt("errcode");
}
return result;
}
}
package com.zhiwei.weixin;
import net.sf.json.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.zhiwei.weixin.accesstoken.CreatAccessToken;
import com.zhiwei.weixin.http.HttpRequest;
import com.zhiwei.weixin.pojo.Template;
import com.zhiweidata.bjfzxWebapp.util.WechatCodeUtil;
/**
* @Package com.zhiwei.weixin.industry
* @ClassName: CreateIndustry
* @Description: TODO(模版消息管理)
* @author 志伟
* @date 2015-3-27 下午7:10:39
*/
public class Templates {
private static Logger logger = LoggerFactory.getLogger(Templates.class);
//获取模版消息template_id
private static String add_template_url = "https://api.weixin.qq.com/cgi-bin/template/api_add_template?access_token=ACCESS_TOKEN";
//发送模版消息
private static String send_url = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=ACCESS_TOKEN";
// 调用接口获取access_token
private static String accessToken = null;
public Templates()
{
// accessToken = new CreatAccessToken().getAccessToken();
accessToken = WechatCodeUtil.getToken();//从微信中间件获取token
}
/**
*
* @Title: gettemplateId
* @Description: TODO(根据消息模版的短id获取长id)
* @param @param template_id_short
* @param @return 设定文件
* @return String 返回类型
*/
public String gettemplateId(String template_id_short)
{
String template_id = null;
String url = add_template_url.replace("ACCESS_TOKEN", accessToken);
JSONObject json = new JSONObject();
json.put("template_id_short", template_id_short);
try {
JSONObject jsonObject = HttpRequest.httpRequest(url, "POST", json.toString());
System.out.println(jsonObject);
if("ok".equals(jsonObject.getString("errmsg")))
{
template_id = jsonObject.getString("template_id");
}else
{
logger.info("消息模版已到上限");
}
} catch (Exception e) {
e.printStackTrace();
logger.error("从接口访问数据出错",e.getMessage());
return template_id;
}
return template_id;
}
/**
*
* @Title: okNotice
* @Description: TODO(发送通过模版通知)
* @param @param openid
* @param @param template_id
* @param @return 设定文件
* @return int 返回类型
*/
public int send(Template template)
{
int msgid = 0;
String url = send_url.replace("ACCESS_TOKEN", accessToken);
try {
String templateJson = JSONObject.fromObject(template).toString();
System.out.println(templateJson);
JSONObject jsonObject = HttpRequest.httpRequest(url, "POST", templateJson);
if(null != jsonObject)
{
if("ok".equals(jsonObject.getString("errmsg")))
{
msgid = jsonObject.getInt("msgid");
}
}
} catch (Exception e) {
e.printStackTrace();
logger.error("发送创建模版消息请求时出现错误", e.getMessage());
msgid = 0;
}
return msgid;
}
public static void main(String[] args)throws Exception
{
Templates templates = new Templates();
Template template = new Template();
templates.send(template);
}
}
package com.zhiwei.weixin;
import java.util.ArrayList;
import java.util.List;
import net.sf.json.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.zhiwei.weixin.http.HttpRequest;
import com.zhiwei.weixin.pojo.User;
import com.zhiweidata.bjfzxWebapp.util.WechatCodeUtil;
/**
* @Package com.zhiwei.weixin.util
* @ClassName: UserManager
* @Description: TODO(用户管理接口)
* @author 志伟
* @date 2015-3-10 下午6:20:08
*/
public class Users {
// 调用接口获取access_token
private static String token ;
//记录日志
private static Logger log = LoggerFactory.getLogger(Users.class);
//根据微信id查询微信用户信息
private static String show_userInfo_url = "https://api.weixin.qq.com/cgi-bin/user/info?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN";
//获取标签下粉丝列表
private static String showOpenids_bygroup_url = "https://api.weixin.qq.com/cgi-bin/user/tag/get?access_token=ACCESS_TOKEN";
//查看微信公号的所有用户(前10000名)
private static String show_openid_url = "https://api.weixin.qq.com/cgi-bin/user/get?access_token=ACCESS_TOKEN";
private static String show_openidNext_url = "https://api.weixin.qq.com/cgi-bin/user/get?access_token=ACCESS_TOKEN&next_openid=NEXT_OPENID";
public Users()
{
token = WechatCodeUtil.getToken();
}
/**
*
* @Title: showUserByWxId
* @Description: TODO(查看用户信息)
* @param @param openid
* @param @return 设定文件
* @return User 返回类型
*/
public User showUserByWxId(String openid)
{
User user = new User();
String requestUrl = show_userInfo_url.replace("ACCESS_TOKEN", token).replace("OPENID", openid);
JSONObject jsonObject = HttpRequest.httpRequest(requestUrl, "GET", null);
// 如果请求成功
if (null != jsonObject)
{
String nickname = null;
if(null != jsonObject.get("nickname"))
{
nickname = jsonObject.getString("nickname");
}
user.setGroupid(null);
user.setOpenid(openid);
user.setNickname(nickname);
user.setHeadimgurl(jsonObject.getString("headimgurl"));
user.setSex(jsonObject.getString("sex"));
user.setCountry(jsonObject.getString("country"));
user.setProvince(jsonObject.getString("province"));
user.setCity(jsonObject.getString("city"));
user.setSubscribe_time(jsonObject.getString("subscribe_time"));
}
return user;
}
/**
*
* @Title: getUserList
* @Description: TODO(拉取公告所有粉丝用户openid)
* @param @return 设定文件
* @return HashMap 返回类型
*/
@SuppressWarnings({ "unchecked"})
public List<String> getUserList()
{
boolean f = true;
String next_openid = "";
List<String> list = new ArrayList<String>();
int i = 0;
while(f)
{
String requestUrl = show_openid_url.replace("ACCESS_TOKEN", token);
String requestUrlNext = show_openidNext_url.replace("ACCESS_TOKEN", token).replace("NEXT_OPENID", next_openid);
JSONObject jsonObject = HttpRequest.httpRequest(requestUrl, "GET", null);
if(null != jsonObject)
{
try {
int page = (int)Math.ceil((jsonObject.getInt("total")/10000.00));
if(i==page)
{
break;
}else
{
jsonObject = HttpRequest.httpRequest(requestUrlNext, "GET", null);
}
List<String> openIdList = (List<String>)jsonObject.getJSONObject("data").get("openid");
list.addAll(openIdList);
next_openid = jsonObject.getString("next_openid");
i++;
} catch (Exception e) {
e.printStackTrace();
log.error("拉取微信公众号粉丝用户信息时出现错误:"+jsonObject,e.getMessage());
return list;
}
}
}
return list;
}
/**
*
* @Title: getUserListByGroupId
* @Description: TODO(获取此分组下粉丝用户openid)
* @param @return 设定文件
* @return HashMap 返回类型
*/
public List<String> getUserListByGroupId(int groupId)
{
boolean f = true;
String next_openid = "";
List<String> list = new ArrayList<String>();
while(f)
{
String requestUrl = showOpenids_bygroup_url.replace("ACCESS_TOKEN", token);
JSONObject postData = new JSONObject();
postData.put("tagid", groupId);
postData.put("next_openid", next_openid);
JSONObject jsonObject = HttpRequest.httpRequest(requestUrl, "GET", postData.toString());
if(null != jsonObject)
{
try {
String count = jsonObject.getString("count");
if(count.equals("0"))
{
break;
}
List<String> openIdList = (List<String>)jsonObject.getJSONObject("data").get("openid");
list.addAll(openIdList);
next_openid = jsonObject.getString("next_openid");
} catch (Exception e) {
e.printStackTrace();
log.error("拉取微信公众号粉丝用户信息时出现错误:"+jsonObject,e.getMessage());
return list;
}
}
}
return list;
}
}
10
dir
16191
svn://192.168.0.30/project/bjfzxWebapp/wechat_Fuwu/com/zhiwei/weixin/accesstoken
svn://192.168.0.30
2016-12-12T09:45:38.635001Z
9841
test3
svn:special svn:externals svn:needs-lock
21a4f42a-c9d9-498b-9054-f75f9d41c267
CreatAccessToken.java
file
2018-02-01T05:50:18.890000Z
1430c8b47ad40adb0601fca46a1b9a9a
2016-12-12T09:45:38.635001Z
9841
test3
1236
CreateTicketToken.java
file
2018-02-01T05:50:18.910000Z
202b2ca1b733642af021e8c615c793e6
2016-12-06T09:22:15.298093Z
9711
test3
2753
package-info.java
file
2018-02-01T05:50:18.900000Z
bcf326c177a3c93b988cafa391ae1eae
2016-12-06T09:22:15.298093Z
9711
test3
251
package com.zhiwei.weixin.accesstoken;
import com.zhiwei.conf.Conf;
import com.zhiwei.weixin.pojo.AccessToken;
import com.zhiwei.weixin.util.WeixinUtil;
/**
* @Package com.zhiwei.weixin.accesstoken
* @ClassName: CreatAccessToken
* @Description: TODO(创建微信公号token)
* @author 志伟
* @date 2015-3-28 下午9:20:33
*/
public class CreatAccessToken {
// 第三方用户唯一凭证
// private final static String appId = Conf.appId;
private static String appId;
// 第三方用户唯一凭证密钥
// private final static String appSecret = Conf.appSecret;
private static String appSecret;
// 调用接口获取access_token
private static AccessToken at;
public CreatAccessToken() {
appId = Conf.appId;
appSecret = Conf.appSecret;
if(null==at)
{
at = WeixinUtil.getAccessToken(appId, appSecret);
}else
{
long b =System.currentTimeMillis() - at.getExpiresIn();
if((b/1000)>=3000)//3600
{
at = WeixinUtil.getAccessToken(appId, appSecret);
}
}
}
public String getAccessToken()
{
return at.getToken();
}
public void refreshToken()
{
at = WeixinUtil.getAccessToken(appId, appSecret);
}
}
package com.zhiwei.weixin.accesstoken;
import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Formatter;
import java.util.HashMap;
import java.util.UUID;
import com.zhiwei.conf.Conf;
import com.zhiwei.weixin.pojo.AccessToken;
import com.zhiwei.weixin.pojo.TicketToken;
import com.zhiwei.weixin.util.WeixinUtil;
public class CreateTicketToken {
// 调用接口获取access_token
private static String token;
private static TicketToken ticketToken ;
public CreateTicketToken()
{
token = new CreatAccessToken().getAccessToken();
if(null == ticketToken)
{
ticketToken = WeixinUtil.getJSTicket(token);
}else
{
long b =System.currentTimeMillis() - ticketToken.getExpiresIn();
if((b/1000)>=3600)
{
ticketToken = WeixinUtil.getJSTicket(token);
}
}
}
@SuppressWarnings("rawtypes")
public static HashMap sign(String url) {
if(ticketToken.getExpiresIn()<=60)
{
ticketToken = WeixinUtil.getJSTicket(token);
}
HashMap ret = new HashMap();
String nonce_str = create_nonce_str();
String timestamp = create_timestamp();
String string1;
String signature = "";
String jsapi_ticket = ticketToken.getJsticket();
//注意这里参数名必须全部小写,且必须有序
string1 = "jsapi_ticket=" + jsapi_ticket +
"&noncestr=" + nonce_str +
"&timestamp=" + timestamp +
"&url=" + url;
System.out.println(string1);
try
{
MessageDigest crypt = MessageDigest.getInstance("SHA-1");
crypt.reset();
crypt.update(string1.getBytes("UTF-8"));
signature = byteToHex(crypt.digest());
}
catch (NoSuchAlgorithmException e)
{
e.printStackTrace();
}
catch (UnsupportedEncodingException e)
{
e.printStackTrace();
}
ret.put("appId", Conf.appId);
ret.put("nonceStr", nonce_str);
ret.put("timestamp", timestamp);
ret.put("signature", signature);
return ret;
}
private static String byteToHex(final byte[] hash) {
Formatter formatter = new Formatter();
for (byte b : hash)
{
formatter.format("%02x", b);
}
String result = formatter.toString();
formatter.close();
return result;
}
private static String create_nonce_str() {
return UUID.randomUUID().toString();
}
private static String create_timestamp() {
return Long.toString(System.currentTimeMillis() / 1000);
}
}
/**
* @Package com.zhiwei.weixin.accesstoken
* @ClassName: package-info
* @Description: TODO(这里用一句话描述这个类的作用)
* @author 志伟
* @date 2015-3-28 下午9:20:06
*/
package com.zhiwei.weixin.accesstoken;
\ No newline at end of file
package com.zhiwei.weixin.accesstoken;
import com.zhiwei.conf.Conf;
import com.zhiwei.weixin.pojo.AccessToken;
import com.zhiwei.weixin.util.WeixinUtil;
/**
* @Package com.zhiwei.weixin.accesstoken
* @ClassName: CreatAccessToken
* @Description: TODO(创建微信公号token)
* @author 志伟
* @date 2015-3-28 下午9:20:33
*/
public class CreatAccessToken {
// 第三方用户唯一凭证
// private final static String appId = Conf.appId;
private static String appId;
// 第三方用户唯一凭证密钥
// private final static String appSecret = Conf.appSecret;
private static String appSecret;
// 调用接口获取access_token
private static AccessToken at;
public CreatAccessToken() {
appId = Conf.appId;
appSecret = Conf.appSecret;
if(null==at)
{
at = WeixinUtil.getAccessToken(appId, appSecret);
}else
{
long b =System.currentTimeMillis() - at.getExpiresIn();
if((b/1000)>=3000)//3600
{
at = WeixinUtil.getAccessToken(appId, appSecret);
}
}
}
public String getAccessToken()
{
return at.getToken();
}
public void refreshToken()
{
at = WeixinUtil.getAccessToken(appId, appSecret);
}
}
package com.zhiwei.weixin.accesstoken;
import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Formatter;
import java.util.HashMap;
import java.util.UUID;
import com.zhiwei.conf.Conf;
import com.zhiwei.weixin.pojo.AccessToken;
import com.zhiwei.weixin.pojo.TicketToken;
import com.zhiwei.weixin.util.WeixinUtil;
public class CreateTicketToken {
// 调用接口获取access_token
private static String token;
private static TicketToken ticketToken ;
public CreateTicketToken()
{
token = new CreatAccessToken().getAccessToken();
if(null == ticketToken)
{
ticketToken = WeixinUtil.getJSTicket(token);
}else
{
long b =System.currentTimeMillis() - ticketToken.getExpiresIn();
if((b/1000)>=3600)
{
ticketToken = WeixinUtil.getJSTicket(token);
}
}
}
@SuppressWarnings("rawtypes")
public static HashMap sign(String url) {
if(ticketToken.getExpiresIn()<=60)
{
ticketToken = WeixinUtil.getJSTicket(token);
}
HashMap ret = new HashMap();
String nonce_str = create_nonce_str();
String timestamp = create_timestamp();
String string1;
String signature = "";
String jsapi_ticket = ticketToken.getJsticket();
//注意这里参数名必须全部小写,且必须有序
string1 = "jsapi_ticket=" + jsapi_ticket +
"&noncestr=" + nonce_str +
"&timestamp=" + timestamp +
"&url=" + url;
System.out.println(string1);
try
{
MessageDigest crypt = MessageDigest.getInstance("SHA-1");
crypt.reset();
crypt.update(string1.getBytes("UTF-8"));
signature = byteToHex(crypt.digest());
}
catch (NoSuchAlgorithmException e)
{
e.printStackTrace();
}
catch (UnsupportedEncodingException e)
{
e.printStackTrace();
}
ret.put("appId", Conf.appId);
ret.put("nonceStr", nonce_str);
ret.put("timestamp", timestamp);
ret.put("signature", signature);
return ret;
}
private static String byteToHex(final byte[] hash) {
Formatter formatter = new Formatter();
for (byte b : hash)
{
formatter.format("%02x", b);
}
String result = formatter.toString();
formatter.close();
return result;
}
private static String create_nonce_str() {
return UUID.randomUUID().toString();
}
private static String create_timestamp() {
return Long.toString(System.currentTimeMillis() / 1000);
}
}
/**
* @Package com.zhiwei.weixin.accesstoken
* @ClassName: package-info
* @Description: TODO(这里用一句话描述这个类的作用)
* @author 志伟
* @date 2015-3-28 下午9:20:06
*/
package com.zhiwei.weixin.accesstoken;
\ No newline at end of file
10
dir
16191
svn://192.168.0.30/project/bjfzxWebapp/wechat_Fuwu/com/zhiwei/weixin/card
svn://192.168.0.30
2016-12-06T09:22:15.298093Z
9711
test3
svn:special svn:externals svn:needs-lock
21a4f42a-c9d9-498b-9054-f75f9d41c267
CheckCard.java
file
2018-02-01T05:50:19.220000Z
62f0067d2a1cee55c971b815f471d2f7
2016-12-06T09:22:15.298093Z
9711
test3
1558
CreateCard.java
file
2018-02-01T05:50:19.914000Z
ba734e6fa16c19c2fe1efa9bfa316b6d
2016-12-06T09:22:15.298093Z
9711
test3
1630
GetBatch.java
file
2018-02-01T05:50:19.149000Z
914d9b776c9905ae6a2eccf2ac8a3483
2016-12-06T09:22:15.298093Z
9711
test3
2132
GetCardList.java
file
2018-02-01T05:50:19.205000Z
29d304284f7fe5cd22d382579c6f38b8
2016-12-06T09:22:15.298093Z
9711
test3
1961
HeXiaoCard.java
file
2018-02-01T05:50:19.230000Z
4dfebcb6a34cc2ec775fc9fbb0b1703e
2016-12-06T09:22:15.298093Z
9711
test3
1628
Main.java
file
2018-02-01T05:50:19.194000Z
43c5a05aa027df24235a097cf85653c8
2016-12-06T09:22:15.298093Z
9711
test3
5119
SendCard.java
file
2018-02-01T05:50:19.162000Z
779e8ff90c48f9d7d32f17388082ca0a
2016-12-06T09:22:15.298093Z
9711
test3
2296
json
dir
pojo
dir
package com.zhiwei.weixin.card;
import net.sf.json.JSONObject;
import com.zhiwei.weixin.accesstoken.CreatAccessToken;
import com.zhiwei.weixin.http.HttpRequest;
import com.zhiwei.weixin.pojo.AccessToken;
import com.zhiwei.weixin.util.WeixinUtil;
/**
* @Package com.zhiwei.weixin.industry
* @ClassName: CheckTickets
* @Description: TODO(查看卡卷详情)
* @author 志伟
* @date 2015-3-27 下午10:09:54
*/
public class CheckCard {
// 第三方用户唯一凭证
// String appId = "wx7d6a533ed451e07e"; //wx22554dc3322ec3f1(数据洞察帐号)
// // 第三方用户唯一凭证密钥
// String appSecret = "217b1d655755033d74cb1fc27636288f"; //49a0abfc4507e90e6cab812414f005fb(数据洞察帐号)
//
public static String check_url = "https://api.weixin.qq.com/card/get?access_token=ACCESS_TOKEN";
// 调用接口获取access_token
private static String token;
public CheckCard()
{
token = new CreatAccessToken().getAccessToken();
}
public void check()
{
String url = check_url.replace("ACCESS_TOKEN", token);
JSONObject json = new JSONObject();
json.put("card_id","p_Vmbjs0WI73ZfC7PuKFg8Y_8qvs");
JSONObject jsonObject = HttpRequest.httpRequest(url, "POST", json.toString());
JSONObject info = jsonObject.getJSONObject("card").getJSONObject("meeting_ticket").getJSONObject("base_info");
System.out.println(info.get("sku"));
}
public static void main(String[] args)
{
new CheckCard().check();
}
}
package com.zhiwei.weixin.card;
import net.sf.json.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.zhiwei.weixin.accesstoken.CreatAccessToken;
import com.zhiwei.weixin.card.pojo.WxCardGroupon;
import com.zhiwei.weixin.http.HttpRequest;
import com.zhiwei.weixin.pojo.AccessToken;
/**
* @Package com.zhiwei.weixin.card
* @ClassName: CreateCard
* @Description: TODO(创建微信卡劵)
* @author 志伟
* @date 2015-3-25 下午3:16:08
*/
public class CreateCard {
private static String create_cart_url = "https://api.weixin.qq.com/card/create?access_token=ACCESS_TOKEN";
// 调用接口获取access_token
//记录日志
private static Logger log = LoggerFactory.getLogger(CreateCard.class);
private static String token;
public CreateCard()
{
token = new CreatAccessToken().getAccessToken();
}
public String addCart(WxCardGroupon wxCard)
{
String result = null;
String url = create_cart_url.replace("ACCESS_TOKEN", token);
String jsonCart = wxCard.toJsonString();
System.out.println(jsonCart);
JSONObject jsonObject = HttpRequest.httpRequest(url, "POST", jsonCart);
System.out.println(jsonObject);
if(jsonObject != null)
{
if(jsonObject.getInt("errcode") == 0)
{
System.out.println(jsonObject.getString("card_id"));
result = jsonObject.getString("card_id");
}else
{
result = null;
log.error("创建卡劵失败 errcode:{} errmsg:{}",
jsonObject.getInt("errcode"),
jsonObject.getString("errmsg"));
}
}
return result;
}
}
package com.zhiwei.weixin.card;
import java.util.List;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.zhiwei.weixin.accesstoken.CreatAccessToken;
import com.zhiwei.weixin.http.HttpRequest;
import com.zhiwei.weixin.pojo.AccessToken;
/**
* @Package com.zhiwei.weixin.util
* @ClassName: GetBatch
* @Description: TODO(拉取门店信息)
* @author 志伟
* @date 2015-3-26 上午10:22:04
*/
public class GetBatch {
//拉取门店信息
private static String getbatch_url = "https://api.weixin.qq.com/card/location/batchget?access_token=TOKEN";
//记录日志
private static Logger log = LoggerFactory.getLogger(GetBatch.class);
private static String token;
public GetBatch()
{
token = new CreatAccessToken().getAccessToken();
}
/**
* 拉取门店信息
*
*
* **/
public static int getBatch()
{
int result = 1;
String url = getbatch_url.replace("TOKEN", token);
// 调用接口拉取门店信息
JSONObject json = new JSONObject();
json.put("offset", 1);
json.put("count", 1);
String getBatch = json.toString();
JSONObject jsonObject = HttpRequest.httpRequest(url, "POST", getBatch);
if(jsonObject != null)
{
if(jsonObject.getInt("errcode") == 0)
{
JSONArray list = (JSONArray) jsonObject.get("location_list");
for(int i = 0;i<list.size();i++)
{
JSONObject js = list.getJSONObject(i);
// if(js.getString("address").equals("广东省广州市海珠区广州市海珠区新港西路135号中山大学南校区怀士堂"))
// {
System.out.println("======"+js.get("address"));
result = js.getInt("id");
// }
}
}
}else
{
log.error("拉取门店信息失败 errcode:{} errmsg:{}",
jsonObject.getInt("errcode"),
jsonObject.getString("errmsg"));
}
return result;
}
/**测试**/
public static void main(String[] args)
{
int result = new GetBatch().getBatch();
System.out.println(result);
}
}
package com.zhiwei.weixin.card;
import java.util.ArrayList;
import java.util.List;
import net.sf.json.JSON;
import net.sf.json.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.zhiwei.weixin.accesstoken.CreatAccessToken;
import com.zhiwei.weixin.http.HttpRequest;
import com.zhiwei.weixin.pojo.AccessToken;
import com.zhiwei.weixin.util.WeixinUtil;
/**
* @Package com.zhiwei.weixin.card
* @ClassName: GetCardList
* @Description: TODO(查看所有卡劵列表)
* @author 志伟
* @date 2015-3-28 下午7:26:57
*/
public class GetCardList {
//查询卡劵集合
private static String card_list_url = "https://api.weixin.qq.com/card/batchget?access_token=TOKEN";
//修改卡劵信息
// private static String update_card_url = "";
// 调用接口获取access_token
//获取ticket
//卡劵id
private static String card_id = "p_Vmbjs0WI73ZfC7PuKFg8Y_8qvs";
//记录日志
private static Logger log = LoggerFactory.getLogger(WeixinUtil.class);
private static String token;
public GetCardList()
{
token = new CreatAccessToken().getAccessToken();
}
/**
* 获取卡劵id
*
* */
public List getCardList()
{
List list = new ArrayList();
String url = card_list_url.replace("TOKEN", token);
JSONObject josn = new JSONObject();
josn.put("offset",0);
josn.put("count",30);
JSONObject jsonObject = HttpRequest.httpRequest(url, "POST", josn.toString());
System.out.println(jsonObject);
if(jsonObject!=null)
{
List alist = (List)jsonObject.get("card_id_list");
System.out.println(alist.size());
for(int i = 0;i<alist.size();i++)
{
System.out.println(alist.get(i));
}
}
return list;
}
/***/
public static void main(String[] args)
{
new GetCardList().getCardList();
//p_VmbjmyRWFIpiixBEwLslPPUnqw
}
}
package com.zhiwei.weixin.card;
import net.sf.json.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.zhiwei.weixin.accesstoken.CreatAccessToken;
import com.zhiwei.weixin.http.HttpRequest;
import com.zhiwei.weixin.pojo.AccessToken;
import com.zhiwei.weixin.util.WeixinUtil;
/**
* @Package com.zhiwei.weixin.card
* @ClassName: HeXiaoCard
* @Description: TODO(这里用一句话描述这个类的作用)
* @author 志伟
* @date 2015-3-28 下午8:16:11
*/
public class HeXiaoCard {
//查询卡劵集合
private static String consume_card_url = "https://api.weixin.qq.com/card/code/consume?access_token=TOKEN";
//修改卡劵信息
// private static String update_card_url = "";
//获取ticket
//卡劵id
private static String card_id = "p_Vmbjs0WI73ZfC7PuKFg8Y_8qvs";
//记录日志
private static Logger log = LoggerFactory.getLogger(WeixinUtil.class);
private static String token;
public HeXiaoCard()
{
token = new CreatAccessToken().getAccessToken();
}
public int hexiaoCard(String code)
{
String url = consume_card_url.replace("TOKEN", token);
JSONObject json = new JSONObject();
json.put("code", code);
JSONObject jsonObject = HttpRequest.httpRequest(url, "POST", json.toString());
if(jsonObject!=null)
{
int errcode = jsonObject.getInt("errcode");
if(errcode == 0)
{
return 0;
}
}
return 1;
}
public static void main(String[] args)
{
String code = "";
new HeXiaoCard().hexiaoCard(code);
}
}
package com.zhiwei.weixin.card;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import com.zhiwei.weixin.card.pojo.WxCardBaseInfo;
import com.zhiwei.weixin.card.pojo.WxCardGroupon;
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
/**
*
* @author jackylian
*/
public class Main {
public static void main(String[] args) {
WxCardGroupon card = new WxCardGroupon();
WxCardBaseInfo baseInfo = card.getBaseInfo();
/**拼接门票详情*/
StringBuffer buffer = new StringBuffer();
buffer.append("【大会议程】").append("\n").append("\n");
buffer.append("13:30-14:30 观众入场以及暖场视频").append("\n").append("\n");
buffer.append("14:30-14:45 致辞分享 ").append("\n");
buffer.append("中山大学传播与设计学院院长 张志安").append("\n").append("\n");
buffer.append("14:45-15:15 主题分享:谣言在想什么").append("\n");
buffer.append("中山大学大数据传播实验室副主任 何凌南").append("\n").append("\n");
buffer.append("15:15-15:45 主题分享:人人有台").append("\"").append("谣言粉碎机").append("\"").append("\n");
buffer.append("果壳网主编 徐来 ").append("\n").append("\n");
buffer.append("15:45-16:15 主题分享:大数据下谣言的模样").append("\n");
buffer.append("知微CEO 于霄").append("\n").append("\n");
buffer.append("16:15-16:45 主题分享:当微信遇上谣言").append("\n");
buffer.append("微信安全负责人 杨光").append("\n").append("\n");
buffer.append("16:45-17:00 结束语").append("\n");
buffer.append("中山大学传播与设计学院院长 张志安").append("\n").append("\n");
buffer.append("*实际分享主题与出场顺序以当天为准。").append("\n");
StringBuffer meeting_detail = new StringBuffer();
meeting_detail.append("1. 本电子门票为此次大会入场唯一凭证,现场扫码入场,请妥善保管;").append("\n");
meeting_detail.append("2. 如您无法参会,可将此门票转增给其他好友,好友可凭此票参会;").append("\n");
meeting_detail.append("3. 大会4月1日13:30 开始签到,14:30准时开始。先到场者可以观看到关于粉碎谣言的各种科普视频。").append("\n");
/**时间处理*/
SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String start = "2015-04-01 00:00:01";
String end = "2015-04-01 18:30:00";
Date startDate = null; //有效时间
Date endDate = null; //结束时间
try {
startDate = sf.parse(start);
endDate = sf.parse(end);
} catch (ParseException e) {
e.printStackTrace();
}
/**基础信息页面信息*/
baseInfo.setLogoUrl("https://mmbiz.qlogo.cn/mmbiz/Dcib4qxLp1R0NScnmSBtTBTDicJvycM9OVwCNHMbOvqcia0yoNd6tCXzNVm8ibiczfgkja6x2L8ASWByD5iaicfcKq89g/0"); //logo
baseInfo.setBrandName("谣言过滤器"); //商户名称
baseInfo.setColor("Color030"); //颜色
//标题
baseInfo.setTitle("天下无谣大会入场券");
//附标题
baseInfo.setSubTitle("4月1日 广州 中山大学 怀士堂");
//使用日期,有效期的信息
baseInfo.setDateInfoTimeRange(startDate, endDate);
/**消劵页面设置**/
baseInfo.setBindOpenid(true); //是否指定用户领取,填写true false。不填代表默认为否。
baseInfo.setQuantity(2500); //卡劵库存
baseInfo.setGetLimit(15); //领券限制
baseInfo.setCanGiveFriend(true); //是否允许转赠给好友
baseInfo.setCanShare(false); //是否允许分享
baseInfo.setCodeType(2); //code码展示类型
baseInfo.setNotice("入场时请出示此二维码"); //注意事项
/**卡劵详情页面信息*/
baseInfo.setUseCustomCode(false); //是否自定义code码。填写true false,不填代表默认为false
baseInfo.setDescription(meeting_detail.toString()); //描述
baseInfo.setServicePhone("020-84112828"); //客服电话
/**门店信息**/
int batchId =new GetBatch().getBatch();
baseInfo.addLocationIdList(batchId); //门店地址
// baseInfo.setUseLimit(5); //
card.setMeetingDetail(buffer.toString());
/**创建卡券*/
CreateCard createCard = new CreateCard();
String cart_id = createCard.addCart(card);
if(cart_id != null)
{
System.out.println("创建成功");
}else
{
System.out.println("创建失败");
}
}
}
package com.zhiwei.weixin.card;
import net.sf.json.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.zhiwei.weixin.accesstoken.CreatAccessToken;
import com.zhiwei.weixin.http.HttpRequest;
/**
* @Package com.zhiwei.weixin.util
* @ClassName: SendCard
* @Description: TODO(通过二维码的方式发送卡劵)
* @author 志伟
* @date 2015-3-26 下午6:01:09
*/
public class SendCard {
//拉取门店信息
private static String sendcard_url = "https://api.weixin.qq.com/card/qrcode/create?access_token=TOKEN";
//记录日志
private static Logger log = LoggerFactory.getLogger(SendCard.class);
/**
* 拉取门店信息
*
*
* **/
public static String sendCard(String openid)
{
String ticket = null;
//p_VmbjmyRWFIpiixBEwLslPPUnqw 不可发的卡券
String card_id = "p_Vmbjs0WI73ZfC7PuKFg8Y_8qvs"; //p_VmbjrMBygdqEbxI15mUvCF4Dm0
String url = sendcard_url.replace("TOKEN", new CreatAccessToken().getAccessToken());
// 调用接口拉取门店信息
JSONObject json = new JSONObject();
/**card json**/
JSONObject card = new JSONObject();
card.put("card_id", card_id);
// card.put("openid", openid);
// card.put("is_unique_code", false);
/**action_info json**/
JSONObject cardjson = new JSONObject();
cardjson.put("card", card);
/*action_name**/
json.put("action_name", "QR_CARD");
json.put("action_info", cardjson);
String sendCard = json.toString();
System.out.println(sendCard);
JSONObject jsonObject = HttpRequest.httpRequest(url, "POST", sendCard);
System.out.println(jsonObject);
if(jsonObject != null)
{
if(jsonObject.getInt("errcode") == 0)
{
ticket = jsonObject.getString("ticket");
}
}else
{
log.error("发送卡劵失败 errcode:{} errmsg:{}",
jsonObject.getInt("errcode"),
jsonObject.getString("errmsg"));
ticket = null;
}
return ticket;
}
/***/
/**测试**/
public static void main(String[] args)
{
// String openid = "o_Vmbjj3F5q60Y9sxfOheXXp-G94";
// String result = new SendCard().sendCard(openid);
//
// System.out.println(result);
}
}
package com.zhiwei.weixin.card;
import net.sf.json.JSONObject;
import com.zhiwei.weixin.accesstoken.CreatAccessToken;
import com.zhiwei.weixin.http.HttpRequest;
import com.zhiwei.weixin.pojo.AccessToken;
import com.zhiwei.weixin.util.WeixinUtil;
/**
* @Package com.zhiwei.weixin.industry
* @ClassName: CheckTickets
* @Description: TODO(查看卡卷详情)
* @author 志伟
* @date 2015-3-27 下午10:09:54
*/
public class CheckCard {
// 第三方用户唯一凭证
// String appId = "wx7d6a533ed451e07e"; //wx22554dc3322ec3f1(数据洞察帐号)
// // 第三方用户唯一凭证密钥
// String appSecret = "217b1d655755033d74cb1fc27636288f"; //49a0abfc4507e90e6cab812414f005fb(数据洞察帐号)
//
public static String check_url = "https://api.weixin.qq.com/card/get?access_token=ACCESS_TOKEN";
// 调用接口获取access_token
private static String token;
public CheckCard()
{
token = new CreatAccessToken().getAccessToken();
}
public void check()
{
String url = check_url.replace("ACCESS_TOKEN", token);
JSONObject json = new JSONObject();
json.put("card_id","p_Vmbjs0WI73ZfC7PuKFg8Y_8qvs");
JSONObject jsonObject = HttpRequest.httpRequest(url, "POST", json.toString());
JSONObject info = jsonObject.getJSONObject("card").getJSONObject("meeting_ticket").getJSONObject("base_info");
System.out.println(info.get("sku"));
}
public static void main(String[] args)
{
new CheckCard().check();
}
}
package com.zhiwei.weixin.card;
import net.sf.json.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.zhiwei.weixin.accesstoken.CreatAccessToken;
import com.zhiwei.weixin.card.pojo.WxCardGroupon;
import com.zhiwei.weixin.http.HttpRequest;
import com.zhiwei.weixin.pojo.AccessToken;
/**
* @Package com.zhiwei.weixin.card
* @ClassName: CreateCard
* @Description: TODO(创建微信卡劵)
* @author 志伟
* @date 2015-3-25 下午3:16:08
*/
public class CreateCard {
private static String create_cart_url = "https://api.weixin.qq.com/card/create?access_token=ACCESS_TOKEN";
// 调用接口获取access_token
//记录日志
private static Logger log = LoggerFactory.getLogger(CreateCard.class);
private static String token;
public CreateCard()
{
token = new CreatAccessToken().getAccessToken();
}
public String addCart(WxCardGroupon wxCard)
{
String result = null;
String url = create_cart_url.replace("ACCESS_TOKEN", token);
String jsonCart = wxCard.toJsonString();
System.out.println(jsonCart);
JSONObject jsonObject = HttpRequest.httpRequest(url, "POST", jsonCart);
System.out.println(jsonObject);
if(jsonObject != null)
{
if(jsonObject.getInt("errcode") == 0)
{
System.out.println(jsonObject.getString("card_id"));
result = jsonObject.getString("card_id");
}else
{
result = null;
log.error("创建卡劵失败 errcode:{} errmsg:{}",
jsonObject.getInt("errcode"),
jsonObject.getString("errmsg"));
}
}
return result;
}
}
package com.zhiwei.weixin.card;
import java.util.List;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.zhiwei.weixin.accesstoken.CreatAccessToken;
import com.zhiwei.weixin.http.HttpRequest;
import com.zhiwei.weixin.pojo.AccessToken;
/**
* @Package com.zhiwei.weixin.util
* @ClassName: GetBatch
* @Description: TODO(拉取门店信息)
* @author 志伟
* @date 2015-3-26 上午10:22:04
*/
public class GetBatch {
//拉取门店信息
private static String getbatch_url = "https://api.weixin.qq.com/card/location/batchget?access_token=TOKEN";
//记录日志
private static Logger log = LoggerFactory.getLogger(GetBatch.class);
private static String token;
public GetBatch()
{
token = new CreatAccessToken().getAccessToken();
}
/**
* 拉取门店信息
*
*
* **/
public static int getBatch()
{
int result = 1;
String url = getbatch_url.replace("TOKEN", token);
// 调用接口拉取门店信息
JSONObject json = new JSONObject();
json.put("offset", 1);
json.put("count", 1);
String getBatch = json.toString();
JSONObject jsonObject = HttpRequest.httpRequest(url, "POST", getBatch);
if(jsonObject != null)
{
if(jsonObject.getInt("errcode") == 0)
{
JSONArray list = (JSONArray) jsonObject.get("location_list");
for(int i = 0;i<list.size();i++)
{
JSONObject js = list.getJSONObject(i);
// if(js.getString("address").equals("广东省广州市海珠区广州市海珠区新港西路135号中山大学南校区怀士堂"))
// {
System.out.println("======"+js.get("address"));
result = js.getInt("id");
// }
}
}
}else
{
log.error("拉取门店信息失败 errcode:{} errmsg:{}",
jsonObject.getInt("errcode"),
jsonObject.getString("errmsg"));
}
return result;
}
/**测试**/
public static void main(String[] args)
{
int result = new GetBatch().getBatch();
System.out.println(result);
}
}
package com.zhiwei.weixin.card;
import java.util.ArrayList;
import java.util.List;
import net.sf.json.JSON;
import net.sf.json.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.zhiwei.weixin.accesstoken.CreatAccessToken;
import com.zhiwei.weixin.http.HttpRequest;
import com.zhiwei.weixin.pojo.AccessToken;
import com.zhiwei.weixin.util.WeixinUtil;
/**
* @Package com.zhiwei.weixin.card
* @ClassName: GetCardList
* @Description: TODO(查看所有卡劵列表)
* @author 志伟
* @date 2015-3-28 下午7:26:57
*/
public class GetCardList {
//查询卡劵集合
private static String card_list_url = "https://api.weixin.qq.com/card/batchget?access_token=TOKEN";
//修改卡劵信息
// private static String update_card_url = "";
// 调用接口获取access_token
//获取ticket
//卡劵id
private static String card_id = "p_Vmbjs0WI73ZfC7PuKFg8Y_8qvs";
//记录日志
private static Logger log = LoggerFactory.getLogger(WeixinUtil.class);
private static String token;
public GetCardList()
{
token = new CreatAccessToken().getAccessToken();
}
/**
* 获取卡劵id
*
* */
public List getCardList()
{
List list = new ArrayList();
String url = card_list_url.replace("TOKEN", token);
JSONObject josn = new JSONObject();
josn.put("offset",0);
josn.put("count",30);
JSONObject jsonObject = HttpRequest.httpRequest(url, "POST", josn.toString());
System.out.println(jsonObject);
if(jsonObject!=null)
{
List alist = (List)jsonObject.get("card_id_list");
System.out.println(alist.size());
for(int i = 0;i<alist.size();i++)
{
System.out.println(alist.get(i));
}
}
return list;
}
/***/
public static void main(String[] args)
{
new GetCardList().getCardList();
//p_VmbjmyRWFIpiixBEwLslPPUnqw
}
}
package com.zhiwei.weixin.card;
import net.sf.json.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.zhiwei.weixin.accesstoken.CreatAccessToken;
import com.zhiwei.weixin.http.HttpRequest;
import com.zhiwei.weixin.pojo.AccessToken;
import com.zhiwei.weixin.util.WeixinUtil;
/**
* @Package com.zhiwei.weixin.card
* @ClassName: HeXiaoCard
* @Description: TODO(这里用一句话描述这个类的作用)
* @author 志伟
* @date 2015-3-28 下午8:16:11
*/
public class HeXiaoCard {
//查询卡劵集合
private static String consume_card_url = "https://api.weixin.qq.com/card/code/consume?access_token=TOKEN";
//修改卡劵信息
// private static String update_card_url = "";
//获取ticket
//卡劵id
private static String card_id = "p_Vmbjs0WI73ZfC7PuKFg8Y_8qvs";
//记录日志
private static Logger log = LoggerFactory.getLogger(WeixinUtil.class);
private static String token;
public HeXiaoCard()
{
token = new CreatAccessToken().getAccessToken();
}
public int hexiaoCard(String code)
{
String url = consume_card_url.replace("TOKEN", token);
JSONObject json = new JSONObject();
json.put("code", code);
JSONObject jsonObject = HttpRequest.httpRequest(url, "POST", json.toString());
if(jsonObject!=null)
{
int errcode = jsonObject.getInt("errcode");
if(errcode == 0)
{
return 0;
}
}
return 1;
}
public static void main(String[] args)
{
String code = "";
new HeXiaoCard().hexiaoCard(code);
}
}
package com.zhiwei.weixin.card;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import com.zhiwei.weixin.card.pojo.WxCardBaseInfo;
import com.zhiwei.weixin.card.pojo.WxCardGroupon;
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
/**
*
* @author jackylian
*/
public class Main {
public static void main(String[] args) {
WxCardGroupon card = new WxCardGroupon();
WxCardBaseInfo baseInfo = card.getBaseInfo();
/**拼接门票详情*/
StringBuffer buffer = new StringBuffer();
buffer.append("【大会议程】").append("\n").append("\n");
buffer.append("13:30-14:30 观众入场以及暖场视频").append("\n").append("\n");
buffer.append("14:30-14:45 致辞分享 ").append("\n");
buffer.append("中山大学传播与设计学院院长 张志安").append("\n").append("\n");
buffer.append("14:45-15:15 主题分享:谣言在想什么").append("\n");
buffer.append("中山大学大数据传播实验室副主任 何凌南").append("\n").append("\n");
buffer.append("15:15-15:45 主题分享:人人有台").append("\"").append("谣言粉碎机").append("\"").append("\n");
buffer.append("果壳网主编 徐来 ").append("\n").append("\n");
buffer.append("15:45-16:15 主题分享:大数据下谣言的模样").append("\n");
buffer.append("知微CEO 于霄").append("\n").append("\n");
buffer.append("16:15-16:45 主题分享:当微信遇上谣言").append("\n");
buffer.append("微信安全负责人 杨光").append("\n").append("\n");
buffer.append("16:45-17:00 结束语").append("\n");
buffer.append("中山大学传播与设计学院院长 张志安").append("\n").append("\n");
buffer.append("*实际分享主题与出场顺序以当天为准。").append("\n");
StringBuffer meeting_detail = new StringBuffer();
meeting_detail.append("1. 本电子门票为此次大会入场唯一凭证,现场扫码入场,请妥善保管;").append("\n");
meeting_detail.append("2. 如您无法参会,可将此门票转增给其他好友,好友可凭此票参会;").append("\n");
meeting_detail.append("3. 大会4月1日13:30 开始签到,14:30准时开始。先到场者可以观看到关于粉碎谣言的各种科普视频。").append("\n");
/**时间处理*/
SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String start = "2015-04-01 00:00:01";
String end = "2015-04-01 18:30:00";
Date startDate = null; //有效时间
Date endDate = null; //结束时间
try {
startDate = sf.parse(start);
endDate = sf.parse(end);
} catch (ParseException e) {
e.printStackTrace();
}
/**基础信息页面信息*/
baseInfo.setLogoUrl("https://mmbiz.qlogo.cn/mmbiz/Dcib4qxLp1R0NScnmSBtTBTDicJvycM9OVwCNHMbOvqcia0yoNd6tCXzNVm8ibiczfgkja6x2L8ASWByD5iaicfcKq89g/0"); //logo
baseInfo.setBrandName("谣言过滤器"); //商户名称
baseInfo.setColor("Color030"); //颜色
//标题
baseInfo.setTitle("天下无谣大会入场券");
//附标题
baseInfo.setSubTitle("4月1日 广州 中山大学 怀士堂");
//使用日期,有效期的信息
baseInfo.setDateInfoTimeRange(startDate, endDate);
/**消劵页面设置**/
baseInfo.setBindOpenid(true); //是否指定用户领取,填写true或 false。不填代表默认为否。
baseInfo.setQuantity(2500); //卡劵库存
baseInfo.setGetLimit(15); //领券限制
baseInfo.setCanGiveFriend(true); //是否允许转赠给好友
baseInfo.setCanShare(false); //是否允许分享
baseInfo.setCodeType(2); //code码展示类型
baseInfo.setNotice("入场时请出示此二维码"); //注意事项
/**卡劵详情页面信息*/
baseInfo.setUseCustomCode(false); //是否自定义code码。填写true 或false,不填代表默认为false
baseInfo.setDescription(meeting_detail.toString()); //描述
baseInfo.setServicePhone("020-84112828"); //客服电话
/**门店信息**/
int batchId =new GetBatch().getBatch();
baseInfo.addLocationIdList(batchId); //门店地址
// baseInfo.setUseLimit(5); //
card.setMeetingDetail(buffer.toString());
/**创建卡券*/
CreateCard createCard = new CreateCard();
String cart_id = createCard.addCart(card);
if(cart_id != null)
{
System.out.println("创建成功");
}else
{
System.out.println("创建失败");
}
}
}
package com.zhiwei.weixin.card;
import net.sf.json.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.zhiwei.weixin.accesstoken.CreatAccessToken;
import com.zhiwei.weixin.http.HttpRequest;
/**
* @Package com.zhiwei.weixin.util
* @ClassName: SendCard
* @Description: TODO(通过二维码的方式发送卡劵)
* @author 志伟
* @date 2015-3-26 下午6:01:09
*/
public class SendCard {
//拉取门店信息
private static String sendcard_url = "https://api.weixin.qq.com/card/qrcode/create?access_token=TOKEN";
//记录日志
private static Logger log = LoggerFactory.getLogger(SendCard.class);
/**
* 拉取门店信息
*
*
* **/
public static String sendCard(String openid)
{
String ticket = null;
//p_VmbjmyRWFIpiixBEwLslPPUnqw 不可发的卡券
String card_id = "p_Vmbjs0WI73ZfC7PuKFg8Y_8qvs"; //p_VmbjrMBygdqEbxI15mUvCF4Dm0
String url = sendcard_url.replace("TOKEN", new CreatAccessToken().getAccessToken());
// 调用接口拉取门店信息
JSONObject json = new JSONObject();
/**card json**/
JSONObject card = new JSONObject();
card.put("card_id", card_id);
// card.put("openid", openid);
// card.put("is_unique_code", false);
/**action_info json**/
JSONObject cardjson = new JSONObject();
cardjson.put("card", card);
/*action_name**/
json.put("action_name", "QR_CARD");
json.put("action_info", cardjson);
String sendCard = json.toString();
System.out.println(sendCard);
JSONObject jsonObject = HttpRequest.httpRequest(url, "POST", sendCard);
System.out.println(jsonObject);
if(jsonObject != null)
{
if(jsonObject.getInt("errcode") == 0)
{
ticket = jsonObject.getString("ticket");
}
}else
{
log.error("发送卡劵失败 errcode:{} errmsg:{}",
jsonObject.getInt("errcode"),
jsonObject.getString("errmsg"));
ticket = null;
}
return ticket;
}
/***/
/**测试**/
public static void main(String[] args)
{
// String openid = "o_Vmbjj3F5q60Y9sxfOheXXp-G94";
// String result = new SendCard().sendCard(openid);
//
// System.out.println(result);
}
}
10
dir
16191
svn://192.168.0.30/project/bjfzxWebapp/wechat_Fuwu/com/zhiwei/weixin/card/json
svn://192.168.0.30
2016-12-06T09:22:15.298093Z
9711
test3
svn:special svn:externals svn:needs-lock
21a4f42a-c9d9-498b-9054-f75f9d41c267
CDL.java
file
2018-02-01T05:50:19.414000Z
19ecb0fddb128b8503af99f927c10414
2016-12-06T09:22:15.298093Z
9711
test3
9924
Cookie.java
file
2018-02-01T05:50:19.491000Z
33ebe03f1910d80fc696b30ffff334b4
2016-12-06T09:22:15.298093Z
9711
test3
6554
CookieList.java
file
2018-02-01T05:50:19.438000Z
fd39c28b7a57076c0ff296dc9e375236
2016-12-06T09:22:15.298093Z
9711
test3
3334
HTTP.java
file
2018-02-01T05:50:19.516000Z
fa0de4bd39aca4be332a307d4692eb9a
2016-12-06T09:22:15.298093Z
9711
test3
5949
HTTPTokener.java
file
2018-02-01T05:50:19.465000Z
71dd217e5efc4f1f824e7035a487a7ab
2016-12-06T09:22:15.298093Z
9711
test3
2442
JSONArray.java
file
2018-02-01T05:50:19.479000Z
8e4143f229b61a8defaca3fba78f490d
2016-12-06T09:22:15.298093Z
9711
test3
32212
JSONException.java
file
2018-02-01T05:50:19.817000Z
f4201477e9aab522d05ea9c092224ae4
2016-12-06T09:22:15.298093Z
9711
test3
1085
JSONML.java
file
2018-02-01T05:50:19.426000Z
357ff3af6f9c0a5eb52045857bcd5c36
2016-12-06T09:22:15.298093Z
9711
test3
17173
JSONObject.java
file
2018-02-01T05:50:19.372000Z
2fef71bbf130a44c9c50f60a916eb3ea
2016-12-06T09:22:15.298093Z
9711
test3
57513
JSONString.java
file
2018-02-01T05:50:19.389000Z
170146e6a58a95b0e4aba5e8f64b3d51
2016-12-06T09:22:15.298093Z
9711
test3
727
JSONStringer.java
file
2018-02-01T05:50:19.791000Z
96cf3ab497f8535a1bac98848ff54fe3
2016-12-06T09:22:15.298093Z
9711
test3
3285
JSONTokener.java
file
2018-02-01T05:50:19.402000Z
cf9ab7474d55585d001cc04ceb43dfdb
2016-12-06T09:22:15.298093Z
9711
test3
13021
JSONWriter.java
file
2018-02-01T05:50:19.453000Z
05970472122455826855cd4b8ed4ab2a
2016-12-06T09:22:15.298093Z
9711
test3
10697
Kim.java
file
2018-02-01T05:50:19.529000Z
7eae7a6b0e261e48ef4249c1e0e9d846
2016-12-06T09:22:15.298093Z
9711
test3
12834
Property.java
file
2018-02-01T05:50:19.779000Z
cac39d7a9678cff75e66b040e9bbfa56
2016-12-06T09:22:15.298093Z
9711
test3
2669
README
file
2018-02-01T05:50:19.503000Z
22c95c688af1797943530b83bf73658b
2016-12-06T09:22:15.298093Z
9711
test3
2381
XML.java
file
2018-02-01T05:50:19.359000Z
018390cd0c5c2a41eafb0b7358a991b2
2016-12-06T09:22:15.298093Z
9711
test3
16634
XMLTokener.java
file
2018-02-01T05:50:19.830000Z
782f9e5524db8baad51803711b942ed3
2016-12-06T09:22:15.298093Z
9711
test3
10676
zip
dir
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment