Spring Boot-Wachat Demo 【2】
Demo开始
本期的Wechat Demo主要是给大家一个思路,因为各人、各司的需求都不一样,规则根据实际需求拟定即可。本期内容仅包含获取Accesstoken、person-addnew、dept-addnew。如需其他接口可以再企业微信API官网拿来替换调试一下就可以了。另企业微信没有封装对应的JAR,所以内容较零散,根据个人的代码和尽量多的注释量来说明。
这里先给大家推一本书,内容比较有意思。更有意思的是这个思想比较早,现在才反应过来是个不错的书儿:领域驱动设计:软件核心复杂性应对之道
具体的书籍信息牵扯版权问题不好分享,大家可以在百度上欣赏一下。
1、新建好的项目上理一下思路
此Demo不含系统对接,暂时也不用Database,就以虚拟数据为准
其实和常用项目一致,首先确认好自己代码风格,把一些关键包、类名准备一下,养成一个好的习惯,某种意义上也是增强代码的可读性。
2、几个注意的点
(1)、新建应用(如何新建这里就不过多重复了),检查你的应用是否开通通讯录权限
(2)、准备agentid、corpid、secret
(3)、要注意企业微信的主动调用频率,其实普通应该都不会有影响,涉及到大密集的数据进入时可以参考一下官方文献,也算是准备工作。企业微信主动调用频率
3、准备好Wechatsecret.properties
已分享的Demo因为涉及隐私,这个文件不包含,但是可以根据代码块放上可以直接使用!
#--weixin --
weixin.agentid=
weixin.corpid=
weixin.corpsecret=
4、新建所需的实体
这里以AccessToken、Person、Department三个实体来应用,有点灌水,大家可根据所需字段自己写这部分,我这里分享一下Department供参考。
public class WechatDepartmentEntrty {
/**
* 部门名称
*/
private String name;
/**
* 部门英文名称
*/
private String name_en;
/**
* 父部门编号
*/
private String parentid;
/**
* 排序
*/
private Integer order;
/**
* 编号
*/
private String id;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getName_en() {
return name_en;
}
public void setName_en(String name_en) {
this.name_en = name_en;
}
public String getParentid() {
return parentid;
}
public void setParentid(String parentid) {
this.parentid = parentid;
}
public Integer getOrder() {
return order;
}
public void setOrder(Integer order) {
this.order = order;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
}
5、参数类
public class WechatConstants {
// 获取access_token的url
public static final String ACCESS_TOKER_URL = "https://qyapi.weixin.qq.com/cgi-bin/gettoken";
// 根据code获取成员信息的url
public static final String GET_OAUTH2_URL = "https://qyapi.weixin.qq.com/cgi-bin/user/getuserinfo?access_token=ACCESS_TOKEN&code=CODE&agentid=AGENTID";
//获取创建部门 的url
public static final String POST_department_URL = "https://qyapi.weixin.qq.com/cgi-bin/department/create?access_token=";
//获取创建员工 的url
public static final String POST_person_URL = "https://qyapi.weixin.qq.com/cgi-bin/user/create?access_token=";
}
6、控制器
/**
* wechat控制器
*/
@RestController
public class WechatController {
@RequestMapping("/testtoken")
public String access_token() {
WechatAccessTokenEntrty accessToken = WechatUtil.access_token();
System.out.println("accessToken " + accessToken.toString());
return accessToken.getAccess_token();
}
@RequestMapping("/testdept")
public String testdept() {
WechatAccessTokenEntrty accessToken = WechatUtil.access_token();
// 加载token 7200毫秒
System.out.println("accessToken " + accessToken.toString());
//部门新增
WechatDepartmentEntrty department = new WechatDepartmentEntrty();
department.setName("测试部门");
department.setName_en("ITtest");
department.setParentid("1");
department.setOrder(999);
department.setId("555");
WechatUtil.createDept(department,accessToken.getAccess_token());
//String department_to = WeiXinQiYeUtil.createDept(department,accessToken.getAccess_token());
//测试demo不处理department_to,返回参数插入中间表
//人员新增
WeChatPersonEntrty weChatPerson =new WeChatPersonEntrty();
weChatPerson.setUserid("lierxiao");
weChatPerson.setName("李二小");
weChatPerson.setAlias("ellison");
weChatPerson.setMobile("18800000000");
weChatPerson.setDepartment("555");
weChatPerson.setOrder(10);
weChatPerson.setPosition