mirror of
http://git.coreshop.cn/jianweie/coreshoppro.git
synced 2025-12-06 17:53:25 +08:00
【优化】优化分销商升级策略。
This commit is contained in:
@@ -1751,15 +1751,15 @@ namespace CoreCms.Net.Configuration
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public enum WeiChatPayTradeType
|
public enum WeiChatPayTradeType
|
||||||
{
|
{
|
||||||
[Description("JSAPI(小程序支付)")]
|
[Description("小程序支付")]
|
||||||
JSAPI = 1,
|
JSAPI = 1,
|
||||||
[Description("JSAPI_OFFICIAL(公众号支付)")]
|
[Description("公众号支付")]
|
||||||
JSAPI_OFFICIAL = 2,
|
JSAPI_OFFICIAL = 2,
|
||||||
[Description("NATIVE(扫码支付)")]
|
[Description("扫码支付")]
|
||||||
NATIVE = 3,
|
NATIVE = 3,
|
||||||
[Description("APP(APP支付)")]
|
[Description("APP支付")]
|
||||||
APP = 4,
|
APP = 4,
|
||||||
[Description("MWEB(H5支付)")]
|
[Description("H5支付")]
|
||||||
MWEB = 5
|
MWEB = 5
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2386,30 +2386,33 @@ namespace CoreCms.Net.Configuration
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public enum DistributionConditionsCode
|
public enum DistributionConditionsCode
|
||||||
{
|
{
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 个人消费总额
|
|
||||||
/// </summary>
|
|
||||||
[Description("个人消费总额(已完成的订单)")]
|
|
||||||
USER_ORDERS = 3,
|
|
||||||
/// <summary>
|
|
||||||
/// 个人订单数量
|
|
||||||
/// </summary>
|
|
||||||
[Description("个人订单数量(已完成的订单)")]
|
|
||||||
USER_ORDERSNUM = 4,
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 所有商品满足条件
|
/// 所有商品满足条件
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Description("所有商品满足条件")]
|
[Description("所有商品满足条件")]
|
||||||
GOODS_ALL = 1,
|
GOODS_ALL = 1,
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 购买指定商品
|
/// 购买指定商品
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Description("购买指定商品")]
|
[Description("购买指定商品")]
|
||||||
GOODS_IDS = 2,
|
GOODS_IDS = 2,
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 个人消费总额
|
||||||
|
/// </summary>
|
||||||
|
[Description("个人消费总额(已完成的订单)")]
|
||||||
|
USER_ORDERS = 3,
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 个人订单数量
|
||||||
|
/// </summary>
|
||||||
|
[Description("个人订单数量(已完成的订单)")]
|
||||||
|
USER_ORDERSNUM = 4,
|
||||||
|
|
||||||
//[Description("团队消费总额")]
|
//[Description("团队消费总额")]
|
||||||
//GROUP_ORDERS = 5,
|
//GROUP_ORDERS = 5,
|
||||||
|
|
||||||
//[Description("直推几个指定用户等级")]
|
//[Description("直推几个指定用户等级")]
|
||||||
//USER_GRADE = 6,
|
//USER_GRADE = 6,
|
||||||
}
|
}
|
||||||
@@ -3375,31 +3378,31 @@ namespace CoreCms.Net.Configuration
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// JSAPI(支付宝小程序支付)
|
/// JSAPI(支付宝小程序支付)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Description("JSAPI(支付宝小程序支付)")]
|
[Description("支付宝小程序支付")]
|
||||||
JSAPI = 1,
|
JSAPI = 1,
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// JSAPI_PC(电脑网站支付)
|
/// JSAPI_PC(电脑网站支付)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Description("JSAPI_PC(电脑网站支付)")]
|
[Description("电脑网站支付")]
|
||||||
JSAPI_PC = 2,
|
JSAPI_PC = 2,
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// NATIVE(扫码支付)
|
/// NATIVE(扫码支付)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Description("NATIVE(扫码支付)")]
|
[Description("扫码支付")]
|
||||||
ScanQRCodes = 3,
|
ScanQRCodes = 3,
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// APP(APP支付)
|
/// APP(APP支付)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Description("APP(APP支付)")]
|
[Description("APP支付")]
|
||||||
APP = 4,
|
APP = 4,
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// MWEB(H5支付)
|
/// MWEB(H5支付)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Description("MWEB(H5支付)")]
|
[Description("H5支付")]
|
||||||
MWEB = 5
|
MWEB = 5
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -58,6 +58,15 @@ namespace CoreCms.Net.IRepository
|
|||||||
int GetOrderNum(int userId, int goodId);
|
int GetOrderNum(int userId, int goodId);
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 根据用户id和商品id获取下了多少订单
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="userId"></param>
|
||||||
|
/// <param name="goodId"></param>
|
||||||
|
/// <param name="orderStatus">状态</param>
|
||||||
|
/// <returns></returns>
|
||||||
|
int GetOrderNum(int userId, int goodId, int orderStatus);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 重写根据条件列表数据
|
/// 重写根据条件列表数据
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -75,7 +75,7 @@ namespace CoreCms.Net.IServices
|
|||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 检查当前用户是否可以升级(暂存,有问题)
|
/// 检查当前用户是否可以升级
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="userId"></param>
|
/// <param name="userId"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
|
|||||||
@@ -167,6 +167,27 @@ namespace CoreCms.Net.Repository
|
|||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
|
#region 根据用户id和商品id获取下了多少订单
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 根据用户id和商品id获取下了多少订单
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="userId"></param>
|
||||||
|
/// <param name="goodId"></param>
|
||||||
|
/// <param name="orderStatus">状态</param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public int GetOrderNum(int userId, int goodId,int orderStatus)
|
||||||
|
{
|
||||||
|
var num = DbClient.Queryable<CoreCmsOrder, CoreCmsOrderItem>((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 重写根据条件列表数据
|
#region 重写根据条件列表数据
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 重写根据条件列表数据
|
/// 重写根据条件列表数据
|
||||||
|
|||||||
@@ -24,7 +24,9 @@ using CoreCms.Net.Model.ViewModels.DTO.Distribution;
|
|||||||
using CoreCms.Net.Model.ViewModels.UI;
|
using CoreCms.Net.Model.ViewModels.UI;
|
||||||
using CoreCms.Net.Utility.Extensions;
|
using CoreCms.Net.Utility.Extensions;
|
||||||
using CoreCms.Net.Utility.Helper;
|
using CoreCms.Net.Utility.Helper;
|
||||||
|
using Newtonsoft.Json;
|
||||||
using Newtonsoft.Json.Linq;
|
using Newtonsoft.Json.Linq;
|
||||||
|
using NPOI.SS.Formula.Functions;
|
||||||
using SqlSugar;
|
using SqlSugar;
|
||||||
|
|
||||||
|
|
||||||
@@ -461,10 +463,10 @@ namespace CoreCms.Net.Services
|
|||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region 检查当前用户是否可以升级(暂存,有问题)
|
#region 检查当前用户是否可以升级
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 检查当前用户是否可以升级(暂存,有问题)
|
/// 检查当前用户是否可以升级
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="userId"></param>
|
/// <param name="userId"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
@@ -475,23 +477,111 @@ namespace CoreCms.Net.Services
|
|||||||
var info = await _dal.QueryByClauseAsync(p => p.userId == userId);
|
var info = await _dal.QueryByClauseAsync(p => p.userId == userId);
|
||||||
if (info is { gradeId: > 0 })
|
if (info is { gradeId: > 0 })
|
||||||
{
|
{
|
||||||
//找下有没有可以升级的分销商等级
|
//找下有没有可以升级的分销商等级(一次只升一级)
|
||||||
var grade = await _distributionGradeRepository.QueryByClauseAsync(p => p.id > info.gradeId && p.isAutoUpGrade == true);
|
var grade = await _distributionGradeRepository.QueryByClauseAsync(p => p.sortId > info.gradeId && p.isAutoUpGrade == true, p => p.sortId, OrderByType.Asc, true);
|
||||||
if (grade != null)
|
if (grade == null) return jm;
|
||||||
{
|
{
|
||||||
var conditionList = await _coreCmsDistributionConditionServices.QueryListByClauseAsync(p => p.gradeId == grade.id);
|
|
||||||
//循环所有条件,判断是否可以升级
|
|
||||||
var condition = true;//默认满足升级
|
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)
|
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)
|
if (condition)
|
||||||
{
|
{
|
||||||
await _dal.UpdateAsync(p => new CoreCmsDistribution() { gradeId = grade.id },
|
await _dal.UpdateAsync(p => new CoreCmsDistribution() { gradeId = grade.id }, p => p.userId == userId);
|
||||||
p => p.userId == userId);
|
|
||||||
jm.msg = "升级成功";
|
jm.msg = "升级成功";
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -376,7 +376,7 @@ namespace CoreCms.Net.Web.Admin.Controllers
|
|||||||
var list = await _coreCmsDistributionConditionServices.QueryPageAsync(where, p => p.id, OrderByType.Asc, pageCurrent, pageSize);
|
var list = await _coreCmsDistributionConditionServices.QueryPageAsync(where, p => p.id, OrderByType.Asc, pageCurrent, pageSize);
|
||||||
if (list.Any())
|
if (list.Any())
|
||||||
{
|
{
|
||||||
var distributionConditions = EnumHelper.EnumToList<GlobalEnumVars.DistributionConditions>();
|
var distributionConditions = EnumHelper.EnumToList<GlobalEnumVars.DistributionConditionsCode>();
|
||||||
foreach (var condition in list)
|
foreach (var condition in list)
|
||||||
{
|
{
|
||||||
var cd = distributionConditions.Find(p => p.title == condition.code);
|
var cd = distributionConditions.Find(p => p.title == condition.code);
|
||||||
|
|||||||
Reference in New Issue
Block a user