Commit 5ca6f953 authored by 吴春's avatar 吴春

卡券

parent a90a895a
using Mall.Common.Plugin;
using System;
using System.Collections.Generic;
using System.Text;
namespace Mall.Common.Enum.MarketingCenter
{
public enum CouponTypeEnum
{
/// <summary>
/// 满减券
/// </summary>
[EnumField("满减券")]
FullReduction = 1,
/// <summary>
/// 打折券
/// </summary>
[EnumField("打折券")]
Discount = 2,
}
}
using Mall.Common.Plugin;
using System;
using System.Collections.Generic;
using System.Text;
namespace Mall.Common.Enum.MarketingCenter
{
public enum IndateTypeEnum
{
/// <summary>
/// 时间段
/// </summary>
[EnumField("时间段")]
TimeHorizon = 2,
/// <summary>
/// 领取后N天内有效
/// </summary>
[EnumField("领取后N天内有效")]
DayHorizon = 1,
}
}
using Mall.Common.Plugin;
using System;
using System.Collections.Generic;
using System.Text;
namespace Mall.Common.Enum.MarketingCenter
{
/// <summary>
/// 1-会员专享2-领劵中心
/// </summary>
public enum PickupTypeEnum
{
/// <summary>
/// 会员专享
/// </summary>
[EnumField("会员专享")]
OnlyMember = 1,
/// <summary>
/// 领劵中心
/// </summary>
[EnumField("领劵中心")]
CouponCenter = 2,
}
}
using Mall.Common.Plugin;
using System;
using System.Collections.Generic;
using System.Text;
namespace Mall.Common.Enum.MarketingCenter
{
/// <summary>
/// 1-指定商品类型,2-指定商品,3-全场通用,4-当面付
/// </summary>
public enum UseTypeEnum
{
/// <summary>
/// 指定商品类型
/// </summary>
[EnumField("指定商品类型")]
Category = 1,
/// <summary>
/// 指定商品
/// </summary>
[EnumField("指定商品")]
Product = 2,
/// <summary>
/// 全场通用
/// </summary>
[EnumField("全场通用")]
All = 3,
/// <summary>
/// 当面付
/// </summary>
[EnumField("当面付")]
SeeFacePay = 4,
}
}
using Mall.Common.AOP;
using Mall.Common.Enum.MarketingCenter;
using System;
using System.Collections.Generic;
using System.Text;
namespace Mall.Model.Entity.MarketingCenter
{
/// <summary>
/// 卡券实体表
/// </summary>
[Serializable]
[DB(ConnectionName = "DefaultConnection")]
public class RB_Coupon
{
public int ID { get; set; }
/// <summary>
/// 商户id
/// </summary>
public int TenantId { get; set; }
/// <summary>
/// 小程序id
/// </summary>
public int MallBaseId { get; set; }
public int Status { get; set; }
public DateTime CreateDate { get; set; }
public DateTime UpdateDate { get; set; }
public string Name { get; set; }
public string CouponIco { get; set; }
/// <summary>
/// 有效期类型,1-领取后N天内有效,2-时间段
/// </summary>
public IndateTypeEnum IndateType { get; set; }
/// <summary>
/// 有效天数
/// </summary>
public int IndateDay { get; set; }
/// <summary>
/// 总核销次数
/// </summary>
public int HeXiao { get; set; }
/// <summary>
/// 可发放数量,-1 无限制
/// </summary>
public int TotalNum { get; set; }
/// <summary>
/// 描述
/// </summary>
public string Describe { get; set; }
/// <summary>
/// 领取数量
/// </summary>
public int ReceiveNum { get; set; }
/// <summary>
/// 有效期开始时间
/// </summary>
public DateTime? StartDate { get; set; }
/// <summary>
/// 有效期结束时间
/// </summary>
public DateTime? EndDate { get; set; }
}
}
using Mall.Common.AOP;
using Mall.Common.Enum.MarketingCenter;
using System;
using System.Collections.Generic;
using System.Text;
namespace Mall.Model.Entity.MarketingCenter
{
/// <summary>
/// 优惠券实体表
/// </summary>
[Serializable]
[DB(ConnectionName = "DefaultConnection")]
public class RB_DiscountCoupon
{
public int ID { get; set; }
/// <summary>
/// 商户id
/// </summary>
public int TenantId { get; set; }
/// <summary>
/// 小程序id
/// </summary>
public int MallBaseId { get; set; }
public int Status { get; set; }
public DateTime CreateDate { get; set; }
public DateTime UpdateDate { get; set; }
public string Name { get; set; }
/// <summary>
/// 有效期类型,1-领取后N天内有效,2-时间段
/// </summary>
public IndateTypeEnum IndateType { get; set; }
/// <summary>
/// 有效天数
/// </summary>
public int IndateDay { get; set; }
/// <summary>
/// 可发放数量,-1 无限制
/// </summary>
public int TotalNum { get; set; }
/// <summary>
/// 描述
/// </summary>
public string Describe { get; set; }
/// <summary>
/// 领取数量
/// </summary>
public int ReceiveNum { get; set; }
/// <summary>
/// 有效期开始时间
/// </summary>
public DateTime? StartDate { get; set; }
/// <summary>
/// 有效期结束时间
/// </summary>
public DateTime? EndDate { get; set; }
/// <summary>
/// 1-满减券,2-打折券
/// </summary>
public CouponTypeEnum CouponType { get; set; }
/// <summary>
///排序
/// </summary>
public int Sort { get; set; }
/// <summary>
/// 1-指定商品类型,2-指定商品,3-全场通用,4-当面付
/// </summary>
public UseTypeEnum UseType { get; set; }
/// <summary>
/// 最低消费金额(元)
/// </summary>
public decimal MinConsumePrice { get; set; }
/// <summary>
/// 优惠金额/折扣
/// </summary>
public decimal DiscountsPrice { get; set; }
/// <summary>
///最多优惠(元)
/// </summary>
public decimal MaxDiscountsPrice { get; set; }
/// <summary>
/// 领取方式设置1-会员专享2-领劵中心
/// </summary>
public PickupTypeEnum PickupType { get; set; }
}
}
using Mall.Common.AOP;
using Mall.Common.Enum.MarketingCenter;
using System;
using System.Collections.Generic;
using System.Text;
namespace Mall.Model.Entity.MarketingCenter
{
[Serializable]
[DB(ConnectionName = "DefaultConnection")]
public class RB_DiscountCoupon_Product
{ /// <summary>
/// 价格
/// </summary>
public int DiscountCouponId { get; set; }
/// <summary>
/// 商品/分类id
/// </summary>
public int ProductId { get; set; }
public int ID { get; set; }
/// <summary>
/// 商户id
/// </summary>
public int TenantId { get; set; }
/// <summary>
/// 小程序id
/// </summary>
public int MallBaseId { get; set; }
public UseTypeEnum DiscountCouponType { get; set; }
public int Status { get; set; }
public DateTime CreateDate { get; set; }
public DateTime UpdateDate { get; set; }
}
}
...@@ -25,5 +25,10 @@ namespace Mall.Model.Extend.BaseSetUp ...@@ -25,5 +25,10 @@ namespace Mall.Model.Extend.BaseSetUp
/// 地区父级id /// 地区父级id
/// </summary> /// </summary>
public int ParentID { get; set; } public int ParentID { get; set; }
/// <summary>
/// 地区父级的父级id
/// </summary>
public int GrandpaID { get; set; }
} }
} }
using Mall.Common.AOP;
using Mall.Model.Entity.MarketingCenter;
using System;
using System.Collections.Generic;
using System.Text;
namespace Mall.Model.Extend.MarketingCenter
{
/// <summary>
/// 优惠券扩展实体
/// </summary>
[Serializable]
[DB(ConnectionName = "DefaultConnection")]
public class RB_Coupon_Extend : RB_Coupon
{
}
}
using Mall.Common.AOP;
using Mall.Model.Entity.MarketingCenter;
using System;
using System.Collections.Generic;
using System.Text;
namespace Mall.Model.Extend.MarketingCenter
{
/// <summary>
/// 优惠券扩展实体
/// </summary>
[Serializable]
[DB(ConnectionName = "DefaultConnection")]
public class RB_DiscountCoupon_Extend : RB_DiscountCoupon
{
/// <summary>
/// 商品/分类id
/// </summary>
public List<RB_DiscountCoupon_Product> ProductList { get; set; }
}
}
using Mall.Common.Plugin;
using Mall.Model.Entity.MarketingCenter;
using Mall.Model.Extend.MarketingCenter;
using Mall.Repository;
using Mall.Repository.MarketingCenter;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Mall.Module.MarketingCenter
{
public class CouponModule
{
private RB_CouponRepository couponRepository = new RB_CouponRepository();
private RB_DiscountCouponRepository discountCouponRepository = new RB_DiscountCouponRepository();
private RB_DiscountCoupon_ProductRepository productRepository = new RB_DiscountCoupon_ProductRepository();
#region 卡券列表
/// <summary>
/// 卡券信息列表
/// </summary>
/// <param name="pageIndex">页码</param>
/// <param name="pageSize">每页显示条数</param>
/// <param name="rowCount">总条数</param>
/// <param name="query">查询条件</param>
/// <returns></returns>
public List<RB_Coupon_Extend> GetCouponPageList(int pageIndex, int pageSize, out long rowCount, RB_Coupon_Extend query)
{
return couponRepository.GetCouponPageList(pageIndex, pageSize, out rowCount, query);
}
/// <summary>
/// 卡券信息列表
/// </summary>
/// <param name="query">查询条件</param>
/// <returns></returns>
public List<RB_Coupon_Extend> GetCouponList(RB_Coupon_Extend query)
{
return couponRepository.GetCouponList(query);
}
public bool AddOrUpdateCoupon(RB_Coupon_Extend model)
{
if (model.ID == 0)
{
return couponRepository.Insert(model) > 0;
}
else
{
return couponRepository.Update(model);
}
}
/// <summary>
/// 删除卡券
/// </summary>
/// <param name="gradeId"></param>
/// <param name="uid"></param>
/// <returns></returns>
public bool DelCoupon(int id, int uid, int mallBaseId)
{
try
{
Dictionary<string, object> cols = new Dictionary<string, object>()
{
{ nameof(RB_Coupon.Status),1},
{ nameof(RB_Coupon.UpdateDate),DateTime.Now},
};
List<WhereHelper> wheres1 = new List<WhereHelper>() {
new WhereHelper(){
FiledName=nameof(RB_Coupon.ID),
FiledValue=id,
OperatorEnum=OperatorEnum.Equal
},
new WhereHelper(){
FiledName=nameof(RB_Coupon.TenantId),
FiledValue=Convert.ToInt32(uid),
OperatorEnum=OperatorEnum.Equal
},
new WhereHelper(){
FiledName=nameof(RB_Coupon.MallBaseId),
FiledValue=Convert.ToInt32(mallBaseId),
OperatorEnum=OperatorEnum.Equal
}
};
return couponRepository.Update(cols, wheres1);
}
catch (Exception ex)
{
LogHelper.Write(ex, "DelCoupon");
return false;
}
}
#endregion
#region 优惠券
/// <summary>
/// 优惠券信息列表
/// </summary>
/// <param name="pageIndex">页码</param>
/// <param name="pageSize">每页显示条数</param>
/// <param name="rowCount">总条数</param>
/// <param name="query">查询条件</param>
/// <returns></returns>
public List<RB_DiscountCoupon_Extend> GetDiscountCouponPageList(int pageIndex, int pageSize, out long rowCount, RB_DiscountCoupon_Extend query)
{
return discountCouponRepository.GetDiscountCouponPageList(pageIndex, pageSize, out rowCount, query);
}
/// <summary>
/// 优惠券信息列表
/// </summary>
/// <param name="query">查询条件</param>
/// <returns></returns>
public List<RB_DiscountCoupon_Extend> GetDiscountCouponList(RB_DiscountCoupon_Extend query)
{
return discountCouponRepository.GetDiscountCouponList(query);
}
/// <summary>
/// 新增/修改优惠券
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
public bool AddOrUpdateDiscountCoupon(RB_DiscountCoupon_Extend model)
{
bool flag = false;
var trans = discountCouponRepository.DbTransaction;
try
{
int id = 0;
if (model.ID == 0)
{
id = discountCouponRepository.Insert(model, trans);
if (id > 0 && model.ProductList != null && model.ProductList.Any())
{
model.ProductList.ForEach(x => x.MallBaseId = model.MallBaseId);
model.ProductList.ForEach(x => x.TenantId = model.TenantId);
model.ProductList.ForEach(x => x.CreateDate = model.CreateDate);
model.ProductList.ForEach(x => x.UpdateDate = model.UpdateDate);
model.ProductList.ForEach(x => x.DiscountCouponId = id);
flag = productRepository.InsertBatch(model.ProductList, trans);
}
flag = id > 0;
}
else
{
id = model.ID;
flag = discountCouponRepository.Update(model, trans);
var listProduct = productRepository.GetCouponProductList(new RB_DiscountCoupon_Product { TenantId = model.TenantId, MallBaseId = model.MallBaseId, DiscountCouponId = id });
if (listProduct != null && listProduct.Any())
{
foreach (var item in model.ProductList)
{
IDictionary<string, object> fileds = new Dictionary<string, object>()
{
{ nameof(RB_DiscountCoupon_Product.Status),1},
{ nameof(RB_DiscountCoupon_Product.UpdateDate),model.UpdateDate},
};
IList<WhereHelper> whereHelpers = new List<WhereHelper>()
{
new WhereHelper (){ FiledName=nameof(RB_DiscountCoupon_Product.ID),FiledValue=item.ID,OperatorEnum=OperatorEnum.Equal}
};
flag = productRepository.Update(fileds, whereHelpers, trans);
}
}
if (model.ProductList != null && model.ProductList.Any())
{
model.ProductList.ForEach(x => x.MallBaseId = model.MallBaseId);
model.ProductList.ForEach(x => x.TenantId = model.TenantId);
model.ProductList.ForEach(x => x.CreateDate = model.CreateDate);
model.ProductList.ForEach(x => x.UpdateDate = model.UpdateDate);
model.ProductList.ForEach(x => x.DiscountCouponId = id);
flag = productRepository.InsertBatch(model.ProductList, trans);
}
}
discountCouponRepository.DBSession.Commit();
}
catch (Exception ex)
{
LogHelper.Write(ex, "AddOrUpdateDiscountCoupon");
discountCouponRepository.DBSession.Rollback("AddOrUpdateDiscountCoupon");
return false;
}
return flag;
}
/// <summary>
/// 删除优惠券
/// </summary>
/// <param name="gradeId"></param>
/// <param name="uid"></param>
/// <returns></returns>
public bool DelDiscountCoupon(int id, int uid, int mallBaseId)
{
try
{
Dictionary<string, object> cols = new Dictionary<string, object>()
{
{ nameof(RB_Coupon.Status),1},
{ nameof(RB_Coupon.UpdateDate),DateTime.Now},
};
List<WhereHelper> wheres1 = new List<WhereHelper>() {
new WhereHelper(){
FiledName=nameof(RB_Coupon.ID),
FiledValue=id,
OperatorEnum=OperatorEnum.Equal
},
new WhereHelper(){
FiledName=nameof(RB_Coupon.TenantId),
FiledValue=Convert.ToInt32(uid),
OperatorEnum=OperatorEnum.Equal
},
new WhereHelper(){
FiledName=nameof(RB_Coupon.MallBaseId),
FiledValue=Convert.ToInt32(mallBaseId),
OperatorEnum=OperatorEnum.Equal
}
};
return discountCouponRepository.Update(cols, wheres1);
}
catch (Exception ex)
{
LogHelper.Write(ex, "DelDiscountCoupon");
return false;
}
}
#endregion
}
}
...@@ -88,6 +88,20 @@ namespace Mall.Module.MarketingCenter ...@@ -88,6 +88,20 @@ namespace Mall.Module.MarketingCenter
return recordRepository.GetList(dmodel); return recordRepository.GetList(dmodel);
} }
/// <summary>
/// 数据统计-积分收支
/// </summary>
/// <param name="pageIndex">页码</param>
/// <param name="pageSize">每页显示条数</param>
/// <param name="rowCount">总条数</param>
/// <param name="query">查询条件</param>
/// <returns></returns>
public List<Integral_Query> GetExportIntegraStatisticslList(Integral_Query query)
{
return recordRepository.GetExportIntegraStatisticslList(query);
}
#endregion #endregion
} }
} }
...@@ -27,7 +27,9 @@ namespace Mall.Repository.BaseSetUp ...@@ -27,7 +27,9 @@ namespace Mall.Repository.BaseSetUp
public List<RB_Logistics_RulesRegion_Extend> GetListRepository(RB_Logistics_RulesRegion_Extend query) public List<RB_Logistics_RulesRegion_Extend> GetListRepository(RB_Logistics_RulesRegion_Extend query)
{ {
StringBuilder builder = new StringBuilder(); StringBuilder builder = new StringBuilder();
builder.Append($" SELECT a.*,b.`Name` as RegionName,b.ParentID FROM {TableName} as a LEFT JOIN {DestinationTableName} as b on a.RegionId=b.ID WHERE a.{nameof(RB_Logistics_RulesRegion_Extend.Status)}=0"); builder.Append(@$" SELECT a.*,b.`Name` as RegionName,b.ParentID,c.ParentID as GrandpaID FROM {TableName} as a
LEFT JOIN {DestinationTableName} as b on a.RegionId = b.ID
LEFT JOIN {DestinationTableName} as c on b.ParentID = c.ID WHERE a.{nameof(RB_Logistics_RulesRegion_Extend.Status)}=0");
if (query != null) if (query != null)
{ {
if (query.TenantId > 0) if (query.TenantId > 0)
......
using Mall.Model.Entity.MarketingCenter;
using Mall.Model.Extend.MarketingCenter;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Mall.Repository.MarketingCenter
{
/// <summary>
/// 优惠券仓储层
/// </summary>
public class RB_CouponRepository : RepositoryBase<RB_Coupon>
{
/// <summary>
/// 表名称
/// </summary>
public string TableName { get { return nameof(RB_Coupon); } }
/// <summary>
/// 卡券信息列表
/// </summary>
/// <param name="pageIndex">页码</param>
/// <param name="pageSize">每页显示条数</param>
/// <param name="rowCount">总条数</param>
/// <param name="query">查询条件</param>
/// <returns></returns>
public List<RB_Coupon_Extend> GetCouponPageList(int pageIndex, int pageSize, out long rowCount, RB_Coupon_Extend query)
{
StringBuilder builder = new StringBuilder();
builder.Append($" SELECT * FROM {TableName} WHERE {nameof(RB_Coupon_Extend.Status)}=0");
if (query != null)
{
if (query.TenantId > 0)
{
builder.Append($" AND {nameof(RB_Coupon_Extend.TenantId)}={query.TenantId}");
}
if (query.TenantId > 0)
{
builder.Append($" AND {nameof(RB_Coupon_Extend.MallBaseId)}={query.MallBaseId}");
}
if (!string.IsNullOrWhiteSpace(query.Name))
{
builder.Append($" AND {nameof(RB_Coupon_Extend.Name)} like '%{query.Name}%'");
}
}
return GetPage<RB_Coupon_Extend>(pageIndex, pageSize, out rowCount, builder.ToString()).ToList();
}
/// <summary>
/// 卡券信息列表
/// </summary>
/// <param name="query">查询条件</param>
/// <returns></returns>
public List<RB_Coupon_Extend> GetCouponList(RB_Coupon_Extend query)
{
StringBuilder builder = new StringBuilder();
builder.Append($" SELECT * FROM {TableName} WHERE {nameof(RB_Coupon_Extend.Status)}=0 ");
if (query != null)
{
if (query.ID > 0)
{
builder.Append($" AND {nameof(RB_Coupon_Extend.ID)}={query.ID}");
}
if (query.TenantId > 0)
{
builder.Append($" AND {nameof(RB_Coupon_Extend.TenantId)}={query.TenantId}");
}
if (query.TenantId > 0)
{
builder.Append($" AND {nameof(RB_Coupon_Extend.MallBaseId)}={query.MallBaseId}");
}
if (!string.IsNullOrWhiteSpace(query.Name))
{
builder.Append($" AND {nameof(RB_Coupon_Extend.Name)} like '%{query.Name}%'");
}
}
return Get<RB_Coupon_Extend>(builder.ToString()).ToList();
}
}
}
using Mall.Model.Entity.MarketingCenter;
using Mall.Model.Extend.MarketingCenter;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Mall.Repository.MarketingCenter
{
public class RB_DiscountCouponRepository:RepositoryBase<RB_DiscountCoupon>
{
/// <summary>
/// 表名称
/// </summary>
public string TableName { get { return nameof(RB_DiscountCoupon); } }
/// <summary>
/// 卡券信息列表
/// </summary>
/// <param name="pageIndex">页码</param>
/// <param name="pageSize">每页显示条数</param>
/// <param name="rowCount">总条数</param>
/// <param name="query">查询条件</param>
/// <returns></returns>
public List<RB_DiscountCoupon_Extend> GetDiscountCouponPageList(int pageIndex, int pageSize, out long rowCount, RB_DiscountCoupon_Extend query)
{
StringBuilder builder = new StringBuilder();
builder.Append($" SELECT * FROM {TableName} WHERE {nameof(RB_DiscountCoupon_Extend.Status)}=0");
if (query != null)
{
if (query.TenantId > 0)
{
builder.Append($" AND {nameof(RB_DiscountCoupon_Extend.TenantId)}={query.TenantId}");
}
if (query.TenantId > 0)
{
builder.Append($" AND {nameof(RB_DiscountCoupon_Extend.MallBaseId)}={query.MallBaseId}");
}
if (!string.IsNullOrWhiteSpace(query.Name))
{
builder.Append($" AND {nameof(RB_DiscountCoupon_Extend.Name)} like '%{query.Name}%'");
}
}
return GetPage<RB_DiscountCoupon_Extend>(pageIndex, pageSize, out rowCount, builder.ToString()).ToList();
}
/// <summary>
/// 卡券信息列表
/// </summary>
/// <param name="query">查询条件</param>
/// <returns></returns>
public List<RB_DiscountCoupon_Extend> GetDiscountCouponList(RB_DiscountCoupon_Extend query)
{
StringBuilder builder = new StringBuilder();
builder.Append($" SELECT * FROM {TableName} WHERE {nameof(RB_DiscountCoupon_Extend.Status)}=0 ");
if (query != null)
{
if (query.ID > 0)
{
builder.Append($" AND {nameof(RB_DiscountCoupon_Extend.ID)}={query.ID}");
}
if (query.TenantId > 0)
{
builder.Append($" AND {nameof(RB_DiscountCoupon_Extend.TenantId)}={query.TenantId}");
}
if (query.TenantId > 0)
{
builder.Append($" AND {nameof(RB_DiscountCoupon_Extend.MallBaseId)}={query.MallBaseId}");
}
if (!string.IsNullOrWhiteSpace(query.Name))
{
builder.Append($" AND {nameof(RB_DiscountCoupon_Extend.Name)} like '%{query.Name}%'");
}
}
return Get<RB_DiscountCoupon_Extend>(builder.ToString()).ToList();
}
}
}
using Mall.Model.Entity.MarketingCenter;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Mall.Repository.MarketingCenter
{
public class RB_DiscountCoupon_ProductRepository : RepositoryBase<RB_DiscountCoupon_Product>
{
/// <summary>
/// 表名称
/// </summary>
public string TableName { get { return nameof(RB_DiscountCoupon_Product); } }
/// <summary>
/// 优惠券对应的商品/分类列表
/// </summary>
/// <param name="query">查询条件</param>
/// <returns></returns>
public List<RB_DiscountCoupon_Product> GetCouponProductList(RB_DiscountCoupon_Product query)
{
StringBuilder builder = new StringBuilder();
builder.Append($" SELECT * FROM {TableName} WHERE {nameof(RB_DiscountCoupon_Product.Status)}=0 ");
if (query != null)
{
if (query.ID > 0)
{
builder.Append($" AND {nameof(RB_DiscountCoupon_Product.ID)}={query.ID}");
}
if (query.TenantId > 0)
{
builder.Append($" AND {nameof(RB_DiscountCoupon_Product.TenantId)}={query.TenantId}");
}
if (query.TenantId > 0)
{
builder.Append($" AND {nameof(RB_DiscountCoupon_Product.MallBaseId)}={query.MallBaseId}");
}
if (query.DiscountCouponId > 0)
{
builder.Append($" AND {nameof(RB_DiscountCoupon_Product.DiscountCouponId)}={query.DiscountCouponId}");
}
}
return Get<RB_DiscountCoupon_Product>(builder.ToString()).ToList();
}
}
}
...@@ -174,5 +174,48 @@ select DATE_FORMAT(CreateDate, '%Y-%m-%d') as CreateDate, 0 as Income, Integral ...@@ -174,5 +174,48 @@ select DATE_FORMAT(CreateDate, '%Y-%m-%d') as CreateDate, 0 as Income, Integral
) as t GROUP BY CreateDate "; ) as t GROUP BY CreateDate ";
return GetPage<Integral_Query>(pageIndex, pageSize, out rowCount, sql).ToList(); return GetPage<Integral_Query>(pageIndex, pageSize, out rowCount, sql).ToList();
} }
/// <summary>
/// 数据统计-积分收支
/// </summary>
/// <param name="pageIndex">页码</param>
/// <param name="pageSize">每页显示条数</param>
/// <param name="rowCount">总条数</param>
/// <param name="query">查询条件</param>
/// <returns></returns>
public List<Integral_Query> GetExportIntegraStatisticslList(Integral_Query query)
{
StringBuilder builder = new StringBuilder();
if (query != null)
{
if (query.TenantId > 0)
{
builder.Append($" AND {nameof(RB_Member_Integral_Extend.TenantId)}={query.TenantId}");
}
if (query.TenantId > 0)
{
builder.Append($" AND {nameof(RB_Member_Integral_Extend.MallBaseId)}={query.MallBaseId}");
}
if (query.PlatformType > 0)
{
builder.Append($" AND {nameof(RB_Member_Integral_Extend.PlatformType)}={query.PlatformType}");
}
if (!string.IsNullOrWhiteSpace(query.StartDate))
{
builder.Append($" AND DATE_FORMAT({nameof(RB_Member_Integral_Extend.CreateDate)},'%Y-%m-%d' )>= DATE_FORMAT('{nameof(RB_Member_Integral_Extend.StartDate)}','%Y-%m-%d' )");
}
if (!string.IsNullOrWhiteSpace(query.EndDate))
{
builder.Append($" AND DATE_FORMAT({nameof(RB_Member_Integral_Extend.CreateDate)},'%Y-%m-%d' )<= DATE_FORMAT('{nameof(RB_Member_Integral_Extend.EndDate)}','%Y-%m-%d' )");
}
}
string sql = @$" SELECT CreateDate,SUM(Income) as Income, SUM(Expend) as Expend from (
select DATE_FORMAT(CreateDate, '%Y-%m-%d') as CreateDate, Integral as Income, 0 as Expend from rb_member_integral where Type = 1 {builder.ToString()}
union all
select DATE_FORMAT(CreateDate, '%Y-%m-%d') as CreateDate, 0 as Income, Integral as Expend from rb_member_integral where Type = 2 {builder.ToString()}
) as t GROUP BY CreateDate ";
return Get<Integral_Query>(sql).ToList();
}
} }
} }
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Mall.Common.API;
using Mall.Common.Plugin;
using Mall.Model.Extend.MarketingCenter;
using Mall.Module.MarketingCenter;
using Mall.WebApi.Filter;
using Microsoft.AspNetCore.Cors;
using Microsoft.AspNetCore.Mvc;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
namespace Mall.WebApi.Controllers.MarketingCenter
{
[Route("api/[controller]/[action]")]
[ApiExceptionFilter]
[ApiController]
[EnableCors("AllowCors")]
public class CouponController : BaseController
{
private CouponModule IntegralModule = new CouponModule();
#region 卡券
[HttpPost]
public ApiResult GetCouponPageList()
{
var parms = RequestParm;
ResultPageModel pagelist = JsonConvert.DeserializeObject<ResultPageModel>(RequestParm.msg.ToString());
RB_Coupon_Extend demodel = JsonConvert.DeserializeObject<RB_Coupon_Extend>(RequestParm.msg.ToString());
demodel.TenantId = UserInfo.TenantId;
demodel.MallBaseId = parms.MallBaseId;
var list = IntegralModule.GetCouponPageList(pagelist.pageIndex, pagelist.pageSize, out long count, demodel);
pagelist.count = Convert.ToInt32(count);
pagelist.pageData = list.Select(x => new
{
x.ID,
x.Name,
x.HeXiao,
x.CouponIco,
x.StartDate,
x.IndateType,
x.IndateDay,
x.EndDate,
CreateDate = x.CreateDate.ToString("yyyy-MM-dd HH:mm:ss")
});
return ApiResult.Success("", pagelist);
}
/// <summary>
/// 获取详情
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult GetCouponDetail()
{
var parms = RequestParm;
var query = JsonConvert.DeserializeObject<RB_Coupon_Extend>(RequestParm.msg.ToString());
query.TenantId = UserInfo.TenantId;
query.MallBaseId = parms.MallBaseId;
var oldLogisticsModel = IntegralModule.GetCouponList(query).FirstOrDefault();
if (oldLogisticsModel == null)
{
oldLogisticsModel = new RB_Coupon_Extend();
oldLogisticsModel.IndateType = Common.Enum.MarketingCenter.IndateTypeEnum.DayHorizon;
}
return ApiResult.Success("", oldLogisticsModel);
}
/// <summary>
/// 保存物流信息
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult AddOrUpdateCoupon()
{
var parms = RequestParm;
var query = JsonConvert.DeserializeObject<RB_Coupon_Extend>(RequestParm.msg.ToString());
query.TenantId = UserInfo.TenantId;
query.MallBaseId = parms.MallBaseId;
if (query == null)
{
return ApiResult.Failed("请传入卡券信息");
}
else
{
if (string.IsNullOrWhiteSpace(query.Name))
{
return ApiResult.Failed("请输入卡券名称");
}
if (string.IsNullOrWhiteSpace(query.CouponIco))
{
return ApiResult.Failed("请输入卡券图标");
}
if (query.IndateType == Common.Enum.MarketingCenter.IndateTypeEnum.DayHorizon)
{
if (query.IndateDay == 0)
{
return ApiResult.Failed("请输入有效期天数");
}
}
else
{
if (!query.StartDate.HasValue || !query.EndDate.HasValue)
{
return ApiResult.Failed("开始日期或结束日期必填");
}
if (query.StartDate < query.EndDate)
{
return ApiResult.Failed("开始日期必须小于结束日期");
}
}
if (query.HeXiao == 0)
{
return ApiResult.Failed("请输入核销总次数");
}
if (query.TotalNum == 0)
{
return ApiResult.Failed("请输入可发放数量");
}
if (string.IsNullOrWhiteSpace(query.Describe))
{
return ApiResult.Failed("请输入卡券描述");
}
if (query.ID == 0)
{
query.CreateDate = System.DateTime.Now;
}
query.UpdateDate = System.DateTime.Now;
bool result = IntegralModule.AddOrUpdateCoupon(query);
if (result)
{
return ApiResult.Success("卡券信息保存成功");
}
else
{
return ApiResult.Failed("卡券信息保存失败");
}
}
}
/// <summary>
/// 删除卡券
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult DelRules()
{
var parms = RequestParm;
JObject parmsJob = JObject.Parse(RequestParm.msg.ToString());
int Id = parmsJob.GetInt("Id", 0);
if (Id <= 0)
{
return ApiResult.Failed("请传递参数");
}
bool flag = IntegralModule.DelCoupon(Id, UserInfo.TenantId, parms.MallBaseId);
if (flag)
{
return ApiResult.Success();
}
else
{
return ApiResult.Failed();
}
}
#endregion
#region 优惠券
[HttpPost]
public ApiResult GetDiscountCouponPageList()
{
var parms = RequestParm;
ResultPageModel pagelist = JsonConvert.DeserializeObject<ResultPageModel>(RequestParm.msg.ToString());
RB_DiscountCoupon_Extend demodel = JsonConvert.DeserializeObject<RB_DiscountCoupon_Extend>(RequestParm.msg.ToString());
demodel.TenantId = UserInfo.TenantId;
demodel.MallBaseId = parms.MallBaseId;
var list = IntegralModule.GetDiscountCouponPageList(pagelist.pageIndex, pagelist.pageSize, out long count, demodel);
pagelist.count = Convert.ToInt32(count);
pagelist.pageData = list.Select(x => new
{
x.ID,
x.Name,
x.MinConsumePrice,
x.DiscountsPrice,
x.UseType,
x.CouponType,
x.StartDate,
x.IndateType,
x.IndateDay,
x.EndDate,
x.TotalNum,
ResidueNum = x.TotalNum - x.ReceiveNum,
x.PickupType
});
return ApiResult.Success("", pagelist);
}
/// <summary>
/// 获取详情
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult GetDiscountCouponDetail()
{
var parms = RequestParm;
var query = JsonConvert.DeserializeObject<RB_DiscountCoupon_Extend>(RequestParm.msg.ToString());
query.TenantId = UserInfo.TenantId;
query.MallBaseId = parms.MallBaseId;
var oldLogisticsModel = IntegralModule.GetDiscountCouponList(query).FirstOrDefault();
if (oldLogisticsModel == null)
{
oldLogisticsModel = new RB_DiscountCoupon_Extend();
oldLogisticsModel.IndateType = Common.Enum.MarketingCenter.IndateTypeEnum.DayHorizon;
}
return ApiResult.Success("", oldLogisticsModel);
}
/// <summary>
/// 保存优惠券
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult AddOrUpdateDiscountCoupon()
{
var parms = RequestParm;
var query = JsonConvert.DeserializeObject<RB_DiscountCoupon_Extend>(RequestParm.msg.ToString());
query.TenantId = UserInfo.TenantId;
query.MallBaseId = parms.MallBaseId;
if (query == null)
{
return ApiResult.Failed("请传入卡券信息");
}
else
{
if (string.IsNullOrWhiteSpace(query.Name))
{
return ApiResult.Failed("请输入卡券名称");
}
if (query.IndateType == Common.Enum.MarketingCenter.IndateTypeEnum.DayHorizon)
{
if (query.IndateDay == 0)
{
return ApiResult.Failed("请输入有效期天数");
}
}
else
{
if (!query.StartDate.HasValue || !query.EndDate.HasValue)
{
return ApiResult.Failed("开始日期或结束日期必填");
}
if (query.StartDate < query.EndDate)
{
return ApiResult.Failed("开始日期必须小于结束日期");
}
}
if (query.UseType == Common.Enum.MarketingCenter.UseTypeEnum.Category || query.UseType == Common.Enum.MarketingCenter.UseTypeEnum.Product)
{
if (query.ProductList == null || !query.ProductList.Any())
{
return ApiResult.Failed(query.UseType == Common.Enum.MarketingCenter.UseTypeEnum.Category?"请选择商品类别": "请选择商品");
}
}
if (query.TotalNum == 0)
{
return ApiResult.Failed("请输入可发放数量");
}
if (string.IsNullOrWhiteSpace(query.Describe))
{
return ApiResult.Failed("请输入卡券描述");
}
if (query.ID == 0)
{
query.CreateDate = System.DateTime.Now;
}
query.UpdateDate = System.DateTime.Now;
bool result = IntegralModule.AddOrUpdateDiscountCoupon(query);
if (result)
{
return ApiResult.Success("优惠券信息保存成功");
}
else
{
return ApiResult.Failed("优惠券信息保存失败");
}
}
}
/// <summary>
/// 删除优惠券
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult DelDiscountCoupon()
{
var parms = RequestParm;
JObject parmsJob = JObject.Parse(RequestParm.msg.ToString());
int Id = parmsJob.GetInt("Id", 0);
if (Id <= 0)
{
return ApiResult.Failed("请传递参数");
}
bool flag = IntegralModule.DelDiscountCoupon(Id, UserInfo.TenantId, parms.MallBaseId);
if (flag)
{
return ApiResult.Success();
}
else
{
return ApiResult.Failed();
}
}
#endregion
}
}
\ No newline at end of file
...@@ -3,6 +3,7 @@ using System.Collections.Generic; ...@@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Threading.Tasks; using System.Threading.Tasks;
using Mall.Common.API; using Mall.Common.API;
using Mall.Common.Plugin;
using Mall.Model.Entity.MarketingCenter; using Mall.Model.Entity.MarketingCenter;
using Mall.Model.Extend.MarketingCenter; using Mall.Model.Extend.MarketingCenter;
using Mall.Model.Extend.User; using Mall.Model.Extend.User;
...@@ -157,6 +158,64 @@ namespace Mall.WebApi.Controllers.MarketingCenter ...@@ -157,6 +158,64 @@ namespace Mall.WebApi.Controllers.MarketingCenter
} }
return ApiResult.Success("", new { model.Income, model.Expend }); return ApiResult.Success("", new { model.Income, model.Expend });
} }
/// <summary>
/// 积分收支信息下载
/// </summary>
[HttpPost]
public FileContentResult GetIntegralListToExcel()
{
var parms = RequestParm;
Integral_Query demodel = JsonConvert.DeserializeObject<Integral_Query>(parms.msg.ToString());
string ExcelName = "积分收支" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xls";
List<ExcelDataSource> slist = new List<ExcelDataSource>();
ExcelDataSource header = new ExcelDataSource()
{
ExcelRows = new List<ExcelColumn>(30) {
new ExcelColumn(value: "序号") { CellWidth = 15, HAlignmentEnum = HAlignmentEnum.CENTER, VAlignmentEnum = VAlignmentEnum.CENTER },
new ExcelColumn(value: "日期") { CellWidth = 15, HAlignmentEnum = HAlignmentEnum.CENTER, VAlignmentEnum = VAlignmentEnum.CENTER },
new ExcelColumn(value: "积分收入") { CellWidth = 15, HAlignmentEnum = HAlignmentEnum.CENTER, VAlignmentEnum = VAlignmentEnum.CENTER },
new ExcelColumn(value: "积分支出") { CellWidth = 15, HAlignmentEnum = HAlignmentEnum.CENTER, VAlignmentEnum = VAlignmentEnum.CENTER }
},
};
slist.Add(header);
try
{
demodel.TenantId = Convert.ToInt32(parms.uid);
demodel.MallBaseId = parms.MallBaseId;
var list = IntegralModule.GetExportIntegraStatisticslList(demodel);
#region 组装数据
int Num = 0;
foreach (var item in list)
{
Num++;
ExcelDataSource datarow = new ExcelDataSource()
{
ExcelRows = new List<ExcelColumn>(30) {
new ExcelColumn(value:Num.ToString()){ },
}
};
datarow.ExcelRows.Add(new ExcelColumn(value: item.CreateDate) { });
datarow.ExcelRows.Add(new ExcelColumn(value: item.Income) { });
datarow.ExcelRows.Add(new ExcelColumn(value: item.Expend) { });
slist.Add(datarow);
}
#endregion
var byteData = ExcelTempLateHelper.ToExcelExtend(slist);
return File(byteData, "application/octet-stream", ExcelName);
}
catch (Exception ex)
{
LogHelper.Write(ex, string.Format("GetFileFromWebApi_requestData: {0}", JsonHelper.Serialize(RequestParm)));
var byteData1 = ExcelTempLateHelper.ToExcelExtend(slist);
return File(byteData1, "application/octet-stream", ExcelName);
}
}
#endregion #endregion
} }
} }
\ No newline at end of file
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