old_flsystem/应用/WebTools/Class1.cs

340 lines
20 KiB
C#

using Api.Framework;
using Api.Framework.Events;
using Api.Framework.Model;
using Api.Framework.SDK;
using Chat.Framework;
using Chat.Framework.WXSdk;
using Chat.Framework.WXSdk.Implement;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
using UI.Framework.Forms;
using WebTools.Properties;
using Plugin = Api.Framework.SDK.Plugin;
namespace WebTools
{
public class Class1 : Plugin
{
public Class1()
{
this.Name = Resources.PluginName;
this.Note = Resources.PluginNote;
this.Logo = Resources.web工具;
}
#region
public static Config Config;
#endregion
public override void Start()
{
try
{
var session = ApiClient.GetSession();
//创建配置文件
Config = this.ReadConfig<Config>();
SDK.WebRequestEvent += SDK_WebRequestEvent;
}
catch (Exception ex)
{
this.OnLog(ex.Message);
}
}
public override void ShowForm()
{
try
{
//Clipboard.SetDataObject("https://docs.qq.com/doc/DWkNod0luR29acExG");
Clipboard.SetDataObject("https://docs.qq.com/doc/DWlRVYWxTY1dHc01B");
BaseForm.ShowSuccessAutoClose("已经复制使用说明地址,请到本机浏览器粘贴查看!");
}
catch (Exception ex)
{
this.OnLog(ex.Message);
}
}
/// <summary>
/// 字符串转换成平台类型(ChatType)
/// </summary>
/// <param name="chattype"></param>
/// <returns></returns>
private ChatType ConvertChatType(string chattype)
{
//wechat|QQ|wempchat
//微信,QQ,微信公众号
chattype = chattype.Trim().ToLower();
if ("wechat" == chattype)
return ChatType.;
//if ("workwechat" == chattype)
// return ChatType.企业微信;
else if ("qq" == chattype)
return ChatType.QQ;
//else if ("wempchat" == chattype)
// return ChatType.微信公众号;
new Exception("账号类型不存在.类型包含(wechat)");
return ChatType.;
}
private void SDK_WebRequestEvent(object sender, WebRequestEvents e)
{
try
{
#region
if (e.Param.ContainsKey("method"))//方法名称
{
var method = e.Param["method"].ToLower();
switch (method)
{
case "getrobots"://获取机器人状态
{
var session = ApiClient.GetSession();
var robots = session.FindRobots(true);
var wxBases = ChatClient.WXClient.Values.Where(f => f.Status == WxStatus.线);
//var qqBases = Chat.Framework.ChatClient.QQPool.QQClients.Values;
List<Object> _robots = new List<object>();
foreach (var robot in robots)
{
if (robot.type == ChatType. || robot.type == ChatType.)
{
var _robot = wxBases.FirstOrDefault(f => f.WeixinHao == robot.name);
_robots.Add(new { name = robot.name, nick = robot.nick, type = robot.type.ToString(), status = _robot == null ? "未登录" : _robot.Status.ToString() });
}
}
e.Send(CsharpHttpHelper.HttpHelper.ObjectToJson(_robots), 200);
}
break;
case "getgroupinfo"://获取群信息
{
try
{
if (!e.Param.ContainsKey("robotname") || string.IsNullOrWhiteSpace(e.Param["robotname"])) throw new Exception("缺少参数robotname或者参数robotname值为空");
//if (!e.Param.ContainsKey("chattype") || string.IsNullOrWhiteSpace(e.Param["chattype"])) throw new Exception("缺少参数chattype或者参数chattype值为空.类型包含(wechat)");
if (!e.Param.ContainsKey("groupid") || string.IsNullOrWhiteSpace(e.Param["groupid"])) throw new Exception("缺少参数groupid或者参数groupid值为空");
//var type = e.Param["chattype"]; //机器人类型
var chatType = ChatType.;//ConvertChatType(type);
var robotname = e.Param["robotname"]; //机器人账号
var groupid = e.Param["groupid"]; //群id
var session = ApiClient.GetSession();
switch (chatType)
{
case ChatType.:
{
var wxBase = Chat.Framework.ChatClient.WXClient.Values.FirstOrDefault(f => f.WeixinType == Chat.Framework.WXSdk.Implement.WeixinType.Grpc微信 && f.WeixinHao.Trim() == robotname.Trim() && f.Status == Chat.Framework.WXSdk.WxStatus.线);
if (wxBase == null) throw new Exception($"{robotname}机器人不存在或为离线状态");
var groupinfo = wxBase.GetContact(groupid, true);
if (groupinfo == null || string.IsNullOrWhiteSpace(groupinfo.ExtInfo)) throw new Exception($"没有获取到{robotname}机器人{groupid}群信息");
var result = new { groupname = groupinfo.NickName, groupid = groupinfo.UserName, creator = groupinfo.ChatRoomOwner, membercount = groupinfo.ExtInfo.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries).Length, memberlist = groupinfo.ExtInfo };
e.Send(result, 200);
}
break;
case ChatType.:
{
throw new Exception("开发中...");
}
case ChatType.:
default:
throw new Exception("未知错误");
//break;
}
}
catch (Exception ex)
{
e.Send(ex.Message);
}
}
break;
case "sendmsg"://发送消息
{
try
{
if (!e.Param.ContainsKey("robotname") || string.IsNullOrWhiteSpace(e.Param["robotname"])) throw new Exception("缺少参数robotname或者参数robotname值为空");
//if (!e.Param.ContainsKey("chattype") || string.IsNullOrWhiteSpace(e.Param["chattype"])) throw new Exception("缺少参数chattype或者参数chattype值为空.类型包含(wechat)");
if (!e.Param.ContainsKey("touser") || string.IsNullOrWhiteSpace(e.Param["touser"])) throw new Exception("缺少参数touser或者参数touser值为空");
//if (!e.Param.ContainsKey("msgtype") || string.IsNullOrWhiteSpace(e.Param["msgtype"])) throw new Exception("缺少参数msgtype或者参数msgtype值为空.类型包含(q|s)");
if (!e.Param.ContainsKey("msg") || string.IsNullOrWhiteSpace(e.Param["msg"])) throw new Exception("缺少参数msg或者参数msg值为空");
//var type = e.Param["chattype"]; //机器人类型
var chatType = ChatType.;// ConvertChatType(type);
//var msgtype = e.Param["msgtype"];
//if (msgtype != "q" && msgtype != "s") throw new Exception("msgtype值有误.类型包含(q|s)");
var robotname = e.Param["robotname"]; //机器人账号
var touser = e.Param["touser"]; //发送给谁
var msg = e.Param["msg"]; //发送内容
var session = ApiClient.GetSession();
switch (chatType)
{
case ChatType.:
{
var wxBase = ChatClient.WXClient.Values.FirstOrDefault(f => /*f.WeixinType == WeixinType.Grpc微信 &&*/ f.WeixinHao.Trim() == robotname.Trim() && f.Status == WxStatus.线);
if (wxBase == null) throw new Exception($"{robotname}机器人不存在或为离线状态");
wxBase.SendMessage(touser, msg);
e.Send("执行成功", 200);
}
break;
case ChatType.:
throw new Exception("开发中...");
case ChatType.:
default:
throw new Exception("未知错误");
}
}
catch (Exception ex)
{
e.Send(ex.Message);
}
}
break;
case "groupinvitemember"://邀请入群
{
try
{
if (!e.Param.ContainsKey("robotname") || string.IsNullOrWhiteSpace(e.Param["robotname"])) throw new Exception("缺少参数robotname或者参数robotname值为空");
//if (!e.Param.ContainsKey("chattype") || string.IsNullOrWhiteSpace(e.Param["chattype"])) throw new Exception("缺少参数chattype或者参数chattype值为空.类型包含(wechat|workwechat)");
if (!e.Param.ContainsKey("username") || string.IsNullOrWhiteSpace(e.Param["username"])) throw new Exception("缺少参数username或者参数username值为空");
if (!e.Param.ContainsKey("groupid") || string.IsNullOrWhiteSpace(e.Param["groupid"])) throw new Exception("缺少参数groupid或者参数groupid值为空");
//var type = e.Param["chattype"]; //机器人类型
var chatType = ChatType.;//ConvertChatType(type);
var robotname = e.Param["robotname"]; //机器人账号
var username = e.Param["username"]; //入群用户账号
var groupid = e.Param["groupid"]; //群id
var session = ApiClient.GetSession();
switch (chatType)
{
case ChatType.:
{
var wx = ChatClient.WXClient.FirstOrDefault(f => f.Key == robotname).Value;
if (wx != null && wx.Status == WxStatus.线)
{
var ipad = wx;
var result = ipad.InviteIntoGroup(username, groupid);
e.Send($"执行成功", 200);
}
else throw new Exception($"{robotname}机器人不存在或为离线状态");
}
break;
case ChatType.:
throw new Exception("开发中...");
//break;
case ChatType.:
default:
throw new Exception("未知错误");
//break;
}
}
catch (Exception ex)
{
e.Send(ex.Message);
}
}
break;
case "groupexit"://退出群
{
try
{
if (!e.Param.ContainsKey("robotname") || string.IsNullOrWhiteSpace(e.Param["robotname"])) throw new Exception("缺少参数robotname或者参数robotname值为空");
//if (!e.Param.ContainsKey("chattype") || string.IsNullOrWhiteSpace(e.Param["chattype"])) throw new Exception("缺少参数chattype或者参数chattype值为空.类型包含(wechat|workwechat)");
if (!e.Param.ContainsKey("groupid") || string.IsNullOrWhiteSpace(e.Param["groupid"])) throw new Exception("缺少参数groupid或者参数groupid值为空");
//var type = e.Param["chattype"]; //机器人类型
var chatType = ChatType.;//ConvertChatType(type);
var robotname = e.Param["robotname"]; //机器人账号
var groupid = e.Param["groupid"]; //群id
var session = ApiClient.GetSession();
switch (chatType)
{
case ChatType.:
{
var wx = ChatClient.WXClient.FirstOrDefault(f => f.Key == robotname).Value;
if (wx != null && wx.WeixinType == WeixinType.Grpc微信 && wx.Status == Chat.Framework.WXSdk.WxStatus.线)
{
var ipad = wx as WXClientImpl_IPAD;
e.Send($"执行成功", 200);
}
else throw new Exception($"{robotname}机器人不存在或为离线状态");
}
break;
case ChatType.:
throw new Exception("开发中...");
case ChatType.:
default:
throw new Exception("未知错误");
}
}
catch (Exception ex)
{
e.Send(ex.Message);
}
}
break;
case "refreshcontact"://更新联系人
{
try
{
if (!e.Param.ContainsKey("robotname") || string.IsNullOrWhiteSpace(e.Param["robotname"])) throw new Exception("缺少参数robotname或者参数robotname值为空");
//if (!e.Param.ContainsKey("chattype") || string.IsNullOrWhiteSpace(e.Param["chattype"])) throw new Exception("缺少参数chattype或者参数chattype值为空.类型包含(wechat|workwechat)");
//var type = e.Param["chattype"]; //机器人类型
var chatType = ChatType.;//ConvertChatType(type);
var robotname = e.Param["robotname"]; //机器人账号
var session = ApiClient.GetSession();
switch (chatType)
{
case ChatType.:
{
var wx = ChatClient.WXClient.FirstOrDefault(f => f.Key == robotname).Value;
if (wx != null && wx.WeixinType == WeixinType.Grpc微信 && wx.Status == Chat.Framework.WXSdk.WxStatus.线)
{
var ipad = wx as WXClientImpl_IPAD;
ipad.Initialization();
ipad.RefreshContact();
e.Send($"执行成功", 200);
}
else throw new Exception($"{robotname}机器人不存在或为离线状态");
}
break;
case ChatType.:
throw new Exception("开发中...");
case ChatType.:
default:
throw new Exception("未知错误");
}
}
catch (Exception ex)
{
e.Send(ex.Message);
}
}
break;
default:
break;
}
}
#endregion
}
catch (Exception ex)
{
}
}
}
}