old_flsystem/应用/FreeActivity/Class1.cs

299 lines
17 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 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);
}
}
}
}