using System; using System.Collections.Generic; using System.Linq; using System.Data; using MySystem.Models; using Library; using System.Threading; using Microsoft.Extensions.Hosting; using System.Threading.Tasks; namespace MySystem { public class HelpProfitPreMerchantHelper { public readonly static HelpProfitPreMerchantHelper Instance = new HelpProfitPreMerchantHelper(); private HelpProfitPreMerchantHelper() { } // A:前一天剩余数量 // B:第二天释放助利宝商户数量 // C(20):每次递减数量 // D(100):释放助利宝商户最大数量 // B = A - C < C ? D : A - C; public void Start() { Thread th = new Thread(StartFor); th.IsBackground = true; th.Start(); } public void StartFor() { while (true) { if(DateTime.Now.Hour >= 15 && DateTime.Now.Hour <= 16) { StatEveryDay(DateTime.Now.ToString("yyyyMMdd")); } Thread.Sleep(600000); } } public void StatEveryDay(string Date) { string check = function.ReadInstance("/HelpProfitResetMerchant/" + Date + ".txt"); if (!string.IsNullOrEmpty(check)) { return; } function.WritePage("/HelpProfitResetMerchant/", Date + ".txt", DateTime.Now.ToString()); DateTime start = DateTime.Parse(Date.Substring(0, 4) + "-" + Date.Substring(4, 2) + "-" + Date.Substring(6, 2) + " 00:00:00"); string Month1 = start.AddMonths(-1).ToString("yyyyMM"); string Month2 = start.AddMonths(-2).ToString("yyyyMM"); string Month3 = start.AddMonths(-3).ToString("yyyyMM"); OtherMySqlConn.connstr = Library.ConfigurationManager.AppSettings["SqlConnStr"].ToString(); HelpProfitRelease obj = new HelpProfitRelease(); string JsonParam = function.ReadInstance("/PublicParam/HelpProfitRelease.txt"); //json参数文件 if(string.IsNullOrEmpty(JsonParam)) { obj.MerBrandId = "1"; obj.GetCount = 100; obj.ExpandCount = 20; obj.SourceCount = 100; function.WritePage("/PublicParam/", "HelpProfitRelease.txt", Newtonsoft.Json.JsonConvert.SerializeObject(obj)); } else { obj = Newtonsoft.Json.JsonConvert.DeserializeObject(JsonParam); } int ExpandCount = obj.ExpandCount; //膨胀数量 int SourceCount = obj.SourceCount; //原始数量 int GetCount = obj.GetCount; //当前实际发放数量 string BrandId = obj.MerBrandId; //允许释放的品牌 List HelpProfitMerchantIds = RedisDbconn.Instance.GetList("HelpProfitMerchantIds", 1, SourceCount); int CurrentLastCount = HelpProfitMerchantIds.Count; //前一天剩余数量 //计算第二天释放助利宝商户数量 GetCount = CurrentLastCount - ExpandCount < ExpandCount ? SourceCount : CurrentLastCount - ExpandCount; obj.GetCount = GetCount; function.WritePage("/PublicParam/", "HelpProfitRelease.txt", Newtonsoft.Json.JsonConvert.SerializeObject(obj)); RedisDbconn.Instance.Clear("HelpProfitMerchantIds"); DataTable dt = OtherMySqlConn.dtable("SELECT MerchantId,sum FROM( SELECT MerchantId,SUM(TradeAmount) sum FROM PosMerchantTradeSummay WHERE Id>=3809083 and MerchantId not in (select MerchantId from HelpProfitMerIds) AND BrandId in (" + BrandId + ") AND TradeMonth in ('" + Month1 + "','" + Month2 + "','" + Month3 + "') GROUP BY MerchantId)a WHERE a.sum/3 >= 20000 and a.sum/3 <= 60000 limit " + GetCount); foreach(DataRow dr in dt.Rows) { RedisDbconn.Instance.AddList("HelpProfitMerchantIds", int.Parse(function.CheckInt(dr["MerchantId"].ToString()))); } } } }