|
|
@@ -284,6 +284,44 @@ namespace MySystem
|
|
|
private bool CheckAmount(WebCMSEntities db, int MerchantId, int UserId, string TradeMonth)
|
|
|
{
|
|
|
HelpProfitAmountSummary Summary = db.HelpProfitAmountSummary.FirstOrDefault(m => m.UserId == UserId && m.TradeMonth == TradeMonth) ?? new HelpProfitAmountSummary();
|
|
|
+ // ====================
|
|
|
+ if(DateTime.Now >= DateTime.Parse("2023-02-01 00:00:00") && DateTime.Now < DateTime.Parse("2023-03-01 00:00:00"))
|
|
|
+ {
|
|
|
+ HelpProfitAmountSummary PreSummary = db.HelpProfitAmountSummary.FirstOrDefault(m => m.UserId == UserId && m.TradeMonth == "202301") ?? new HelpProfitAmountSummary();
|
|
|
+ if(PreSummary.TradeAmount > PreSummary.MaxAmount)
|
|
|
+ {
|
|
|
+ string conn = Library.ConfigurationManager.AppSettings["SqlConnStr"].ToString();
|
|
|
+ DataTable check = CustomerSqlConn.dtable("SELECT DISTINCT TradeDate FROM HelpProfitMerTradeSummay WHERE MerchantId IN(SELECT MerchantId FROM HelpProfitMerIds WHERE UserId=" + UserId + ") AND TradeMonth='202301'", conn);
|
|
|
+ if(check.Rows.Count < 31)
|
|
|
+ {
|
|
|
+ decimal HelpAmount = 0; //当天总交易额
|
|
|
+ DataTable dt = CustomerSqlConn.dtable("SELECT SUM(TradeAmount) TradeAmount FROM HelpProfitMerTradeSummay WHERE MerchantId IN(SELECT MerchantId FROM HelpProfitMerIds WHERE UserId=" + UserId + ") AND TradeDate='" + DateTime.Now.ToString("yyyyMMdd") + "'", conn);
|
|
|
+ if(dt.Rows.Count > 0)
|
|
|
+ {
|
|
|
+ HelpAmount = decimal.Parse(function.CheckNum(dt.Rows[0]["TradeAmount"].ToString()));
|
|
|
+ }
|
|
|
+ decimal PreHelpAmount = 0; //上月当天总交易额
|
|
|
+ dt = CustomerSqlConn.dtable("SELECT SUM(TradeAmount) TradeAmount FROM HelpProfitMerTradeSummay WHERE MerchantId IN(SELECT MerchantId FROM HelpProfitMerIds WHERE UserId=" + UserId + ") AND TradeDate='" + DateTime.Now.AddMonths(-1).ToString("yyyyMMdd") + "'", conn);
|
|
|
+ if(dt.Rows.Count > 0)
|
|
|
+ {
|
|
|
+ PreHelpAmount = decimal.Parse(function.CheckNum(dt.Rows[0]["TradeAmount"].ToString()));
|
|
|
+ }
|
|
|
+ if(PreHelpAmount > HelpAmount && PreHelpAmount > 0)
|
|
|
+ {
|
|
|
+ decimal FixedPercent = TmpEveryDayPercent()[DateTime.Now.Day];
|
|
|
+ if(PreHelpAmount * FixedPercent > HelpAmount)
|
|
|
+ {
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // ====================
|
|
|
decimal MaxTradeAmount = Summary.MaxAmount; //当月最大交易总额
|
|
|
decimal CheckAmount = 500000 < MaxTradeAmount * 0.3M ? 500000 : MaxTradeAmount * 0.3M;
|
|
|
//当月单台交易额 <= 50万或当月最大交易总额的30%(取小值),则入账
|
|
|
@@ -294,7 +332,19 @@ namespace MySystem
|
|
|
//当月总交易额不超过当月最大交易总额,则入账
|
|
|
if (Summary.TradeAmount < MaxTradeAmount)
|
|
|
{
|
|
|
- return true;
|
|
|
+ decimal EveryDayTradeAmount = MaxTradeAmount / function.get_Random(28, 35); //当月最大交易总额平均值
|
|
|
+ string conn = Library.ConfigurationManager.AppSettings["SqlConnStr"].ToString();
|
|
|
+ decimal HelpAmount = 0; //当天总交易额
|
|
|
+ DataTable dt = CustomerSqlConn.dtable("SELECT SUM(TradeAmount) TradeAmount FROM HelpProfitMerTradeSummay WHERE MerchantId IN(SELECT MerchantId FROM HelpProfitMerIds WHERE UserId=" + UserId + ") AND TradeDate='" + DateTime.Now.ToString("yyyyMMdd") + "'", conn);
|
|
|
+ if(dt.Rows.Count > 0)
|
|
|
+ {
|
|
|
+ HelpAmount = decimal.Parse(function.CheckNum(dt.Rows[0]["TradeAmount"].ToString()));
|
|
|
+ }
|
|
|
+ //当天总交易额不超过当月最大交易总额平均值,则入账
|
|
|
+ if(HelpAmount < EveryDayTradeAmount)
|
|
|
+ {
|
|
|
+ return true;
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
return false;
|
|
|
@@ -332,6 +382,40 @@ namespace MySystem
|
|
|
return obj;
|
|
|
}
|
|
|
|
|
|
+ private Dictionary<int, decimal> TmpEveryDayPercent()
|
|
|
+ {
|
|
|
+ Dictionary<int, decimal> obj = new Dictionary<int, decimal>();
|
|
|
+ obj.Add(1, 0.90M);
|
|
|
+ obj.Add(2, 0.85M);
|
|
|
+ obj.Add(3, 0.83M);
|
|
|
+ obj.Add(4, 0.79M);
|
|
|
+ obj.Add(5, 0.82M);
|
|
|
+ obj.Add(6, 0.75M);
|
|
|
+ obj.Add(7, 0.73M);
|
|
|
+ obj.Add(8, 0.7M);
|
|
|
+ obj.Add(9, 0.68M);
|
|
|
+ obj.Add(10, 0.69M);
|
|
|
+ obj.Add(11, 0.63M);
|
|
|
+ obj.Add(12, 0.66M);
|
|
|
+ obj.Add(13, 0.62M);
|
|
|
+ obj.Add(14, 0.65M);
|
|
|
+ obj.Add(15, 0.6M);
|
|
|
+ obj.Add(16, 0.58M);
|
|
|
+ obj.Add(17, 0.56M);
|
|
|
+ obj.Add(18, 0.53M);
|
|
|
+ obj.Add(19, 0.55M);
|
|
|
+ obj.Add(20, 0.51M);
|
|
|
+ obj.Add(21, 0.53M);
|
|
|
+ obj.Add(22, 0.52M);
|
|
|
+ obj.Add(23, 0.54M);
|
|
|
+ obj.Add(24, 0.52M);
|
|
|
+ obj.Add(25, 0.51M);
|
|
|
+ obj.Add(26, 0.53M);
|
|
|
+ obj.Add(27, 0.51M);
|
|
|
+ obj.Add(28, 0.5M);
|
|
|
+ return obj;
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
#region 每月重置最大交易总额
|
|
|
public void ResetMaxTradeAmount()
|
|
|
@@ -361,67 +445,29 @@ namespace MySystem
|
|
|
{
|
|
|
function.WritePage("/HelpProfitAmountSummary/", TradeMonth + ".txt", DateTime.Now.ToString());
|
|
|
WebCMSEntities db = new WebCMSEntities();
|
|
|
- OtherMySqlConn.connstr = Library.ConfigurationManager.AppSettings["SqlConnStr"].ToString();
|
|
|
- DataTable userlist = OtherMySqlConn.dtable("select DISTINCT UserId from HelpProfitAmountSummary order by UserId");
|
|
|
+ string connstr = Library.ConfigurationManager.AppSettings["SqlConnStr"].ToString();
|
|
|
+ DataTable userlist = CustomerSqlConn.dtable("select DISTINCT UserId from HelpProfitAmountSummary order by UserId", connstr);
|
|
|
// DataTable userlist = OtherMySqlConn.dtable("select DISTINCT UserId from HelpProfitAmountSummary where (TradeMonth='202209' or TradeMonth='202210') and UserId not in (select UserId from HelpProfitAmountSummary where TradeMonth='202211')");
|
|
|
foreach (DataRow user in userlist.Rows)
|
|
|
{
|
|
|
int UserId = int.Parse(user["UserId"].ToString());
|
|
|
int MonthCount = db.HelpProfitAmountSummary.Count(m => m.UserId == UserId) + 1;
|
|
|
int Month = MonthCount;
|
|
|
- if(Month > 24)
|
|
|
- {
|
|
|
- Month = 24;
|
|
|
- }
|
|
|
- decimal MonthAmount1 = 0; //本月额度
|
|
|
- decimal MonthAmount2 = 0; //上月额度
|
|
|
- decimal MonthAmount3 = 0; //上上月额度
|
|
|
- if(Month > 0)
|
|
|
- {
|
|
|
- MonthAmount1 = EveryMonthFixedVal()[Month]; //上月额度
|
|
|
- }
|
|
|
- if(Month > 1)
|
|
|
- {
|
|
|
- MonthAmount2 = EveryMonthFixedVal()[Month - 1]; //上月额度
|
|
|
- }
|
|
|
- if(Month > 2)
|
|
|
- {
|
|
|
- MonthAmount3 = EveryMonthFixedVal()[Month - 2]; //上上月额度
|
|
|
- }
|
|
|
- List<int> MerCounts = new List<int>(); //近3月月台数,包含当月
|
|
|
- List<decimal> MaxTradeAmounts = new List<decimal>(); //近3月最大额度,包含当月
|
|
|
- int MerCount1 = 0; //本月台数
|
|
|
- int MerCount2 = 0; //上月台数
|
|
|
- int MerCount3 = 0; //上上月台数
|
|
|
- decimal PreMaxTradeAmount = 0; //上月最大额度
|
|
|
- decimal PreTradeAmount = 0; //上月创客交易额
|
|
|
- List<HelpProfitAmountSummary> Summarys = db.HelpProfitAmountSummary.Where(m => m.UserId == UserId && Convert.ToInt32(m.TradeMonth) <= Convert.ToInt32(TradeMonth)).OrderByDescending(m => m.TradeMonth).Take(3).ToList();
|
|
|
+ List<int> MerCounts = new List<int>(); //每月台数,包含当月
|
|
|
+ List<decimal> MaxTradeAmounts = new List<decimal>(); //每月最大固定额度
|
|
|
+ List<HelpProfitAmountSummary> Summarys = db.HelpProfitAmountSummary.Where(m => m.UserId == UserId && Convert.ToInt32(m.TradeMonth) <= Convert.ToInt32(TradeMonth)).OrderByDescending(m => m.TradeMonth).Take(24).ToList();
|
|
|
+ int MonthNum = 0;
|
|
|
foreach(HelpProfitAmountSummary Summary in Summarys)
|
|
|
{
|
|
|
+ MonthNum += 1;
|
|
|
MerCounts.Add(Summary.MerCount);
|
|
|
- MaxTradeAmounts.Add(Summary.MaxAmount);
|
|
|
- }
|
|
|
- if(MerCounts.Count > 0)
|
|
|
- {
|
|
|
- MerCount1 = MerCounts[0];
|
|
|
- }
|
|
|
- if(MerCounts.Count > 1)
|
|
|
- {
|
|
|
- MerCount2 = MerCounts[1];
|
|
|
- PreMaxTradeAmount = MaxTradeAmounts[1];
|
|
|
- string PreMonthString = DateTime.Parse(TradeMonth.Substring(0, 4) + "-" + TradeMonth.Substring(4, 2) + "-01").AddMonths(-1).ToString("yyyyMM");
|
|
|
- DataTable dt = OtherMySqlConn.dtable("SELECT SUM(TradeAmount) TradeAmount FROM HelpProfitMerTradeSummay WHERE MerchantId IN(SELECT MerchantId FROM HelpProfitMerIds WHERE UserId=" + UserId + ") AND TradeMonth=" + PreMonthString + "");
|
|
|
- if (dt.Rows.Count > 0)
|
|
|
- {
|
|
|
- PreTradeAmount = decimal.Parse(function.CheckNum(dt.Rows[0]["TradeAmount"].ToString()));
|
|
|
- }
|
|
|
+ MaxTradeAmounts.Add(EveryMonthFixedVal()[MonthNum]);
|
|
|
}
|
|
|
- if(MerCounts.Count > 2)
|
|
|
+ decimal MaxTradeAmount = 0;
|
|
|
+ for (int i = 0; i < MerCounts.Count; i++)
|
|
|
{
|
|
|
- MerCount3 = MerCounts[2];
|
|
|
+ MaxTradeAmount += MerCounts[i] * MaxTradeAmounts[i];
|
|
|
}
|
|
|
- decimal MaxTradeAmount = MerCount1 * MonthAmount1 + MerCount2 * MonthAmount2 + MerCount3 * MonthAmount3; //当月最大交易总额
|
|
|
- MaxTradeAmount = PreMaxTradeAmount - PreTradeAmount + MaxTradeAmount; //上月最大额度-实际交易额+本月最大交易额
|
|
|
HelpProfitAmountSummary selfStat = db.HelpProfitAmountSummary.FirstOrDefault(m => m.UserId == UserId && m.TradeMonth == TradeMonth);
|
|
|
if(selfStat == null)
|
|
|
{
|
|
|
@@ -434,6 +480,7 @@ namespace MySystem
|
|
|
db.SaveChanges();
|
|
|
}
|
|
|
selfStat.MaxAmount = MaxTradeAmount;
|
|
|
+ // function.WriteLog("update HelpProfitAmountSummary set MaxAmount=" + MaxTradeAmount + " where UserId=" + UserId + " and TradeMonth='" + TradeMonth + "';", "重置助利宝最大交易额");
|
|
|
}
|
|
|
db.SaveChanges();
|
|
|
db.Dispose();
|