Please wait. This can take some minutes ...
Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance.
Project price only 1 $
You can buy this project and download/modify it how often you want.
com.foxinmy.weixin4j.qy.WeixinProxy Maven / Gradle / Ivy
package com.foxinmy.weixin4j.qy;
import java.io.InputStream;
import java.util.List;
import com.foxinmy.weixin4j.cache.CacheStorager;
import com.foxinmy.weixin4j.cache.FileCacheStorager;
import com.foxinmy.weixin4j.exception.WeixinException;
import com.foxinmy.weixin4j.http.weixin.ApiResult;
import com.foxinmy.weixin4j.model.Button;
import com.foxinmy.weixin4j.model.Token;
import com.foxinmy.weixin4j.model.WeixinAccount;
import com.foxinmy.weixin4j.model.media.MediaCounter;
import com.foxinmy.weixin4j.model.media.MediaDownloadResult;
import com.foxinmy.weixin4j.model.media.MediaItem;
import com.foxinmy.weixin4j.model.media.MediaRecord;
import com.foxinmy.weixin4j.model.media.MediaUploadResult;
import com.foxinmy.weixin4j.model.paging.Pageable;
import com.foxinmy.weixin4j.qy.api.AgentApi;
import com.foxinmy.weixin4j.qy.api.BatchApi;
import com.foxinmy.weixin4j.qy.api.ChatApi;
import com.foxinmy.weixin4j.qy.api.HelperApi;
import com.foxinmy.weixin4j.qy.api.MediaApi;
import com.foxinmy.weixin4j.qy.api.MenuApi;
import com.foxinmy.weixin4j.qy.api.NotifyApi;
import com.foxinmy.weixin4j.qy.api.OauthApi;
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.message.ChatMessage;
import com.foxinmy.weixin4j.qy.message.CustomeMessage;
import com.foxinmy.weixin4j.qy.message.NotifyMessage;
import com.foxinmy.weixin4j.qy.model.AgentInfo;
import com.foxinmy.weixin4j.qy.model.AgentOverview;
import com.foxinmy.weixin4j.qy.model.AgentSetter;
import com.foxinmy.weixin4j.qy.model.BatchResult;
import com.foxinmy.weixin4j.qy.model.Callback;
import com.foxinmy.weixin4j.qy.model.ChatInfo;
import com.foxinmy.weixin4j.qy.model.ChatMute;
import com.foxinmy.weixin4j.qy.model.Contacts;
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.suite.WeixinTokenSuiteCreator;
import com.foxinmy.weixin4j.qy.token.WeixinTicketCreator;
import com.foxinmy.weixin4j.qy.token.WeixinTokenCreator;
import com.foxinmy.weixin4j.qy.type.ChatType;
import com.foxinmy.weixin4j.qy.type.InviteType;
import com.foxinmy.weixin4j.qy.type.KfType;
import com.foxinmy.weixin4j.qy.type.UserStatus;
import com.foxinmy.weixin4j.token.PerTicketManager;
import com.foxinmy.weixin4j.token.TokenCreator;
import com.foxinmy.weixin4j.token.TokenManager;
import com.foxinmy.weixin4j.tuple.MpArticle;
import com.foxinmy.weixin4j.type.MediaType;
import com.foxinmy.weixin4j.type.TicketType;
import com.foxinmy.weixin4j.util.Weixin4jConfigUtil;
/**
* 微信企业号接口实现
*
* @className WeixinProxy
* @author jinyu([email protected] )
* @date 2014年11月19日
* @since JDK 1.6
* @see api文档
*/
public class WeixinProxy {
/**
* 授权API
*/
private final OauthApi oauthApi;
/**
* 媒体素材API
*/
private final MediaApi mediaApi;
/**
* 菜单API
*/
private final MenuApi menuApi;
/**
* 消息服务API
*/
private final NotifyApi notifyApi;
/**
* 部门API
*/
private final PartyApi partyApi;
/**
* 成员API
*/
private final UserApi userApi;
/**
* 标签API
*/
private final TagApi tagApi;
/**
* 辅助API
*/
private final HelperApi helperApi;
/**
* 应用API
*/
private final AgentApi agentApi;
/**
* 批量操作API
*/
private final BatchApi batchApi;
/**
* 聊天服务API
*/
private final ChatApi chatApi;
/**
* token管理
*/
private final TokenManager tokenManager;
/**
* 账号信息
*/
private final WeixinAccount weixinAccount;
/**
* token存储
*/
private final CacheStorager cacheStorager;
/**
* 微信接口实现(使用weixin4j.properties配置的account账号信息,
* 使用FileCacheStorager文件方式缓存TOKEN)
*/
public WeixinProxy() {
this(new FileCacheStorager());
}
/**
* 微信接口实现(使用weixin4j.properties配置的account账号信息)
*
* @param cacheStorager
* token管理
*/
public WeixinProxy(CacheStorager cacheStorager) {
this(Weixin4jConfigUtil.getWeixinAccount(), cacheStorager);
}
/**
* 微信接口实现
*
* @param weixinAccount
* 账号信息
* @param cacheStorager
* token管理
*/
public WeixinProxy(WeixinAccount weixinAccount,
CacheStorager cacheStorager) {
this(weixinAccount, new WeixinTokenCreator(weixinAccount.getId(),
weixinAccount.getSecret()), cacheStorager);
}
/**
* 第三方套件(永久授权码机制)
*
* @param perTicketManager
* 第三方套件永久授权码
* {@link com.foxinmy.weixin4j.qy.api.SuiteApi#getPerCodeManager(String)}
* @param suiteTokenManager
* 第三方套件凭证token
* {@link com.foxinmy.weixin4j.qy.api.SuiteApi#getTokenManager}
* @see com.foxinmy.weixin4j.qy.api.SuiteApi
* @see WeixinSuiteProxy#getWeixinProxy(String, String)
*/
public WeixinProxy(PerTicketManager perTicketManager,
TokenManager suiteTokenManager) {
this(
new WeixinAccount(perTicketManager.getThirdId(),
perTicketManager.getThirdSecret()),
new WeixinTokenSuiteCreator(perTicketManager, suiteTokenManager),
perTicketManager.getCacheStorager());
}
/**
* 微信接口实现
*
* @param settings
* 配置信息
* @param tokenManager
* token管理
*/
private WeixinProxy(WeixinAccount weixinAccount, TokenCreator tokenCreator,
CacheStorager cacheStorager) {
if (weixinAccount == null) {
throw new IllegalArgumentException("weixinAccount must not be empty");
}
if (tokenCreator == null) {
throw new IllegalArgumentException("tokenCreator must not be empty");
}
if (cacheStorager == null) {
throw new IllegalArgumentException(
"cacheStorager must not be empty");
}
this.tokenManager = new TokenManager(tokenCreator, cacheStorager);
this.weixinAccount = weixinAccount;
this.cacheStorager = cacheStorager;
this.oauthApi = new OauthApi(weixinAccount);
this.partyApi = new PartyApi(tokenManager);
this.userApi = new UserApi(tokenManager);
this.tagApi = new TagApi(tokenManager);
this.helperApi = new HelperApi(tokenManager);
this.agentApi = new AgentApi(tokenManager);
this.batchApi = new BatchApi(tokenManager);
this.notifyApi = new NotifyApi(tokenManager);
this.menuApi = new MenuApi(tokenManager);
this.mediaApi = new MediaApi(tokenManager);
this.chatApi = new ChatApi(tokenManager);
}
/**
* token获取
*
* @return
*/
public TokenManager getTokenManager() {
return this.tokenManager;
}
/**
* 获取oauth授权API
*
* @see com.foxinmy.weixin4j.qy.api.OauthApi
* @return
*/
public OauthApi getOauthApi() {
return oauthApi;
}
/**
* 获取微信账号信息
*
* @return
*/
public WeixinAccount getWeixinAccount() {
return weixinAccount;
}
/**
* 获取JSSDK Ticket的tokenManager
*
* @param ticketType
* 票据类型
* @return
*/
public TokenManager getTicketManager(TicketType ticketType) {
return new TokenManager(new WeixinTicketCreator(weixinAccount.getId(),
ticketType, this.tokenManager), cacheStorager);
}
/**
* 发送消息提醒(需要管理员对应用有使用权限,对收件人touser、toparty、totag有查看权限,否则本次调用失败)
*
* 1) 发送人员列表存在错误的userid:执行发送,开发者需注意返回结果说明
* 2)发送人员不在通讯录权限范围内:不执行发送任务,返回首个出错的userid
* 3)发送人员不在应用可见范围内:不执行发送任务,返回首个出错的userid
*
*
* @param message
* 消息对象
* @return 如果对应用或收件人、部门、标签任何一个无权限,则本次发送失败;如果收件人、部门或标签不存在,发送仍然执行,但返回无效的部分
* { "errcode": 0, "errmsg": "ok", "invaliduser": "UserID1",
* "invalidparty":"PartyID1", "invalidtag":"TagID1" }
* @throws WeixinException
* @see com.foxinmy.weixin4j.qy.api.NotifyApi
* @see
* 发送接口说明
* @see
* 发送格式说明
* @see com.foxinmy.weixin4j.tuple.Text
* @see com.foxinmy.weixin4j.tuple.Image
* @see com.foxinmy.weixin4j.tuple.Voice
* @see com.foxinmy.weixin4j.tuple.Video
* @see com.foxinmy.weixin4j.tuple.File
* @see com.foxinmy.weixin4j.tuple.News
* @see com.foxinmy.weixin4j.tuple.MpNews
* @see com.foxinmy.weixin4j.qy.model.IdParameter
*/
public IdParameter sendNotifyMessage(NotifyMessage message)
throws WeixinException {
return notifyApi.sendNotifyMessage(message);
}
/**
* 发送客服消息
*
* @param message
* 消息对象
* @return 发送结果
* @see
* 客服接口说明
* @see com.foxinmy.weixin4j.qy.api.NotifyApi
* @see com.foxinmy.weixin4j.tuple.Text
* @see com.foxinmy.weixin4j.tuple.Image
* @see com.foxinmy.weixin4j.tuple.Voice
* @see com.foxinmy.weixin4j.tuple.Video
* @see com.foxinmy.weixin4j.tuple.File
* @see com.foxinmy.weixin4j.qy.message.CustomeMessage
* @throws WeixinException
*/
public ApiResult sendCustomeMessage(CustomeMessage message)
throws WeixinException {
return notifyApi.sendCustomeMessage(message);
}
/**
* 获取客服列表
*
* @param kfType
* 客服类型 为空时返回全部类型的客服
* @return 第一个元素为内部客服(internal),第二个参数为外部客服(external)
* @see com.foxinmy.weixin4j.qy.api.NotifyApi
* @see com.foxinmy.weixin4j.qy.model.IdParameter
* @see
* 客服列表
* @throws WeixinException
*/
public IdParameter[] getKfList(KfType kfType) throws WeixinException {
return notifyApi.getKfList(kfType);
}
/**
* 自定义菜单(管理员须拥有应用的管理权限 并且应用必须设置在回调模式)
*
* @param agentid
* 应用ID
*
* @param buttons
* 菜单列表
* @throws WeixinException
* @see com.foxinmy.weixin4j.qy.api.MenuApi
* @see
* 创建自定义菜单
* @see com.foxinmy.weixin4j.model.Button
*/
public ApiResult createMenu(int agentid, List buttons)
throws WeixinException {
return menuApi.createMenu(agentid, buttons);
}
/**
* 查询菜单(管理员须拥有应用的管理权限 并且应用必须设置在回调模式。)
*
* @param agentid
* 应用ID
* @return 菜单集合
* @throws WeixinException
* @see com.foxinmy.weixin4j.qy.api.MenuApi
* @see
* 查询菜单
* @see com.foxinmy.weixin4j.model.Button
*/
public List getMenu(int agentid) throws WeixinException {
return menuApi.getMenu(agentid);
}
/**
* 删除菜单(管理员须拥有应用的管理权限 并且应用必须设置在回调模式)
*
* @param agentid
* 应用ID
* @throws WeixinException
* @see com.foxinmy.weixin4j.qy.api.MenuApi
* @see
* 删除菜单
* @return 处理结果
*/
public ApiResult deleteMenu(int agentid) throws WeixinException {
return menuApi.deleteMenu(agentid);
}
/**
* 上传图文消息内的图片:用于上传图片到企业号服务端,接口返回图片url,请注意,该url仅可用于图文消息的发送,
* 且每个企业每天最多只能上传100张图片。
*
* @param is
* 图片数据
* @param fileName
* 文件名
* @see
* 上传图文消息内的图片
* @return 图片url
* @see com.foxinmy.weixin4j.qy.api.MediaApi
* @throws WeixinException
*/
public String uploadImage(InputStream is, String fileName)
throws WeixinException {
return mediaApi.uploadImage(is, fileName);
}
/**
* 上传媒体文件
*
* 正常情况下返回{"type":"TYPE","media_id":"MEDIA_ID","created_at":123456789},
* 否则抛出异常.
*
*
* @param agentid
* 企业应用ID(大于0时视为上传永久媒体文件 )
* @param is
* 媒体数据流
* @param fileName
* 文件名
* @return 上传到微信服务器返回的媒体标识
* @see com.foxinmy.weixin4j.qy.api.MediaApi
* @see com.foxinmy.weixin4j.model.media.MediaUploadResult
* @see
* 上传临时素材文件说明
* @see
* 上传永久素材文件说明
* @throws WeixinException
*/
public MediaUploadResult uploadMedia(int agentid, InputStream is,
String fileName) throws WeixinException {
return mediaApi.uploadMedia(agentid, is, fileName);
}
/**
* 下载媒体文件
*
* @param agentid
* 企业应用Id(大于0时视为获取永久媒体文件 )
* @param mediaId
* 媒体ID
* @return 媒体下载结果
* @see com.foxinmy.weixin4j.model.media.MediaDownloadResult
* @see com.foxinmy.weixin4j.qy.api.MediaApi
* @see
* 获取临时媒体说明
* @see
* 获取永久媒体说明
* @throws WeixinException
*/
public MediaDownloadResult downloadMedia(int agentid, String mediaId)
throws WeixinException {
return mediaApi.downloadMedia(agentid, mediaId);
}
/**
* 上传永久图文素材
*
* 、新增的永久素材也可以在公众平台官网素材管理模块中看到,永久素材的数量是有上限的,请谨慎新增。图文消息素材和图片素材的上限为5000,
* 其他类型为1000
*
*
* @param agentid
* 企业应用的id
* @param articles
* 图文列表
* @return 上传到微信服务器返回的媒体标识
* @throws WeixinException
* @see com.foxinmy.weixin4j.qy.api.MediaApi
* @see
* 上传永久媒体素材
* @see com.foxinmy.weixin4j.tuple.MpArticle
*/
public String uploadMaterialArticle(int agentid, List articles)
throws WeixinException {
return mediaApi.uploadMaterialArticle(agentid, articles);
}
/**
* 删除永久媒体素材
*
* @param agentid
* 企业应用ID
* @param mediaId
* 媒体素材的media_id
* @return 处理结果
* @throws WeixinException
* @see com.foxinmy.weixin4j.qy.api.MediaApi
* @see
* 删除永久媒体素材
*/
public ApiResult deleteMaterialMedia(int agentid, String mediaId)
throws WeixinException {
return mediaApi.deleteMaterialMedia(agentid, mediaId);
}
/**
* 下载永久图文素材
*
* @param agentid
* 企业应用ID
* @param mediaId
* 媒体素材的media_id
* @return 图文列表
* @throws WeixinException
* @see {@link #downloadMedia(int, String)}
* @see com.foxinmy.weixin4j.qy.api.MediaApi
* @see com.foxinmy.weixin4j.tuple.MpArticle
*/
public List downloadArticle(int agentid, String mediaId)
throws WeixinException {
return mediaApi.downloadArticle(agentid, mediaId);
}
/**
* 修改永久图文素材
*
* @param agentid
* 企业应用的id
* @param mediaId
* 上传后的media_id
* @param articles
* 图文列表
* @return 操作结果
* @throws WeixinException
* @see com.foxinmy.weixin4j.qy.api.MediaApi
* @see
* 修改永久媒体素材
* @see com.foxinmy.weixin4j.tuple.MpArticle
*/
public String updateMaterialArticle(int agentid, String mediaId,
List articles) throws WeixinException {
return mediaApi.updateMaterialArticle(agentid, mediaId, articles);
}
/**
* 获取永久媒体素材的总数
*
* @param agentid
* 企业应用id
* @return 总数对象
* @throws WeixinException
* @see com.foxinmy.weixin4j.qy.api.MediaApi
* @see com.foxinmy.weixin4j.model.media.MediaCounter
* @see
* 获取素材总数
*/
public MediaCounter countMaterialMedia(int agentid) throws WeixinException {
return mediaApi.countMaterialMedia(agentid);
}
/**
* 获取媒体素材记录列表
*
* @param agentid
* 企业应用ID
* @param mediaType
* 素材的类型,图片(image)、视频(video)、语音 (voice)、图文(news)、文件(file)
* @param pageable
* 分页数据
* @return 媒体素材的记录对象
* @throws WeixinException
* @see com.foxinmy.weixin4j.qy.api.MediaApi
* @see com.foxinmy.weixin4j.model.media.MediaRecord
* @see com.foxinmy.weixin4j.type.MediaType
* @see com.foxinmy.weixin4j.model.media.MediaItem
* @see com.foxinmy.weixin4j.model.paging.Pageable
* @see com.foxinmy.weixin4j.model.paging.Pagedata
* @see
* 获取素材列表
*/
public MediaRecord listMaterialMedia(int agentid, MediaType mediaType,
Pageable pageable) throws WeixinException {
return mediaApi.listMaterialMedia(agentid, mediaType, pageable);
}
/**
* 获取全部的媒体素材
*
* @param agentid
* 企业应用id
* @param mediaType
* 媒体类型
* @return 素材列表
* @see com.foxinmy.weixin4j.qy.api.MediaApi
* @see {@link #listMaterialMedia(int,MediaType, Pageable)}
* @throws WeixinException
*/
public List listAllMaterialMedia(int agentid, MediaType mediaType)
throws WeixinException {
return mediaApi.listAllMaterialMedia(agentid, mediaType);
}
/**
* 创建部门(根部门的parentid为1)
*
* @param party
* 部门对象
* @see com.foxinmy.weixin4j.qy.model.Party
* @see
* 创建部门说明
* @see com.foxinmy.weixin4j.qy.api.PartyApi
* @return 部门ID
* @throws WeixinException
*/
public int createParty(Party party) throws WeixinException {
return partyApi.createParty(party);
}
/**
* 更新部门(如果非必须的字段未指定 则不更新该字段之前的设置值)
*
* @param party
* 部门对象
* @see com.foxinmy.weixin4j.qy.model.Party
* @see
* 更新部门说明
* @see com.foxinmy.weixin4j.qy.api.PartyApi
* @return 处理结果
* @throws WeixinException
*/
public ApiResult updateParty(Party party) throws WeixinException {
return partyApi.updateParty(party);
}
/**
* 查询部门列表(以部门的order字段从小到大排列)
*
* @param partyId
* 部门ID。获取指定部门ID下的子部门 传入0表示获取全部子部门
* @see com.foxinmy.weixin4j.qy.model.Party
* @see
* 获取部门列表
* @see com.foxinmy.weixin4j.qy.api.PartyApi
* @return 部门列表
* @throws WeixinException
*/
public List listParty(int partyId) throws WeixinException {
return partyApi.listParty(partyId);
}
/**
* 删除部门(不能删除根部门;不能删除含有子部门、成员的部门)
*
* @param partyId
* 部门ID
* @see
* 删除部门说明
* @see com.foxinmy.weixin4j.qy.api.PartyApi
* @return 处理结果
* @throws WeixinException
*/
public ApiResult deleteParty(int partyId) throws WeixinException {
return partyApi.deleteParty(partyId);
}
/**
* 批量上传部门
*
* @param parties
* 部门列表
* @see com.foxinmy.weixin4j.qy.api.MediaApi
* @see com.foxinmy.weixin4j.qy.api.BatchApi
* @see {@link #batchReplaceParty(String,Callback)}
* @see
* 批量任务
* @return 上传后的mediaId
* @throws WeixinException
*/
public String batchUploadParties(List parties)
throws WeixinException {
return mediaApi.batchUploadParties(parties);
}
/**
* 创建成员
*
* @param user
* 成员对象
* @see com.foxinmy.weixin4j.qy.model.User
* @see
* 创建成员说明
* @see com.foxinmy.weixin4j.qy.api.UserApi
* @return 处理结果
* @throws WeixinException
*/
public ApiResult createUser(User user) throws WeixinException {
return userApi.createUser(user);
}
/**
* 创建成员
*
* @param user
* 成员对象
* @param avatar
* 头像文件 可为空
* @see com.foxinmy.weixin4j.qy.model.User
* @see
* 创建成员说明
* @see com.foxinmy.weixin4j.qy.api.UserApi
* @return 处理结果
* @throws WeixinException
*/
public ApiResult createUser(User user, InputStream avatar)
throws WeixinException {
return userApi.createUser(user, avatar);
}
/**
* 更新用户(如果非必须的字段未指定 则不更新该字段之前的设置值)
*
* @param user
* 成员对象
* @see com.foxinmy.weixin4j.qy.model.User
* @see
* 更新成员说明
* @see com.foxinmy.weixin4j.qy.api.UserApi
* @return 处理结果
* @throws WeixinException
*/
public ApiResult updateUser(User user) throws WeixinException {
return userApi.updateUser(user);
}
/**
* 更新用户(如果非必须的字段未指定 则不更新该字段之前的设置值)
*
* @param user
* 成员对象
* @param avatar
* 头像文件
* @see com.foxinmy.weixin4j.qy.model.User
* @see
* 更新成员说明
* @see com.foxinmy.weixin4j.qy.api.UserApi
* @return 处理结果
* @throws WeixinException
*/
public ApiResult updateUser(User user, InputStream avatar)
throws WeixinException {
return userApi.updateUser(user, avatar);
}
/**
* 获取成员信息
*
* @param userid
* 成员唯一ID
* @see com.foxinmy.weixin4j.qy.model.User
* @see
* 获取成员说明
* @see com.foxinmy.weixin4j.qy.api.UserApi
* @return 成员对象
* @throws WeixinException
*/
public User getUser(String userid) throws WeixinException {
return userApi.getUser(userid);
}
/**
* code获取userid(管理员须拥有agent的使用权限;agentid必须和跳转链接时所在的企业应用ID相同。)
*
* @param code
* 通过员工授权获取到的code,每次员工授权带上的code将不一样,code只能使用一次,5分钟未被使用自动过期
* @see com.foxinmy.weixin4j.qy.model.User
* @see com.foxinmy.weixin4j.qy.api.UserApi
* @return 成员对象
* @see {@link #getUser(String)}
* @see {@link #getUserIdByCode(String)}
* @see
* 企业获取code
* @see
* 根据code获取成员信息
* @throws WeixinException
*/
public User getUserByCode(String code) throws WeixinException {
return userApi.getUserByCode(code);
}
/**
* 根据code获取成员ID信息
*
* @param code
* 通过员工授权获取到的code,每次员工授权带上的code将不一样,code只能使用一次,5分钟未被使用自动过期
* @return 两个元素的数组 第一个元素为userId或者openId
* 第二个元素为deviceId
* @see com.foxinmy.weixin4j.qy.api.UserApi
* @see
* oauth授权获取用户信息
* @throws WeixinException
*/
public String[] getUserIdByCode(String code) throws WeixinException {
return userApi.getUserIdByCode(code);
}
/**
* 获取部门成员
*
* @param partyId
* 部门ID
* @param fetchChild
* 是否递归获取子部门下面的成员
* @param userStatus
* 成员状态 status可叠加 未填写则默认为未关注(4)
* @param findDetail
* 是否获取详细信息
* @see com.foxinmy.weixin4j.qy.model.User
* @see
* 获取部门成员说明
* @see com.foxinmy.weixin4j.qy.api.UserApi
* @return 成员列表
* @throws WeixinException
*/
public List listUser(int partyId, boolean fetchChild,
UserStatus userStatus, boolean findDetail) throws WeixinException {
return userApi.listUser(partyId, fetchChild, userStatus, findDetail);
}
/**
* 获取权限范围内的所有成员列表
*
* @param userStatus
* 成员状态 未填写则默认为全部状态下的成员
* @return 成员列表
* @see com.foxinmy.weixin4j.qy.api.UserApi
* @see {@link #listUser(int, boolean, UserStatus,boolean)}
* @see {@link PartyApi#listParty(int)}
* @throws WeixinException
*/
public List listAllUser(UserStatus userStatus) throws WeixinException {
return userApi.listAllUser(userStatus);
}
/**
* 获取部门下所有状态成员(不进行递归)
*
* @param partyId
* 部门ID
* @see {@link #listUser(int, boolean, UserStatus, boolean)}
* @see com.foxinmy.weixin4j.qy.api.UserApi
* @return 成员列表
* @throws WeixinException
*/
public List listUser(int partyId) throws WeixinException {
return userApi.listUser(partyId);
}
/**
* 删除成员
*
* @param userid
* 成员ID
* @see
* 删除成员说明
* @see com.foxinmy.weixin4j.qy.api.UserApi
* @return 处理结果
* @throws WeixinException
*/
public ApiResult deleteUser(String userid) throws WeixinException {
return userApi.deleteUser(userid);
}
/**
* 批量删除成员
*
* @param userIds
* 成员列表
* @see 批量删除成员说明 userIds)
throws WeixinException {
return userApi.batchDeleteUser(userIds);
}
/**
* 邀请成员关注(管理员须拥有该成员的查看权限)
*
* @param userId
* 成员ID
* @param tips
* 推送到微信上的提示语(只有认证号可以使用)。当使用微信推送时,该字段默认为“请关注XXX企业号”,邮件邀请时,该字段无效。
* @see com.foxinmy.weixin4j.qy.api.UserApi
* @return 调用结果
* @see
* 邀请成员关注说明
* @throws WeixinException
*/
public InviteType inviteUser(String userId, String tips)
throws WeixinException {
return userApi.inviteUser(userId, tips);
}
/**
* 创建标签(创建的标签属于管理组;默认为未加锁状态)
*
* @param tag
* 标签对象; 标签名称,长度为1~64个字节,标签名不可与其他标签重名; 标签id,整型,
* 指定此参数时新增的标签会生成对应的标签id,不指定时则以目前最大的id自增。
* @see
* 创建标签说明
* @see com.foxinmy.weixin4j.qy.api.TagApi
* @return 标签ID
* @throws WeixinException
*/
public int createTag(Tag tag) throws WeixinException {
return tagApi.createTag(tag);
}
/**
* 更新标签(管理组必须是指定标签的创建者)
*
* @param tag
* 标签信息
* @see 更新标签说明
* @see com.foxinmy.weixin4j.qy.model.Tag
* @see com.foxinmy.weixin4j.qy.api.TagApi
* @return 处理结果
* @throws WeixinException
*/
public ApiResult updateTag(Tag tag) throws WeixinException {
return tagApi.updateTag(tag);
}
/**
* 删除标签(管理组必须是指定标签的创建者 并且标签的成员列表为空)
*
* @param tagId
* 标签ID
* @return 处理结果
* @see
* 删除标签说明
* @see com.foxinmy.weixin4j.qy.api.TagApi
* @throws WeixinException
*/
public ApiResult deleteTag(int tagId) throws WeixinException {
return tagApi.deleteTag(tagId);
}
/**
* 获取标签列表
*
* @see
* 获取标签列表说明
* @see com.foxinmy.weixin4j.qy.model.Tag
* @see com.foxinmy.weixin4j.qy.api.TagApi
* @return 标签列表
* @throws WeixinException
*/
public List listTag() throws WeixinException {
return tagApi.listTag();
}
/**
* 获取标签成员(管理组须拥有“获取标签成员”的接口权限,标签须对管理组可见;返回列表仅包含管理组管辖范围的成员)
*
* @param tagId
* 标签ID
* @see com.foxinmy.weixin4j.qy.model.User
* @see
* 获取标签成员说明
* @see com.foxinmy.weixin4j.qy.api.TagApi
* @return 成员列表Contacts#getUsers 和部门列表 Contacts#getPartyIds
* @throws WeixinException
*/
public Contacts getTagUsers(int tagId) throws WeixinException {
return tagApi.getTagUsers(tagId);
}
/**
* 新增标签成员(标签对管理组可见且未加锁,成员属于管理组管辖范围)
*
* @param tagId
* 标签ID
* @param userIds
* 企业成员ID列表,注意:userlist、partylist不能同时为空
* @param partyIds
* 企业部门ID列表,注意:userlist、partylist不能同时为空
* @see
* 新增标签成员说明
* @see com.foxinmy.weixin4j.qy.api.TagApi
* @see com.foxinmy.weixin4j.qy.model.IdParameter
* @return 非法的userIds和partyIds
* @throws WeixinException
*/
public IdParameter addTagUsers(int tagId, List userIds,
List partyIds) throws WeixinException {
return tagApi.addTagUsers(tagId, userIds, partyIds);
}
/**
* 删除标签成员(标签对管理组可见且未加锁,成员属于管理组管辖范围)
*
* @param tagId
* 标签ID
* @param userIds
* 企业成员ID列表,注意:userlist、partylist不能同时为空
* @param partyIds
* 企业部门ID列表,注意:userlist、partylist不能同时为空
* @see
* 删除标签成员说明
* @see com.foxinmy.weixin4j.qy.api.TagApi
* @see com.foxinmy.weixin4j.qy.model.IdParameter
* @return 非法的userIds和partyIds
* @throws WeixinException
*/
public IdParameter deleteTagUsers(int tagId, List userIds,
List partyIds) throws WeixinException {
return tagApi.deleteTagUsers(tagId, userIds, partyIds);
}
/**
* 获取微信服务器IP地址
*
* @return IP地址
* @see com.foxinmy.weixin4j.qy.api.HelperApi
* @see
* 获取IP地址
* @throws WeixinException
*/
public List getWechatServerIp() throws WeixinException {
return helperApi.getWechatServerIp();
}
/**
* 获取企业号某个应用的基本信息,包括头像、昵称、帐号类型、认证类型、可见范围等信息
*
* @param agentid
* 授权方应用id
* @return 应用信息
* @see com.foxinmy.weixin4j.qy.model.AgentInfo
* @see com.foxinmy.weixin4j.qy.api.AgentApi
* @see
* 企业号应用的信息
* @throws WeixinException
*/
public AgentInfo getAgent(int agentid) throws WeixinException {
return agentApi.getAgent(agentid);
}
/**
* 设置企业应用的选项设置信息,如:地理位置上报等
*
* @param agentSet
* 设置参数
* @see com.foxinmy.weixin4j.qy.model.AgentSetter
* @see com.foxinmy.weixin4j.qy.api.AgentApi
* @see
* 设置企业号信息
* @return 处理结果
* @throws WeixinException
*/
public ApiResult setAgent(AgentSetter agentSet) throws WeixinException {
return agentApi.setAgent(agentSet);
}
/**
* 获取应用概况列表
*
* @see com.foxinmy.weixin4j.qy.model.AgentOverview
* @see com.foxinmy.weixin4j.qy.api.AgentApi
* @see
* 获取应用概况
* @return 应用概况列表
* @throws WeixinException
*/
public List listAgentOverview() throws WeixinException {
return agentApi.listAgentOverview();
}
/**
* 批量邀请成员关注
*
* @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
* 邀请成员关注
* @throws WeixinException
*/
public String batchInviteUser(IdParameter parameter, Callback callback,
String tips) throws WeixinException {
return batchApi.inviteUser(parameter, callback, tips);
}
/**
* 批量更新成员,本接口以userid为主键,增量更新企业号通讯录成员。
*
* 1.模板中的部门需填写部门ID,多个部门用分号分隔,部门ID必须为数字
* 2.文件中存在、通讯录中也存在的成员,更新成员在文件中指定的字段值 3.文件中存在、通讯录中不存在的成员,执行添加操作
* 4.通讯录中存在、文件中不存在的成员,保持不变
*
*
* @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
* 批量更新成员
* @throws WeixinException
*/
public String batchSyncUser(String mediaId, Callback callback)
throws WeixinException {
return batchApi.syncUser(mediaId, callback);
}
/**
* 批量覆盖成员,本接口以userid为主键,全量覆盖企业号通讯录成员,任务完成后企业号通讯录成员与提交的文件完全保持一致。
*
* 1.模板中的部门需填写部门ID,多个部门用分号分隔,部门ID必须为数字 2.文件中存在、通讯录中也存在的成员,完全以文件为准
* 3.文件中存在、通讯录中不存在的成员,执行添加操作
* 4.通讯录中存在、文件中不存在的成员,执行删除操作。出于安全考虑,如果需要删除的成员多于50人,
* 且多于现有人数的20%以上,系统将中止导入并返回相应的错误码
*
*
* @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
* 批量覆盖成员
* @throws WeixinException
*/
public String batchReplaceUser(String mediaId, Callback callback)
throws WeixinException {
return batchApi.replaceUser(mediaId, callback);
}
/**
* 批量上传成员
*
* @param users
* 成员列表
* @see com.foxinmy.weixin4j.qy.api.MediaApi
* @see com.foxinmy.weixin4j.qy.api.BatchApi
* @see {@link #batchSyncUser(String,Callback)}
* @see {@link #batchReplaceUser(String,Callback)}
* @see
* 批量任务
* @return 上传后的mediaId
* @throws WeixinException
*/
public String batchUploadUsers(List users) throws WeixinException {
return mediaApi.batchUploadUsers(users);
}
/**
* 批量覆盖部门,本接口以partyid为键,全量覆盖企业号通讯录组织架构,任务完成后企业号通讯录组织架构与提交的文件完全保持一致。
*
* 1.文件中存在、通讯录中也存在的部门,执行修改操作 2.文件中存在、通讯录中不存在的部门,执行添加操作
* 3.文件中不存在、通讯录中存在的部门,当部门为空时,执行删除操作
* 4.CSV文件中,部门名称、部门ID、父部门ID为必填字段,部门ID必须为数字;排序为可选字段,置空或填0不修改排序
*
*
* @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
* 批量覆盖部门
* @throws WeixinException
*/
public String batchReplaceParty(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
* 获取异步任务执行结果
* @throws WeixinException
*/
public BatchResult getBatchResult(String jobId) throws WeixinException {
return batchApi.getBatchResult(jobId);
}
/**
* userid转换成openid:该接口使用场景为微信支付、微信红包和企业转账,企业号用户在使用微信支付的功能时,
* 需要自行将企业号的userid转成openid。 在使用微信红包功能时,需要将应用id和userid转成appid和openid才能使用。
*
* @param userid
* 企业号内的成员id 必填
* @param agentid
* 需要发送红包的应用ID,若只是使用微信支付和企业转账,则无需该参数 传入0或负数则忽略
* @return 结果数组 第一个元素为对应的openid 第二个元素则为应用的appid(如果有)
* @throws WeixinException
* @see com.foxinmy.weixin4j.qy.api.UserApi
* @see
* userid转换成openid
*/
public String[] userid2openid(String userid, int agentid)
throws WeixinException {
return userApi.userid2openid(userid, agentid);
}
/**
* openid转换成userid:该接口主要应用于使用微信支付、微信红包和企业转账之后的结果查询,
* 开发者需要知道某个结果事件的openid对应企业号内成员的信息时,可以通过调用该接口进行转换查询。
*
* @param openid
* 在使用微信支付、微信红包和企业转账之后,返回结果的openid
* @return 该openid在企业号中对应的成员userid
* @throws WeixinException
* @see com.foxinmy.weixin4j.qy.api.UserApi
* @see
* openid转换成userid
*/
public String openid2userid(String openid) throws WeixinException {
return userApi.openid2userid(openid);
}
/**
* 创建会话 如果会话id为空,程序会自动生成一个唯一ID
*
* @param chatInfo
* 会话信息
* @return 会话ID
* @see com.foxinmy.weixin4j.qy.api.ChatApi
* @see com.foxinmy.weixin4j.qy.model.ChatInfo
* @see
* 创建会话
* @throws WeixinException
*/
public String createChat(ChatInfo chatInfo) throws WeixinException {
return chatApi.createChat(chatInfo);
}
/**
* 获取会话
*
* @param chatId
* 会话ID
* @return 会话信息
* @see com.foxinmy.weixin4j.qy.api.ChatApi
* @see com.foxinmy.weixin4j.qy.model.ChatInfo
* @see
* 获取会话
* @throws WeixinException
*/
public ChatInfo getChat(String chatId) throws WeixinException {
return chatApi.getChat(chatId);
}
/**
* 更新会话
*
* @param chatInfo
* 会话信息 至少保持会话ID不能为空
* @param operator
* 操作人userid
* @param addUsers
* 会话新增成员列表
* @param deleteUsers
* 会话退出成员列表
* @return 处理结果
* @see com.foxinmy.weixin4j.qy.api.ChatApi
* @see com.foxinmy.weixin4j.qy.model.ChatInfo
* @see
* 修改会话信息
* @throws WeixinException
*/
public ApiResult updateChat(ChatInfo chatInfo, String operator,
List addUsers, List deleteUsers)
throws WeixinException {
return chatApi.updateChat(chatInfo, operator, addUsers, deleteUsers);
}
/**
* 退出会话
*
* @param chatId
* 会话ID
* @param operator
* 操作人userid
* @return 处理结果
* @see com.foxinmy.weixin4j.qy.api.ChatApi
* @see
* 退出会话
* @throws WeixinException
*/
public ApiResult quitChat(String chatId, String operator)
throws WeixinException {
return chatApi.quitChat(chatId, operator);
}
/**
* 清除会话未读状态
*
* @param targetId
* 会话值,为userid|chatid,分别表示:成员id|会话id
* @param owner
* 会话所有者的userid
* @param chatType
* 会话类型:single|group,分别表示:群聊|单聊
* @return 处理结果
* @see com.foxinmy.weixin4j.qy.api.ChatApi
* @see
* 清除会话未读状态
* @throws WeixinException
*/
public ApiResult clearChatNotify(String targetId, String owner,
ChatType chatType) throws WeixinException {
return chatApi.clearChatNotify(targetId, owner, chatType);
}
/**
* 设置成员接收到的消息是否提醒。主要场景是用于对接企业im的在线状态,如成员处于在线状态时,可以设置该成员的消息免打扰。当成员离线时,关闭免打扰状态
* ,对微信端进行提醒。
*
* @param chatMutes
* 提醒参数
* @see com.foxinmy.weixin4j.qy.api.ChatApi
* @see com.foxinmy.weixin4j.qy.model.ChatMute
* @see 设置成员新消息免打扰
* @return 列表中不存在的成员,剩余合法成员会继续执行。
* @throws WeixinException
*/
public List setChatMute(List chatMutes)
throws WeixinException {
return chatApi.setChatMute(chatMutes);
}
/**
* 发送会话消息
*
* @param message
* 消息对象
* @return 处理结果
* @see com.foxinmy.weixin4j.qy.api.ChatApi
* @see com.foxinmy.weixin4j.qy.message.ChatMessage
* @see
* 发送消息
* @throws WeixinException
*/
public ApiResult sendChatMessage(ChatMessage message)
throws WeixinException {
return chatApi.sendChatMessage(message);
}
public final static String VERSION = "1.7.2";
}