mirror of
http://git.coreshop.cn/jianweie/coreshoppro.git
synced 2025-12-06 17:13:26 +08:00
【优化】优化分销商升级策略。
This commit is contained in:
@@ -1751,15 +1751,15 @@ namespace CoreCms.Net.Configuration
|
||||
/// </summary>
|
||||
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
|
||||
/// </summary>
|
||||
public enum DistributionConditionsCode
|
||||
{
|
||||
|
||||
/// <summary>
|
||||
/// 个人消费总额
|
||||
/// </summary>
|
||||
[Description("个人消费总额(已完成的订单)")]
|
||||
USER_ORDERS = 3,
|
||||
/// <summary>
|
||||
/// 个人订单数量
|
||||
/// </summary>
|
||||
[Description("个人订单数量(已完成的订单)")]
|
||||
USER_ORDERSNUM = 4,
|
||||
/// <summary>
|
||||
/// 所有商品满足条件
|
||||
/// </summary>
|
||||
[Description("所有商品满足条件")]
|
||||
GOODS_ALL = 1,
|
||||
|
||||
/// <summary>
|
||||
/// 购买指定商品
|
||||
/// </summary>
|
||||
[Description("购买指定商品")]
|
||||
GOODS_IDS = 2,
|
||||
|
||||
/// <summary>
|
||||
/// 个人消费总额
|
||||
/// </summary>
|
||||
[Description("个人消费总额(已完成的订单)")]
|
||||
USER_ORDERS = 3,
|
||||
|
||||
/// <summary>
|
||||
/// 个人订单数量
|
||||
/// </summary>
|
||||
[Description("个人订单数量(已完成的订单)")]
|
||||
USER_ORDERSNUM = 4,
|
||||
|
||||
//[Description("团队消费总额")]
|
||||
//GROUP_ORDERS = 5,
|
||||
|
||||
//[Description("直推几个指定用户等级")]
|
||||
//USER_GRADE = 6,
|
||||
}
|
||||
@@ -3375,31 +3378,31 @@ namespace CoreCms.Net.Configuration
|
||||
/// <summary>
|
||||
/// JSAPI(支付宝小程序支付)
|
||||
/// </summary>
|
||||
[Description("JSAPI(支付宝小程序支付)")]
|
||||
[Description("支付宝小程序支付")]
|
||||
JSAPI = 1,
|
||||
|
||||
/// <summary>
|
||||
/// JSAPI_PC(电脑网站支付)
|
||||
/// </summary>
|
||||
[Description("JSAPI_PC(电脑网站支付)")]
|
||||
[Description("电脑网站支付")]
|
||||
JSAPI_PC = 2,
|
||||
|
||||
/// <summary>
|
||||
/// NATIVE(扫码支付)
|
||||
/// </summary>
|
||||
[Description("NATIVE(扫码支付)")]
|
||||
[Description("扫码支付")]
|
||||
ScanQRCodes = 3,
|
||||
|
||||
/// <summary>
|
||||
/// APP(APP支付)
|
||||
/// </summary>
|
||||
[Description("APP(APP支付)")]
|
||||
[Description("APP支付")]
|
||||
APP = 4,
|
||||
|
||||
/// <summary>
|
||||
/// MWEB(H5支付)
|
||||
/// </summary>
|
||||
[Description("MWEB(H5支付)")]
|
||||
[Description("H5支付")]
|
||||
MWEB = 5
|
||||
}
|
||||
|
||||
|
||||
@@ -58,6 +58,15 @@ namespace CoreCms.Net.IRepository
|
||||
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>
|
||||
|
||||
@@ -75,7 +75,7 @@ namespace CoreCms.Net.IServices
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 检查当前用户是否可以升级(暂存,有问题)
|
||||
/// 检查当前用户是否可以升级
|
||||
/// </summary>
|
||||
/// <param name="userId"></param>
|
||||
/// <returns></returns>
|
||||
|
||||
@@ -167,6 +167,27 @@ namespace CoreCms.Net.Repository
|
||||
}
|
||||
#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 重写根据条件列表数据
|
||||
/// <summary>
|
||||
/// 重写根据条件列表数据
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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<GlobalEnumVars.DistributionConditions>();
|
||||
var distributionConditions = EnumHelper.EnumToList<GlobalEnumVars.DistributionConditionsCode>();
|
||||
foreach (var condition in list)
|
||||
{
|
||||
var cd = distributionConditions.Find(p => p.title == condition.code);
|
||||
|
||||
Reference in New Issue
Block a user