This commit is contained in:
“wanyongkang”
2023-06-11 18:03:32 +08:00
parent 3dfe3faf33
commit 06e32328f7
14 changed files with 339 additions and 80 deletions

View File

@@ -118,6 +118,10 @@ FROM product_order where OrderState=20 or OrderState=90 or OrderState=40 or Orde
public List<OrderStatisticModel> Statistics(DateTime? bTime, DateTime? eTime, int ProductId)
{
string where = $" (OrderState=20 or OrderState=90 or OrderState=40 or OrderState=50 or OrderState=30) ";
// if (bTime.HasValue && eTime.HasValue)
// {
where += $"and UpdateTime>DATE_SUB(CURDATE(), INTERVAL 30 DAY) and UpdateTime<now()";
// }
if (bTime.HasValue && eTime.HasValue)
{
where += $"and UpdateTime>'{bTime.Value.ToString("yyyy-MM-dd")}' and UpdateTime<'{eTime.Value.ToString("yyyy-MM-dd")}'";
@@ -235,14 +239,14 @@ FROM product_order where {where} GROUP BY Channel,ProductName order by Channel,
{
return new ApiResult<ProductOrderEntity>(ResultCode.C_INVALID_ERROR, "产品不存在或者下架");
}
if (productEntity.Status == 0)
{
return new ApiResult<ProductOrderEntity>(ResultCode.C_INVALID_ERROR, "产品不存在或者下架");
}
if (productEntity.Status == 0)
{
return new ApiResult<ProductOrderEntity>(ResultCode.C_INVALID_ERROR, "服务不在线");
}
// if (productEntity.Status == 0)
// {
// return new ApiResult<ProductOrderEntity>(ResultCode.C_INVALID_ERROR, "产品不存在或者下架");
// }
// if (productEntity.Status == 0)
// {
// return new ApiResult<ProductOrderEntity>(ResultCode.C_INVALID_ERROR, "服务不在线");
// }
if (request.Account == request.Pwd)
{
@@ -310,7 +314,7 @@ FROM product_order where {where} GROUP BY Channel,ProductName order by Channel,
if (packageEntity.ProductId != 23 &&packageEntity.ProductId != 22 && ProductAccountCount == 0 && request.OrderType != OrderType.News && (packageEntity.DayCount == 1||packageEntity.DayCount == 2) && request.ConnectCount == 1 && request.OrderType!=OrderType.AgainBuy&& request.OrderType!=OrderType.AgainBuys){
price = 0.1M;
// price = 0.1M;
userEntity.ProductAccountCount = 1;
await m_UserService.Update(userEntity);
}
@@ -824,6 +828,236 @@ FROM product_order where {where} GROUP BY Channel,ProductName order by Channel,
}
/// <summary>
/// 处理成功的订单
/// </summary>
/// <param name="order"></param>
/// <returns></returns>
public async Task ApiProcessOrderAccount(ProductOrderEntity order,string remark)
{
if (order.OrderState != OrderStatus.PayOk || order.Accounts == null) return;
var isOk = true;
var accounts = order.Accounts.Split(',').ToList();
accounts = accounts.Distinct().ToList();
var userEntity = await m_UserService.GetById(order.UserId);
var user_remark = "";
if(order.ProductId == 8||order.ProductId == 7) {
//用户信息
user_remark = userEntity.Name.Substring(0,1) + "**" + userEntity.Phone.Substring(0,3) + "********" + userEntity.id_code.Substring(0,3)+"***************";
}
if (order.OrderType == OrderType.New || order.OrderType == OrderType.News)
{
var accountEntitys = new List<ProductAccountEntity>();
await accounts.ForEachAsync(async account =>
{
var accountEntity = new ProductAccountEntity()
{
Account = account,
AccountType = (int)order.OrderType,
ConnectCount = order.ConnectCount,
StartTime = DateTime.Now,
EndTime = DateTime.Now.AddDays(order.DayCount),
PackageId = order.PackageId,
PackageName = order.PackageName,
ProductId = order.ProductId,
ProductName = order.ProductName,
Pwd = order.AccountPwd,
ChargeStatus = AccountChargeStatus.Normal,
UserId = order.UserId,
UserCode = order.UserName,
agent_id = order.agent_id,
UserPhone = order.Remark,
Remark = remark
};
accountEntitys.Add(accountEntity);
});
using (var tran2 = await m_DbContext.Database.BeginTransactionAsync())
{
try
{
await m_ProductAccountService.Adds(accountEntitys);
order.OrderState = OrderStatus.Complete;
order.StartTime = DateTime.Now;
order.EndTime = DateTime.Now.AddDays(order.DayCount);
order.Remark = remark;
await this.Update(order);
tran2.Commit();
}
catch (Exception ex)
{
LogHelper.Error("处理订单创建账号", ex);
isOk = false;
tran2.Rollback();
}
}
if (isOk)
{
var accountError = "";
await accountEntitys.ForEachAsync(async accountEntity =>
{
var ret = new ApiResult();
if(accountEntity.PackageId.Value == 86 || accountEntity.PackageId.Value == 88){
ret = await m_AgentService.NewAccount(order.Id, accountEntity.PackageId.Value, accountEntity.Account, accountEntity.Pwd, accountEntity.ConnectCount,1,2);
} else if(accountEntity.ProductId.Value == 8 || accountEntity.ProductId.Value == 7){
var account_remark = accountEntity.Account + "-" + user_remark;
ret = await m_AgentService.NewAccount(order.Id, accountEntity.PackageId.Value, account_remark, accountEntity.Pwd, accountEntity.ConnectCount,1,2);
} else if (accountEntity.PackageId.Value > 1034 && accountEntity.PackageId.Value < 1040) {
ret = await m_AgentService.NewAccount(order.Id, accountEntity.PackageId.Value, accountEntity.Account, accountEntity.Pwd, accountEntity.ConnectCount,2);
}
else if (accountEntity.PackageId.Value > 1040 && accountEntity.PackageId.Value < 1046) {
ret = await m_AgentService.NewAccount(order.Id, accountEntity.PackageId.Value, accountEntity.Account, accountEntity.Pwd, accountEntity.ConnectCount,3);
}
else {
ret = await m_AgentService.NewAccount(order.Id, accountEntity.PackageId.Value, accountEntity.Account, accountEntity.Pwd, accountEntity.ConnectCount);
}
if (ret.Code != ResultCode.C_SUCCESS)
{
accountEntity.ChargeStatus = AccountChargeStatus.Exception;
accountEntity.Remark = ret.Message;
await m_ProductAccountService.Update(accountEntity);
}
else if (ret.Data != null && ret.Data.ToString().Has())
{
accountEntity.Raw = ret.Data.ToString();
await m_ProductAccountService.Update(accountEntity);
}
});
if (accountError.Has())
{
order.Remark = accountError;
await this.Update(order);
}
}
}
else if (order.OrderType == OrderType.AgainBuy || order.OrderType == OrderType.AgainBuys)
{
var accountEntitys = await m_ProductAccountService.Query(p => p.UserId == order.UserId && p.DeleteTag == 0 && p.ProductId == order.ProductId && accounts.Contains(p.Account)).ToListAsync();
accountEntitys = accountEntitys.Distinct(new AccountEntityEq()).ToList();
await accountEntitys.ForEachAsync(async account =>
{
if (account.EndTime < DateTime.Now)
{
account.StartTime = DateTime.Now;
account.EndTime = DateTime.Now.AddDays(order.DayCount);
}
else
{
account.EndTime = account.EndTime.Value.AddDays(order.DayCount);
}
account.PackageId = order.PackageId;
account.PackageName = order.PackageName;
account.ProductId = order.ProductId;
account.ProductName = order.ProductName;
account.AccountType = (int)order.OrderType;
});
using (var tran3 = await m_DbContext.Database.BeginTransactionAsync())
{
try
{
await m_ProductAccountService.Update(accountEntitys);
order.OrderState = OrderStatus.Complete;
order.StartTime = DateTime.Now;
order.EndTime = DateTime.Now.AddDays(order.DayCount);
order.Remark = remark;
await this.Update(order);
tran3.Commit();
}
catch (Exception ex)
{
LogHelper.Error("处理续费订单", ex);
isOk = false;
tran3.Rollback();
}
}
if (isOk)
{
var accountError = "";
var product = await m_ProductService.GetById(order.ProductId);
await accountEntitys.ForEachAsync(async accountEntity =>
{
var account = accountEntity.Account;
// if (product.GroupNO == "g7") account = accountEntity.Raw;
var ret = new ApiResult();
if (order.PackageId == 86){
ret = await m_AgentService.ReNewAccount(order.Id, order.PackageId, account, order.ConnectCount,2);
} else {
ret = await m_AgentService.ReNewAccount(order.Id, order.PackageId, account, order.ConnectCount);
}
if (ret.Code != ResultCode.C_SUCCESS)
{
accountEntity.ChargeStatus = AccountChargeStatus.Exception;
accountEntity.Remark = ret.Message;
await m_ProductAccountService.Update(accountEntity);
accountError += $"{accountEntity.Account}{accountEntity.Remark},";
}
});
if (accountError.Has())
{
order.Remark = accountError;
await this.Update(order);
}
}
}
if(order.agent_id != 0 && order.PaymentAmount != 0.1M){
var agentEntity = await m_AgentUserService.Query(m => m.id == order.agent_id).FirstOrDefaultAsync();
//根据折扣设置价格
var score_money = 0.00M;
// if((userEntity.agent_id == 0||(userEntity.agent_id != 0 && userEntity.discount_id != 0)) && userEntity.discount_id >= 0){
// //获取代理折扣
// var discount = await m_ProductPriceSchemeService.GetById(agentEntity.discount_id);
// var packageEntity = await m_ProductPackageService.GetById(order.PackageId);
// var price = packageEntity.LinePrice * discount.discount / 100;
// score_money = order.PaymentAmount - order.ConnectCount * order.AccountCount * price;
// } else {
// var agentPriceEntity = await m_AgentPriceService.Query(m => m.agent_id == order.agent_id && m.package_id == order.PackageId).FirstOrDefaultAsync();
// score_money = order.PaymentAmount - order.ConnectCount * order.AccountCount * agentPriceEntity.price;
// }
if(agentEntity.discount_id != 0){
//获取代理折扣
var discount = await m_ProductPriceSchemeService.GetById(agentEntity.discount_id);
var packageEntity = await m_ProductPackageService.GetById(order.PackageId);
var price = packageEntity.LinePrice * discount.discount / 100;
score_money = order.PaymentAmount - order.ConnectCount * order.AccountCount * price;
}
var agnetScoreEntity = new AgentScoreEntity()
{
agent_id = order.agent_id,
order_id = order.Id,
score_type = 1,
score_value = score_money,
remark = "客户购买产品" + order.Accounts,
agent_name = agentEntity.username,
op_user = order.UserName,
rest_amount1 = agentEntity.account,
rest_amount2 = agentEntity.account + score_money
};
agentEntity.account += score_money;
await m_AgentScoreService.Add(agnetScoreEntity);
await m_AgentUserService.Update(agentEntity);
}
}
public async Task<ApiResult> Refund(int userId, string account)
{