|
@@ -132,7 +132,7 @@ namespace MySystem
|
|
}
|
|
}
|
|
else if (pro.ProductId == 28)
|
|
else if (pro.ProductId == 28)
|
|
{
|
|
{
|
|
- Users user = db.Users.FirstOrDefault(m => m.Id == order.UserId);
|
|
|
|
|
|
+ Users user = db.Users.FirstOrDefault(m => m.Id == order.UserId && m.LeaderLevel == 0);
|
|
if(user != null)
|
|
if(user != null)
|
|
{
|
|
{
|
|
user.LeaderLevel = 1;
|
|
user.LeaderLevel = 1;
|
|
@@ -140,7 +140,7 @@ namespace MySystem
|
|
}
|
|
}
|
|
else if (pro.ProductId == 27)
|
|
else if (pro.ProductId == 27)
|
|
{
|
|
{
|
|
- Users user = db.Users.FirstOrDefault(m => m.Id == order.UserId);
|
|
|
|
|
|
+ Users user = db.Users.FirstOrDefault(m => m.Id == order.UserId && m.LeaderLevel < 2);
|
|
if(user != null)
|
|
if(user != null)
|
|
{
|
|
{
|
|
user.LeaderLevel = 2;
|
|
user.LeaderLevel = 2;
|
|
@@ -152,15 +152,15 @@ namespace MySystem
|
|
int CouponCount = 0;
|
|
int CouponCount = 0;
|
|
if(Kind == 1)
|
|
if(Kind == 1)
|
|
{
|
|
{
|
|
- CouponCount = 3;
|
|
|
|
|
|
+ CouponCount = 3 * pro.ProductCount;
|
|
}
|
|
}
|
|
else if(Kind == 2)
|
|
else if(Kind == 2)
|
|
{
|
|
{
|
|
- CouponCount = 2;
|
|
|
|
|
|
+ CouponCount = 2 * pro.ProductCount;
|
|
}
|
|
}
|
|
string Codes = "";
|
|
string Codes = "";
|
|
var coupons = db.PosCoupons.Where(m => m.IsLock == 0 && m.IsUse == 0 && m.UserId == 0 && m.QueryCount == Kind).OrderBy(m => m.Id).Take(CouponCount).ToList();
|
|
var coupons = db.PosCoupons.Where(m => m.IsLock == 0 && m.IsUse == 0 && m.UserId == 0 && m.QueryCount == Kind).OrderBy(m => m.Id).Take(CouponCount).ToList();
|
|
- foreach (var coupon in coupons)
|
|
|
|
|
|
+ foreach (var coupon in coupons) // TODO: 数量多的话,会慢
|
|
{
|
|
{
|
|
PosCoupons item = db.PosCoupons.FirstOrDefault(m => m.Id == coupon.Id);
|
|
PosCoupons item = db.PosCoupons.FirstOrDefault(m => m.Id == coupon.Id);
|
|
if (item != null)
|
|
if (item != null)
|
|
@@ -193,6 +193,10 @@ namespace MySystem
|
|
Users user = db.Users.FirstOrDefault(m => m.Id == order.UserId);
|
|
Users user = db.Users.FirstOrDefault(m => m.Id == order.UserId);
|
|
if (user != null)
|
|
if (user != null)
|
|
{
|
|
{
|
|
|
|
+ bool directPrize = false; //直推奖标记
|
|
|
|
+ bool bigLeaderPrize = false; //大盟主券标记
|
|
|
|
+ bool buyPrize = false; //返100购机奖励标记
|
|
|
|
+ int leaderFlag = 0; //返600备用金标记
|
|
if(user.LeaderLevel > 0)
|
|
if(user.LeaderLevel > 0)
|
|
{
|
|
{
|
|
UserAccount acccount = db.UserAccount.FirstOrDefault(m => m.Id == order.UserId) ?? new UserAccount();
|
|
UserAccount acccount = db.UserAccount.FirstOrDefault(m => m.Id == order.UserId) ?? new UserAccount();
|
|
@@ -201,15 +205,15 @@ namespace MySystem
|
|
if(order.PayMode == 4)
|
|
if(order.PayMode == 4)
|
|
{
|
|
{
|
|
//扣减备用金
|
|
//扣减备用金
|
|
- OpReserve(db, order, order.UserId, order.TotalPrice, 0, 0, "商城购机");
|
|
|
|
|
|
+ OpReserve(db, order, order.UserId, order.TotalPrice, 2, 0, "商城购机");
|
|
//返回到余额
|
|
//返回到余额
|
|
- OpAccount(db, order, order.UserId, order.TotalPrice);
|
|
|
|
|
|
+ // OpAccount(db, order, order.UserId, order.TotalPrice / pro.ProductCount, pro.ProductCount);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
//获得100元奖励
|
|
//获得100元奖励
|
|
- OpAccount(db, order, order.UserId, 100);
|
|
|
|
|
|
+ OpAccount(db, order, order.UserId, 100, pro.ProductCount);
|
|
//推荐奖励
|
|
//推荐奖励
|
|
- DirectPrize(db, order.Id, order.UserId);
|
|
|
|
|
|
+ DirectPrize(db, order.Id, order.UserId, pro.ProductCount);
|
|
//推荐下单上级获得30天的机具循环天数
|
|
//推荐下单上级获得30天的机具循环天数
|
|
var posList = db.PosMachinesTwo.Select(m => new { m.Id, m.UserId, m.BindingState, m.RecycEndDate }).Where(m => m.UserId == order.UserId && m.BindingState == 0 && m.RecycEndDate != null).ToList();
|
|
var posList = db.PosMachinesTwo.Select(m => new { m.Id, m.UserId, m.BindingState, m.RecycEndDate }).Where(m => m.UserId == order.UserId && m.BindingState == 0 && m.RecycEndDate != null).ToList();
|
|
foreach (var subPos in posList)
|
|
foreach (var subPos in posList)
|
|
@@ -221,11 +225,47 @@ namespace MySystem
|
|
}
|
|
}
|
|
}
|
|
}
|
|
db.SaveChanges();
|
|
db.SaveChanges();
|
|
|
|
+ if(user.LeaderLevel == 2)
|
|
|
|
+ {
|
|
|
|
+ if(couponIds.Count > 0)
|
|
|
|
+ {
|
|
|
|
+ foreach(int couponId in couponIds)
|
|
|
|
+ {
|
|
|
|
+ PosCoupons coupon = db.PosCoupons.FirstOrDefault(m => m.Id == couponId);
|
|
|
|
+ if(coupon != null)
|
|
|
|
+ {
|
|
|
|
+ coupon.LeaderUserId = user.Id;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ db.SaveChanges();
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ else
|
|
|
|
+ {
|
|
|
|
+ int PUserId = user.ParentUserId;
|
|
|
|
+ while(PUserId > 0)
|
|
|
|
+ {
|
|
|
|
+ Users puser = db.Users.FirstOrDefault(m => m.Id == PUserId) ?? new Users();
|
|
|
|
+ if(puser.LeaderLevel == 2)
|
|
|
|
+ {
|
|
|
|
+ UserAccount acc = db.UserAccount.FirstOrDefault(m => m.Id == puser.Id) ?? new UserAccount();
|
|
|
|
+ if(acc.LeaderReserve >= order.TotalPrice)
|
|
|
|
+ {
|
|
|
|
+ //扣减备用金
|
|
|
|
+ OpReserve(db, order, puser.Id, order.TotalPrice, 2, order.UserId, "购机奖励");
|
|
|
|
+ //返回到余额
|
|
|
|
+ OpAccount(db, order, puser.Id, order.TotalPrice / pro.ProductCount, pro.ProductCount);
|
|
|
|
+ }
|
|
|
|
+ PUserId = 0;
|
|
|
|
+ }
|
|
|
|
+ else
|
|
|
|
+ {
|
|
|
|
+ PUserId = puser.ParentUserId;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
- bool directPrize = false; //直推奖标记
|
|
|
|
- bool bigLeaderPrize = false; //大盟主券标记
|
|
|
|
- bool buyPrize = false; //返600盟主备用标记
|
|
|
|
int ParentUserId = user.ParentUserId;
|
|
int ParentUserId = user.ParentUserId;
|
|
while(ParentUserId > 0)
|
|
while(ParentUserId > 0)
|
|
{
|
|
{
|
|
@@ -236,10 +276,10 @@ namespace MySystem
|
|
function.WriteLog("MakerCode:" + user.MakerCode, "推荐下单奖励监控日志");
|
|
function.WriteLog("MakerCode:" + user.MakerCode, "推荐下单奖励监控日志");
|
|
function.WriteLog("machineCount:" + machineCount, "推荐下单奖励监控日志");
|
|
function.WriteLog("machineCount:" + machineCount, "推荐下单奖励监控日志");
|
|
function.WriteLog("ActiveCount:" + ActiveCount, "推荐下单奖励监控日志");
|
|
function.WriteLog("ActiveCount:" + ActiveCount, "推荐下单奖励监控日志");
|
|
- if (machineCount + ActiveCount + couponCount >= 3 && !directPrize)
|
|
|
|
|
|
+ if ((machineCount + ActiveCount + couponCount >= 3 || puser.LeaderLevel > 0) && !directPrize)
|
|
{
|
|
{
|
|
function.WriteLog("满足条件", "推荐下单奖励监控日志");
|
|
function.WriteLog("满足条件", "推荐下单奖励监控日志");
|
|
- DirectPrize(db, order.Id, ParentUserId);
|
|
|
|
|
|
+ DirectPrize(db, order.Id, ParentUserId, pro.ProductCount);
|
|
|
|
|
|
//推荐下单上级获得30天的机具循环天数
|
|
//推荐下单上级获得30天的机具循环天数
|
|
var posList = db.PosMachinesTwo.Select(m => new { m.Id, m.UserId, m.BindingState, m.RecycEndDate }).Where(m => m.UserId == ParentUserId && m.BindingState == 0 && m.RecycEndDate != null).ToList();
|
|
var posList = db.PosMachinesTwo.Select(m => new { m.Id, m.UserId, m.BindingState, m.RecycEndDate }).Where(m => m.UserId == ParentUserId && m.BindingState == 0 && m.RecycEndDate != null).ToList();
|
|
@@ -259,16 +299,20 @@ namespace MySystem
|
|
UserAccount acccount = db.UserAccount.FirstOrDefault(m => m.Id == puser.Id) ?? new UserAccount();
|
|
UserAccount acccount = db.UserAccount.FirstOrDefault(m => m.Id == puser.Id) ?? new UserAccount();
|
|
if(acccount.LeaderReserve >= order.TotalPrice && !buyPrize)
|
|
if(acccount.LeaderReserve >= order.TotalPrice && !buyPrize)
|
|
{
|
|
{
|
|
- //扣减备用金
|
|
|
|
- OpReserve(db, order, puser.Id, order.TotalPrice, 0, order.UserId, "购机奖励");
|
|
|
|
- //返回到余额
|
|
|
|
- OpAccount(db, order, puser.Id, order.TotalPrice);
|
|
|
|
//购机奖励
|
|
//购机奖励
|
|
- OpAccount(db, order, puser.Id, 100);
|
|
|
|
|
|
+ OpAccount(db, order, puser.Id, 100, pro.ProductCount);
|
|
buyPrize = true;
|
|
buyPrize = true;
|
|
}
|
|
}
|
|
|
|
+ if(acccount.LeaderReserve >= order.TotalPrice && puser.LeaderLevel > leaderFlag)
|
|
|
|
+ {
|
|
|
|
+ //扣减备用金
|
|
|
|
+ OpReserve(db, order, puser.Id, order.TotalPrice, 2, order.UserId, "购机奖励");
|
|
|
|
+ //返回到余额
|
|
|
|
+ OpAccount(db, order, puser.Id, order.TotalPrice / pro.ProductCount, pro.ProductCount);
|
|
|
|
+ leaderFlag = puser.LeaderLevel;
|
|
|
|
+ }
|
|
//如果是大盟主,则标记大盟主标签
|
|
//如果是大盟主,则标记大盟主标签
|
|
- if(couponIds.Count > 0 && puser.LeaderLevel == 2 && !bigLeaderPrize)
|
|
|
|
|
|
+ if(couponIds.Count > 0 && puser.LeaderLevel == 2 && acccount.LeaderReserve >= order.TotalPrice && !bigLeaderPrize)
|
|
{
|
|
{
|
|
foreach(int couponId in couponIds)
|
|
foreach(int couponId in couponIds)
|
|
{
|
|
{
|
|
@@ -326,7 +370,14 @@ namespace MySystem
|
|
db.SaveChanges();
|
|
db.SaveChanges();
|
|
}
|
|
}
|
|
decimal BeforeAmount = account.LeaderReserve; //变更前总金额
|
|
decimal BeforeAmount = account.LeaderReserve; //变更前总金额
|
|
- account.LeaderReserve += Money;
|
|
|
|
|
|
+ if(ChangeType == 1)
|
|
|
|
+ {
|
|
|
|
+ account.LeaderReserve += Money;
|
|
|
|
+ }
|
|
|
|
+ else
|
|
|
|
+ {
|
|
|
|
+ account.LeaderReserve -= Money;
|
|
|
|
+ }
|
|
decimal AfterAmount = account.LeaderReserve; //变更后总金额
|
|
decimal AfterAmount = account.LeaderReserve; //变更后总金额
|
|
LeaderReserveRecord add = db.LeaderReserveRecord.Add(new LeaderReserveRecord()
|
|
LeaderReserveRecord add = db.LeaderReserveRecord.Add(new LeaderReserveRecord()
|
|
{
|
|
{
|
|
@@ -345,7 +396,7 @@ namespace MySystem
|
|
db.SaveChanges();
|
|
db.SaveChanges();
|
|
}
|
|
}
|
|
//操作余额
|
|
//操作余额
|
|
- public void OpAccount(WebCMSEntities db, Orders order, int UserId, decimal Money)
|
|
|
|
|
|
+ public void OpAccount(WebCMSEntities db, Orders order, int UserId, decimal Money, int Count = 1)
|
|
{
|
|
{
|
|
UserAccount account = db.UserAccount.FirstOrDefault(m => m.Id == UserId);
|
|
UserAccount account = db.UserAccount.FirstOrDefault(m => m.Id == UserId);
|
|
if (account == null)
|
|
if (account == null)
|
|
@@ -369,8 +420,8 @@ namespace MySystem
|
|
decimal BeforeTotalAmount = account.TotalAmount; //变更前总金额
|
|
decimal BeforeTotalAmount = account.TotalAmount; //变更前总金额
|
|
decimal BeforeFreezeAmount = account.FreezeAmount; //变更前冻结金额
|
|
decimal BeforeFreezeAmount = account.FreezeAmount; //变更前冻结金额
|
|
decimal BeforeBalanceAmount = account.BalanceAmount; //变更前余额
|
|
decimal BeforeBalanceAmount = account.BalanceAmount; //变更前余额
|
|
- account.BalanceAmount += Money;
|
|
|
|
- account.TotalAmount += Money;
|
|
|
|
|
|
+ account.BalanceAmount += Money * Count;
|
|
|
|
+ account.TotalAmount += Money * Count;
|
|
decimal AfterTotalAmount = account.TotalAmount; //变更后总金额
|
|
decimal AfterTotalAmount = account.TotalAmount; //变更后总金额
|
|
decimal AfterFreezeAmount = account.FreezeAmount; //变更后冻结金额
|
|
decimal AfterFreezeAmount = account.FreezeAmount; //变更后冻结金额
|
|
decimal AfterBalanceAmount = account.BalanceAmount; //变更后余额
|
|
decimal AfterBalanceAmount = account.BalanceAmount; //变更后余额
|
|
@@ -380,7 +431,7 @@ namespace MySystem
|
|
UpdateDate = DateTime.Now,
|
|
UpdateDate = DateTime.Now,
|
|
UserId = UserId, //创客
|
|
UserId = UserId, //创客
|
|
ChangeType = ChangeType, //变动类型
|
|
ChangeType = ChangeType, //变动类型
|
|
- ChangeAmount = Money, //变更金额
|
|
|
|
|
|
+ ChangeAmount = Money * Count, //变更金额
|
|
BeforeTotalAmount = BeforeTotalAmount, //变更前总金额
|
|
BeforeTotalAmount = BeforeTotalAmount, //变更前总金额
|
|
AfterTotalAmount = AfterTotalAmount, //变更后总金额
|
|
AfterTotalAmount = AfterTotalAmount, //变更后总金额
|
|
BeforeFreezeAmount = BeforeFreezeAmount, //变更前冻结金额
|
|
BeforeFreezeAmount = BeforeFreezeAmount, //变更前冻结金额
|
|
@@ -391,7 +442,7 @@ namespace MySystem
|
|
}).Entity;
|
|
}).Entity;
|
|
db.SaveChanges();
|
|
db.SaveChanges();
|
|
}
|
|
}
|
|
- public void DirectPrize(WebCMSEntities db, int OrderId, int UserId)
|
|
|
|
|
|
+ public void DirectPrize(WebCMSEntities db, int OrderId, int UserId, int Count = 1)
|
|
{
|
|
{
|
|
UserAccount account = db.UserAccount.FirstOrDefault(m => m.Id == UserId);
|
|
UserAccount account = db.UserAccount.FirstOrDefault(m => m.Id == UserId);
|
|
if (account == null)
|
|
if (account == null)
|
|
@@ -406,8 +457,8 @@ namespace MySystem
|
|
decimal BeforeTotalAmount = account.TotalAmount; //变更前总金额
|
|
decimal BeforeTotalAmount = account.TotalAmount; //变更前总金额
|
|
decimal BeforeFreezeAmount = account.FreezeAmount; //变更前冻结金额
|
|
decimal BeforeFreezeAmount = account.FreezeAmount; //变更前冻结金额
|
|
decimal BeforeBalanceAmount = account.BalanceAmount; //变更前余额
|
|
decimal BeforeBalanceAmount = account.BalanceAmount; //变更前余额
|
|
- account.BalanceAmount += 100;
|
|
|
|
- account.TotalAmount += 100;
|
|
|
|
|
|
+ account.BalanceAmount += 100 * Count;
|
|
|
|
+ account.TotalAmount += 100 * Count;
|
|
decimal AfterTotalAmount = account.TotalAmount; //变更后总金额
|
|
decimal AfterTotalAmount = account.TotalAmount; //变更后总金额
|
|
decimal AfterFreezeAmount = account.FreezeAmount; //变更后冻结金额
|
|
decimal AfterFreezeAmount = account.FreezeAmount; //变更后冻结金额
|
|
decimal AfterBalanceAmount = account.BalanceAmount; //变更后余额
|
|
decimal AfterBalanceAmount = account.BalanceAmount; //变更后余额
|
|
@@ -417,7 +468,7 @@ namespace MySystem
|
|
UpdateDate = DateTime.Now,
|
|
UpdateDate = DateTime.Now,
|
|
UserId = UserId, //创客
|
|
UserId = UserId, //创客
|
|
ChangeType = 112, //变动类型
|
|
ChangeType = 112, //变动类型
|
|
- ChangeAmount = 100, //变更金额
|
|
|
|
|
|
+ ChangeAmount = 100 * Count, //变更金额
|
|
BeforeTotalAmount = BeforeTotalAmount, //变更前总金额
|
|
BeforeTotalAmount = BeforeTotalAmount, //变更前总金额
|
|
AfterTotalAmount = AfterTotalAmount, //变更后总金额
|
|
AfterTotalAmount = AfterTotalAmount, //变更后总金额
|
|
BeforeFreezeAmount = BeforeFreezeAmount, //变更前冻结金额
|
|
BeforeFreezeAmount = BeforeFreezeAmount, //变更前冻结金额
|