Global文件:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.SessionState;
namespace OrangeMall
{
public class Global : System.Web.HttpApplication
{
static readonly object lock1 = new object(), lock2 = new object();
protected void Application_Start(object sender, EventArgs e)
{
var timer = new System.Timers.Timer(30 * 1000);//30秒
timer.AutoReset = true;//AutoReset 屬性為 true 時,每隔指定時間循環一次;如果為 false,則只執行一次。
timer.Enabled = true;
timer.Elapsed += new System.Timers.ElapsedEventHandler(CancelSekillOrder);
//var timer2 = new System.Timers.Timer( 60 * 60 * 1000);//1小時
//timer2.AutoReset = true;//AutoReset 屬性為 true 時,每隔指定時間循環一次;如果為 false,則只執行一次。
//timer2.Enabled = true;
//timer2.Elapsed += new System.Timers.ElapsedEventHandler(User_Upgrade);
var timer3 = new System.Timers.Timer(60 * 60 * 1000);//1小時
timer3.AutoReset = true;//AutoReset 屬性為 true 時,每隔指定時間循環一次;如果為 false,則只執行一次。
timer3.Enabled = true;
timer3.Elapsed += new System.Timers.ElapsedEventHandler(Execute);
}
protected void Application_End(object sender, EventArgs e)
{
}
protected void CancelSekillOrder(object sender, EventArgs e)
{
#region===超過10分鍾的未付款秒殺訂單取消===
lock (lock2)
{
try
{
var dt = new BLL.t_order().GetList(" GroupSign=3 and OrderState =1 and datediff(mi, AddTime, getdate()) > 10").Tables[0];
for (int i = 0; i < dt.Rows.Count; i++)
{
new BLL.t_order().Delete(Common.Utils.ToGuid(dt.Rows[i]["ID"].ToString()));
}
}
catch (Exception ex)
{
Common.Utils.WriteLogger(ex.Message, "秒殺訂單取消異常");
}
}
#endregion ===超過10分鍾的未付款秒殺訂單取消===
}
protected void Execute(object sender, EventArgs e)
{
lock (lock1)
{
try
{
var now = DateTime.Now;
var configdic = new BLL.t_config().GetConfigDictionary();
#region ===未使用且過期優惠券處理===
new BLL.t_couponlogger().ExpireCoupon();
#endregion ===未使用且過期優惠券處理===
#region===超7天未收貨訂單處理===
var orderlist = new BLL.t_order().GetModelList(" OrderState =3 and DeliverTime<>'' and datediff(dd, DeliverTime, getdate())>7");
if (orderlist.Count > 0)
{
BLL.t_user blluser = new BLL.t_user();
for (int i = 0; i < orderlist.Count; i++)
{
orderlist[i].OrderState = 4;
orderlist[i].ReceiptTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
new BLL.t_order().Update(orderlist[i]);
//三級佣金發放到三級用戶的可提現余額
var lucrlist = new BLL.t_orderlucre().GetModelList(" GroupSign =1 and OrderID='" + orderlist[i].ID + "'");
for (int j = 0; j < lucrlist.Count; j++)
{
var user = blluser.GetModel(lucrlist[j].UserID);
if (user.FreezeBalance >= lucrlist[j].Amount)
{
user.FreezeBalance -= lucrlist[j].Amount;
user.Balance += lucrlist[j].Amount;
}
else
{
user.FreezeBalance = 0;
user.Balance += user.FreezeBalance;
Common.Utils.WriteLogger(user.NickName + "的凍結余額不足扣除");
}
blluser.Update(user);
}
}
}
#endregion ===超7天未收貨訂單處理===
#region ===本月28號發放分紅、清零本月銷售額===
var end = DateTime.Parse(now.ToString("yyyy-MM") + "-" + 28);//本月28號
var begin = DateTime.Parse(now.AddMonths(-1).ToString("yyyy-MM") + "-" + 28);//上月28號
if (DateTime.Compare(now.Date, end.Date) == 0)
{
BLL.t_user blluser = new BLL.t_user();
BLL.t_orderlucre bllorderlucre = new BLL.t_orderlucre();
var reader = new BLL.t_user().GetReader("");
while (reader.Read())
{
var model = new BLL.t_user().GetModel(Common.Utils.ToInt(reader["ID"]));
decimal renwu_amount = 0;
//本月的分紅
decimal shareMoney = new BLL.t_orderlucre().GetAmountSum(" UserID=" + reader["ID"] + " and GroupSign=2 and datediff(d,'" + begin + "',AddTime)>0 and datediff(d,AddTime,'" + end + "')>=0 ");
switch (model.UserGrade)
{
case 2://見習股東
{
if (configdic.ContainsKey("JianXi"))
{
var arr = configdic["JianXi"].Split(',');
if (arr.Length > 0)
renwu_amount = Common.Utils.ToDecimal(arr[0]);
}
}
break;
case 3://高級股東
{
if (configdic.ContainsKey("GaoJi"))
{
var arr = configdic["GaoJi"].Split(',');
if (arr.Length > 0)
renwu_amount = Common.Utils.ToDecimal(arr[0]);
}
}
break;
case 4://首席股東
{
if (configdic.ContainsKey("ShouXi"))
{
var arr = configdic["ShouXi"].Split(',');
if (arr.Length > 0)
renwu_amount = Common.Utils.ToDecimal(arr[0]);
}
}
break;
}
//達標
if (model.SaleAmount >= renwu_amount)
{
//發放本月的分紅到可提現余額
if (shareMoney > 0)
{
if (model.FreezeBalance >= shareMoney)
{
model.Balance += shareMoney;
model.FreezeBalance -= shareMoney;
blluser.Update(model);
}
else
{
model.Balance += model.FreezeBalance;
model.FreezeBalance = 0;
}
blluser.Update(model);
}
}
else
{ //未達標
if (shareMoney > 0)
{ //清零本月分紅和銷售額
if (model.FreezeBalance >= shareMoney)
{
model.FreezeBalance -= shareMoney;
}
else
{
model.FreezeBalance = 0;
}
}
model.SaleAmount = 0;//清零本月銷售額
blluser.Update(model);
//生成記錄
var orderlucre = new Model.t_orderlucre();
orderlucre.Amount = shareMoney;
orderlucre.GroupSign = 4;
orderlucre.UserID = model.ID;
orderlucre.VState = 2;
orderlucre.Intro = "銷售任務未達標";
orderlucre.AddTime = DateTime.Now;
bllorderlucre.Add(orderlucre);
}
}
reader.Close();
}
#endregion
}
catch (Exception ex)
{
Common.Utils.WriteLogger(ex.Message, "timer");
}
}
}
}
}