old_flsystem/PCRobot/PCWechat/Enterprise/Wechat_Xiaoxie_QY_Override.cs

1319 lines
63 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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;
//小程序
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);
}
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;
//if (cdn == null)
// throw new Exception("小程序图片获取Cdn失败");
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 } });
SendWxWorkData(User.DwClientId, _json);
}
catch (Exception ex)
{
LogHelper.GetSingleObj().Error(new System.Diagnostics.StackTrace().GetFrame(0).GetMethod().Name, $"发送小程序:{ex.Message}");
}
}
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}");
}
}
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);
}
}
}