old_flsystem/应用/Main/Class1.cs

294 lines
12 KiB
C#
Raw Normal View History

2022-09-20 03:10:29 +00:00
using Api.Framework;
using Api.Framework.SDK;
using Api.Framework.Tools;
using Api.Framework.Utils;
using CsharpHttpHelper;
using Main.Entitys;
using Main.Properties;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using static Api.Framework.Tools.TBHelper;
namespace Main
{
public class Class1 : Plugin
{
public Class1()
{
this.Name = Resources.PluginName;
this.Note = Resources.PluginNote;
this.Logo = Resources.;
}
#region
public static Config Config;
private MainForm mainForm = null;
// public static VariateReplace variateReplace = null;
#endregion
public override void Start()
{
try
{
var session = ApiClient.GetSession();
#region
if (!session.TableExist<fl_plugin_tb>())
{
session.CreateTable<fl_plugin_tb>();
session.AddUnique<fl_plugin_tb>("rid");
}
#endregion
//创建配置文件
Config = this.ReadConfig<Config>();
SDK.ReciveIMEvent += SDK_ReciveIMEvent;
SDK.WXNewFriendEvent += SDK_WXNewFriendEvent;
SDK.WXApplyFriendEvent += SDK_WXApplyFriendEvent;
}
catch (Exception ex)
{
this.OnLog(ex.Message);
}
}
private void SDK_WXApplyFriendEvent(object sender, Chat.Framework.WXSdk.Events.WXApplyFriend e)
{
var strb = new StringBuilder();
strb.Append($"新用户:{e.NewFriendNick}({e.NewFriendWxid})申请加好友");
if (!string.IsNullOrWhiteSpace(e.OldFriendWxid))
strb.Append($"邀请者:{e.OldFriendNick}({e.OldFriendWxid}).");
if (Config.AcceptFriend)
{
string result = e.Client.AgreeAddMe(e.Token);
strb.Append($"自动接受申请");
}
this.OnLog(strb.ToString());
}
private void SDK_WXNewFriendEvent(object sender, Chat.Framework.WXSdk.Events.WXNewFriend e)
{
try
{
if (!string.IsNullOrWhiteSpace(Config.NewFriendMess))
e.Client.SendMessage(e.Friend.UserName, Config.NewFriendMess.Replace("[昵称]", e.Friend.NickName).Replace("[账号]", e.Friend.UserName));
}
catch (Exception ex)
{
this.OnLog(ex.Message);
}
}
public override void ShowForm()
{
try
{
if (mainForm == null || mainForm.IsDisposed)
{
mainForm = new MainForm();
mainForm.Show();
}
mainForm.TopMost = true;
mainForm.TopMost = false;
}
catch (Exception ex)
{
this.OnLog(ex.Message);
}
}
public override void Stop()
{
try
{
if (mainForm != null)
{
mainForm.CloseForm();
mainForm = null;
}
}
catch (Exception ex)
{
this.OnLog(ex.Message);
}
}
private void SDK_ReciveIMEvent(object sender, ReciveIMEvent e)
{
try
{
//过滤表情xml和卡片xml
if ((e.Message.ToLower().Contains(@"<appmsg appid=") || e.Message.ToLower().Contains(@"<msg><emoji") || e.Message.StartsWith("[视频=") || e.Message.StartsWith("[表情=") || e.Message.StartsWith("[声音=") || e.Message.StartsWith("[图片=")) && !e.Message.Contains(@"点击链接,再选择浏览器咑閞")) return;
var item_id = string.Empty;
try
{
var flag = false;
var _mess = Regex.Replace(e.Message, "Http:/[A-Za-z]", "", RegexOptions.IgnoreCase);
//_mess = Util.RemoveEmoji(_mess);
var tklTmps = new List<string>();
#region
var regs1 = Regex.Matches(_mess, "[^A-Za-z0-9]?([A-Za-z0-9]{11})[^A-Za-z0-9]?");
foreach (Match item in regs1)
{
if (item.Success)
{
var tkl = item.Groups[1].Value;
if (Regex.IsMatch(tkl, @"(\d{11})"))
continue;
flag = true;
break;
}
}
#endregion
if (!flag)
{
var tklreg = TbAnalysis.GetTklReg();
flag = Regex.IsMatch(e.Message, tklreg, RegexOptions.IgnoreCase);
}
if (!flag)
{
flag = Regex.IsMatch(e.Message, @"(yukhj.com|m.tb.cn|m.yeeoq.top|m.uqlsi|m.rijni|m.gkqmj|m.mulwt|uland\\.taobao\\.com|sjtm.me|aa5d.com|d11a.com|f61[a-z].com|92db.com|yqt.so|e22a.com|f61b.com|detail.m.tmall.hk|k.83jie.com|ewqcxz.com|items.alitrip.com|tmqd.me|detail.tmall.hk|url.cn|taobao.com|mashort.cn|tmall.com|tb.cn|detail.yao.95095.com|laiwang.com|dwz.cn|juhuasuan.com|detail.m.tmall.com|zmnxbc.com|s.click.taobao|detail.liangxinyao.com|m.tb.cn)", RegexOptions.IgnoreCase);
}
if (!flag)
{
flag = Regex.IsMatch(e.Message.Trim(), @"^找.+", RegexOptions.IgnoreCase);
}
if (flag)
{
var db = ApiClient.GetSession();
var data = db.FindSingle<fl_plugin_tb>("rid = @rid", new { rid = e.RobotInfo.id });
if (data == null || string.IsNullOrWhiteSpace(data.invitecode))
return;
var mess = Send(e.Message, data.invitecode, e.GetMemberinfo().username);
if (!string.IsNullOrWhiteSpace(mess))
{
var jObj = JObject.Parse(mess);
if (jObj["code"] == null || (int)jObj["code"] != 200) throw new Exception(mess);
var data1 = jObj["data"];
var cardTitle = data1["cardTitle"].ToString();//卡片标题
var title = data1["title"].ToString();//标题
var description = data1["description"].ToString();//描述
var picUrl = data1["picUrl"].ToString();//图片
var url = data1["url"].ToString();//卡片链接
var shortUrl = data1["shortUrl"].ToString();//文案短链接
var hb = (decimal)data1["lijin"];//红包
var yhq = (decimal)data1["coupon"];//优惠券
var xdj = (decimal)data1["priceAfterCoupon"];//下单价
var jy = hb + yhq;//节约
//{"code":200,"msg":"success","data":{"title":"预估购买奖励:0.53元,优惠券:1元,下单价:6.9元","description":"包邮 漫花 抽纸 绒触感5层80抽/4包/20包/30包家用卫生纸纸巾","picUrl":"https://img.alicdn.com/bao/uploaded/i4/6000000002192/O1CN012ZcrnM1S3yuYZVHF5_!!6000000002192-0-picassoopen.jpg","url":"https://52tlj.com:8095/m/#/pages/goods/detail?id=652169220578\u0026spm=uehOAiI7g.0.-1\u0026wxid=wxid_hlgorn846ihp22"}}
var m = string.Empty;
switch (Config.SendType)
{
case SendTemplateType.:
m = Config.CardText.Replace("[标题]", cardTitle).Replace("[下单地址]", url);
break;
case SendTemplateType.:
m = Config.ImageText;
break;
case SendTemplateType.:
m = Config.CustomContent;
break;
default:
break;
}
e.SendMessage(m.Replace("[商品图片]", picUrl)
.Replace("[标题]", title)
.Replace("[下单价]", xdj.ToString("0.00"))
.Replace("[优惠券]", yhq.ToString("0.00"))
.Replace("[红包金额]", hb.ToString("0.00"))
.Replace("[文案描述]", description)
.Replace("[下单地址]", shortUrl)
.Replace("[合计节约]", jy.ToString("0.00"))
);
}
}
}
catch (Exception ex)
{
this.OnLog($"{ex.Message}");
}
}
catch (Exception ex)
{
}
}
private string Send(string message, string inviteCode, string wxid)
{
StringBuilder strb = new StringBuilder("Web接口请求:");
try
{
strb.AppendLine($"内容:{message}");
message = HttpHelper.URLEncode(message, Encoding.UTF8);
var t = HttpExtend.GetTimeStamp();
var sig = getSign(message, inviteCode, wxid, t);
var postData = @"{""appKey"":""" + appKey + @""",""content"":""" + message + @""",""inviteCode"":""" + inviteCode + @""",""sign"":""" + sig + @""",""t"":" + t + @",""wxId"":""" + wxid + @"""}";
HttpHelper _http = new HttpHelper();
HttpItem item = new HttpItem()
{
URL = "https://www.52tlj.com/cms/v1/api/fl/transfer",
Method = "POST",
IsToLower = false,
Cookie = string.Empty,
Referer = "",
Postdata = postData,
Timeout = 5000,
ReadWriteTimeout = 5000,
UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:18.0) Gecko/20100101 Firefox/18.0",
ContentType = "application/json",
Allowautoredirect = false
};
//item.SetProxyipCDN();
var result = _http.GetHtml(item);
var html = result.Html;
strb.AppendLine($"返回数据:{html}");
return html;
}
catch (Exception ex)
{
strb.AppendLine($"异常:{ex.Message}");
}
finally
{
LogHelper.GetSingleObj().Debug("", strb.ToString());
}
return string.Empty;
}
private string appKey = "qnly";
private string appSec = "01ae2596ca8e9349";
private string getSign(string message, string inviteCode, string wxid, string t)
{
try
{
//http://39.103.223.90:18095/cms/v1/api/fl/transfer
//appKey: test
// appSec:1234
//appkey+content+inviteCode+t+wxid+appsec
var md5 = CsharpHttpHelper.HttpHelper.ToMD5(appKey + message + inviteCode + t + wxid + appSec).ToLower();
return md5;
}
catch (Exception ex)
{ }
return string.Empty;
}
}
}