using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using PCRobot.Entitys.Enterprise; using PCRobot.Utils; namespace PCRobot.PCWechat.Enterprise { /// /// 企业微信基类 /// public abstract class WechatEnterpriseBase : WechatBase { /// /// 是否初始化 /// internal static bool IsQYInstall { get; set; } public WechatEnterpriseBase(WechatUser User) : base(User) { } /// /// 获取会话ID /// /// /// public string GetConversationId(string username) { var conversation_id = username; if (!username.StartsWith("R:")) conversation_id = $"S:{User.Wxid}_{username}"; return conversation_id; } #region 发送消息 /// /// 发送目录 /// /// 接收者的微信 /// 目录路径 /// public abstract void SendDirectory(string username, string dirPath); ///// ///// 发送小程序 ///// ///// 接收者的账号 ///// 小程序账号(xxxx@app) ///// 小程序id ///// 小程序名称 ///// 小程序图片地址 ///// 小程序标题 ///// 小程序指定的路径 ///// cdn文件id ///// cdnkey ///// md5 ///// 大小 ///// //public abstract void SendProgramMessage(string username, string appUsername, string appId, string appName, // string appicon, string title, string page_path); /// /// 发送视频号 /// /// 接收者的账号 /// 头像 /// /// 描述 /// 类型 /// 标题 /// /// /// 附加 /// public abstract void SendVideoHao(string username, string avatar, string cover_url, string desc, int feed_type, string nickname, string thumb_url, string url, string extras); /// /// 转让群主 /// public abstract void TransRoom(string username, string user_id); /// /// 开启关闭群邀请确认 /// /// /// true开启,flase关闭 public abstract void OnOffRoomInvite(string username, bool status); /// /// 开启关闭修改群名 /// /// /// true开启,flase关闭 public abstract void OnOffRoomModNick(string username, bool status); #endregion #region 群操作类 /// /// 邀请用户进群 /// /// 群ID /// 邀请的用户账号集 /// public abstract void InviteMemberToGroup(string groupid, string[] usernames); /// /// 申请添加群成员为好友 /// /// 用户所在群ID /// 要加的用户账号(该用户一定要在群里) /// 验证消息 /// public abstract void AddGroupMemberToFriend(string groupid, string username, string corp_id, string verify); #endregion #region 好友操作类 /// /// 修改内/外部好友描述 /// /// 要修改的user_id /// 好友描述信息 /// public abstract void ModifyFriendDesc(string username, string desc); /// /// 修改外部联系人手机号列表 /// /// 要修改的user_id /// 手机号列表,最多5个 /// public abstract void ModifyFriendPhone(string username, string[] phone_list); /// /// 修改外部联系人公司名称 /// /// 要修改的user_id /// 公司名称 /// public abstract void ModifyExternalFriendCompanyNick(string username, string company); /// /// 通过手机号查询微信信息 /// /// 搜索的内容 /// public abstract Task SearchContactMobile(string search); /// /// 添加搜索到的微信用户 /// /// 通过查询获取到的账号 /// 搜索到的openid /// 搜索到的wx_ticket /// 验证消息 /// public abstract void AddRoutineSearchContact(string username, string openid, string wx_ticket, string verify); /// /// 添加搜索到的企业用户 /// /// 通过查询获取到的账号 /// 公司id /// 验证信息 /// public abstract void AddEnterpriseSearchContact(string username, string corp_id, string verify); /// /// 添加名片为联系人 /// /// /// /// /// /// public abstract void AddCardFriendContact(string username, string corp_id, string from_user_id, string verify); /// /// 添加删除的联系人 /// /// /// /// /// public abstract void AddDelFriendContact(string username, string corp_id, string verify); ///// ///// 删除好友 ///// ///// ///// ///// //public abstract void DeleteFriend(string username, string corp_id); ///// ///// 接受好友申请 ///// ///// 用户账号 ///// 公司id ///// //public abstract Task AcceptFriend(string username, string corp_id); /// /// 创建空外部群 /// /// /// public abstract Task CreateExternalGroup(); #endregion #region 基础信息类 ///// ///// 获取内部好友类表 ///// ///// //public abstract Task> GetInnerFirends(); /// /// 获取外部好友列表 /// /// public abstract Task> GetExternalFirends(); ///// ///// 获取自己的二维码 ///// ///// ///// //public abstract Task GetOwnQrImage(); /// /// 刷新登录二维码 /// /// public abstract void FlushLoginQrImage(); /// /// 解散群 /// /// 群号 /// public abstract void DissolveGroup(string GroupId); /// /// Cdn下载 /// /// 回复中的cdn地址 /// 回复中的auth_key /// 回复中的aes_key /// 回复中的size /// 保存文件完整路径 /// public abstract Task CdnDown(string url, string auth_key, string aes_key, int size, FileSuffixType fileSuffixType); /// /// Cdn下载 /// /// 回复中的cdn地址 /// 回复中的auth_key /// 回复中的aes_key /// 回复中的size /// 文件名带后缀 /// /// public abstract Task CdnDown(string url, string auth_key, string aes_key, int size, string fileName); /// /// C2cCdn下载 /// /// 回复中的aes_key /// 回复中的file_id /// 回复中的file_size /// 回复中的file_type /// 保存文件完整路径 /// public abstract Task C2cCdnDown(string aes_key, string file_id, int file_size, QyCdnFileType file_type, FileSuffixType fileSuffixType); /// /// BigCdn下载 /// /// /// /// /// public abstract Task BigCdnDown(string file_path, string file_type); /// /// 获取Cdn通过文件上传 /// /// 文件路径 /// 文件类型 /// /// public abstract Task GetCdnByUpLoadFile(string file_path, int file_type); #endregion public string FindNick(string wxid) { try { if (string.IsNullOrWhiteSpace(wxid)) return string.Empty; if (wxid.IsQun())//为群账号,就获取群昵称 { if (!User.WorkGroups.ContainsKey(wxid)) { var ggi = this.GetGroupInfos().Result;//获取群信息 if (ggi != null && ggi.Count != 0) { if (ggi.ContainsKey(wxid)) return (ggi[wxid] as WorkGroupInfo).GroupNick; } } if (User.WorkGroups.ContainsKey(wxid)) { if (string.IsNullOrWhiteSpace(User.WorkGroups[wxid].GroupNick)) { var ggi = this.GetGroupInfos().Result;//获取群信息 if (ggi != null && ggi.Count != 0) { if (ggi.ContainsKey(wxid)) return (ggi[wxid] as WorkGroupInfo).GroupNick; } } return User.WorkGroups[wxid].GroupNick; } } else { if (!User.Friends.ContainsKey(wxid)) { var friend = GetFriendInfo(wxid).Result; if (friend != null) return (friend as WorkFriendInfo).username; } if (User.WorkFriends.ContainsKey(wxid)) return User.WorkFriends[wxid].username; } } catch (Exception ex) { } return string.Empty; } /// /// 获取群成员昵称 /// /// 群号 /// 需要查找的用户账号 /// public string FindNick(string group, string wxid) { try { if (string.IsNullOrWhiteSpace(wxid)) return string.Empty; if (User.WorkFriends.ContainsKey(wxid))//如果好友列表中存在就直接读取 return User.WorkFriends[wxid].nickname; else { if (string.IsNullOrWhiteSpace(group)) return string.Empty; if (!User.WorkGroups.ContainsKey(group)) { var gInfo = this.GetGroupMemberInfo(group).Result; if (gInfo != null) return (gInfo as WorkGroupInfo).GroupNick; } if (User.WorkGroups.ContainsKey(group)) { var friendDic = User.WorkGroups[group].friends; if (friendDic != null) { var ftmp = friendDic.FirstOrDefault(f => f.user_id == wxid); if (ftmp != null) return ftmp.nickname; } } } } catch (Exception ex) { } return string.Empty; } } }