mirror of
http://git.coreshop.cn/jianweie/coreshoppro.git
synced 2026-02-04 20:59:49 +08:00
【新增】新增全局优惠展示接口,前端商品详情增加全局优惠显示入口。
This commit is contained in:
@@ -27,6 +27,7 @@ using CoreCms.Net.Utility.Extensions;
|
||||
using CoreCms.Net.Utility.Helper;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using NetTaste;
|
||||
using Newtonsoft.Json;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using SqlSugar;
|
||||
@@ -733,5 +734,176 @@ namespace CoreCms.Net.Services
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
#region 获取全局促销列表
|
||||
|
||||
/// <summary>
|
||||
/// 获取全局促销列表
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public async Task<List<GetPromotionResult>> GetPromotionList(int type = (int)GlobalEnumVars.PromotionType.Promotion)
|
||||
{
|
||||
var where = PredicateBuilder.True<CoreCmsPromotion>();
|
||||
var dt = DateTime.Now;
|
||||
where = where.And(p => p.startTime < dt); //判断优惠券失效时间 是否可领取
|
||||
where = where.And(p => p.endTime > dt); //判断优惠券失效时间 是否可领取
|
||||
where = where.And(p => p.isEnable); //启用状态
|
||||
where = where.And(p => p.type == type); //促销类型
|
||||
where = where.And(p => !p.isDel); //是否被删除
|
||||
|
||||
var data = await _dal.QueryPageAndChildsAsync(where, p => p.sort, OrderByType.Asc, true, 1, 1000);
|
||||
|
||||
if (data != null && data.Any())
|
||||
{
|
||||
var goodsServices = _serviceProvider.GetService<ICoreCmsGoodsServices>();
|
||||
var goodsCategoryServices = _serviceProvider.GetService<ICoreCmsGoodsCategoryServices>();
|
||||
var brandServices = _serviceProvider.GetService<ICoreCmsBrandServices>();
|
||||
var userGradeServices = _serviceProvider.GetService<ICoreCmsUserGradeServices>();
|
||||
|
||||
foreach (var item in data)
|
||||
{
|
||||
foreach (var condition in item.promotionCondition)
|
||||
{
|
||||
var obj = (JObject)JsonConvert.DeserializeObject(condition.parameters);
|
||||
var str = string.Empty;
|
||||
|
||||
if (condition.code == "GOODS_ALL")
|
||||
{
|
||||
str = "购买任意商品:只要购买任意产品即可;";
|
||||
}
|
||||
//购买指定商品
|
||||
else if (condition.code == "GOODS_IDS")
|
||||
{
|
||||
var goodsId = obj["goodsId"].ObjectToString();
|
||||
if (!string.IsNullOrEmpty(goodsId))
|
||||
{
|
||||
str = "购买指定商品:";
|
||||
var ids = goodsId.Split(",").Select(p => p.ObjectToInt()).ToList();
|
||||
var goods = await goodsServices.QueryListByClauseAsync(p => ids.Contains(p.id), p => p.id, OrderByType.Asc, true);
|
||||
if (goods.Any())
|
||||
{
|
||||
var goodsName = goods.Select(p => p.name = "【" + p.name + "】").ToList();
|
||||
str += string.Join(",", goodsName);
|
||||
}
|
||||
str += ";购买数量:" + obj["nums"].ObjectToString();
|
||||
}
|
||||
}
|
||||
//购买指定商品分类
|
||||
else if (condition.code == "GOODS_CATS")
|
||||
{
|
||||
var id = obj["catId"].ObjectToInt(0);
|
||||
if (id > 0)
|
||||
{
|
||||
str = "购买指定分类商品:";
|
||||
var goodCache = await goodsCategoryServices.GetCaChe();
|
||||
var goodsCategory = goodCache.FirstOrDefault(p => p.id == id);
|
||||
str += goodsCategory != null ? "【" + goodsCategory.name + "】" : "";
|
||||
str += ";购买数量:" + obj["nums"].ObjectToString();
|
||||
}
|
||||
}
|
||||
//购买指定品牌商品
|
||||
else if (condition.code == "GOODS_BRANDS")
|
||||
{
|
||||
var id = obj["brandId"].ObjectToInt(0);
|
||||
if (id > 0)
|
||||
{
|
||||
str = "购买指定品牌商品:";
|
||||
var brandCache = await brandServices.QueryAsync(true, true);
|
||||
var brand = brandCache.FirstOrDefault(p => p.id == id);
|
||||
str += brand != null ? "【" + brand.name + "】" : "";
|
||||
str += ";购买数量:" + obj["nums"].ObjectToString();
|
||||
}
|
||||
}
|
||||
//用户符合指定等级
|
||||
else if (condition.code == "USER_GRADE")
|
||||
{
|
||||
var gradesId = obj["grades"].ObjectToString();
|
||||
if (!string.IsNullOrEmpty(gradesId))
|
||||
{
|
||||
str = "用户符合指定等级:";
|
||||
var ids = gradesId.Split(",").Select(p => p.ObjectToInt()).ToList();
|
||||
var userGradesCache = await userGradeServices.QueryAsync(true, true);
|
||||
var userGrades = userGradesCache.Where(p => ids.Contains(p.id));
|
||||
if (userGrades.Any())
|
||||
{
|
||||
var goodsName = userGrades.Select(p => p.title = "【" + p.title + "】").ToList();
|
||||
str += string.Join(",", goodsName);
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (condition.code == "ORDER_FULL")
|
||||
{
|
||||
str = obj != null ? "购买订单满" + obj["money"].ObjectToString() + "元 " : "";
|
||||
}
|
||||
|
||||
if (!string.IsNullOrEmpty(str))
|
||||
{
|
||||
item.conditions.Add(str);
|
||||
}
|
||||
}
|
||||
foreach (var result in item.promotionResult)
|
||||
{
|
||||
//var str = PromotionHelper.GetResultMsg(result.code, result.parameters);
|
||||
var msg = string.Empty;
|
||||
var obj = (JObject)JsonConvert.DeserializeObject(result.parameters);
|
||||
|
||||
switch (result.code)
|
||||
{
|
||||
case "GOODS_REDUCE":
|
||||
msg = "指定商品减少固定金额:减" + obj["money"].ObjectToString() + "元 ";
|
||||
break;
|
||||
case "GOODS_DISCOUNT":
|
||||
msg = "指定商品打折:打" + obj["discount"].ObjectToString() + "折 ";
|
||||
break;
|
||||
case "GOODS_ONE_PRICE":
|
||||
msg = "指定商品一口价:" + obj["money"].ObjectToString() + "元 ";
|
||||
break;
|
||||
case "ORDER_REDUCE":
|
||||
msg = "订单减" + obj["money"].ObjectToString() + "元 ";
|
||||
break;
|
||||
case "ORDER_DISCOUNT":
|
||||
msg = "订单打" + obj["discount"].ObjectToString() + "折 ";
|
||||
break;
|
||||
case "GOODS_HALF_PRICE":
|
||||
msg = "指定商品每第" + obj["num"].ObjectToString() + "件减少" + obj["money"].ObjectToString() + "元";
|
||||
break;
|
||||
}
|
||||
|
||||
item.results.Add(msg);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var list = new List<GetPromotionResult>();
|
||||
if (data.Any())
|
||||
{
|
||||
foreach (var item in data)
|
||||
{
|
||||
var dto = new GetPromotionResult();
|
||||
dto.id = item.id;
|
||||
dto.name = item.name;
|
||||
dto.type = item.type;
|
||||
dto.sort = item.sort;
|
||||
dto.maxNums = item.maxNums;
|
||||
dto.maxGoodsNums = item.maxGoodsNums;
|
||||
dto.maxRecevieNums = item.maxRecevieNums;
|
||||
dto.startTime = item.startTime;
|
||||
dto.endTime = item.endTime;
|
||||
dto.isEnable = item.isEnable;
|
||||
dto.isExclusive = item.isExclusive;
|
||||
dto.isAutoReceive = item.isAutoReceive;
|
||||
dto.effectiveDays = item.effectiveDays;
|
||||
dto.effectiveHours = item.effectiveHours;
|
||||
dto.conditions = item.conditions;
|
||||
dto.results = item.results;
|
||||
list.Add(dto);
|
||||
}
|
||||
}
|
||||
|
||||
return list;
|
||||
}
|
||||
#endregion
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user