Commit 727c6330 authored by 吴春's avatar 吴春
parents 4f39765f 7409b012
......@@ -268,6 +268,14 @@ namespace Mall.Model.Entity.Product
/// </summary>
public DateTime? ReceivingTime { get; set; }
/// <summary>
/// 完成时间
/// </summary>
public DateTime? FinishTime { get; set; }
/// <summary>
/// 取消时间
/// </summary>
public DateTime? CancelTime { get; set; }
/// <summary>
/// 是否申请取消订单 1是 2否
/// </summary>
public int? IsApplyForCancel { get; set; }
......
......@@ -27,6 +27,10 @@ namespace Mall.Model.Extend.MarketingCenter
/// 发放数量
/// </summary>
public int GrantNum { get; set; }
/// <summary>
/// 优惠卷ids
/// </summary>
public string CouponIds { get; set; }
/// <summary>
/// 会员等级
......
......@@ -32,8 +32,1028 @@ namespace Mall.Model.Extend.MarketingCenter
/// <summary>
/// 前端组件
/// </summary>
public List<object> ComponentDataList { get; set; }
public List<ComponentItem> ComponentDataList { get; set; }
}
/// <summary>
/// 组件项
/// </summary>
public class ComponentItem
{
/// <summary>
/// 组件Id
/// </summary>
public string Id { get; set; }
/// <summary>
/// 是否选中
/// </summary>
public bool isCked { get; set; }
/// <summary>
/// 组件JSON数据
/// </summary>
public object data { get; set; }
}
/// <summary>
/// 搜索插件
/// </summary>
public class searchItem
{
/// <summary>
/// 搜索框颜色
/// </summary>
public string color { get; set; }
/// <summary>
/// 背景颜色
/// </summary>
public string background { get; set; }
/// <summary>
/// 圆角
/// </summary>
public int radius { get; set; }
/// <summary>
/// 提示文字
/// </summary>
public string placeholder { get; set; }
/// <summary>
/// 文字颜色
/// </summary>
public string textColor { get; set; }
/// <summary>
/// 文字位置
/// </summary>
public string textPosition { get; set; }
}
/// <summary>
/// 导航组件
/// </summary>
public class navItem
{
/// <summary>
/// 颜色
/// </summary>
public string color { get; set; }
/// <summary>
/// 每页行数
/// </summary>
public int rows { get; set; }
/// <summary>
/// 每行个数
/// </summary>
public int columns { get; set; }
/// <summary>
/// 左右滑动
/// </summary>
public bool scroll { get; set; }
/// <summary>
/// 导航图标
/// </summary>
public List<navIconItem> navs { get; set; }
/// <summary>
/// 背景图片
/// </summary>
public bool showImg { get; set; }
/// <summary>
/// 背景颜色
/// </summary>
public string backgroundColor { get; set; }
/// <summary>
/// 背景链接
/// </summary>
public string backgroundPicUrl { get; set; }
/// <summary>
/// 图片位置
/// </summary>
public int position { get; set; }
/// <summary>
/// 填充方式
/// </summary>
public int mode { get; set; }
/// <summary>
/// 背景图宽
/// </summary>
public int backgroundHeight { get; set; }
/// <summary>
/// 背景图高
/// </summary>
public int backgroundWidth { get; set; }
}
/// <summary>
/// 导航图标明细
/// </summary>
public class navIconItem
{
/// <summary>
/// 导航图标
/// </summary>
public string icon { get; set; }
/// <summary>
/// 导航名称
/// </summary>
public string name { get; set; }
/// <summary>
/// 导链接
/// </summary>
public string url { get; set; }
/// <summary>
/// navigate
/// </summary>
public string openType { get; set; }
/// <summary>
/// diy
/// </summary>
public string key { get; set; }
}
/// <summary>
/// 轮播广告插件
/// </summary>
public class bannerItem
{
/// <summary>
/// 样式
/// </summary>
public int style { get; set; }
/// <summary>
/// 填充方式0-留白 1填充
/// </summary>
public int fill { get; set; }
/// <summary>
/// 默认高度
/// </summary>
public int height { get; set; }
/// <summary>
/// 轮播图
/// </summary>
public List<bannerDetailItem> banners { get; set; }
}
/// <summary>
/// 轮播图明细
/// </summary>
public class bannerDetailItem
{
/// <summary>
/// 轮播图图片
/// </summary>
public string picUrl { get; set; }
/// <summary>
/// 轮播图链接
/// </summary>
public string url { get; set; }
/// <summary>
/// openType
/// </summary>
public string openType { get; set; }
}
/// <summary>
/// 公告组件
/// </summary>
public class noticeItem
{
/// <summary>
/// 公告名称
/// </summary>
public string name { get; set; }
/// <summary>
/// 公告内容
/// </summary>
public string content { get; set; }
/// <summary>
/// 公告ICON
/// </summary>
public string icon { get; set; }
/// <summary>
/// 公告文字颜色
/// </summary>
public string textColor { get; set; }
/// <summary>
/// 公告文字背景颜色
/// </summary>
public string background { get; set; }
/// <summary>
/// 公告文字headerUrl
/// </summary>
public string headerUrl { get; set; }
/// <summary>
/// 按钮颜色
/// </summary>
public string btnColor { get; set; }
/// <summary>
/// 按钮宽度
/// </summary>
public int btnWidth { get; set; }
/// <summary>
/// 按钮高度
/// </summary>
public int btnHeight { get; set; }
/// <summary>
/// 按钮圆角
/// </summary>
public int btnRadius { get; set; }
/// <summary>
/// 按钮文字
/// </summary>
public string btnText { get; set; }
/// <summary>
/// 按钮文字颜色
/// </summary>
public string btnTextColor { get; set; }
}
/// <summary>
/// 标题组件
/// </summary>
public class linkItem
{
/// <summary>
/// 标题
/// </summary>
public string title { get; set; }
/// <summary>
/// 标题样式
/// </summary>
public string style { get; set; }
/// <summary>
/// 字体大小
/// </summary>
public string fontSize { get; set; }
/// <summary>
/// 标题位置
/// </summary>
public string position { get; set; }
/// <summary>
/// 样式颜色
/// </summary>
public string styleColor { get; set; }
/// <summary>
/// 链接
/// </summary>
public linkDetailItem link { get; set; }
/// <summary>
/// 图标开关
/// </summary>
public bool picSwitch { get; set; }
/// <summary>
/// 箭头开关
/// </summary>
public bool arrowsSwitch { get; set; }
/// <summary>
/// 图标地址
/// </summary>
public string picUrl { get; set; }
/// <summary>
/// 文字颜色
/// </summary>
public string color { get; set; }
/// <summary>
/// 背景颜色
/// </summary>
public string background { get; set; }
}
/// <summary>
/// 链接明细
/// </summary>
public class linkDetailItem
{
/// <summary>
/// 链接名称
/// </summary>
public string name { get; set; }
/// <summary>
/// 链接URL
/// </summary>
public string url { get; set; }
}
/// <summary>
/// 图片广告插件
/// </summary>
public class rubikItem
{
/// <summary>
/// 样式-选取几张图
/// </summary>
public int style { get; set; }
/// <summary>
/// 图片件间隔
/// </summary>
public int space { get; set; }
/// <summary>
/// 选中的第几张图 对应的style_list里的height
/// </summary>
public int height { get; set; }
/// <summary>
/// 选中的第几张图 对应的style_list里的w
/// </summary>
public int w { get; set; }
/// <summary>
/// 选中的第几张图 对应的style_list里的h
/// </summary>
public int h { get; set; }
/// <summary>
/// 热区划分
/// </summary>
public List<hotspotItem> hotspot { get; set; }
/// <summary>
/// 选中的第几张图的小区域对应的数据
/// </summary>
public List<rubikDetailItem> list { get; set; }
}
/// <summary>
/// 图片广告详情
/// </summary>
public class rubikDetailItem
{
public string backgroundColor { get; set; }
public int numberX { get; set; }
public int numberY { get; set; }
public int x { get; set; }
public int y { get; set; }
public int w { get; set; }
public int h { get; set; }
public rubikLinkItem link { get; set; }
}
/// <summary>
/// 链接地址
/// </summary>
public class rubikLinkItem
{
/// <summary>
/// 页面路径
/// </summary>
public string PageUrl { get; set; }
/// <summary>
/// 是否有参数
/// </summary>
public int IsParameter { get; set; }
/// <summary>
/// 参数值
/// </summary>
public string ParameterValue { get; set; }
/// <summary>
/// 页面名称
/// </summary>
public string PageName { get; set; }
}
/// <summary>
/// 热区
/// </summary>
public class hotspotItem
{
public int height { get; set; }
public int width { get; set; }
public int left { get; set; }
public int top { get; set; }
public int defaultX { get; set; }
public int defaultY { get; set; }
public bool is_close { get; set; }
public rubikLinkItem link { get; set; }
public string open_type { get; set; }
}
/// <summary>
/// 视频插件
/// </summary>
public class videoItem
{
/// <summary>
/// 图片地址
/// </summary>
public string pic_url { get; set; }
/// <summary>
/// 视频地址
/// </summary>
public string url { get; set; }
}
/// <summary>
/// 商品插件
/// </summary>
public class goodsItem
{
/// <summary>
/// 显示分类
/// </summary>
public bool showCat { get; set; }
/// <summary>
/// 分类栏位置
/// </summary>
public string catPosition { get; set; }
/// <summary>
/// 分类样式
/// </summary>
public int catStyle { get; set; }
/// <summary>
/// 商品添加方式
/// </summary>
public int addGoodsType { get; set; }
/// <summary>
/// 商品数量
/// </summary>
public int goodsLength { get; set; }
/// <summary>
/// 列表样式
/// </summary>
public int listStyle { get; set; }
/// <summary>
/// 商品封面图宽高比例[1-1]
/// </summary>
public string goodsCoverProportion { get; set; }
/// <summary>
/// 商品封面图填充
/// </summary>
public int fill { get; set; }
/// <summary>
/// 商品样式
/// </summary>
public int goodsStyle { get; set; }
/// <summary>
/// 文本样式
/// </summary>
public int textStyle { get; set; }
/// <summary>
/// 显示商品名称
/// </summary>
public bool showGoodsName { get; set; }
/// <summary>
/// 显示商品价格
/// </summary>
public bool showGoodsPrice { get; set; }
/// <summary>
/// 显示购买按钮
/// </summary>
public bool showBuyBtn { get; set; }
/// <summary>
/// 购买按钮样式[cart]
/// </summary>
public string buyBtn { get; set; }
/// <summary>
/// 购买按钮文字样式
/// </summary>
public int buyBtnStyle { get; set; }
/// <summary>
/// 购买按钮文字
/// </summary>
public string buyBtnText { get; set; }
/// <summary>
/// 购买按钮颜色
/// </summary>
public string buttonColor { get; set; }
/// <summary>
/// 显示商品角标
/// </summary>
public bool showGoodsTag { get; set; }
/// <summary>
/// 商品角标自定义
/// </summary>
public bool customizeGoodsTag { get; set; }
/// <summary>
/// 商品角标链接
/// </summary>
public string goodsTagPicUrl { get; set; }
/// <summary>
/// 是否显示图片背景
/// </summary>
public bool showImg { get; set; }
/// <summary>
/// 背景颜色
/// </summary>
public string backgroundColor { get; set; }
/// <summary>
/// 背景链接
/// </summary>
public string backgroundPicUrl { get; set; }
/// <summary>
///
/// </summary>
public int position { get; set; }
/// <summary>
///
/// </summary>
public int mode { get; set; }
/// <summary>
/// 背景高
/// </summary>
public int backgroundHeight { get; set; }
/// <summary>
/// 背景宽
/// </summary>
public int backgroundWidth { get; set; }
/// <summary>
/// 分类列表
/// </summary>
public List<catItem> catList { get; set; }
/// <summary>
/// 商品列表
/// </summary>
public List<GoodsDetailsItem> list { get; set; }
}
/// <summary>
/// 商品分类
/// </summary>
public class catItem
{
/// <summary>
/// 分类编号
/// </summary>
public int id { get; set; }
/// <summary>
/// 分类名称
/// </summary>
public string name { get; set; }
/// <summary>
/// 分类名称
/// </summary>
public string menuName { get; set; }
/// <summary>
/// 商品数量
/// </summary>
public int goodsNum { get; set; }
/// <summary>
/// 商品列表
/// </summary>
public List<GoodsDetailsItem> goodsList { 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; }
}
/// <summary>
/// 门店插件
/// </summary>
public class storeItem
{
/// <summary>
/// 导航图标
/// </summary>
public string navPicUrl { get; set; }
/// <summary>
/// 评分图标
/// </summary>
public string scorePicUrl { get; set; }
/// <summary>
/// 显示门店名称
/// </summary>
public bool showName { get; set; }
/// <summary>
/// 显示评分
/// </summary>
public bool showScore { get; set; }
/// <summary>
/// 显示电话
/// </summary>
public bool showTel { get; set; }
/// <summary>
/// 门店列表
/// </summary>
public List<storeDetailItem> list { get; set; }
}
/// <summary>
/// 门店详情
/// </summary>
public class storeDetailItem
{
/// <summary>
/// 门店编号
/// </summary>
public int id { get; set; }
/// <summary>
/// 门店名称
/// </summary>
public string name { get; set; }
/// <summary>
/// 电话
/// </summary>
public string mobile { get; set; }
}
/// <summary>
/// 版权插件
/// </summary>
public class copyrightItem
{
/// <summary>
/// 图片
/// </summary>
public string picUrl { get; set; }
/// <summary>
/// 版权文字
/// </summary>
public string text { get; set; }
/// <summary>
/// 版权背景颜色
/// </summary>
public string backgroundColor { get; set; }
/// <summary>
/// 链接地址
/// </summary>
public string link { get; set; }
}
/// <summary>
/// 签到插件
/// </summary>
public class checkinItem
{
/// <summary>
/// 背景图
/// </summary>
public string backgroundPicUrl { get; set; }
/// <summary>
/// 显示文字
/// </summary>
public bool showText { get; set; }
/// <summary>
/// 文字位置
/// </summary>
public string textPosition { get; set; }
/// <summary>
/// 文本颜色
/// </summary>
public string textColor { get; set; }
/// <summary>
/// 点击热区
/// </summary>
public checkInHotSpot hotspot { get; set; }
}
/// <summary>
/// 签到热区
/// </summary>
public class checkInHotSpot
{
public int height { get; set; }
public int width { get; set; }
public int left { get; set; }
public int top { get; set; }
public int defaultX { get; set; }
public int defaultY { get; set; }
/// <summary>
/// 显示文字
/// </summary>
public bool is_close { get; set; }
/// <summary>
/// link
/// </summary>
public string link { get; set; }
/// <summary>
/// open_type
/// </summary>
public string open_type { get; set; }
}
/// <summary>
/// 用户信息插件
/// </summary>
public class userinfoItem
{
public int style { get; set; }
public string backgroundPicUrl { get; set; }
public string backgroundColor { get; set; }
}
/// <summary>
/// 用户订单插件
/// </summary>
public class userorderItem
{
/// <summary>
/// 用户订单导航
/// </summary>
public List<userorderNav> navs { get; set; }
/// <summary>
/// 背景颜色
/// </summary>
public string backgroundColor { get; set; }
}
/// <summary>
/// 用户订单导航详细
/// </summary>
public class userorderNav
{
/// <summary>
/// 链接
/// </summary>
public string url { get; set; }
/// <summary>
/// openType【navigate】
/// </summary>
public string openType { get; set; }
/// <summary>
/// 图片地址
/// </summary>
public string picUrl { get; set; }
/// <summary>
/// 链接文件
/// </summary>
public string text { get; set; }
}
/// <summary>
/// 地图插件
/// </summary>
public class mapItem
{
/// <summary>
/// 经纬度
/// </summary>
public string location { get; set; }
public int height { get; set; }
public int paddingY { get; set; }
public int paddingX { get; set; }
public int marginTop { get; set; }
/// <summary>
/// marginTopColor
/// </summary>
public string marginTopColor { get; set; }
/// <summary>
/// backgroundColor
/// </summary>
public string backgroundColor { get; set; }
/// <summary>
/// backgroundPicUrl
/// </summary>
public string backgroundPicUrl { get; set; }
}
/// <summary>
/// 微信公众号插件
/// </summary>
public class mplinkItem
{
/// <summary>
/// 位置auto
/// </summary>
public string position { get; set; }
}
/// <summary>
/// 图文插件
/// </summary>
public class imagetextItem
{
/// <summary>
/// 图文内容
/// </summary>
public string content { get; set; }
}
/// <summary>
/// 优惠券插件
/// </summary>
public class couponItem
{
/// <summary>
/// 字体颜色
/// </summary>
public string textColor { get; set; }
/// <summary>
/// 不可领取
/// </summary>
public string receiveBg { get; set; }
/// <summary>
/// 可领取
/// </summary>
public string unclaimedBg { get; set; }
/// <summary>
/// showImg
/// </summary>
public bool showImg { get; set; }
/// <summary>
/// 背景颜色
/// </summary>
public string backgroundColor { get; set; }
/// <summary>
/// backgroundPicUrl
/// </summary>
public string backgroundPicUrl { get; set; }
public int position { get; set; }
public int mode { get; set; }
public int backgroundHeight { get; set; }
public int backgroundWidth { get; set; }
}
/// <summary>
/// 倒计时插件
/// </summary>
public class timerItem
{
/// <summary>
/// 图片
/// </summary>
public string picUrl { get; set; }
/// <summary>
/// 开始时间
/// </summary>
public string startDateTime { get; set; }
/// <summary>
/// 结束时间
/// </summary>
public string endDateTime { get; set; }
/// <summary>
/// 链接
/// </summary>
public timerLink link { get; set; }
}
/// <summary>
/// 倒计时链接
/// </summary>
public class timerLink
{
/// <summary>
/// 链接
/// </summary>
public string url { get; set; }
/// <summary>
/// 打开类型
/// </summary>
public string openType { get; set; }
}
}
......@@ -13,6 +13,9 @@ namespace Mall.Model.Extend.Product
[DB(ConnectionName = "DefaultConnection")]
public class RB_Goods_ExpressRelevance_Extend : RB_Goods_ExpressRelevance
{
/// <summary>
/// 订单ids
/// </summary>
public string OrderIds { get; set; }
}
}
......@@ -25,5 +25,33 @@ namespace Mall.Model.Extend.Product
/// 明细ids
/// </summary>
public string OrderDetailIds { get; set; }
/// <summary>
/// 是否已发货
/// </summary>
public int? IsBindExpress { get; set; }
/// <summary>
/// 商品分类ids
/// </summary>
public List<int> CategoryIdList { get; set; }
/// <summary>
/// 剩余库存
/// </summary>
public int InventoryNum { get; set; }
/// <summary>
/// 规格价格列表id
/// </summary>
public int SpeciPriceId { get; set; }
/// <summary>
/// 是否开启单独返佣 1是 2否
/// </summary>
public int? SeparateDistribution { get; set; }
/// <summary>
/// 分销类型 1普通 2详细
/// </summary>
public int? SeparateDistributionType { get; set; }
/// <summary>
/// 分销佣金类型 1百分比 2固定值
/// </summary>
public int? SeparateDistributionMoneyType { get; set; }
}
}
......@@ -13,6 +13,11 @@ namespace Mall.Model.Extend.Product
[DB(ConnectionName = "DefaultConnection")]
public class RB_Goods_Order_Extend : RB_Goods_Order
{
public int? IsFormShoppingCart { get; set; }
/// <summary>
/// 收货地址id
/// </summary>
public int? ShoppingAddressId { get; set; }
/// <summary>
/// 商品id
/// </summary>
......
......@@ -53,5 +53,9 @@ namespace Mall.Model.Extend.User
/// 下单结束时间
/// </summary>
public DateTime? EndDate { get; set; }
/// <summary>
/// 优惠卷ids
/// </summary>
public string CouponIds { get; set; }
}
}
......@@ -138,6 +138,41 @@ namespace Mall.Module.MarketingCenter
return flag;
}
/// <summary>
/// 更新模板禁用、启用
/// </summary>
/// <param name="Id"></param>
/// <param name="IsUse"></param>
/// <returns></returns>
public bool SetMiniprogramPageTemplIsUseModule(object Id, int IsUse)
{
bool flag = false;
Dictionary<string, object> fileds = new Dictionary<string, object>()
{
{nameof(RB_Miniprogram_Page_Templ_Extend.IsUse),IsUse }
};
flag = pageRepository.Update(fileds, new WhereHelper(nameof(RB_Miniprogram_Page_Templ_Extend.Id), Id));
return flag;
}
/// <summary>
/// 更新模板是否设为首页
/// </summary>
/// <param name="Id"></param>
/// <param name="IsHome"></param>
/// <returns></returns>
public bool SetMiniprogramPageTemplIsHomeModule(object Id, int IsHome)
{
bool flag = false;
flag = pageRepository.UpdateIsHomeRepository();
Dictionary<string, object> fileds = new Dictionary<string, object>()
{
{nameof(RB_Miniprogram_Page_Templ_Extend.IsHome),IsHome }
};
flag = pageRepository.Update(fileds, new WhereHelper(nameof(RB_Miniprogram_Page_Templ_Extend.Id), Id));
return flag;
}
/// <summary>
/// 更新自定义页面状态
/// </summary>
......
......@@ -88,6 +88,37 @@ namespace Mall.Module.MarketingCenter
{
extModel = new RB_Miniprogram_Template_Extend();
}
if (extModel.TemplateData != null && !string.IsNullOrEmpty(extModel.TemplateData))
{
extModel.ComponentDataList = JsonHelper.DeserializeObject<List<ComponentItem>>(extModel.TemplateData);
if (extModel.ComponentDataList != null && extModel.ComponentDataList.Count > 0)
{
foreach (var item in extModel.ComponentDataList)
{
switch (item.Id)
{
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 "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;
}
}
}
}
return extModel;
}
......
......@@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Mall.Common;
using Mall.Common.API;
using Mall.Common.Enum.Goods;
......@@ -11,6 +12,7 @@ using Mall.Model.Extend.Product;
using Mall.Model.Extend.User;
using Mall.Repository;
using Mall.Repository.BaseSetUp;
using Mall.Repository.MarketingCenter;
using Mall.Repository.Product;
using Mall.Repository.User;
using Newtonsoft.Json;
......@@ -55,6 +57,10 @@ namespace Mall.Module.Product
/// </summary>
private readonly RB_Distributor_GradeRepository distributor_GradeRepository = new RB_Distributor_GradeRepository();
/// <summary>
/// 分销基础配置
/// </summary>
private readonly RB_Distributor_BasicsRepository distributor_BasicsRepository = new RB_Distributor_BasicsRepository();
/// <summary>
/// 会员等级
/// </summary>
private readonly RB_Member_GradeRepository member_GradeRepository = new RB_Member_GradeRepository();
......@@ -120,7 +126,13 @@ namespace Mall.Module.Product
/// 收货地址
/// </summary>
private readonly RB_Member_ShippingAddressRepository member_ShippingAddressRepository = new RB_Member_ShippingAddressRepository();
/// <summary>
/// 优惠卷
/// </summary>
private readonly RB_Member_CouponRepository member_CouponRepository = new RB_Member_CouponRepository();
private readonly RB_DiscountCouponRepository discountCouponRepository = new RB_DiscountCouponRepository();
private readonly RB_DiscountCoupon_ProductRepository discountCoupon_ProductRepository = new RB_DiscountCoupon_ProductRepository();
#region 购物车
......@@ -214,7 +226,7 @@ namespace Mall.Module.Product
}
}
return list;
}
}
/// <summary>
/// 加入购物车
......@@ -383,7 +395,8 @@ namespace Mall.Module.Product
if (demodel.DetailList.Any()) {
string GoodsIds = string.Join(",", demodel.DetailList.Select(x => x.GoodsId));
var gList = goodsRepository.GetList(new RB_Goods_Extend() { GoodsIds = GoodsIds, TenantId = demodel.TenantId, MallBaseId = demodel.MallBaseId });
var clist = goods_CategoryRepository.GetList(new RB_Goods_Category_Extend() { GoodsIds = GoodsIds, TenantId = demodel.TenantId, MallBaseId = demodel.MallBaseId });
var speciList = goods_SpecificationRepository.GetList(new RB_Goods_Specification_Extend() { GoodsIds = GoodsIds, TenantId = demodel.TenantId, MallBaseId = demodel.MallBaseId });
var speciVList = goods_SpecificationValueRepository.GetList(new RB_Goods_SpecificationValue_Extend() { GoodsIds = GoodsIds, TenantId = demodel.TenantId, MallBaseId = demodel.MallBaseId });
var speciPList = goods_SpecificationPriceRepository.GetList(new RB_Goods_SpecificationPrice_Extend() { GoodsIds = GoodsIds, TenantId = demodel.TenantId, MallBaseId = demodel.MallBaseId });
......@@ -420,6 +433,7 @@ namespace Mall.Module.Product
if (gmodel == null || gmodel.GoodsStatus != 1) {
continue;
}
var categoryList = clist.Where(x => x.GoodsId == item.Id).ToList();
gmodel.CoverImage = "";
if (!string.IsNullOrEmpty(gmodel.CarouselImage) && gmodel.CarouselImage != "[]")
{
......@@ -568,7 +582,12 @@ namespace Mall.Module.Product
item.GoodsId,
GoodsName = gmodel.Name,
gmodel.CoverImage,
CategoryList = categoryList.Select(x=>new {
x.Id,
x.CategoryName
}),
SpecificationList = gmodel.SpecificationNameList,
item.SpecificationSort,
item.Number,
SellingPrice = (gmodel.SellingPrice ?? 0) * (item.Number ?? 0),
MemberPrice = gmodel.MemberPrice * (item.Number ?? 0),
......@@ -594,10 +613,1023 @@ namespace Mall.Module.Product
DetailList = DList,
TotalExpress,
umodel.MemberGrade,
DeliveryMethod = (int)OrderDeliveryMethodEnum.ExpressDistribution,
Level_Show = umodel.MemberGrade > 0 ? 1 : 2
});
}
/// <summary>
/// 获取结算页面 快递修改后 快递费用
/// </summary>
/// <param name="demodel"></param>
/// <returns></returns>
public ApiResult GetAppletGoodsSettlementExpress(RB_Goods_Order_Extend demodel)
{
var umodel = member_UserRepository.GetEntity(demodel.UserId);
if (umodel == null)
{
return ApiResult.Failed("用户不存在");
}
//获取用户的默认收货地址
var defModel = member_ShippingAddressRepository.GetEntity(demodel.ShoppingAddressId);
List<int> disList = new List<int>();
if (defModel == null)
{
return ApiResult.Failed("收货地址不存在");
}
else
{
disList.Add(defModel.Province ?? 0);
disList.Add(defModel.City ?? 0);
disList.Add(defModel.District ?? 0);
}
List<object> DList = new List<object>();
decimal TotalExpress = 0;
int DefFreightId = 0;
if (demodel.DetailList.Any())
{
string GoodsIds = string.Join(",", demodel.DetailList.Select(x => x.GoodsId));
var gList = goodsRepository.GetList(new RB_Goods_Extend() { GoodsIds = GoodsIds, TenantId = demodel.TenantId, MallBaseId = demodel.MallBaseId });
var speciPList = goods_SpecificationPriceRepository.GetList(new RB_Goods_SpecificationPrice_Extend() { GoodsIds = GoodsIds, TenantId = demodel.TenantId, MallBaseId = demodel.MallBaseId });
List<Model.Extend.BaseSetUp.RB_Logistics_Rules_Extend> rulesList = new List<Model.Extend.BaseSetUp.RB_Logistics_Rules_Extend>();
List<Model.Extend.BaseSetUp.RB_Logistics_RulesPrice_Extend> priceList = new List<Model.Extend.BaseSetUp.RB_Logistics_RulesPrice_Extend>();
List<Model.Extend.BaseSetUp.RB_Logistics_RulesRegion_Extend> regionList = new List<Model.Extend.BaseSetUp.RB_Logistics_RulesRegion_Extend>();
if (gList.Any() && defModel.Id > 0)
{
List<int> FreightIdList = new List<int>();
if (gList.Where(x => x.FreightId > 0).Any())
{
FreightIdList.AddRange(gList.Where(x => x.FreightId > 0).Select(x => x.FreightId ?? 0).ToList());
}
if (gList.Where(x => x.FreightId == 0).Any())
{
//查询默认
DefFreightId = logistics_RulesRepository.GetLogisticsRulesList(new Model.Extend.BaseSetUp.RB_Logistics_Rules_Extend() { IsDefault = 1, TenantId = demodel.TenantId, MallBaseId = demodel.MallBaseId }).FirstOrDefault()?.ID ?? 0;
FreightIdList.Add(DefFreightId);
}
if (FreightIdList.Any())
{
rulesList = logistics_RulesRepository.GetLogisticsRulesList(new Model.Extend.BaseSetUp.RB_Logistics_Rules_Extend() { RulesIds = string.Join(",", FreightIdList), TenantId = demodel.TenantId, MallBaseId = demodel.MallBaseId });
priceList = logistics_RulesPriceRepository.GetListRepository(new Model.Extend.BaseSetUp.RB_Logistics_RulesPrice_Extend() { TenantId = demodel.TenantId, MallBaseId = demodel.MallBaseId, RulesIds = string.Join(",", FreightIdList) });
if (priceList.Any())
{
string priceIds = string.Join(",", priceList.Select(x => x.ID));
regionList = logistics_RulesRegionRepository.GetListRepository(new Model.Extend.BaseSetUp.RB_Logistics_RulesRegion_Extend() { TenantId = demodel.TenantId, MallBaseId = demodel.MallBaseId, PriceIds = priceIds });
}
}
}
foreach (var item in demodel.DetailList)
{
var gmodel = gList.Where(x => x.Id == item.GoodsId).FirstOrDefault();
if (gmodel == null || gmodel.GoodsStatus != 1)
{
continue;
}
int GoodsWeight = gmodel.GoodsWeight ?? 0;//商品重量
#region 规格
//验证规格是否已失效
if (gmodel.IsCustomSpecification == 1)
{
if (string.IsNullOrEmpty(item.SpecificationSort))
{
continue;
}
if (!speciPList.Where(x => x.GoodsId == item.GoodsId && x.SpecificationSort == item.SpecificationSort).Any())
{
continue;
}
}
else
{
if (!string.IsNullOrEmpty(item.SpecificationSort))
{
continue;
}
}
if (!string.IsNullOrEmpty(item.SpecificationSort))
{
var speciPModel = speciPList.Where(x => x.GoodsId == item.GoodsId && x.SpecificationSort == item.SpecificationSort).FirstOrDefault();
GoodsWeight = speciPModel?.GoodsWeight ?? 0;
}
#endregion
//运费
decimal Express = 0;
if (defModel.Id > 0)
{
int FreightId2 = gmodel.FreightId ?? 0;
if (gmodel.FreightId == 0)
{
FreightId2 = DefFreightId;
}
if (FreightId2 > 0)
{
var rulesModel = rulesList.Where(x => x.ID == FreightId2).FirstOrDefault();
List<Model.Extend.BaseSetUp.RB_Logistics_RulesPrice_Extend> priceList2 = priceList.Where(x => x.RulesId == FreightId2).ToList();
if (priceList2.Any())
{
var priceIds = priceList2.Select(x => x.ID).ToList();
var regionList2 = regionList.Where(x => priceIds.Contains(x.RulesPriceId)).ToList();
var regionModel = regionList2.Where(x => disList.Contains(x.RegionId)).FirstOrDefault();
if (regionModel != null)
{
var pmodel = priceList2.Where(x => x.ID == regionModel.RulesPriceId).FirstOrDefault();
if (pmodel != null && rulesModel != null)
{
if (rulesModel.ChargeMode == Common.Enum.MallBase.ChargeModeEnum.Num)
{
//按件计费
if (item.Number <= pmodel.First)
{
Express = pmodel.FirstPrice;
}
else
{
if (pmodel.Second > 0)
{
if (((item.Number ?? 0) - pmodel.First) % pmodel.Second == 0)
{
Express = pmodel.FirstPrice + (((item.Number ?? 0) - pmodel.First) / pmodel.Second) * pmodel.SecondPrice;
}
else
{
Express = pmodel.FirstPrice + (((item.Number ?? 0) - pmodel.First) / pmodel.Second + 1) * pmodel.SecondPrice;
}
}
else
{
Express = pmodel.FirstPrice;
}
}
}
else
{
//重量计费
int TotalW = (item.Number ?? 0) * GoodsWeight;
if (TotalW <= pmodel.First)
{
Express = pmodel.FirstPrice;
}
else
{
if (pmodel.Second > 0)
{
if ((TotalW - pmodel.First) % pmodel.Second == 0)
{
Express = pmodel.FirstPrice + ((TotalW - pmodel.First) / pmodel.Second) * pmodel.SecondPrice;
}
else
{
Express = pmodel.FirstPrice + ((TotalW - pmodel.First) / pmodel.Second + 1) * pmodel.SecondPrice;
}
}
else
{
Express = pmodel.FirstPrice;
}
}
}
}
}
}
}
}
DList.Add(new
{
item.GoodsId,
item.SpecificationSort,
Express
});
TotalExpress += Express;
}
}
return ApiResult.Success("", new
{
DetailList = DList,
TotalExpress
});
}
/// <summary>
/// 下单
/// </summary>
/// <param name="demodel"></param>
/// <returns></returns>
public ApiResult SetAppletGoodsOrderInfo(RB_Goods_Order_Extend demodel)
{
var umodel = member_UserRepository.GetEntity(demodel.UserId);
if (umodel == null)
{
return ApiResult.Failed("用户不存在");
}
List<int> disList = new List<int>();
disList.Add(demodel.Province ?? 0);
disList.Add(demodel.City ?? 0);
disList.Add(demodel.District ?? 0);
decimal TotalExpress = 0;
decimal TotalMoney = 0;
string GoodsIds = "";
if (demodel.DetailList.Any())
{
int DefFreightId = 0;//默认运费id
GoodsIds = string.Join(",", demodel.DetailList.Select(x => x.GoodsId));
var gList = goodsRepository.GetList(new RB_Goods_Extend() { GoodsIds = GoodsIds, TenantId = demodel.TenantId, MallBaseId = demodel.MallBaseId });
var clist = goods_CategoryRepository.GetList(new RB_Goods_Category_Extend() { GoodsIds = GoodsIds, TenantId = demodel.TenantId, MallBaseId = demodel.MallBaseId });
var speciPList = goods_SpecificationPriceRepository.GetList(new RB_Goods_SpecificationPrice_Extend() { GoodsIds = GoodsIds, TenantId = demodel.TenantId, MallBaseId = demodel.MallBaseId });
var mpriceList = goods_MemberPriceRepository.GetList(new RB_Goods_MemberPrice_Extend() { GoodsIds = GoodsIds, TenantId = demodel.TenantId, MallBaseId = demodel.MallBaseId });
List<Model.Extend.BaseSetUp.RB_Logistics_Rules_Extend> rulesList = new List<Model.Extend.BaseSetUp.RB_Logistics_Rules_Extend>();
List<Model.Extend.BaseSetUp.RB_Logistics_RulesPrice_Extend> priceList = new List<Model.Extend.BaseSetUp.RB_Logistics_RulesPrice_Extend>();
List<Model.Extend.BaseSetUp.RB_Logistics_RulesRegion_Extend> regionList = new List<Model.Extend.BaseSetUp.RB_Logistics_RulesRegion_Extend>();
if (gList.Any() && demodel.DeliveryMethod != OrderDeliveryMethodEnum.VerificationShop)
{
List<int> FreightIdList = new List<int>();
if (gList.Where(x => x.FreightId > 0).Any())
{
FreightIdList.AddRange(gList.Where(x => x.FreightId > 0).Select(x => x.FreightId ?? 0).ToList());
}
if (gList.Where(x => x.FreightId == 0).Any())
{
//查询默认
DefFreightId = logistics_RulesRepository.GetLogisticsRulesList(new Model.Extend.BaseSetUp.RB_Logistics_Rules_Extend() { IsDefault = 1, TenantId = demodel.TenantId, MallBaseId = demodel.MallBaseId }).FirstOrDefault()?.ID ?? 0;
FreightIdList.Add(DefFreightId);
}
if (FreightIdList.Any())
{
rulesList = logistics_RulesRepository.GetLogisticsRulesList(new Model.Extend.BaseSetUp.RB_Logistics_Rules_Extend() { RulesIds = string.Join(",", FreightIdList), TenantId = demodel.TenantId, MallBaseId = demodel.MallBaseId });
priceList = logistics_RulesPriceRepository.GetListRepository(new Model.Extend.BaseSetUp.RB_Logistics_RulesPrice_Extend() { TenantId = demodel.TenantId, MallBaseId = demodel.MallBaseId, RulesIds = string.Join(",", FreightIdList) });
if (priceList.Any())
{
string priceIds = string.Join(",", priceList.Select(x => x.ID));
regionList = logistics_RulesRegionRepository.GetListRepository(new Model.Extend.BaseSetUp.RB_Logistics_RulesRegion_Extend() { TenantId = demodel.TenantId, MallBaseId = demodel.MallBaseId, PriceIds = priceIds });
}
}
}
foreach (var item in demodel.DetailList)
{
var gmodel = gList.Where(x => x.Id == item.GoodsId).FirstOrDefault();
if (gmodel == null || gmodel.GoodsStatus != 1)
{
return ApiResult.Failed("有商品不存在或者商品已失效");
}
item.InventoryNum = gmodel.InventoryNum ?? 0;
item.CostMoney = gmodel.CostPrice ?? 0;
item.ProductCode = gmodel.GoodsNumbers;
item.CategoryIdList = clist.Where(x => x.GoodsId == item.Id).Select(x => x.CategoryId ?? 0).ToList();
int GoodsWeight = gmodel.GoodsWeight ?? 0;//商品重量
#region 规格
//验证规格是否已失效
if (gmodel.IsCustomSpecification == 1)
{
if (string.IsNullOrEmpty(item.SpecificationSort))
{
return ApiResult.Failed("有商品已失效,请重新下单");
}
if (!speciPList.Where(x => x.GoodsId == item.GoodsId && x.SpecificationSort == item.SpecificationSort).Any())
{
return ApiResult.Failed("有商品已失效,请重新下单");
}
}
else
{
if (!string.IsNullOrEmpty(item.SpecificationSort))
{
return ApiResult.Failed("有商品已失效,请重新下单");
}
}
if (string.IsNullOrEmpty(item.SpecificationSort))
{
var speciPModel = speciPList.Where(x => x.GoodsId == item.GoodsId && x.SpecificationSort == item.SpecificationSort).FirstOrDefault();
gmodel.SellingPrice = speciPModel?.SellingPrice ?? 0;
gmodel.InventoryNum = speciPModel?.InventoryNum ?? 0;
GoodsWeight = speciPModel?.GoodsWeight ?? 0;
item.InventoryNum = speciPModel?.InventoryNum ?? 0;
item.SpeciPriceId = speciPModel?.Id ?? 0;
item.ProductCode = speciPModel?.GoodsNumbers ?? "";
}
#endregion
//会员价格
gmodel.MemberPrice = gmodel.SellingPrice ?? 0;
if (umodel.MemberGrade > 0)
{
if (gmodel.EnjoyMember == 1 && gmodel.SeparateSetMember == 1)
{
gmodel.MemberPrice = mpriceList.Where(x => x.GoodsId == item.GoodsId && x.MemberGrade == umodel.MemberGrade && x.SpecificationSort == item.SpecificationSort).FirstOrDefault()?.MemberPrice ?? 0;
item.IsMemberPrice = 1;
}
else
{
//求会员等级折扣
var gradeModel = member_GradeRepository.GetList(new RB_Member_Grade_Extend() { Grade = umodel.MemberGrade, TenantId = demodel.TenantId, MallBaseId = demodel.MallBaseId }).FirstOrDefault();
gmodel.MemberPrice = Math.Round((gmodel.SellingPrice ?? 0) * (gradeModel?.Discount ?? 10) / 10, 2, MidpointRounding.AwayFromZero);
item.DiscountRate = gradeModel?.Discount ?? 10;
}
}
//运费
decimal Express = 0;
if (demodel.DeliveryMethod != OrderDeliveryMethodEnum.VerificationShop)
{
int FreightId2 = gmodel.FreightId ?? 0;
if (gmodel.FreightId == 0)
{
FreightId2 = DefFreightId;
}
if (FreightId2 > 0)
{
var rulesModel = rulesList.Where(x => x.ID == FreightId2).FirstOrDefault();
List<Model.Extend.BaseSetUp.RB_Logistics_RulesPrice_Extend> priceList2 = priceList.Where(x => x.RulesId == FreightId2).ToList();
if (priceList2.Any())
{
var priceIds = priceList2.Select(x => x.ID).ToList();
var regionList2 = regionList.Where(x => priceIds.Contains(x.RulesPriceId)).ToList();
var regionModel = regionList2.Where(x => disList.Contains(x.RegionId)).FirstOrDefault();
if (regionModel != null)
{
var pmodel = priceList2.Where(x => x.ID == regionModel.RulesPriceId).FirstOrDefault();
if (pmodel != null && rulesModel != null)
{
if (rulesModel.ChargeMode == Common.Enum.MallBase.ChargeModeEnum.Num)
{
//按件计费
if (item.Number <= pmodel.First)
{
Express = pmodel.FirstPrice;
}
else
{
if (pmodel.Second > 0)
{
if (((item.Number ?? 0) - pmodel.First) % pmodel.Second == 0)
{
Express = pmodel.FirstPrice + (((item.Number ?? 0) - pmodel.First) / pmodel.Second) * pmodel.SecondPrice;
}
else
{
Express = pmodel.FirstPrice + (((item.Number ?? 0) - pmodel.First) / pmodel.Second + 1) * pmodel.SecondPrice;
}
}
else
{
Express = pmodel.FirstPrice;
}
}
}
else
{
//重量计费
int TotalW = (item.Number ?? 0) * GoodsWeight;
if (TotalW <= pmodel.First)
{
Express = pmodel.FirstPrice;
}
else
{
if (pmodel.Second > 0)
{
if ((TotalW - pmodel.First) % pmodel.Second == 0)
{
Express = pmodel.FirstPrice + ((TotalW - pmodel.First) / pmodel.Second) * pmodel.SecondPrice;
}
else
{
Express = pmodel.FirstPrice + ((TotalW - pmodel.First) / pmodel.Second + 1) * pmodel.SecondPrice;
}
}
else
{
Express = pmodel.FirstPrice;
}
}
}
}
}
}
}
}
TotalExpress += Express;
item.Unit_Price = gmodel.SellingPrice ?? 0;
item.Original_Price = (item.Unit_Price) * (item.Number);
if (umodel.MemberGrade > 0)
{
TotalMoney += gmodel.MemberPrice * (item.Number ?? 0);
item.Final_Price= gmodel.MemberPrice * (item.Number ?? 0);
}
else {
TotalMoney += (gmodel.SellingPrice ?? 0) * (item.Number ?? 0);
item.Final_Price = (gmodel.SellingPrice ?? 0) * (item.Number ?? 0);
}
item.OrderType = gmodel.GoodsType;
item.GoodsName = gmodel.Name;
item.CoverImage = 0;
if (!string.IsNullOrEmpty(gmodel.CarouselImage) && gmodel.CarouselImage != "[]")
{
List<int> CarouselIdList = JsonConvert.DeserializeObject<List<int>>(gmodel.CarouselImage);
//封面图
item.CoverImage = CarouselIdList[0];
}
item.SeparateDistribution = gmodel.SeparateDistribution;
item.SeparateDistributionType = gmodel.SeparateDistributionType;
item.SeparateDistributionMoneyType = gmodel.SeparateDistributionMoneyType;
}
}
if (demodel.FreightMoney != TotalExpress) {
return ApiResult.Failed("运费不正确");
}
//优惠卷验证
decimal CouponsMoney = 0;
List<RB_Member_DiscountCoupon_Extend> cList = new List<RB_Member_DiscountCoupon_Extend>();
if (string.IsNullOrEmpty(demodel.CouponsIds))
{
cList = member_CouponRepository.GetList(new RB_Member_DiscountCoupon_Extend() { UseState = 0, CouponIds = demodel.CouponsIds, UserId = umodel.Id, TenantId = demodel.TenantId, MallBaseId = demodel.MallBaseId });
string[] arr = demodel.CouponsIds.Split(",");
foreach (var item in arr)
{
if (!string.IsNullOrEmpty(item))
{
if (!cList.Where(x => x.CouponId == Convert.ToInt32(item)).Any())
{
return ApiResult.Failed("优惠券不存在,请核实后再试");
}
}
}
if (cList.Any())
{
var dcList = discountCouponRepository.GetDiscountCouponList(new Model.Extend.MarketingCenter.RB_DiscountCoupon_Extend() { CouponIds = demodel.CouponsIds, TenantId = demodel.TenantId, MallBaseId = demodel.MallBaseId });
var dcpList = discountCoupon_ProductRepository.GetListByDiscountCouponIds(new Model.Entity.MarketingCenter.RB_DiscountCoupon() { TenantId = demodel.TenantId, MallBaseId = demodel.MallBaseId }, demodel.CouponsIds);
foreach (var item in arr) {
if (!string.IsNullOrEmpty(item))
{
var dcModel = dcList.Where(x => x.ID == Convert.ToInt32(item)).FirstOrDefault();
if (dcModel == null) {
return ApiResult.Failed("优惠卷不存在,亲核实后再试");
}
dcModel.DiscountsPrice = dcModel.DiscountsPrice == 0 ? 10 : dcModel.DiscountsPrice;
decimal FinalMoney = 0;
if (dcModel.UseType == Common.Enum.MarketingCenter.UseTypeEnum.Category) //指定分类
{
var categoryList = dcpList.Where(x => x.DiscountCouponId == Convert.ToInt32(item) && x.DiscountCouponType == Common.Enum.MarketingCenter.UseTypeEnum.Category).Select(x=>x.ProductId).ToList();//获取特殊优惠卷
foreach (var qitem in demodel.DetailList) {
if (qitem.CategoryIdList.Where(x => categoryList.Contains(x)).Any()) {
FinalMoney += qitem.Final_Price ?? 0;
}
}
if (FinalMoney <= 0) {
return ApiResult.Failed("Id"+ item+"的优惠券,未匹配到适用类型的商品");
}
}
else if (dcModel.UseType == Common.Enum.MarketingCenter.UseTypeEnum.Product)//指定商品
{
var goodsList = dcpList.Where(x => x.DiscountCouponId == Convert.ToInt32(item) && x.DiscountCouponType == Common.Enum.MarketingCenter.UseTypeEnum.Product).Select(x => x.ProductId).ToList();//获取特殊优惠卷
if (!demodel.DetailList.Where(x => goodsList.Contains(x.GoodsId ?? 0)).Any()) {
return ApiResult.Failed("Id" + item + "的优惠券,未匹配到适用的商品");
}
FinalMoney = demodel.DetailList.Where(x => goodsList.Contains(x.GoodsId ?? 0)).Sum(x => x.Final_Price ?? 0);
}
else {
FinalMoney = TotalMoney;
}
if (dcModel.MinConsumePrice > 0)
{
if (FinalMoney < dcModel.MinConsumePrice)
{
return ApiResult.Failed("Id" + item + "优惠卷未达到使用要求");
}
}
if (dcModel.CouponType == Common.Enum.MarketingCenter.CouponTypeEnum.FullReduction)
{
CouponsMoney += dcModel.DiscountsPrice;
}
else
{
decimal disMoney = Math.Round(FinalMoney * (10 - dcModel.DiscountsPrice) / 10, 2, MidpointRounding.AwayFromZero);
if (dcModel.MaxDiscountsPrice > 0 && dcModel.MaxDiscountsPrice < disMoney) {
disMoney = dcModel.MaxDiscountsPrice;
}
CouponsMoney += disMoney;
}
}
}
}
}
if (CouponsMoney != demodel.CouponMoney) {
return ApiResult.Failed("优惠金额计算有误");
}
//验证总额
if (demodel.Income != (TotalMoney - (demodel.CouponMoney??0) + TotalExpress)) {
return ApiResult.Failed("订单合计金额不正确");
}
demodel.PreferPrice = TotalMoney;
var trans = goods_OrderRepository.DbTransaction;
try
{
int OrderId = goods_OrderRepository.Insert(demodel, trans);
if (OrderId > 0)
{
//插入订单明细+ 商品库存更新
InsertOrderDetail(demodel, trans, OrderId);
//任务执行返佣 失败查看日志,手动返佣(空闲可增加手动返佣接口)
Task.Run(() => InsertOrderCommission(demodel, umodel, GoodsIds, OrderId));
//用户订单数增加
Dictionary<string, object> keyValues = new Dictionary<string, object>() {
{ nameof(RB_Member_User_Extend.OrderNum),(umodel.OrderNum??0)+1}
};
List<WhereHelper> wheres = new List<WhereHelper>() {
new WhereHelper(){
FiledName=nameof(RB_Member_User_Extend.Id),
FiledValue=umodel.Id,
OperatorEnum=OperatorEnum.Equal
}
};
member_UserRepository.Update(keyValues, wheres, trans);
//优惠券使用
if (cList.Any()) {
foreach (var item in cList) {
Dictionary<string, object> keyValues1 = new Dictionary<string, object>() {
{ nameof(RB_Member_DiscountCoupon_Extend.UseDate),DateTime.Now},
{ nameof(RB_Member_DiscountCoupon_Extend.UseState),1}
};
List<WhereHelper> wheres1 = new List<WhereHelper>() {
new WhereHelper(){
FiledName=nameof(RB_Member_DiscountCoupon_Extend.Id),
FiledValue=item.Id,
OperatorEnum=OperatorEnum.Equal
}
};
member_CouponRepository.Update(keyValues1, wheres1, trans);
}
}
//记录日志
Task.Run(() => goods_LogRepository.Insert(new RB_Goods_Log()
{
Id = 0,
Type = 1,
SourceId = OrderId,
Content = "新增订单",
CreateDate = DateTime.Now,
MallBaseId = demodel.MallBaseId,
TenantId = demodel.TenantId
}));
}
}
catch (Exception ex)
{
LogHelper.Write(ex, "SetAppletGoodsOrderInfo");
goods_OrderRepository.DBSession.Rollback("SetAppletGoodsOrderInfo");
return ApiResult.Failed();
}
return ApiResult.Success();
}
/// <summary>
/// 插入返佣
/// </summary>
/// <param name="demodel"></param>
/// <param name="umodel"></param>
/// <param name="GoodsIds"></param>
/// <param name="OrderId"></param>
private void InsertOrderCommission(RB_Goods_Order_Extend demodel, Model.Entity.User.RB_Member_User umodel, string GoodsIds, int OrderId)
{
var trans = goods_OrderCommissionRepository.DbTransaction;
try
{
var dcList = goods_DistributionCommissionRepository.GetList(new RB_Goods_DistributionCommission_Extend() { GoodsIds = GoodsIds, TenantId = demodel.TenantId, MallBaseId = demodel.MallBaseId });
var basicModel = distributor_BasicsRepository.GetList(new RB_Distributor_Basics_Extend() { TenantId = demodel.TenantId, MallBaseId = demodel.MallBaseId }).FirstOrDefault();
if (basicModel != null && basicModel.DistributorTier > 0)
{
#region 分销商id+分销商等级
int OneUserId = 0, TwoUserId = 0, ThreeUserId = 0;
int OneDistributorGrade = 0, TwoDistributorGrade = 0, ThreeDistributorGrade = 0;
//获取多级 分销商id
if (basicModel != null && basicModel.DistributorTier > 0)
{
for (int i = 1; i < basicModel.DistributorTier + 1; i++)
{
switch (i)
{
case 1:
if (umodel.IsDistributor != 1) { OneUserId = umodel.SuperiorId ?? 0; } else { OneUserId = umodel.Id; }
break;
case 2:
if (umodel.IsDistributor != 1) { TwoUserId = member_UserRepository.GetEntity(OneUserId).SuperiorId ?? 0; } else { TwoUserId = umodel.SuperiorId ?? 0; }
break;
case 3:
ThreeUserId = member_UserRepository.GetEntity(TwoUserId).SuperiorId ?? 0;
break;
}
}
}
if (OneUserId > 0)
{
OneDistributorGrade = distributor_InfoRepository.GetList(new RB_Distributor_Info_Extend() { TenantId = demodel.TenantId, MallBaseId = demodel.MallBaseId, UserId = OneUserId })?.FirstOrDefault()?.GradeId ?? 0;
}
if (TwoUserId > 0)
{
TwoDistributorGrade = distributor_InfoRepository.GetList(new RB_Distributor_Info_Extend() { TenantId = demodel.TenantId, MallBaseId = demodel.MallBaseId, UserId = TwoUserId })?.FirstOrDefault()?.GradeId ?? 0;
}
if (ThreeUserId > 0)
{
ThreeDistributorGrade = distributor_InfoRepository.GetList(new RB_Distributor_Info_Extend() { TenantId = demodel.TenantId, MallBaseId = demodel.MallBaseId, UserId = ThreeUserId })?.FirstOrDefault()?.GradeId ?? 0;
}
#endregion
#region 分销商等级列表
List<int> gradeIdlist = new List<int>();
if (OneDistributorGrade > 0)
{
gradeIdlist.Add(OneDistributorGrade);
}
if (TwoDistributorGrade > 0)
{
gradeIdlist.Add(TwoDistributorGrade);
}
if (ThreeDistributorGrade > 0)
{
gradeIdlist.Add(ThreeDistributorGrade);
}
List<RB_Distributor_Grade_Extend> dgradeList = new List<RB_Distributor_Grade_Extend>();
if (gradeIdlist.Any())
{
dgradeList = distributor_GradeRepository.GetList(new RB_Distributor_Grade_Extend() { GradeIds = string.Join(",", gradeIdlist), TenantId = demodel.TenantId, MallBaseId = demodel.MallBaseId });
}
#endregion
foreach (var item in demodel.DetailList)
{
//返佣
List<RB_Goods_OrderCommission> gocList = new List<RB_Goods_OrderCommission>();
for (int i = 1; i < basicModel.DistributorTier + 1; i++)
{
switch (i)
{
case 1:
decimal DcommionMoney = 0;
if (item.SeparateDistribution == 1)
{
if (item.SeparateDistributionType == 1)
{
DcommionMoney = dcList.Where(x => x.GoodsId == item.GoodsId && x.DistributorGrade == OneDistributorGrade).FirstOrDefault()?.OneCommission ?? 0;
}
else
{
DcommionMoney = dcList.Where(x => x.GoodsId == item.GoodsId && x.SpecificationSort == item.SpecificationSort && x.DistributorGrade == OneDistributorGrade).FirstOrDefault()?.OneCommission ?? 0;
}
if (item.SeparateDistributionMoneyType == 1)
{
DcommionMoney = Math.Round((item.Final_Price ?? 0) * DcommionMoney / 100, 2, MidpointRounding.AwayFromZero);
}
}
else
{
//获取分销商等级
if (OneDistributorGrade > 0)
{
var dgradeModel = dgradeList.Where(x => x.Id == OneDistributorGrade).FirstOrDefault();
DcommionMoney = dgradeModel?.OneCommission ?? 0;
if (dgradeModel.DistributionCommissionType == 1)
{
DcommionMoney = Math.Round((item.Final_Price ?? 0) * DcommionMoney / 100, 2, MidpointRounding.AwayFromZero);
}
}
else
{
//默认分销商等级 读取基本配置的返佣
DcommionMoney = basicModel.OneCommission ?? 0;
if (basicModel.DistributorCommissionType == 1)
{
DcommionMoney = Math.Round((item.Final_Price ?? 0) * DcommionMoney / 100, 2, MidpointRounding.AwayFromZero);
}
}
}
if (TwoUserId == 0 && basicModel.IsCommissionResidue == 1)
{
//表示其为一级分销商 把后面的佣金都提完
TwoUserId = OneUserId;
TwoDistributorGrade = OneDistributorGrade;
}
RB_Goods_OrderCommission gocModel = new RB_Goods_OrderCommission()
{
Id = 0,
Commission = DcommionMoney,
CommissionState = 1,
CreateDate = DateTime.Now,
Grade = umodel.IsDistributor == 1 ? 0 : 1,
IsGoodsDistribution = item.SeparateDistribution,
MallBaseId = demodel.MallBaseId,
OrderDetailId = item.Id,
OrderId = OrderId,
Remark = "",
TenantId = demodel.TenantId,
UpdateDate = DateTime.Now,
UserId = OneUserId
};
gocList.Add(gocModel);
break;
case 2:
if (TwoUserId > 0)
{
DcommionMoney = 0;
if (item.SeparateDistribution == 1)
{
if (item.SeparateDistributionType == 1)
{
DcommionMoney = dcList.Where(x => x.GoodsId == item.GoodsId && x.DistributorGrade == TwoDistributorGrade).FirstOrDefault()?.TwoCommission ?? 0;
}
else
{
DcommionMoney = dcList.Where(x => x.GoodsId == item.GoodsId && x.SpecificationSort == item.SpecificationSort && x.DistributorGrade == TwoDistributorGrade).FirstOrDefault()?.TwoCommission ?? 0;
}
if (item.SeparateDistributionMoneyType == 1)
{
DcommionMoney = Math.Round((item.Final_Price ?? 0) * DcommionMoney / 100, 2, MidpointRounding.AwayFromZero);
}
}
else
{
//获取分销商等级
if (TwoDistributorGrade > 0)
{
var dgradeModel = dgradeList.Where(x => x.Id == TwoDistributorGrade).FirstOrDefault();
DcommionMoney = dgradeModel?.TwoCommission ?? 0;
if (dgradeModel.DistributionCommissionType == 1)
{
DcommionMoney = Math.Round((item.Final_Price ?? 0) * DcommionMoney / 100, 2, MidpointRounding.AwayFromZero);
}
}
else
{
//默认分销商等级 读取基本配置的返佣
DcommionMoney = basicModel.TwoCommission ?? 0;
if (basicModel.DistributorCommissionType == 1)
{
DcommionMoney = Math.Round((item.Final_Price ?? 0) * DcommionMoney / 100, 2, MidpointRounding.AwayFromZero);
}
}
}
if (ThreeUserId == 0 && basicModel.IsCommissionResidue == 1)
{
//表示其为二级分销商 把后面的佣金都提完
ThreeUserId = TwoUserId;
ThreeDistributorGrade = TwoDistributorGrade;
}
gocModel = new RB_Goods_OrderCommission()
{
Id = 0,
Commission = DcommionMoney,
CommissionState = 1,
CreateDate = DateTime.Now,
Grade = umodel.IsDistributor == 1 ? TwoUserId == OneUserId ? 0 : 1 : 2,
IsGoodsDistribution = item.SeparateDistribution,
MallBaseId = demodel.MallBaseId,
OrderDetailId = item.Id,
OrderId = OrderId,
Remark = "",
TenantId = demodel.TenantId,
UpdateDate = DateTime.Now,
UserId = TwoUserId
};
gocList.Add(gocModel);
}
break;
case 3:
if (ThreeUserId > 0)
{
DcommionMoney = 0;
if (item.SeparateDistribution == 1)
{
if (item.SeparateDistributionType == 1)
{
DcommionMoney = dcList.Where(x => x.GoodsId == item.GoodsId && x.DistributorGrade == ThreeDistributorGrade).FirstOrDefault()?.ThreeCommission ?? 0;
}
else
{
DcommionMoney = dcList.Where(x => x.GoodsId == item.GoodsId && x.SpecificationSort == item.SpecificationSort && x.DistributorGrade == ThreeDistributorGrade).FirstOrDefault()?.ThreeCommission ?? 0;
}
if (item.SeparateDistributionMoneyType == 1)
{
DcommionMoney = Math.Round((item.Final_Price ?? 0) * DcommionMoney / 100, 2, MidpointRounding.AwayFromZero);
}
}
else
{
//获取分销商等级
if (ThreeDistributorGrade > 0)
{
var dgradeModel = dgradeList.Where(x => x.Id == ThreeDistributorGrade).FirstOrDefault();
DcommionMoney = dgradeModel?.ThreeCommission ?? 0;
if (dgradeModel.DistributionCommissionType == 1)
{
DcommionMoney = Math.Round((item.Final_Price ?? 0) * DcommionMoney / 100, 2, MidpointRounding.AwayFromZero);
}
}
else
{
//默认分销商等级 读取基本配置的返佣
DcommionMoney = basicModel.ThreeCommission ?? 0;
if (basicModel.DistributorCommissionType == 1)
{
DcommionMoney = Math.Round((item.Final_Price ?? 0) * DcommionMoney / 100, 2, MidpointRounding.AwayFromZero);
}
}
}
#region 获取返佣等级
int Grade = 0;
if (OneUserId == TwoUserId && TwoUserId == ThreeUserId)
{
Grade = 0;
}
else if (OneUserId != TwoUserId && TwoUserId == ThreeUserId)
{
Grade = 1;
}
else
{
Grade = 2;
}
if (umodel.IsDistributor != 1)
{
Grade++;
}
#endregion
gocModel = new RB_Goods_OrderCommission()
{
Id = 0,
Commission = DcommionMoney,
CommissionState = 1,
CreateDate = DateTime.Now,
Grade = Grade,
IsGoodsDistribution = item.SeparateDistribution,
MallBaseId = demodel.MallBaseId,
OrderDetailId = item.Id,
OrderId = OrderId,
Remark = "",
TenantId = demodel.TenantId,
UpdateDate = DateTime.Now,
UserId = ThreeUserId
};
gocList.Add(gocModel);
}
break;
}
}
List<RB_Goods_OrderCommission> gocfulList = gocList;
//gocList 合并用户金额
if (basicModel.IsCommissionResidue == 1)
{
gocfulList = new List<RB_Goods_OrderCommission>();
if (gocList.Count() != gocList.Select(x => x.UserId).Distinct().Count())
{
//说明有用户可以合并
var userIdList = gocList.Select(x => x.UserId).Distinct().ToList();
foreach (var qitem in userIdList)
{
var gocModel = gocList.Where(x => x.UserId == qitem).FirstOrDefault();
if (gocList.Where(x => x.UserId == qitem).Count() > 1)
{
decimal tcommission = gocList.Where(x => x.UserId == qitem).Sum(x => x.Commission ?? 0);
gocModel.Commission = tcommission;
gocModel.Remark = "多级全额返佣";
}
gocfulList.Add(gocModel);
}
}
}
if (gocfulList.Any())
{
foreach (var qitem in gocfulList)
{
goods_OrderCommissionRepository.Insert(qitem, trans);
}
}
}
}
goods_OrderCommissionRepository.DBSession.Commit();
}
catch (Exception ex)
{
LogHelper.Write(ex, "InsertOrderCommission:" + OrderId + "订单返佣失败");
goods_OrderCommissionRepository.DBSession.Rollback();
}
}
/// <summary>
/// 插入订单明细,以及更新商品库存
/// </summary>
/// <param name="demodel"></param>
/// <param name="trans"></param>
/// <param name="OrderId"></param>
private void InsertOrderDetail(RB_Goods_Order_Extend demodel, System.Data.IDbTransaction trans, int OrderId)
{
foreach (var item in demodel.DetailList)
{
//插入订单明细表
int detailId = goods_OrderDetailRepository.Insert(new RB_Goods_OrderDetail()
{
Id = 0,
CostMoney = item.CostMoney,
CoverImage = item.CoverImage,
CreateDate = DateTime.Now,
DiscountRate = item.DiscountRate,
Final_Price = item.Final_Price,
GoodsId = item.GoodsId,
GoodsName = item.GoodsName,
IsMemberPrice = item.IsMemberPrice ?? 2,
MallBaseId = demodel.MallBaseId,
Number = item.Number,
OrderId = OrderId,
OrderType = item.OrderType,
Original_Price = item.Original_Price,
ProductCode = item.ProductCode,
Specification = item.Specification,//前端传递过来
SpecificationSort = item.SpecificationSort,
Unit_Price = item.Unit_Price,
TenantId = demodel.TenantId,
UpdateDate = DateTime.Now
}, trans);
item.Id = detailId;
//更新商品数量
Dictionary<string, object> keyValues = new Dictionary<string, object>() {
{ nameof(RB_Goods.InventoryNum),item.InventoryNum-(item.Number??0)}
};
List<WhereHelper> wheres = new List<WhereHelper>() {
new WhereHelper(){
FiledName=nameof(RB_Goods.Id),
FiledValue=item.GoodsId,
OperatorEnum=OperatorEnum.Equal
},
new WhereHelper(){
FiledName=nameof(RB_Goods.TenantId),
FiledValue=demodel.TenantId,
OperatorEnum=OperatorEnum.Equal
},
new WhereHelper(){
FiledName=nameof(RB_Goods.MallBaseId),
FiledValue=demodel.MallBaseId,
OperatorEnum=OperatorEnum.Equal
}
};
bool flagg = goodsRepository.Update(keyValues, wheres, trans);
if (flagg)
{
if (!string.IsNullOrEmpty(item.SpecificationSort) && item.SpeciPriceId > 0)
{
//更新规格价格库存
Dictionary<string, object> keyValuesp = new Dictionary<string, object>() {
{ nameof(RB_Goods_SpecificationPrice.InventoryNum),item.InventoryNum-(item.Number??0)}
};
List<WhereHelper> wheresp = new List<WhereHelper>() {
new WhereHelper(){
FiledName=nameof(RB_Goods_SpecificationPrice.Id),
FiledValue=item.SpeciPriceId,
OperatorEnum=OperatorEnum.Equal
},
new WhereHelper(){
FiledName=nameof(RB_Goods_SpecificationPrice.GoodsId),
FiledValue=item.GoodsId,
OperatorEnum=OperatorEnum.Equal
},
new WhereHelper(){
FiledName=nameof(RB_Goods.TenantId),
FiledValue=demodel.TenantId,
OperatorEnum=OperatorEnum.Equal
},
new WhereHelper(){
FiledName=nameof(RB_Goods.MallBaseId),
FiledValue=demodel.MallBaseId,
OperatorEnum=OperatorEnum.Equal
}
};
goods_SpecificationPriceRepository.Update(keyValuesp, wheresp, trans);
}
//记录日志
Task.Run(() => goods_LogRepository.Insert(new RB_Goods_Log()
{
Id = 0,
Type = 2,
SourceId = item.GoodsId,
Content = "新增订单,Key:" + item.SpecificationSort + ",商品库存减少:" + item.Number,
CreateDate = DateTime.Now,
MallBaseId = demodel.MallBaseId,
TenantId = demodel.TenantId
}));
}
}
}
#endregion
#region 订单管理
......@@ -617,6 +1649,7 @@ namespace Mall.Module.Product
{
//查询订单明细
var dlist = goods_OrderDetailRepository.GetOrderDetailList(new RB_Goods_OrderDetail_Extend() { TenantId = demodel.TenantId, MallBaseId = demodel.MallBaseId, OrderIds = string.Join(",", list.Select(x => x.OrderId)) });
var erList = goods_ExpressRelevanceRepository.GetList(new RB_Goods_ExpressRelevance_Extend() { TenantId = demodel.TenantId, MallBaseId = demodel.MallBaseId, OrderIds = string.Join(",", list.Select(x => x.OrderId)) });
//查询图片
List<RB_Material_Info_Extend> Mlist = new List<RB_Material_Info_Extend>();
if (dlist.Any())
......@@ -625,6 +1658,7 @@ namespace Mall.Module.Product
foreach (var item in dlist)
{
item.CoverImagePath = Mlist.Where(x => x.Id == item.CoverImage).FirstOrDefault()?.Path ?? "";
item.IsBindExpress = erList.Where(x => x.OrderDetailId == item.Id).Any() ? 1 : 2;
}
}
string areaIds1 = string.Join(",", list.Select(x => x.Province ?? 0).Distinct());
......@@ -1308,6 +2342,8 @@ namespace Mall.Module.Product
PaymentTime = model.PaymentTime.HasValue ? model.PaymentTime.Value.ToString("yyyy-MM-dd HH:mm:ss") : "",
DeliveryTime = model.DeliveryTime.HasValue ? model.DeliveryTime.Value.ToString("yyyy-MM-dd HH:mm:ss") : "",
ReceivingTime = model.ReceivingTime.HasValue ? model.ReceivingTime.Value.ToString("yyyy-MM-dd HH:mm:ss") : "",
FinishTime = model.FinishTime.HasValue ? model.FinishTime.Value.ToString("yyyy-MM-dd HH:mm:ss") : "",
CancelTime = model.CancelTime.HasValue ? model.CancelTime.Value.ToString("yyyy-MM-dd HH:mm:ss") : "",
model.Remark,
model.PreferPrice,
model.Income,
......
......@@ -71,6 +71,10 @@ namespace Mall.Repository.MarketingCenter
{
builder.Append($" AND {nameof(RB_DiscountCoupon_Extend.Name)} like '%{query.Name}%'");
}
if (!string.IsNullOrEmpty(query.CouponIds))
{
builder.Append($" AND {nameof(RB_DiscountCoupon_Extend.ID)} in({query.CouponIds})");
}
}
return Get<RB_DiscountCoupon_Extend>(builder.ToString()).ToList();
}
......
......@@ -42,6 +42,17 @@ namespace Mall.Repository.MarketingCenter
return GetPage<RB_Miniprogram_Page_Templ_Extend>(pageIndex, pageSize, out rowCount, builder.ToString()).ToList();
}
/// <summary>
/// 设置不为首页
/// </summary>
/// <returns></returns>
public bool UpdateIsHomeRepository()
{
StringBuilder builder = new StringBuilder();
builder.Append(" UPDATE RB_Miniprogram_Page_Templ SET IsHome=0 ");
return base.Execute(builder.ToString())>0;
}
/// <summary>
/// 小程序自定义页面列表
......
......@@ -273,5 +273,29 @@ inner join rb_goods_category c on g.Id=c.GoodsId
where {where} group by g.Id order by col.Id desc";
return GetPage<RB_Goods_Extend>(pageIndex, pageSize, out rowCount, sql).ToList();
}
public List<RB_Goods_Extend> GetGoodsInventoryNumList(RB_Goods_Extend dmodel)
{
string where = $" 1=1 and g.{nameof(RB_Goods_Extend.Status)}=0";
if (dmodel.TenantId > 0)
{
where += $@" and g.{nameof(RB_Goods_Extend.TenantId)}={dmodel.TenantId}";
}
if (dmodel.MallBaseId > 0)
{
where += $@" and g.{nameof(RB_Goods_Extend.MallBaseId)}={dmodel.MallBaseId}";
}
if (!string.IsNullOrEmpty(dmodel.GoodsIds))
{
where += $@" and g.{nameof(RB_Goods_Extend.Id)} in({dmodel.GoodsIds})";
}
if (dmodel.GoodsStatus > 0)
{
where += $@" and g.{nameof(RB_Goods_Extend.GoodsStatus)}={dmodel.GoodsStatus}";
}
string sql = $@"select g.Id,g. from RB_Goods g where {where} group by g.Id asc";
return Get<RB_Goods_Extend>(sql).ToList();
}
}
}
......@@ -34,6 +34,10 @@ namespace Mall.Repository.Product
{
where += $@" and {nameof(RB_Goods_ExpressRelevance.OrderId)}={dmodel.OrderId}";
}
if (!string.IsNullOrEmpty(dmodel.OrderIds))
{
where += $@" and {nameof(RB_Goods_ExpressRelevance.OrderId)} in({dmodel.OrderIds})";
}
if (dmodel.OrderDetailId > 0)
{
where += $@" and {nameof(RB_Goods_ExpressRelevance.OrderDetailId)}={dmodel.OrderDetailId}";
......
......@@ -30,6 +30,44 @@ namespace Mall.Repository.User
/// </summary>
public string OrderTableName { get { return nameof(RB_Goods_Order); } }
/// <summary>
/// 会员优惠券
/// </summary>
/// <returns></returns>
public List<RB_Member_DiscountCoupon_Extend> GetList(RB_Member_DiscountCoupon_Extend query)
{
StringBuilder builder = new StringBuilder();
if (query != null)
{
if (query.TenantId > 0)
{
builder.Append($" AND a.{nameof(RB_Member_DiscountCoupon_Extend.TenantId)}={query.TenantId}");
}
if (query.TenantId > 0)
{
builder.Append($" AND a.{nameof(RB_Member_DiscountCoupon_Extend.MallBaseId)}={query.MallBaseId}");
}
if (query.PlatformType > 0)
{
builder.Append($" AND a.{nameof(RB_Member_DiscountCoupon_Extend.PlatformType)}={query.PlatformType}");
}
if (query.UserId > 0)
{
builder.Append($" AND a.{nameof(RB_Member_DiscountCoupon_Extend.UserId)}={query.UserId}");
}
if (query.CouponId > 0) {
builder.Append($" AND a.{nameof(RB_Member_DiscountCoupon_Extend.CouponId)}={query.CouponId}");
}
if (!string.IsNullOrEmpty(query.CouponIds)) {
builder.Append($" AND a.{nameof(RB_Member_DiscountCoupon_Extend.CouponId)} in ({query.CouponIds})");
}
if (query.UseState >= 0) {
builder.Append($" AND a.{nameof(RB_Member_DiscountCoupon_Extend.UseState)}={query.UseState}");
}
}
string sql = @$" select * FROM {TableName} AS a where 1=1 {builder.ToString()} ";
return Get<RB_Member_DiscountCoupon_Extend>(sql).ToList();
}
/// <summary>
/// 会员优惠券
......
......@@ -50,7 +50,7 @@ namespace Mall.WebApi.Controllers.MarketingCenter
extModel.CreateDate = DateTime.Now;
extModel.Status = 0;
var flag = templateModule.SetMiniprogramTemplateModule(extModel);
return flag ? ApiResult.Success(data:extModel.Id) : ApiResult.Failed();
return flag ? ApiResult.Success(data: extModel.Id) : ApiResult.Failed();
}
/// <summary>
......@@ -61,8 +61,18 @@ namespace Mall.WebApi.Controllers.MarketingCenter
{
JObject parms = JObject.Parse(RequestParm.msg.ToString());
var Id = parms.GetInt("Id");
var result = templateModule.GetMiniprogramTemplateModule(Id);
return ApiResult.Success(data: result);
var extModel = templateModule.GetMiniprogramTemplateModule(Id);
if (extModel != null && extModel.Id > 0)
{
var obj = new
{
extModel.Id,
extModel.TemplateName,
extModel.ComponentDataList,
};
return ApiResult.Success(data: obj);
}
return ApiResult.Failed(message: "参数错误");
}
/// <summary>
......@@ -87,7 +97,7 @@ namespace Mall.WebApi.Controllers.MarketingCenter
{
var parms = RequestParm;
ResultPageModel pagelist = JsonConvert.DeserializeObject<ResultPageModel>(parms.msg.ToString());
var query = JsonConvert.DeserializeObject<RB_Miniprogram_Template_Extend>(parms.msg.ToString());
var query = JsonConvert.DeserializeObject<RB_Miniprogram_Template_Extend>(parms.msg.ToString());
query.TenantId = Convert.ToInt32(parms.uid);
query.MallBaseId = parms.MallBaseId;
......@@ -130,7 +140,7 @@ namespace Mall.WebApi.Controllers.MarketingCenter
var query = JsonConvert.DeserializeObject<RB_Miniprogram_Page_Templ_Extend>(parms.msg.ToString());
query.TenantId = Convert.ToInt32(parms.uid);
query.MallBaseId = parms.MallBaseId;
var list = miniprogramPageTemplModule.GetMiniprogramPageTemplListModule( query);
var list = miniprogramPageTemplModule.GetMiniprogramPageTemplListModule(query);
return ApiResult.Success("", list);
}
......@@ -146,7 +156,7 @@ namespace Mall.WebApi.Controllers.MarketingCenter
query.TenantId = Convert.ToInt32(RequestParm.uid);
query.MallBaseId = RequestParm.MallBaseId;
bool isGetHome = parms.GetBoolValue("isGetHome");
var extModel = miniprogramPageTemplModule.GetMiniprogramPageTemplModule(query,isGetHome: isGetHome);
var extModel = miniprogramPageTemplModule.GetMiniprogramPageTemplModule(query, isGetHome: isGetHome);
return ApiResult.Success("", extModel);
}
......@@ -159,7 +169,7 @@ namespace Mall.WebApi.Controllers.MarketingCenter
var extModel = JsonConvert.DeserializeObject<RB_Miniprogram_Page_Templ_Extend>(RequestParm.msg.ToString());
extModel.TenantId = RequestParm.TenantId;
extModel.MallBaseId = RequestParm.MallBaseId;
Int32.TryParse(RequestParm.uid, out int Uid);
extModel.CreateBy = Uid;
extModel.CreateDate = DateTime.Now;
......@@ -181,6 +191,33 @@ namespace Mall.WebApi.Controllers.MarketingCenter
return flag ? ApiResult.Success() : ApiResult.Failed();
}
/// <summary>
/// 更新模板禁用、启用
/// </summary>
/// <returns></returns>
public ApiResult SetMiniprogramPageTemplIsUse()
{
JObject parms = JObject.Parse(RequestParm.msg.ToString());
var Id = parms.GetInt("Id", 0);
var IsUse = parms.GetInt("IsUse", 0);
var flag = miniprogramPageTemplModule.SetMiniprogramPageTemplIsUseModule(Id, IsUse);
return flag ? ApiResult.Success() : ApiResult.Failed();
}
/// <summary>
/// 更新模板是否设为首页
/// </summary>
/// <returns></returns>
public ApiResult SetMiniprogramPageTemplIsHome()
{
JObject parms = JObject.Parse(RequestParm.msg.ToString());
var Id = parms.GetInt("Id", 0);
var IsHome = parms.GetInt("IsHome", 1);
var flag = miniprogramPageTemplModule.SetMiniprogramPageTemplIsHomeModule(Id, IsHome);
return flag ? ApiResult.Success() : ApiResult.Failed();
}
/// <summary>
/// 更新自定义页面状态
/// </summary>
......
......@@ -181,6 +181,40 @@ namespace Mall.WebApi.Controllers.MallBase
return orderModule.GetAppletGoodsSettlementInfo(demodel);
}
/// <summary>
/// 结算页面修改快递,获取快递费用
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult GetAppletGoodsSettlementExpress()
{
var req = RequestParm;
var userInfo = AppletUserInfo;
RB_Goods_Order_Extend demodel = JsonConvert.DeserializeObject<RB_Goods_Order_Extend>(req.msg.ToString());
if ((demodel.ShoppingAddressId ?? 0) <= 0) {
return ApiResult.ParamIsNull("请传递收货地址id");
}
if (demodel.DetailList == null || !demodel.DetailList.Any())
{
return ApiResult.ParamIsNull("请传递商品信息");
}
foreach (var item in demodel.DetailList)
{
if ((item.GoodsId ?? 0) <= 0)
{
return ApiResult.ParamIsNull("请传递商品id");
}
if ((item.Number ?? 0) <= 0)
{
return ApiResult.ParamIsNull("请传递商品数量");
}
}
demodel.TenantId = userInfo.TenantId;
demodel.MallBaseId = userInfo.MallBaseId;
demodel.UserId = userInfo.UserId;
return orderModule.GetAppletGoodsSettlementExpress(demodel);
}
/// <summary>
/// 下单
/// </summary>
......@@ -196,10 +230,23 @@ namespace Mall.WebApi.Controllers.MallBase
if (string.IsNullOrEmpty(demodel.Mobile)) {
return ApiResult.ParamIsNull("请传递收件人手机号码");
}
if (demodel.DeliveryMethod != Common.Enum.Goods.OrderDeliveryMethodEnum.VerificationShop) {
if ((demodel.District ?? 0) <= 0) {
if (demodel.DeliveryMethod != Common.Enum.Goods.OrderDeliveryMethodEnum.VerificationShop)
{
if ((demodel.District ?? 0) <= 0)
{
return ApiResult.ParamIsNull("收货地址有误");
}
if (string.IsNullOrEmpty(demodel.ShippingAddress)) {
return ApiResult.ParamIsNull("收货详细地址不能为空");
}
}
else {
if (string.IsNullOrEmpty(demodel.Consignee)) {
return ApiResult.ParamIsNull("收件人不能为空");
}
if (string.IsNullOrEmpty(demodel.Mobile)) {
return ApiResult.ParamIsNull("收件人手机不能为空");
}
}
if (demodel.DetailList == null || !demodel.DetailList.Any()) {
return ApiResult.ParamIsNull("请传递商品信息");
......@@ -211,10 +258,32 @@ namespace Mall.WebApi.Controllers.MallBase
if ((item.Number ?? 0) <= 0) {
return ApiResult.ParamIsNull("请传递商品数量");
}
if (string.IsNullOrEmpty(item.Specification)) {
return ApiResult.ParamIsNull("请传递规格名");
}
}
demodel.BuyerMessage ??= "";//买家留言
demodel.OrderSource ??= UserSourceEnum.WeiXin;
#region 赋默认值
demodel.TenantId = userInfo.TenantId;
demodel.MallBaseId = userInfo.MallBaseId;
demodel.OrderStatus = Common.Enum.Goods.OrderStatusEnum.NonPayment;
demodel.CreateDate = DateTime.Now;
demodel.Fee ??= 0;
demodel.FreightMoney ??= 0;
demodel.HistoryOrderStatus ??= 0;
demodel.IsApplyForCancel ??= 2;
demodel.IsOrderCommission ??= 2;
demodel.MerchantsNo ??= "";
demodel.Recycled ??= 2;
demodel.Refund ??= 0;
demodel.Status = 0;
demodel.UpdateDate = DateTime.Now;
demodel.UserId = userInfo.UserId;
#endregion
return ApiResult.Success();
return orderModule.SetAppletGoodsOrderInfo(demodel);
}
#endregion
......
......@@ -70,7 +70,8 @@ namespace Mall.WebApi.Controllers.MallBase
y.Specification,
y.ProductCode,
y.Final_Price,
y.Number
y.Number,
y.IsBindExpress
}),
x.Consignee,
x.Mobile,
......@@ -83,6 +84,7 @@ namespace Mall.WebApi.Controllers.MallBase
PaymentTime = x.PaymentTime.HasValue ? x.PaymentTime.Value.ToString("yyyy-MM-dd HH:mm:ss") : "",
DeliveryTime = x.DeliveryTime.HasValue ? x.DeliveryTime.Value.ToString("yyyy-MM-dd HH:mm:ss") : "",
ReceivingTime = x.ReceivingTime.HasValue ? x.ReceivingTime.Value.ToString("yyyy-MM-dd HH:mm:ss") : "",
FinishTime = x.FinishTime.HasValue ? x.FinishTime.Value.ToString("yyyy-MM-dd HH:mm:ss") : "",
x.Country,
x.Province,
x.City,
......@@ -234,6 +236,51 @@ namespace Mall.WebApi.Controllers.MallBase
}
/// <summary>
/// 获取商品订单类型枚举
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult GetOrderTypeEnumList()
{
var list = EnumHelper.GetEnumList(typeof(OrderTypeEnum));
return ApiResult.Success("", list.Select(x => new
{
Name = x.Key,
Id = Convert.ToInt32(x.Value)
}));
}
/// <summary>
/// 获取商品订单配送类型
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult GetOrderDeliveryMethodEnumList()
{
var list = EnumHelper.GetEnumList(typeof(OrderDeliveryMethodEnum));
return ApiResult.Success("", list.Select(x => new
{
Name = x.Key,
Id = Convert.ToInt32(x.Value)
}));
}
/// <summary>
/// 获取商品订单状态枚举
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult GetOrderStatusEnumList()
{
var list = EnumHelper.GetEnumList(typeof(OrderStatusEnum));
return ApiResult.Success("", list.Select(x => new
{
Name = x.Key,
Id = Convert.ToInt32(x.Value)
}));
}
/// <summary>
/// 下单
/// </summary>
......@@ -297,7 +344,7 @@ namespace Mall.WebApi.Controllers.MallBase
}
}
var omodel = orderModule.GetOrderInfo(demodel.OrderId ?? 0);
if (omodel.OrderStatus != OrderStatusEnum.WaitSendGoods) {
if (omodel.OrderStatus != OrderStatusEnum.WaitSendGoods && omodel.OrderStatus != OrderStatusEnum.WaitReceiving) {
return ApiResult.ParamIsNull("状态不对");
}
......
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