新增发红包&企业付款&批量执行任务接口
This commit is contained in:
@@ -8,7 +8,7 @@ weixin4j-qy
|
||||
-------
|
||||
* **weixin4j-qy-api**
|
||||
|
||||
+ DepartApi `部门管理API`
|
||||
+ PartyApi `部门管理API`
|
||||
|
||||
+ UserApi `成员管理API`
|
||||
|
||||
@@ -21,6 +21,8 @@ weixin4j-qy
|
||||
+ NotifyApi `消息发送API`
|
||||
|
||||
+ AgentApi `应用设置API`
|
||||
|
||||
+ BatchApi `批量任务API`
|
||||
|
||||
* **weixin4j-qy-server**
|
||||
|
||||
@@ -122,3 +124,9 @@ weixin4j-qy
|
||||
* 2015-03-29
|
||||
|
||||
+ **weixin4j-qy-api**: 单行注释调整为多行文档注释
|
||||
|
||||
* 2015-04-01
|
||||
|
||||
+ **weixin4j-qy-api**: 新增[BatchApi](./weixin4j-qy-api/src/main/java/com/foxinmy/weixin4j/qy/api/BatchApi.java)批量异步执行任务接口
|
||||
|
||||
+ **weixin4j-qy-api**: <font color="red">DepartApi命名为[PartyApi](./weixin4j-qy-api/src/main/java/com/foxinmy/weixin4j/qy/api/PartyApi.java)</font>
|
||||
|
||||
@@ -7,7 +7,7 @@ weixin4j-qy-api
|
||||
功能列表
|
||||
-------
|
||||
|
||||
* DepartApi `部门管理API`
|
||||
* PartyApi `部门管理API`
|
||||
|
||||
* UserApi `成员管理API`
|
||||
|
||||
@@ -93,3 +93,9 @@ weixin.properties说明
|
||||
* 2015-03-29
|
||||
|
||||
+ 单行注释调整为多行文档注释
|
||||
|
||||
* 2015-04-01
|
||||
|
||||
+ 新增[BatchApi](./src/main/java/com/foxinmy/weixin4j/qy/api/BatchApi.java)批量异步执行任务接口
|
||||
|
||||
+ <font color="red">DepartApi命名为[PartyApi](./src/main/java/com/foxinmy/weixin4j/qy/api/PartyApi.java)</font>
|
||||
|
||||
+142
-26
@@ -5,13 +5,17 @@ import java.util.List;
|
||||
import com.foxinmy.weixin4j.exception.WeixinException;
|
||||
import com.foxinmy.weixin4j.http.JsonResult;
|
||||
import com.foxinmy.weixin4j.qy.api.AgentApi;
|
||||
import com.foxinmy.weixin4j.qy.api.DepartApi;
|
||||
import com.foxinmy.weixin4j.qy.api.BatchApi;
|
||||
import com.foxinmy.weixin4j.qy.api.HelperApi;
|
||||
import com.foxinmy.weixin4j.qy.api.PartyApi;
|
||||
import com.foxinmy.weixin4j.qy.api.TagApi;
|
||||
import com.foxinmy.weixin4j.qy.api.UserApi;
|
||||
import com.foxinmy.weixin4j.qy.model.AgentInfo;
|
||||
import com.foxinmy.weixin4j.qy.model.AgentSetter;
|
||||
import com.foxinmy.weixin4j.qy.model.Department;
|
||||
import com.foxinmy.weixin4j.qy.model.BatchResult;
|
||||
import com.foxinmy.weixin4j.qy.model.Callback;
|
||||
import com.foxinmy.weixin4j.qy.model.IdParameter;
|
||||
import com.foxinmy.weixin4j.qy.model.Party;
|
||||
import com.foxinmy.weixin4j.qy.model.Tag;
|
||||
import com.foxinmy.weixin4j.qy.model.User;
|
||||
import com.foxinmy.weixin4j.qy.type.InviteType;
|
||||
@@ -31,11 +35,12 @@ import com.foxinmy.weixin4j.type.AccountType;
|
||||
* @see <a href="http://qydev.weixin.qq.com/wiki/index.php">api文档</a>
|
||||
*/
|
||||
public class WeixinProxy {
|
||||
private final DepartApi departApi;
|
||||
private final PartyApi partyApi;
|
||||
private final UserApi userApi;
|
||||
private final TagApi tagApi;
|
||||
private final HelperApi helperApi;
|
||||
private final AgentApi agentApi;
|
||||
private final BatchApi batchApi;
|
||||
|
||||
/**
|
||||
* 默认采用文件存放Token信息
|
||||
@@ -61,74 +66,75 @@ public class WeixinProxy {
|
||||
* @param tokenHolder
|
||||
*/
|
||||
public WeixinProxy(TokenHolder tokenHolder) {
|
||||
this.departApi = new DepartApi(tokenHolder);
|
||||
this.partyApi = new PartyApi(tokenHolder);
|
||||
this.userApi = new UserApi(tokenHolder);
|
||||
this.tagApi = new TagApi(tokenHolder);
|
||||
this.helperApi = new HelperApi(tokenHolder);
|
||||
this.agentApi = new AgentApi(tokenHolder);
|
||||
this.batchApi = new BatchApi(tokenHolder);
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建部门(根部门的parentid为1)
|
||||
*
|
||||
* @param depart
|
||||
* @param party
|
||||
* 部门对象
|
||||
* @see com.foxinmy.weixin4j.qy.model.Department
|
||||
* @see com.foxinmy.weixin4j.qy.model.Party
|
||||
* @see <a
|
||||
* href="http://qydev.weixin.qq.com/wiki/index.php?title=%E7%AE%A1%E7%90%86%E9%83%A8%E9%97%A8#.E5.88.9B.E5.BB.BA.E9.83.A8.E9.97.A8">创建部门说明</a>
|
||||
* @see com.foxinmy.weixin4j.qy.api.DepartApi
|
||||
* @see com.foxinmy.weixin4j.qy.api.PartyApi
|
||||
* @return 部门ID
|
||||
* @throws WeixinException
|
||||
*/
|
||||
public int createDepart(Department depart) throws WeixinException {
|
||||
return departApi.createDepart(depart);
|
||||
public int createParty(Party party) throws WeixinException {
|
||||
return partyApi.createParty(party);
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新部门(如果非必须的字段未指定 则不更新该字段之前的设置值)
|
||||
*
|
||||
* @param depart
|
||||
* @param party
|
||||
* 部门对象
|
||||
* @see com.foxinmy.weixin4j.qy.model.Department
|
||||
* @see com.foxinmy.weixin4j.qy.model.Party
|
||||
* @see <a
|
||||
* href="http://qydev.weixin.qq.com/wiki/index.php?title=%E7%AE%A1%E7%90%86%E9%83%A8%E9%97%A8#.E6.9B.B4.E6.96.B0.E9.83.A8.E9.97.A8">更新部门说明</a>
|
||||
* @see com.foxinmy.weixin4j.qy.api.DepartApi
|
||||
* @see com.foxinmy.weixin4j.qy.api.PartyApi
|
||||
* @return 处理结果
|
||||
* @throws WeixinException
|
||||
*/
|
||||
public JsonResult updateDepart(Department depart) throws WeixinException {
|
||||
return departApi.updateDepart(depart);
|
||||
public JsonResult updateParty(Party party) throws WeixinException {
|
||||
return partyApi.updateParty(party);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询部门列表(以部门的order字段从小到大排列)
|
||||
*
|
||||
* @param departId
|
||||
* @param partyId
|
||||
* 部门ID。获取指定部门ID下的子部门
|
||||
* @see com.foxinmy.weixin4j.qy.model.Department
|
||||
* @see com.foxinmy.weixin4j.qy.model.Party
|
||||
* @see <a
|
||||
* href="http://qydev.weixin.qq.com/wiki/index.php?title=%E7%AE%A1%E7%90%86%E9%83%A8%E9%97%A8#.E8.8E.B7.E5.8F.96.E9.83.A8.E9.97.A8.E5.88.97.E8.A1.A8">获取部门列表</a>
|
||||
* @see com.foxinmy.weixin4j.qy.api.DepartApi
|
||||
* @see com.foxinmy.weixin4j.qy.api.PartyApi
|
||||
* @return 部门列表
|
||||
* @throws WeixinException
|
||||
*/
|
||||
public List<Department> listDepart(int departId) throws WeixinException {
|
||||
return departApi.listDepart(departId);
|
||||
public List<Party> listParty(int partyId) throws WeixinException {
|
||||
return partyApi.listParty(partyId);
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除部门(不能删除根部门;不能删除含有子部门、成员的部门)
|
||||
*
|
||||
* @param departId
|
||||
* @param partyId
|
||||
* 部门ID
|
||||
* @see <a
|
||||
* href="http://qydev.weixin.qq.com/wiki/index.php?title=%E7%AE%A1%E7%90%86%E9%83%A8%E9%97%A8#.E5.88.A0.E9.99.A4.E9.83.A8.E9.97.A8">删除部门说明</a>
|
||||
* @see com.foxinmy.weixin4j.qy.api.DepartApi
|
||||
* @see com.foxinmy.weixin4j.qy.api.PartyApi
|
||||
* @return 处理结果
|
||||
* @throws WeixinException
|
||||
*/
|
||||
public JsonResult deleteDepart(int departId) throws WeixinException {
|
||||
return departApi.deleteDepart(departId);
|
||||
public JsonResult deleteParty(int partyId) throws WeixinException {
|
||||
return partyApi.deleteParty(partyId);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -202,7 +208,7 @@ public class WeixinProxy {
|
||||
/**
|
||||
* 获取部门成员
|
||||
*
|
||||
* @param departId
|
||||
* @param partyId
|
||||
* 部门ID 必须
|
||||
* @param fetchChild
|
||||
* 是否递归获取子部门下面的成员 非必须
|
||||
@@ -217,9 +223,9 @@ public class WeixinProxy {
|
||||
* @return 成员列表
|
||||
* @throws WeixinException
|
||||
*/
|
||||
public List<User> listUser(int departId, boolean fetchChild,
|
||||
public List<User> listUser(int partyId, boolean fetchChild,
|
||||
UserStatus userStatus, boolean findDetail) throws WeixinException {
|
||||
return userApi.listUser(departId, fetchChild, userStatus, findDetail);
|
||||
return userApi.listUser(partyId, fetchChild, userStatus, findDetail);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -445,4 +451,114 @@ public class WeixinProxy {
|
||||
public JsonResult setAgent(AgentSetter agentSet) throws WeixinException {
|
||||
return agentApi.setAgent(agentSet);
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量邀请成员关注
|
||||
*
|
||||
* @param parameter
|
||||
* 成员ID,标签ID,部门ID
|
||||
* @param callback
|
||||
* 接收任务执行结果的回调地址等信息
|
||||
* @param tips
|
||||
* 推送到微信上的提示语(只有认证号可以使用)。当使用微信推送时,该字段默认为“请关注XXX企业号”,邮件邀请时,该字段无效。
|
||||
* @return 异步任务id,最大长度为64字符
|
||||
* @see com.foxinmy.weixin4j.qy.model.IdParameter
|
||||
* @see com.foxinmy.weixin4j.qy.model.Callback
|
||||
* @see com.foxinmy.weixin4j.qy.api.BatchApi
|
||||
* @see <a
|
||||
* href="http://qydev.weixin.qq.com/wiki/index.php?title=%E5%BC%82%E6%AD%A5%E4%BB%BB%E5%8A%A1%E6%8E%A5%E5%8F%A3#.E9.82.80.E8.AF.B7.E6.88.90.E5.91.98.E5.85.B3.E6.B3.A8">邀请成员关注</a>
|
||||
* @throws WeixinException
|
||||
*/
|
||||
public String inviteuser(IdParameter parameter, Callback callback,
|
||||
String tips) throws WeixinException {
|
||||
return batchApi.inviteuser(parameter, callback, tips);
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量更新成员,本接口以userid为主键,增量更新企业号通讯录成员。
|
||||
* <p>
|
||||
* 1.模板中的部门需填写部门ID,多个部门用分号分隔,部门ID必须为数字</br>
|
||||
* 2.文件中存在、通讯录中也存在的成员,更新成员在文件中指定的字段值 </br> 3.文件中存在、通讯录中不存在的成员,执行添加操作</br>
|
||||
* 4.通讯录中存在、文件中不存在的成员,保持不变</br>
|
||||
* </p>
|
||||
*
|
||||
* @param mediaId
|
||||
* 带user信息的cvs文件上传后的media_id
|
||||
* @param callback
|
||||
* 接收任务执行结果的回调地址等信息
|
||||
* @return 异步任务id,最大长度为64字符
|
||||
* @see com.foxinmy.weixin4j.qy.model.Callback
|
||||
* @see com.foxinmy.weixin4j.qy.api.BatchApi
|
||||
* @see <a
|
||||
* href="http://qydev.weixin.qq.com/wiki/index.php?title=%E5%BC%82%E6%AD%A5%E4%BB%BB%E5%8A%A1%E6%8E%A5%E5%8F%A3#.E5.A2.9E.E9.87.8F.E6.9B.B4.E6.96.B0.E6.88.90.E5.91.98">批量更新成员</a>
|
||||
* @throws WeixinException
|
||||
*/
|
||||
public String syncuser(String mediaId, Callback callback)
|
||||
throws WeixinException {
|
||||
return batchApi.syncuser(mediaId, callback);
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量覆盖成员,本接口以userid为主键,全量覆盖企业号通讯录成员,任务完成后企业号通讯录成员与提交的文件完全保持一致。
|
||||
* <p>
|
||||
* 1.模板中的部门需填写部门ID,多个部门用分号分隔,部门ID必须为数字</br> 2.文件中存在、通讯录中也存在的成员,完全以文件为准</br>
|
||||
* 3.文件中存在、通讯录中不存在的成员,执行添加操作</br>
|
||||
* 4.通讯录中存在、文件中不存在的成员,执行删除操作。出于安全考虑,如果需要删除的成员多于50人,
|
||||
* 且多于现有人数的20%以上,系统将中止导入并返回相应的错误码
|
||||
* </p>
|
||||
*
|
||||
* @param mediaId
|
||||
* 带userid信息的cvs文件上传后的media_id
|
||||
* @param callback
|
||||
* 接收任务执行结果的回调地址等信息
|
||||
* @return 异步任务id,最大长度为64字符
|
||||
* @see com.foxinmy.weixin4j.qy.model.Callback
|
||||
* @see com.foxinmy.weixin4j.qy.api.BatchApi
|
||||
* @see <a
|
||||
* href="http://qydev.weixin.qq.com/wiki/index.php?title=%E5%BC%82%E6%AD%A5%E4%BB%BB%E5%8A%A1%E6%8E%A5%E5%8F%A3#.E5.85.A8.E9.87.8F.E8.A6.86.E7.9B.96.E6.88.90.E5.91.98">批量覆盖成员</a>
|
||||
* @throws WeixinException
|
||||
*/
|
||||
public String replaceuser(String mediaId, Callback callback)
|
||||
throws WeixinException {
|
||||
return batchApi.replaceuser(mediaId, callback);
|
||||
}
|
||||
/**
|
||||
* 批量覆盖部门,本接口以partyid为键,全量覆盖企业号通讯录组织架构,任务完成后企业号通讯录组织架构与提交的文件完全保持一致。
|
||||
* <p>
|
||||
* 1.文件中存在、通讯录中也存在的部门,执行修改操作</br> 2.文件中存在、通讯录中不存在的部门,执行添加操作</br>
|
||||
* 3.文件中不存在、通讯录中存在的部门,当部门为空时,执行删除操作</br>
|
||||
* 4.CSV文件中,部门名称、部门ID、父部门ID为必填字段,部门ID必须为数字;排序为可选字段,置空或填0不修改排序
|
||||
* </p>
|
||||
*
|
||||
* @param mediaId
|
||||
* 带partyid信息的cvs文件上传后的media_id
|
||||
* @param callback
|
||||
* 接收任务执行结果的回调地址等信息
|
||||
* @return 异步任务id,最大长度为64字符
|
||||
* @see com.foxinmy.weixin4j.qy.model.Callback
|
||||
* @see com.foxinmy.weixin4j.qy.api.BatchApi
|
||||
* @see <a
|
||||
* href="http://qydev.weixin.qq.com/wiki/index.php?title=%E5%BC%82%E6%AD%A5%E4%BB%BB%E5%8A%A1%E6%8E%A5%E5%8F%A3#.E5.85.A8.E9.87.8F.E8.A6.86.E7.9B.96.E9.83.A8.E9.97.A8">批量覆盖部门</a>
|
||||
* @throws WeixinException
|
||||
*/
|
||||
public String replaceparty(String mediaId, Callback callback)
|
||||
throws WeixinException {
|
||||
return batchApi.replaceparty(mediaId, callback);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取异步任务执行的结果
|
||||
*
|
||||
* @param jobId
|
||||
* 任务ID
|
||||
* @return 效果信息
|
||||
* @see com.foxinmy.weixin4j.qy.model.BatchResult
|
||||
* @see com.foxinmy.weixin4j.qy.api.BatchApi
|
||||
* @see <a
|
||||
* href="http://qydev.weixin.qq.com/wiki/index.php?title=%E5%BC%82%E6%AD%A5%E4%BB%BB%E5%8A%A1%E6%8E%A5%E5%8F%A3#.E8.8E.B7.E5.8F.96.E5.BC.82.E6.AD.A5.E4.BB.BB.E5.8A.A1.E7.BB.93.E6.9E.9C">获取异步任务执行结果</a>
|
||||
* @throws WeixinException
|
||||
*/
|
||||
public BatchResult getresult(String jobId) throws WeixinException {
|
||||
return batchApi.getresult(jobId);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,168 @@
|
||||
package com.foxinmy.weixin4j.qy.api;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.alibaba.fastjson.TypeReference;
|
||||
import com.foxinmy.weixin4j.exception.WeixinException;
|
||||
import com.foxinmy.weixin4j.http.Response;
|
||||
import com.foxinmy.weixin4j.model.Token;
|
||||
import com.foxinmy.weixin4j.qy.model.BatchResult;
|
||||
import com.foxinmy.weixin4j.qy.model.Callback;
|
||||
import com.foxinmy.weixin4j.qy.model.IdParameter;
|
||||
import com.foxinmy.weixin4j.token.TokenHolder;
|
||||
|
||||
/**
|
||||
* 批量异步任务API
|
||||
* <p>
|
||||
* 异步任务接口用于大批量数据的处理,提交后接口即返回,企业号会在后台继续执行任务。执行完成后,通过任务事件通知企业获取结果
|
||||
* </p>
|
||||
*
|
||||
* @className BatchApi
|
||||
* @author jy
|
||||
* @date 2015年3月30日
|
||||
* @since JDK 1.7
|
||||
* @see <a
|
||||
* href="http://qydev.weixin.qq.com/wiki/index.php?title=%E5%BC%82%E6%AD%A5%E4%BB%BB%E5%8A%A1%E6%8E%A5%E5%8F%A3">批量任务</a>
|
||||
*/
|
||||
public class BatchApi extends QyApi {
|
||||
|
||||
private final TokenHolder tokenHolder;
|
||||
|
||||
public BatchApi(TokenHolder tokenHolder) {
|
||||
this.tokenHolder = tokenHolder;
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量邀请成员关注
|
||||
*
|
||||
* @param parameter
|
||||
* 成员ID,标签ID,部门ID
|
||||
* @param callback
|
||||
* 接收任务执行结果的回调地址等信息
|
||||
* @param tips
|
||||
* 推送到微信上的提示语(只有认证号可以使用)。当使用微信推送时,该字段默认为“请关注XXX企业号”,邮件邀请时,该字段无效。
|
||||
* @return 异步任务id,最大长度为64字符
|
||||
* @see com.foxinmy.weixin4j.qy.model.IdParameter
|
||||
* @see com.foxinmy.weixin4j.qy.model.Callback
|
||||
* @see <a
|
||||
* href="http://qydev.weixin.qq.com/wiki/index.php?title=%E5%BC%82%E6%AD%A5%E4%BB%BB%E5%8A%A1%E6%8E%A5%E5%8F%A3#.E9.82.80.E8.AF.B7.E6.88.90.E5.91.98.E5.85.B3.E6.B3.A8">邀请成员关注</a>
|
||||
* @throws WeixinException
|
||||
*/
|
||||
public String inviteuser(IdParameter parameter, Callback callback,
|
||||
String tips) throws WeixinException {
|
||||
String batch_inviteuser_uri = getRequestUri("batch_inviteuser_uri");
|
||||
Token token = tokenHolder.getToken();
|
||||
JSONObject obj = new JSONObject();
|
||||
obj.putAll(parameter.getParameter());
|
||||
obj.put("callback", callback);
|
||||
obj.put("invite_tips", tips);
|
||||
Response response = request.post(
|
||||
String.format(batch_inviteuser_uri, token.getAccessToken()),
|
||||
obj.toJSONString());
|
||||
return response.getAsJson().getString("jobid");
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量更新成员,本接口以userid为主键,增量更新企业号通讯录成员。
|
||||
* <p>
|
||||
* 1.模板中的部门需填写部门ID,多个部门用分号分隔,部门ID必须为数字</br>
|
||||
* 2.文件中存在、通讯录中也存在的成员,更新成员在文件中指定的字段值 </br> 3.文件中存在、通讯录中不存在的成员,执行添加操作</br>
|
||||
* 4.通讯录中存在、文件中不存在的成员,保持不变</br>
|
||||
* </p>
|
||||
*
|
||||
* @param mediaId
|
||||
* 带user信息的cvs文件上传后的media_id TODO
|
||||
* @param callback
|
||||
* 接收任务执行结果的回调地址等信息
|
||||
* @return 异步任务id,最大长度为64字符
|
||||
* @see com.foxinmy.weixin4j.qy.model.Callback
|
||||
* @see <a
|
||||
* href="http://qydev.weixin.qq.com/wiki/index.php?title=%E5%BC%82%E6%AD%A5%E4%BB%BB%E5%8A%A1%E6%8E%A5%E5%8F%A3#.E5.A2.9E.E9.87.8F.E6.9B.B4.E6.96.B0.E6.88.90.E5.91.98">批量更新成员</a>
|
||||
* @throws WeixinException
|
||||
*/
|
||||
public String syncuser(String mediaId, Callback callback)
|
||||
throws WeixinException {
|
||||
String batch_syncuser_uri = getRequestUri("batch_syncuser_uri");
|
||||
return batch(batch_syncuser_uri, mediaId, callback);
|
||||
}
|
||||
|
||||
private String batch(String batchUrl, String mediaId, Callback callback)
|
||||
throws WeixinException {
|
||||
Token token = tokenHolder.getToken();
|
||||
JSONObject obj = new JSONObject();
|
||||
obj.put("media_id", mediaId);
|
||||
obj.put("callback", callback);
|
||||
Response response = request.post(
|
||||
String.format(batchUrl, token.getAccessToken()),
|
||||
obj.toJSONString());
|
||||
return response.getAsJson().getString("jobid");
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量覆盖成员,本接口以userid为主键,全量覆盖企业号通讯录成员,任务完成后企业号通讯录成员与提交的文件完全保持一致。
|
||||
* <p>
|
||||
* 1.模板中的部门需填写部门ID,多个部门用分号分隔,部门ID必须为数字</br> 2.文件中存在、通讯录中也存在的成员,完全以文件为准</br>
|
||||
* 3.文件中存在、通讯录中不存在的成员,执行添加操作</br>
|
||||
* 4.通讯录中存在、文件中不存在的成员,执行删除操作。出于安全考虑,如果需要删除的成员多于50人,
|
||||
* 且多于现有人数的20%以上,系统将中止导入并返回相应的错误码
|
||||
* </p>
|
||||
*
|
||||
* @param mediaId
|
||||
* 带userid信息的cvs文件上传后的media_id
|
||||
* @param callback
|
||||
* 接收任务执行结果的回调地址等信息
|
||||
* @return 异步任务id,最大长度为64字符
|
||||
* @see com.foxinmy.weixin4j.qy.model.Callback
|
||||
* @see <a
|
||||
* href="http://qydev.weixin.qq.com/wiki/index.php?title=%E5%BC%82%E6%AD%A5%E4%BB%BB%E5%8A%A1%E6%8E%A5%E5%8F%A3#.E5.85.A8.E9.87.8F.E8.A6.86.E7.9B.96.E6.88.90.E5.91.98">批量覆盖成员</a>
|
||||
* @throws WeixinException
|
||||
*/
|
||||
public String replaceuser(String mediaId, Callback callback)
|
||||
throws WeixinException {
|
||||
String batch_replaceuser_uri = getRequestUri("batch_replaceuser_uri");
|
||||
return batch(batch_replaceuser_uri, mediaId, callback);
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量覆盖部门,本接口以partyid为键,全量覆盖企业号通讯录组织架构,任务完成后企业号通讯录组织架构与提交的文件完全保持一致。
|
||||
* <p>
|
||||
* 1.文件中存在、通讯录中也存在的部门,执行修改操作</br> 2.文件中存在、通讯录中不存在的部门,执行添加操作</br>
|
||||
* 3.文件中不存在、通讯录中存在的部门,当部门为空时,执行删除操作</br>
|
||||
* 4.CSV文件中,部门名称、部门ID、父部门ID为必填字段,部门ID必须为数字;排序为可选字段,置空或填0不修改排序
|
||||
* </p>
|
||||
*
|
||||
* @param mediaId
|
||||
* 带partyid信息的cvs文件上传后的media_id
|
||||
* @param callback
|
||||
* 接收任务执行结果的回调地址等信息
|
||||
* @return 异步任务id,最大长度为64字符
|
||||
* @see com.foxinmy.weixin4j.qy.model.Callback
|
||||
* @see <a
|
||||
* href="http://qydev.weixin.qq.com/wiki/index.php?title=%E5%BC%82%E6%AD%A5%E4%BB%BB%E5%8A%A1%E6%8E%A5%E5%8F%A3#.E5.85.A8.E9.87.8F.E8.A6.86.E7.9B.96.E9.83.A8.E9.97.A8">批量覆盖部门</a>
|
||||
* @throws WeixinException
|
||||
*/
|
||||
public String replaceparty(String mediaId, Callback callback)
|
||||
throws WeixinException {
|
||||
String batch_replaceparty_uri = getRequestUri("batch_replaceparty_uri");
|
||||
return batch(batch_replaceparty_uri, mediaId, callback);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取异步任务执行的结果
|
||||
*
|
||||
* @param jobId
|
||||
* 任务ID
|
||||
* @return 效果信息
|
||||
* @see com.foxinmy.weixin4j.qy.model.BatchResult
|
||||
* @see <a
|
||||
* href="http://qydev.weixin.qq.com/wiki/index.php?title=%E5%BC%82%E6%AD%A5%E4%BB%BB%E5%8A%A1%E6%8E%A5%E5%8F%A3#.E8.8E.B7.E5.8F.96.E5.BC.82.E6.AD.A5.E4.BB.BB.E5.8A.A1.E7.BB.93.E6.9E.9C">获取异步任务执行结果</a>
|
||||
* @throws WeixinException
|
||||
*/
|
||||
public BatchResult getresult(String jobId) throws WeixinException {
|
||||
Token token = tokenHolder.getToken();
|
||||
String batch_getresult_uri = getRequestUri("batch_getresult_uri");
|
||||
Response response = request.get(String.format(batch_getresult_uri,
|
||||
token.getAccessToken(), jobId));
|
||||
return response.getAsObject(new TypeReference<BatchResult>() {
|
||||
});
|
||||
}
|
||||
}
|
||||
+17
-17
@@ -8,24 +8,24 @@ import com.foxinmy.weixin4j.exception.WeixinException;
|
||||
import com.foxinmy.weixin4j.http.JsonResult;
|
||||
import com.foxinmy.weixin4j.http.Response;
|
||||
import com.foxinmy.weixin4j.model.Token;
|
||||
import com.foxinmy.weixin4j.qy.model.Department;
|
||||
import com.foxinmy.weixin4j.qy.model.Party;
|
||||
import com.foxinmy.weixin4j.token.TokenHolder;
|
||||
|
||||
/**
|
||||
* 部门API
|
||||
*
|
||||
* @className DepartApi
|
||||
* @className PartyApi
|
||||
* @author jy
|
||||
* @date 2014年11月18日
|
||||
* @since JDK 1.7
|
||||
* @see com.foxinmy.weixin4j.qy.model.Department
|
||||
* @see com.foxinmy.weixin4j.qy.model.Party
|
||||
* @see <a
|
||||
* href="http://qydev.weixin.qq.com/wiki/index.php?title=%E7%AE%A1%E7%90%86%E9%83%A8%E9%97%A8">管理部门说明</a>
|
||||
*/
|
||||
public class DepartApi extends QyApi {
|
||||
public class PartyApi extends QyApi {
|
||||
private final TokenHolder tokenHolder;
|
||||
|
||||
public DepartApi(TokenHolder tokenHolder) {
|
||||
public PartyApi(TokenHolder tokenHolder) {
|
||||
this.tokenHolder = tokenHolder;
|
||||
}
|
||||
|
||||
@@ -34,13 +34,13 @@ public class DepartApi extends QyApi {
|
||||
*
|
||||
* @param depart
|
||||
* 部门对象
|
||||
* @see com.foxinmy.weixin4j.qy.model.Department
|
||||
* @see com.foxinmy.weixin4j.qy.model.Party
|
||||
* @see <a
|
||||
* href="http://qydev.weixin.qq.com/wiki/index.php?title=%E7%AE%A1%E7%90%86%E9%83%A8%E9%97%A8#.E5.88.9B.E5.BB.BA.E9.83.A8.E9.97.A8">创建部门说明</a>
|
||||
* @return 部门ID
|
||||
* @throws WeixinException
|
||||
*/
|
||||
public int createDepart(Department depart) throws WeixinException {
|
||||
public int createParty(Party depart) throws WeixinException {
|
||||
String department_create_uri = getRequestUri("department_create_uri");
|
||||
JSONObject obj = (JSONObject) JSON.toJSON(depart);
|
||||
obj.remove("id");
|
||||
@@ -56,15 +56,15 @@ public class DepartApi extends QyApi {
|
||||
*
|
||||
* @param depart
|
||||
* 部门对象
|
||||
* @see com.foxinmy.weixin4j.qy.model.Department
|
||||
* @see com.foxinmy.weixin4j.qy.model.Party
|
||||
* @see <a
|
||||
* href="http://qydev.weixin.qq.com/wiki/index.php?title=%E7%AE%A1%E7%90%86%E9%83%A8%E9%97%A8#.E6.9B.B4.E6.96.B0.E9.83.A8.E9.97.A8">更新部门说明</a>
|
||||
* @return 处理结果
|
||||
* @throws WeixinException
|
||||
*/
|
||||
public JsonResult updateDepart(Department depart) throws WeixinException {
|
||||
public JsonResult updateParty(Party party) throws WeixinException {
|
||||
String department_update_uri = getRequestUri("department_update_uri");
|
||||
JSONObject obj = (JSONObject) JSON.toJSON(depart);
|
||||
JSONObject obj = (JSONObject) JSON.toJSON(party);
|
||||
Token token = tokenHolder.getToken();
|
||||
Response response = request.post(
|
||||
String.format(department_update_uri, token.getAccessToken()),
|
||||
@@ -75,37 +75,37 @@ public class DepartApi extends QyApi {
|
||||
/**
|
||||
* 查询部门列表(以部门的order字段从小到大排列)
|
||||
*
|
||||
* @param departId 部门ID。获取指定部门ID下的子部门
|
||||
* @see com.foxinmy.weixin4j.qy.model.Department
|
||||
* @param partId 部门ID。获取指定部门ID下的子部门
|
||||
* @see com.foxinmy.weixin4j.qy.model.Party
|
||||
* @see <a
|
||||
* href="http://qydev.weixin.qq.com/wiki/index.php?title=%E7%AE%A1%E7%90%86%E9%83%A8%E9%97%A8#.E8.8E.B7.E5.8F.96.E9.83.A8.E9.97.A8.E5.88.97.E8.A1.A8">获取部门列表</a>
|
||||
* @return 部门列表
|
||||
* @throws WeixinException
|
||||
*/
|
||||
public List<Department> listDepart(int departId) throws WeixinException {
|
||||
public List<Party> listParty(int partId) throws WeixinException {
|
||||
String department_list_uri = getRequestUri("department_list_uri");
|
||||
Token token = tokenHolder.getToken();
|
||||
Response response = request.post(String.format(department_list_uri,
|
||||
token.getAccessToken()));
|
||||
return JSON.parseArray(response.getAsJson().getString("department"),
|
||||
Department.class);
|
||||
Party.class);
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除部门(不能删除根部门;不能删除含有子部门、成员的部门)
|
||||
*
|
||||
* @param departId
|
||||
* @param partId
|
||||
* 部门ID
|
||||
* @see <a
|
||||
* href="http://qydev.weixin.qq.com/wiki/index.php?title=%E7%AE%A1%E7%90%86%E9%83%A8%E9%97%A8#.E5.88.A0.E9.99.A4.E9.83.A8.E9.97.A8">删除部门说明</a>
|
||||
* @return 处理结果
|
||||
* @throws WeixinException
|
||||
*/
|
||||
public JsonResult deleteDepart(int departId) throws WeixinException {
|
||||
public JsonResult deleteParty(int partId) throws WeixinException {
|
||||
String department_delete_uri = getRequestUri("department_delete_uri");
|
||||
Token token = tokenHolder.getToken();
|
||||
Response response = request.post(String.format(department_delete_uri,
|
||||
token.getAccessToken(), departId));
|
||||
token.getAccessToken(), partId));
|
||||
return response.getAsJsonResult();
|
||||
}
|
||||
}
|
||||
+11
-1
@@ -64,4 +64,14 @@ getcallbackip_uri={api_base_url}/getcallbackip?access_token=%s
|
||||
# \u83b7\u53d6\u4f01\u4e1a\u53f7\u5e94\u7528\u4fe1\u606f
|
||||
agent_get_uri={api_base_url}/agent/get?access_token=%s&agentid=%d
|
||||
# \u8bbe\u7f6e\u4f01\u4e1a\u53f7\u5e94\u7528\u4fe1\u606f
|
||||
agent_set_uri={api_base_url}/agent/set?access_token=%s
|
||||
agent_set_uri={api_base_url}/agent/set?access_token=%s
|
||||
# \u6279\u91cf\u9080\u8bf7\u6210\u5458\u5173\u6ce8
|
||||
batch_inviteuser_uri={api_base_url}/batch/inviteuser?access_token=%s
|
||||
# \u6279\u91cf\u66f4\u65b0\u6210\u5458
|
||||
batch_syncuser_uri={api_base_url}/batch/syncuser?access_token=%s
|
||||
# \u6279\u91cf\u8986\u76d6\u6210\u5458
|
||||
batch_replaceuser_uri={api_base_url}/batch/replaceuser?access_token=%s
|
||||
# \u6279\u91cf\u8986\u76d6\u90e8\u95e8
|
||||
batch_replaceparty_uri={api_base_url}/batch/replaceparty?access_token=%s
|
||||
# \u83b7\u53d6\u5f02\u6b65\u4efb\u52a1\u6267\u884c\u7ed3\u679c
|
||||
batch_getresult_uri={api_base_url}/batch/getresult?access_token=%s&jobid=%s
|
||||
+99
@@ -0,0 +1,99 @@
|
||||
package com.foxinmy.weixin4j.qy.model;
|
||||
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.foxinmy.weixin4j.http.JsonResult;
|
||||
import com.foxinmy.weixin4j.qy.type.BatchStatus;
|
||||
import com.foxinmy.weixin4j.qy.type.BatchType;
|
||||
|
||||
/**
|
||||
* 异步任务执行结果
|
||||
*
|
||||
* @className BatchResult
|
||||
* @author jy
|
||||
* @date 2015年3月31日
|
||||
* @since JDK 1.7
|
||||
* @see
|
||||
*/
|
||||
public class BatchResult extends JsonResult {
|
||||
|
||||
private static final long serialVersionUID = 4985338631992208903L;
|
||||
/**
|
||||
* 任务状态
|
||||
*/
|
||||
private int status;
|
||||
/**
|
||||
* 任务类型
|
||||
*/
|
||||
private String type;
|
||||
/**
|
||||
* 任务运行总条数
|
||||
*/
|
||||
private int total;
|
||||
/**
|
||||
* 目前运行百分比,当任务完成时为100
|
||||
*/
|
||||
private int percentage;
|
||||
/**
|
||||
* 预估剩余时间(单位:分钟),当任务完成时为0
|
||||
*/
|
||||
private int remaintime;
|
||||
/**
|
||||
* 详细的处理结果 TODO
|
||||
*/
|
||||
private JSONArray result;
|
||||
|
||||
public BatchStatus getStatus() {
|
||||
return BatchStatus.values()[status - 1];
|
||||
}
|
||||
|
||||
public void setStatus(int status) {
|
||||
this.status = status;
|
||||
}
|
||||
|
||||
public BatchType getType() {
|
||||
return BatchType.valueOf(type);
|
||||
}
|
||||
|
||||
public void setType(String type) {
|
||||
this.type = type;
|
||||
}
|
||||
|
||||
public int getTotal() {
|
||||
return total;
|
||||
}
|
||||
|
||||
public void setTotal(int total) {
|
||||
this.total = total;
|
||||
}
|
||||
|
||||
public int getPercentage() {
|
||||
return percentage;
|
||||
}
|
||||
|
||||
public void setPercentage(int percentage) {
|
||||
this.percentage = percentage;
|
||||
}
|
||||
|
||||
public int getRemaintime() {
|
||||
return remaintime;
|
||||
}
|
||||
|
||||
public void setRemaintime(int remaintime) {
|
||||
this.remaintime = remaintime;
|
||||
}
|
||||
|
||||
public JSONArray getResult() {
|
||||
return result;
|
||||
}
|
||||
|
||||
public void setResult(JSONArray result) {
|
||||
this.result = result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "BatchResult [status=" + status + ", type=" + type + ", total="
|
||||
+ total + ", percentage=" + percentage + ", remaintime="
|
||||
+ remaintime + ", result=" + result + "]";
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,52 @@
|
||||
package com.foxinmy.weixin4j.qy.model;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
import com.alibaba.fastjson.annotation.JSONField;
|
||||
|
||||
/**
|
||||
* 调用某些接口时填入的回调信息
|
||||
*
|
||||
* @className Callback
|
||||
* @author jy
|
||||
* @date 2015年3月30日
|
||||
* @since JDK 1.7
|
||||
* @see
|
||||
*/
|
||||
public class Callback implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 8575808461248605317L;
|
||||
|
||||
/**
|
||||
* 企业应用接收企业号推送请求的访问协议和地址,支持http或https协议
|
||||
*/
|
||||
private String url;
|
||||
/**
|
||||
* 用于生成签名
|
||||
*/
|
||||
private String token;
|
||||
/**
|
||||
* 用于消息体的加密,是AES密钥的Base64编码
|
||||
*/
|
||||
@JSONField(name = "encodingaeskey")
|
||||
private String aesKey;
|
||||
|
||||
public Callback(String url, String token, String aesKey) {
|
||||
this.url = url;
|
||||
this.token = token;
|
||||
this.aesKey = aesKey;
|
||||
}
|
||||
|
||||
public String getUrl() {
|
||||
return url;
|
||||
}
|
||||
|
||||
public String getToken() {
|
||||
return token;
|
||||
}
|
||||
|
||||
public String getAesKey() {
|
||||
return aesKey;
|
||||
}
|
||||
|
||||
}
|
||||
+64
@@ -0,0 +1,64 @@
|
||||
package com.foxinmy.weixin4j.qy.model;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
/**
|
||||
* id参数集
|
||||
*
|
||||
* @className IdParameter
|
||||
* @author jy
|
||||
* @date 2015年3月30日
|
||||
* @since JDK 1.7
|
||||
* @see
|
||||
*/
|
||||
public class IdParameter implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = -2689758682205591133L;
|
||||
|
||||
private Map<String, String> parameterMap;
|
||||
|
||||
public IdParameter() {
|
||||
this.parameterMap = new HashMap<String, String>();
|
||||
}
|
||||
|
||||
/**
|
||||
* 成员ID列表,最多支持1000个
|
||||
*
|
||||
* @param userIds
|
||||
* @return
|
||||
*/
|
||||
public IdParameter putUseIds(String... userIds) {
|
||||
parameterMap.put("touser", StringUtils.join(userIds, '|'));
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* 部门ID列表,最多支持100个
|
||||
*
|
||||
* @param partyIds
|
||||
* @return
|
||||
*/
|
||||
public IdParameter putUseIds(int... partyIds) {
|
||||
parameterMap.put("toparty", StringUtils.join(partyIds, '|'));
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* 标签ID列表
|
||||
*
|
||||
* @param tagIds
|
||||
* @return
|
||||
*/
|
||||
public IdParameter putTagIds(int... tagIds) {
|
||||
parameterMap.put("totag", StringUtils.join(tagIds, '|'));
|
||||
return this;
|
||||
}
|
||||
|
||||
public Map<String, String> getParameter() {
|
||||
return parameterMap;
|
||||
}
|
||||
}
|
||||
+6
-6
@@ -5,14 +5,14 @@ import java.io.Serializable;
|
||||
/**
|
||||
* 部门对象
|
||||
*
|
||||
* @className Department
|
||||
* @className Party
|
||||
* @author jy
|
||||
* @date 2014年11月18日
|
||||
* @since JDK 1.7
|
||||
* @see <a
|
||||
* href="http://qydev.weixin.qq.com/wiki/index.php?title=%E7%AE%A1%E7%90%86%E9%83%A8%E9%97%A8">管理部门说明</a>
|
||||
*/
|
||||
public class Department implements Serializable {
|
||||
public class Party implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = -2567893218591084288L;
|
||||
/**
|
||||
@@ -32,15 +32,15 @@ public class Department implements Serializable {
|
||||
*/
|
||||
private int order;
|
||||
|
||||
public Department() {
|
||||
public Party() {
|
||||
|
||||
}
|
||||
|
||||
public Department(String name) {
|
||||
public Party(String name) {
|
||||
this(name, 1, 1);
|
||||
}
|
||||
|
||||
public Department(String name, int parentid, int order) {
|
||||
public Party(String name, int parentid, int order) {
|
||||
this.name = name;
|
||||
this.parentid = parentid;
|
||||
this.order = order;
|
||||
@@ -80,7 +80,7 @@ public class Department implements Serializable {
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "Department [id=" + id + ", name=" + name + ", parentid="
|
||||
return "Party [id=" + id + ", name=" + name + ", parentid="
|
||||
+ parentid + ", order=" + order + "]";
|
||||
}
|
||||
}
|
||||
+34
@@ -0,0 +1,34 @@
|
||||
package com.foxinmy.weixin4j.qy.type;
|
||||
|
||||
/**
|
||||
* 异步任务的状态
|
||||
*
|
||||
* @className BatchStatus
|
||||
* @author jy
|
||||
* @date 2015年3月31日
|
||||
* @since JDK 1.7
|
||||
* @see
|
||||
*/
|
||||
public enum BatchStatus {
|
||||
/**
|
||||
* 开始
|
||||
*/
|
||||
START(1),
|
||||
/**
|
||||
* 进行中
|
||||
*/
|
||||
PROCESS(2),
|
||||
/**
|
||||
* 完成
|
||||
*/
|
||||
DONE(3);
|
||||
private int code;
|
||||
|
||||
BatchStatus(int code) {
|
||||
this.code = code;
|
||||
}
|
||||
|
||||
public int getCode() {
|
||||
return code;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
package com.foxinmy.weixin4j.qy.type;
|
||||
|
||||
/**
|
||||
* 异步任务的类型
|
||||
*
|
||||
* @className BatchType
|
||||
* @author jy
|
||||
* @date 2015年3月31日
|
||||
* @since JDK 1.7
|
||||
* @see
|
||||
*/
|
||||
public enum BatchType {
|
||||
/**
|
||||
* 增量更新成员
|
||||
*/
|
||||
SYNC_USER(1),
|
||||
/**
|
||||
* 全量覆盖成员
|
||||
*/
|
||||
REPLACE_USER(2),
|
||||
/**
|
||||
* 邀请成员关注
|
||||
*/
|
||||
INVITE_USER(3),
|
||||
/**
|
||||
* 全量覆盖部门
|
||||
*/
|
||||
REPLACE_PARTY(4);
|
||||
|
||||
private int code;
|
||||
|
||||
BatchType(int code) {
|
||||
this.code = code;
|
||||
}
|
||||
|
||||
public int getCode() {
|
||||
return code;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
package com.foxinmy.weixin4j.qy.test;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
||||
import com.foxinmy.weixin4j.exception.WeixinException;
|
||||
import com.foxinmy.weixin4j.qy.api.BatchApi;
|
||||
import com.foxinmy.weixin4j.qy.model.BatchResult;
|
||||
import com.foxinmy.weixin4j.qy.model.Callback;
|
||||
|
||||
/**
|
||||
* 异步任务测试
|
||||
*
|
||||
* @className BatchTest
|
||||
* @author jy
|
||||
* @date 2015年3月31日
|
||||
* @since JDK 1.7
|
||||
* @see
|
||||
*/
|
||||
public class BatchTest extends TokenTest {
|
||||
public BatchApi batchApi;
|
||||
|
||||
@Before
|
||||
public void init() {
|
||||
this.batchApi = new BatchApi(tokenHolder);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void replaceparty() throws WeixinException {
|
||||
String jobId = batchApi.replaceparty("mediaId", new Callback("url", "token", "aesKey"));
|
||||
System.err.println(jobId);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getresult() throws WeixinException {
|
||||
BatchResult result = batchApi.getresult("jobId");
|
||||
System.err.println(result);
|
||||
}
|
||||
}
|
||||
+13
-13
@@ -8,51 +8,51 @@ import org.junit.Test;
|
||||
|
||||
import com.foxinmy.weixin4j.exception.WeixinException;
|
||||
import com.foxinmy.weixin4j.http.JsonResult;
|
||||
import com.foxinmy.weixin4j.qy.api.DepartApi;
|
||||
import com.foxinmy.weixin4j.qy.model.Department;
|
||||
import com.foxinmy.weixin4j.qy.api.PartyApi;
|
||||
import com.foxinmy.weixin4j.qy.model.Party;
|
||||
|
||||
/**
|
||||
* 部门API测试
|
||||
*
|
||||
* @className DepartTest
|
||||
* @className PartyTest
|
||||
* @author jy
|
||||
* @date 2014年11月18日
|
||||
* @since JDK 1.7
|
||||
* @see
|
||||
*/
|
||||
public class DepartTest extends TokenTest {
|
||||
public DepartApi departApi;
|
||||
public class PartyTest extends TokenTest {
|
||||
public PartyApi partyApi;
|
||||
|
||||
@Before
|
||||
public void init() {
|
||||
this.departApi = new DepartApi(tokenHolder);
|
||||
this.partyApi = new PartyApi(tokenHolder);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void create() throws WeixinException {
|
||||
Department depart = new Department("苦逼组");
|
||||
int id = departApi.createDepart(depart);
|
||||
Party Party = new Party("苦逼组");
|
||||
int id = partyApi.createParty(Party);
|
||||
Assert.assertTrue(id > 0);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void update() throws WeixinException {
|
||||
Department depart = new Department("苦逼组111");
|
||||
depart.setId(2);
|
||||
JsonResult result = departApi.updateDepart(depart);
|
||||
Party Party = new Party("苦逼组111");
|
||||
Party.setId(2);
|
||||
JsonResult result = partyApi.updateParty(Party);
|
||||
Assert.assertEquals("updated", result.getDesc());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void list() throws WeixinException {
|
||||
List<Department> list = departApi.listDepart(1);
|
||||
List<Party> list = partyApi.listParty(1);
|
||||
Assert.assertFalse(list.isEmpty());
|
||||
System.out.println(list);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void delete() throws WeixinException {
|
||||
JsonResult result = departApi.deleteDepart(2);
|
||||
JsonResult result = partyApi.deleteParty(2);
|
||||
Assert.assertEquals("deleted", result.getDesc());
|
||||
}
|
||||
}
|
||||
@@ -71,4 +71,8 @@ weixin4j-qy-server
|
||||
|
||||
* 2015-03-25
|
||||
|
||||
+ 新增deploy.xml远程部署ant脚本
|
||||
+ 新增deploy.xml远程部署ant脚本
|
||||
|
||||
* 2015-04-01
|
||||
|
||||
+ 新增批量任务执行完成事件
|
||||
+21
@@ -0,0 +1,21 @@
|
||||
package com.foxinmy.weixin4j.qy.action.event;
|
||||
|
||||
import com.foxinmy.weixin4j.action.DebugAction;
|
||||
import com.foxinmy.weixin4j.action.mapping.ActionAnnotation;
|
||||
import com.foxinmy.weixin4j.msg.event.BatchjobresultMessage;
|
||||
import com.foxinmy.weixin4j.type.EventType;
|
||||
import com.foxinmy.weixin4j.type.MessageType;
|
||||
|
||||
/**
|
||||
* 异步任务完成事件
|
||||
*
|
||||
* @className BatchJobAction
|
||||
* @author jy
|
||||
* @date 2015年3月31日
|
||||
* @since JDK 1.7
|
||||
* @see com.foxinmy.weixin4j.msg.event.BatchjobresultMessage
|
||||
*/
|
||||
@ActionAnnotation(msgType = MessageType.event, eventType = { EventType.batch_job_result })
|
||||
public class BatchJobAction extends DebugAction<BatchjobresultMessage> {
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user