Commit feca8379 authored by 吴春's avatar 吴春

提交优惠券

parent 7d82ed23
...@@ -100,5 +100,10 @@ namespace Mall.Model.Entity.Education ...@@ -100,5 +100,10 @@ namespace Mall.Model.Entity.Education
/// 有效期结束时间 /// 有效期结束时间
/// </summary> /// </summary>
public DateTime? EndDate { get; set; } public DateTime? EndDate { get; set; }
/// <summary>
/// 最高抵扣金额
/// </summary>
public decimal MaxDiscountsPrice { get; set; }
} }
} }
...@@ -105,13 +105,12 @@ namespace Mall.Repository.Education ...@@ -105,13 +105,12 @@ namespace Mall.Repository.Education
/// <returns></returns> /// <returns></returns>
public List<RB_Education_Coupon_Extend> GetNoUseCouponList(RB_Education_Coupon_Extend query) public List<RB_Education_Coupon_Extend> GetNoUseCouponList(RB_Education_Coupon_Extend query)
{ {
string where = " and a.StartDate<NOW() and a.EndDate>NOW() and a.UseState=0 "; string where = $" and a.StartDate<NOW() and a.EndDate>NOW() AND (a.{nameof(RB_Education_MemberCoupon_Extend.HeXiao)}-a.{nameof(RB_Education_MemberCoupon_Extend.UseHeXiao)})>0 ";
string goodsClassWhere = "";//分类 string goodsClassWhere = "";//分类
string goodsWhere = "";//商品 string goodsWhere = "";//商品
string allWhere = "";//通用 string allWhere = "";//通用
if (query != null) if (query != null)
{ {
if (query.TenantId > 0) if (query.TenantId > 0)
{ {
where += $" AND b.{nameof(RB_Education_Coupon_Extend.TenantId)}={query.TenantId}"; where += $" AND b.{nameof(RB_Education_Coupon_Extend.TenantId)}={query.TenantId}";
...@@ -133,11 +132,11 @@ namespace Mall.Repository.Education ...@@ -133,11 +132,11 @@ namespace Mall.Repository.Education
{ {
if (!string.IsNullOrWhiteSpace(goodsWhere)) if (!string.IsNullOrWhiteSpace(goodsWhere))
{ {
goodsWhere += $" or (c.ProductId = {item.ProductId} and a.MinConsumePrice<= {item.GoodsPrice}) "; goodsWhere += $" or (c.ProductId = {item.ProductId} and (b.MaxDiscountsPrice>= {item.GoodsPrice} or b.MaxDiscountsPrice= 0)) ";
} }
else else
{ {
goodsWhere += $" (c.ProductId = {item.ProductId} and a.MinConsumePrice<= {item.GoodsPrice}) "; goodsWhere += $" (c.ProductId = {item.ProductId} and (b.MaxDiscountsPrice>= {item.GoodsPrice} or b.MaxDiscountsPrice= 0)) ";
} }
allGoodsClass.AddRange(item.GoodsClassId.ToList()); allGoodsClass.AddRange(item.GoodsClassId.ToList());
} }
...@@ -158,30 +157,30 @@ namespace Mall.Repository.Education ...@@ -158,30 +157,30 @@ namespace Mall.Repository.Education
} }
if (!string.IsNullOrWhiteSpace(goodsClassWhere)) if (!string.IsNullOrWhiteSpace(goodsClassWhere))
{ {
goodsClassWhere += $" or (c.ProductId = {item.Key} and b.MinConsumePrice<= {nowPrice}) "; goodsClassWhere += $" or (c.ProductId = {item.Key} and (b.MaxDiscountsPrice>= {nowPrice} or b.MaxDiscountsPrice= 0)) ";
} }
else else
{ {
goodsClassWhere += $" (c.ProductId = {item.Key} and b.MinConsumePrice<= {nowPrice}) "; goodsClassWhere += $" (c.ProductId = {item.Key} and (b.MaxDiscountsPrice>= {nowPrice} or b.MaxDiscountsPrice= 0)) ";
} }
} }
goodsClassWhere = " and (" + goodsClassWhere + ")"; goodsClassWhere = " and (" + goodsClassWhere + ")";
decimal allPrice = query.ProductList.Sum(x => x.GoodsPrice); decimal allPrice = query.ProductList.Sum(x => x.GoodsPrice);
allWhere = $" and b.MinConsumePrice<= {allPrice} "; allWhere = $" and (b.MaxDiscountsPrice>= {allPrice} or b.MaxDiscountsPrice= 0) ";
} }
} }
string sql = @$" SELECT a.ID as MemberCouponId,a.UserId,b.`Name`,b.CouponType,b.UseType,b.MinConsumePrice,b.DiscountsPrice,b.MaxDiscountsPrice,b.`Describe`,a.StartDate,a.EndDate,b.ID from RB_Education_MemberCoupon as a string sql = @$" SELECT a.ID as MemberCouponId,a.UserId,a.HeXiao,a.UseHeXiao,b.`Name`,b.UseType,b.MaxDiscountsPrice,b.`Describe`,b.CouponIco,a.StartDate,a.EndDate,b.ID from RB_Education_MemberCoupon as a
LEFT JOIN RB_Education_Coupon as b on a.CouponId=b.ID LEFT JOIN RB_Education_Coupon as b on a.CouponId=b.ID
LEFT JOIN RB_Education_CouponProduct as c on c.CouponId=b.ID LEFT JOIN RB_Education_CouponProduct as c on c.CouponId=b.ID
where b.UseType=1 and c.`Status`=0 {where} {goodsClassWhere} where b.UseType=1 and c.`Status`=0 {where} {goodsClassWhere}
UNION ALL UNION ALL
SELECT a.ID as MemberCouponId,a.UserId,b.`Name`,b.CouponType,b.UseType,b.MinConsumePrice,b.DiscountsPrice,b.MaxDiscountsPrice,b.`Describe`,a.StartDate,a.EndDate,b.ID from RB_Education_MemberCoupon as a SELECT a.ID as MemberCouponId,a.UserId,a.HeXiao,a.UseHeXiao,b.`Name`,b.UseType,b.MaxDiscountsPrice,b.`Describe`,b.CouponIco,a.StartDate,a.EndDate,b.ID from RB_Education_MemberCoupon as a
LEFT JOIN RB_Education_Coupon as b on a.CouponId=b.ID LEFT JOIN RB_Education_Coupon as b on a.CouponId=b.ID
LEFT JOIN RB_Education_CouponProduct as c on c.CouponId=b.ID LEFT JOIN RB_Education_CouponProduct as c on c.CouponId=b.ID
where b.UseType=2 and c.`Status`=0 {where} {goodsWhere} where b.UseType=2 and c.`Status`=0 {where} {goodsWhere}
UNION all UNION all
SELECT a.ID as MemberCouponId,a.UserId,b.`Name`,b.CouponType,b.UseType,b.MinConsumePrice,b.DiscountsPrice,b.MaxDiscountsPrice,b.`Describe`,a.StartDate,a.EndDate,b.ID from RB_Education_MemberCoupon as a SELECT a.ID as MemberCouponId,a.UserId,a.HeXiao,a.UseHeXiao,b.`Name`,b.UseType,b.MaxDiscountsPrice,b.`Describe`,b.CouponIco,a.StartDate,a.EndDate,b.ID from RB_Education_MemberCoupon as a
LEFT JOIN RB_Education_Coupon as b on a.CouponId=b.ID LEFT JOIN RB_Education_Coupon as b on a.CouponId=b.ID
where b.UseType=3 {where} {allWhere}"; where b.UseType=3 {where} {allWhere}";
return Get<RB_Education_Coupon_Extend>(sql).ToList(); return Get<RB_Education_Coupon_Extend>(sql).ToList();
...@@ -204,7 +203,7 @@ SELECT a.ID as MemberCouponId,a.UserId,b.`Name`,b.CouponType,b.UseType,b.MinCons ...@@ -204,7 +203,7 @@ SELECT a.ID as MemberCouponId,a.UserId,b.`Name`,b.CouponType,b.UseType,b.MinCons
/// <returns></returns> /// <returns></returns>
public List<RB_Education_Coupon_Extend> GetAllCouponList(int pageIndex, int pageSize, out long rowCount, RB_Education_Coupon_Extend query) public List<RB_Education_Coupon_Extend> GetAllCouponList(int pageIndex, int pageSize, out long rowCount, RB_Education_Coupon_Extend query)
{ {
string where = " where a.`Status`=0 and a.PickupCenter=1 and (a.TotalNum=-1 or a.TotalNum>0)"; string where = " where a.`Status`=0 and a.PickupCenter=1";
string userWhere = "";//分类 string userWhere = "";//分类
if (query != null) if (query != null)
{ {
...@@ -234,10 +233,10 @@ SELECT a.ID as MemberCouponId,a.UserId,b.`Name`,b.CouponType,b.UseType,b.MinCons ...@@ -234,10 +233,10 @@ SELECT a.ID as MemberCouponId,a.UserId,b.`Name`,b.CouponType,b.UseType,b.MinCons
where += $" AND a.{nameof(RB_Education_Coupon_Extend.SmallShopId)}=0"; where += $" AND a.{nameof(RB_Education_Coupon_Extend.SmallShopId)}=0";
} }
} }
string sql = @$" SELECT t.*,c.MemberNum from (SELECT a.ID,a.`Name`,a.`Describe`,a.CouponType,a.UseType,a.StartDate,a.EndDate,a.CouponIco,a.IndateDay,a.IndateType,a.TotalNum,a.CouponIco from {TableName} as a string sql = @$" SELECT t.*,c.MemberNum from (SELECT a.ID,a.`Name`,a.`Describe`,a.UseType,a.StartDate,a.EndDate,a.CouponIco,a.IndateDay,a.IndateType,a.TotalNum from {TableName} as a
{where} and a.IndateType=1 {where} and a.IndateType=1
UNION ALL UNION ALL
SELECT a.ID,a.`Name`,a.`Describe`,a.CouponType,a.UseType,a.StartDate,a.EndDate,a.CouponIco,a.IndateDay,a.IndateType,a.TotalNum,a.CouponIco from {TableName} as a SELECT a.ID,a.`Name`,a.`Describe`,a.UseType,a.StartDate,a.EndDate,a.CouponIco,a.IndateDay,a.IndateType,a.TotalNum from {TableName} as a
{where} and a.IndateType=2 and a.EndDate>NOW() ) {where} and a.IndateType=2 and a.EndDate>NOW() )
as t LEFT JOIN (SELECT CouponId,COUNT(*) as MemberNum from RB_Education_MemberCoupon where `Status`=0 {userWhere} GROUP BY CouponId) as c on t.ID=c.CouponId "; as t LEFT JOIN (SELECT CouponId,COUNT(*) as MemberNum from RB_Education_MemberCoupon where `Status`=0 {userWhere} GROUP BY CouponId) as c on t.ID=c.CouponId ";
return GetPage<RB_Education_Coupon_Extend>(pageIndex, pageSize, out rowCount, sql).ToList(); return GetPage<RB_Education_Coupon_Extend>(pageIndex, pageSize, out rowCount, sql).ToList();
......
...@@ -133,11 +133,11 @@ namespace Mall.Repository.MarketingCenter ...@@ -133,11 +133,11 @@ namespace Mall.Repository.MarketingCenter
{ {
if (!string.IsNullOrWhiteSpace(goodsWhere)) if (!string.IsNullOrWhiteSpace(goodsWhere))
{ {
goodsWhere += $" or (c.ProductId = {item.ProductId} and a.MinConsumePrice<= {item.GoodsPrice}) "; goodsWhere += $" or (c.ProductId = {item.ProductId} and b.MinConsumePrice<= {item.GoodsPrice}) ";
} }
else else
{ {
goodsWhere += $" (c.ProductId = {item.ProductId} and a.MinConsumePrice<= {item.GoodsPrice}) "; goodsWhere += $" (c.ProductId = {item.ProductId} and b.MinConsumePrice<= {item.GoodsPrice}) ";
} }
allGoodsClass.AddRange(item.GoodsClassId.ToList()); allGoodsClass.AddRange(item.GoodsClassId.ToList());
} }
......
...@@ -30,6 +30,7 @@ namespace Mall.WebApi.Controllers.Education ...@@ -30,6 +30,7 @@ namespace Mall.WebApi.Controllers.Education
{ {
private readonly EducationModule educationModule = new EducationModule(); private readonly EducationModule educationModule = new EducationModule();
private Module.User.UserModule UserModule = new Module.User.UserModule(); private Module.User.UserModule UserModule = new Module.User.UserModule();
private Module.Product.ProductModule productModule = new Module.Product.ProductModule();
#region 课程卡 #region 课程卡
/// <summary> /// <summary>
...@@ -58,10 +59,11 @@ namespace Mall.WebApi.Controllers.Education ...@@ -58,10 +59,11 @@ namespace Mall.WebApi.Controllers.Education
x.CouponIco, x.CouponIco,
CouponId = x.ID, CouponId = x.ID,
x.IndateDay, x.IndateDay,
x.MaxDiscountsPrice,
x.IndateType, x.IndateType,
StartDate = x.StartDate.HasValue ? x.StartDate.Value.ToString("yyyy-MM-dd HH:ss:mm") : "", StartDate = x.StartDate.HasValue ? x.StartDate.Value.ToString("yyyy-MM-dd HH:ss:mm") : "",
EndDate = x.EndDate.HasValue ? x.EndDate.Value.ToString("yyyy-MM-dd HH:ss:mm") : "", EndDate = x.EndDate.HasValue ? x.EndDate.Value.ToString("yyyy-MM-dd HH:ss:mm") : "",
IsReceive = x.TotalNum == -1 ? 0 : ((x.TotalNum - x.MemberNum > 0 ? 0 : 1)), //x.MemberNum > 0 ? 1 : 0, IsReceive = x.MemberNum > 0 ? 1 : 0,
UseTypeStr = ((int)x.UseType == 3 || (int)x.UseType == 4) ? x.UseType.GetEnumName() : (x.ProductList != null && x.ProductList.Any() ? string.Join("、", x.ProductList.Select(x => x.Relevance)) : ""), UseTypeStr = ((int)x.UseType == 3 || (int)x.UseType == 4) ? x.UseType.GetEnumName() : (x.ProductList != null && x.ProductList.Any() ? string.Join("、", x.ProductList.Select(x => x.Relevance)) : ""),
x.UseType, x.UseType,
x.ProductList x.ProductList
...@@ -202,6 +204,7 @@ namespace Mall.WebApi.Controllers.Education ...@@ -202,6 +204,7 @@ namespace Mall.WebApi.Controllers.Education
x.UseHeXiao, x.UseHeXiao,
x.HeXiao, x.HeXiao,
x.ID, x.ID,
x.MaxDiscountsPrice,
x.CouponIco, x.CouponIco,
x.MemberCouponId, x.MemberCouponId,
StartDate = x.StartDate.HasValue ? x.StartDate.Value.ToString("yyyy-MM-dd HH:ss:mm") : "", StartDate = x.StartDate.HasValue ? x.StartDate.Value.ToString("yyyy-MM-dd HH:ss:mm") : "",
...@@ -251,6 +254,164 @@ namespace Mall.WebApi.Controllers.Education ...@@ -251,6 +254,164 @@ namespace Mall.WebApi.Controllers.Education
return ApiResult.CouponFailed(ResultCode.Fail, 1, "", ""); return ApiResult.CouponFailed(ResultCode.Fail, 1, "", "");
} }
} }
/// <summary>
/// 获取用户未使用的优惠券
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult GetNoUseCouponList()
{
var req = RequestParm;
var userInfo = AppletUserInfo;
JObject prams = JObject.Parse(req.msg.ToString());
var query = JsonConvert.DeserializeObject<RB_Education_Coupon_Extend>(RequestParm.msg.ToString());
query.TenantId = userInfo.TenantId;
query.MallBaseId = userInfo.MallBaseId;
query.UserId = userInfo.UserId;
var list = educationModule.GetNoUseCouponList(query);
//获取优惠券对应的商品,或者分类
List<RB_Product_Category_Extend> categotyList = new List<RB_Product_Category_Extend>();
List<RB_Education_CouponProduct_Extend> productList = new List<RB_Education_CouponProduct_Extend>();
string Ids = "";
foreach (var item in list.Where(x => x.UseType == Common.Enum.MarketingCenter.UseTypeEnum.Category))
{
productList.AddRange(item.ProductList);
item.CategoryIds = item.ProductList.Select(x => x.ProductId).ToList().ToArray();
}
if (productList != null && productList.Any())
{
Ids = string.Join(",", productList.Select(x => x.ProductId));
}
if (!string.IsNullOrWhiteSpace(Ids))
{
categotyList = productModule.GetCategoryListModule(new Model.Extend.Product.RB_Product_Category_Extend { TenantId = userInfo.TenantId, MallBaseId = userInfo.MallBaseId, CategoryIds = Ids });
}
if (categotyList == null || !categotyList.Any())
{
categotyList = new List<RB_Product_Category_Extend>();
}
List<RB_Goods_Extend> goodsList = new List<RB_Goods_Extend>();
productList = new List<RB_Education_CouponProduct_Extend>();
Ids = "";
foreach (var item in list.Where(x => x.UseType == Common.Enum.MarketingCenter.UseTypeEnum.Product))
{
productList.AddRange(item.ProductList);
item.GoodsIds = item.ProductList.Select(x => x.ProductId).ToList().ToArray();
}
if (productList != null && productList.Any())
{
Ids = string.Join(",", productList.Select(x => x.ProductId));
}
if (!string.IsNullOrWhiteSpace(Ids))
{
goodsList = productModule.GetProductGoodsList(new RB_Goods_Extend { TenantId = userInfo.TenantId, MallBaseId = userInfo.MallBaseId, GoodsIds = Ids });
}
if (goodsList == null || !goodsList.Any())
{
goodsList = new List<RB_Goods_Extend>();
}
var result = list.Select(x => new
{
id = x.MemberCouponId,
mall_id = userInfo.MallBaseId,
user_id = userInfo.UserId,
coupon_id = x.ID,
start_time = x.StartDate.HasValue ? x.StartDate.Value.ToString("yyyy-MM-dd HH:mm:ss") : "",
end_time = x.EndDate.HasValue ? x.EndDate.Value.ToString("yyyy-MM-dd HH:mm:ss") : "",
is_use = 0,
is_delete = 0,
created_at = x.CreateDate.ToString("yyyy-MM-dd HH:mm:ss"),
updated_at = x.UpdateDate.ToString("yyyy-MM-dd HH:mm:ss"),
deleted_at = "0000-00-00 00:00:00",
receive_type = "",
discount_limit = x.MaxDiscountsPrice,
usehexiao= x.HeXiao- x.UseHeXiao,
couponIco = x.CouponIco,
coupon_data = new
{
id = x.ID,
mall_id = userInfo.MallBaseId,
name = x.Name,
pic_url = "",
desc = "",
total_count = x.TotalNum + x.ReceiveNum,
expire_type = x.IndateType,
expire_day = x.IndateDay,
begin_time = x.StartDate.HasValue ? x.StartDate.Value.ToString("yyyy-MM-dd HH:mm:ss") : "",
end_time = x.EndDate.HasValue ? x.EndDate.Value.ToString("yyyy-MM-dd HH:mm:ss") : "",
appoint_type = (int)x.UseType,
rule = x.Describe,
is_delete = 0,
deleted_at = "0000-00-00 00:00:00",
created_at = x.CreateDate.ToString("yyyy-MM-dd HH:mm:ss"),
updated_at = x.UpdateDate.ToString("yyyy-MM-dd HH:mm:ss"),
discount_limit = x.MaxDiscountsPrice,
couponIco = x.CouponIco,
usehexiao = x.HeXiao - x.UseHeXiao,
car = categotyList.Where(y => x.CategoryIds.Contains(x.ID)).Select(y => new
{
id = y.Id,
mall_id = userInfo.MallBaseId,
mch_id = 0,
parent_id = y.ParentId,
name = y.Name,
pic_url = y.AdvertisingImagePath,
sort = y.Sort,
big_pic_url = y.BigIconPath,
advert_pic = y.AdvertisingImage,
advert_url = y.AdvertisingImagePath,
status = y.Status,
created_at = y.CreateDate.HasValue ? y.CreateDate.Value.ToString("yyyy-MM-dd HH:mm:ss") : "",
updated_at = y.UpdateDate.HasValue ? y.UpdateDate.Value.ToString("yyyy-MM-dd HH:mm:ss") : "",
deleted_at = "0000-00-00 00:00:00",
is_delete = 0,
is_show = y.IsShow,
advert_open_type = "",
advert_params = ""
}),
goods = goodsList.Where(y => x.GoodsIds.Contains(x.ID)).Select(y => new
{
id = y.Id,
mall_id = userInfo.MallBaseId,
name = y.Name,
original_price = y.OriginalPrice,
cost_price = y.CostPrice,
detail = y.GoodsDetails,
cover_pic = y.CoverImage,
pic_url = "",
video_url = y.VideoAddress,
unit = y.Unit,
created_at = y.CreateDate.HasValue ? y.CreateDate.Value.ToString("yyyy-MM-dd HH:mm:ss") : "",
updated_at = y.UpdateDate.HasValue ? y.UpdateDate.Value.ToString("yyyy-MM-dd HH:mm:ss") : "",
deleted_at = "0000-00-00 00:00:00",
is_delete = 0,
}),
},
x.Name,
x.Describe,
x.MaxDiscountsPrice,
x.UseType
});
return ApiResult.Success("", result);
}
#endregion #endregion
......
...@@ -1110,7 +1110,7 @@ namespace Mall.WebApi.Controllers.Education ...@@ -1110,7 +1110,7 @@ namespace Mall.WebApi.Controllers.Education
memberCoupon.Name = oldLogisticsModel.Name; memberCoupon.Name = oldLogisticsModel.Name;
memberCoupon.UseType = oldLogisticsModel.UseType; memberCoupon.UseType = oldLogisticsModel.UseType;
memberCoupon.HeXiao = oldLogisticsModel.HeXiao; memberCoupon.HeXiao = oldLogisticsModel.HeXiao;
memberCoupon.UseHeXiao = oldLogisticsModel.HeXiao; memberCoupon.UseHeXiao = 0;
if (oldLogisticsModel.IndateType == Common.Enum.MarketingCenter.IndateTypeEnum.DayHorizon) if (oldLogisticsModel.IndateType == Common.Enum.MarketingCenter.IndateTypeEnum.DayHorizon)
{ {
memberCoupon.StartDate = System.DateTime.Now; memberCoupon.StartDate = System.DateTime.Now;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment