old_flsystem/应用/FreeActivity/Class1.cs

299 lines
17 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 FreeActivity.Entitys;
using FreeActivity.Properties;
using System;
using System.Data;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
namespace FreeActivity
{
public class Class1 : Plugin
{
public Class1()
{
this.Name = Resources.PluginName;
this.Note = Resources.PluginNote;
this.Logo = Resources.;
}
#region
#region
public static Config Config;
private MainForm mainForm = null;
#endregion
public override void Start()
{
try
{
var session = ApiClient.GetSession();
#region
if (!session.TableExist<fl_plugin_freeactivity_info>())
{
session.CreateTable<fl_plugin_freeactivity_info>();
session.AddUnique<fl_plugin_freeactivity_info>("name");
session.AddIndex<fl_plugin_freeactivity_info>("name");
}
if (!session.TableExist<fl_plugin_freeactivity_user_info>())
session.CreateTable<fl_plugin_freeactivity_user_info>();
#endregion
//创建配置文件
Config = this.ReadConfig<Config>();
SDK.ReciveIMEvent += SDK_ReciveIMEvent;
}
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);
}
}
#endregion
private void SDK_ReciveIMEvent(object sender, ReciveIMEvent e)
{
try
{
#region
if (!string.IsNullOrEmpty(Config.ViewTask_CMD) && Regex.IsMatch(e.Message.Trim(), Config.ViewTask_CMD))
{
var session = ApiClient.GetSession();
var freeactivity_infos = session.Find<fl_plugin_freeactivity_info>("activity_time_end >= @now", new { now = DateTime.Now });
if (freeactivity_infos.Count != 0)
{
var now = DateTime.Now;
var freeactivity_unstart = freeactivity_infos.Where(f => f.activity_time_begin >= now).ToList();//活动未开始
var freeactivity_start = freeactivity_infos.Where(f => f.activity_time_begin < now).ToList();//活动进行中
var unstartStr = new StringBuilder();
var startStr = new StringBuilder();
for (int i = 0; i < freeactivity_unstart.Count; i++)
{
unstartStr.AppendLine($"{i + 1}、{freeactivity_unstart[i].name}");
}
for (int i = 0; i < freeactivity_start.Count; i++)
{
startStr.AppendLine($"{i + 1}、{freeactivity_start[i].name}");
}
e.SendMessage(Config.ViewTaskTips.Replace("[未开始任务列表]", string.IsNullOrEmpty(unstartStr.ToString().Trim()) ? "无" : unstartStr.ToString().Trim()).Replace("[进行中任务列表]", string.IsNullOrEmpty(startStr.ToString().Trim()) ? "无" : startStr.ToString().Trim()));
}
}
#endregion
#region
var reg = Regex.Match(e.Message.Trim(), Config.GetTask_CMD);
if (reg.Success)
{
var taskName = reg.Groups["任务名"].Value.Trim();
var session = ApiClient.GetSession();
var now = DateTime.Now;
//var freeactivity = session.Find<fl_plugin_freeactivity_info>("name = @name and activity_time_end >= @now", new { name = taskName, now = now }).FirstOrDefault();
var freeactivity = session.FindSingle<fl_plugin_freeactivity_info>("name = @name", new { name = taskName });
if (freeactivity != null)
{
if (freeactivity.activity_time_end >= now)
{
if (freeactivity.activity_time_begin <= now)
{
var freeactivity_user = session.Find<fl_plugin_freeactivity_user_info>("uid = @uid and activityid = @activityid", new { uid = e.GetMemberinfo().id, activityid = freeactivity.id }).FirstOrDefault();
if (freeactivity_user == null)
{
#region condition
var condition = new StringBuilder();
var mess = freeactivity.condition_relation ? Config.GetTaskSuccessAndTips : Config.GetTaskSuccessOrTips;
if (mess.Contains("[任务条件]"))
{
if (freeactivity.check_ordernum)
condition.AppendLine(Config.ViewTaskDetails_OrderNum_ConditionTips.Replace("[订单笔数]", freeactivity.ordernum.ToString()));
if (freeactivity.check_pointsum)
condition.AppendLine(Config.ViewTaskDetails_PointNum_ConditionTips.Replace("[返利金额]", freeactivity.pointsum.ToString()));
if (freeactivity.check_invitenum)
condition.AppendLine(Config.ViewTaskDetails_InviteNum_ConditionTips.Replace("[邀请人数]", freeactivity.invitenum.ToString()));
}
#endregion
#region process
var process = new StringBuilder();
var flag = false;
bool orderflag = false;
if (freeactivity.check_ordernum)
{
int orderNum = 0;
if (Config.ViewTaskDetails_OrderNum_ConditionTips.Contains("[订单笔数]"))
{
var tbResult = session.FindRow($"select count(*) as count from fl_order_alimama where db_userid = @id and db_status = 1002 and create_time >= @time", new { id = e.GetMemberinfo().id, time = freeactivity.activity_time_begin });
var tbReturnNum = int.Parse(tbResult["count"].ToString());
var jdResult = session.FindRow($"select count(*) as count from fl_order_jingdong where db_userid = @id and db_status = 1002 and orderTime >= @time", new { id = e.GetMemberinfo().id, time = freeactivity.activity_time_begin });
var jdReturnNum = int.Parse(jdResult["count"].ToString());
var pddResult = session.FindRow($"select count(*) as count from fl_order_pinduoduo where db_userid = @id and db_status = 1002 and order_pay_time >= @time", new { id = e.GetMemberinfo().id, time = freeactivity.activity_time_begin });
var pddReturnNum = int.Parse(pddResult["count"].ToString());
orderNum = tbReturnNum + jdReturnNum + pddReturnNum;
}
if (freeactivity.ordernum <= orderNum) orderflag = true;
process.AppendLine(Config.TaskProcess_OrderNumTips.Replace("[订单笔数]", orderNum.ToString()));
}
bool pointflag = false;
if (freeactivity.check_pointsum)
{
decimal pointSum = 0m;
if (Config.ViewTaskDetails_PointNum_ConditionTips.Contains("[返利金额]"))
{
var pddResult = session.FindRow($"select round(sum(db_userpoint),2) as sum from fl_order_pinduoduo where db_userid = @id and db_status = 1002 and order_pay_time >= @time", new { id = e.GetMemberinfo().id, time = freeactivity.activity_time_begin });
var pddPendingPoint = string.IsNullOrEmpty(pddResult["sum"].ToString()) ? 0m : decimal.Parse(pddResult["sum"].ToString());
var tbResult = session.FindRow($"select round(sum(db_userpoint),2) as sum from fl_order_alimama where db_userid = @id and db_status = 1002 and create_time >= @time", new { id = e.GetMemberinfo().id, time = freeactivity.activity_time_begin });
var tbPendingPoint = string.IsNullOrEmpty(tbResult["sum"].ToString()) ? 0m : decimal.Parse(tbResult["sum"].ToString());
var jdResult = session.FindRow($"select round(sum(db_userpoint),2) as sum from fl_order_jingdong where db_userid = @id and db_status = 1002 and orderTime >= @time", new { id = e.GetMemberinfo().id, time = freeactivity.activity_time_begin });
var jdPendingPoint = string.IsNullOrEmpty(jdResult["sum"].ToString()) ? 0m : decimal.Parse(jdResult["sum"].ToString());
pointSum = pddPendingPoint + tbPendingPoint + jdPendingPoint;
}
if (freeactivity.pointsum <= (double)pointSum) pointflag = true;
process.AppendLine(Config.TaskProcess_PointNumTips.Replace("[返利金额]", pointSum.ToString()));
}
bool inviteflag = false;
if (freeactivity.check_invitenum)
{
int invitenum = 0;
if (Config.ViewTaskDetails_InviteNum_ConditionTips.Contains("[邀请人数]"))
{
var where = string.Empty;
var result = session.FindRow($"select count(*) as count from fl_member_info where inviter_id = @id and crt_time >= @time", new { id = e.GetMemberinfo().id, time = freeactivity.activity_time_begin });
invitenum = int.Parse(result["count"].ToString());
}
if (freeactivity.invitenum <= invitenum) inviteflag = true;
process.AppendLine(Config.TaskProcess_InviteNumTips.Replace("[邀请人数]", invitenum.ToString()));
}
if (freeactivity.condition_relation)
flag = (freeactivity.check_ordernum ? orderflag : true) && (freeactivity.check_pointsum ? pointflag : true) && (freeactivity.check_invitenum ? inviteflag : true);
else
flag = orderflag || pointflag || inviteflag;
#endregion
if (flag)//已经完成,可以兑换
{
freeactivity_user = new fl_plugin_freeactivity_user_info() { activityid = freeactivity.id, get_time = DateTime.Now, uid = e.GetMemberinfo().id, exchange_time = DateTime.MinValue, is_exchange = ChooseType. };
var value = session.Insertable(freeactivity_user).ExecuteCommand();
e.SendMessage(mess.Replace("[任务名]", freeactivity.name).Replace("[任务条件]", condition.ToString().Trim()).Replace("[任务进度]", process.ToString()));
}
else
{
mess = freeactivity.condition_relation ? Config.GetTaskUnSuccessAndTips : Config.GetTaskUnSuccessOrTips;
e.SendMessage(mess.Replace("[任务名]", freeactivity.name).Replace("[任务条件]", condition.ToString().Trim()).Replace("[任务进度]", process.ToString()));
}
}
else
{
//已经参与过改活动
e.SendMessage(Config.GetTaskRepeatTips.Replace("[任务名]", freeactivity.name));
}
}
else
{
e.SendMessage(Config.TaskNotStartTips.Replace("[任务名]", freeactivity.name).Replace("[起始检验时间]", freeactivity.activity_time_begin.ToString("yyyy-MM-dd HH:mm:ss")).Replace("[结束检验时间]", freeactivity.activity_time_end.ToString("yyyy-MM-dd HH:mm:ss")));
}
}
else
{
e.SendMessage(Config.TaskOutmodedTips.Replace("[任务名]", freeactivity.name));
}
}
else
e.SendMessage(Config.TaskNotExistTips.Replace("[任务名]", taskName));
return;
}
#endregion
#region
if (!string.IsNullOrEmpty(Config.ViewTaskDetails_CMD))
{
reg = Regex.Match(e.Message.Trim(), Config.ViewTaskDetails_CMD);
if (reg.Success)
{
var taskName = reg.Groups["任务名"].Value.Trim();
var session = ApiClient.GetSession();
var freeactivity = session.Find<fl_plugin_freeactivity_info>("name = @name", new { name = taskName }).FirstOrDefault();
if (freeactivity != null)
{
var condition = new StringBuilder();
if (Config.ViewTaskDetailsTips.Contains("[任务条件]"))
{
if (freeactivity.check_ordernum)
condition.AppendLine(Config.ViewTaskDetails_OrderNum_ConditionTips.Replace("[订单笔数]", freeactivity.ordernum.ToString()));
if (freeactivity.check_pointsum)
condition.AppendLine(Config.ViewTaskDetails_PointNum_ConditionTips.Replace("[返利金额]", freeactivity.pointsum.ToString()));
if (freeactivity.check_invitenum)
condition.AppendLine(Config.ViewTaskDetails_InviteNum_ConditionTips.Replace("[邀请人数]", freeactivity.invitenum.ToString()));
}
e.SendMessage(Config.ViewTaskDetailsTips.Replace("[起始检验时间]", freeactivity.activity_time_begin.ToString("yyyy-MM-dd HH:mm:ss")).Replace("[结束检验时间]", freeactivity.activity_time_end.ToString("yyyy-MM-dd HH:mm:ss")).Replace("[免单商品详情]", freeactivity.goods_detail).Replace("[任务条件]", condition.ToString().Trim()));
}
else
e.SendMessage(Config.TaskNotExistTips.Replace("[任务名]", taskName));
return;
}
}
#endregion
}
catch (Exception ex)
{
this.OnLog(ex.Message);
}
}
}
}