old_flsystem/PCRobot/PCWechat/Enterprise/Wechat_Xiaoxie_QY_Override.cs

1319 lines
63 KiB
C#
Raw Normal View History

2022-09-20 03:10:29 +00:00
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Security.Cryptography;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading;
using System.Threading.Tasks;
using CsharpHttpHelper;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using PCRobot.Entitys.Enterprise;
using PCRobot.Pack;
using PCRobot.Utils;
namespace PCRobot.PCWechat.Enterprise
{
public partial class Wechat_Xiaoxie_QY
{
public override void GetContact(bool isUpdata)
{
try
{
var result = GetExternalFirends().Result;
var socketClient = EasySoc.GetSocket();
CommonResult msg = new CommonResult();
msg.RobotUsername = User.Wxid;
msg.RobotUsernick = User.Nickname;
msg.RobotType = RobotType.;
msg.MsgId = ServerMsgID;
msg.Cmd = PCRobotCMD.rcvFriendList_workWeChat;
msg.Data = result == null ? string.Empty : HttpHelper.ObjectToJson(result);
socketClient.Send(msg);
}
catch (Exception ex)
{
LogHelper.GetSingleObj().Error(new StackTrace().GetFrame(0).GetMethod().Name, ex.Message);
}
}
public override void SendMessage(string username, string message, string msgId = "", string usernick = "", string quoteMess = "")
{
try
{
//S:1688853956558440_7881301364988874
//{"data":{"content":"我们","content_type":2,"conversation_id":"S:1688853956558440_7881301364988874","local_id":"61","receiver":"1688853956558440","send_time":"1584028171","sender":"7881301364988874","sender_name":"18","server_id":"1000653"},"type":11041}
var conversation_id = username;
if (!username.StartsWith("R:"))
{
conversation_id = $"S:{User.Wxid}_{username}";
}
else
{ }
var json = string.Empty;
message = message.Replace("\r\n", "\n");
if (Common.isXML(message))
{
message = message.Replace("&", "&");
var title = string.Empty;
var desc = string.Empty;
var url = string.Empty;
var image_url = string.Empty;
var reg = Regex.Match(message, @"<title>(?<标题>[\w\W]+?)</title>");
if (reg.Success) title = reg.Groups["标题"].Value;
reg = Regex.Match(message, @"<des>(?<介绍>[\w\W]+?)</des>");
if (reg.Success) desc = reg.Groups["介绍"].Value.Replace("<![CDATA[", "").Replace("]]", "");
reg = Regex.Match(message, @"<url>(?<链接>[\w\W]+?)</url>");
if (!reg.Success) reg = Regex.Match(message, @"<pagepath>(?<链接>[\w\W]+?)</pagepath>");
if (reg.Success) url = reg.Groups["链接"].Value;
reg = Regex.Match(message, @"<thumburl>(?<图片链接>[\w\W]+?)</thumburl>");
if (reg.Success) image_url = reg.Groups["图片链接"].Value;
if (message.Contains("<image_key1>"))
{
var image_key1 = string.Empty;
var image_key2 = string.Empty;
var image_key3 = string.Empty;
var image_size = 0;
var ghid = string.Empty;
var pagepath = string.Empty;
var regKey = Regex.Match(message, @"<image_key1>(?<image_key1>[\w\W]+?)</image_key1>", RegexOptions.IgnoreCase);
if (regKey.Success)
image_key1 = regKey.Groups["image_key1"].Value;
regKey = Regex.Match(message, @"<image_key2>(?<image_key2>[\w\W]+?)</image_key2>", RegexOptions.IgnoreCase);
if (regKey.Success)
image_key2 = regKey.Groups["image_key2"].Value;
regKey = Regex.Match(message, @"<image_key3>(?<image_key3>[\w\W]+?)</image_key3>", RegexOptions.IgnoreCase);
if (regKey.Success)
image_key3 = regKey.Groups["image_key3"].Value;
regKey = Regex.Match(message, @"<image_size>(?<image_size>[\w\W]+?)</image_size>", RegexOptions.IgnoreCase);
if (regKey.Success)
image_size = int.Parse(regKey.Groups["image_size"].Value.XMLReplace(false));
regKey = Regex.Match(message, @"<username>(?<username>[\w\W]+?)</username>", RegexOptions.IgnoreCase);
if (regKey.Success)
ghid = regKey.Groups["username"].Value;
regKey = Regex.Match(message, @"<pagepath>(?<pagepath>[\w\W]+?)</pagepath>", RegexOptions.IgnoreCase);
if (regKey.Success)
pagepath = regKey.Groups["pagepath"].Value;
var weapppagethumbrawurl = string.Empty;
regKey = Regex.Match(message, @"<weapppagethumbrawurl>(?<weapppagethumbrawurl>[\w\W]+?)</weapppagethumbrawurl>", RegexOptions.IgnoreCase);
if (regKey.Success)
weapppagethumbrawurl = regKey.Groups["weapppagethumbrawurl"].Value;
//小程序
2022-12-31 14:28:29 +00:00
if (!string.IsNullOrWhiteSpace(image_url))
{
SendProgramMessage(conversation_id, ghid.XMLReplace(false), ghid.XMLReplace(false), title,
image_url, desc, pagepath);
}
else
{
SendProgramMessage(conversation_id, ghid.XMLReplace(false), ghid.XMLReplace(false), title, image_url, desc, pagepath, image_key1, image_key2, image_key3, image_size);
}
2022-09-20 03:10:29 +00:00
return;
}
else
{
image_url =
json = CsharpHttpHelper.HttpHelper.ObjectToJson(new { type = MsgType.MT_SEND_LINK_MSG, data = new { conversation_id = conversation_id, title = $"{title.XMLReplace(false)}", desc = $"{desc.XMLReplace(false)}", url = url.XMLReplace(false), image_url = image_url.XMLReplace(false) } });
}
}
else
{
var atUsername = new List<string>();
var regs = Regex.Matches(message, @"\[@([^\]]+?)\]");
if (regs.Count != 0 && username.IsQun())
{
foreach (Match item in regs)
{
atUsername.Add(item.Groups[1].Value.Trim());
}
message = Regex.Replace(message, @"(\[@[^\]]+?\])", "{$@}");
json = CsharpHttpHelper.HttpHelper.ObjectToJson(new { type = MsgType.MT_SEND_ROOM_AT_MSG, data = new { conversation_id = conversation_id, content = message, at_list = atUsername.ToArray() } });
}
else
json = CsharpHttpHelper.HttpHelper.ObjectToJson(new { type = MsgType.MT_SEND_TEXT_MSG, data = new { conversation_id = conversation_id, content = message } });
}
SendWxWorkData(User.DwClientId, json);
//LogHelper.GetSingleObj().Debug("发送状态", ($"发送:{conversation_id} - {flag}, 内容:{message}"));
}
catch (Exception ex)
{
LogHelper.GetSingleObj().Error(new System.Diagnostics.StackTrace().GetFrame(0).GetMethod().Name, ex.Message + "-.");
}
}
public override void SendFile(string username, string file)
{
var json = JsonConvert.SerializeObject(new { type = MsgType.MT_SEND_FILE_MSG, data = new { conversation_id = GetConversationId(username), file = file } });
SendWxWorkData(User.DwClientId, json);
}
public override void SendCard(string username, string cardwxid)
{
//群名片
if (cardwxid.IsQun())
{
if (!username.IsQun())
InviteMemberToGroup(cardwxid, new string[] { username });
return;
}
var json = JsonConvert.SerializeObject(new { type = MsgType.MT_SEND_PERSON_CARD_MSG, data = new { conversation_id = GetConversationId(username), share_user_id = cardwxid } });
SendWxWorkData(User.DwClientId, json);
}
public override void SendLinkMessage(string username, string title, string desc, string url, string image_url)
{
var json = JsonConvert.SerializeObject(new { type = MsgType.MT_SEND_LINK_MSG, data = new { conversation_id = GetConversationId(username), url = url, image_url = image_url, title = title, desc = desc } });
SendWxWorkData(User.DwClientId, json);
}
public override void SendImage(string wxid, string file)
{
//var json = string.Empty;
//if (imgPath.EndsWith(".gif", StringComparison.CurrentCultureIgnoreCase | StringComparison.OrdinalIgnoreCase))
// json = JsonConvert.SerializeObject(new { type = MsgType.MT_SEND_GIF_MSG, data = new { conversation_id = GetConversationId(username), file = imgPath } });
//else
// json = JsonConvert.SerializeObject(new { type = MsgType.MT_SEND_IMAGE_MSG, data = new { conversation_id = GetConversationId(username), file = imgPath } });
//SendWxWorkData(User.DwClientId, json);
try
{
var conversation_id = wxid;
if (!wxid.StartsWith("R:"))
conversation_id = $"S:{User.Wxid}_{wxid}";
if (file.StartsWith("http", StringComparison.InvariantCultureIgnoreCase))
{
byte[] ImangByte = null;
string extension = Path.GetExtension(file);
extension = string.IsNullOrWhiteSpace(extension) ? ".jpg" : extension;
ImangByte = new System.Net.WebClient().DownloadData(file);
byte[] imageHash = new MD5CryptoServiceProvider().ComputeHash(ImangByte);
var path = Common.CacheFilePath(User.Wxid, conversation_id, "IMAGE", Guid.NewGuid().ToString("N"), extension);
if (!File.Exists(path))
{
File.WriteAllBytes(path, ImangByte);
}
if (File.Exists(path))
file = path;
}
else
{
if (!File.Exists(file))
{
if (Common.IsBase64(file))
{
var path = Common.CacheFilePath(User.Wxid, wxid, "IMAGE", Guid.NewGuid().ToString("N"), "jpg");
if (Common.Base64ToFileAndSave(file, path) && File.Exists(path))
{
file = path;
}
}
else
{ }
}
}
var json = string.Empty;
if (File.Exists(file))
{
if (file.Trim().EndsWith(".gif", StringComparison.CurrentCultureIgnoreCase))
json = HttpHelper.ObjectToJson(new { type = MsgType.MT_SEND_GIF_MSG, data = new { conversation_id = conversation_id, file = file } });
else
json = HttpHelper.ObjectToJson(new { type = MsgType.MT_SEND_IMAGE_MSG, data = new { conversation_id = conversation_id, file = file } });
}
else
json = HttpHelper.ObjectToJson(new { type = MsgType.MT_SEND_IMAGE_MSG, data = new { conversation_id = conversation_id, file = file } });
SendWxWorkData(User.DwClientId, json);
}
catch (Exception ex)
{
LogHelper.GetSingleObj().Debug("发送图片异常", ex.Message + ".-" + ex.StackTrace);
}
}
public override void SendVideo(string username, string path)
{
var json = JsonConvert.SerializeObject(new { type = MsgType.MT_SEND_VIDEO_MSG, data = new { conversation_id = GetConversationId(username), file = path } });
SendWxWorkData(User.DwClientId, json);
}
public override void ModifyGroupNotice(string groupid, string notice)
{
var json = JsonConvert.SerializeObject(new { type = MsgType.MT_MOD_ROOM_NOTICE_MSG, data = new { room_conversation_id = GetConversationId(groupid), notice = notice } });
SendWxWorkData(User.DwClientId, json);
}
public override void Ser_CreateGroup(string[] usernames)
{
var result = CreateGroup(usernames).Result;
var socketClient = EasySoc.GetSocket();
var msg = new CreateRoom();
msg.RobotUsername = User.Wxid;
msg.RobotUsernick = User.Nickname;
msg.RobotType = RobotType.;
msg.MsgId = ServerMsgID;
msg.Cmd = PCRobotCMD.rcvCreateRoom_workWeChat;
msg.GroupId = result?.GroupId;
msg.MemberTotal = 0;
socketClient.Send(msg);
}
public override Task<CreateGroupInfo> CreateGroup(string[] usernames)
{
if (usernames != null && usernames.Length != 0)
{
try
{
var type = RobotIsRunType.;
//这里判断是否已经存在在获取的群邀请信息,没有就去获取
if (!User.IsGetDic.ContainsKey(type))
{
User.IsGetDic[type] = false;//这里添加要查询的群ID,状态为flase(还没收到微信那边返回的数据)
var json = JsonConvert.SerializeObject(new { type = MsgType.MT_CREATE_ROOM_MSG, data = usernames });
SendWxWorkData(User.DwClientId, json);
}
var result = Task.Factory.StartNew<CreateGroupInfo>(delegate ()
{
var keyMd5 = HttpExtend.GetMD5String($"CACHE_CREATEGROUP{type}");
DateTime endtime = DateTime.Now.AddSeconds(20);
do
{
if (User.IsGetDic.ContainsKey(type) && User.IsGetDic[type])//等待收到微信查询的消息
{
do
{
if (!User.IsGetDic.ContainsKey(type))//等到解析完消息,解析完消息IsGetDic中的消息会被删除
{
var createGroupInfo = Common.GetCache<CreateGroupInfo>(keyMd5);
Common.RemoveCache(keyMd5);
return createGroupInfo;
}
Thread.Sleep(200);
} while (endtime > DateTime.Now);
break;
}
Thread.Sleep(20);
} while (endtime > DateTime.Now);
return null;
});
}
catch (Exception ex)
{
LogHelper.GetSingleObj().Error($"企业获取创建群信息", ex.Message);
}
}
return null;
}
public override void DeleteGroupMember(string groupid, string[] usernames)
{
var json = JsonConvert.SerializeObject(new { type = MsgType.MT_ROOM_DEL_MEMBERS_MSG, data = new { conversation_id = groupid, user_list = usernames } });
SendWxWorkData(User.DwClientId, json);
}
public override void QuitAndDelGroup(string groupid)
{
var json = JsonConvert.SerializeObject(new { type = MsgType.MT_QUIT_ROOM, data = new { room_conversation_id = GetConversationId(groupid) } });
SendWxWorkData(User.DwClientId, json);
}
public override void ModifyGroupName(string groupid, string newName)
{
var json = JsonConvert.SerializeObject(new { type = MsgType.MT_MODIFY_ROOM_NAME_MSG, data = new { conversation_id = groupid, name = newName } });
SendWxWorkData(User.DwClientId, json);
}
public override void Ser_GetSelfInfo()
{
var result = GetSelfInfo().Result;
var data = string.Empty;
if (result != null)
data = HttpHelper.ObjectToJson(result as WorkFriendInfo);
var socketClient = EasySoc.GetSocket();
var msg = new WorkWechatContact();
msg.RobotUsername = User.Wxid;
msg.RobotUsernick = User.Nickname;
msg.RobotType = RobotType.;
msg.MsgId = ServerMsgID;
msg.Cmd = PCRobotCMD.rcvContact_workWeChat;
msg.Message = result == null ? string.Empty : HttpHelper.ObjectToJson(result);
socketClient.Send(msg);
}
public override Task<FriendBase> GetSelfInfo()
{
try
{
//这里判断是否已经存在在获取的群邀请信息,没有就去获取
if (!User.IsGetContactDic.ContainsKey(User.Wxid))
{
User.IsGetContactDic[User.Wxid] = false;//这里添加要查询的群ID,状态为flase(还没收到微信那边返回的数据)
var json = JsonConvert.SerializeObject(new { type = MsgType.MT_GET_OWNER_INFO_MSG, data = new { } });
SendWxWorkData(User.DwClientId, json);
}
return Task.Factory.StartNew<FriendBase>(delegate ()
{
DateTime endtime = DateTime.Now.AddSeconds(20);
do
{
if (User.IsGetContactDic.ContainsKey(User.Wxid) && User.IsGetContactDic[User.Wxid])//等待收到微信查询的消息
{
do
{
if (!User.IsGetContactDic.ContainsKey(User.Wxid))//等到解析完消息,解析完消息IsGetContactDic中的消息会被删除
{
if (User.WorkFriends.ContainsKey(User.Wxid))
return User.WorkFriends[User.Wxid];
return null;
}
Thread.Sleep(200);
} while (endtime > DateTime.Now);
break;
}
Thread.Sleep(20);
} while (endtime > DateTime.Now);
return null;
});
}
catch (Exception ex)
{
LogHelper.GetSingleObj().Error($"企业获取自己基础信息", ex.Message);
}
return null;
}
/// <summary>
/// 获取群或者好友信息
/// </summary>
/// <param name="username"></param>
public override void Ser_GetContact(string username)
{
var data = string.Empty;
if (User.WorkFriends.ContainsKey(username))
data = HttpHelper.ObjectToJson(User.WorkFriends[username]);
else
{
if (username.IsQun())
{
var g = GetGroupInfos().Result;
if (User.WorkFriends.ContainsKey(username))
data = HttpHelper.ObjectToJson(User.WorkFriends[username]);
}
else
{
var result = GetFriendInfo(username).Result;
if (result != null)
data = HttpHelper.ObjectToJson((result as WorkFriendInfo));
}
}
var socketClient = EasySoc.GetSocket();
var msg = new WorkWechatContact();
msg.RobotUsername = User.Wxid;
msg.RobotUsernick = User.Nickname;
msg.RobotType = RobotType.;
msg.MsgId = ServerMsgID;
msg.Cmd = PCRobotCMD.rcvContact_workWeChat;
msg.Message = data;
socketClient.Send(msg);
}
public override Task<FriendBase> GetFriendInfo(string username)
{
try
{
//这里判断是否已经存在在获取的群邀请信息,没有就去获取
if (!User.IsGetContactDic.ContainsKey(username))
{
User.IsGetContactDic[username] = false;//这里添加要查询的群ID,状态为flase(还没收到微信那边返回的数据)
var json = JsonConvert.SerializeObject(new { type = MsgType.MT_GET_USER_DETAIL_MSG, data = new { user_id = username } });
SendWxWorkData(User.DwClientId, json);
}
return Task.Factory.StartNew<FriendBase>(delegate ()
{
DateTime endtime = DateTime.Now.AddSeconds(20);
do
{
if (User.IsGetContactDic.ContainsKey(username) && User.IsGetContactDic[username])//等待收到微信查询的消息
{
do
{
if (!User.IsGetContactDic.ContainsKey(username))//等到解析完消息,解析完消息IsGetContactDic中的消息会被删除
{
if (User.WorkFriends.ContainsKey(username))
return User.WorkFriends[username];
return null;
}
Thread.Sleep(200);
} while (endtime > DateTime.Now);
break;
}
Thread.Sleep(20);
} while (endtime > DateTime.Now);
return null;
});
}
catch (Exception ex)
{
LogHelper.GetSingleObj().Error($"企业获取单个用户信息", ex.Message);
}
return null;
}
public override void GetFriendInfo(string userName, string groupId, bool IsFlush = false)
{
var result = Task.Factory.StartNew<WorkGroupInfo>(() =>
{
try
{
if (string.IsNullOrWhiteSpace(userName)) return null;
if (string.IsNullOrWhiteSpace(groupId)) return null;
if (IsFlush)
{
var gInfo = GetGroupMemberInfo(groupId).Result;
if (gInfo == null) return null;
var g = gInfo as WorkGroupInfo;
if (g == null) return null;
var ftmp = g.friends.FirstOrDefault(f => f.user_id == userName);
if (ftmp != null)
return new WorkGroupInfo() { conversation_id = groupId, friends = new List<WorkFriendInfo>() { ftmp }, total = User.WorkGroups[groupId].total, GroupNick = User.WorkGroups[groupId].GroupNick };
}
if (User.WorkGroups.ContainsKey(groupId))
{
if (User.WorkGroups[groupId].friends == null) return null;
var ftmp = User.WorkGroups[groupId].friends.FirstOrDefault(f => f.user_id == userName);
if (ftmp != null)
return new WorkGroupInfo() { conversation_id = groupId, friends = new List<WorkFriendInfo>() { ftmp }, total = User.WorkGroups[groupId].total, GroupNick = User.WorkGroups[groupId].GroupNick };
}
}
catch (Exception ex)
{
LogHelper.GetSingleObj().Error($"企业获取群用户信息", ex.Message);
}
return null;
}).Result;
var socketClient = EasySoc.GetSocket();
var msg = new WorkWechatContact();
msg.RobotUsername = User.Wxid;
msg.RobotUsernick = User.Nickname;
msg.RobotType = RobotType.;
msg.MsgId = ServerMsgID;
msg.Cmd = PCRobotCMD.rcvContact_workWeChat;
msg.Message = result == null ? string.Empty : HttpHelper.ObjectToJson(result);
socketClient.Send(msg);
}
public override Task<Dictionary<string, GroupBase>> GetGroupInfos()
{
try
{
var type = RobotIsRunType.;
//这里判断是否已经存在在获取的群邀请信息,没有就去获取
if (!User.IsGetDic.ContainsKey(type))
{
User.IsGetDic[type] = false;//这里添加要查询的群ID,状态为flase(还没收到微信那边返回的数据)
var json = JsonConvert.SerializeObject(new { type = MsgType.MT_GET_ROOMS_MSG, data = new { page_num = 1, page_size = 100000 } });
SendWxWorkData(User.DwClientId, json);
}
return Task.Factory.StartNew(delegate ()
{
DateTime endtime = DateTime.Now.AddSeconds(20);
do
{
if (User.IsGetDic.ContainsKey(type) && User.IsGetDic[type])//等待收到微信查询的消息
{
do
{
if (!User.IsGetDic.ContainsKey(type))//等到解析完消息,解析完消息IsGetDic中的消息会被删除
{
Dictionary<string, GroupBase> dic = new Dictionary<string, GroupBase>();
if (User.WorkGroups != null)
{
foreach (var item in User.WorkGroups)
{
dic.Add(item.Key, item.Value);
}
}
return dic;
}
Thread.Sleep(200);
} while (endtime > DateTime.Now);
break;
}
Thread.Sleep(20);
} while (endtime > DateTime.Now);
return null;
});
}
catch (Exception ex)
{
LogHelper.GetSingleObj().Error($"企业获取所有群组列表", ex.Message);
}
return Task.FromResult<Dictionary<string, GroupBase>>(null);
}
public override Task<GroupBase> GetGroupMemberInfo(string groupid)
{
try
{
//这里判断是否已经存在在获取的群邀请信息,没有就去获取
if (!User.IsGetContactDic.ContainsKey(groupid))
{
User.IsGetContactDic[groupid] = false;//这里添加要查询的群ID,状态为flase(还没收到微信那边返回的数据)
var json = JsonConvert.SerializeObject(new { type = MsgType.MT_GET_ROOM_MEMBERS_MSG, data = new { conversation_id = groupid, page_num = 1, page_size = 100000 } });
SendWxWorkData(User.DwClientId, json);
}
return Task.Factory.StartNew<GroupBase>(delegate ()
{
DateTime endtime = DateTime.Now.AddSeconds(20);
do
{
try
{
if (User.IsGetContactDic.ContainsKey(groupid) && User.IsGetContactDic[groupid])//等待收到微信查询的消息
{
do
{
if (!User.IsGetContactDic.ContainsKey(groupid))//等到解析完消息,解析完消息IsGetContactDic中的消息会被删除
{
if (User.WorkGroups.ContainsKey(groupid))
return User.WorkGroups[groupid];
}
Thread.Sleep(200);
} while (endtime > DateTime.Now);
break;
}
}
catch (Exception ex)
{ }
Thread.Sleep(20);
} while (endtime > DateTime.Now);
return null;
});
}
catch (Exception ex)
{
LogHelper.GetSingleObj().Error($"企业获取指定群组成员信息", $"群:{groupid} - {ex.Message} - {ex.StackTrace}");
}
return Task.FromResult<GroupBase>(null);
}
public override void OutLogin()
{
var json = JsonConvert.SerializeObject(new { type = MsgType.MT_QUIT_LOGIN_MSG, data = new { } });
SendWxWorkData(User.DwClientId, json);
}
public override void OutLogin(string message)
{
try
{
var v = WechatClient.Users.FirstOrDefault(f => f.Value.DwClientId == User.DwClientId && f.Value.Type == WechatType.Xiaoxie_QY).Value;
if (v != null)
{
LogHelper.GetSingleObj().Info("系统", $"CloseWechatQY事件退出,Uin:{v.Uin},微信:{v.Nickname}({v.Wxid})");
WechatClient.RemoveUser(v, true);
if (!string.IsNullOrWhiteSpace(message))
PCRobotForm.ErrorMessAction?.Invoke(message);
}
}
catch (Exception ex)
{
LogHelper.GetSingleObj().Error(new System.Diagnostics.StackTrace().GetFrame(0).GetMethod().Name, ex.Message + "//");
}
}
public override string GetVersion()
{
return Version;
}
public override void SendDirectory(string username, string dirPath)
{
var json = JsonConvert.SerializeObject(new { type = MsgType.MT_SEND_FOLDER_MSG, data = new { conversation_id = GetConversationId(username), folder = dirPath } });
SendWxWorkData(User.DwClientId, json);
}
public override void SendProgramMessage(string username, string msg)
{
//new { data = new { conversation_id = username, ghid = ghid, wxid = wxid, name = name, title = title, enterpoint = enterpoint, headimg = headimg, image_key1 = image_key1, image_key2 = image_key2, image_key3 = image_key3, image_size = image_size } }
var jObj = JObject.Parse(msg);
var data = jObj["data"];
var conversation_id = data["conversation_id"].ToString();
var ghid = data["ghid"].ToString();
var wxid = data["wxid"].ToString();
var name = data["name"].ToString();
var title = data["title"].ToString();
var enterpoint = data["enterpoint"].ToString();
var headimg = data["headimg"].ToString();
SendProgramMessage(username, ghid, wxid, name, headimg, title, enterpoint);
}
private void SendProgramMessage(string username, string appUsername, string appId, string appName, string appicon, string title,
string page_path)
{
try
{
#region
/*
{
"type":11162,
"data":{
"conversation_id":"S:168885xxx28682_788130xxxx912998",
"username":"gh_52b46203a658@app",
"appid":"wx35f2a3937c9df889",
"appname":"博鸟绘本",
"appicon":"http:\/\/wx.qlogo.cn\/mmhead\/Q3auHgzwzM42Aa6BAq7rguLCx66IVTm7Qibr6paWic3rl9bfalX7gQLw\/96",
"title":"博鸟绘本,最新最全的儿童绘本租赁平台~",
"page_path":"pages\/shouye\/shouye.html",
// cdn参数为小程序封面可以从cdn上传图片处获得
"file_id":"3069020102046230600201000204283cabaa02030f424102043c986eb4020461967039042431376332326538612d656533342d346537642d623531332d37393762376436336531663702010002030ec8700410059b34e084cf19a38a92a677177863d20201010201000400",
"aes_key":"61393132623366353662313133653735",
"md5":"059b34e084cf19a38a92a677177863d2",
"size": 11122
}
}
*/
#endregion
FileC2cCdnInfo cdn = GetCdnByUpLoadFile(appicon, 1).Result;
2022-12-31 14:28:29 +00:00
//if (cdn == null)
// throw new Exception("小程序图片获取Cdn失败");
2022-09-20 03:10:29 +00:00
2022-12-31 14:28:29 +00:00
var _json = JsonConvert.SerializeObject(new { type = Wechat_Xiaoxie_QY.MsgType.MT_SEND_MINI_PROGRAM_MSG, data = new { conversation_id = GetConversationId(username), username = appUsername, appid = appId, appName = appName, appicon = appicon, title = title, page_path = page_path, file_id = cdn?.file_id ?? string.Empty, aes_key = cdn?.file_aes_key ?? string.Empty, md5 = cdn?.file_md5 ?? string.Empty, size = cdn?.file_size ?? 0 } });
2022-09-20 03:10:29 +00:00
SendWxWorkData(User.DwClientId, _json);
}
catch (Exception ex)
{
LogHelper.GetSingleObj().Error(new System.Diagnostics.StackTrace().GetFrame(0).GetMethod().Name, $"发送小程序:{ex.Message}");
}
}
2022-12-31 14:28:29 +00:00
private void SendProgramMessage(string username, string appUsername, string appId, string appName, string appicon, string title,
string page_path, string file_id, string file_aes_key, string file_md5, int file_size)
{
try
{
var _json = JsonConvert.SerializeObject(new { type = Wechat_Xiaoxie_QY.MsgType.MT_SEND_MINI_PROGRAM_MSG, data = new { conversation_id = GetConversationId(username), username = appUsername, appid = appId, appName = appName, appicon = appicon, title = title, page_path = page_path, file_id = file_id, aes_key = file_aes_key, md5 = file_md5, size = file_size } });
SendWxWorkData(User.DwClientId, _json);
}
catch (Exception ex)
{
LogHelper.GetSingleObj().Error(new System.Diagnostics.StackTrace().GetFrame(0).GetMethod().Name, $"发送小程序Cdn:{ex.Message}");
}
}
2022-09-20 03:10:29 +00:00
public override void SendVideoHao(string username, string avatar, string cover_url, string desc, int feed_type, string nickname,
string thumb_url, string url, string extras)
{
var json = JsonConvert.SerializeObject(new { type = MsgType.MT_SEND_VIDEOHAO_MSG, data = new { conversation_id = GetConversationId(username), cover_url = cover_url, desc = desc, feed_type = feed_type, nickname = nickname, thumb_url = thumb_url, url = url, extras = extras } });
SendWxWorkData(User.DwClientId, json);
}
public override void TransRoom(string username, string user_id)
{
var json = JsonConvert.SerializeObject(new { type = MsgType.MT_TRANS_ROOM_MSG, data = new { room_conversation_id = GetConversationId(username), user_id = user_id } });
SendWxWorkData(User.DwClientId, json);
}
public override void OnOffRoomInvite(string username, bool status)
{
var json = JsonConvert.SerializeObject(new { type = MsgType.MT_DISABLE_INVITEROOMCONFIRM_MSG, data = new { room_conversation_id = GetConversationId(username), status = status ? 1 : 0 } });
SendWxWorkData(User.DwClientId, json);
}
public override void OnOffRoomModNick(string username, bool status)
{
var json = JsonConvert.SerializeObject(new { type = MsgType.MT_DISABLE_MODROOMNICK_MSG, data = new { room_conversation_id = GetConversationId(username), status = status ? 1 : 0 } });
SendWxWorkData(User.DwClientId, json);
}
public override void InviteMemberToGroup(string groupid, string[] usernames)
{
if (groupid.IsQun())
{
var json = JsonConvert.SerializeObject(new { type = MsgType.MT_ROOM_ADD_MEMBERS_MSG, data = new { conversation_id = groupid, user_list = usernames } });
SendWxWorkData(User.DwClientId, json);
}
}
public override void AddGroupMemberToFriend(string groupid, string username, string corp_id, string verify)
{
var json = JsonConvert.SerializeObject(new { type = MsgType.MT_ADD_ROOM_USER_MSG, data = new { room_conversation_id = groupid, user_id = username, corp_id = corp_id, verify = verify } });
SendWxWorkData(User.DwClientId, json);
}
public override void ModifyFriendRemark(string username, string remark)
{
var json = JsonConvert.SerializeObject(new { type = MsgType.MT_MODIFY_USER_REMARK_MSG, data = new { user_id = username, remark = remark } });
SendWxWorkData(User.DwClientId, json);
}
public override void ModifyFriendDesc(string username, string desc)
{
var json = JsonConvert.SerializeObject(new { type = MsgType.MT_MODIFY_USER_DESC_MSG, data = new { user_id = username, desc = desc } });
SendWxWorkData(User.DwClientId, json);
}
public override void ModifyFriendPhone(string username, string[] phone_list)
{
var json = JsonConvert.SerializeObject(new { type = MsgType.MT_MODIFY_EXTERNAl_USER_PHONES_MSG, data = new { user_id = username, phone_list = phone_list } });
SendWxWorkData(User.DwClientId, json);
}
public override void ModifyExternalFriendCompanyNick(string username, string company)
{
var json = JsonConvert.SerializeObject(new { type = MsgType.MT_MODIFY_EXTERNAl_USER_COMPANY_MSG, data = new { user_id = username, company = company } });
SendWxWorkData(User.DwClientId, json);
}
public override Task<FriendInfoHandlerEnterprise> SearchContactMobile(string search)
{
try
{
//这里判断是否已经存在在获取的群邀请信息,没有就去获取
if (!User.IsGetContactDic.ContainsKey(search))
{
User.IsGetContactDic[search] = false;//这里添加要查询的群ID,状态为flase(还没收到微信那边返回的数据)
var json = JsonConvert.SerializeObject(new { type = MsgType.MT_SEARCH_USER_MSG, data = new { keyword = search } });
SendWxWorkData(User.DwClientId, json);
}
return Task.Factory.StartNew<FriendInfoHandlerEnterprise>(delegate ()
{
DateTime endtime = DateTime.Now.AddSeconds(20);
do
{
try
{
if (User.IsGetContactDic.ContainsKey(search) && User.IsGetContactDic[search])//等待收到微信查询的消息
{
do
{
if (!User.IsGetContactDic.ContainsKey(search))//等到解析完消息,解析完消息IsGetContactDic中的消息会被删除
{
if (User.FriendHandlerDic.ContainsKey(search))
{
var SeartchFriendInfo = User.FriendHandlerDic[search];
//if (SeartchFriendInfo == null)//如果搜索的时候为空,就直接删除
User.FriendHandlerDic.Remove(search);//处理完直接删除
return SeartchFriendInfo;
}
}
Thread.Sleep(200);
} while (endtime > DateTime.Now);
break;
}
}
catch (Exception ex)
{ }
Thread.Sleep(20);
} while (endtime > DateTime.Now);
return null;
});
}
catch (Exception ex)
{
LogHelper.GetSingleObj().Error($"企业搜索用户信息信息", $"搜索:{search} - {ex.Message} - {ex.StackTrace}");
}
return Task.FromResult<FriendInfoHandlerEnterprise>(null);
}
public override void AddRoutineSearchContact(string username, string openid, string wx_ticket, string verify)
{
var json = JsonConvert.SerializeObject(new { type = MsgType.MT_ADD_SEARCH_USER_MSG, data = new { user_id = username, openid = openid, wx_ticket = wx_ticket, verify = verify } });
SendWxWorkData(User.DwClientId, json);
}
public override void AddEnterpriseSearchContact(string username, string corp_id, string verify)
{
var json = JsonConvert.SerializeObject(new { type = MsgType.MT_ADD_SEARCH_E_USER_MSG, data = new { user_id = username, corp_id = corp_id, verify = verify } });
SendWxWorkData(User.DwClientId, json);
}
public override void AddCardFriendContact(string username, string corp_id, string from_user_id, string verify)
{
var json = JsonConvert.SerializeObject(new { type = MsgType.MT_ADD_CARDFRIEND_MSG, data = new { user_id = username, corp_id = corp_id, from_user_id = from_user_id, verify = verify } });
SendWxWorkData(User.DwClientId, json);
}
public override void AddDelFriendContact(string username, string corp_id, string verify)
{
var json = JsonConvert.SerializeObject(new { type = MsgType.MT_ADD_DELFRIEND_MSG, data = new { user_id = username, corp_id = corp_id, verify = verify } });
SendWxWorkData(User.DwClientId, json);
}
public override void DeleteFriend(string username)
{
var ftmp = User.WorkFriends.FirstOrDefault(f => f.Key == username).Value;
var json = JsonConvert.SerializeObject(new { type = MsgType.MT_DEL_FRIEND, data = new { user_id = username, corp_id = ftmp != null ? ftmp.corp_id : "0" } });
SendWxWorkData(User.DwClientId, json);
}
public override void AcceptFriend(string msg)
{
try
{
var reg = Regex.Match(msg, @"{""user_id"":""(?<user_id>[^""]+?)"",""corp_id"":""(?<corp_id>[^""]+?)""}");
if (reg.Success)
{
var user_id = reg.Groups["user_id"].Value;
var corp_id = reg.Groups["corp_id"].Value;
var json = JsonConvert.SerializeObject(new
{
type = MsgType.MT_ACCEPT_FRIEND_REQUEST,
data = new { user_id = user_id, corp_id = corp_id }
});
SendWxWorkData(User.DwClientId, json);
}
}
catch (Exception ex)
{
LogHelper.GetSingleObj().Error($"接受好友申请", ex.Message);
}
}
public override Task<CreateGroupInfo> CreateExternalGroup()
{
try
{
var type = RobotIsRunType.;
//这里判断是否已经存在在获取的群邀请信息,没有就去获取
if (!User.IsGetDic.ContainsKey(type))
{
User.IsGetDic[type] = false;//这里添加要查询的群ID,状态为flase(还没收到微信那边返回的数据)
var json = JsonConvert.SerializeObject(new { type = MsgType.MT_CREATE_NULL_ROOM_MSG, data = new { } });
SendWxWorkData(User.DwClientId, json);
}
return Task.Factory.StartNew<CreateGroupInfo>(delegate ()
{
var keyMd5 = HttpExtend.GetMD5String($"CACHE_CREATEGROUP{type}");
DateTime endtime = DateTime.Now.AddSeconds(20);
do
{
if (User.IsGetDic.ContainsKey(type) && User.IsGetDic[type])//等待收到微信查询的消息
{
do
{
if (!User.IsGetDic.ContainsKey(type))//等到解析完消息,解析完消息IsGetDic中的消息会被删除
{
var createGroupInfo = Common.GetCache<CreateGroupInfo>(keyMd5);
Common.RemoveCache(keyMd5);
return createGroupInfo;
}
Thread.Sleep(200);
} while (endtime > DateTime.Now);
break;
}
Thread.Sleep(20);
} while (endtime > DateTime.Now);
return null;
});
}
catch (Exception ex)
{
LogHelper.GetSingleObj().Error($"企业获取创建群信息", ex.Message);
}
return Task.FromResult<CreateGroupInfo>(null);
}
//public override Task<Dictionary<string, FriendBase>> GetInnerFirends()
//{
// try
// {
// var type = RobotIsRunType.获取内部好友列表;
// //这里判断是否已经存在在获取所有好友信息,没有就去获取
// if (!User.IsGetDic.ContainsKey(type))
// {
// User.IsGetDic[type] = false;//这里添加要查询类型,状态为flase(还没收到微信那边返回的数据)
// var json = JsonConvert.SerializeObject(new { type = MsgType.MT_GET_INNER_USERS_MSG, data = new { page_num = 1, page_size = 100000 } });
// SendWxWorkData(User.DwClientId, json);
// }
// return Task.Factory.StartNew<Dictionary<string, FriendInfoEnterprise>>(delegate ()
// {
// DateTime endtime = DateTime.Now.AddSeconds(20);
// do
// {
// if (User.IsGetDic.ContainsKey(type) && User.IsGetDic[type])//等待收到微信查询的消息
// {
// do
// {
// if (!User.IsGetDic.ContainsKey(type))//等到解析完消息,解析完消息IsGetDic中的消息会被删除
// {//这里只返回外部的好友
// if (FriendDic != null)
// {
// var innerFirends = FriendDic.Where(f => f.Value.FriendType == EnterpriseFriendType.内部好友).ToDictionary(f => f.Key, z => z.Value);
// return innerFirends;
// }
// return FriendDic;
// }
// Thread.Sleep(200);
// } while (endtime > DateTime.Now);
// break;
// }
// Thread.Sleep(20);
// } while (endtime > DateTime.Now);
// return null;
// });
// }
// catch (Exception ex)
// {
// LogHelper.GetSingleObj().Error($"企业获取内部好友列表", ex.Message);
// }
// return Task.FromResult<Dictionary<string, FriendInfoEnterprise>>(null);
//}
public override Task<Dictionary<string, WorkFriendInfo>> GetExternalFirends()
{
try
{
var type = RobotIsRunType.;
//这里判断是否已经存在在获取所有好友信息,没有就去获取
if (!User.IsGetDic.ContainsKey(type))
{
User.IsGetDic[type] = false;//这里添加要查询类型,状态为flase(还没收到微信那边返回的数据)
var json = JsonConvert.SerializeObject(new { type = MsgType.MT_GET_EXTERNAL_USERS_MSG, data = new { page_num = 1, page_size = 100000 } });
SendWxWorkData(User.DwClientId, json);
}
return Task.Factory.StartNew<Dictionary<string, WorkFriendInfo>>(delegate ()
{
DateTime endtime = DateTime.Now.AddSeconds(20);
do
{
if (User.IsGetDic.ContainsKey(type) && User.IsGetDic[type])//等待收到微信查询的消息
{
do
{
if (!User.IsGetDic.ContainsKey(type)) //等到解析完消息,解析完消息IsGetDic中的消息会被删除
{
if (User.WorkFriends != null)
{
return User.WorkFriends;
}
return null;
}
Thread.Sleep(200);
} while (endtime > DateTime.Now);
break;
}
Thread.Sleep(20);
} while (endtime > DateTime.Now);
return null;
});
}
catch (Exception ex)
{
LogHelper.GetSingleObj().Error($"获取外部好友列表", ex.Message);
}
return Task.FromResult<Dictionary<string, WorkFriendInfo>>(null);
}
//public override Task<QrImageInfo> GetOwnQrImage()
//{
// try
// {
// var type = RobotIsRunType.获取自己的二维码;
// //这里判断是否已经存在在获取所有好友信息,没有就去获取
// if (!User.IsGetDic.ContainsKey(type))
// {
// QrImageInfo = null;
// User.IsGetDic[type] = false;//这里添加要查询类型,状态为flase(还没收到微信那边返回的数据)
// var json = JsonConvert.SerializeObject(new { type = MsgType.MT_GET_OWN_QRIMAGE, data = new { } });
// SendWxWorkData(User.DwClientId, json);
// }
// return Task.Factory.StartNew<QrImageInfo>(delegate ()
// {
// DateTime endtime = DateTime.Now.AddSeconds(20);
// do
// {
// if (User.IsGetDic.ContainsKey(type) && User.IsGetDic[type])//等待收到微信查询的消息
// {
// do
// {
// if (!User.IsGetDic.ContainsKey(type))//等到解析完消息,解析完消息IsGetDic中的消息会被删除
// return QrImageInfo;
// Thread.Sleep(200);
// } while (endtime > DateTime.Now);
// break;
// }
// Thread.Sleep(20);
// } while (endtime > DateTime.Now);
// return null;
// });
// }
// catch (Exception ex)
// {
// LogHelper.GetSingleObj().Error($"获取自己二维码", ex.Message);
// }
// return Task.FromResult<QrImageInfo>(null);
//}
public override void FlushLoginQrImage()
{
var json = JsonConvert.SerializeObject(new { type = MsgType.MT_FLUSH_LOGINQRIMAGE_MSG, data = new { } });
SendWxWorkData(User.DwClientId, json);
}
public override void DissolveGroup(string GroupId)
{
var json = JsonConvert.SerializeObject(new { type = MsgType.MT_DISSOLVE_ROOM, data = new { room_conversation_id = GetConversationId(GroupId) } });
SendWxWorkData(User.DwClientId, json);
}
public override Task<string> CdnDown(string url, string auth_key, string aes_key, int size, FileSuffixType fileSuffixType)
{
#region
/*
{
"type":11171,
"data":{
"url":"https:\/\/imunion.weixin.qq.com\/cgi-bin\/mmae-bin\/tpdownloadmedia?param=v1_84d696afdc73fbf997931c6eb898facc4830ae5cb891060fdd5cca540beccd2de56cbc84207058d80f2af266f925e458ca19263f710bc0905881589f0b816c5def9bb2a039e0127bb680b6f3c8db2f93abf477d369374598cea92a001adf3f5977ba47cfa347643a36b05f96c4fa54ebc7f4f00767a0ba2a859ac82b6c0e9efacd07eb5c15c098837f4a19f27a0a897a890394f88ae7dd215f75e4199ac4c5e9c893358e5aee215a07ac0882aad2e72e249cacaaf0e2929ebf15dc147fceb386f8560923cba106cea3f5c0548ace640455df853ab7606f6e88acf48cdcb9593d7873c487536327e8988d969a360da527c09d7765dfc382ed98071720c3b3ba108cc2c3504907d095575676333a64ae6a2fdf9a2af2138e1c0d953a56d6a3c281348a7e71fd10f7b80220e4b4a4c1473ac5f00e07d132ad000289d96bd8abc40a",
"auth_key":"v1_84d696afdc73fbf997931c6eb898facc4830ae5cb891060fdd5cca540beccd2d2d7fa866eb7f785638f4c69ac9c904a43685d48a39b7162bbab469dc884dd1e8",
"aes_key":"9385a744af20cba0e59a52d51e3cacd1",
"size":16504,
"save_path":"e:\\cdn\\3.jpg"
}
}
*/
#endregion
return CdnDown(Common.CreateNewFilePath(fileSuffixType), url, auth_key, aes_key, size);
}
public override Task<string> CdnDown(string url, string auth_key, string aes_key, int size, string fileName)
{
var filePath = HttpExtend.MapFile(fileName, $"Cache\\Other");
return CdnDown(filePath, url, auth_key, aes_key, size);
}
/// <summary>
/// Cdn实际处理的地方
/// </summary>
/// <param name="save_path"></param>
/// <returns></returns>
private Task<string> CdnDown(string save_path, string url, string auth_key, string aes_key, int size)
{
try
{
var md5 = HttpExtend.GetMD5String(save_path);
//这里判断是否已经存在在获取的群邀请信息,没有就去获取
if (!User.IsGetContactDic.ContainsKey(md5))
{
User.IsGetContactDic[md5] = false;//这里添加要查询的群ID,状态为flase(还没收到微信那边返回的数据)
var json = JsonConvert.SerializeObject(new { type = MsgType.MT_CDN_DOWN_MSG, data = new { url = url, auth_key = auth_key, aes_key = aes_key, size = size, save_path = save_path } });
SendWxWorkData(User.DwClientId, json);
}
return Task.Factory.StartNew<string>(delegate ()
{
DateTime endtime = DateTime.Now.AddSeconds(20);
do
{
if (User.IsGetContactDic.ContainsKey(md5) && User.IsGetContactDic[md5])//等待收到微信查询的消息
{
do
{
if (!User.IsGetContactDic.ContainsKey(md5)) //等到解析完消息,解析完消息IsGetContactDic中的消息会被删除
//return Common.GetCache(md5) ? save_path : null;
return save_path;
Thread.Sleep(200);
} while (endtime > DateTime.Now);
break;
}
Thread.Sleep(20);
} while (endtime > DateTime.Now);
return save_path;
});
}
catch (Exception ex)
{
LogHelper.GetSingleObj().Error($"企业Cdn下载", ex.Message);
}
return Task.FromResult<string>(save_path);
}
public override Task<string> C2cCdnDown(string aes_key, string file_id, int file_size, QyCdnFileType file_type, FileSuffixType fileSuffixType)
{
return C2cCdnDown(Common.CreateNewFilePath(fileSuffixType), aes_key, file_id, file_size, file_type);
}
private Task<string> C2cCdnDown(string save_path, string aes_key, string file_id, int file_size, QyCdnFileType file_type)
{
#region ,..,使
//try
//{
// var md5 = HttpExtend.GetMD5String(save_path);
// //这里判断是否已经存在在获取的群邀请信息,没有就去获取
// if (!IsGetContactDic.ContainsKey(md5))
// {
// IsGetContactDic[md5] = false;//这里添加要查询的群ID,状态为flase(还没收到微信那边返回的数据)
// var json = JsonConvert.SerializeObject(new { type = MsgType_QY.MT_C2CCDN_DOWN_MSG, data = new { aes_key = aes_key, file_id = file_id, save_path = save_path, file_size = file_size, file_type = (int)file_type } });
// SendClient(CoreRobotMsgEnum.Cdn文件下载, json);
// }
// return Task.Factory.StartNew<string>(delegate ()
// {
// DateTime endtime = DateTime.Now.AddSeconds(20);
// do
// {
// if (IsGetContactDic.ContainsKey(md5) && IsGetContactDic[md5])//等待收到微信查询的消息
// {
// do
// {
// if (!IsGetContactDic.ContainsKey(md5))//等到解析完消息,解析完消息IsGetContactDic中的消息会被删除
// return CacheClient.SigleClient.Cache.ContainsKey(md5) ? save_path : null;
// Thread.Sleep(200);
// } while (endtime > DateTime.Now);
// break;
// }
// Thread.Sleep(20);
// } while (endtime > DateTime.Now);
// return null;
// });
//}
//catch (Exception ex)
//{
// LogHelper.WriteLog($"企业小程序图片Cdn下载", ex);
//}
//return null;
#endregion
#region
try
{
var json = JsonConvert.SerializeObject(new { type = MsgType.MT_C2CCDN_DOWN_MSG, data = new { aes_key = aes_key, file_id = file_id, save_path = save_path, file_size = file_size, file_type = (int)file_type } });
SendWxWorkData(User.DwClientId, json);
return Task.Factory.StartNew<string>(delegate ()
{
DateTime endtime = DateTime.Now.AddSeconds(10);
do
{
if (File.Exists(save_path))
return save_path;
Thread.Sleep(500);
} while (endtime > DateTime.Now);
return save_path;
});
}
catch (Exception ex)
{
LogHelper.GetSingleObj().Error($"企业小程序图片Cdn下载", ex.Message);
}
#endregion
return Task.FromResult(save_path);
}
public override Task<string> BigCdnDown(string file_path, string file_type)
{
//SendWxWorkData(User.DwClientId, json);
return null;
}
public override Task<FileC2cCdnInfo> GetCdnByUpLoadFile(string file_path, int file_type)
{
try
{
var md5 = HttpExtend.GetMD5String(file_path);
if (User.FileC2cCdnInfoDic.ContainsKey(md5))
return Task.FromResult(User.FileC2cCdnInfoDic[md5]);
var imgPathTmp = Common.CreateNewFilePath(FileSuffixType.jpg, md5);
//这里判断是否已经存在在获取的群邀请信息,没有就去获取
if (!User.IsGetContactDic.ContainsKey(md5))
{
if (Common.DownFile(file_path, imgPathTmp)) //这里下载文件的名称以传入的文件本地路径或Url的md5,在收到回调后以这个为依据
{
var json = JsonConvert.SerializeObject(new { type = MsgType.MT_GETCDN_UPLOADFILE, data = new { file_path = imgPathTmp, file_type = file_type } });
SendWxWorkData(User.DwClientId, json);
}
else
throw new Exception("传递的文件信息无法解析,终止获取文件Cdn");
}
return Task.Factory.StartNew<FileC2cCdnInfo>(delegate ()
{
DateTime endtime = DateTime.Now.AddSeconds(20);
do
{
if (User.IsGetContactDic.ContainsKey(md5) && User.IsGetContactDic[md5])//等待收到微信查询的消息
{
do
{
if (!User.IsGetContactDic.ContainsKey(md5))//等到解析完消息,解析完消息IsGetContactDic中的消息会被删除
{
if (User.FileC2cCdnInfoDic.ContainsKey(md5))
return User.FileC2cCdnInfoDic[md5];
return null;
}
Thread.Sleep(200);
} while (endtime > DateTime.Now);
break;
}
Thread.Sleep(20);
} while (endtime > DateTime.Now);
return null;
});
}
catch (Exception ex)
{
LogHelper.GetSingleObj().Error($"企业上传文件获取Cdn信息", ex.Message);
}
return Task.FromResult<FileC2cCdnInfo>(null);
}
}
}