diff --git a/CoreCms.Net.Configuration/GlobalEnumVars.cs b/CoreCms.Net.Configuration/GlobalEnumVars.cs
index 26d3a510..99e656ea 100644
--- a/CoreCms.Net.Configuration/GlobalEnumVars.cs
+++ b/CoreCms.Net.Configuration/GlobalEnumVars.cs
@@ -1751,15 +1751,15 @@ namespace CoreCms.Net.Configuration
///
public enum WeiChatPayTradeType
{
- [Description("JSAPI(小程序支付)")]
+ [Description("小程序支付")]
JSAPI = 1,
- [Description("JSAPI_OFFICIAL(公众号支付)")]
+ [Description("公众号支付")]
JSAPI_OFFICIAL = 2,
- [Description("NATIVE(扫码支付)")]
+ [Description("扫码支付")]
NATIVE = 3,
- [Description("APP(APP支付)")]
+ [Description("APP支付")]
APP = 4,
- [Description("MWEB(H5支付)")]
+ [Description("H5支付")]
MWEB = 5
}
@@ -2386,30 +2386,33 @@ namespace CoreCms.Net.Configuration
///
public enum DistributionConditionsCode
{
-
- ///
- /// 个人消费总额
- ///
- [Description("个人消费总额(已完成的订单)")]
- USER_ORDERS = 3,
- ///
- /// 个人订单数量
- ///
- [Description("个人订单数量(已完成的订单)")]
- USER_ORDERSNUM = 4,
///
/// 所有商品满足条件
///
[Description("所有商品满足条件")]
GOODS_ALL = 1,
+
///
/// 购买指定商品
///
[Description("购买指定商品")]
GOODS_IDS = 2,
+ ///
+ /// 个人消费总额
+ ///
+ [Description("个人消费总额(已完成的订单)")]
+ USER_ORDERS = 3,
+
+ ///
+ /// 个人订单数量
+ ///
+ [Description("个人订单数量(已完成的订单)")]
+ USER_ORDERSNUM = 4,
+
//[Description("团队消费总额")]
//GROUP_ORDERS = 5,
+
//[Description("直推几个指定用户等级")]
//USER_GRADE = 6,
}
@@ -3375,31 +3378,31 @@ namespace CoreCms.Net.Configuration
///
/// JSAPI(支付宝小程序支付)
///
- [Description("JSAPI(支付宝小程序支付)")]
+ [Description("支付宝小程序支付")]
JSAPI = 1,
///
/// JSAPI_PC(电脑网站支付)
///
- [Description("JSAPI_PC(电脑网站支付)")]
+ [Description("电脑网站支付")]
JSAPI_PC = 2,
///
/// NATIVE(扫码支付)
///
- [Description("NATIVE(扫码支付)")]
+ [Description("扫码支付")]
ScanQRCodes = 3,
///
/// APP(APP支付)
///
- [Description("APP(APP支付)")]
+ [Description("APP支付")]
APP = 4,
///
/// MWEB(H5支付)
///
- [Description("MWEB(H5支付)")]
+ [Description("H5支付")]
MWEB = 5
}
diff --git a/CoreCms.Net.IRepository/Order/ICoreCmsOrderRepository.cs b/CoreCms.Net.IRepository/Order/ICoreCmsOrderRepository.cs
index 09068521..2be2d8f1 100644
--- a/CoreCms.Net.IRepository/Order/ICoreCmsOrderRepository.cs
+++ b/CoreCms.Net.IRepository/Order/ICoreCmsOrderRepository.cs
@@ -58,6 +58,15 @@ namespace CoreCms.Net.IRepository
int GetOrderNum(int userId, int goodId);
+ ///
+ /// 根据用户id和商品id获取下了多少订单
+ ///
+ ///
+ ///
+ /// 状态
+ ///
+ int GetOrderNum(int userId, int goodId, int orderStatus);
+
///
/// 重写根据条件列表数据
///
diff --git a/CoreCms.Net.IServices/Distribution/ICoreCmsDistributionServices.cs b/CoreCms.Net.IServices/Distribution/ICoreCmsDistributionServices.cs
index 081ed6c3..b29a532c 100644
--- a/CoreCms.Net.IServices/Distribution/ICoreCmsDistributionServices.cs
+++ b/CoreCms.Net.IServices/Distribution/ICoreCmsDistributionServices.cs
@@ -75,7 +75,7 @@ namespace CoreCms.Net.IServices
///
- /// 检查当前用户是否可以升级(暂存,有问题)
+ /// 检查当前用户是否可以升级
///
///
///
diff --git a/CoreCms.Net.Repository/Order/CoreCmsOrderRepository.cs b/CoreCms.Net.Repository/Order/CoreCmsOrderRepository.cs
index 6937776a..904dfaf8 100644
--- a/CoreCms.Net.Repository/Order/CoreCmsOrderRepository.cs
+++ b/CoreCms.Net.Repository/Order/CoreCmsOrderRepository.cs
@@ -167,6 +167,27 @@ namespace CoreCms.Net.Repository
}
#endregion
+
+ #region 根据用户id和商品id获取下了多少订单
+
+ ///
+ /// 根据用户id和商品id获取下了多少订单
+ ///
+ ///
+ ///
+ /// 状态
+ ///
+ public int GetOrderNum(int userId, int goodId,int orderStatus)
+ {
+ var num = DbClient.Queryable((op, ot) => new object[]
+ {
+ JoinType.Inner, op.orderId == ot.orderId
+ }).Where((op, ot) => op.userId == userId && ot.goodsId == goodId && op.status == orderStatus).Count();
+ return num;
+ }
+ #endregion
+
+
#region 重写根据条件列表数据
///
/// 重写根据条件列表数据
diff --git a/CoreCms.Net.Services/Distribution/CoreCmsDistributionServices.cs b/CoreCms.Net.Services/Distribution/CoreCmsDistributionServices.cs
index ba12c0a3..c7fea1c1 100644
--- a/CoreCms.Net.Services/Distribution/CoreCmsDistributionServices.cs
+++ b/CoreCms.Net.Services/Distribution/CoreCmsDistributionServices.cs
@@ -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 检查当前用户是否可以升级
///
- /// 检查当前用户是否可以升级(暂存,有问题)
+ /// 检查当前用户是否可以升级
///
///
///
@@ -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
diff --git a/CoreCms.Net.Web.Admin/Controllers/Distribution/CoreCmsDistributionGradeController.cs b/CoreCms.Net.Web.Admin/Controllers/Distribution/CoreCmsDistributionGradeController.cs
index 625ffe57..f234a5ba 100644
--- a/CoreCms.Net.Web.Admin/Controllers/Distribution/CoreCmsDistributionGradeController.cs
+++ b/CoreCms.Net.Web.Admin/Controllers/Distribution/CoreCmsDistributionGradeController.cs
@@ -376,7 +376,7 @@ namespace CoreCms.Net.Web.Admin.Controllers
var list = await _coreCmsDistributionConditionServices.QueryPageAsync(where, p => p.id, OrderByType.Asc, pageCurrent, pageSize);
if (list.Any())
{
- var distributionConditions = EnumHelper.EnumToList();
+ var distributionConditions = EnumHelper.EnumToList();
foreach (var condition in list)
{
var cd = distributionConditions.Find(p => p.title == condition.code);