mirror of
http://git.coreshop.cn/jianweie/coreshoppro.git
synced 2025-12-06 18:23:25 +08:00
【优化】优化分销商升级策略。
This commit is contained in:
@@ -24,7 +24,9 @@ using CoreCms.Net.Model.ViewModels.DTO.Distribution;
|
||||
using CoreCms.Net.Model.ViewModels.UI;
|
||||
using CoreCms.Net.Utility.Extensions;
|
||||
using CoreCms.Net.Utility.Helper;
|
||||
using Newtonsoft.Json;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using NPOI.SS.Formula.Functions;
|
||||
using SqlSugar;
|
||||
|
||||
|
||||
@@ -461,10 +463,10 @@ namespace CoreCms.Net.Services
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region 检查当前用户是否可以升级(暂存,有问题)
|
||||
#region 检查当前用户是否可以升级
|
||||
|
||||
/// <summary>
|
||||
/// 检查当前用户是否可以升级(暂存,有问题)
|
||||
/// 检查当前用户是否可以升级
|
||||
/// </summary>
|
||||
/// <param name="userId"></param>
|
||||
/// <returns></returns>
|
||||
@@ -475,23 +477,111 @@ namespace CoreCms.Net.Services
|
||||
var info = await _dal.QueryByClauseAsync(p => p.userId == userId);
|
||||
if (info is { gradeId: > 0 })
|
||||
{
|
||||
//找下有没有可以升级的分销商等级
|
||||
var grade = await _distributionGradeRepository.QueryByClauseAsync(p => p.id > info.gradeId && p.isAutoUpGrade == true);
|
||||
if (grade != null)
|
||||
//找下有没有可以升级的分销商等级(一次只升一级)
|
||||
var grade = await _distributionGradeRepository.QueryByClauseAsync(p => p.sortId > info.gradeId && p.isAutoUpGrade == true, p => p.sortId, OrderByType.Asc, true);
|
||||
if (grade == null) return jm;
|
||||
{
|
||||
var conditionList = await _coreCmsDistributionConditionServices.QueryListByClauseAsync(p => p.gradeId == grade.id);
|
||||
//循环所有条件,判断是否可以升级
|
||||
var condition = true;//默认满足升级
|
||||
var conditionList = await _coreCmsDistributionConditionServices.QueryListByClauseAsync(p => p.gradeId == grade.id);
|
||||
if (!conditionList.Any())
|
||||
{
|
||||
jm.msg = "未设置条件,无法升级";
|
||||
return jm;
|
||||
}
|
||||
//循环所有条件,判断是否可以升级
|
||||
foreach (var item in conditionList)
|
||||
{
|
||||
var method = "condition_" + item.code;
|
||||
//暂存,有问题
|
||||
}
|
||||
var parameters = (JObject)JsonConvert.DeserializeObject(item.parameters);
|
||||
if (parameters == null)
|
||||
{
|
||||
condition = false;
|
||||
break;
|
||||
}
|
||||
|
||||
//只要购买了商品并且订单完结。
|
||||
if (string.Equals(item.code, GlobalEnumVars.DistributionConditionsCode.GOODS_ALL.ToString(), StringComparison.CurrentCultureIgnoreCase))
|
||||
{
|
||||
if (!parameters.ContainsKey("num"))
|
||||
{
|
||||
condition = false;
|
||||
break;
|
||||
}
|
||||
var num = parameters["num"].ObjectToInt(0);
|
||||
var getCount = await _orderRepository.GetCountAsync(p =>
|
||||
p.userId == userId && p.status == (int)GlobalEnumVars.OrderAllStatusType.ALL_COMPLETED);
|
||||
condition = getCount > num;
|
||||
if (condition == false)
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
//购买了指定的商品
|
||||
if (string.Equals(item.code, GlobalEnumVars.DistributionConditionsCode.GOODS_IDS.ToString(), StringComparison.CurrentCultureIgnoreCase))
|
||||
{
|
||||
//goodsId
|
||||
if (!parameters.ContainsKey("goodsId"))
|
||||
{
|
||||
condition = false;
|
||||
break;
|
||||
}
|
||||
var goodsId = parameters["goodsId"].ObjectToInt(0);
|
||||
var getCount = _orderRepository.GetOrderNum(userId, goodsId, (int)GlobalEnumVars.OrderAllStatusType.ALL_COMPLETED);
|
||||
condition = getCount > 0;
|
||||
if (condition == false)
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
//个人消费总额(已完成的订单)
|
||||
if (string.Equals(item.code, GlobalEnumVars.DistributionConditionsCode.USER_ORDERS.ToString(), StringComparison.CurrentCultureIgnoreCase))
|
||||
{
|
||||
if (!parameters.ContainsKey("money") || !parameters.ContainsKey("limit_day"))
|
||||
{
|
||||
condition = false;
|
||||
break;
|
||||
}
|
||||
var money = parameters["money"].ObjectToInt(0);
|
||||
var limitDay = parameters["limit_day"].ObjectToInt(0);
|
||||
|
||||
var startTime = DateTime.Now.AddDays(-limitDay);
|
||||
var endTime = DateTime.Now;
|
||||
|
||||
var getAmount = await _orderRepository.GetSumAsync(p => p.userId == userId && p.status == (int)GlobalEnumVars.OrderAllStatusType.ALL_COMPLETED && p.paymentTime > startTime && p.paymentTime < endTime, p => p.orderAmount);
|
||||
|
||||
condition = getAmount > money;
|
||||
|
||||
if (condition == false)
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
//个人订单数量(已完成的订单)
|
||||
if (string.Equals(item.code, GlobalEnumVars.DistributionConditionsCode.USER_ORDERSNUM.ToString(), StringComparison.CurrentCultureIgnoreCase))
|
||||
{
|
||||
|
||||
if (!parameters.ContainsKey("num") || !parameters.ContainsKey("limit_day"))
|
||||
{
|
||||
condition = false;
|
||||
break;
|
||||
}
|
||||
var num = parameters["num"].ObjectToInt(0);
|
||||
var limitDay = parameters["limit_day"].ObjectToInt(0);
|
||||
|
||||
var startTime = DateTime.Now.AddDays(-limitDay);
|
||||
var endTime = DateTime.Now;
|
||||
|
||||
var getCount = await _orderRepository.GetCountAsync(p => p.userId == userId && p.status == (int)GlobalEnumVars.OrderAllStatusType.ALL_COMPLETED && p.paymentTime > startTime && p.paymentTime < endTime);
|
||||
|
||||
condition = getCount > num;
|
||||
if (condition == false)
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (condition)
|
||||
{
|
||||
await _dal.UpdateAsync(p => new CoreCmsDistribution() { gradeId = grade.id },
|
||||
p => p.userId == userId);
|
||||
await _dal.UpdateAsync(p => new CoreCmsDistribution() { gradeId = grade.id }, p => p.userId == userId);
|
||||
jm.msg = "升级成功";
|
||||
}
|
||||
else
|
||||
|
||||
Reference in New Issue
Block a user