Commit 6a6ff417 authored by liudong1993's avatar liudong1993
parents b26e595d f7ee4dcc
......@@ -87,44 +87,52 @@ namespace Mall.CacheManager.User
/// <returns></returns>
public static UserInfo GetUserLoginInfo(object TenantId)
{
string cacheKey = UserModuleCacheKeyConfig.Mall_Login_Info + TenantId.ToString();
UserInfo userInfo = null;
try
{
userInfo = redis.StringGet<UserInfo>(cacheKey);
}
catch (Exception ex)
if (TenantId != null)
{
LogHelper.Write(ex, "GetUserLoginInfo");
}
if (userInfo == null)
{
Int32.TryParse(TenantId.ToString(), out int NewTenantId);
if (NewTenantId > 0)
string cacheKey = UserModuleCacheKeyConfig.Mall_Login_Info + TenantId.ToString();
try
{
string token = "";
var extModel = tenantRepository.GetEntity<RB_Tenant_Extend>(NewTenantId);
if (extModel != null)
userInfo = redis.StringGet<UserInfo>(cacheKey);
}
catch (Exception ex)
{
LogHelper.Write(ex, "GetUserLoginInfo");
}
if (userInfo == null)
{
Int32.TryParse(TenantId.ToString(), out int NewTenantId);
if (NewTenantId > 0)
{
UserInfo obj = new UserInfo
string token = "";
var extModel = tenantRepository.GetEntity<RB_Tenant_Extend>(NewTenantId);
if (extModel != null)
{
TenantId = extModel.TenantId,
Account = extModel.Account,
Name = extModel.Name,
MobilePhone = extModel.MobilePhone,
WeChatNum = extModel.WeChatNum,
IsEffective = extModel.IsEffective,
AccountValidate = extModel.AccountValidate,
CreateMiniPrograme = extModel.CreateMiniPrograme,
//MallName = extModel.MallName,
AccountStatus = extModel.AccountStatus,
Token = token,
SecretKey = "",
};
UserInfoSet(UserModuleCacheKeyConfig.Mall_Login_Info + TenantId, obj, Config.JwtExpirTime);
UserInfo obj = new UserInfo
{
TenantId = extModel.TenantId,
Account = extModel.Account,
Name = extModel.Name,
MobilePhone = extModel.MobilePhone,
WeChatNum = extModel.WeChatNum,
IsEffective = extModel.IsEffective,
AccountValidate = extModel.AccountValidate,
CreateMiniPrograme = extModel.CreateMiniPrograme,
//MallName = extModel.MallName,
AccountStatus = extModel.AccountStatus,
Token = token,
SecretKey = "",
};
UserInfoSet(UserModuleCacheKeyConfig.Mall_Login_Info + TenantId, obj, Config.JwtExpirTime);
}
}
}
}
else
{
userInfo = new UserInfo();
}
return userInfo;
}
......
......@@ -103,5 +103,43 @@ namespace Mall.Model.Entity.User
/// 领取方式0-自行领取(领劵中心领取),1-分享,2-购买并付款,3-新人领取
/// </summary>
public int GetType { get; set; }
/// <summary>
/// 1-满减券,2-打折券
/// </summary>
public CouponTypeEnum CouponType { 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>
/// 优惠券名称
/// </summary>
public string Name { get; set; }
}
}
......@@ -23,7 +23,10 @@ namespace Mall.Model.Extend.MarketingCenter
/// </summary>
public string UserIds { get; set; }
/// <summary>
/// 0-未领取 >0已领取
/// </summary>
public int MemberNum { get; set; }
/// <summary>
/// 发放数量
......@@ -40,11 +43,34 @@ namespace Mall.Model.Extend.MarketingCenter
public int[] MemberLevelList { get; set; }
/// <summary>
/// 发放优惠券的时候会员id
/// </summary>
public int UserId { get; set; }
/// <summary>
/// 使用状态 0-未使用,1:已使用,2:已过期
/// </summary>
public int UseState { get; set; }
/// <summary>
/// 会员优惠券id
/// </summary>
public int MemberCouponId { get; set; }
/// <summary>
/// 商品
/// </summary>
public int[] GoodsIds { get; set; }
/// <summary>
/// 分类
/// </summary>
public int[] CategoryIds { get; set; }
}
}
......@@ -356,7 +356,7 @@ namespace Mall.Model.Extend.MarketingCenter
/// <summary>
/// 专题样式
/// </summary>
public string normal { get; set; }
public string style { get; set; }
/// <summary>
/// 显示行数
......@@ -407,18 +407,21 @@ namespace Mall.Model.Extend.MarketingCenter
/// <summary>
/// 分类名称
/// </summary>
public int cat_name { get; set; }
public string cat_name { get; set; }
/// <summary>
/// 分类名称
/// </summary>
public int name { get; set; }
public string name { get; set; }
public int custom { get; set; }
public int number { get; set; }
public List<object> children { get; set; }
/// <summary>
/// 专题分类列表
/// </summary>
public List<topicDetailsItem> children { get; set; }
}
/// <summary>
......@@ -447,7 +450,7 @@ namespace Mall.Model.Extend.MarketingCenter
public int layout { get; set; }
/// <summary>
///
/// 专题Id
/// </summary>
public int id { get; set; }
}
......@@ -547,12 +550,12 @@ namespace Mall.Model.Extend.MarketingCenter
/// <summary>
/// 选中的第几张图 对应的style_list里的height
/// </summary>
public int height { get; set; }
public string height { get; set; }
/// <summary>
/// 选中的第几张图 对应的style_list里的w
/// </summary>
public int w { get; set; }
public string w { get; set; }
/// <summary>
/// 选中的第几张图 对应的style_list里的h
......@@ -741,7 +744,7 @@ namespace Mall.Model.Extend.MarketingCenter
public int catStyle { get; set; }
/// <summary>
/// 商品添加方式
/// 商品添加方式【0-自动添加,1-手动添加】
/// </summary>
public int addGoodsType { get; set; }
......@@ -847,7 +850,7 @@ namespace Mall.Model.Extend.MarketingCenter
/// <summary>
///
/// 图片位置
/// </summary>
public int mode { get; set; }
......@@ -880,45 +883,22 @@ namespace Mall.Model.Extend.MarketingCenter
/// <summary>
/// 商品编号
/// </summary>
public int Id { get; set; }
public int id { get; set; }
/// <summary>
/// 商品名称
/// </summary>
public string Name { get; set; }
public string name { get; set; }
/// <summary>
/// 商品图片
/// </summary>
public string CoverImage { get; set; }
public string picUrl { get; set; }
/// <summary>
/// 售价
/// </summary>
public decimal SellingPrice { get; set; }
public int SalesNum { get; set; }
/// <summary>
/// 商品分类列表
/// </summary>
public List<CategoryItem> CategoryList { get; set; }
}
/// <summary>
/// 商品分类
/// </summary>
public class CategoryItem
{
/// <summary>
/// 商品分类编号
/// </summary>
public int Id { get; set; }
/// <summary>
/// 商品分类名称
/// </summary>
public string CategoryName { get; set; }
public decimal price { get; set; }
}
/// <summary>
......@@ -932,12 +912,12 @@ namespace Mall.Model.Extend.MarketingCenter
public int id { get; set; }
/// <summary>
/// 分类名称
/// 商品分类
/// </summary>
public string name { get; set; }
/// <summary>
/// 分类名称
/// 菜单名称
/// </summary>
public string menuName { get; set; }
......@@ -947,36 +927,16 @@ namespace Mall.Model.Extend.MarketingCenter
public int goodsNum { get; set; }
/// <summary>
/// 商品列表
/// 是否显示自定义商品
/// </summary>
public List<GoodsDetailsItem> goodsList { get; set; }
}
public bool staticGoods { get; set; }
/// <summary>
/// 商品详情项
/// </summary>
public class GoodsDetailsItem
{
/// <summary>
/// 商品编号
/// </summary>
public int id { get; set; }
/// <summary>
/// 商品名称
/// </summary>
public string Name { get; set; }
/// <summary>
/// 商品图片
/// </summary>
public string picUrl { get; set; }
/// <summary>
/// 售价
/// 商品列表
/// </summary>
public decimal SellingPrice { get; set; }
public List<GoodsDetailsItem2> goodsList { get; set; }
}
/// <summary>
/// 门店插件
......
......@@ -65,6 +65,8 @@ namespace Mall.Model.Extend.Product
/// 封面图
/// </summary>
public string CoverImage { get; set; }
/// <summary>
/// 自定义分享图片
/// </summary>
......
......@@ -23,42 +23,24 @@ namespace Mall.Model.Extend.User
/// </summary>
public DateTime? OrderCreateDate { get; set; }
/// <summary>
/// 优惠券名称
/// </summary>
public string Name { get; set; }
/// <summary>
/// 优惠方式
/// </summary>
public CouponTypeEnum CouponType { get; set; }
/// <summary>
/// 最低消费金额
/// </summary>
public decimal MinConsumePrice { get; set; }
/// <summary>
/// 会员昵称
/// </summary>
public string AliasName { get; set; }
/// <summary>
/// 下单开始时间
/// </summary>
public DateTime? StartDate { get; set; }
/// <summary>
/// 下单结束时间
/// </summary>
public DateTime? EndDate { get; set; }
/// <summary>
/// 优惠卷ids
/// </summary>
public string CouponIds { get; set; }
}
}
......@@ -4,6 +4,12 @@
<TargetFramework>netcoreapp3.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<Compile Remove="Query\Applet\**" />
<EmbeddedResource Remove="Query\Applet\**" />
<None Remove="Query\Applet\**" />
</ItemGroup>
<ItemGroup>
<Compile Remove="Extend\BaseSetUp\RB_Logistics_Pinkage_Extend.cs" />
</ItemGroup>
......
using Mall.Common.AOP;
using NPOI.SS.Formula.Functions;
using System;
using System.Collections.Generic;
using System.Text;
namespace Mall.Model.Query.Applet
{
/// <summary>
/// 个人中心-领劵中心
/// </summary>
[Serializable]
[DB(ConnectionName = "DefaultConnection")]
public class RB_DiscountCoupon_Applet
{
/// <summary>
/// 优惠券id
/// </summary>
public int Id { get; set; }
/// <summary>
/// 小程序id
/// </summary>
public int Mall_Id { get; set; }
/// <summary>
/// 优惠券名称
/// </summary>
public string Name { get; set; }
/// <summary>
/// 优惠券类型
/// </summary>
public int Type { get; set; }
/// <summary>
/// 折扣
/// </summary>
public decimal Discount { get; set; }
/// <summary>
///
/// </summary>
public string Pic_Url { get; set; }
/// <summary>
///
/// </summary>
public string Desc { get; set; }
/// <summary>
/// 最低消费
/// </summary>
public decimal Min_Price { get; set; }
/// <summary>
///
/// </summary>
public decimal Sub_Price { get; set; }
/// <summary>
///
/// </summary>
public int Total_Count { get; set; }
/// <summary>
/// 排序
/// </summary>
public int Sort { get; set; }
/// <summary>
/// 优惠券有效期
/// </summary>
public int Expire_Type { get; set; }
/// <summary>
/// 有效天数
/// </summary>
public string Expire_Day { get; set; }
/// <summary>
/// 开始时间
/// </summary>
public string Begin_Time { get; set; }
/// <summary>
/// 结束时间
/// </summary>
public string End_Time { get; set; }
/// <summary>
///
/// </summary>
public int Appoint_Type { get; set; }
/// <summary>
/// 规则
/// </summary>
public string Rule { get; set; }
/// <summary>
///
/// </summary>
public int Is_Member { get; set; }
/// <summary>
///
/// </summary>
public int Is_Delete { get; set; }
/// <summary>
///
/// </summary>
public string Deleted_At { get; set; }
/// <summary>
///
/// </summary>
public string Created_At { get; set; }
/// <summary>
///
/// </summary>
public string Updated_At { get; set; }
/// <summary>
/// 优惠上限
/// </summary>
public string Discount_Limit { get; set; }
/// <summary>
///
/// </summary>
public int Is_Receive { get; set; }
/// <summary>
///
/// </summary>
public string Page_Url { get; set; }
/// <summary>
///
/// </summary>
public string Share_Type { get; set; }
}
public class Category
{
public int Id { get; set; }
public int Mall_Id { get; set; }
public int Mch_Id { get; set; }
public int Parent_Id { get; set; }
public string Name { get; set; }
}
}
......@@ -27,6 +27,10 @@ namespace Mall.Module.MarketingCenter
private RB_Coupon_SelfMotionRepository selfMotionRepository = new RB_Coupon_SelfMotionRepository();
#region 卡券列表
/// <summary>
/// 卡券信息列表
......@@ -282,8 +286,8 @@ namespace Mall.Module.MarketingCenter
Dictionary<string, object> cols = new Dictionary<string, object>()
{
{ nameof(RB_DiscountCoupon_Product.Status),1},
{ nameof(RB_DiscountCoupon_Product.UpdateDate),DateTime.Now},
{ nameof(RB_DiscountCoupon.Status),1},
{ nameof(RB_DiscountCoupon.UpdateDate),DateTime.Now},
};
List<WhereHelper> wheres = new List<WhereHelper>() {
new WhereHelper(){
......@@ -369,19 +373,24 @@ namespace Mall.Module.MarketingCenter
/// <param name="list"></param>
/// <param name="model"></param>
/// <returns></returns>
public bool GrantCoupon(List<RB_Member_DiscountCoupon> list, RB_DiscountCoupon_Extend model)
public bool GrantCoupon(List<RB_Member_DiscountCoupon_Extend> list, RB_DiscountCoupon_Extend model)
{
bool flag = false;
var trans = memberCouponRepository.DbTransaction;
try
{
flag = memberCouponRepository.InsertBatch(list);
//foreach (var item in list)
//{
flag = memberCouponRepository.InsertBatch(list, trans);
// }
if (model != null && flag)
{
Dictionary<string, object> cols1 = new Dictionary<string, object>()
{
{ nameof(RB_DiscountCoupon.ReceiveNum),model.ReceiveNum+list.Count()},
{ nameof(RB_DiscountCoupon.TotalNum),model.TotalNum-list.Count()},
{ nameof(RB_DiscountCoupon.UpdateDate),DateTime.Now},
};
List<WhereHelper> wheres1 = new List<WhereHelper>()
......@@ -402,7 +411,7 @@ namespace Mall.Module.MarketingCenter
OperatorEnum=OperatorEnum.Equal
}
};
flag = discountCouponRepository.Update(cols1, wheres1);
flag = discountCouponRepository.Update(cols1, wheres1, trans);
}
memberCouponRepository.DBSession.Commit();
}
......@@ -423,7 +432,32 @@ namespace Mall.Module.MarketingCenter
/// <returns></returns>
public List<RB_DiscountCoupon_Extend> GetNoUseCouponList(RB_DiscountCoupon_Extend query)
{
return discountCouponRepository.GetNoUseCouponList(query);
var list = discountCouponRepository.GetNoUseCouponList(query);
//获取特定商品或者分类的数据
string Ids = string.Join(",", list.Where(x => x.UseType == Common.Enum.MarketingCenter.UseTypeEnum.Category).Select(x => x.ID));
if (!string.IsNullOrWhiteSpace(Ids))
{
query.UseType = Common.Enum.MarketingCenter.UseTypeEnum.Category;
var listProduct = productRepository.GetListByDiscountCouponIds(query, Ids);
foreach (var item in list.Where(x => x.UseType == Common.Enum.MarketingCenter.UseTypeEnum.Category))
{
item.ProductList = new List<RB_DiscountCoupon_Product_Extend>();
item.ProductList = listProduct.Where(x => x.DiscountCouponId == item.ID).ToList();
}
}
Ids = string.Join(",", list.Where(x => x.UseType == Common.Enum.MarketingCenter.UseTypeEnum.Product).Select(x => x.ID));
if (!string.IsNullOrWhiteSpace(Ids))
{
query.UseType = Common.Enum.MarketingCenter.UseTypeEnum.Product;
var listProduct = productRepository.GetListByDiscountCouponIds(query, Ids);
foreach (var item in list.Where(x => x.UseType == Common.Enum.MarketingCenter.UseTypeEnum.Product))
{
item.ProductList = new List<RB_DiscountCoupon_Product_Extend>();
item.ProductList = listProduct.Where(x => x.DiscountCouponId == item.ID).ToList();
}
}
return list;
}
......@@ -684,7 +718,95 @@ namespace Mall.Module.MarketingCenter
{
return memberCouponRepository.GetExportCouponStatisticslList(query);
}
#endregion
#endregion
#region 小程序个人中心-领劵中心
/// <summary>
/// 领劵中心优惠券
/// </summary>
/// <param name="query">查询条件</param>
/// <returns></returns>
public List<RB_DiscountCoupon_Extend> GetAllCouponList(int pageIndex, int pageSize, out long rowCount, RB_DiscountCoupon_Extend query)
{
var list = discountCouponRepository.GetAllCouponList(pageIndex, pageSize, out rowCount, query);
//获取特定商品或者分类的数据
string Ids = string.Join(",", list.Where(x => x.UseType == Common.Enum.MarketingCenter.UseTypeEnum.Category).Select(x => x.ID));
if (!string.IsNullOrWhiteSpace(Ids))
{
query.UseType = Common.Enum.MarketingCenter.UseTypeEnum.Category;
var listProduct = productRepository.GetListByDiscountCouponIds(query, Ids);
foreach (var item in list.Where(x => x.UseType == Common.Enum.MarketingCenter.UseTypeEnum.Category))
{
item.ProductList = new List<RB_DiscountCoupon_Product_Extend>();
item.ProductList = listProduct.Where(x => x.DiscountCouponId == item.ID).ToList();
}
}
Ids = string.Join(",", list.Where(x => x.UseType == Common.Enum.MarketingCenter.UseTypeEnum.Product).Select(x => x.ID));
if (!string.IsNullOrWhiteSpace(Ids))
{
query.UseType = Common.Enum.MarketingCenter.UseTypeEnum.Product;
var listProduct = productRepository.GetListByDiscountCouponIds(query, Ids);
foreach (var item in list.Where(x => x.UseType == Common.Enum.MarketingCenter.UseTypeEnum.Product))
{
item.ProductList = new List<RB_DiscountCoupon_Product_Extend>();
item.ProductList = listProduct.Where(x => x.DiscountCouponId == item.ID).ToList();
}
}
return list;
}
#endregion
#region 会员优惠券
/// <summary>
/// 会员优惠券
/// </summary>
/// <returns></returns>
public List<RB_Member_DiscountCoupon_Extend> GetMemberDiscountCouponList(RB_Member_DiscountCoupon_Extend query)
{
return memberCouponRepository.GetList(query);
}
/// <summary>
/// 我的优惠券
/// </summary>
/// <param name="query">查询条件</param>
/// <returns></returns>
public List<RB_DiscountCoupon_Extend> GetMemberDisCouponList(int pageIndex, int pageSize, out long rowCount, RB_DiscountCoupon_Extend query)
{
var list = discountCouponRepository.GetMemberDisCouponList(pageIndex, pageSize, out rowCount, query);
//获取特定商品或者分类的数据
string Ids = string.Join(",", list.Where(x => x.UseType == Common.Enum.MarketingCenter.UseTypeEnum.Category).Select(x => x.ID));
if (!string.IsNullOrWhiteSpace(Ids))
{
query.UseType = Common.Enum.MarketingCenter.UseTypeEnum.Category;
var listProduct = productRepository.GetListByDiscountCouponIds(query, Ids);
foreach (var item in list.Where(x => x.UseType == Common.Enum.MarketingCenter.UseTypeEnum.Category))
{
item.ProductList = new List<RB_DiscountCoupon_Product_Extend>();
item.ProductList = listProduct.Where(x => x.DiscountCouponId == item.ID).ToList();
}
}
Ids = string.Join(",", list.Where(x => x.UseType == Common.Enum.MarketingCenter.UseTypeEnum.Product).Select(x => x.ID));
if (!string.IsNullOrWhiteSpace(Ids))
{
query.UseType = Common.Enum.MarketingCenter.UseTypeEnum.Product;
var listProduct = productRepository.GetListByDiscountCouponIds(query, Ids);
foreach (var item in list.Where(x => x.UseType == Common.Enum.MarketingCenter.UseTypeEnum.Product))
{
item.ProductList = new List<RB_DiscountCoupon_Product_Extend>();
item.ProductList = listProduct.Where(x => x.DiscountCouponId == item.ID).ToList();
}
}
return list;
}
#endregion
}
}
......@@ -129,39 +129,69 @@ namespace Mall.Module.MarketingCenter
{
switch (item.Id)
{
//背景组件
case "background":item.data = JsonHelper.DeserializeObject<backgroundItem>(item.data.ToString()); break;
//查找组件
case "search": item.data = JsonHelper.DeserializeObject<searchItem>(item.data.ToString()); break;
//导航组件
case "nav": item.data = JsonHelper.DeserializeObject<navItem>(item.data.ToString()); break;
//轮播广告插件
case "banner": item.data = JsonHelper.DeserializeObject<bannerItem>(item.data.ToString()); break;
//公告组件
case "notice": item.data = JsonHelper.DeserializeObject<noticeItem>(item.data.ToString()); break;
//专题
case "topic": item.data = JsonHelper.DeserializeObject<topicItem>(item.data.ToString()); break;
//标题组件
case "link": item.data = JsonHelper.DeserializeObject<linkItem>(item.data.ToString()); break;
//图片广告插件
case "rubik": item.data = JsonHelper.DeserializeObject<rubikItem>(item.data.ToString()); break;
//视频插件
case "video": item.data = JsonHelper.DeserializeObject<videoItem>(item.data.ToString()); break;
//商品插件
case "goods": item.data = JsonHelper.DeserializeObject<goodsItem>(item.data.ToString()); break;
//门店插件
case "store": item.data = JsonHelper.DeserializeObject<storeItem>(item.data.ToString()); break;
//版权插件
case "copyright": item.data = JsonHelper.DeserializeObject<copyrightItem>(item.data.ToString()); break;
//签到插件
case "check-in": item.data = JsonHelper.DeserializeObject<checkinItem>(item.data.ToString()); break;
//用户信息插件
case "user-info": item.data = JsonHelper.DeserializeObject<userinfoItem>(item.data.ToString()); break;
//用户订单插件
case "user-order": item.data = JsonHelper.DeserializeObject<userorderItem>(item.data.ToString()); break;
//地图插件
case "map": item.data = JsonHelper.DeserializeObject<mapItem>(item.data.ToString()); break;
//微信公众号插件
case "mp-link": item.data = JsonHelper.DeserializeObject<mplinkItem>(item.data.ToString()); break;
//图文插件
case "image-text": item.data = JsonHelper.DeserializeObject<imagetextItem>(item.data.ToString()); break;
//优惠券插件
case "coupon": item.data = JsonHelper.DeserializeObject<couponItem>(item.data.ToString()); break;
//倒计时插件
case "timer": item.data = JsonHelper.DeserializeObject<timerItem>(item.data.ToString()); break;
//拼团插件
case "pintuan": item.data = JsonHelper.DeserializeObject<pintuanItem>(item.data.ToString()); break;
//预约插件
case "booking": item.data = JsonHelper.DeserializeObject<bookingItem>(item.data.ToString()); break;
//砍价插件
case "bargain": item.data = JsonHelper.DeserializeObject<bargainItem>(item.data.ToString()); break;
//积分商城插件
case "integral-mall": item.data = JsonHelper.DeserializeObject<integralmallItem>(item.data.ToString()); break;
//抽奖插件
case "lottery": item.data = JsonHelper.DeserializeObject<lotteryItem>(item.data.ToString()); break;
//预售
case "advance": item.data = JsonHelper.DeserializeObject<advanceItem>(item.data.ToString()); break;
//超级会员卡
case "vip-card": item.data = JsonHelper.DeserializeObject<vipcardItem>(item.data.ToString()); break;
//直播组件
case "live": item.data = JsonHelper.DeserializeObject<liveItem>(item.data.ToString()); break;
//空白块组件
case "empty": item.data = JsonHelper.DeserializeObject<emptyItem>(item.data.ToString()); break;
//流量主广告
case "ad": item.data = JsonHelper.DeserializeObject<adItem>(item.data.ToString()); break;
//弹窗广告
case "modal": item.data = JsonHelper.DeserializeObject<modalItem>(item.data.ToString()); break;
//快捷导航
case "quick-nav": item.data = JsonHelper.DeserializeObject<quicknavItem>(item.data.ToString()); break;
}
}
......
......@@ -183,6 +183,7 @@ namespace Mall.Module.User
{ nameof(RB_Topic_Extend.TopicTypeId),extModel.TopicTypeId},
{ nameof(RB_Topic_Extend.ReadNum),extModel.ReadNum},
{ nameof(RB_Topic_Extend.SortNum),extModel.SortNum},
{ nameof(RB_Topic_Extend.TemplateData),extModel.TemplateData},
};
flag = topicRepository.Update(fileds, new WhereHelper(nameof(RB_Topic_Extend.Id), extModel.Id));
}
......@@ -219,6 +220,10 @@ namespace Mall.Module.User
}
}
}
else
{
extModel.ComponentDataList = new List<ComponentItem>();
}
return extModel;
}
......
using Mall.Model.Entity.MarketingCenter;
using Mall.Model.Entity.User;
using Mall.Model.Extend.MarketingCenter;
using Mall.Model.Extend.User;
using System;
using System.Collections.Generic;
using System.Linq;
......@@ -96,7 +97,7 @@ namespace Mall.Repository.MarketingCenter
/// <returns></returns>
public List<RB_DiscountCoupon_Extend> GetNoUseCouponList(RB_DiscountCoupon_Extend query)
{
string where = " and a.StartDate<NOW() and a.EndDate>NOW() and b.`Status`=0 and a.UseState=0 ";
string where = " and a.StartDate<NOW() and a.EndDate>NOW() and a.UseState=0 ";
string goodsClassWhere = "";//分类
string goodsWhere = "";//商品
string allWhere = "";//通用
......@@ -124,11 +125,11 @@ namespace Mall.Repository.MarketingCenter
{
if (!string.IsNullOrWhiteSpace(goodsWhere))
{
goodsWhere += $" or (c.ProductId = {item.ProductId} and b.MinConsumePrice<= {item.GoodsPrice}) ";
goodsWhere += $" or (c.ProductId = {item.ProductId} and a.MinConsumePrice<= {item.GoodsPrice}) ";
}
else
{
goodsWhere += $" (c.ProductId = {item.ProductId} and b.MinConsumePrice<= {item.GoodsPrice}) ";
goodsWhere += $" (c.ProductId = {item.ProductId} and a.MinConsumePrice<= {item.GoodsPrice}) ";
}
allGoodsClass.AddRange(item.GoodsClassId.ToList());
}
......@@ -149,40 +150,131 @@ namespace Mall.Repository.MarketingCenter
}
if (!string.IsNullOrWhiteSpace(goodsClassWhere))
{
goodsClassWhere += $" or (c.ProductId = {item.Key} and b.MinConsumePrice<= {nowPrice}) ";
goodsClassWhere += $" or (c.ProductId = {item.Key} and a.MinConsumePrice<= {nowPrice}) ";
}
else
{
goodsClassWhere += $" (c.ProductId = {item.Key} and b.MinConsumePrice<= {nowPrice}) ";
goodsClassWhere += $" (c.ProductId = {item.Key} and a.MinConsumePrice<= {nowPrice}) ";
}
}
goodsClassWhere = " and (" + goodsClassWhere + ")";
decimal allPrice = query.ProductList.Sum(x => x.GoodsPrice);
allWhere = $" and b.MinConsumePrice<= {allPrice} ";
allWhere = $" and a.MinConsumePrice<= {allPrice} ";
}
}
string sql = @$" SELECT a.ID,a.UserId,b.`Name`,b.CouponType,b.UseType,b.MinConsumePrice,b.DiscountsPrice,b.MaxDiscountsPrice,b.Describe,a.StartDate,a.EndDate from rb_discountcoupon as b
LEFT JOIN rb_discountcoupon_product as c on b.ID=c.DiscountCouponId
LEFT JOIN rb_member_discountcoupon as a on a.CouponId=b.ID
where b.UseType=1 and c.`Status`=0 {where} {goodsClassWhere}
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_member_discountcoupon as a
LEFT JOIN rb_discountcoupon as b on a.CouponId=b.ID
LEFT JOIN rb_discountcoupon_product as c on c.DiscountCouponId=b.ID
where a.UseType=1 and c.`Status`=0 {where} {goodsClassWhere}
UNION ALL
SELECT a.ID,a.UserId,b.`Name`,b.CouponType,b.UseType,b.MinConsumePrice,b.DiscountsPrice,b.MaxDiscountsPrice,b.Describe,a.StartDate,a.EndDate from rb_discountcoupon as b
LEFT JOIN rb_discountcoupon_product as c on b.ID=c.DiscountCouponId
LEFT JOIN rb_member_discountcoupon as a on a.CouponId=b.ID
where b.UseType=2 and c.`Status`=0 {where} {goodsWhere}
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_member_discountcoupon as a
LEFT JOIN rb_discountcoupon as b on a.CouponId=b.ID
LEFT JOIN rb_discountcoupon_product as c on c.DiscountCouponId=b.ID
where a.UseType=2 and c.`Status`=0 {where} {goodsWhere}
UNION all
SELECT a.ID,a.UserId,b.`Name`,b.CouponType,b.UseType,b.MinConsumePrice,b.DiscountsPrice,b.MaxDiscountsPrice,b.Describe,a.StartDate,a.EndDate from rb_discountcoupon as b
LEFT JOIN rb_member_discountcoupon as a on a.CouponId=b.ID
where b.UseType=3 {where} {allWhere}";
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_member_discountcoupon as a
LEFT JOIN rb_discountcoupon as cb on a.CouponId=b.ID
where a.UseType=3 {where} {allWhere}";
return Get<RB_DiscountCoupon_Extend>(sql).ToList();
}
#region 小程序个人中心-领劵中心
/// <summary>
/// 领劵中心优惠券
/// </summary>
/// <param name="query">查询条件</param>
/// <returns></returns>
public List<RB_DiscountCoupon_Extend> GetAllCouponList(int pageIndex, int pageSize, out long rowCount, RB_DiscountCoupon_Extend query)
{
string where = " where a.`Status`=0 and a.PickupCenter=1";
string userWhere = "";//分类
if (query != null)
{
if (query.TenantId > 0)
{
where += $" AND a.{nameof(RB_DiscountCoupon_Extend.TenantId)}={query.TenantId}";
userWhere += $" AND {nameof(RB_DiscountCoupon_Extend.TenantId)}={query.TenantId}";
}
if (query.MallBaseId > 0)
{
where += $" AND a.{nameof(RB_DiscountCoupon_Extend.MallBaseId)}={query.MallBaseId}";
userWhere += $" AND {nameof(RB_DiscountCoupon_Extend.MallBaseId)}={query.MallBaseId}";
}
if (query.UserId > 0)
{
userWhere += $" AND {nameof(RB_DiscountCoupon_Extend.UserId)}={query.UserId}";
}
}
string sql = @$" SELECT t.*,c.MemberNum from (SELECT a.ID,a.`Name`,a.`Describe`,a.CouponType,a.UseType,a.StartDate,a.EndDate,a.MinConsumePrice,a.MaxDiscountsPrice,a.DiscountsPrice,a.IndateDay,a.IndateType from rb_discountcoupon as a
{where} and a.CouponType=1
UNION ALL
SELECT a.ID,a.`Name`,a.`Describe`,a.CouponType,a.UseType,a.StartDate,a.EndDate,a.MinConsumePrice,a.MaxDiscountsPrice,a.DiscountsPrice,a.IndateDay,a.IndateType from rb_discountcoupon as a
{where} and a.CouponType=2 and a.StartDate>NOW() and a.EndDate<NOW() )
as t LEFT JOIN (SELECT CouponId,COUNT(*) as MemberNum from rb_member_discountcoupon where `Status`=0 and UseState!=2 {userWhere} GROUP BY CouponId) as c on t.ID=c.CouponId ";
return GetPage<RB_DiscountCoupon_Extend>(pageIndex, pageSize, out rowCount, sql).ToList();
}
/// <summary>
/// 领劵中心优惠券
/// </summary>
/// <param name="query">查询条件</param>
/// <returns></returns>
public List<RB_DiscountCoupon_Extend> GetMemberDisCouponList(int pageIndex, int pageSize, out long rowCount, RB_DiscountCoupon_Extend query)
{
string where = " where a.`Status`=0 and b.Status=0 ";
if (query != null)
{
if (query.TenantId > 0)
{
where += $" AND a.{nameof(RB_Member_DiscountCoupon.TenantId)}={query.TenantId}";
where += $" AND b.{nameof(RB_DiscountCoupon_Extend.TenantId)}={query.TenantId}";
}
if (query.MallBaseId > 0)
{
where += $" AND a.{nameof(RB_Member_DiscountCoupon.MallBaseId)}={query.MallBaseId}";
where += $" AND b.{nameof(RB_DiscountCoupon_Extend.MallBaseId)}={query.MallBaseId}";
}
if (query.UserId > 0)
{
where += $" AND a.{nameof(RB_Member_DiscountCoupon.UserId)}={query.UserId}";
}
if (query.UseState == 0)
{
where += $" AND a.{nameof(RB_Member_DiscountCoupon_Extend.UseState)}={query.UseState} AND a.{nameof(RB_Member_DiscountCoupon_Extend.EndDate)}> NOW()";
}
else if (query.UseState == 1)
{
where += $" AND a.{nameof(RB_Member_DiscountCoupon_Extend.UseState)}={query.UseState}";
}
else if (query.UseState == 2)
{
where += $" AND a.{nameof(RB_Member_DiscountCoupon_Extend.EndDate)}<NOW() AND a.{nameof(RB_Member_DiscountCoupon_Extend.UseState)}=0";
}
}
string sql = @$" SELECT a.ID as MemberCouponId,a.StartDate,a.EndDate,b.ID,b.`Name`,b.`Describe`,b.CouponType,b.UseType,
b.MinConsumePrice,b.MaxDiscountsPrice,b.DiscountsPrice,b.IndateDay,b.IndateType from rb_member_discountcoupon as a LEFT JOIN rb_discountcoupon as b
on a.CouponId=b.ID {where} ";
return GetPage<RB_DiscountCoupon_Extend>(pageIndex, pageSize, out rowCount, sql).ToList();
}
#endregion
}
}
......@@ -19,6 +19,11 @@ namespace Mall.Repository.MarketingCenter
/// </summary>
public string PCategoryTableName { get { return nameof(Model.Entity.Product.RB_Product_Category); } }
/// <summary>
/// 表名称
/// </summary>
public string GoodsTableName { get { return nameof(Model.Entity.Product.RB_Goods); } }
/// <summary>
/// 优惠券对应的商品/分类列表
/// </summary>
......@@ -82,7 +87,7 @@ namespace Mall.Repository.MarketingCenter
}
else if (query.UseType == Common.Enum.MarketingCenter.UseTypeEnum.Product)
{
sql = $" SELECT a.*,b.`Name` as Relevance from {TableName} as a LEFT JOIN {PCategoryTableName} as b on a.ProductId=b.Id WHERE a.{nameof(RB_DiscountCoupon_Product.Status)}=0 {builder.ToString()} ";
sql = $" SELECT a.*,b.`Name` as Relevance from {TableName} as a LEFT JOIN {GoodsTableName} as b on a.ProductId=b.Id WHERE a.{nameof(RB_DiscountCoupon_Product.Status)}=0 {builder.ToString()} ";
}
return Get<RB_DiscountCoupon_Product_Extend>(sql).ToList();
}
......
......@@ -337,5 +337,48 @@ LEFT JOIN rb_member_user as d on d.AliasName=a.UserId where a.UseState=1 {buil
return GetPage<RB_Member_DiscountCoupon_Extend>(pageIndex, pageSize, out rowCount, sql).ToList();
}
/// <summary>
/// 我的优惠券
/// </summary>
/// <param name="query">查询条件</param>
/// <returns></returns>
public List<RB_Member_DiscountCoupon_Extend> GetMemberCouponPageList(int pageIndex, int pageSize, out long rowCount, RB_Member_DiscountCoupon_Extend query)
{
string where = " where a.`Status`=0 ";
if (query != null)
{
if (query.TenantId > 0)
{
where += $" AND a.{nameof(RB_Member_DiscountCoupon_Extend.TenantId)}={query.TenantId}";
}
if (query.MallBaseId > 0)
{
where += $" AND a.{nameof(RB_Member_DiscountCoupon_Extend.MallBaseId)}={query.MallBaseId}";
}
if (query.UserId > 0)
{
where += $" AND a.{nameof(RB_Member_DiscountCoupon_Extend.UserId)}={query.UserId}";
}
if (query.UseState == 0)
{
where += $" AND a.{nameof(RB_Member_DiscountCoupon_Extend.UseState)}={query.UseState} AND a.{nameof(RB_Member_DiscountCoupon_Extend.EndDate)}> NOW()";
}
else if (query.UseState == 1)
{
where += $" AND a.{nameof(RB_Member_DiscountCoupon_Extend.UseState)}={query.UseState}";
}
else if (query.UseState == 2)
{
where += $" AND a.{nameof(RB_Member_DiscountCoupon_Extend.EndDate)}<NOW() AND a.{nameof(RB_Member_DiscountCoupon_Extend.UseState)}=0";
}
}
string sql = @$" SELECT a.* from rb_member_discountcoupon as a {where} ";
return GetPage<RB_Member_DiscountCoupon_Extend>(pageIndex, pageSize, out rowCount, sql).ToList();
}
}
}
......@@ -7,14 +7,18 @@ using Mall.Common.Plugin;
using Mall.Model.Entity.BaseSetUp;
using Mall.Model.Entity.MarketingCenter;
using Mall.Model.Extend.BaseSetUp;
using Mall.Model.Extend.MarketingCenter;
using Mall.Model.Extend.User;
using Mall.Module.BaseSetUp;
using Mall.Module.MarketingCenter;
using Mall.Module.Product;
using Mall.WebApi.Filter;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Cors;
using Microsoft.AspNetCore.Mvc;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
namespace Mall.WebApi.Controllers.MallBase
{
......@@ -25,8 +29,8 @@ namespace Mall.WebApi.Controllers.MallBase
[ApiExceptionFilter]
[ApiController]
[EnableCors("AllowCors")]
public class MallController : BaseController
public class MallController : BaseController
{
/// <summary>
/// 商户账号处理类
......@@ -49,20 +53,26 @@ namespace Mall.WebApi.Controllers.MallBase
/// </summary>
private readonly MiniprogramTemplateModule miniprogramTemplateModule = new MiniprogramTemplateModule();
/// <summary>
/// 产品处理类
/// </summary>
private readonly ProductModule productModule = new ProductModule();
/// <summary>
/// 小程序首页
/// </summary>
/// <returns></returns>
[HttpGet]
[HttpPost]
[AllowAnonymous]
public ApiResult GetHome()
{
JObject parms = JObject.Parse(RequestParm.msg.ToString());
//小程序Id
var MiniAppId = RequestParm.MiniAppId;
MiniAppId = "wxacd9f8cc3480d29e";
var MiniAppId = parms.GetStringValue("MiniAppId");
var homePage = new object();
//获取小程序信息
var miniProgram = programModule.GetMiniProgramModule(new Model.Extend.User.RB_MiniProgram_Extend() { MiniAppId = MiniAppId },isGetHomeData:true);
var miniProgram = programModule.GetMiniProgramModule(new Model.Extend.User.RB_MiniProgram_Extend() { MiniAppId = MiniAppId }, isGetHomeData: true);
if (miniProgram != null && miniProgram.MallBaseId > 0)
{
var selfHomePage = miniprogramPageTemplModule.GetMiniprogramPageTemplModule(new RB_Miniprogram_Page_Templ_Extend()
......@@ -85,23 +95,39 @@ namespace Mall.WebApi.Controllers.MallBase
//解析模板
foreach (var item in templateList)
{
var detailsModel = selfHomePage?.DetailsList?.Where(qitem => qitem.TemplateId == item.Id)?.FirstOrDefault();
var templateData = new
{
id = detailsModel?.Id ?? 0,
name = detailsModel?.NavName ?? "",
data = new List<object>()
};
if (item.ComponentDataList != null && item.ComponentDataList.Count() > 0)
{
foreach (var subItem in item.ComponentDataList)
{
templateData.data.Add(PlusDataToObject(subItem, (miniProgram?.TenantId??0),miniProgram.MallBaseId));
}
}
var tempObj = new {
id=item.Id,
name=item.TemplateName,
page_id=0,
var tempObj = new
{
id = item.Id,
name = item.TemplateName,
page_id = 0,
template_id = item.Id,
template = templateData
};
list.Add(tempObj);
}
homePage = new
{
id = selfHomePage.Id,
title = selfHomePage.PageName,
id = miniProgram.MallBaseId,
title = miniProgram.MallName,
show_navs = selfHomePage.IsShowNav,
is_home_page = selfHomePage.IsHome,
navs= list
navs = list
};
}
//默认首页
......@@ -110,6 +136,153 @@ namespace Mall.WebApi.Controllers.MallBase
//配置了首页
if (miniProgram.HomeDataList != null && miniProgram.HomeDataList.Count > 0)
{
var templateData = new
{
id = 0,
name = "",
data = new List<object>()
};
foreach (var subitem in miniProgram.HomeDataList)
{
switch (subitem.key)
{
//搜索框
case "search":
templateData.data.Add(new
{
subitem.key,
subitem.name,
subitem.relation_id,
subitem.is_edit,
subitem.imgBg
});
break;
//轮播图
case "banner":
templateData.data.Add(new
{
subitem.key,
subitem.name,
subitem.relation_id,
subitem.is_edit,
subitem.row_num,
subitem.imgBg
});
break;
//导航图标
case "home_nav":
templateData.data.Add(new
{
subitem.key,
subitem.name,
subitem.relation_id,
subitem.is_edit,
subitem.row_num,
subitem.imgBg
});
break;
//视频
case "video":
templateData.data.Add(new
{
subitem.key,
subitem.name,
subitem.relation_id,
subitem.is_edit,
subitem.video_url,
subitem.video_pic_url,
subitem.imgBg
});
break;
//公告
case "notice":
templateData.data.Add(new
{
subitem.key,
subitem.name,
subitem.relation_id,
subitem.is_edit,
subitem.notice_url,
subitem.notice_bg_color,
subitem.notice_text_color,
subitem.imgBg
});
break;
//专题
case "topic":
templateData.data.Add(new
{
subitem.key,
subitem.name,
subitem.relation_id,
subitem.is_edit,
subitem.topic_num,
subitem.topic_url,
subitem.topic_url_2,
subitem.label_url,
subitem.imgBg
});
break;
//领券中心
case "coupon":
templateData.data.Add(new
{
subitem.key,
subitem.name,
subitem.relation_id,
subitem.is_edit,
subitem.coupon_url,
subitem.coupon_not_url,
subitem.imgBg
});
break;
//所有分类
case "cat":
break;
//图片魔方
case "block":
break;
//预约
case "booking":
templateData.data.Add(new
{
subitem.key,
subitem.name,
subitem.relation_id,
subitem.is_edit,
subitem.imgBg
});
break;
//拼团
case "pintuan":
templateData.data.Add(new
{
subitem.key,
subitem.name,
subitem.relation_id,
subitem.is_edit,
subitem.imgBg
});
break;
//预售
case "advance":
templateData.data.Add(new
{
subitem.key,
subitem.name,
subitem.relation_id,
subitem.is_edit,
subitem.imgBg
});
break;
}
}
homePage = new
{
id = 0,
......@@ -130,13 +303,440 @@ namespace Mall.WebApi.Controllers.MallBase
is_home_page = 1,
navs = list
};
}
}
}
return ApiResult.Success(data: homePage);
var objResult = new
{
home_pages = homePage
};
return ApiResult.Success(data: objResult);
}
/// <summary>
/// 解析插件数据为对象
/// </summary>
/// <param name="item"></param>
/// <returns></returns>
public object PlusDataToObject(ComponentItem subItem, int TenantId,int MallBaseId)
{
var obj = new object();
switch (subItem.Id)
{
//背景插件
case "background":
var backgroundData = subItem.data as backgroundItem;
obj = new
{
id = subItem.Id,
data = backgroundData
};
break;
//搜索插件
case "search":
var searchData = subItem.data as searchItem;
obj = new
{
id = subItem.Id,
data = searchData
};
break;
//导航组件
case "nav":
var navData = subItem.data as navItem;
obj = new
{
id = subItem.Id,
data = navData
};
break;
//轮播广告插件
case "banner":
var bannerData = subItem.data as bannerItem;
obj = new
{
id = subItem.Id,
data = bannerData
};
break;
//公告组件
case "notice":
var noticeData = subItem.data as noticeItem;
obj = new
{
id = subItem.Id,
data = noticeData
};
break;
//专题组件
case "topic":
var topicData = subItem.data as topicItem;
obj = new
{
id = subItem.Id,
data = topicData
};
break;
//标题组件
case "link":
var linkData = subItem.data as linkItem;
obj = new
{
id = subItem.Id,
data = linkData
};
break;
//图片广告插件
case "rubik":
var rubikData = subItem.data as rubikItem;
obj = new
{
id = subItem.Id,
data = rubikData
};
break;
//视频插件
case "video":
var videoData = subItem.data as videoItem;
obj = new
{
id = subItem.Id,
data = videoData
};
break;
//商品插件
case "goods":
var goodsData = subItem.data as goodsItem;
if (goodsData != null)
{
//显示商品分类
if (goodsData.showCat)
{
if (goodsData.catList != null && goodsData.catList.Count > 0)
{
foreach (var childItem in goodsData.catList)
{
//自定义商品
if (childItem.staticGoods)
{
if (childItem.goodsList != null && childItem.goodsList.Count > 0)
{
var Ids = "0," + string.Join(",", childItem.goodsList.Select(qitem => qitem.id));
var tempGoodsList = productModule.GetProductGoodsList(new Model.Extend.Product.RB_Goods_Extend()
{
TenantId = TenantId,
MallBaseId = MallBaseId,
GoodsIds = Ids
});
foreach (var lastItem in childItem.goodsList)
{
var tempGood = tempGoodsList?.Where(qitem => qitem.Id == lastItem.id)?.FirstOrDefault();
if (tempGood != null && tempGood.Id > 0)
{
lastItem.name = tempGood?.Name ?? lastItem.name;
lastItem.price = tempGood?.SellingPrice ?? lastItem.price;
lastItem.picUrl = tempGood?.CoverImage != null ? Common.Config.GetFileUrl(tempGood.CoverImage) : Common.Config.GetFileUrl(lastItem.picUrl);
}
}
}
}
//自动添加商品
else
{
childItem.goodsList = new List<GoodsDetailsItem2>();
var catGoodsList = productModule.GetProductGoodsPageList(1, childItem.goodsNum, out long rowsCount, new Model.Extend.Product.RB_Goods_Extend()
{
TenantId = TenantId,
MallBaseId = MallBaseId,
CategoryIds = childItem.id.ToString()
});
if (catGoodsList != null && catGoodsList.Count > 0)
{
foreach (var gItem in catGoodsList)
{
childItem.goodsList.Add(new GoodsDetailsItem2()
{
id = gItem.Id,
price = gItem?.SellingPrice ?? 0,
name = gItem.Name,
picUrl = Common.Config.GetFileUrl(gItem.CoverImage)
});
}
}
}
}
}
}
//不显示商品分类
else
{
//自动添加商品
if (goodsData.addGoodsType == 0)
{
goodsData.list = new List<GoodsDetailsItem2>();
var goodsList = productModule.GetProductGoodsPageList(1, goodsData.goodsLength, out long rowsCount, new Model.Extend.Product.RB_Goods_Extend()
{
TenantId = TenantId,
MallBaseId = MallBaseId
});
if (goodsList != null && goodsList.Count > 0)
{
foreach (var gItem in goodsList)
{
goodsData.list.Add(new GoodsDetailsItem2()
{
id = gItem.Id,
price = gItem?.SellingPrice ?? 0,
name = gItem.Name,
picUrl = Common.Config.GetFileUrl(gItem.CoverImage)
});
}
}
}
//手动添加商品
else
{
if (goodsData.list != null && goodsData.list.Count > 0)
{
var Ids = "0," + string.Join(",", goodsData.list.Select(qitem => qitem.id));
var tempGoodsList = productModule.GetProductGoodsList(new Model.Extend.Product.RB_Goods_Extend()
{
TenantId = TenantId,
MallBaseId = MallBaseId,
GoodsIds = Ids
});
foreach (var childItem in goodsData.list)
{
var tempGood = tempGoodsList?.Where(qitem => qitem.Id == childItem.id)?.FirstOrDefault();
if (tempGood != null && tempGood.Id > 0)
{
childItem.name = tempGood?.Name ?? childItem.name;
childItem.price = tempGood?.SellingPrice ?? childItem.price;
childItem.picUrl = tempGood?.CoverImage != null ? Common.Config.GetFileUrl(tempGood.CoverImage) : Common.Config.GetFileUrl(childItem.picUrl);
}
}
}
}
}
}
obj = new
{
id = subItem.Id,
data = goodsData
};
break;
//门店插件
case "store":
var storeData = subItem.data as storeItem;
obj = new
{
id = subItem.Id,
data = storeData
};
break;
//版权插件
case "copyright":
var copyrightData = subItem.data as copyrightItem;
obj = new
{
id = subItem.Id,
data = copyrightData
};
break;
//签到插件
case "check-in":
var checkinData = subItem.data as checkinItem;
obj = new
{
id = subItem.Id,
data = checkinData
};
break;
//用户信息插件
case "user-info":
var userinfoData = subItem.data as userinfoItem;
obj = new
{
id = subItem.Id,
data = userinfoData
};
break;
//用户订单插件
case "user-order":
var userorderData = subItem.data as userorderItem;
obj = new
{
id = subItem.Id,
data = userorderData
};
break;
//地图插件
case "map":
var mapData = subItem.data as mapItem;
obj = new
{
id = subItem.Id,
data = mapData
};
break;
//微信公众号插件
case "mp-link":
var mplinkData = subItem.data as mplinkItem;
obj = new
{
id = subItem.Id,
data = mplinkData
};
break;
//图文插件
case "image-text":
var imagetextData = subItem.data as imagetextItem;
obj = new
{
id = subItem.Id,
data = imagetextData
};
break;
//优惠券插件
case "coupon":
var couponData = subItem.data as couponItem;
obj = new
{
id = subItem.Id,
data = couponData
};
break;
//倒计时插件
case "timer":
var timerData = subItem.data as timerItem;
obj = new
{
id = subItem.Id,
data = timerData
};
break;
//拼团插件
case "pintuan":
var pintuanData = subItem.data as pintuanItem;
obj = new
{
id = subItem.Id,
data = pintuanData
};
break;
//预约插件
case "booking":
var bookingData = subItem.data as bookingItem;
obj = new
{
id = subItem.Id,
data = bookingData
};
break;
//砍价插件
case "bargain":
var bargainData = subItem.data as bargainItem;
obj = new
{
id = subItem.Id,
data = bargainData
};
break;
//积分商城插件
case "integral-mall":
var integralmallData = subItem.data as integralmallItem;
obj = new
{
id = subItem.Id,
data = integralmallData
};
break;
//抽奖插件
case "lottery":
var lotteryData = subItem.data as lotteryItem;
obj = new
{
id = subItem.Id,
data = lotteryData
};
break;
//预售
case "advance":
var advanceData = subItem.data as advanceItem;
obj = new
{
id = subItem.Id,
data = advanceData
};
break;
//超级会员卡
case "vip-card":
var vipcardData = subItem.data as vipcardItem;
obj = new
{
id = subItem.Id,
data = vipcardData
};
break;
//直播组件
case "live":
var liveData = subItem.data as liveItem;
obj = new
{
id = subItem.Id,
data = liveData
};
break;
//空组件
case "empty":
var emptyData = subItem.data as emptyItem;
obj = new
{
id = subItem.Id,
data = emptyData
};
break;
//流量主广告
case "ad":
var adData = subItem.data as adItem;
obj = new
{
id = subItem.Id,
data = adData
};
break;
//弹窗广告
case "modal":
var modalData = subItem.data as modalItem;
obj = new
{
id = subItem.Id,
data = modalData
};
break;
//弹窗广告
case "quick-nav":
var quicknavData = subItem.data as quicknavItem;
obj = new
{
id = subItem.Id,
data = quicknavData
};
break;
}
return obj;
}
/// <summary>
/// 用户中心
/// </summary>
......@@ -145,19 +745,97 @@ namespace Mall.WebApi.Controllers.MallBase
[HttpPost]
public ApiResult GetUserCenter()
{
JObject parms = JObject.Parse(RequestParm.msg.ToString());
//小程序Id
var MiniAppId = RequestParm.MiniAppId;
MiniAppId = "wxacd9f8cc3480d29e";
var MiniAppId = parms.GetStringValue("MiniAppId");
//获取小程序信息
var miniProgram = programModule.GetMiniProgramModule(new Model.Extend.User.RB_MiniProgram_Extend() { MiniAppId = MiniAppId }, isGetUserCenterMenu: true);
var mall = new object();
if (miniProgram != null && miniProgram.MallBaseId > 0)
{
mall = new
var config = new
{
id=miniProgram.MallBaseId,
name=miniProgram.MallName,
//顶部导航
title_bar = new
{
//顶部背景颜色
background = miniProgram.TopNavBgColor,
//顶部文字颜色
color = miniProgram.TopNavWordColor,
},
//用户中心
user_center = new
{
//是否显示账户栏
is_account_status = (miniProgram.IsShowAccountNav == 0 ? 1 : 0),
//是否显示菜单栏
is_menu_status = (miniProgram.IsShowMenuNav == 0 ? 1 : 0),
//是否显示菜单栏
is_order_bar_status = (miniProgram.IsShowOrderNav == 0 ? 1 : 0),
//是否显示收藏夹
is_foot_bar_status = (miniProgram.IsShowFavorite == 0 ? 1 : 0),
//菜单样式
menu_style = (miniProgram.MenuNavStyle == 0 ? 1 : 2),
//头像样式
top_style = (miniProgram.HeadStyle),
//顶部默认背景图
top_pic_url = miniProgram.DefaultBgImg,
//普通用户背景图
member_pic_url = miniProgram.MemberBgImg,
//会员中心背景图
member_bg_pic_url = miniProgram.VipBgImg,
//头像内嵌背景图[暂无]
style_bg_pic_url = "",
//账户相关菜单
account = miniProgram?.AccountMenuList.Select(qitem => new
{
icon_url = qitem.MenuIcon,
name = qitem.MenuName,
is_show = 1,
}),
//自定义菜单
menus = miniProgram?.SelfMenuList.Select(qitem => new
{
icon_url = qitem.MenuIcon,
name = qitem.MenuName,
link_url = qitem.MenuUrl,
open_type = "navigate",
@params = "",
}),
//订单菜单列表
order_bar = miniProgram?.OrderMenuList.Select(qitem => new
{
icon_url = qitem.MenuIcon,
name = qitem.MenuName,
link_url = qitem.MenuUrl,
open_type = "navigate",
text = "",
}),
//收藏足迹
foot_bar = miniProgram?.FavoriteFootMenuList.Select(qitem => new
{
icon_url = qitem.MenuIcon,
name = qitem.MenuName,
link_url = qitem.MenuUrl,
open_type = "navigate",
}),
//版权设置
copyright = new
{
pic_url = miniProgram.CopyRightImg,
description = miniProgram.CopyRightWord,
link_url = miniProgram.CopyRightLink,
}
}
};
mall = new
{
id = miniProgram.MallBaseId,
name = miniProgram.MallName,
//配置信息
config
};
}
return ApiResult.Success(data: mall);
......
......@@ -6,7 +6,9 @@ using Mall.Common;
using Mall.Common.API;
using Mall.Common.Plugin;
using Mall.Model.Extend.MarketingCenter;
using Mall.Model.Extend.Product;
using Mall.Module.MarketingCenter;
using Mall.Module.Product;
using Mall.WebApi.Filter;
using Microsoft.AspNetCore.Cors;
using Microsoft.AspNetCore.Mvc;
......@@ -22,7 +24,7 @@ namespace Mall.WebApi.Controllers.MarketingCenter
public class AppletCouponController : BaseController
{
private CouponModule couponModule = new CouponModule();
private ProductModule productModule = new ProductModule();
/// <summary>
/// 获取用户未使用的优惠券
......@@ -45,11 +47,141 @@ namespace Mall.WebApi.Controllers.MarketingCenter
query.MallBaseId = userInfo.MallBaseId;
query.UserId = userInfo.UserId;
var list = couponModule.GetNoUseCouponList(query);
//获取优惠券对应的商品,或者分类
List<RB_Product_Category_Extend> categotyList = new List<RB_Product_Category_Extend>();
List<RB_DiscountCoupon_Product_Extend> productList = new List<RB_DiscountCoupon_Product_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_DiscountCoupon_Product_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
{
x.ID,
StartDate = x.StartDate.HasValue ? x.StartDate.Value.ToString("yyyy-MM-dd HH:mm:ss") : "",
EndDate = x.EndDate.HasValue ? x.EndDate.Value.ToString("yyyy-MM-dd HH:mm:ss") : "",
id = x.MemberCouponId,
mall_id = userInfo.MallBaseId,
user_id = userInfo.UserId,
coupon_id = x.ID,
sub_price = x.DiscountsPrice,
discount = x.CouponType == Common.Enum.MarketingCenter.CouponTypeEnum.Discount ? x.DiscountsPrice : 10,
coupon_min_price = x.MinConsumePrice,
type = (int)x.CouponType,
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,
coupon_data = new
{
id = x.ID,
mall_id = userInfo.MallBaseId,
name = x.Name,
type = (int)x.CouponType,
discount = x.CouponType == Common.Enum.MarketingCenter.CouponTypeEnum.Discount ? x.DiscountsPrice : 10,
pic_url = "",
desc = "",
min_price = x.MinConsumePrice,
sub_price = x.DiscountsPrice,
total_count = x.TotalNum + x.ReceiveNum,
sort = x.Sort,
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_member = x.OnlyMember,
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,
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.MinConsumePrice,
......@@ -57,7 +189,21 @@ namespace Mall.WebApi.Controllers.MarketingCenter
x.MaxDiscountsPrice,
x.UseType
});
return ApiResult.Success("", result);
//var result = list.Select(x => new
//{
// x.ID,
// StartDate = x.StartDate.HasValue ? x.StartDate.Value.ToString("yyyy-MM-dd HH:mm:ss") : "",
// EndDate = x.EndDate.HasValue ? x.EndDate.Value.ToString("yyyy-MM-dd HH:mm:ss") : "",
// x.Name,
// x.Describe,
// x.MinConsumePrice,
// x.CouponType,
// x.MaxDiscountsPrice,
// x.UseType
//});
return ApiResult.Success("", data: JsonHelper.GetCamelCaseResultJson(result));
}
}
......
......@@ -389,14 +389,14 @@ namespace Mall.WebApi.Controllers.MarketingCenter
{
return ApiResult.Failed("请选择发放对象");
}
List<RB_Member_DiscountCoupon> list = new List<RB_Member_DiscountCoupon>();
List<RB_Member_DiscountCoupon_Extend> list = new List<RB_Member_DiscountCoupon_Extend>();
for (int i = 0; i < query.GrantNum; i++)
{
foreach (var item in query.UserIds.Split(","))
{
if (!string.IsNullOrWhiteSpace(item))
{
RB_Member_DiscountCoupon memberCoupon = new RB_Member_DiscountCoupon();
RB_Member_DiscountCoupon_Extend memberCoupon = new RB_Member_DiscountCoupon_Extend();
memberCoupon.Id = 0;
memberCoupon.UserId = Convert.ToInt32(item);
memberCoupon.Description = oldLogisticsModel.Describe;
......@@ -421,7 +421,11 @@ namespace Mall.WebApi.Controllers.MarketingCenter
}
if (oldLogisticsModel.TotalNum != -1)
{
if ((oldLogisticsModel.TotalNum - oldLogisticsModel.ReceiveNum) < list.Count())
//if ((oldLogisticsModel.TotalNum - oldLogisticsModel.ReceiveNum) < list.Count())
//{
// return ApiResult.Failed("优惠券剩余" + (oldLogisticsModel.TotalNum - oldLogisticsModel.ReceiveNum) + "张");
//}
if (oldLogisticsModel.TotalNum < list.Count())
{
return ApiResult.Failed("优惠券剩余" + (oldLogisticsModel.TotalNum - oldLogisticsModel.ReceiveNum) + "张");
}
......@@ -511,7 +515,7 @@ namespace Mall.WebApi.Controllers.MarketingCenter
oldLogisticsModel.UserList = new List<RB_Coupon_SelfMotionMember_Extend>();
oldLogisticsModel.UserList = IntegralModule.GetSelfMotionMemberList(new RB_Coupon_SelfMotionMember_Extend { TenantId = oldLogisticsModel.TenantId, MallBaseId = oldLogisticsModel.MallBaseId, SelfMotionId = oldLogisticsModel.ID });
}
}
return ApiResult.Success("", oldLogisticsModel);
}
......
......@@ -15,6 +15,9 @@ using Mall.CacheManager.User;
using Newtonsoft.Json.Linq;
using Mall.Common;
using Mall.Model.Extend.Product;
using Mall.Model.Extend.MarketingCenter;
using Mall.Model.Entity.User;
using NPOI.SS.Formula.Functions;
namespace Mall.WebApi.Controllers.User
{
......@@ -26,6 +29,7 @@ namespace Mall.WebApi.Controllers.User
{
private readonly UserModule userModule = new UserModule();
private readonly Module.MarketingCenter.CouponModule couponModule = new Module.MarketingCenter.CouponModule();
#region 收货地址
......@@ -33,7 +37,8 @@ namespace Mall.WebApi.Controllers.User
/// 获取收货地址分页列表
/// </summary>
/// <returns></returns>
public ApiResult GetUserShippingAddressPageList() {
public ApiResult GetUserShippingAddressPageList()
{
var req = RequestParm;
var userInfo = AppletUserInfo;
ResultPageModel pagelist = JsonConvert.DeserializeObject<ResultPageModel>(req.msg.ToString());
......@@ -101,12 +106,14 @@ namespace Mall.WebApi.Controllers.User
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult GetUserShippingAddressInfo() {
public ApiResult GetUserShippingAddressInfo()
{
var req = RequestParm;
var userInfo = AppletUserInfo;
JObject parms = JObject.Parse(req.msg.ToString());
int AddressId = parms.GetInt("AddressId", 0);
if (AddressId <= 0) {
if (AddressId <= 0)
{
return ApiResult.ParamIsNull("请传递收货地址");
}
var model = userModule.GetUserShippingAddressInfo(AddressId);
......@@ -136,20 +143,25 @@ namespace Mall.WebApi.Controllers.User
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult SetUserShippingAddress() {
public ApiResult SetUserShippingAddress()
{
var req = RequestParm;
var userInfo = AppletUserInfo;
RB_Member_ShippingAddress_Extend demodel = JsonConvert.DeserializeObject<RB_Member_ShippingAddress_Extend>(req.msg.ToString());
if (string.IsNullOrEmpty(demodel.Name)) {
if (string.IsNullOrEmpty(demodel.Name))
{
return ApiResult.ParamIsNull("请输入收货人");
}
if (string.IsNullOrEmpty(demodel.Mobile)) {
if (string.IsNullOrEmpty(demodel.Mobile))
{
return ApiResult.ParamIsNull("请输入联系电话");
}
if ((demodel.Province ?? 0) <= 0 || (demodel.City ?? 0) <= 0 || (demodel.District ?? 0) <= 0) {
if ((demodel.Province ?? 0) <= 0 || (demodel.City ?? 0) <= 0 || (demodel.District ?? 0) <= 0)
{
return ApiResult.ParamIsNull("请选择区域");
}
if (string.IsNullOrEmpty(demodel.Address)) {
if (string.IsNullOrEmpty(demodel.Address))
{
return ApiResult.ParamIsNull("请输入详细地址");
}
......@@ -169,7 +181,8 @@ namespace Mall.WebApi.Controllers.User
{
return ApiResult.Success();
}
else {
else
{
return ApiResult.Failed();
}
}
......@@ -179,12 +192,14 @@ namespace Mall.WebApi.Controllers.User
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult SetUserShippingAddressDefault() {
public ApiResult SetUserShippingAddressDefault()
{
var req = RequestParm;
var userInfo = AppletUserInfo;
JObject prams = JObject.Parse(req.msg.ToString());
int AddressId = prams.GetInt("AddressId", 0);
if (AddressId <= 0) {
if (AddressId <= 0)
{
return ApiResult.ParamIsNull();
}
......@@ -193,7 +208,8 @@ namespace Mall.WebApi.Controllers.User
{
return ApiResult.Success();
}
else {
else
{
return ApiResult.Failed();
}
}
......@@ -263,12 +279,14 @@ namespace Mall.WebApi.Controllers.User
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult SetUserCollectionInfo() {
public ApiResult SetUserCollectionInfo()
{
var req = RequestParm;
var userInfo = AppletUserInfo;
JObject parms = JObject.Parse(req.msg.ToString());
int GoodsId = parms.GetInt("GoodsId", 0);
if (GoodsId <= 0) {
if (GoodsId <= 0)
{
return ApiResult.ParamIsNull();
}
......@@ -277,7 +295,8 @@ namespace Mall.WebApi.Controllers.User
{
return ApiResult.Success();
}
else {
else
{
return ApiResult.Failed();
}
}
......@@ -291,7 +310,8 @@ namespace Mall.WebApi.Controllers.User
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult GetUserDistrbutorStatus() {
public ApiResult GetUserDistrbutorStatus()
{
var userInfo = AppletUserInfo;
var obj = userModule.GetUserDistrbutorStatus(userInfo.UserId, userInfo.TenantId, userInfo.MallBaseId);
......@@ -303,7 +323,8 @@ namespace Mall.WebApi.Controllers.User
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult GetUserApplyForDistrbutorInfo() {
public ApiResult GetUserApplyForDistrbutorInfo()
{
var userInfo = AppletUserInfo;
var obj = userModule.GetUserApplyForDistrbutorInfo(userInfo.UserId, userInfo.TenantId, userInfo.MallBaseId);
......@@ -315,14 +336,17 @@ namespace Mall.WebApi.Controllers.User
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult SetUserApplyForBeDistrbutor() {
public ApiResult SetUserApplyForBeDistrbutor()
{
var req = RequestParm;
var userInfo = AppletUserInfo;
RB_Distributor_Info_Extend demodel = JsonConvert.DeserializeObject<RB_Distributor_Info_Extend>(req.msg.ToString());
if (string.IsNullOrEmpty(demodel.Name)) {
if (string.IsNullOrEmpty(demodel.Name))
{
return ApiResult.ParamIsNull("请输入名称");
}
if (string.IsNullOrEmpty(demodel.Mobile)) {
if (string.IsNullOrEmpty(demodel.Mobile))
{
return ApiResult.ParamIsNull("请输入手机号码");
}
......@@ -345,7 +369,8 @@ namespace Mall.WebApi.Controllers.User
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult GetUserDistrbutorCenter() {
public ApiResult GetUserDistrbutorCenter()
{
var userInfo = AppletUserInfo;
var obj = userModule.GetDistrbutorCenter(userInfo);
......@@ -357,7 +382,8 @@ namespace Mall.WebApi.Controllers.User
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult GetUserDistrbutorUpgradeConditions() {
public ApiResult GetUserDistrbutorUpgradeConditions()
{
var userInfo = AppletUserInfo;
var obj = userModule.GetDistrbutorUpgradeConditions(userInfo);
......@@ -369,7 +395,8 @@ namespace Mall.WebApi.Controllers.User
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult GetUserDistrbutorWithdrawDepositBalance() {
public ApiResult GetUserDistrbutorWithdrawDepositBalance()
{
var userInfo = AppletUserInfo;
var obj = userModule.GetDistrbutorWithdrawDepositBalance(userInfo);
......@@ -381,22 +408,29 @@ namespace Mall.WebApi.Controllers.User
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult SetUserDistrbutorWithdrawDeposit() {
public ApiResult SetUserDistrbutorWithdrawDeposit()
{
var req = RequestParm;
var userInfo = AppletUserInfo;
RB_Distributor_Remit_Extend demodel = JsonConvert.DeserializeObject<RB_Distributor_Remit_Extend>(req.msg.ToString());
if ((demodel.AppliedMoney ?? 0) <= 0) {
if ((demodel.AppliedMoney ?? 0) <= 0)
{
return ApiResult.ParamIsNull("提现金额不能小于0");
}
if (demodel.WithdrawalWay == DistrbutorWithdrawWayEnum.WXZZ || demodel.WithdrawalWay == DistrbutorWithdrawWayEnum.YYKZZ || demodel.WithdrawalWay == DistrbutorWithdrawWayEnum.ZFBZZ) {
if (string.IsNullOrEmpty(demodel.AccountName)) {
if (demodel.WithdrawalWay == DistrbutorWithdrawWayEnum.WXZZ || demodel.WithdrawalWay == DistrbutorWithdrawWayEnum.YYKZZ || demodel.WithdrawalWay == DistrbutorWithdrawWayEnum.ZFBZZ)
{
if (string.IsNullOrEmpty(demodel.AccountName))
{
return ApiResult.ParamIsNull("请输入账户名称");
}
if (string.IsNullOrEmpty(demodel.AccountNumber)) {
if (string.IsNullOrEmpty(demodel.AccountNumber))
{
return ApiResult.ParamIsNull("请输入账号");
}
if (demodel.WithdrawalWay == DistrbutorWithdrawWayEnum.YYKZZ) {
if (string.IsNullOrEmpty(demodel.BankName)) {
if (demodel.WithdrawalWay == DistrbutorWithdrawWayEnum.YYKZZ)
{
if (string.IsNullOrEmpty(demodel.BankName))
{
return ApiResult.ParamIsNull("请输入银行名称");
}
}
......@@ -413,7 +447,8 @@ namespace Mall.WebApi.Controllers.User
{
return ApiResult.Success();
}
else {
else
{
return ApiResult.Failed(msg);
}
}
......@@ -436,7 +471,8 @@ namespace Mall.WebApi.Controllers.User
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult GetUserDistrbutorRemitPageList() {
public ApiResult GetUserDistrbutorRemitPageList()
{
var req = RequestParm;
var userInfo = AppletUserInfo;
ResultPageModel pagelist = JsonConvert.DeserializeObject<ResultPageModel>(req.msg.ToString());
......@@ -463,7 +499,7 @@ namespace Mall.WebApi.Controllers.User
x.RemitRemark,
x.RejectRemark,
x.AuditStatus,
AuditStatusName = x.AuditStatus.GetEnumName(),
AuditStatusName = x.AuditStatus.GetEnumName(),
x.TenantId,
CreateDate = x.CreateDate.HasValue ? x.CreateDate.Value.ToString("yyyy-MM-dd HH:mm:ss") : "",
AuditDate = x.AuditDate.HasValue ? x.AuditDate.Value.ToString("yyyy-MM-dd HH:mm:ss") : "",
......@@ -478,7 +514,8 @@ namespace Mall.WebApi.Controllers.User
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult GetUserMyTeamCustomInfo() {
public ApiResult GetUserMyTeamCustomInfo()
{
var userInfo = AppletUserInfo;
var obj = userModule.GetUserMyTeamCustomInfo(userInfo);
......@@ -490,7 +527,8 @@ namespace Mall.WebApi.Controllers.User
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult GetUserMyTeamPageList() {
public ApiResult GetUserMyTeamPageList()
{
var req = RequestParm;
var userInfo = AppletUserInfo;
ResultPageModel pageModel = JsonConvert.DeserializeObject<ResultPageModel>(req.msg.ToString());
......@@ -544,12 +582,14 @@ namespace Mall.WebApi.Controllers.User
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult SetUserFootMarkInfo() {
public ApiResult SetUserFootMarkInfo()
{
var req = RequestParm;
var userInfo = AppletUserInfo;
JObject parms = JObject.Parse(req.msg.ToString());
int GoodsId = parms.GetInt("GoodsId", 0);
if (GoodsId <= 0) {
if (GoodsId <= 0)
{
return ApiResult.ParamIsNull();
}
......@@ -558,7 +598,8 @@ namespace Mall.WebApi.Controllers.User
{
return ApiResult.Success();
}
else {
else
{
return ApiResult.Failed();
}
}
......@@ -568,7 +609,8 @@ namespace Mall.WebApi.Controllers.User
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult DelUserFootMarkInfo() {
public ApiResult DelUserFootMarkInfo()
{
var req = RequestParm;
var userInfo = AppletUserInfo;
JObject parms = JObject.Parse(req.msg.ToString());
......@@ -605,5 +647,198 @@ namespace Mall.WebApi.Controllers.User
}
#endregion
#region 优惠券
/// <summary>
/// 领劵中心
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult GetAllCouponPageList()
{
var req = RequestParm;
var userInfo = AppletUserInfo;
ResultPageModel pagelist = JsonConvert.DeserializeObject<ResultPageModel>(req.msg.ToString());
RB_DiscountCoupon_Extend demodel = JsonConvert.DeserializeObject<RB_DiscountCoupon_Extend>(req.msg.ToString());
demodel.UserId = userInfo.UserId;
demodel.TenantId = userInfo.TenantId;
demodel.MallBaseId = userInfo.MallBaseId;
var list = couponModule.GetAllCouponList(pagelist.pageIndex, pagelist.pageSize, out long count, demodel);
pagelist.count = Convert.ToInt32(count);
pagelist.pageData = list.Select(x => new
{
x.Name,
x.Describe,
x.MinConsumePrice,
x.MaxDiscountsPrice,
x.DiscountsPrice,
x.CouponType,
CouponId = x.ID,
x.IndateDay,
x.IndateType,
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") : "",
IsReceive = x.MemberNum > 0,
UseType = ((int)x.UseType == 1 || (int)x.UseType == 4) ? x.UseType.GetEnumName() : (x.ProductList != null && x.ProductList.Any() ? string.Join("、", x.ProductList.Select(x => x.Relevance)) : "")
});
return ApiResult.Success("", pagelist);
}
/// <summary>
/// 领取优惠券
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult GrantCoupon()
{
var parms = RequestParm;
var userInfo = AppletUserInfo;
var query = JsonConvert.DeserializeObject<RB_Member_DiscountCoupon_Extend>(RequestParm.msg.ToString());
query.TenantId = userInfo.TenantId;
query.MallBaseId = userInfo.MallBaseId;
query.UserId = userInfo.UserId;
if (query == null)
{
return ApiResult.Failed("请传入卡券信息");
}
else
{
var oldLogisticsModel = couponModule.GetDiscountCouponList(new RB_DiscountCoupon_Extend { TenantId = query.TenantId, MallBaseId = query.MallBaseId, ID = query.CouponId }).FirstOrDefault();
if (oldLogisticsModel == null || oldLogisticsModel.ID == 0)
{
return ApiResult.Failed("优惠券信息不存在,请核实后再操作");
}
if (oldLogisticsModel.TotalNum != -1)//判断优惠券剩余数量是够足够
{
if (oldLogisticsModel.TotalNum < 1)
{
return ApiResult.Failed("优惠券已领完");
}
}
//判断优惠券是否已领取
var receiveList = couponModule.GetMemberDiscountCouponList(query);
if (receiveList != null && receiveList.Any())
{
return ApiResult.Failed("您已领取优惠券");
}
var allMemberInfo = userModule.GetMemberUserInfo(userInfo.UserId);
//判断优惠券是否有等级限制
if (oldLogisticsModel.OnlyMember == 1)
{
if (!string.IsNullOrWhiteSpace(oldLogisticsModel.MemberLevel))
{
string[] allLevel = oldLogisticsModel.MemberLevel.Split(',');
if (allLevel.Where(x => x == allMemberInfo.MemberGrade.ToString()).Count() == 0)
{
return ApiResult.Failed("会员等级不符合");
}
}
}
RB_Member_DiscountCoupon_Extend memberCoupon = new RB_Member_DiscountCoupon_Extend();
memberCoupon.Id = 0;
memberCoupon.UserId = userInfo.UserId;
memberCoupon.Description = oldLogisticsModel.Describe;
memberCoupon.CreateDate = System.DateTime.Now;
memberCoupon.TenantId = userInfo.TenantId;
memberCoupon.MallBaseId = userInfo.MallBaseId;
memberCoupon.Remarks = "";
memberCoupon.CouponId = oldLogisticsModel.ID;
if (oldLogisticsModel.IndateType == Common.Enum.MarketingCenter.IndateTypeEnum.DayHorizon)
{
memberCoupon.StartDate = System.DateTime.Now;
memberCoupon.EndDate = memberCoupon.StartDate.Value.AddDays(oldLogisticsModel.IndateDay);
}
else
{
memberCoupon.StartDate = oldLogisticsModel.StartDate;
memberCoupon.EndDate = oldLogisticsModel.EndDate;
}
var memberList = new List<RB_Member_DiscountCoupon_Extend>();
memberList.Add(memberCoupon);
bool result = couponModule.GrantCoupon(memberList, oldLogisticsModel);
if (result)
{
return ApiResult.Success("优惠券信息领取成功");
}
else
{
return ApiResult.Failed("优惠券信息领取成功");
}
}
}
/// <summary>
/// 我的优惠券
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult GetMemberCouponPageList()
{
var req = RequestParm;
var userInfo = AppletUserInfo;
ResultPageModel pagelist = JsonConvert.DeserializeObject<ResultPageModel>(req.msg.ToString());
RB_DiscountCoupon_Extend demodel = JsonConvert.DeserializeObject<RB_DiscountCoupon_Extend>(req.msg.ToString());
demodel.UserId = userInfo.UserId;
demodel.TenantId = userInfo.TenantId;
demodel.MallBaseId = userInfo.MallBaseId;
var list = couponModule.GetMemberDisCouponList(pagelist.pageIndex, pagelist.pageSize, out long count, demodel);
pagelist.count = Convert.ToInt32(count);
pagelist.pageData = list.Select(x => new
{
x.Name,
x.Describe,
x.MinConsumePrice,
x.MaxDiscountsPrice,
x.DiscountsPrice,
x.CouponType,
x.ID,
x.MemberCouponId,
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") : "",
UseType = ((int)x.UseType == 1 || (int)x.UseType == 4) ? x.UseType.GetEnumName() : (x.ProductList != null && x.ProductList.Any() ? string.Join("、", x.ProductList.Select(x => x.Relevance)) : "")
});
return ApiResult.Success("", pagelist);
}
#endregion
#region 个人中心- 积分明细
/// <summary>
/// 个人中心- 积分明细
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult GetMemberIntegralPageList()
{
var req = RequestParm;
var userInfo = AppletUserInfo;
ResultPageModel pagelist = JsonConvert.DeserializeObject<ResultPageModel>(req.msg.ToString());
RB_Member_Integral_Extend demodel = JsonConvert.DeserializeObject<RB_Member_Integral_Extend>(req.msg.ToString());
demodel.UserId = userInfo.UserId;
demodel.TenantId = userInfo.TenantId;
demodel.MallBaseId = userInfo.MallBaseId;
var list = userModule.GetMemberIntegralPageList(pagelist.pageIndex, pagelist.pageSize, out long count, demodel);
pagelist.count = Convert.ToInt32(count);
pagelist.pageData = list.Select(x => new
{
x.Remarks,
x.Description,
CreateDate = x.CreateDate.HasValue ? x.CreateDate.Value.ToString("yyyy-MM-dd HH:mm:ss") : "",
x.Integral,
x.Type
});
return ApiResult.Success("", pagelist);
}
#endregion
}
}
\ No newline at end of file
......@@ -20,6 +20,7 @@ using Mall.Common.Plugin;
using Mall.Common.Enum.MallBase;
using Mall.Model.Entity.User;
using Mall.Module.Product;
using Microsoft.AspNetCore.Authorization;
namespace Mall.WebApi.Controllers.User
{
......@@ -76,6 +77,7 @@ namespace Mall.WebApi.Controllers.User
#region 商户信息
[AllowAnonymous]
/// <summary>
/// 用户登录
/// </summary>
......@@ -151,6 +153,7 @@ namespace Mall.WebApi.Controllers.User
/// 用户注册第一步
/// </summary>
/// <returns></returns>
[AllowAnonymous]
public ApiResult SetTenantFirst()
{
var extModel = JsonConvert.DeserializeObject<RB_Tenant_Extend>(RequestParm.msg.ToString());
......@@ -170,6 +173,7 @@ namespace Mall.WebApi.Controllers.User
/// 用户注册第二步
/// </summary>
/// <returns></returns>
[AllowAnonymous]
public ApiResult SetTenantSecond()
{
var extModel = JsonConvert.DeserializeObject<RB_Tenant_Extend>(RequestParm.msg.ToString());
......@@ -193,6 +197,7 @@ namespace Mall.WebApi.Controllers.User
/// 修改密码账号
/// </summary>
/// <returns></returns>
[AllowAnonymous]
public ApiResult UpdateTenantPwd()
{
var extModel = JsonConvert.DeserializeObject<RB_Tenant_Extend>(RequestParm.msg.ToString());
......
......@@ -14,6 +14,7 @@ using Mall.Common.Enum.User;
using Mall.CacheManager.User;
using Newtonsoft.Json.Linq;
using Mall.Common;
using Microsoft.AspNetCore.Authorization;
namespace Mall.WebApi.Controllers.User
{
......
......@@ -17,6 +17,10 @@ using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Configuration.Json;
using Mall.CacheManager.User;
using System.Linq;
using Microsoft.AspNetCore.Mvc.Authorization;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http.Features;
namespace Mall.WebApi.Filter
{
......@@ -39,22 +43,15 @@ namespace Mall.WebApi.Filter
#region api监控日志
parm = DoApiMonitorLog(actionContext, ref token);
#endregion
//不需要验证TOKEN的CMD
List<string> notValidatList = new List<string>()
{
"/api/Tenant/Login",//用户登录
"/api/Tenant/SetTenantFirst",//用户注册第一步
"/api/Tenant/SetTenantSecond",//用户注册第二步
"/api/Tenant/UpdateTenantPwd",//忘记密码
};
bool isCheckToken = true;
foreach (var item in notValidatList)
var endpoint = actionContext.HttpContext.Features.Get<IEndpointFeature>()?.Endpoint;
if (endpoint != null && endpoint.Metadata.GetMetadata<AllowAnonymousAttribute>() != null)
{
if (item== parm["cmd"].ToString())
{
isCheckToken = false;
}
isCheckToken = false;
}
#region Token校验
if (isCheckToken)
......
......@@ -5,6 +5,7 @@ using System.Text.Encodings.Web;
using System.Text.Unicode;
using System.Threading.Tasks;
using Mall.ThirdCore.Message;
using Mall.WebApi.Filter;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
......@@ -34,7 +35,8 @@ namespace Mall.WebApi
.Configure<IISServerOptions>(x => x.AllowSynchronousIO = true);
services.AddControllers();
services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>(); //注入http上下文
services.AddMvc().AddJsonOptions(options =>
{
options.JsonSerializerOptions.Encoder = JavaScriptEncoder.Create(UnicodeRanges.All);
......@@ -44,7 +46,9 @@ namespace Mall.WebApi
{
"http://localhost:8081",
"http://localhost:8080",
"http://localhost:8082"
"http://localhost:8082",
"http://127.0.0.1:50512",
"http://127.0.0.1:20224"
};
services.AddCors(options => options.AddPolicy("AllowCors", policy => policy.AllowAnyHeader().AllowAnyMethod().AllowCredentials().WithOrigins(corsArray.ToArray())));
}
......@@ -65,6 +69,7 @@ namespace Mall.WebApi
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
......
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