Commit 16e0f05c authored by 吴春's avatar 吴春

提交代码

parent e0aded45
......@@ -68,5 +68,10 @@ namespace Mall.Common.Enum.MallBase
/// </summary>
[EnumField("热情红")]
PassionateRed = 9,
/// <summary>
/// 校园
/// </summary>
[EnumField("校园")]
Education = 10,
}
}
......@@ -33,6 +33,12 @@ namespace Mall.Model.Entity.Education
public DateTime UpdateDate { get; set; }
/// <summary>
/// 关联讲师
/// </summary>
public int TeacherId { get; set; }
/// <summary>
/// 资讯状态 1上架 2下架
/// </summary>
......@@ -95,6 +101,12 @@ namespace Mall.Model.Entity.Education
public string LableName { get; set; }
/// <summary>
/// 图片
/// </summary>
public string ArticlePic { get; set; }
/// <summary>
/// 是否可以留言,0-否,1-是
/// </summary>
......@@ -107,6 +119,6 @@ namespace Mall.Model.Entity.Education
public string Describe { get; set; }
}
}
......@@ -26,5 +26,26 @@ namespace Mall.Model.Extend.Education
/// 评论数
/// </summary>
public int CommentNum { get; set; }
public string Ids { get; set; }
public int OrderBy { get; set; }
/// <summary>
/// 讲师名称
/// </summary>
public string TeacherName { get; set; }
/// <summary>
/// 头像
/// </summary>
public string TeacherLogo { get; set; }
/// <summary>
/// 专业
/// </summary>
public string Major { get; set; }
}
}
......@@ -6,7 +6,7 @@ using VT.FW.DB;
namespace Mall.Model.Extend.Education
{
/// <summary>
/// 优惠券扩展实体
/// 课程卡扩展实体
/// </summary>
[Serializable]
[DB(ConnectionName = "DefaultConnection")]
......@@ -98,5 +98,7 @@ namespace Mall.Model.Extend.Education
/// 微店名称
/// </summary>
public string SmallShopName { get; set; }
public DateTime? RegisterDate { get; set; }
}
}
......@@ -2221,8 +2221,7 @@ namespace Mall.Model.Extend.MarketingCenter
}
#region 教育模块
/// <summary>
/// 教育模块-最近学习组件
/// </summary>
......@@ -2237,12 +2236,11 @@ namespace Mall.Model.Extend.MarketingCenter
/// 课程名称
/// </summary>
public string Name { get; set; }
/// <summary>
/// 进度
/// 显示进度
/// </summary>
public string Progress { get; set; }
public bool showProgress { get; set; }
/// <summary>
......@@ -2271,4 +2269,180 @@ namespace Mall.Model.Extend.MarketingCenter
/// </summary>
public string BtnPosition { get; set; }
}
/// <summary>
///新增教育模块-自定义列表
/// </summary>
public class educationCustomItem
{
/// <summary>
/// 商品数量
/// </summary>
public int goodsLength { get; set; }
/// <summary>
/// 列表样式[-1-列表模式,0-左右滑动,1-一行一个,2-一行两个3-一行三个]
/// </summary>
public int listStyle { get; set; }
/// <summary>
/// 背景颜色
/// </summary>
public string backgroundColor { get; set; }
/// <summary>
/// 上边距
/// </summary>
public string PaddingTop { get; set; }
/// <summary>
/// 下边距
/// </summary>
public string PaddingBottom { get; set; }
/// <summary>
/// 左边距
/// </summary>
public string PaddingLeft { get; set; }
/// <summary>
/// 右边距
/// </summary>
public string PaddingRight { get; set; }
/// <summary>
/// 搜索圆角像素
/// </summary>
public int SearchFilletPX
{
get;
set;
}
/// <summary>
/// 自定义列表
/// </summary>
public List<CustomDetailsItem2> list { get; set; }
}
/// <summary>
/// 商品详情项
/// </summary>
public class CustomDetailsItem2
{
/// <summary>
/// 商品编号
/// </summary>
public int id { get; set; }
/// <summary>
/// 标题
/// </summary>
public string name { get; set; }
/// <summary>
/// 副标题
/// </summary>
public string lableName { get; set; }
/// <summary>
/// 商品图片
/// </summary>
public string picUrl { get; set; }
/// <summary>
/// 链接
/// </summary>
public string linkUrl { get; set; }
///// <summary>
///// 售价
///// </summary>
//public decimal price { get; set; }
///// <summary>
///// 【原价】前端使用
///// </summary>
//public decimal OriginalPrice { get; set; }
}
/// <summary>
///教育模块-资讯列表
/// </summary>
public class educationArticleItem
{
/// <summary>
/// 商品数量
/// </summary>
public int goodsLength { get; set; }
/// <summary>
/// 商品添加方式【0-自定义,1-最新】
/// </summary>
public int addGoodsType { get; set; }
/// <summary>
/// 列表样式[-1-列表模式,0-左右滑动,1-一行一个]
/// </summary>
public int listStyle { get; set; }
/// <summary>
/// 背景颜色
/// </summary>
public string backgroundColor { get; set; }
/// <summary>
/// 上边距
/// </summary>
public string PaddingTop { get; set; }
/// <summary>
/// 下边距
/// </summary>
public string PaddingBottom { get; set; }
/// <summary>
/// 左边距
/// </summary>
public string PaddingLeft { get; set; }
/// <summary>
/// 右边距
/// </summary>
public string PaddingRight { get; set; }
/// <summary>
/// 搜索圆角像素
/// </summary>
public int SearchFilletPX
{
get;
set;
}
/// <summary>
/// 自定义列表
/// </summary>
public List<CustomDetailsItem2> list { get; set; }
}
#endregion
}
\ No newline at end of file
......@@ -835,6 +835,7 @@ namespace Mall.Module.Education
}
/// <summary>
///资讯列表
/// </summary>
......@@ -887,6 +888,7 @@ namespace Mall.Module.Education
{ nameof(RB_Education_Article_Extend.FictitiousBrowseNum),model.FictitiousBrowseNum},
{ nameof(RB_Education_Article_Extend.ShelvesDate),model.ShelvesDate},
{ nameof(RB_Education_Article_Extend.Sort),model.Sort},
{ nameof(RB_Education_Article_Extend.ArticlePic),model.ArticlePic},
};
List<WhereHelper> wheres = new List<WhereHelper>() {
new WhereHelper(){
......@@ -1128,5 +1130,122 @@ namespace Mall.Module.Education
}
#endregion
#region 自动发放给会员优惠券
/// <summary>
/// 自动给会员发放优惠券
/// </summary>
/// <param name="userId"></param>
/// <param name="getType">1-分享,2-购买并付款,3-新人领券</param>
/// <returns></returns>
public RB_Education_Coupon_Extend AutoEducationCoupon(RB_Education_Coupon_Extend model)
{
RB_Education_Coupon_Extend resultModel = new RB_Education_Coupon_Extend();
//先查找会员是否存在
var memberUserModel = member_UserRepository.GetEntity(model.UserId);
if (memberUserModel == null)
{
return resultModel;
}
//根据发放类型获取对应的优惠券信息
model.SmallShopId = memberUserModel.SmallShopId;
if (model.TriggerType == 4)
{
model.RegisterDate = memberUserModel.CreateDate;
}
var couponList = discountCouponRepository.GetSelfmotionCouponList(model);
if (couponList != null && couponList.Any(x => x.TotalNum == -1 || x.TotalNum > 0))//存在满足条件的优惠券可以发放
{
bool isReceive = false;
//查询已发放的优惠券信息
var memberCouponList = memberCouponRepository.GetAutoMemberCouponPageList(new RB_Education_MemberCoupon_Extend { UserId = model.UserId, GetType = model.TriggerType, TenantId = model.TenantId, MallBaseId = model.MallBaseId });
foreach (var item in couponList.Where(x => x.TotalNum == -1 || x.TotalNum > 0))//判断当前优惠券是否已超过领取数
{
int membercouponCoun = memberCouponList.Where(x => x.CouponId == item.ID).Count();
if (!isReceive && membercouponCoun < item.GrantNum)//此次没有领取,并且当前优惠券没有超过领取数量
{
var trans = memberCouponRepository.DbTransaction;
try
{
RB_Education_MemberCoupon nowMemberCoupon = new RB_Education_MemberCoupon
{
Id = 0,
TenantId = item.TenantId,
MallBaseId = item.MallBaseId,
Status = 0,
CreateDate = System.DateTime.Now,
UserId = model.UserId,
Description = item.TriggerType == 1 ? "分享自动发放优惠券" : (item.TriggerType == 2 ? "购买并付款自动发放优惠券" : (item.TriggerType == 3 ? "新人领劵自动发放优惠券" : "新人购买并付款自动发放优惠券")),
Remarks = item.TriggerType == 1 ? "分享" : (item.TriggerType == 2 ? "购买并付款" : (item.TriggerType == 3 ? "新人领劵" : "新人购买并付款")),
CouponId = item.ID,
StartDate = item.IndateType == Common.Enum.MarketingCenter.IndateTypeEnum.DayHorizon ? System.DateTime.Now : item.StartDate,
EndDate = item.IndateType == Common.Enum.MarketingCenter.IndateTypeEnum.DayHorizon ? System.DateTime.Now.AddDays(item.IndateDay) : item.EndDate,
GetType = item.TriggerType,
UseType = item.UseType,
Name = item.Name,
HeXiao=item.HeXiao,
UseHeXiao=0
};
isReceive = memberCouponRepository.Insert(nowMemberCoupon, trans) > 0;
if (isReceive)//更新当前优惠券的领取数量
{
Dictionary<string, object> cols1;
if (item.TotalNum != -1)
{
cols1 = new Dictionary<string, object>()
{
{ nameof(RB_Education_Coupon.ReceiveNum),item.ReceiveNum+1},
{ nameof(RB_Education_Coupon.TotalNum),item.TotalNum - 1},
{ nameof(RB_Education_Coupon.UpdateDate),DateTime.Now},
};
}
else
{
cols1 = new Dictionary<string, object>()
{
{ nameof(RB_Education_Coupon.ReceiveNum),item.ReceiveNum+1},
{ nameof(RB_Education_Coupon.UpdateDate),DateTime.Now},
};
}
List<WhereHelper> wheres1 = new List<WhereHelper>()
{
new WhereHelper(){
FiledName=nameof(RB_Education_Coupon.ID),
FiledValue=item.ID,
OperatorEnum=OperatorEnum.Equal
},
new WhereHelper(){
FiledName=nameof(RB_Education_Coupon.TenantId),
FiledValue=item.TenantId,
OperatorEnum=OperatorEnum.Equal
},
new WhereHelper(){
FiledName=nameof(RB_Education_Coupon.MallBaseId),
FiledValue=item.MallBaseId,
OperatorEnum=OperatorEnum.Equal
}
};
discountCouponRepository.Update(cols1, wheres1, trans);
}
memberCouponRepository.DBSession.Commit();
return item;
}
catch (Exception ex)
{
LogHelper.Write(ex, "AutoEducationCoupon");
memberCouponRepository.DBSession.Rollback("AutoEducationCoupon");
return resultModel;
}
}
}
}
return resultModel;
}
#endregion
}
}
......@@ -438,6 +438,82 @@ namespace Mall.Module.MarketingCenter
}
item.data = driveModel;
break;
//教育模块-最近学习组件
case "education":
educationItem educationModel = new educationItem();
try
{
var driveData = JsonHelper.DeserializeObject<educationItem>(item.data.ToString());
if (driveData != null)
{
educationModel.Cover = driveData?.Cover ?? "";
educationModel.Name = driveData?.Name ?? "";
educationModel.showProgress = driveData?.showProgress ?? false;
educationModel.BtnPosition = driveData?.BtnPosition ?? "left";
educationModel.PaddingTop = driveData?.PaddingTop ?? "0";
educationModel.PaddingBottom = driveData?.PaddingBottom ?? "0";
educationModel.PaddingLeft = driveData?.PaddingLeft ?? "0";
educationModel.PaddingRight = driveData?.PaddingRight ?? "0";
}
}
catch
{
}
item.data = educationModel;
break;
//教育模块-自定义列表
case "educationCustom":
educationCustomItem educationCustomModel = new educationCustomItem();
try
{
var driveData = JsonHelper.DeserializeObject<educationCustomItem>(item.data.ToString());
if (driveData != null)
{
educationCustomModel.goodsLength = driveData?.goodsLength ?? 1;
educationCustomModel.listStyle = driveData?.listStyle ?? 1;
educationCustomModel.backgroundColor = driveData?.backgroundColor ?? "";
educationCustomModel.PaddingTop = driveData?.PaddingTop ?? "0";
educationCustomModel.PaddingBottom = driveData?.PaddingBottom ?? "0";
educationCustomModel.PaddingLeft = driveData?.PaddingLeft ?? "0";
educationCustomModel.PaddingRight = driveData?.PaddingRight ?? "0";
educationCustomModel.SearchFilletPX = driveData?.SearchFilletPX ?? 0;
educationCustomModel.list = new List<CustomDetailsItem2>();
educationCustomModel.list = driveData.list;
}
}
catch
{
}
item.data = educationCustomModel;
break;
//教育模块-资讯列表
case "educationArticle":
educationArticleItem educationArticleModel = new educationArticleItem();
try
{
var driveData = JsonHelper.DeserializeObject<educationArticleItem>(item.data.ToString());
if (driveData != null)
{
educationArticleModel.goodsLength = driveData?.goodsLength ?? 1;
educationArticleModel.addGoodsType = driveData?.addGoodsType ?? 0;
educationArticleModel.listStyle = driveData?.listStyle ?? 1;
educationArticleModel.backgroundColor = driveData?.backgroundColor ?? "";
educationArticleModel.PaddingTop = driveData?.PaddingTop ?? "0";
educationArticleModel.PaddingBottom = driveData?.PaddingBottom ?? "0";
educationArticleModel.PaddingLeft = driveData?.PaddingLeft ?? "0";
educationArticleModel.PaddingRight = driveData?.PaddingRight ?? "0";
educationArticleModel.SearchFilletPX = driveData?.SearchFilletPX ?? 0;
educationArticleModel.list = new List<CustomDetailsItem2>();
educationArticleModel.list = driveData.list;
}
}
catch
{
}
item.data = educationArticleModel;
break;
}
}
......
......@@ -259,61 +259,68 @@ namespace Mall.Module.Finance
foreach (var item in model.RecordDetailList)
{
Dictionary<string, object> keyValues = new Dictionary<string, object>();
if (list.Any(x=>x.Id==item.OrderDetailId && x.FinanceType==1)&& list.Any(x => x.Id == item.OrderDetailId && x.FinanceType == 2))
try
{
keyValues = new Dictionary<string, object>()
Dictionary<string, object> keyValues = new Dictionary<string, object>();
if (list.Any(x => x.Id == item.OrderDetailId && x.FinanceType == 1) && list.Any(x => x.Id == item.OrderDetailId && x.FinanceType == 2))
{
keyValues = new Dictionary<string, object>()
{
{ nameof(RB_Goods_OrderDetail.CostFinanceId),model.FinanceId},
{ nameof(RB_Goods_OrderDetail.FreightFinanceId),model.FinanceId},
{ nameof(RB_Goods_OrderDetail.PaidCostMoney),item.OrderDetailPaid}
};
}
else if (list.Any(x => x.Id == item.OrderDetailId && x.FinanceType == 1) && list.Any(x => x.Id == item.OrderDetailId && x.FinanceType ==3))
{
keyValues = new Dictionary<string, object>()
}
else if (list.Any(x => x.Id == item.OrderDetailId && x.FinanceType == 1) && list.Any(x => x.Id == item.OrderDetailId && x.FinanceType == 3))
{
keyValues = new Dictionary<string, object>()
{
{ nameof(RB_Goods_OrderDetail.CostFinanceId),model.FinanceId},
{ nameof(RB_Goods_OrderDetail.InsuranceFinanceId),model.FinanceId},
{ nameof(RB_Goods_OrderDetail.PaidCostMoney),item.OrderDetailPaid}
};
}
else if (list.Any(x => x.Id == item.OrderDetailId && x.FinanceType == 1))
{
keyValues = new Dictionary<string, object>()
}
else if (list.Any(x => x.Id == item.OrderDetailId && x.FinanceType == 1))
{
keyValues = new Dictionary<string, object>()
{
{ nameof(RB_Goods_OrderDetail.CostFinanceId),model.FinanceId},
{ nameof(RB_Goods_OrderDetail.PaidCostMoney),item.OrderDetailPaid}
};
}
else if (list.Any(x => x.Id == item.OrderDetailId && x.FinanceType == 2))
{
keyValues = new Dictionary<string, object>()
}
else if (list.Any(x => x.Id == item.OrderDetailId && x.FinanceType == 2))
{
keyValues = new Dictionary<string, object>()
{
{ nameof(RB_Goods_OrderDetail.FreightFinanceId),model.FinanceId},
{ nameof(RB_Goods_OrderDetail.PaidCostMoney),item.OrderDetailPaid}
};
}
else if (list.Any(x => x.Id == item.OrderDetailId && x.FinanceType ==3))
{
keyValues = new Dictionary<string, object>()
}
else if (list.Any(x => x.Id == item.OrderDetailId && x.FinanceType == 3))
{
keyValues = new Dictionary<string, object>()
{
{ nameof(RB_Goods_OrderDetail.InsuranceFinanceId),model.FinanceId},
{ nameof(RB_Goods_OrderDetail.PaidCostMoney),item.OrderDetailPaid}
};
}
List<WhereHelper> whereHelpers = new List<WhereHelper>() { new WhereHelper()
}
List<WhereHelper> whereHelpers = new List<WhereHelper>() { new WhereHelper()
{
FiledName=nameof(RB_Finance_Configurine_Extend.Id),
FiledValue=item.OrderDetailId,
OperatorEnum=OperatorEnum.Equal
}
};
goods_OrderDetailRepository.Update(keyValues, whereHelpers);
goods_OrderDetailRepository.Update(keyValues, whereHelpers);
}
catch (Exception ex)
{
}
}
}
}
......
......@@ -27,8 +27,9 @@ namespace Mall.Repository.Education
public List<RB_Education_Article_Extend> GetPageListRepository(int pageIndex, int pageSize, out long rowCount, RB_Education_Article_Extend query)
{
StringBuilder builder = new StringBuilder();
builder.Append(@$" SELECT a.* FROM {TableName} as a LEFT JOIN (SELECT ArticleId,COUNT(*) as CommentNum from rb_education_articlecomment where `Status`=0 GROUP BY ArticleId )
as b on a.ID = b.ArticleId WHERE a.{nameof(RB_Education_Article_Extend.Status)}=0");
builder.Append(@$" SELECT a.*,b.CommentNum,c.Major,c.TeacherLogo,c.`Name` as TeacherName FROM {TableName} as a LEFT JOIN (SELECT ArticleId,COUNT(*) as CommentNum from rb_education_articlecomment where `Status`=0 GROUP BY ArticleId )
as b on a.ID = b.ArticleId
LEFT JOIN rb_education_teacher as c on a.TeacherId=c.ID WHERE a.{nameof(RB_Education_Article_Extend.Status)}=0 and c.{nameof(RB_Education_Teacher.Status)}=0");
if (query != null)
{
if (query.TenantId > 0)
......@@ -59,6 +60,14 @@ as b on a.ID = b.ArticleId WHERE a.{nameof(RB_Education_Article_Extend.Status)}
{
builder.Append($" and a.{nameof(RB_Education_Article_Extend.CreateDate)} <='{query.EndTime + " 23:59:59"}'");
}
if (query.OrderBy == 0)
{
builder.Append($" order by a.{nameof(RB_Education_Article_Extend.Sort)} asc ");
}
else if (query.OrderBy == 1)
{
builder.Append($" order by a.{nameof(RB_Education_Article_Extend.CreateDate)} desc ");
}
}
return GetPage<RB_Education_Article_Extend>(pageIndex, pageSize, out rowCount, builder.ToString()).ToList();
}
......@@ -75,36 +84,42 @@ as b on a.ID = b.ArticleId WHERE a.{nameof(RB_Education_Article_Extend.Status)}
public List<RB_Education_Article_Extend> GetTeacherList(RB_Education_Article_Extend query)
{
StringBuilder builder = new StringBuilder();
builder.Append($" SELECT * FROM {TableName} WHERE {nameof(RB_Education_Article_Extend.Status)}=0");
builder.Append(@$" SELECT a.*,b.CommentNum,c.Major,c.TeacherLogo,c.`Name` as TeacherName FROM {TableName} as a LEFT JOIN (SELECT ArticleId,COUNT(*) as CommentNum from rb_education_articlecomment where `Status`=0 GROUP BY ArticleId )
as b on a.ID = b.ArticleId
LEFT JOIN rb_education_teacher as c on a.TeacherId = c.ID WHERE a.{nameof(RB_Education_Article_Extend.Status)}=0 and c.{nameof(RB_Education_Teacher.Status)}=0");
if (query != null)
{
if (query.TenantId > 0)
{
builder.Append($" AND {nameof(RB_Education_Article_Extend.TenantId)}={query.TenantId}");
builder.Append($" AND a.{nameof(RB_Education_Article_Extend.TenantId)}={query.TenantId}");
}
if (query.TenantId > 0)
{
builder.Append($" AND {nameof(RB_Education_Article_Extend.MallBaseId)}={query.MallBaseId}");
builder.Append($" AND a.{nameof(RB_Education_Article_Extend.MallBaseId)}={query.MallBaseId}");
}
if (query.ID > 0)
{
builder.Append($" AND {nameof(RB_Education_Article_Extend.ID)}={query.ID}");
builder.Append($" AND a.{nameof(RB_Education_Article_Extend.ID)}={query.ID}");
}
if (!string.IsNullOrWhiteSpace(query.Name))
{
builder.Append($" AND {nameof(RB_Education_Article_Extend.Name)} like '%{query.Name}%'");
builder.Append($" AND a.{nameof(RB_Education_Article_Extend.Name)} like '%{query.Name}%'");
}
if (query.ArticleStatus > 0)
{
builder.Append($" AND {nameof(RB_Education_Article_Extend.ArticleStatus)}={query.ArticleStatus}");
builder.Append($" AND a.{nameof(RB_Education_Article_Extend.ArticleStatus)}={query.ArticleStatus}");
}
if (!string.IsNullOrEmpty(query.StartTime))
{
builder.Append($" and g.{nameof(RB_Education_Article_Extend.CreateDate)} >='{query.StartTime}'");
builder.Append($" and a.{nameof(RB_Education_Article_Extend.CreateDate)} >='{query.StartTime}'");
}
if (!string.IsNullOrEmpty(query.EndTime))
{
builder.Append($" and g.{nameof(RB_Education_Article_Extend.CreateDate)} <='{query.EndTime + " 23:59:59"}'");
builder.Append($" and a.{nameof(RB_Education_Article_Extend.CreateDate)} <='{query.EndTime + " 23:59:59"}'");
}
if (!string.IsNullOrEmpty(query.Ids))
{
builder.Append($" and a.{nameof(RB_Education_Article_Extend.ID)} in({query.Ids}) ");
}
}
return Get<RB_Education_Article_Extend>(builder.ToString()).ToList();
......
......@@ -55,5 +55,39 @@ namespace Mall.Repository.Education
string sql = @$" select * FROM {TableName} AS a where 1=1 {builder.ToString()} ";
return Get<RB_Education_MemberCoupon_Extend>(sql).ToList();
}
/// <summary>
/// 自动发放优惠券信息
/// </summary>
/// <param name="query">查询条件</param>
/// <returns></returns>
public List<RB_Education_MemberCoupon_Extend> GetAutoMemberCouponPageList(RB_Education_MemberCoupon_Extend query)
{
string where = " where a.`Status`=0 ";
if (query != null)
{
if (query.TenantId > 0)
{
where += $" AND a.{nameof(RB_Education_MemberCoupon_Extend.TenantId)}={query.TenantId}";
}
if (query.MallBaseId > 0)
{
where += $" AND a.{nameof(RB_Education_MemberCoupon_Extend.MallBaseId)}={query.MallBaseId}";
}
if (query.UserId > 0)
{
where += $" AND a.{nameof(RB_Education_MemberCoupon_Extend.UserId)}={query.UserId}";
}
if (query.GetType > 0)
{
where += $" AND a.{nameof(RB_Education_MemberCoupon_Extend.GetType)}={query.GetType}";
}
}
string sql = @$" SELECT a.* from rb_education_membercoupon as a {where} ";
return Get<RB_Education_MemberCoupon_Extend>(sql).ToList();
}
}
}
This diff is collapsed.
......@@ -705,7 +705,11 @@ namespace Mall.WebApi.Controllers.Education
x.IsComment,
x.CommentNum,
x.BrowseNum,
x.FictitiousBrowseNum
x.FictitiousBrowseNum,
x.ArticlePic,
x.TeacherName,
x.TeacherLogo,
x.Major
});
return ApiResult.Success("", pagelist);
}
......
This diff is collapsed.
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