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;
}
}
}