diff --git a/CoreCms.Net.CodeGenerator/CrudTemplete/Controllers/Controller.tpl b/CoreCms.Net.CodeGenerator/CrudTemplete/Controllers/Controller.tpl index 668936d83098f078bc4c2116716c34363b55543f..5d15e6e74f48bac48b8ef0c6a306836bb3f3a6bf 100644 --- a/CoreCms.Net.CodeGenerator/CrudTemplete/Controllers/Controller.tpl +++ b/CoreCms.Net.CodeGenerator/CrudTemplete/Controllers/Controller.tpl @@ -99,6 +99,12 @@ namespace CoreCms.Net.Web.Admin.Controllers //{{field.ColumnDescription}} {{field.DataType}} var {{field.DbColumnName}} = Request.Form["{{field.DbColumnName}}"].FirstOrDefault().ObjectToInt(0); if ({{field.DbColumnName}} > 0) + { + where = where.And(p => p.{{field.DbColumnName}} == {{field.DbColumnName}}); + }{% elsif field.DataType == 'decimal' %} + //{{field.ColumnDescription}} {{field.DataType}} + var {{field.DbColumnName}} = Request.Form["{{field.DbColumnName}}"].FirstOrDefault().ObjectToDecimal(0); + if ({{field.DbColumnName}} > 0) { where = where.And(p => p.{{field.DbColumnName}} == {{field.DbColumnName}}); }{% elsif field.DataType == 'datetime' %} diff --git a/CoreCms.Net.CodeGenerator/CrudTemplete/View/Index.tpl b/CoreCms.Net.CodeGenerator/CrudTemplete/View/Index.tpl index 546bcbcc5bff1366087ca197b3d2d34d8c5ceeb0..cb01c129ce0dd637f485025291f9231833bfa7b2 100644 --- a/CoreCms.Net.CodeGenerator/CrudTemplete/View/Index.tpl +++ b/CoreCms.Net.CodeGenerator/CrudTemplete/View/Index.tpl @@ -113,7 +113,7 @@ //数据绑定 table.render({ elem: '#LAY-app-{{ModelClassName}}-tableBox', - url: 'Api/{{ModelClassName}}/GetPageList', + url: layui.setter.apiUrl + 'Api/{{ModelClassName}}/GetPageList', method: 'POST', toolbar: '#LAY-app-{{ModelClassName}}-toolbar', defaultToolbar: ['filter', 'print', 'exports'], diff --git a/CoreCms.Net.Configuration/SystemSettingConstVars.cs b/CoreCms.Net.Configuration/SystemSettingConstVars.cs index e086bdf9bdf6cc764163a803f8d30a2e4ef17b1f..6dc2b5b6e6d21e7c0a22f5a3fdb6eb1e08234a33 100644 --- a/CoreCms.Net.Configuration/SystemSettingConstVars.cs +++ b/CoreCms.Net.Configuration/SystemSettingConstVars.cs @@ -598,6 +598,10 @@ namespace CoreCms.Net.Configuration /// public static readonly string FilesStorageType = "filesStorageType"; /// + /// 存储路径 + /// + public static readonly string FilesStoragePath = "filesStoragePath"; + /// /// 文件后缀类型 /// public static readonly string FilesStorageFileSuffix = "filesStorageFileSuffix"; diff --git a/CoreCms.Net.Configuration/SystemSettingDictionary.cs b/CoreCms.Net.Configuration/SystemSettingDictionary.cs index b5bcc7b11bfbdb64536c977b7c7ff3e6f772f691..72b92807b01a752659b67fb8cb480b713bc30bb6 100644 --- a/CoreCms.Net.Configuration/SystemSettingDictionary.cs +++ b/CoreCms.Net.Configuration/SystemSettingDictionary.cs @@ -175,6 +175,7 @@ namespace CoreCms.Net.Configuration //附件存储 di.Add(SystemSettingConstVars.FilesStorageType, new DictionaryKeyValues() { sKey = "存储方式", sValue = "LocalStorage" }); + di.Add(SystemSettingConstVars.FilesStoragePath, new DictionaryKeyValues() { sKey = "存储路径", sValue = "Upload" }); di.Add(SystemSettingConstVars.FilesStorageFileSuffix, new DictionaryKeyValues() { sKey = "文件后缀类型", sValue = "gif,jpg,jpeg,png,bmp,xls,xlsx,doc,pdf,mp4,WebM,Ogv" }); di.Add(SystemSettingConstVars.FilesStorageFileMaxSize, new DictionaryKeyValues() { sKey = "文件最大大小", sValue = "10" }); di.Add(SystemSettingConstVars.FilesStorageBucketBindUrl, new DictionaryKeyValues() { sKey = "云存储绑定域名", sValue = "https://www.corecms.net/" }); diff --git a/CoreCms.Net.IRepository/Good/ICoreCmsGoodsTypeParamsRepository.cs b/CoreCms.Net.IRepository/Good/ICoreCmsGoodsTypeParamsRepository.cs deleted file mode 100644 index 5ed242a948c3364f28b2ba21dff91112f2f15775..0000000000000000000000000000000000000000 --- a/CoreCms.Net.IRepository/Good/ICoreCmsGoodsTypeParamsRepository.cs +++ /dev/null @@ -1,11 +0,0 @@ -using CoreCms.Net.Model.Entities; - -namespace CoreCms.Net.IRepository -{ - /// - /// 商品参数类型关系表 工厂接口 - /// - public interface ICoreCmsGoodsTypeParamsRepository : IBaseRepository - { - } -} \ No newline at end of file diff --git a/CoreCms.Net.IRepository/Good/ICoreCmsGoodsTypeRepository.cs b/CoreCms.Net.IRepository/Good/ICoreCmsGoodsTypeRepository.cs deleted file mode 100644 index 943151c2132174c90a88f4b040b9719cd1188654..0000000000000000000000000000000000000000 --- a/CoreCms.Net.IRepository/Good/ICoreCmsGoodsTypeRepository.cs +++ /dev/null @@ -1,41 +0,0 @@ -using System.Threading.Tasks; -using CoreCms.Net.Model.Entities; -using CoreCms.Net.Model.FromBody; -using CoreCms.Net.Model.ViewModels.UI; - -namespace CoreCms.Net.IRepository -{ - /// - /// 商品类型 工厂接口 - /// - public interface ICoreCmsGoodsTypeRepository : IBaseRepository - { - /// - /// 事务重写异步插入方法 - /// - /// - /// - Task InsertAsync(FmGoodsTypeInsert entity); - - /// - /// 重写删除指定ID的数据 - /// - /// - /// - Task DeleteByIdAsync(int id); - - /// - /// 更新参数 - /// - /// - /// - Task UpdateParametersAsync(FMUpdateArrayIntDataByIntId entity); - - /// - /// 更新属性 - /// - /// - /// - Task UpdateTypesAsync(FMUpdateArrayIntDataByIntId entity); - } -} \ No newline at end of file diff --git a/CoreCms.Net.IRepository/Good/ICoreCmsGoodsTypeSpecRelRepository.cs b/CoreCms.Net.IRepository/Good/ICoreCmsGoodsTypeSpecRelRepository.cs deleted file mode 100644 index 4466915f882d8e0c5c3c87280882714d5759bd61..0000000000000000000000000000000000000000 --- a/CoreCms.Net.IRepository/Good/ICoreCmsGoodsTypeSpecRelRepository.cs +++ /dev/null @@ -1,11 +0,0 @@ -using CoreCms.Net.Model.Entities; - -namespace CoreCms.Net.IRepository -{ - /// - /// 商品类型和属性关联表 工厂接口 - /// - public interface ICoreCmsGoodsTypeSpecRelRepository : IBaseRepository - { - } -} \ No newline at end of file diff --git a/CoreCms.Net.IServices/Good/ICoreCmsGoodsTypeParamsServices.cs b/CoreCms.Net.IServices/Good/ICoreCmsGoodsTypeParamsServices.cs deleted file mode 100644 index 970de5f1e94cb208f8a3f4dc625e883251e8bb84..0000000000000000000000000000000000000000 --- a/CoreCms.Net.IServices/Good/ICoreCmsGoodsTypeParamsServices.cs +++ /dev/null @@ -1,21 +0,0 @@ -/*********************************************************************** - * Project: CoreCms - * ProjectName: 核心内容管理系统 - * Web: https://www.corecms.net - * Author: 大灰灰 - * Email: jianweie@163.com - * CreateTime: 2021/1/31 21:45:10 - * Description: 暂无 - ***********************************************************************/ - -using CoreCms.Net.Model.Entities; - -namespace CoreCms.Net.IServices -{ - /// - /// 商品参数类型关系表 服务工厂接口 - /// - public interface ICoreCmsGoodsTypeParamsServices : IBaseServices - { - } -} \ No newline at end of file diff --git a/CoreCms.Net.IServices/Good/ICoreCmsGoodsTypeServices.cs b/CoreCms.Net.IServices/Good/ICoreCmsGoodsTypeServices.cs deleted file mode 100644 index eb86cf43b7f5da0ce71062fd11c4e3c59fbbef36..0000000000000000000000000000000000000000 --- a/CoreCms.Net.IServices/Good/ICoreCmsGoodsTypeServices.cs +++ /dev/null @@ -1,81 +0,0 @@ -/*********************************************************************** - * Project: CoreCms - * ProjectName: 核心内容管理系统 - * Web: https://www.corecms.net - * Author: 大灰灰 - * Email: jianweie@163.com - * CreateTime: 2021/1/31 21:45:10 - * Description: 暂无 - ***********************************************************************/ - -using System.Threading.Tasks; -using CoreCms.Net.Model.Entities; -using CoreCms.Net.Model.FromBody; -using CoreCms.Net.Model.ViewModels.UI; - -namespace CoreCms.Net.IServices -{ - /// - /// 商品类型 服务工厂接口 - /// - public interface ICoreCmsGoodsTypeServices : IBaseServices - { - /// - /// 更新参数 - /// - /// - /// - Task UpdateParametersAsync(FMUpdateArrayIntDataByIntId entity); - - - /// - /// 更新属性 - /// - /// - /// - Task UpdateTypesAsync(FMUpdateArrayIntDataByIntId entity); - - #region 重写增删改查操作=========================================================== - - /// - /// 事务重写异步插入方法 - /// - /// - /// - Task InsertAsync(FmGoodsTypeInsert entity); - - - ///// - ///// 重写异步更新方法方法 - ///// - ///// - ///// - //new Task UpdateAsync(CoreCmsGoodsType entity); - - - ///// - ///// 重写异步更新方法方法 - ///// - ///// - ///// - //new Task UpdateAsync(List entity); - - - /// - /// 重写删除指定ID的数据 - /// - /// - /// - Task DeleteByIdAsync(int id); - - - ///// - ///// 重写删除指定ID集合的数据(批量删除) - ///// - ///// - ///// - //new Task DeleteByIdsAsync(int[] ids); - - #endregion - } -} \ No newline at end of file diff --git a/CoreCms.Net.IServices/Good/ICoreCmsGoodsTypeSpecRelServices.cs b/CoreCms.Net.IServices/Good/ICoreCmsGoodsTypeSpecRelServices.cs deleted file mode 100644 index 222e6a32e0ea349e544ba05e771ecc2a29345ca6..0000000000000000000000000000000000000000 --- a/CoreCms.Net.IServices/Good/ICoreCmsGoodsTypeSpecRelServices.cs +++ /dev/null @@ -1,21 +0,0 @@ -/*********************************************************************** - * Project: CoreCms - * ProjectName: 核心内容管理系统 - * Web: https://www.corecms.net - * Author: 大灰灰 - * Email: jianweie@163.com - * CreateTime: 2021/1/31 21:45:10 - * Description: 暂无 - ***********************************************************************/ - -using CoreCms.Net.Model.Entities; - -namespace CoreCms.Net.IServices -{ - /// - /// 商品类型和属性关联表 服务工厂接口 - /// - public interface ICoreCmsGoodsTypeSpecRelServices : IBaseServices - { - } -} \ No newline at end of file diff --git a/CoreCms.Net.Model/Entities/Good/CoreCmsGoods.cs b/CoreCms.Net.Model/Entities/Good/CoreCmsGoods.cs index e56c50f62a839a41c6c69c323fd0d118c9d7d300..84447afcdbfc7ff6d85edeb4eb899d79d74aba05 100644 --- a/CoreCms.Net.Model/Entities/Good/CoreCmsGoods.cs +++ b/CoreCms.Net.Model/Entities/Good/CoreCmsGoods.cs @@ -1,239 +1,247 @@ /*********************************************************************** * Project: CoreCms - * ProjectName: 核心内容管理系统 - * Web: https://www.corecms.net - * Author: 大灰灰 + * ProjectName: 核心内容管理系统 + * Web: https://www.corecms.net + * Author: 大灰灰 * Email: jianweie@163.com - * CreateTime: 2021-06-08 22:14:58 + * CreateTime: 2021/7/16 1:14:14 * Description: 暂无 -***********************************************************************/ -using SqlSugar; + ***********************************************************************/ + +using System; using System.ComponentModel.DataAnnotations; +using SqlSugar; namespace CoreCms.Net.Model.Entities { /// - /// 商品表 + /// 商品表 /// - [SugarTable("CoreCmsGoods",TableDescription = "商品表")] public partial class CoreCmsGoods { /// - /// 商品表 - /// - public CoreCmsGoods() - { - } - - /// - /// 商品ID + /// 商品ID /// [Display(Name = "商品ID")] - [SugarColumn(ColumnDescription = "商品ID", IsPrimaryKey = true, IsIdentity = true)] + [SugarColumn(IsPrimaryKey = true, IsIdentity = true)] [Required(ErrorMessage = "请输入{0}")] - public System.Int32 id { get; set; } + public int id { get; set; } + /// - /// 商品条码 + /// 商品条码 /// [Display(Name = "商品条码")] - [SugarColumn(ColumnDescription = "商品条码")] [Required(ErrorMessage = "请输入{0}")] - [StringLength(30, ErrorMessage = "【{0}】不能超过{1}字符长度")] - public System.String bn { get; set; } + [StringLength(30, ErrorMessage = "{0}不能超过{1}字")] + public string bn { get; set; } + /// - /// 商品名称 + /// 商品名称 /// [Display(Name = "商品名称")] - [SugarColumn(ColumnDescription = "商品名称")] [Required(ErrorMessage = "请输入{0}")] - [StringLength(200, ErrorMessage = "【{0}】不能超过{1}字符长度")] - public System.String name { get; set; } + [StringLength(200, ErrorMessage = "{0}不能超过{1}字")] + public string name { get; set; } + /// - /// 商品简介 + /// 商品简介 /// [Display(Name = "商品简介")] - [SugarColumn(ColumnDescription = "商品简介", IsNullable = true)] - [StringLength(255, ErrorMessage = "【{0}】不能超过{1}字符长度")] - public System.String brief { get; set; } + [StringLength(255, ErrorMessage = "{0}不能超过{1}字")] + public string brief { get; set; } + /// - /// 缩略图 + /// 缩略图 /// [Display(Name = "缩略图")] - [SugarColumn(ColumnDescription = "缩略图", IsNullable = true)] - [StringLength(255, ErrorMessage = "【{0}】不能超过{1}字符长度")] - public System.String image { get; set; } + [StringLength(255, ErrorMessage = "{0}不能超过{1}字")] + public string image { get; set; } + /// - /// 图集 + /// 图集 /// [Display(Name = "图集")] - [SugarColumn(ColumnDescription = "图集", IsNullable = true)] - public System.String images { get; set; } + public string images { get; set; } + /// - /// 视频 + /// 视频 /// [Display(Name = "视频")] - [SugarColumn(ColumnDescription = "视频", IsNullable = true)] - [StringLength(255, ErrorMessage = "【{0}】不能超过{1}字符长度")] - public System.String video { get; set; } + [StringLength(255, ErrorMessage = "{0}不能超过{1}字")] + public string video { get; set; } + /// - /// 佣金分配方式 + /// 佣金分配方式 /// [Display(Name = "佣金分配方式")] - [SugarColumn(ColumnDescription = "佣金分配方式")] [Required(ErrorMessage = "请输入{0}")] - public System.Int32 productsDistributionType { get; set; } + public int productsDistributionType { get; set; } + /// - /// 商品分类 + /// 商品分类 /// [Display(Name = "商品分类")] - [SugarColumn(ColumnDescription = "商品分类")] [Required(ErrorMessage = "请输入{0}")] - public System.Int32 goodsCategoryId { get; set; } + public int goodsCategoryId { get; set; } + /// - /// 商品类别 + /// 商品类别 /// [Display(Name = "商品类别")] - [SugarColumn(ColumnDescription = "商品类别")] [Required(ErrorMessage = "请输入{0}")] - public System.Int32 goodsTypeId { get; set; } + public int goodsTypeId { get; set; } + + /// + /// sku序列 + /// + [Display(Name = "sku序列")] + [StringLength(255, ErrorMessage = "{0}不能超过{1}字")] + public string goodsSkuIds { get; set; } + + /// + /// 参数序列 + /// + [Display(Name = "参数序列")] + [StringLength(255, ErrorMessage = "{0}不能超过{1}字")] + public string goodsParamsIds { get; set; } + /// - /// 品牌 + /// 品牌 /// [Display(Name = "品牌")] - [SugarColumn(ColumnDescription = "品牌")] [Required(ErrorMessage = "请输入{0}")] - public System.Int32 brandId { get; set; } + public int brandId { get; set; } + /// - /// 是否虚拟商品 + /// 是否虚拟商品 /// [Display(Name = "是否虚拟商品")] - [SugarColumn(ColumnDescription = "是否虚拟商品")] [Required(ErrorMessage = "请输入{0}")] - public System.Boolean isNomalVirtual { get; set; } + public bool isNomalVirtual { get; set; } + /// - /// 是否上架 + /// 是否上架 /// [Display(Name = "是否上架")] - [SugarColumn(ColumnDescription = "是否上架")] [Required(ErrorMessage = "请输入{0}")] - public System.Boolean isMarketable { get; set; } + public bool isMarketable { get; set; } + /// - /// 商品单位 + /// 商品单位 /// [Display(Name = "商品单位")] - [SugarColumn(ColumnDescription = "商品单位", IsNullable = true)] - [StringLength(20, ErrorMessage = "【{0}】不能超过{1}字符长度")] - public System.String unit { get; set; } + [StringLength(20, ErrorMessage = "{0}不能超过{1}字")] + public string unit { get; set; } + /// - /// 商品详情 + /// 商品详情 /// [Display(Name = "商品详情")] - [SugarColumn(ColumnDescription = "商品详情", IsNullable = true)] - public System.String intro { get; set; } + public string intro { get; set; } + /// - /// 商品规格序列号存储 + /// 商品规格序列号存储 /// [Display(Name = "商品规格序列号存储")] - [SugarColumn(ColumnDescription = "商品规格序列号存储", IsNullable = true)] - public System.String spesDesc { get; set; } + public string spesDesc { get; set; } + /// - /// 参数序列化 + /// 参数序列化 /// [Display(Name = "参数序列化")] - [SugarColumn(ColumnDescription = "参数序列化", IsNullable = true)] - public System.String parameters { get; set; } + public string parameters { get; set; } + /// - /// 评论次数 + /// 评论次数 /// [Display(Name = "评论次数")] - [SugarColumn(ColumnDescription = "评论次数")] [Required(ErrorMessage = "请输入{0}")] - public System.Int32 commentsCount { get; set; } + public int commentsCount { get; set; } + /// - /// 浏览次数 + /// 浏览次数 /// [Display(Name = "浏览次数")] - [SugarColumn(ColumnDescription = "浏览次数")] [Required(ErrorMessage = "请输入{0}")] - public System.Int32 viewCount { get; set; } + public int viewCount { get; set; } + /// - /// 购买次数 + /// 购买次数 /// [Display(Name = "购买次数")] - [SugarColumn(ColumnDescription = "购买次数")] [Required(ErrorMessage = "请输入{0}")] - public System.Int32 buyCount { get; set; } + public int buyCount { get; set; } + /// - /// 上架时间 + /// 上架时间 /// [Display(Name = "上架时间")] - [SugarColumn(ColumnDescription = "上架时间", IsNullable = true)] - public System.DateTime? uptime { get; set; } + public DateTime? uptime { get; set; } + /// - /// 下架时间 + /// 下架时间 /// [Display(Name = "下架时间")] - [SugarColumn(ColumnDescription = "下架时间", IsNullable = true)] - public System.DateTime? downtime { get; set; } + public DateTime? downtime { get; set; } + /// - /// 商品排序 + /// 商品排序 /// [Display(Name = "商品排序")] - [SugarColumn(ColumnDescription = "商品排序")] [Required(ErrorMessage = "请输入{0}")] - public System.Int32 sort { get; set; } + public int sort { get; set; } + /// - /// 标签id逗号分隔 + /// 标签id逗号分隔 /// [Display(Name = "标签id逗号分隔")] - [SugarColumn(ColumnDescription = "标签id逗号分隔", IsNullable = true)] - [StringLength(50, ErrorMessage = "【{0}】不能超过{1}字符长度")] - public System.String labelIds { get; set; } + [StringLength(50, ErrorMessage = "{0}不能超过{1}字")] + public string labelIds { get; set; } + /// - /// 自定义规格名称 + /// 自定义规格名称 /// [Display(Name = "自定义规格名称")] - [SugarColumn(ColumnDescription = "自定义规格名称", IsNullable = true)] - public System.String newSpec { get; set; } + public string newSpec { get; set; } + /// - /// 开启规则 + /// 开启规则 /// [Display(Name = "开启规则")] - [SugarColumn(ColumnDescription = "开启规则")] [Required(ErrorMessage = "请输入{0}")] - public System.Int32 openSpec { get; set; } + public int openSpec { get; set; } + /// - /// 创建时间 + /// 创建时间 /// [Display(Name = "创建时间")] - [SugarColumn(ColumnDescription = "创建时间", IsNullable = true)] - public System.DateTime? createTime { get; set; } + public DateTime? createTime { get; set; } + /// - /// 更新时间 + /// 更新时间 /// [Display(Name = "更新时间")] - [SugarColumn(ColumnDescription = "更新时间", IsNullable = true)] - public System.DateTime? updateTime { get; set; } + public DateTime? updateTime { get; set; } + /// - /// 是否推荐 + /// 是否推荐 /// [Display(Name = "是否推荐")] - [SugarColumn(ColumnDescription = "是否推荐")] [Required(ErrorMessage = "请输入{0}")] - public System.Boolean isRecommend { get; set; } + public bool isRecommend { get; set; } + /// - /// 是否热门 + /// 是否热门 /// [Display(Name = "是否热门")] - [SugarColumn(ColumnDescription = "是否热门")] [Required(ErrorMessage = "请输入{0}")] - public System.Boolean isHot { get; set; } + public bool isHot { get; set; } + /// - /// 是否删除 + /// 是否删除 /// [Display(Name = "是否删除")] - [SugarColumn(ColumnDescription = "是否删除")] [Required(ErrorMessage = "请输入{0}")] - public System.Boolean isDel { get; set; } + public bool isDel { get; set; } } } \ No newline at end of file diff --git a/CoreCms.Net.Model/Entities/Good/CoreCmsGoodsType.cs b/CoreCms.Net.Model/Entities/Good/CoreCmsGoodsType.cs deleted file mode 100644 index 29723132a2b2a1082ce83b3895fe2d96f991feb7..0000000000000000000000000000000000000000 --- a/CoreCms.Net.Model/Entities/Good/CoreCmsGoodsType.cs +++ /dev/null @@ -1,49 +0,0 @@ -/*********************************************************************** - * Project: CoreCms - * ProjectName: 核心内容管理系统 - * Web: https://www.corecms.net - * Author: 大灰灰 - * Email: jianweie@163.com - * CreateTime: 2021-06-08 22:14:58 - * Description: 暂无 -***********************************************************************/ -using SqlSugar; -using System.ComponentModel.DataAnnotations; - -namespace CoreCms.Net.Model.Entities -{ - /// - /// 商品类型 - /// - [SugarTable("CoreCmsGoodsType",TableDescription = "商品类型")] - public partial class CoreCmsGoodsType - { - /// - /// 商品类型 - /// - public CoreCmsGoodsType() - { - } - - /// - /// 序列 - /// - [Display(Name = "序列")] - [SugarColumn(ColumnDescription = "序列", IsPrimaryKey = true, IsIdentity = true)] - [Required(ErrorMessage = "请输入{0}")] - public System.Int32 id { get; set; } - /// - /// 类型名称 - /// - [Display(Name = "类型名称")] - [SugarColumn(ColumnDescription = "类型名称", IsNullable = true)] - [StringLength(20, ErrorMessage = "【{0}】不能超过{1}字符长度")] - public System.String name { get; set; } - /// - /// 参数序列号数组 - /// - [Display(Name = "参数序列号数组")] - [SugarColumn(ColumnDescription = "参数序列号数组", IsNullable = true)] - public System.String parameters { get; set; } - } -} \ No newline at end of file diff --git a/CoreCms.Net.Model/Entities/Good/CoreCmsGoodsTypeParams.cs b/CoreCms.Net.Model/Entities/Good/CoreCmsGoodsTypeParams.cs deleted file mode 100644 index ce7cee6ef9e6496dcf1bfeb5496765929b6bfea8..0000000000000000000000000000000000000000 --- a/CoreCms.Net.Model/Entities/Good/CoreCmsGoodsTypeParams.cs +++ /dev/null @@ -1,43 +0,0 @@ -/*********************************************************************** - * Project: CoreCms - * ProjectName: 核心内容管理系统 - * Web: https://www.corecms.net - * Author: 大灰灰 - * Email: jianweie@163.com - * CreateTime: 2021-06-08 22:14:58 - * Description: 暂无 -***********************************************************************/ -using SqlSugar; -using System.ComponentModel.DataAnnotations; - -namespace CoreCms.Net.Model.Entities -{ - /// - /// 商品参数类型关系表 - /// - [SugarTable("CoreCmsGoodsTypeParams",TableDescription = "商品参数类型关系表")] - public partial class CoreCmsGoodsTypeParams - { - /// - /// 商品参数类型关系表 - /// - public CoreCmsGoodsTypeParams() - { - } - - /// - /// 商品参数id - /// - [Display(Name = "商品参数id")] - [SugarColumn(ColumnDescription = "商品参数id")] - [Required(ErrorMessage = "请输入{0}")] - public System.Int32 paramsId { get; set; } - /// - /// 商品类型id - /// - [Display(Name = "商品类型id")] - [SugarColumn(ColumnDescription = "商品类型id")] - [Required(ErrorMessage = "请输入{0}")] - public System.Int32 typeId { get; set; } - } -} \ No newline at end of file diff --git a/CoreCms.Net.Model/Entities/Good/CoreCmsGoodsTypePartial.cs b/CoreCms.Net.Model/Entities/Good/CoreCmsGoodsTypePartial.cs deleted file mode 100644 index 813a162c1eeccdf1c778f8342d3af652a244ba3c..0000000000000000000000000000000000000000 --- a/CoreCms.Net.Model/Entities/Good/CoreCmsGoodsTypePartial.cs +++ /dev/null @@ -1,34 +0,0 @@ -/*********************************************************************** - * Project: CoreCms - * ProjectName: 核心内容管理系统 - * Web: https://www.corecms.net - * Author: 大灰灰 - * Email: jianweie@163.com - * CreateTime: 2021/1/31 21:45:10 - * Description: 暂无 - ***********************************************************************/ - -using System.Collections.Generic; -using SqlSugar; - -namespace CoreCms.Net.Model.Entities -{ - /// - /// 商品类型扩展 - /// - public partial class CoreCmsGoodsType - { - /// - /// 关联属性 - /// - [SugarColumn(IsIgnore = true)] - public List spec { get; set; } = new(); - - - /// - /// 关联参数 - /// - [SugarColumn(IsIgnore = true)] - public List parameter { get; set; } = new(); - } -} \ No newline at end of file diff --git a/CoreCms.Net.Model/Entities/Good/CoreCmsGoodsTypeSpecRel.cs b/CoreCms.Net.Model/Entities/Good/CoreCmsGoodsTypeSpecRel.cs deleted file mode 100644 index d76eec8e29b0e8daa22d0cf8014c7601672c788d..0000000000000000000000000000000000000000 --- a/CoreCms.Net.Model/Entities/Good/CoreCmsGoodsTypeSpecRel.cs +++ /dev/null @@ -1,43 +0,0 @@ -/*********************************************************************** - * Project: CoreCms - * ProjectName: 核心内容管理系统 - * Web: https://www.corecms.net - * Author: 大灰灰 - * Email: jianweie@163.com - * CreateTime: 2021-06-08 22:14:58 - * Description: 暂无 -***********************************************************************/ -using SqlSugar; -using System.ComponentModel.DataAnnotations; - -namespace CoreCms.Net.Model.Entities -{ - /// - /// 商品类型和属性关联表 - /// - [SugarTable("CoreCmsGoodsTypeSpecRel",TableDescription = "商品类型和属性关联表")] - public partial class CoreCmsGoodsTypeSpecRel - { - /// - /// 商品类型和属性关联表 - /// - public CoreCmsGoodsTypeSpecRel() - { - } - - /// - /// 属性ID - /// - [Display(Name = "属性ID")] - [SugarColumn(ColumnDescription = "属性ID")] - [Required(ErrorMessage = "请输入{0}")] - public System.Int32 specId { get; set; } - /// - /// 类型ID - /// - [Display(Name = "类型ID")] - [SugarColumn(ColumnDescription = "类型ID")] - [Required(ErrorMessage = "请输入{0}")] - public System.Int32 typeId { get; set; } - } -} \ No newline at end of file diff --git a/CoreCms.Net.Model/ViewModels/Options/FilesStorageOptions.cs b/CoreCms.Net.Model/ViewModels/Options/FilesStorageOptions.cs index 9058111aea4976df98622377f51b9b000f91de38..067c866553220f4f0ea4e7b831b94e4093c0eb7b 100644 --- a/CoreCms.Net.Model/ViewModels/Options/FilesStorageOptions.cs +++ b/CoreCms.Net.Model/ViewModels/Options/FilesStorageOptions.cs @@ -21,6 +21,11 @@ namespace CoreCms.Net.Model.ViewModels.Options /// public string StorageType { get; set; } = "LocalStorage"; + /// + /// 存储目录 + /// + public string Path { get; set; } = "Upload"; + /// /// 账户标识(腾讯云) /// diff --git a/CoreCms.Net.Repository/Good/CoreCmsGoodsTypeParamsRepository.cs b/CoreCms.Net.Repository/Good/CoreCmsGoodsTypeParamsRepository.cs deleted file mode 100644 index 9c9b0e252d3292ffd72c44e80aefcfba4069ec7a..0000000000000000000000000000000000000000 --- a/CoreCms.Net.Repository/Good/CoreCmsGoodsTypeParamsRepository.cs +++ /dev/null @@ -1,26 +0,0 @@ -/*********************************************************************** - * Project: CoreCms - * ProjectName: 核心内容管理系统 - * Web: https://www.corecms.net - * Author: 大灰灰 - * Email: jianweie@163.com - * CreateTime: 2021/1/31 21:45:10 - * Description: 暂无 - ***********************************************************************/ - -using CoreCms.Net.IRepository; -using CoreCms.Net.IRepository.UnitOfWork; -using CoreCms.Net.Model.Entities; - -namespace CoreCms.Net.Repository -{ - /// - /// 商品参数类型关系表 接口实现 - /// - public class CoreCmsGoodsTypeParamsRepository : BaseRepository, ICoreCmsGoodsTypeParamsRepository - { - public CoreCmsGoodsTypeParamsRepository(IUnitOfWork unitOfWork) : base(unitOfWork) - { - } - } -} diff --git a/CoreCms.Net.Repository/Good/CoreCmsGoodsTypeRepository.cs b/CoreCms.Net.Repository/Good/CoreCmsGoodsTypeRepository.cs deleted file mode 100644 index 8e049b36c906a78511225fa213367aeccb4c4411..0000000000000000000000000000000000000000 --- a/CoreCms.Net.Repository/Good/CoreCmsGoodsTypeRepository.cs +++ /dev/null @@ -1,336 +0,0 @@ -/*********************************************************************** - * Project: CoreCms - * ProjectName: 核心内容管理系统 - * Web: https://www.corecms.net - * Author: 大灰灰 - * Email: jianweie@163.com - * CreateTime: 2021/1/31 21:45:10 - * Description: 暂无 - ***********************************************************************/ -using System; -using System.Collections; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; -using CoreCms.Net.Configuration; -using CoreCms.Net.IRepository; -using CoreCms.Net.IRepository.UnitOfWork; -using CoreCms.Net.Loging; -using CoreCms.Net.Model.Entities; -using CoreCms.Net.Model.FromBody; -using CoreCms.Net.Model.ViewModels.UI; - -namespace CoreCms.Net.Repository -{ - /// - /// 商品类型 接口实现 - /// - public class CoreCmsGoodsTypeRepository : BaseRepository, ICoreCmsGoodsTypeRepository - { - public CoreCmsGoodsTypeRepository(IUnitOfWork unitOfWork) : base(unitOfWork) - { - } - - - /// - /// 重写异步插入方法 - /// - /// 实体数据 - /// - public async Task InsertAsync(FmGoodsTypeInsert entity) - { - var jm = new AdminUiCallBack(); - - var goodsType = new CoreCmsGoodsType(); - goodsType.name = entity.name; - goodsType.parameters = ""; - var typesId = await DbClient.Insertable(goodsType).ExecuteReturnIdentityAsync(); - var bl = typesId > 0; - if (bl) - { - //参数集合处理 - if (entity.parameters != null && entity.parameters.Any()) - { - //已经存在数据处理 - var oldPar = entity.parameters.Where(p => p.paramsId > 0).Select(p => p.paramsId).ToList(); - if (oldPar.Any()) - { - //存在的数据直接进行数据关联 - var goodsTypeParams = new List(); - oldPar.ForEach(p => - { - goodsTypeParams.Add(new CoreCmsGoodsTypeParams() - { - paramsId = p, - typeId = typesId - }); - }); - bl = DbClient.Insertable(goodsTypeParams).ExecuteCommand() > 0; - } - var newPar = entity.parameters.Where(p => p.paramsId == 0).ToList(); - if (newPar.Any()) - { - //不存在的参数先插入数据库,并且返回ids数组。 - ArrayList ids = new ArrayList(); - newPar.ForEach(p => - { - var paramsModel = new CoreCmsGoodsParams() - { - name = p.paramsName, - value = p.paramsValue, - type = p.paramsType, - createTime = DateTime.Now - }; - var id = DbClient.Insertable(paramsModel).ExecuteReturnIdentity(); - ids.Add(id); - }); - //新参数集合插入成功并且返回数组后进行关联操作。 - if (ids.Count > 0) - { - var goodsTypeParams = new List(); - foreach (var id in ids) - { - goodsTypeParams.Add(new CoreCmsGoodsTypeParams() - { - paramsId = (int)id, - typeId = typesId - }); - } - bl = DbClient.Insertable(goodsTypeParams).ExecuteCommand() > 0; - } - } - - } - //属性集合处理 - if (entity.types != null && entity.types.Any()) - { - //针对已经存在数据库的属性 - var oldTypeSpec = entity.types.Where(p => p.typeId > 0).Select(p => p.typeId).ToList(); - if (oldTypeSpec.Any()) - { - //存在的数据直接进行数据关联 - var goodsTypeSpecRel = new List(); - oldTypeSpec.ForEach(p => - { - goodsTypeSpecRel.Add(new CoreCmsGoodsTypeSpecRel() - { - specId = p, - typeId = typesId - }); - }); - bl = await DbClient.Insertable(goodsTypeSpecRel).ExecuteCommandAsync() > 0; - } - //针对数据库不存在的数据 - var newTypeSpec = entity.types.Where(p => p.typeId == 0).ToList(); - if (newTypeSpec.Any()) - { - //执行新增操作 - ArrayList ids = new ArrayList(); - var goodsTypeSpecValues = new List(); - newTypeSpec.ForEach(async p => - { - var goodsTypeSpec = new CoreCmsGoodsTypeSpec(); - goodsTypeSpec.name = p.typeName; - goodsTypeSpec.sort = 100; - var id = await DbClient.Insertable(goodsTypeSpec).ExecuteReturnIdentityAsync(); - - if (!string.IsNullOrEmpty(p.typeValue)) - { - if (p.typeValue.Contains(",")) - { - var values = p.typeValue.Split(","); - foreach (var value in values) - { - goodsTypeSpecValues.Add(new CoreCmsGoodsTypeSpecValue() - { - specId = id, - value = value, - sort = 100 - }); - } - } - else - { - goodsTypeSpecValues.Add(new CoreCmsGoodsTypeSpecValue() - { - specId = id, - value = p.typeValue, - sort = 100 - }); - } - } - if (goodsTypeSpecValues.Any()) - { - bl = await DbClient.Insertable(goodsTypeSpecValues).ExecuteCommandAsync() > 0; - } - ids.Add(id); - }); - //新参数集合插入成功并且返回数组后进行关联操作。 - if (ids.Count > 0) - { - var goodsTypeSpecRel = new List(); - foreach (var id in ids) - { - goodsTypeSpecRel.Add(new CoreCmsGoodsTypeSpecRel() - { - specId = (int)id, - typeId = typesId - }); - } - bl = await DbClient.Insertable(goodsTypeSpecRel).ExecuteCommandAsync() > 0; - } - } - } - } - jm.code = bl ? 0 : 1; - jm.msg = bl ? GlobalConstVars.CreateSuccess : GlobalConstVars.CreateFailure; - if (bl) - { - var types = await DbClient.Queryable().ToListAsync(); - jm.data = new - { - types - }; - } - - return jm; - } - - - /// - /// 重写删除指定ID的数据 - /// - /// - /// - public async Task DeleteByIdAsync(int id) - { - var jm = new AdminUiCallBack(); - - var bl = await DbClient.Deleteable(id).ExecuteCommandHasChangeAsync(); - if (bl) - { - //删除参数关联 - await DbClient.Deleteable().Where(p => p.typeId == id).ExecuteCommandHasChangeAsync(); - //删除属性关联 - await DbClient.Deleteable().Where(p => p.typeId == id).ExecuteCommandHasChangeAsync(); - } - jm.code = bl ? 0 : 1; - jm.msg = bl ? GlobalConstVars.DeleteSuccess : GlobalConstVars.DeleteFailure; - - return jm; - } - - /// - /// 更新参数 - /// - /// - /// - public async Task UpdateParametersAsync(FMUpdateArrayIntDataByIntId entity) - { - var jm = new AdminUiCallBack(); - - var oldModel = await DbClient.Queryable().In(entity.id).SingleAsync(); - if (oldModel == null) - { - jm.msg = "不存在此信息"; - return jm; - } - //事物处理过程开始 - var goodsTypeParams = new List(); - var count = 0; - var oldParams = await DbClient.Queryable().Where(p => p.typeId == entity.id).ToListAsync(); - if (oldParams.Any()) - { - var ids = oldParams.Select(p => p.paramsId).ToList(); - var exceptOld = ids.Except(entity.data).ToList(); - if (exceptOld.Any()) - { - count += await DbClient.Deleteable().Where(p => exceptOld.Contains(p.paramsId) && p.typeId == entity.id).ExecuteCommandAsync(); - } - var exceptNew = entity.data.Except(ids).ToList(); - if (exceptNew.Any()) - { - exceptNew.ForEach(p => - { - goodsTypeParams.Add(new CoreCmsGoodsTypeParams() { paramsId = p, typeId = entity.id }); - }); - } - } - else if (entity.data.Any()) - { - entity.data.ForEach(p => - { - goodsTypeParams.Add(new CoreCmsGoodsTypeParams() { paramsId = p, typeId = entity.id }); - }); - } - if (goodsTypeParams.Any()) - { - count += await DbClient.Insertable(goodsTypeParams).ExecuteCommandAsync(); - } - //事物处理过程结束 - var bl = count >= 0; - jm.code = bl ? 0 : 1; - jm.msg = bl ? GlobalConstVars.EditSuccess : GlobalConstVars.EditFailure; - - return jm; - - } - - /// - /// 更新属性 - /// - /// - /// - public async Task UpdateTypesAsync(FMUpdateArrayIntDataByIntId entity) - { - var jm = new AdminUiCallBack(); - - var oldModel = await DbClient.Queryable().In(entity.id).SingleAsync(); - if (oldModel == null) - { - jm.msg = "不存在此信息"; - return jm; - } - //事物处理过程开始 - var goodsTypeSpecRel = new List(); - var count = 0; - var oldParams = await DbClient.Queryable().Where(p => p.typeId == entity.id).ToListAsync(); - if (oldParams.Any()) - { - var ids = oldParams.Select(p => p.specId).ToList(); - var exceptOld = ids.Except(entity.data).ToList(); - if (exceptOld.Any()) - { - count += await DbClient.Deleteable().Where(p => exceptOld.Contains(p.specId) && p.typeId == entity.id).ExecuteCommandAsync(); - } - var exceptNew = entity.data.Except(ids).ToList(); - if (exceptNew.Any()) - { - exceptNew.ForEach(p => - { - goodsTypeSpecRel.Add(new CoreCmsGoodsTypeSpecRel() { specId = p, typeId = entity.id }); - }); - } - } - else if (entity.data.Any()) - { - entity.data.ForEach(p => - { - goodsTypeSpecRel.Add(new CoreCmsGoodsTypeSpecRel() { specId = p, typeId = entity.id }); - }); - } - if (goodsTypeSpecRel.Any()) - { - count += await DbClient.Insertable(goodsTypeSpecRel).ExecuteCommandAsync(); - } - //事物处理过程结束 - var bl = count >= 0; - jm.code = bl ? 0 : 1; - jm.msg = bl ? GlobalConstVars.EditSuccess : GlobalConstVars.EditFailure; - - return jm; - } - - - } -} diff --git a/CoreCms.Net.Repository/Good/CoreCmsGoodsTypeSpecRelRepository.cs b/CoreCms.Net.Repository/Good/CoreCmsGoodsTypeSpecRelRepository.cs deleted file mode 100644 index b706049f61c6f0d32913698add2ea7ced96392c6..0000000000000000000000000000000000000000 --- a/CoreCms.Net.Repository/Good/CoreCmsGoodsTypeSpecRelRepository.cs +++ /dev/null @@ -1,26 +0,0 @@ -/*********************************************************************** - * Project: CoreCms - * ProjectName: 核心内容管理系统 - * Web: https://www.corecms.net - * Author: 大灰灰 - * Email: jianweie@163.com - * CreateTime: 2021/1/31 21:45:10 - * Description: 暂无 - ***********************************************************************/ - -using CoreCms.Net.IRepository; -using CoreCms.Net.IRepository.UnitOfWork; -using CoreCms.Net.Model.Entities; - -namespace CoreCms.Net.Repository -{ - /// - /// 商品类型和属性关联表 接口实现 - /// - public class CoreCmsGoodsTypeSpecRelRepository : BaseRepository, ICoreCmsGoodsTypeSpecRelRepository - { - public CoreCmsGoodsTypeSpecRelRepository(IUnitOfWork unitOfWork) : base(unitOfWork) - { - } - } -} diff --git a/CoreCms.Net.Repository/Good/CoreCmsGoodsTypeSpecRepository.cs b/CoreCms.Net.Repository/Good/CoreCmsGoodsTypeSpecRepository.cs index 187d47f13841b63925adae74f62dc93af956bb15..6447dcc6b0469e202f103cc02a2c4a2d0e6db27d 100644 --- a/CoreCms.Net.Repository/Good/CoreCmsGoodsTypeSpecRepository.cs +++ b/CoreCms.Net.Repository/Good/CoreCmsGoodsTypeSpecRepository.cs @@ -163,7 +163,6 @@ namespace CoreCms.Net.Repository if (bl) { await DbClient.Deleteable(p => p.specId == (int)id).ExecuteCommandHasChangeAsync(); - await DbClient.Deleteable(p => p.specId == (int)id).ExecuteCommandHasChangeAsync(); } return jm; diff --git a/CoreCms.Net.Repository/System/SysMenuRepository.cs b/CoreCms.Net.Repository/System/SysMenuRepository.cs index 2e686dc25b8ac77cbd8011f76240be6292259495..370dc7803add9abb3d2794bce4ea4e234dcb71a6 100644 --- a/CoreCms.Net.Repository/System/SysMenuRepository.cs +++ b/CoreCms.Net.Repository/System/SysMenuRepository.cs @@ -168,7 +168,7 @@ namespace CoreCms.Net.Repository ids.Add(item.id); if (data.Exists(p => p.parentId == item.id)) { - ids = GetIds(childs, item.id, ids); + ids = GetIds(data, item.id, ids); } } return ids; diff --git a/CoreCms.Net.Services/Good/CoreCmsGoodsTypeParamsServices.cs b/CoreCms.Net.Services/Good/CoreCmsGoodsTypeParamsServices.cs deleted file mode 100644 index cb4d53bee4288e4c5e20d7872a42b707ed37b338..0000000000000000000000000000000000000000 --- a/CoreCms.Net.Services/Good/CoreCmsGoodsTypeParamsServices.cs +++ /dev/null @@ -1,39 +0,0 @@ -/*********************************************************************** - * Project: CoreCms - * ProjectName: 核心内容管理系统 - * Web: https://www.corecms.net - * Author: 大灰灰 - * Email: jianweie@163.com - * CreateTime: 2021/1/31 21:45:10 - * Description: 暂无 - ***********************************************************************/ - -using System; -using System.Threading.Tasks; -using CoreCms.Net.Configuration; -using CoreCms.Net.IRepository; -using CoreCms.Net.IRepository.UnitOfWork; -using CoreCms.Net.IServices; -using CoreCms.Net.Model.Entities; -using CoreCms.Net.Model.ViewModels.UI; - - -namespace CoreCms.Net.Services -{ - /// - /// 商品参数类型关系表 接口实现 - /// - public class CoreCmsGoodsTypeParamsServices : BaseServices, ICoreCmsGoodsTypeParamsServices - { - private readonly ICoreCmsGoodsTypeParamsRepository _dal; - private readonly IUnitOfWork _unitOfWork; - public CoreCmsGoodsTypeParamsServices(IUnitOfWork unitOfWork, ICoreCmsGoodsTypeParamsRepository dal) - { - this._dal = dal; - base.BaseDal = dal; - _unitOfWork = unitOfWork; - } - - - } -} diff --git a/CoreCms.Net.Services/Good/CoreCmsGoodsTypeServices.cs b/CoreCms.Net.Services/Good/CoreCmsGoodsTypeServices.cs deleted file mode 100644 index da2e3e2abaf0a208211a0f70d899b1fa5978701e..0000000000000000000000000000000000000000 --- a/CoreCms.Net.Services/Good/CoreCmsGoodsTypeServices.cs +++ /dev/null @@ -1,85 +0,0 @@ -/*********************************************************************** - * Project: CoreCms - * ProjectName: 核心内容管理系统 - * Web: https://www.corecms.net - * Author: 大灰灰 - * Email: jianweie@163.com - * CreateTime: 2021/1/31 21:45:10 - * Description: 暂无 - ***********************************************************************/ - -using System; -using System.Collections; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; -using CoreCms.Net.Configuration; -using CoreCms.Net.IRepository; -using CoreCms.Net.IRepository.UnitOfWork; -using CoreCms.Net.IServices; -using CoreCms.Net.Model.Entities; -using CoreCms.Net.Model.FromBody; -using CoreCms.Net.Model.ViewModels.UI; - - -namespace CoreCms.Net.Services -{ - /// - /// 商品类型 接口实现 - /// - public class CoreCmsGoodsTypeServices : BaseServices, ICoreCmsGoodsTypeServices - { - private readonly ICoreCmsGoodsTypeRepository _dal; - private readonly IUnitOfWork _unitOfWork; - public CoreCmsGoodsTypeServices(IUnitOfWork unitOfWork, ICoreCmsGoodsTypeRepository dal) - { - this._dal = dal; - base.BaseDal = dal; - _unitOfWork = unitOfWork; - } - - /// - /// 重写异步插入方法 - /// - /// 实体数据 - /// - public async Task InsertAsync(FmGoodsTypeInsert entity) - { - return await _dal.InsertAsync(entity); - } - - - /// - /// 重写删除指定ID的数据 - /// - /// - /// - public async Task DeleteByIdAsync(int id) - { - return await _dal.DeleteByIdAsync(id); - - } - - /// - /// 更新参数 - /// - /// - /// - public async Task UpdateParametersAsync(FMUpdateArrayIntDataByIntId entity) - { - return await _dal.UpdateParametersAsync(entity); - } - - /// - /// 更新属性 - /// - /// - /// - public async Task UpdateTypesAsync(FMUpdateArrayIntDataByIntId entity) - { - return await _dal.UpdateTypesAsync(entity); - } - - - } -} diff --git a/CoreCms.Net.Services/Good/CoreCmsGoodsTypeSpecRelServices.cs b/CoreCms.Net.Services/Good/CoreCmsGoodsTypeSpecRelServices.cs deleted file mode 100644 index f710670f4a1ca1761d52ff7cc82c4f3027c669fd..0000000000000000000000000000000000000000 --- a/CoreCms.Net.Services/Good/CoreCmsGoodsTypeSpecRelServices.cs +++ /dev/null @@ -1,39 +0,0 @@ -/*********************************************************************** - * Project: CoreCms - * ProjectName: 核心内容管理系统 - * Web: https://www.corecms.net - * Author: 大灰灰 - * Email: jianweie@163.com - * CreateTime: 2021/1/31 21:45:10 - * Description: 暂无 - ***********************************************************************/ - -using System; -using System.Threading.Tasks; -using CoreCms.Net.Configuration; -using CoreCms.Net.IRepository; -using CoreCms.Net.IRepository.UnitOfWork; -using CoreCms.Net.IServices; -using CoreCms.Net.Model.Entities; -using CoreCms.Net.Model.ViewModels.UI; - - -namespace CoreCms.Net.Services -{ - /// - /// 商品类型和属性关联表 接口实现 - /// - public class CoreCmsGoodsTypeSpecRelServices : BaseServices, ICoreCmsGoodsTypeSpecRelServices - { - private readonly ICoreCmsGoodsTypeSpecRelRepository _dal; - private readonly IUnitOfWork _unitOfWork; - public CoreCmsGoodsTypeSpecRelServices(IUnitOfWork unitOfWork, ICoreCmsGoodsTypeSpecRelRepository dal) - { - this._dal = dal; - base.BaseDal = dal; - _unitOfWork = unitOfWork; - } - - - } -} diff --git a/CoreCms.Net.Services/Shop/CoreCmsLogisticsServices.cs b/CoreCms.Net.Services/Shop/CoreCmsLogisticsServices.cs index 9d7e31496c9a0d5050df57c86105872b6fba5d95..fd8769737c596dc3c1a90ac6f4541d14384188b0 100644 --- a/CoreCms.Net.Services/Shop/CoreCmsLogisticsServices.cs +++ b/CoreCms.Net.Services/Shop/CoreCmsLogisticsServices.cs @@ -150,13 +150,30 @@ namespace CoreCms.Net.Services { var jm = new WebApiCallBack(); + if (string.IsNullOrEmpty(com)) + { + jm.msg = "请提交来源"; + return jm; + } + else if (string.IsNullOrEmpty(number)) + { + jm.msg = "请提交编号"; + return jm; + } + else if (string.IsNullOrEmpty(phone)) + { + jm.msg = "请提交手机号码"; + return jm; + } + + var allConfigs = await _settingServices.GetConfigDictionaries(); var showApiAppid = CommonHelper.GetConfigDictionary(allConfigs, SystemSettingConstVars.ShowApiAppid); var showApiSecret = CommonHelper.GetConfigDictionary(allConfigs, SystemSettingConstVars.ShowApiSecret); var showApiTimesTamp = DateTime.Now.ToString("yyyyMMddHHmmss"); - var signStr = "com" + com+ "nu" + number + "phone" + phone + "showapi_appid" + showApiAppid + "showapi_timestamp" + showApiTimesTamp + showApiSecret; + var signStr = "com" + com + "nu" + number + "phone" + phone + "showapi_appid" + showApiAppid + "showapi_timestamp" + showApiTimesTamp + showApiSecret; var md5Sign = CommonHelper.Md5For32(signStr).ToLower(); var url = "https://route.showapi.com/64-19?com=" + com + "&nu=" + number + "&phone=" + phone + "&showapi_appid=" + showApiAppid + diff --git a/CoreCms.Net.Services/Shop/CoreCmsSettingServices.cs b/CoreCms.Net.Services/Shop/CoreCmsSettingServices.cs index f59a5758736ec4d8c6ef0e125fab701a36ea6f31..ed7aedb4eed9cf8ffab066671c6d6880f623543c 100644 --- a/CoreCms.Net.Services/Shop/CoreCmsSettingServices.cs +++ b/CoreCms.Net.Services/Shop/CoreCmsSettingServices.cs @@ -175,6 +175,7 @@ namespace CoreCms.Net.Services var settings = await GetDatas(); filesStorageOptions.StorageType = GetValue(SystemSettingConstVars.FilesStorageType, configs, settings); + filesStorageOptions.Path = GetValue(SystemSettingConstVars.FilesStoragePath, configs, settings); filesStorageOptions.FileTypes = GetValue(SystemSettingConstVars.FilesStorageFileSuffix, configs, settings); filesStorageOptions.MaxSize = GetValue(SystemSettingConstVars.FilesStorageFileMaxSize, configs, settings).ObjectToInt(10); diff --git a/CoreCms.Net.Uni-App/CoreShop/common/store/index.js b/CoreCms.Net.Uni-App/CoreShop/common/store/index.js index 43a50f476a56ae6841eb307542aa7306c4cae96e..13aa5564ade13f9abfde1dcdb58b2d605751bc1d 100644 --- a/CoreCms.Net.Uni-App/CoreShop/common/store/index.js +++ b/CoreCms.Net.Uni-App/CoreShop/common/store/index.js @@ -1,68 +1,70 @@ -import Vue from 'vue' -import Vuex from 'vuex' - -Vue.use(Vuex) - -const store = new Vuex.Store({ - state: { - config: {}, // 店铺配置信息 - orderTab: 0, // 选中的订单tab页 - redirectPage: '', - uuid: '',//当前客户端 - searchStyle: '', - sessionAuthId: '', //微信缓存授权信息 - searchFixed: false,//搜索框样式 - showLoginTip: false,//显示登录框 - hasLogin: false,//存储用户当前是否登录,作为切换特效使用 - userShip: {}, //地区信息 - userInfo: {}, //用户信息存储 - invoice: {}, //发票信息 - }, - mutations: { - config(state, payload) { - state.config = payload - }, - orderTab(state, tab) { - state.orderTab = tab - }, - redirect(state, payload) { - state.redirectPage = payload.page - }, - searchStyle(state, style) { - state.searchStyle = style - }, - sessionAuthId(state, payload) { - state.sessionAuthId = payload - }, - searchFixed(state, payload) { - state.searchFixed = payload - }, - showLoginTip(state, payload) { - state.showLoginTip = payload - }, - hasLogin(state, payload) { - state.hasLogin = payload - }, - userShip(state, userShip) { - state.userShip = userShip - }, - userInfo(state, userInfo) { - state.userInfo = userInfo - }, - invoice(state, invoice) { - state.invoice = invoice - } - }, - actions: { - - }, - getters: { - shopConfig: state => state.config, - userInfo: state => state.userInfo, - uuid: state => state.uuid, - hasLogin: state => state.hasLogin, - sessionAuthId: state => state.sessionAuthId, - } -}) - -export default store +import Vue from 'vue' +import Vuex from 'vuex' + +Vue.use(Vuex) + +const store = new Vuex.Store({ + state: { + config: { + shopLogo:"/static/images/common/tab-ic-me-selected.png" + }, // 店铺配置信息 //添加一个前端项目中的图片地址 + orderTab: 0, // 选中的订单tab页 + redirectPage: '', + uuid: '',//当前客户端 + searchStyle: '', + sessionAuthId: '', //微信缓存授权信息 + searchFixed: false,//搜索框样式 + showLoginTip: false,//显示登录框 + hasLogin: false,//存储用户当前是否登录,作为切换特效使用 + userShip: {}, //地区信息 + userInfo: {}, //用户信息存储 + invoice: {}, //发票信息 + }, + mutations: { + config(state, payload) { + state.config = payload + }, + orderTab(state, tab) { + state.orderTab = tab + }, + redirect(state, payload) { + state.redirectPage = payload.page + }, + searchStyle(state, style) { + state.searchStyle = style + }, + sessionAuthId(state, payload) { + state.sessionAuthId = payload + }, + searchFixed(state, payload) { + state.searchFixed = payload + }, + showLoginTip(state, payload) { + state.showLoginTip = payload + }, + hasLogin(state, payload) { + state.hasLogin = payload + }, + userShip(state, userShip) { + state.userShip = userShip + }, + userInfo(state, userInfo) { + state.userInfo = userInfo + }, + invoice(state, invoice) { + state.invoice = invoice + } + }, + actions: { + + }, + getters: { + shopConfig: state => state.config, + userInfo: state => state.userInfo, + uuid: state => state.uuid, + hasLogin: state => state.hasLogin, + sessionAuthId: state => state.sessionAuthId, + } +}) + +export default store diff --git a/CoreCms.Net.Web.Admin/Controllers/Com/ToolsController.cs b/CoreCms.Net.Web.Admin/Controllers/Com/ToolsController.cs index b9f6727ecfccc2ee06c4d9eab4b07323b80b4c43..b89916dddb7ebaffea542e0ec3b67fdf419a87bf 100644 --- a/CoreCms.Net.Web.Admin/Controllers/Com/ToolsController.cs +++ b/CoreCms.Net.Web.Admin/Controllers/Com/ToolsController.cs @@ -393,7 +393,7 @@ namespace CoreCms.Net.Web.Admin.Controllers if (_filesStorageOptions.StorageType == GlobalEnumVars.FilesStorageOptionsType.LocalStorage.ToString()) { - var saveUrl = "/Upload/" + today + "/"; + var saveUrl = _filesStorageOptions.Path + today + "/"; var dirPath = _webHostEnvironment.WebRootPath + saveUrl; if (!Directory.Exists(dirPath)) Directory.CreateDirectory(dirPath); var filePath = dirPath + newFileName; @@ -411,7 +411,7 @@ namespace CoreCms.Net.Web.Admin.Controllers jm.msg = "上传成功!"; jm.data = new { - fileUrl, + fileUrl = bucketBindDomain + fileUrl, src = bucketBindDomain + fileUrl }; } @@ -423,7 +423,7 @@ namespace CoreCms.Net.Web.Admin.Controllers { var md5 = OssUtils.ComputeContentMd5(fileStream, file.Length); - var filePath = "Upload/" + today + "/" + newFileName; //云文件保存路径 + var filePath = _filesStorageOptions.Path + today + "/" + newFileName; //云文件保存路径 //初始化阿里云配置--外网Endpoint、访问ID、访问password var aliyun = new OssClient(_filesStorageOptions.Endpoint, _filesStorageOptions.AccessKeyId, _filesStorageOptions.AccessKeySecret); //将文件md5值赋值给meat头信息,服务器验证文件MD5 @@ -445,7 +445,7 @@ namespace CoreCms.Net.Web.Admin.Controllers } else if (_filesStorageOptions.StorageType == GlobalEnumVars.FilesStorageOptionsType.QCloudOSS.ToString()) { - var filePath = "Upload/" + today + "/" + newFileName; //云文件保存路径 + var filePath = _filesStorageOptions.Path + today + "/" + newFileName; //云文件保存路径 //上传到腾讯云OSS //初始化 CosXmlConfig @@ -536,7 +536,7 @@ namespace CoreCms.Net.Web.Admin.Controllers jm.msg = "上传成功!"; jm.data = new { - fileUrl, + fileUrl = bucketBindDomain + fileUrl, src = bucketBindDomain + fileUrl }; jm.otherData = GlobalEnumVars.FilesStorageOptionsType.LocalStorage.ToString(); @@ -553,7 +553,7 @@ namespace CoreCms.Net.Web.Admin.Controllers { var md5 = OssUtils.ComputeContentMd5(fileStream, memStream.Length); - var filePath = "Upload/" + today + "/" + newFileName; //云文件保存路径 + var filePath = _filesStorageOptions.Path + today + "/" + newFileName; //云文件保存路径 //初始化阿里云配置--外网Endpoint、访问ID、访问password var aliyun = new OssClient(_filesStorageOptions.Endpoint, _filesStorageOptions.AccessKeyId, _filesStorageOptions.AccessKeySecret); //将文件md5值赋值给meat头信息,服务器验证文件MD5 @@ -595,7 +595,7 @@ namespace CoreCms.Net.Web.Admin.Controllers var cosXml = new CosXmlServer(config, qCloudCredentialProvider); - var filePath = "Upload/" + today + "/" + newFileName; //云文件保存路径 + var filePath = _filesStorageOptions.Path + today + "/" + newFileName; //云文件保存路径 COSXML.Model.Object.PutObjectRequest putObjectRequest = new COSXML.Model.Object.PutObjectRequest(_filesStorageOptions.BucketName, filePath, bytes); cosXml.PutObject(putObjectRequest); @@ -662,7 +662,7 @@ namespace CoreCms.Net.Web.Admin.Controllers if (_filesStorageOptions.StorageType == GlobalEnumVars.FilesStorageOptionsType.LocalStorage.ToString()) { - var saveUrl = "/Upload/" + today + "/"; + var saveUrl = _filesStorageOptions.Path + today + "/"; var dirPath = _webHostEnvironment.WebRootPath + saveUrl; if (!Directory.Exists(dirPath)) Directory.CreateDirectory(dirPath); var filePath = dirPath + newFileName; @@ -687,7 +687,7 @@ namespace CoreCms.Net.Web.Admin.Controllers { var md5 = OssUtils.ComputeContentMd5(fileStream, file.Length); - var filePath = "Upload/" + today + "/" + newFileName; //云文件保存路径 + var filePath = _filesStorageOptions.Path + today + "/" + newFileName; //云文件保存路径 //初始化阿里云配置--外网Endpoint、访问ID、访问password var aliyun = new OssClient(_filesStorageOptions.Endpoint, _filesStorageOptions.AccessKeyId, _filesStorageOptions.AccessKeySecret); //将文件md5值赋值给meat头信息,服务器验证文件MD5 @@ -707,7 +707,7 @@ namespace CoreCms.Net.Web.Admin.Controllers } else if (_filesStorageOptions.StorageType == GlobalEnumVars.FilesStorageOptionsType.QCloudOSS.ToString()) { - var filePath = "Upload/" + today + "/" + newFileName; //云文件保存路径 + var filePath = _filesStorageOptions.Path + today + "/" + newFileName; //云文件保存路径 //上传到腾讯云OSS //初始化 CosXmlConfig @@ -1268,7 +1268,7 @@ namespace CoreCms.Net.Web.Admin.Controllers var ids = new List(); if (!string.IsNullOrEmpty(idsStr)) ids = JsonConvert.DeserializeObject>(idsStr); - var areaTrees =await _areaServices.GetTreeArea(ids, nodeId, ischecked); + var areaTrees = await _areaServices.GetTreeArea(ids, nodeId, ischecked); jm.status = true; jm.data = areaTrees; diff --git a/CoreCms.Net.Web.Admin/Controllers/Good/CoreCmsBrandController.cs b/CoreCms.Net.Web.Admin/Controllers/Good/CoreCmsBrandController.cs index 4a2f014fa7722a086a85dd32a2bdf2e847b4aa30..cc047727a938646c16208045c7a684b89ab8387d 100644 --- a/CoreCms.Net.Web.Admin/Controllers/Good/CoreCmsBrandController.cs +++ b/CoreCms.Net.Web.Admin/Controllers/Good/CoreCmsBrandController.cs @@ -212,7 +212,7 @@ namespace CoreCms.Net.Web.Admin.Controllers if (bl) { - var brands = await _coreCmsBrandServices.QueryAsync(); + var brands = await _coreCmsBrandServices.QueryListByClauseAsync(p => p.id > 0, p => p.id, OrderByType.Desc, true); jm.data = new { brands diff --git a/CoreCms.Net.Web.Admin/Controllers/Good/CoreCmsGoodsCategoryController.cs b/CoreCms.Net.Web.Admin/Controllers/Good/CoreCmsGoodsCategoryController.cs index eaf4d23a80d52480928911ea0315f85091834f7d..52b7b6dedefda9e036643ecf5d85cb049f03a898 100644 --- a/CoreCms.Net.Web.Admin/Controllers/Good/CoreCmsGoodsCategoryController.cs +++ b/CoreCms.Net.Web.Admin/Controllers/Good/CoreCmsGoodsCategoryController.cs @@ -44,7 +44,6 @@ namespace CoreCms.Net.Web.Admin.Controllers { private readonly IWebHostEnvironment _webHostEnvironment; private readonly ICoreCmsGoodsCategoryServices _coreCmsGoodsCategoryServices; - private readonly ICoreCmsGoodsTypeServices _coreCmsGoodsTypeServices; private readonly ICoreCmsGoodsServices _goodsServices; private IMapper _mapper; @@ -53,12 +52,10 @@ namespace CoreCms.Net.Web.Admin.Controllers /// public CoreCmsGoodsCategoryController(IWebHostEnvironment webHostEnvironment , ICoreCmsGoodsCategoryServices coreCmsGoodsCategoryServices - , ICoreCmsGoodsTypeServices coreCmsGoodsTypeServices , IMapper mapper, ICoreCmsGoodsServices goodsServices) { _webHostEnvironment = webHostEnvironment; _coreCmsGoodsCategoryServices = coreCmsGoodsCategoryServices; - _coreCmsGoodsTypeServices = coreCmsGoodsTypeServices; _mapper = mapper; _goodsServices = goodsServices; } @@ -77,19 +74,6 @@ namespace CoreCms.Net.Web.Admin.Controllers //获取数据 var list = await _coreCmsGoodsCategoryServices.QueryListByClauseAsync(p => p.id > 0, p => p.sort, OrderByType.Desc); - var types = await _coreCmsGoodsTypeServices.QueryAsync(); - list.ForEach(o => - { - if (o.typeId == 0) - { - o.typeName = "通用类型"; - } - else - { - var typeModel = types.Find(p => p.id == o.typeId); - o.typeName = typeModel != null ? typeModel.name : ""; - } - }); //返回数据 jm.data = list; jm.code = 0; @@ -126,13 +110,11 @@ namespace CoreCms.Net.Web.Admin.Controllers { //返回数据 var jm = new AdminUiCallBack { code = 0 }; - var types = await _coreCmsGoodsTypeServices.QueryAsync(); var categories = await _coreCmsGoodsCategoryServices.QueryListByClauseAsync(p => p.isShow == true, p => p.sort, OrderByType.Asc); jm.data = new { categories = GoodsHelper.GetTree(categories), - types }; return Json(jm); } @@ -190,14 +172,12 @@ namespace CoreCms.Net.Web.Admin.Controllers } jm.code = 0; - var types = await _coreCmsGoodsTypeServices.QueryAsync(); var categories = await _coreCmsGoodsCategoryServices.QueryListByClauseAsync(p => p.isShow == true, p => p.sort, OrderByType.Asc); ; jm.data = new { model, categories = GoodsHelper.GetTree(categories), - types }; return Json(jm); diff --git a/CoreCms.Net.Web.Admin/Controllers/Good/CoreCmsGoodsController.cs b/CoreCms.Net.Web.Admin/Controllers/Good/CoreCmsGoodsController.cs index 7052ee893cffdef4b4fc0056dbea16e1761de32a..4a6021fcdd6199328995c4f3e234e13be44fd60e 100644 --- a/CoreCms.Net.Web.Admin/Controllers/Good/CoreCmsGoodsController.cs +++ b/CoreCms.Net.Web.Admin/Controllers/Good/CoreCmsGoodsController.cs @@ -49,12 +49,10 @@ namespace CoreCms.Net.Web.Admin.Controllers private readonly ICoreCmsGoodsServices _coreCmsGoodsServices; private readonly ICoreCmsGoodsGradeServices _goodsGradeServices; private readonly ICoreCmsGoodsParamsServices _goodsParamsServices; - private readonly ICoreCmsGoodsTypeServices _goodTypeServices; + private readonly ICoreCmsGoodsTypeSpecServices _goodsTypeSpecServices; private readonly ICoreCmsLabelServices _labelServices; private readonly ICoreCmsProductsServices _productsServices; private readonly ICoreCmsSettingServices _settingServices; - private readonly ICoreCmsGoodsTypeParamsServices _typeParamsServices; - private readonly ICoreCmsGoodsTypeSpecRelServices _typeSpecRelServices; private readonly ICoreCmsGoodsTypeSpecServices _typeSpecServices; private readonly ICoreCmsGoodsTypeSpecValueServices _typeSpecValueServices; private readonly ICoreCmsUserGradeServices _userGradeServices; @@ -69,30 +67,24 @@ namespace CoreCms.Net.Web.Admin.Controllers , ICoreCmsGoodsServices coreCmsGoodsServices , ICoreCmsSettingServices settingServices , ICoreCmsBrandServices brandServices - , ICoreCmsGoodsTypeServices goodTypeServices , ICoreCmsGoodsCategoryServices coreCmsGoodsCategoryServices , ICoreCmsUserGradeServices userGradeServices - , ICoreCmsGoodsTypeParamsServices typeParamsServices , ICoreCmsGoodsParamsServices goodsParamsServices - , ICoreCmsGoodsTypeSpecRelServices typeSpecRelServices , ICoreCmsGoodsTypeSpecServices typeSpecServices , ICoreCmsGoodsTypeSpecValueServices typeSpecValueServices , ICoreCmsGoodsGradeServices goodsGradeServices , ICoreCmsProductsServices productsServices , ICoreCmsGoodsCategoryExtendServices categoryExtendServices , ICoreCmsLabelServices labelServices - , ICoreCmsProductsDistributionServices productsDistributionServices) + , ICoreCmsProductsDistributionServices productsDistributionServices, ICoreCmsGoodsTypeSpecServices goodsTypeSpecServices) { _webHostEnvironment = webHostEnvironment; _coreCmsGoodsServices = coreCmsGoodsServices; _settingServices = settingServices; _brandServices = brandServices; - _goodTypeServices = goodTypeServices; _coreCmsGoodsCategoryServices = coreCmsGoodsCategoryServices; _userGradeServices = userGradeServices; - _typeParamsServices = typeParamsServices; _goodsParamsServices = goodsParamsServices; - _typeSpecRelServices = typeSpecRelServices; _typeSpecServices = typeSpecServices; _typeSpecValueServices = typeSpecValueServices; _goodsGradeServices = goodsGradeServices; @@ -100,6 +92,7 @@ namespace CoreCms.Net.Web.Admin.Controllers _categoryExtendServices = categoryExtendServices; _labelServices = labelServices; _productsDistributionServices = productsDistributionServices; + _goodsTypeSpecServices = goodsTypeSpecServices; } #region 获取列表============================================================ @@ -357,8 +350,6 @@ namespace CoreCms.Net.Web.Admin.Controllers //获取商品分类 var categories = await _coreCmsGoodsCategoryServices.QueryListByClauseAsync(p => p.isShow, p => p.sort, OrderByType.Asc); - //获取商品类别 - var types = await _goodTypeServices.QueryAsync(); //获取品牌 var brands = await _brandServices.QueryAsync(); @@ -373,7 +364,6 @@ namespace CoreCms.Net.Web.Admin.Controllers totalWarn, categories = GoodsHelper.GetTree(categories), categoriesAll = categories, - types, brands, productsDistributionType }; @@ -398,24 +388,31 @@ namespace CoreCms.Net.Web.Admin.Controllers var jm = new AdminUiCallBack { code = 0 }; //获取商品分类 - var categories = - await _coreCmsGoodsCategoryServices.QueryListByClauseAsync(p => p.isShow, p => p.sort, OrderByType.Asc); - //获取商品类别 - var types = await _goodTypeServices.QueryAsync(); + var categories = await _coreCmsGoodsCategoryServices.QueryListByClauseAsync(p => p.isShow, p => p.sort, OrderByType.Asc); + + //获取参数列表 + var paramsList = await _goodsParamsServices.QueryListByClauseAsync(p => p.id > 0, p => p.id, OrderByType.Desc, true); + //获取SKU列表 + var skuList = await _goodsTypeSpecServices.QueryListByClauseAsync(p => p.id > 0, p => p.id, OrderByType.Desc, true); + + //获取品牌 - var brands = await _brandServices.QueryAsync(); + var brands = await _brandServices.QueryListByClauseAsync(p => p.id > 0 && p.isShow == true, p => p.id, OrderByType.Desc, true); //获取用户等级 var userGrade = await _userGradeServices.QueryAsync(); + + //获取商品分销enum var productsDistributionType = EnumHelper.EnumToList(); jm.data = new { categories = GoodsHelper.GetTree(categories, false), - types, brands, userGrade, - productsDistributionType + productsDistributionType, + paramsList, + skuList }; return Json(jm); @@ -467,10 +464,7 @@ namespace CoreCms.Net.Web.Admin.Controllers //获取商品分类 var categories = await _coreCmsGoodsCategoryServices.GetCaChe(); categories = categories.Where(p => p.isShow == true).ToList(); - //获取商品类别 - var types = await _goodTypeServices.QueryAsync(); - //获取品牌 - var brands = await _brandServices.QueryAsync(); + //获取用户等级 var userGrade = await _userGradeServices.QueryAsync(); //用户价格体系 @@ -483,6 +477,16 @@ namespace CoreCms.Net.Web.Admin.Controllers //获取商品分销enum var productsDistributionType = EnumHelper.EnumToList(); + + //获取参数列表 + var paramsList = await _goodsParamsServices.QueryListByClauseAsync(p => p.id > 0, p => p.id, OrderByType.Desc, true); + //获取SKU列表 + var skuList = await _goodsTypeSpecServices.QueryListByClauseAsync(p => p.id > 0, p => p.id, OrderByType.Desc, true); + + //获取品牌 + var brands = await _brandServices.QueryListByClauseAsync(p => p.id > 0 && p.isShow == true, p => p.id, OrderByType.Desc, true); + + if (products != null && products.Any()) { var pIds = products.Select(p => p.id).ToList(); @@ -508,39 +512,30 @@ namespace CoreCms.Net.Web.Admin.Controllers var goodsTypeSpec = new List(); var goodsParams = new List(); - if (model.goodsTypeId > 0) + //获取参数 + if (!string.IsNullOrEmpty(model.goodsParamsIds)) + { + var paramsIds = Utility.Helper.CommonHelper.StringToIntArray(model.goodsParamsIds); + goodsParams = await _goodsParamsServices.QueryListByClauseAsync(p => paramsIds.Contains(p.id)); + } + + //获取属性 + if (!string.IsNullOrEmpty(model.goodsSkuIds)) { - var typeParams = - await _typeParamsServices.QueryListByClauseAsync(p => p.typeId == model.goodsTypeId); - if (typeParams != null) + var specIds = Utility.Helper.CommonHelper.StringToIntArray(model.goodsSkuIds); + var typeSpecs = await _typeSpecServices.QueryListByClauseAsync(p => specIds.Contains(p.id)); + var typeSpecValues = await _typeSpecValueServices.QueryListByClauseAsync(p => specIds.Contains(p.specId)); + typeSpecs.ForEach(p => { - //获取参数 - var paramsIds = typeParams.Select(p => p.paramsId).ToList(); - goodsParams = await _goodsParamsServices.QueryListByClauseAsync(p => paramsIds.Contains(p.id)); - //获取属性 - var coreCmsGoodsTypeSpecRel = - await _typeSpecRelServices.QueryListByClauseAsync(p => p.typeId == model.goodsTypeId); - - if (coreCmsGoodsTypeSpecRel.Any()) - { - var specIds = coreCmsGoodsTypeSpecRel.Select(p => p.specId).ToList(); - var typeSpecs = await _typeSpecServices.QueryListByClauseAsync(p => specIds.Contains(p.id)); - var typeSpecValues = - await _typeSpecValueServices.QueryListByClauseAsync(p => specIds.Contains(p.specId)); - typeSpecs.ForEach(p => - { - p.specValues = typeSpecValues.Where(o => o.specId == p.id).ToList(); - }); - goodsTypeSpec = typeSpecs; - } - } + p.specValues = typeSpecValues.Where(o => o.specId == p.id).ToList(); + }); + goodsTypeSpec = typeSpecs; } jm.data = new { model, categories = GoodsHelper.GetTree(categories, false), - types, brands, userGrade, goodsGrades, @@ -548,7 +543,9 @@ namespace CoreCms.Net.Web.Admin.Controllers categoryExtend, goodsTypeSpec, goodsParams, - productsDistributionType + productsDistributionType, + paramsList, + skuList }; @@ -599,6 +596,11 @@ namespace CoreCms.Net.Web.Admin.Controllers model.isDel = true; //假删除 var bl = await _coreCmsGoodsServices.UpdateAsync(model); + if (bl) + { + await _productsServices.UpdateAsync(p => new CoreCmsProducts() { isDel = true }, + p => p.goodsId == model.id); + } jm.code = bl ? 0 : 1; jm.msg = bl ? GlobalConstVars.DeleteSuccess : GlobalConstVars.DeleteFailure; return Json(jm); @@ -796,50 +798,31 @@ namespace CoreCms.Net.Web.Admin.Controllers #endregion - #region 获取商品参数============================================================ + #region 获取商品SKU明细============================================================ - // POST: Api/CoreCmsGoods/GetTypeSpec/10 + // POST: Api/CoreCmsGoods/GetSkuDetail/10 /// - /// 获取商品参数 + /// 获取商品SKU明细 /// /// /// [HttpPost] - [Description("获取商品参数")] - public async Task GetTypeSpec([FromBody] FMIntId entity) + [Description("获取商品SKU明细")] + public async Task GetSkuDetail([FromBody] FMArrayIntIds entity) { var jm = new AdminUiCallBack(); - //获取参数 - var typeParams = await _typeParamsServices.QueryListByClauseAsync(p => p.typeId == entity.id); - var goodsParams = new List(); - if (typeParams.Any()) + if (entity.id.Length <= 0) { - var paramsIds = typeParams.Select(p => p.paramsId).ToList(); - goodsParams = await _goodsParamsServices.QueryListByClauseAsync(p => paramsIds.Contains(p.id)); + jm.msg = "请提交SKU模型"; + return Json(jm); } - //获取属性 - var coreCmsGoodsTypeSpecRel = - await _typeSpecRelServices.QueryListByClauseAsync(p => p.typeId == entity.id); - var goodsTypeSpec = new List(); - - if (coreCmsGoodsTypeSpecRel.Any()) - { - var specIds = coreCmsGoodsTypeSpecRel.Select(p => p.specId).ToList(); - var typeSpecs = await _typeSpecServices.QueryListByClauseAsync(p => specIds.Contains(p.id)); - var typeSpecValues = - await _typeSpecValueServices.QueryListByClauseAsync(p => specIds.Contains(p.specId)); - typeSpecs.ForEach(p => { p.specValues = typeSpecValues.Where(o => o.specId == p.id).ToList(); }); + var typeSpecs = await _typeSpecServices.QueryListByClauseAsync(p => entity.id.Contains(p.id)); + var typeSpecValues = await _typeSpecValueServices.QueryListByClauseAsync(p => entity.id.Contains(p.specId)); + typeSpecs.ForEach(p => { p.specValues = typeSpecValues.Where(o => o.specId == p.id).ToList(); }); - goodsTypeSpec = typeSpecs; - } - - jm.data = new - { - goodsParams, - goodsTypeSpec - }; + jm.data = new { goodsTypeSpec = typeSpecs }; var bl = true; jm.code = bl ? 0 : 1; diff --git a/CoreCms.Net.Web.Admin/Controllers/Good/CoreCmsGoodsParamsController.cs b/CoreCms.Net.Web.Admin/Controllers/Good/CoreCmsGoodsParamsController.cs index bbd1d52bc4cd7ff06c661a438fa154cf2c53e942..ca5b1f36cfa37f85610ed582d4810719264f7ceb 100644 --- a/CoreCms.Net.Web.Admin/Controllers/Good/CoreCmsGoodsParamsController.cs +++ b/CoreCms.Net.Web.Admin/Controllers/Good/CoreCmsGoodsParamsController.cs @@ -43,7 +43,6 @@ namespace CoreCms.Net.Web.Admin.Controllers public class CoreCmsGoodsParamsController : Controller { private readonly ICoreCmsGoodsParamsServices _coreCmsGoodsParamsServices; - private readonly ICoreCmsGoodsTypeParamsServices _coreCmsGoodsTypeParamsServices; private readonly IWebHostEnvironment _webHostEnvironment; /// @@ -53,12 +52,10 @@ namespace CoreCms.Net.Web.Admin.Controllers /// /// public CoreCmsGoodsParamsController(IWebHostEnvironment webHostEnvironment, - ICoreCmsGoodsParamsServices coreCmsGoodsParamsServices - , ICoreCmsGoodsTypeParamsServices coreCmsGoodsTypeParamsServices) + ICoreCmsGoodsParamsServices coreCmsGoodsParamsServices) { _webHostEnvironment = webHostEnvironment; _coreCmsGoodsParamsServices = coreCmsGoodsParamsServices; - _coreCmsGoodsTypeParamsServices = coreCmsGoodsTypeParamsServices; } #region 获取列表============================================================ @@ -241,6 +238,16 @@ namespace CoreCms.Net.Web.Admin.Controllers jm.code = bl ? 0 : 1; jm.msg = bl ? GlobalConstVars.CreateSuccess : GlobalConstVars.CreateFailure; + if (bl) + { + //获取列表 + var paramsList = await _coreCmsGoodsParamsServices.QueryListByClauseAsync(p => p.id > 0, p => p.id, OrderByType.Desc, true); + jm.data = new + { + paramsList + }; + } + return Json(jm); } @@ -339,7 +346,6 @@ namespace CoreCms.Net.Web.Admin.Controllers } var bl = await _coreCmsGoodsParamsServices.DeleteByIdAsync(entity.id); - if (bl) await _coreCmsGoodsTypeParamsServices.DeleteAsync(p => p.paramsId == entity.id); jm.code = bl ? 0 : 1; jm.msg = bl ? GlobalConstVars.DeleteSuccess : GlobalConstVars.DeleteFailure; return Json(jm); diff --git a/CoreCms.Net.Web.Admin/Controllers/Good/CoreCmsGoodsTypeController.cs b/CoreCms.Net.Web.Admin/Controllers/Good/CoreCmsGoodsTypeController.cs deleted file mode 100644 index 502f3aa5659f5c4ac8e109ec93a4cec7b7774eec..0000000000000000000000000000000000000000 --- a/CoreCms.Net.Web.Admin/Controllers/Good/CoreCmsGoodsTypeController.cs +++ /dev/null @@ -1,679 +0,0 @@ -/*********************************************************************** - * Project: CoreCms - * ProjectName: 核心内容管理系统 - * Web: https://www.corecms.net - * Author: 大灰灰 - * Email: jianweie@163.com - * CreateTime: 2021/1/31 21:45:10 - * Description: 暂无 - ***********************************************************************/ - -using CoreCms.Net.Configuration; -using CoreCms.Net.Filter; -using CoreCms.Net.IServices; -using CoreCms.Net.Loging; -using CoreCms.Net.Model.Entities; -using CoreCms.Net.Model.Entities.Expression; -using CoreCms.Net.Model.FromBody; -using CoreCms.Net.Model.ViewModels.UI; -using CoreCms.Net.Utility.Extensions; -using CoreCms.Net.Utility.Helper; -using Microsoft.AspNetCore.Authorization; -using Microsoft.AspNetCore.Hosting; -using Microsoft.AspNetCore.Mvc; -using SqlSugar; -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Linq; -using System.Linq.Expressions; -using System.Threading.Tasks; - -namespace CoreCms.Net.Web.Admin.Controllers -{ - /// - /// 商品类型 - /// - [Description("商品类型")] - [Route("api/[controller]/[action]")] - [ApiController] - [RequiredErrorForAdmin] - [Authorize] - public class CoreCmsGoodsTypeController : Controller - { - private readonly ICoreCmsGoodsTypeParamsServices _coreCmsGoodsTypeParamsServices; - private readonly ICoreCmsGoodsTypeServices _coreCmsGoodsTypeServices; - private readonly ICoreCmsGoodsServices _goodsServices; - private readonly ICoreCmsGoodsParamsServices _paramsServices; - private readonly ICoreCmsGoodsTypeSpecRelServices _typeSpecRelServices; - private readonly ICoreCmsGoodsTypeSpecServices _typeSpecServices; - - private readonly ICoreCmsGoodsTypeSpecValueServices _valueServices; - private readonly IWebHostEnvironment _webHostEnvironment; - - /// - /// 构造函数 - /// - public CoreCmsGoodsTypeController(IWebHostEnvironment webHostEnvironment - , ICoreCmsGoodsTypeServices coreCmsGoodsTypeServices - , ICoreCmsGoodsTypeSpecRelServices typeSpecRelServices - , ICoreCmsGoodsTypeSpecServices typeSpecServices - , ICoreCmsGoodsParamsServices paramsServices - , ICoreCmsGoodsTypeSpecValueServices coreCmsGoodsTypeSpecValueServices - , ICoreCmsGoodsTypeParamsServices coreCmsGoodsTypeParamsServices, ICoreCmsGoodsServices goodsServices) - { - _webHostEnvironment = webHostEnvironment; - _coreCmsGoodsTypeServices = coreCmsGoodsTypeServices; - _typeSpecRelServices = typeSpecRelServices; - _typeSpecServices = typeSpecServices; - _paramsServices = paramsServices; - _valueServices = coreCmsGoodsTypeSpecValueServices; - _coreCmsGoodsTypeParamsServices = coreCmsGoodsTypeParamsServices; - _goodsServices = goodsServices; - } - - #region 获取列表============================================================ - - // POST: Api/CoreCmsGoodsType/GetPageList - /// - /// 获取列表 - /// - /// - [HttpPost] - [Description("获取列表")] - public async Task GetPageList() - { - var jm = new AdminUiCallBack(); - var pageCurrent = Request.Form["page"].FirstOrDefault().ObjectToInt(1); - var pageSize = Request.Form["limit"].FirstOrDefault().ObjectToInt(30); - var where = PredicateBuilder.True(); - //获取排序字段 - var orderField = Request.Form["orderField"].FirstOrDefault(); - Expression> orderEx; - switch (orderField) - { - case "id": - orderEx = p => p.id; - break; - - case "name": - orderEx = p => p.name; - break; - - case "parameters": - orderEx = p => p.parameters; - break; - - default: - orderEx = p => p.id; - break; - } - - //设置排序方式 - var orderDirection = Request.Form["orderDirection"].FirstOrDefault(); - var orderBy = orderDirection switch - { - "asc" => OrderByType.Asc, - "desc" => OrderByType.Desc, - _ => OrderByType.Desc - }; - //查询筛选 - - //序列 int - var id = Request.Form["id"].FirstOrDefault().ObjectToInt(0); - if (id > 0) @where = @where.And(p => p.id == id); - //类型名称 nvarchar - var name = Request.Form["name"].FirstOrDefault(); - if (!string.IsNullOrEmpty(name)) @where = @where.And(p => p.name.Contains(name)); - //获取数据 - var list = await _coreCmsGoodsTypeServices.QueryPageAsync(where, orderEx, orderBy, pageCurrent, pageSize); - - if (list.Any()) - { - var ids = list.Select(p => p.id).ToList(); - var goodsTypeSpecRel = await _typeSpecRelServices.QueryListByClauseAsync(p => ids.Contains(p.typeId)); - if (goodsTypeSpecRel.Any()) - { - var specIds = goodsTypeSpecRel.Select(p => p.specId).ToArray(); - var specModels = await _typeSpecServices.QueryByIDsAsync(specIds); - if (specModels.Any()) - foreach (var item in list) - { - var childInts = goodsTypeSpecRel.Where(p => p.typeId == item.id).Select(p => p.specId) - .ToList(); - item.spec = specModels.Where(p => childInts.Contains(p.id)).OrderBy(p => p.sort).ToList(); - } - } - - var parameters = - await _coreCmsGoodsTypeParamsServices.QueryListByClauseAsync(p => ids.Contains(p.typeId)); - if (parameters.Any()) - { - var parameterIds = parameters.Select(p => p.paramsId).ToList(); - var parameterModels = - await _paramsServices.QueryListByClauseAsync(p => parameterIds.Contains(p.id)); - if (parameterModels.Any()) - foreach (var item in list) - { - var childInts = parameters.Where(p => p.typeId == item.id).Select(p => p.paramsId).ToList(); - item.parameter = parameterModels.Where(p => childInts.Contains(p.id)) - .OrderBy(p => p.createTime).ToList(); - } - } - } - - //返回数据 - jm.data = list; - jm.code = 0; - jm.count = list.TotalCount; - jm.msg = "数据调用成功!"; - return Json(jm); - } - - #endregion 获取列表============================================================ - - #region 首页数据============================================================ - - // POST: Api/CoreCmsGoodsType/GetIndex - /// - /// 首页数据 - /// - /// - [HttpPost] - [Description("首页数据")] - public JsonResult GetIndex() - { - //返回数据 - var jm = new AdminUiCallBack { code = 0 }; - return Json(jm); - } - - #endregion 首页数据============================================================ - - #region 创建数据============================================================ - - // POST: Api/CoreCmsGoodsType/GetCreate - /// - /// 创建数据 - /// - /// - [HttpPost] - [Description("创建数据")] - public JsonResult GetCreate() - { - //返回数据 - var jm = new AdminUiCallBack { code = 0 }; - return Json(jm); - } - - #endregion 创建数据============================================================ - - #region 创建提交============================================================ - - // POST: Api/CoreCmsGoodsType/DoCreate - /// - /// 创建提交 - /// - /// - /// - [HttpPost] - [Description("创建提交")] - public async Task DoCreate([FromBody] FmGoodsTypeInsert entity) - { - var jm = await _coreCmsGoodsTypeServices.InsertAsync(entity); - return Json(jm); - } - - #endregion 创建提交============================================================ - - #region 编辑数据============================================================ - - // POST: Api/CoreCmsGoodsType/GetEdit - /// - /// 编辑数据 - /// - /// - /// - [HttpPost] - [Description("编辑数据")] - public async Task GetEdit([FromBody] FMIntId entity) - { - var jm = new AdminUiCallBack(); - - var model = await _coreCmsGoodsTypeServices.QueryByIdAsync(entity.id); - if (model == null) - { - jm.msg = "不存在此信息"; - return Json(jm); - } - - jm.code = 0; - jm.data = model; - - return Json(jm); - } - - #endregion 编辑数据============================================================ - - #region 编辑提交============================================================ - - // POST: Admins/CoreCmsGoodsType/Edit - /// - /// 编辑提交 - /// - /// - /// - [HttpPost] - [Description("编辑提交")] - public async Task DoEdit([FromBody] CoreCmsGoodsType entity) - { - var jm = new AdminUiCallBack(); - - var oldModel = await _coreCmsGoodsTypeServices.QueryByIdAsync(entity.id); - if (oldModel == null) - { - jm.msg = "不存在此信息"; - return Json(jm); - } - - //事物处理过程开始 - oldModel.name = entity.name; - //事物处理过程结束 - - var bl = await _coreCmsGoodsTypeServices.UpdateAsync(oldModel); - jm.code = bl ? 0 : 1; - jm.msg = bl ? GlobalConstVars.EditSuccess : GlobalConstVars.EditFailure; - - return Json(jm); - } - - #endregion 编辑提交============================================================ - - #region 删除数据============================================================ - - // POST: Api/CoreCmsGoodsType/DoDelete/10 - /// - /// 单选删除 - /// - /// - /// - [HttpPost] - [Description("单选删除")] - public async Task DoDelete([FromBody] FMIntId entity) - { - var jm = new AdminUiCallBack(); - - var model = await _coreCmsGoodsTypeServices.QueryByIdAsync(entity.id); - if (model == null) - { - jm.msg = GlobalConstVars.DataisNo; - return Json(jm); - } - - if (await _goodsServices.ExistsAsync(p => p.goodsTypeId == model.id)) - { - jm.msg = "类型关联商品信息,禁止删除!"; - return Json(jm); - } - - jm = await _coreCmsGoodsTypeServices.DeleteByIdAsync(entity.id); - return Json(jm); - } - - #endregion 删除数据============================================================ - - #region 获取已有参数列表============================================================ - - // POST: Api/CoreCmsGoodsType/GetGoodsParamsPageList - /// - /// 获取已有参数列表 - /// - /// - [HttpPost] - [Description("获取已有参数列表")] - public async Task GetGoodsParamsPageList() - { - var jm = new AdminUiCallBack(); - var pageCurrent = Request.Form["page"].FirstOrDefault().ObjectToInt(1); - var pageSize = Request.Form["limit"].FirstOrDefault().ObjectToInt(30); - var where = PredicateBuilder.True(); - //获取排序字段 - var orderField = Request.Form["orderField"].FirstOrDefault(); - Expression> orderEx; - switch (orderField) - { - case "id": - orderEx = p => p.id; - break; - - case "name": - orderEx = p => p.name; - break; - - case "value": - orderEx = p => p.value; - break; - - case "type": - orderEx = p => p.type; - break; - - case "createTime": - orderEx = p => p.createTime; - break; - - case "updateTime": - orderEx = p => p.updateTime; - break; - - default: - orderEx = p => p.id; - break; - } - - //设置排序方式 - var orderDirection = Request.Form["orderDirection"].FirstOrDefault(); - var orderBy = orderDirection switch - { - "asc" => OrderByType.Asc, - "desc" => OrderByType.Desc, - _ => OrderByType.Desc - }; - //查询筛选 - - //序列 int - var id = Request.Form["id"].FirstOrDefault().ObjectToInt(0); - if (id > 0) @where = @where.And(p => p.id == id); - //参数名称 nvarchar - var name = Request.Form["name"].FirstOrDefault(); - if (!string.IsNullOrEmpty(name)) @where = @where.And(p => p.name.Contains(name)); - //参数值 nvarchar - var value = Request.Form["value"].FirstOrDefault(); - if (!string.IsNullOrEmpty(value)) @where = @where.And(p => p.value.Contains(value)); - //参数类型 nvarchar - var type = Request.Form["type"].FirstOrDefault(); - if (!string.IsNullOrEmpty(type)) @where = @where.And(p => p.type.Contains(type)); - //创建时间 datetime - var createTime = Request.Form["createTime"].FirstOrDefault(); - if (!string.IsNullOrEmpty(createTime)) - { - if (createTime.Contains("到")) - { - var dts = createTime.Split("到"); - var dtStart = dts[0].Trim().ObjectToDate(); - where = where.And(p => p.createTime > dtStart); - var dtEnd = dts[1].Trim().ObjectToDate(); - where = where.And(p => p.createTime < dtEnd); - } - else - { - var dt = createTime.ObjectToDate(); - where = where.And(p => p.createTime > dt); - } - } - - //更新时间 datetime - var updateTime = Request.Form["updateTime"].FirstOrDefault(); - if (!string.IsNullOrEmpty(updateTime)) - { - if (updateTime.Contains("到")) - { - var dts = updateTime.Split("到"); - var dtStart = dts[0].Trim().ObjectToDate(); - where = where.And(p => p.updateTime > dtStart); - var dtEnd = dts[1].Trim().ObjectToDate(); - where = where.And(p => p.updateTime < dtEnd); - } - else - { - var dt = updateTime.ObjectToDate(); - where = where.And(p => p.updateTime > dt); - } - } - - //获取数据 - var list = await _paramsServices.QueryPageAsync(where, orderEx, orderBy, pageCurrent, pageSize); - //返回数据 - jm.data = list; - jm.code = 0; - jm.count = list.TotalCount; - jm.msg = "数据调用成功!"; - return Json(jm); - } - - #endregion 获取已有参数列表============================================================ - - #region 选择参数面板============================================================ - - // POST: Api/CoreCmsGoodsParams/GetGoodParams - /// - /// 选择参数面板 - /// - /// - [HttpPost] - [Description("选择参数面板")] - public JsonResult GetGoodsParams() - { - //返回数据 - var jm = new AdminUiCallBack { code = 0 }; - var goodsParamTypes = EnumHelper.EnumToList(); - jm.data = new - { - goodsParamTypes - }; - return Json(jm); - } - - #endregion 选择参数面板============================================================ - - #region 获取已有属性列表============================================================ - - // POST: Api/CoreCmsGoodsType/GetTypeSpecSpecPageList - /// - /// 获取已有属性列表 - /// - /// - [HttpPost] - [Description("获取已有属性列表")] - public async Task GetTypeSpecSpecPageList() - { - var jm = new AdminUiCallBack(); - var pageCurrent = Request.Form["page"].FirstOrDefault().ObjectToInt(1); - var pageSize = Request.Form["limit"].FirstOrDefault().ObjectToInt(30); - var where = PredicateBuilder.True(); - //获取排序字段 - var orderField = Request.Form["orderField"].FirstOrDefault(); - Expression> orderEx; - switch (orderField) - { - case "id": - orderEx = p => p.id; - break; - - case "name": - orderEx = p => p.name; - break; - - case "sort": - orderEx = p => p.sort; - break; - - default: - orderEx = p => p.id; - break; - } - - //设置排序方式 - var orderDirection = Request.Form["orderDirection"].FirstOrDefault(); - var orderBy = orderDirection switch - { - "asc" => OrderByType.Asc, - "desc" => OrderByType.Desc, - _ => OrderByType.Desc - }; - //查询筛选 - - //序列 int - var id = Request.Form["id"].FirstOrDefault().ObjectToInt(0); - if (id > 0) @where = @where.And(p => p.id == id); - //属性名称 nvarchar - var name = Request.Form["name"].FirstOrDefault(); - if (!string.IsNullOrEmpty(name)) @where = @where.And(p => p.name.Contains(name)); - //属性排序 int - var sort = Request.Form["sort"].FirstOrDefault().ObjectToInt(0); - if (sort > 0) @where = @where.And(p => p.sort == sort); - //获取数据 - var list = await _typeSpecServices.QueryPageAsync(where, orderEx, orderBy, pageCurrent, pageSize); - - if (list.Any()) - { - var ids = list.Select(p => p.id).ToList(); - var values = await _valueServices.QueryListByClauseAsync(p => ids.Contains(p.specId)); - foreach (var item in list) - item.specValues = values.Where(p => p.specId == item.id).OrderBy(p => p.sort).ToList(); - } - - //返回数据 - jm.data = list; - jm.code = 0; - jm.count = list.TotalCount; - jm.msg = "数据调用成功!"; - return Json(jm); - } - - #endregion 获取已有属性列表============================================================ - - #region 选择属性面板============================================================ - - // POST: Api/CoreCmsGoodsType/GetTypeSpecIndex - /// - /// 选择属性面板 - /// - /// - [HttpPost] - [Description("选择属性面板")] - public JsonResult GetTypeSpecIndex() - { - //返回数据 - var jm = new AdminUiCallBack { code = 0 }; - return Json(jm); - } - - #endregion 选择属性面板============================================================ - - #region 编辑参数============================================================ - - // POST: Api/CoreCmsGoodsType/GetEditParameters - /// - /// 编辑参数 - /// - /// - /// - [HttpPost] - [Description("编辑参数")] - public async Task GetEditParameters([FromBody] FMIntId entity) - { - var jm = new AdminUiCallBack(); - - var model = await _coreCmsGoodsTypeServices.QueryByIdAsync(entity.id); - if (model == null) - { - jm.msg = "不存在此信息"; - return Json(jm); - } - - jm.code = 0; - - var parameters = await _paramsServices.QueryAsync(); - var typeParametersRel = - await _coreCmsGoodsTypeParamsServices.QueryListByClauseAsync(p => p.typeId == entity.id); - jm.data = new - { - model, - parameters, - typeParametersRel = typeParametersRel.Any() - ? typeParametersRel.Select(p => p.paramsId).ToList() - : new List() - }; - - return Json(jm); - } - - #endregion 编辑参数============================================================ - - #region 编辑参数提交============================================================ - - // POST: Admins/CoreCmsGoodsType/DoEditParameters - /// - /// 编辑参数提交 - /// - /// - /// - [HttpPost] - [Description("编辑参数提交")] - public async Task DoEditParameters([FromBody] FMUpdateArrayIntDataByIntId entity) - { - var jm = await _coreCmsGoodsTypeServices.UpdateParametersAsync(entity); - return Json(jm); - } - - #endregion 编辑参数提交============================================================ - - #region 编辑属性============================================================ - - // POST: Api/CoreCmsGoodsType/GetEditTypes - /// - /// 编辑属性 - /// - /// - /// - [HttpPost] - [Description("编辑属性")] - public async Task GetEditTypes([FromBody] FMIntId entity) - { - var jm = new AdminUiCallBack(); - - var model = await _coreCmsGoodsTypeServices.QueryByIdAsync(entity.id); - if (model == null) - { - jm.msg = "不存在此信息"; - return Json(jm); - } - - jm.code = 0; - - var goodsTypeSpec = await _typeSpecServices.QueryAsync(); - var goodsTypeSpecRel = await _typeSpecRelServices.QueryListByClauseAsync(p => p.typeId == entity.id); - jm.data = new - { - model, - goodsTypeSpec, - goodsTypeSpecRel = goodsTypeSpecRel.Any() - ? goodsTypeSpecRel.Select(p => p.specId).ToList() - : new List() - }; - - return Json(jm); - } - - #endregion 编辑属性============================================================ - - #region 编辑属性提交============================================================ - - // POST: Admins/CoreCmsGoodsType/DoEditTypes - /// - /// 编辑属性提交 - /// - /// - /// - [HttpPost] - [Description("编辑属性提交")] - public async Task DoEditTypes([FromBody] FMUpdateArrayIntDataByIntId entity) - { - var jm = await _coreCmsGoodsTypeServices.UpdateTypesAsync(entity); - return Json(jm); - } - - #endregion 编辑属性提交============================================================ - } -} \ No newline at end of file diff --git a/CoreCms.Net.Web.Admin/Controllers/Good/CoreCmsGoodsTypeSpecController.cs b/CoreCms.Net.Web.Admin/Controllers/Good/CoreCmsGoodsTypeSpecController.cs index 051e1b4ad5f0dd9f93da08d76e165bb0239e8b3a..806f5842284ab8453ad31f7eac8cbee617f00f5b 100644 --- a/CoreCms.Net.Web.Admin/Controllers/Good/CoreCmsGoodsTypeSpecController.cs +++ b/CoreCms.Net.Web.Admin/Controllers/Good/CoreCmsGoodsTypeSpecController.cs @@ -40,8 +40,6 @@ namespace CoreCms.Net.Web.Admin.Controllers public class CoreCmsGoodsTypeSpecController : Controller { private readonly ICoreCmsGoodsTypeSpecServices _coreCmsGoodsTypeSpecServices; - private readonly ICoreCmsGoodsTypeServices _goodsTypeServices; - private readonly ICoreCmsGoodsTypeSpecRelServices _relServices; private readonly ICoreCmsGoodsTypeSpecValueServices _valueServices; private readonly IWebHostEnvironment _webHostEnvironment; @@ -50,15 +48,11 @@ namespace CoreCms.Net.Web.Admin.Controllers /// public CoreCmsGoodsTypeSpecController(IWebHostEnvironment webHostEnvironment , ICoreCmsGoodsTypeSpecServices coreCmsGoodsTypeSpecServices - , ICoreCmsGoodsTypeSpecRelServices coreCmsGoodsTypeSpecRelServices - , ICoreCmsGoodsTypeSpecValueServices coreCmsGoodsTypeSpecValueServices, - ICoreCmsGoodsTypeServices goodsTypeServices) + , ICoreCmsGoodsTypeSpecValueServices coreCmsGoodsTypeSpecValueServices) { _webHostEnvironment = webHostEnvironment; _coreCmsGoodsTypeSpecServices = coreCmsGoodsTypeSpecServices; - _relServices = coreCmsGoodsTypeSpecRelServices; _valueServices = coreCmsGoodsTypeSpecValueServices; - _goodsTypeServices = goodsTypeServices; } #region 获取列表============================================================ @@ -188,6 +182,17 @@ namespace CoreCms.Net.Web.Admin.Controllers public async Task DoCreate([FromBody] FmGoodsTypeSpecInsert entity) { var jm = await _coreCmsGoodsTypeSpecServices.InsertAsync(entity); + + if (jm.code == 0) + { + //获取SKU列表 + var skuList = await _coreCmsGoodsTypeSpecServices.QueryListByClauseAsync(p => p.id > 0, p => p.id, OrderByType.Desc, true); + jm.data = new + { + skuList + }; + + } return Json(jm); } diff --git a/CoreCms.Net.Web.Admin/Controllers/System/SysMenuController.cs b/CoreCms.Net.Web.Admin/Controllers/System/SysMenuController.cs index 063377a22e1830c5aa489d7275c0cab2bc7c94b0..b571047bc8a8ab66b909f3b8cf125bd1769744e8 100644 --- a/CoreCms.Net.Web.Admin/Controllers/System/SysMenuController.cs +++ b/CoreCms.Net.Web.Admin/Controllers/System/SysMenuController.cs @@ -212,8 +212,15 @@ namespace CoreCms.Net.Web.Admin.Controllers var jm = new AdminUiCallBack(); jm = await _sysMenuServices.DeleteByIdAsync(entity.id); + + + + return Json(jm); + + + } #endregion diff --git a/CoreCms.Net.Web.Admin/Doc.xml b/CoreCms.Net.Web.Admin/Doc.xml index 4ec1169bdbac6ce53f297bd6f4b574ab38eacfb1..743d3de8eb0b6ae5246cf20c1478ee94d94bd8b3 100644 --- a/CoreCms.Net.Web.Admin/Doc.xml +++ b/CoreCms.Net.Web.Admin/Doc.xml @@ -1408,7 +1408,7 @@ 商品分类 - + 构造函数 @@ -1528,7 +1528,7 @@ 商品表 - + 构造函数 @@ -1620,9 +1620,9 @@ - + - 获取商品参数 + 获取商品SKU明细 @@ -1716,7 +1716,7 @@ 商品参数表 - + 构造函数 @@ -1790,120 +1790,12 @@ - - - 商品类型 - - - - - 构造函数 - - - - - 获取列表 - - - - - - 首页数据 - - - - - - 创建数据 - - - - - - 创建提交 - - - - - - - 编辑数据 - - - - - - - 编辑提交 - - - - - - - 单选删除 - - - - - - - 获取已有参数列表 - - - - - - 选择参数面板 - - - - - - 获取已有属性列表 - - - - - - 选择属性面板 - - - - - - 编辑参数 - - - - - - - 编辑参数提交 - - - - - - - 编辑属性 - - - - - - - 编辑属性提交 - - - - 商品类型属性表 - + 构造函数 diff --git a/CoreCms.Net.Web.Admin/NLog.config b/CoreCms.Net.Web.Admin/NLog.config index e06bd8980a61af1a83cebad3674d4de25394a8e1..66ef6225bec5172bcec45072b25f5f7beb3f2d79 100644 --- a/CoreCms.Net.Web.Admin/NLog.config +++ b/CoreCms.Net.Web.Admin/NLog.config @@ -14,7 +14,7 @@ dbProvider="Microsoft.Data.SqlClient.SqlConnection, Microsoft.Data.SqlClient" connectionString="Server=127.0.0.1;Database=BaseMIS;User ID=sa;Password=123456" --> - + INSERT INTO SysNLogRecords (LogDate,LogLevel,LogType,LogTitle,Logger,Message,MachineName,MachineIp,NetRequestMethod diff --git a/CoreCms.Net.Web.Admin/appsettings.json b/CoreCms.Net.Web.Admin/appsettings.json index 6ba44b87aad4c8b4ee9c4eef2ac14605e73b53ce..63776879517e366eb131106c0ed995281f2b4f8d 100644 --- a/CoreCms.Net.Web.Admin/appsettings.json +++ b/CoreCms.Net.Web.Admin/appsettings.json @@ -1,11 +1,11 @@ { "ConnectionStrings": { - "DbType": "MySql", //数据库将支持两种模式【SqlServer,MySql】 - //"SqlConnection": "Server=127.0.0.1;uid=CoreShop;pwd=CoreShop;Database=CoreShop;MultipleActiveResultSets=true;" + "DbType": "SqlServer", //数据库将支持两种模式【SqlServer,MySql】 + "SqlConnection": "Server=127.0.0.1;uid=CoreShop;pwd=CoreShop;Database=CoreShop;MultipleActiveResultSets=true;" //SqlServer数据库连接字符串,需要开启数据库连接复用【MultipleActiveResultSets=true】 // 如果采用容器化部署Service 要写成mysql的服务名,否则写地址 - "SqlConnection": "Server=127.0.0.1;Port=3306;Database=CoreShop;Uid=CoreShop;Pwd=CoreShop;CharSet=utf8;pooling=true;SslMode=None;Allow User Variables=true" + //"SqlConnection": "Server=127.0.0.1;Port=3306;Database=CoreShop;Uid=CoreShop;Pwd=CoreShop;CharSet=utf8;pooling=true;SslMode=None;Allow User Variables=true" // Mysql数据库链接字符串,请保持后面的属性别少。经过测试,mysql版本需要5.7或以上 }, //定时任务管理面板的账户密码 diff --git a/CoreCms.Net.Web.Admin/wwwroot/Upload/20210720/20210720195511_9525.jpg b/CoreCms.Net.Web.Admin/wwwroot/Upload/20210720/20210720195511_9525.jpg new file mode 100644 index 0000000000000000000000000000000000000000..40bf5380c77c0190b09e9171799d3d34d0bc3662 Binary files /dev/null and b/CoreCms.Net.Web.Admin/wwwroot/Upload/20210720/20210720195511_9525.jpg differ diff --git a/CoreCms.Net.Web.Admin/wwwroot/Upload/20210720/20210720195535_5311.jpg b/CoreCms.Net.Web.Admin/wwwroot/Upload/20210720/20210720195535_5311.jpg new file mode 100644 index 0000000000000000000000000000000000000000..31e3ffe4c731f18eb4647d260d7151dcc4a0f320 Binary files /dev/null and b/CoreCms.Net.Web.Admin/wwwroot/Upload/20210720/20210720195535_5311.jpg differ diff --git a/CoreCms.Net.Web.Admin/wwwroot/Upload/20210720/20210720211728_7973.jpg b/CoreCms.Net.Web.Admin/wwwroot/Upload/20210720/20210720211728_7973.jpg new file mode 100644 index 0000000000000000000000000000000000000000..40bf5380c77c0190b09e9171799d3d34d0bc3662 Binary files /dev/null and b/CoreCms.Net.Web.Admin/wwwroot/Upload/20210720/20210720211728_7973.jpg differ diff --git a/CoreCms.Net.Web.Admin/wwwroot/Upload/20210720/20210720211739_2562.jpg b/CoreCms.Net.Web.Admin/wwwroot/Upload/20210720/20210720211739_2562.jpg new file mode 100644 index 0000000000000000000000000000000000000000..edbacac0dabdd2682191d5b4f9c3e3ca90d34e3f Binary files /dev/null and b/CoreCms.Net.Web.Admin/wwwroot/Upload/20210720/20210720211739_2562.jpg differ diff --git a/CoreCms.Net.Web.Admin/wwwroot/Upload/20210720/20210720211826_3596.jpg b/CoreCms.Net.Web.Admin/wwwroot/Upload/20210720/20210720211826_3596.jpg new file mode 100644 index 0000000000000000000000000000000000000000..596944e650c4af1e2cccbc875835f66f2582301f Binary files /dev/null and b/CoreCms.Net.Web.Admin/wwwroot/Upload/20210720/20210720211826_3596.jpg differ diff --git a/CoreCms.Net.Web.Admin/wwwroot/views/advert/advertisement/getArticle.html b/CoreCms.Net.Web.Admin/wwwroot/views/advert/advertisement/getArticle.html index 7a35964db995b0e566a822a0316aefdb2dc6a6bc..cd1b992ba390e4fe96822808abae794dee728fa9 100644 --- a/CoreCms.Net.Web.Admin/wwwroot/views/advert/advertisement/getArticle.html +++ b/CoreCms.Net.Web.Admin/wwwroot/views/advert/advertisement/getArticle.html @@ -10,7 +10,7 @@ -
@@ -105,7 +105,7 @@ //数据绑定 table.render({ elem: '#LAY-app-CoreCmsAgentGoods-tableBox', - url: 'Api/CoreCmsAgentGoods/GetPageList', + url: layui.setter.apiUrl + 'Api/CoreCmsAgentGoods/GetPageList', method: 'POST', toolbar: '#LAY-app-CoreCmsAgentGoods-toolbar', defaultToolbar: ['filter', 'print', 'exports'], diff --git a/CoreCms.Net.Web.Admin/wwwroot/views/agent/agentGrade/index.html b/CoreCms.Net.Web.Admin/wwwroot/views/agent/agentGrade/index.html index 31e227d04959db55080ebffb9bc8ff669ff6be19..93e993bfa2346ea0c6e7e7740dbeaee9149f0dd8 100644 --- a/CoreCms.Net.Web.Admin/wwwroot/views/agent/agentGrade/index.html +++ b/CoreCms.Net.Web.Admin/wwwroot/views/agent/agentGrade/index.html @@ -10,7 +10,7 @@ -
@@ -54,7 +54,7 @@ //数据绑定 table.render({ elem: '#LAY-app-CoreCmsPayments-tableBox', - url: 'Api/CoreCmsPayments/GetPageList', + url: layui.setter.apiUrl + 'Api/CoreCmsPayments/GetPageList', method: 'POST', defaultToolbar: ['filter', 'print', 'exports'], height: 'full-127',//无面包屑127,搜索框189,1行62 diff --git a/CoreCms.Net.Web.Admin/wwwroot/views/financial/userbalance/index.html b/CoreCms.Net.Web.Admin/wwwroot/views/financial/userbalance/index.html index ef577a8513c8235560dc3551a4956498d418e71c..46a2bf8035de16c8cf687cd115c0dfdf610ad2e3 100644 --- a/CoreCms.Net.Web.Admin/wwwroot/views/financial/userbalance/index.html +++ b/CoreCms.Net.Web.Admin/wwwroot/views/financial/userbalance/index.html @@ -10,7 +10,7 @@ - + + + + + + + + + + + + + \ No newline at end of file diff --git a/CoreCms.Net.Web.Admin/wwwroot/views/good/goods/create.html b/CoreCms.Net.Web.Admin/wwwroot/views/good/goods/create.html index 107c46eb9e899537847f67639b3c243ef1f26f1b..a46a08872d31bb340171886fc6a7053717e99139 100644 --- a/CoreCms.Net.Web.Admin/wwwroot/views/good/goods/create.html +++ b/CoreCms.Net.Web.Admin/wwwroot/views/good/goods/create.html @@ -6,7 +6,7 @@ 添加商品
- + + + - + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/CoreCms.Net.Web.Admin/wwwroot/views/good/goods/edit.html b/CoreCms.Net.Web.Admin/wwwroot/views/good/goods/edit.html index 47b35985495ebf8084eb4eeadfb78209c3c0d9b2..59d4434bdd4a9463bca38bfc9651a396c40c0759 100644 --- a/CoreCms.Net.Web.Admin/wwwroot/views/good/goods/edit.html +++ b/CoreCms.Net.Web.Admin/wwwroot/views/good/goods/edit.html @@ -16,7 +16,8 @@
  • 基础信息
  • 图集/视频
  • -
  • 货品信息
  • +
  • SKU/货品设置
  • +
  • 参数设置
  • 会员折扣
  • 商品详情
@@ -120,7 +121,6 @@ -
请选择小于5M的图片进行裁剪上传 @@ -169,13 +169,13 @@
-
- 1、选择对应的【商品类型】,将进入多规格货品模式。同时如果类别有参数,也将进行显示设置。
- 2、设置多规格后,商品本身的价格只做对外展示用,实际以进入商品详情选择不同货品为准。
- 3、货品规格组合属性值只支持:中文、英文、数字、大写符号,小写符号三个(-、/、.))
+
@@ -186,29 +186,47 @@
- +
- +
- 选择图片 + 上传图片 - + {{item.spesDesc}} @@ -352,10 +370,11 @@ + + - @@ -500,9 +519,20 @@ viewBox.innerHTML = html; }); } + + //初始化已经确认商品SKU + if (d.data.goodsTypeSpec) { + var tmpData = { goodsTypeSpec: d.data.goodsTypeSpec, model: d.data.model }; + //赋值商品参数数据 + var getTpl = sku_tpl.innerHTML, viewBox = document.getElementById('product-info'); + laytpl(getTpl).render(tmpData, function (html) { + viewBox.innerHTML = html; + }); + } + var arrParameters = []; //初始化已经确认商品参数 - if (d.data.goodsParams || d.data.goodsTypeSpec) { + if (d.data.goodsParams) { if (d.data.model.parameters) { var arr = d.data.model.parameters.split('|'); for (var i = 0; i < arr.length; i++) { @@ -510,14 +540,15 @@ arrParameters.push(arrChild); } } - var tmpData = { goodsParams: d.data.goodsParams, goodsTypeSpec: d.data.goodsTypeSpec, arrParameters: arrParameters, model: d.data.model }; + var tmpData = { goodsParams: d.data.goodsParams, arrParameters: arrParameters }; //赋值商品参数数据 - var getTpl = params_tpl.innerHTML, viewBox = document.getElementById('product-info'); + var getTpl = params_tpl.innerHTML, viewBox = document.getElementById('parametersBox'); laytpl(getTpl).render(tmpData, function (html) { viewBox.innerHTML = html; }); } + //初始化数据 enptyProducts = { id: 0, @@ -556,7 +587,7 @@ $("#parametersBox").show(); $("#goodsTypeIdViewBox").show(); var btn = $('#openSpecBtn'); - $(btn).html("取消规格"); + $(btn).html("取消SKU"); } // 渲染商品分类 @@ -626,6 +657,77 @@ } }); + var arrParams = []; + if (d.data.model.goodsParamsIds) { + arrParams = d.data.model.goodsParamsIds.split(','); + } + + //渲染商品扩展分类 + var insGoodsParams = xmSelect.render({ + el: '#goodsParams_SelectCreateTree', + height: '250px', + data: d.data.paramsList, + //model: { label: { type: 'text' } }, + name: 'goodsParamsIds', + prop: { + name: 'name', + value: 'id' + }, + initValue: arrParams, + tree: { + //是否显示树状结构 + show: true, + //是否展示三角图标 + showFolderIcon: true, + //是否显示虚线 + showLine: true, + //间距 + indent: 20, + //默认展开节点的数组, 为 true 时, 展开所有节点 + expandedKeys: true, + //是否严格遵守父子模式 + strict: false, + //是否开启极简模式 + simple: false, + } + }); + + var arrSku = []; + if (d.data.model.goodsSkuIds) { + arrSku = d.data.model.goodsSkuIds.split(','); + } + + //渲染商品扩展分类 + var insgoodsSKU = xmSelect.render({ + el: '#goodsSku_SelectCreateTree', + height: '250px', + data: d.data.skuList, + //model: { label: { type: 'text' } }, + name: 'goodsSkuIds', + prop: { + name: 'name', + value: 'id' + }, + initValue: arrSku, + tree: { + //是否显示树状结构 + show: true, + //是否展示三角图标 + showFolderIcon: true, + //是否显示虚线 + showLine: true, + //间距 + indent: 20, + //默认展开节点的数组, 为 true 时, 展开所有节点 + expandedKeys: true, + //是否严格遵守父子模式 + strict: false, + //是否开启极简模式 + simple: false, + } + }); + + //封面图图片上传 $('#upBtn').click(function () { cropperImg.cropImg({ @@ -646,6 +748,7 @@ }); } }); + form.render(); }); //封面图图片上传 @@ -672,9 +775,10 @@ }); } }); + form.render(); }); - //规格缩略图上传 + //SKU缩略图上传 $('.upSpecImage').click(function () { var _that = this; cropperImg.cropImg({ @@ -697,6 +801,7 @@ }); } }); + form.render(); }); //表单验证规则 @@ -733,7 +838,7 @@ //重新渲染分类下拉 insXmSelGoodsCategoryId.update({ data: e.data.categories.data, autoRow: true, }) insXmSelGoodsCategoryIdExtend.update({ data: e.data.categories.data, autoRow: true, }) - + form.render(); layer.close(index); //再执行关闭 layer.msg(e.msg); } else { @@ -749,78 +854,85 @@ } }); }); - //添加类型 - $(document).on('click', '.add-type', function () { - coreHelper.Post("Api/CoreCmsGoodsType/GetCreate", null, function (e) { + //添加sku + $(document).on('click', '.add-Sku', function () { + coreHelper.Post("Api/CoreCmsGoodsTypeSpec/GetCreate", null, function (e) { if (e.code === 0) { admin.popup({ shadeClose: false, - title: '添加类型', - area: ['700px', '540px'], - id: 'LAY-popup-CoreCmsGoodsType-create', + title: '创建数据', + area: ['550px', '90%'], + id: 'LAY-popup-CoreCmsGoodsTypeSpec-create', success: function (layero, index) { - view(this.id).render('good/goodstype/create', { data: e.data }).done(function () { + view(this.id).render('good/goodstypespec/create', { data: e.data }).done(function () { //监听提交 - form.on('submit(LAY-app-CoreCmsGoodsType-createForm-submit)', + form.on('submit(LAY-app-CoreCmsGoodsTypeSpec-createForm-submit)', function (data) { var field = data.field; //获取提交的字段 var keys = Object.keys(field); - var paramsIds = 0; - var typeIds = 0; + field.value = []; for (var i = 0; i < keys.length; i++) { - if (keys[i].indexOf("params_id") != -1) { paramsIds++; }; - if (keys[i].indexOf("type_id") != -1) { typeIds++; }; + if (keys[i].indexOf("value") != -1) { + var keyName = Object.keys(field)[i]; + field.value.push(field[keyName]); + }; } - if (paramsIds > 0) { - var arr = []; - for (var i = 0; i < paramsIds; i++) { - var id = 'params_id[' + i + ']'; - var name = 'params_name[' + i + ']'; - var type = 'params_type[' + i + ']'; - var value = 'params_value[' + i + ']'; - if (field[name]) { - var paramsModel = {}; - paramsModel.paramsId = parseInt(field[id]); - paramsModel.paramsName = field[name]; - paramsModel.paramsType = field[type]; - paramsModel.paramsValue = field[value]; - arr.push(paramsModel) - } - } - field.parameters = arr; - }; - if (typeIds > 0) { - var arr = []; - for (var i = 0; i < typeIds; i++) { - var id = 'type_id[' + i + ']'; - var name = 'type_name[' + i + ']'; - var type = 'type_sort[' + i + ']'; - var value = 'type_value[' + i + ']'; - if (field[name]) { - var typeModel = {}; - typeModel.typeId = parseInt(field[id]); - typeModel.typeName = field[name]; - typeModel.typeType = field[type]; - typeModel.typeValue = field[value]; - arr.push(typeModel) + + if (debug) { console.log(field); } //开启调试返回数据 + //提交 Ajax 成功后,关闭当前弹层并重载表格 + coreHelper.Post("Api/CoreCmsGoodsTypeSpec/DoCreate", field, function (e) { + if (e.code === 0) { + var ids = insgoodsSKU.getValue(); + var arrSku = []; + if (ids.length > 0) { + arrSku = ids; } + insgoodsSKU.update({ data: e.data.skuList, initValue: arrSku, autoRow: true, }) + form.render(); + layer.close(index); //再执行关闭 + layer.msg(e.msg); + } else { + layer.msg(e.msg); } - field.types = arr; - } + }); + }); + }); + } + }); + } else { + layer.msg(e.msg); + } + }); + return false; + }); - if (debug) { console.log(field); console.log('paramsIds:' + paramsIds); console.log('typeIds:' + typeIds); } //开启调试返回数据 + //添加参数模型 + $(document).on('click', '.add-goodsParams', function () { + coreHelper.Post("Api/CoreCmsGoodsParams/GetCreate", null, function (e) { + if (e.code === 0) { + admin.popup({ + shadeClose: false, + title: '创建数据', + area: ['550px', '400px'], + id: 'LAY-popup-CoreCmsGoodsParams-create', + success: function (layero, index) { + view(this.id).render('good/goodsparams/create', { data: e.data }).done(function () { + //监听提交 + form.on('submit(LAY-app-CoreCmsGoodsParams-createForm-submit)', + function (data) { + var field = data.field; //获取提交的字段 + + if (debug) { console.log(field); } //开启调试返回数据 //提交 Ajax 成功后,关闭当前弹层并重载表格 - coreHelper.Post("Api/CoreCmsGoodsType/DoCreate", field, function (e) { + coreHelper.Post("Api/CoreCmsGoodsParams/DoCreate", field, function (e) { if (e.code === 0) { - //下拉重新赋值 - var getTpl = type_tpl.innerHTML, view = document.getElementById('goodsTypeIdView'); - var tmpData = {}; - tmpData.list = e.data.types; - laytpl(getTpl).render(tmpData, function (html) { - view.innerHTML = html; - }); + var ids = insGoodsParams.getValue(); + var arrSku = []; + if (ids.length > 0) { + arrSku = ids; + } + insGoodsParams.update({ data: e.data.paramsList, initValue: arrSku, autoRow: true, }) form.render(); - layer.close(index); //再执行关闭 layer.msg(e.msg); } else { @@ -837,6 +949,7 @@ }); return false; }); + //添加品牌 $(document).on('click', '.add-brand', function () { coreHelper.Post("Api/CoreCmsBrand/GetCreate", null, function (e) { @@ -858,7 +971,7 @@ coreHelper.Post("Api/CoreCmsBrand/DoCreate", field, function (e) { if (e.code === 0) { //下拉重新赋值 - var getTpl = type_tpl.innerHTML, view = document.getElementById('brandIdView'); + var getTpl = brand_tpl.innerHTML, view = document.getElementById('brandIdView'); var tmpData = {}; tmpData.list = e.data.brands; laytpl(getTpl).render(tmpData, function (html) { @@ -881,35 +994,7 @@ }); return false; }); - //切换商品类型赋值参数 - form.on('select(goodsTypeId)', function (data) { - var typeId = data.value; - if (typeId) { - layer.confirm('更换类型后,货品需重新生成,确定要更换吗?', { - btn: ['确定', '取消'] - , title: '提示', - }, function (index) { - coreHelper.Post("Api/CoreCmsGoods/GetTypeSpec", { id: typeId }, function (e) { - if (debug) { console.log(e); } //开启调试返回数据 - if (e.data) { - //赋值商品参数数据 - var getTpl = params_tpl.innerHTML, view = document.getElementById('product-info'); - var tmpData = { goodsParams: e.data.goodsParams, goodsTypeSpec: e.data.goodsTypeSpec, arrParameters: arrParameters, model: d.data.model }; - laytpl(getTpl).render(tmpData, function (html) { - view.innerHTML = html; - }); - if (e.data.goodsTypeSpec.length > 0) { - openSpecBox('0'); - } - form.render(); - } - }); - layer.close(index); - }, function () { - }); - } - }); //默认货品选择 form.on('checkbox(isdefalut)', function (data) { console.log(data.elem.checked); @@ -939,10 +1024,9 @@ if (is_open == '0') { $("input[name=openSpec]").val("1"); $("#spec_select").show(); - $("#parametersBox").show(); $("#goodsTypeIdViewBox").show(); - $("#openSpecBtn").html("取消规格"); - console.log("取消规格"); + $("#openSpecBtn").html("取消SKU"); + console.log("取消SKU"); if (_that.tempMultitermData.length == 0) { $('#more_spec').html(''); @@ -958,10 +1042,9 @@ } else { $("input[name=openSpec]").val("0"); $("#spec_select").hide(); - $("#parametersBox").hide(); $("#goodsTypeIdViewBox").hide(); - $("#openSpecBtn").html("开启"); - console.log("开启规则"); + $("#openSpecBtn").html("启用SKU"); + console.log("启用SKU"); var arr = []; arr.push(_that.oldSingleData); @@ -976,6 +1059,69 @@ //处理属性 为 lay-active 的所有元素事件 util.event('lay-active', { + doSetGoodsSku: function () { + var ids = insgoodsSKU.getValue(); + if (ids.length <= 0) { + layer.msg("请先选择SKU模型"); + return false; + } + var delidsStr = []; + layui.each(ids, function (index, item) { + delidsStr.push(item.id); + }); + + layer.confirm('更换SKU模型后,货品需重新生成,确定要更换吗?', { + btn: ['确定', '取消'] + , title: '提示', + }, function (index) { + coreHelper.Post("Api/CoreCmsGoods/GetSkuDetail", { id: delidsStr }, function (e) { + if (debug) { console.log(e); } //开启调试返回数据 + if (e.data) { + //赋值商品参数数据 + var tmpData = { goodsTypeSpec: e.data.goodsTypeSpec, model: d.data.model }; + + var getTpl = sku_tpl.innerHTML, view = document.getElementById('product-info'); + laytpl(getTpl).render(tmpData, function (html) { + view.innerHTML = html; + }); + if (e.data.goodsTypeSpec.length > 0) { + openSpecBox('0'); + } + form.render(); + } + }); + layer.close(index); + + }, function () { + }); + form.render(); + }, + doSetGoodsParams: function () { + var ids = insGoodsParams.getValue(); + if (ids.length <= 0) { + layer.msg("请先选择参数"); + return false; + } + if (d.data.model.parameters) { + var arr = d.data.model.parameters.split('|'); + for (var i = 0; i < arr.length; i++) { + var arrChild = arr[i].split(':'); + arrParameters.push(arrChild); + } + } + var tmpData = { goodsParams: ids, arrParameters: arrParameters }; + var getTpl = params_tpl.innerHTML, viewBox = document.getElementById('parametersBox'); + laytpl(getTpl).render(tmpData, function (html) { + viewBox.innerHTML = html; + }); + form.render(); + }, + doClearGoodsParams: function () { + $('#parametersBox').html(""); + layer.msg("已清空,请重新选择"); + form.render(); + + }, delTr: function () { $(this).parent().parent('tr').remove(); var productsCount = parseInt($('#productsCount').val()); @@ -1052,7 +1198,7 @@ $('#newSpec').val(e.data.newSpecStr); $('#productsCount').val(tmpData.length); - //规格缩略图上传 + //SKU缩略图上传 $('.upSpecImage').click(function () { var _that = this; cropperImg.cropImg({ @@ -1076,7 +1222,7 @@ } }); }); - layer.msg("规格拉取成功"); + layer.msg("Sku列表获取成功"); } else { layer.msg(e.msg, { icon: 5, anim: 6 }); } @@ -1085,7 +1231,7 @@ }); return false; } else { - layer.msg("请选择属性"); + layer.msg("请选择Sku具体明细"); return false; } return false; @@ -1161,6 +1307,10 @@ goods.costprice = field['goods[costprice]']; goods.goodsCategoryId = field['goods[goodsCategoryId]']; goods.goodsTypeId = field['goods[goodsTypeId]']; + + goods.goodsSkuIds = field.goodsSkuIds; + goods.goodsParamsIds = field.goodsParamsIds; + goods.images = field['goods[images]']; goods.image = field['goods[image]']; goods.video = field['goods[video]']; @@ -1327,7 +1477,7 @@ } return value; } - //判断规格是否选中 + //判断SKU是否选中 function isSelectedTypeSpec(parameters, id, value) { if (parameters) { var arr = parameters.split('|'); diff --git a/CoreCms.Net.Web.Admin/wwwroot/views/good/goods/index.html b/CoreCms.Net.Web.Admin/wwwroot/views/good/goods/index.html index 1cc76a95aa70b444ad4e2eebb2283d23afbeed20..c6cd6f4295f350ae098e6a8a22eaac8d7b904cbe 100644 --- a/CoreCms.Net.Web.Admin/wwwroot/views/good/goods/index.html +++ b/CoreCms.Net.Web.Admin/wwwroot/views/good/goods/index.html @@ -12,7 +12,7 @@ .layui-card-body { background-color: #fff; padding: 0px; margin: 10px; border: 0px solid #e6e6e6; } .layui-tab-content { padding: 0px 10px 10px 10px; } - - - - - - - \ No newline at end of file diff --git a/CoreCms.Net.Web.Admin/wwwroot/views/good/goodstype/details.html b/CoreCms.Net.Web.Admin/wwwroot/views/good/goodstype/details.html deleted file mode 100644 index 018517c7676668764b5a65e681d5422ae8f49575..0000000000000000000000000000000000000000 --- a/CoreCms.Net.Web.Admin/wwwroot/views/good/goodstype/details.html +++ /dev/null @@ -1,53 +0,0 @@ - - \ No newline at end of file diff --git a/CoreCms.Net.Web.Admin/wwwroot/views/good/goodstype/edit.html b/CoreCms.Net.Web.Admin/wwwroot/views/good/goodstype/edit.html deleted file mode 100644 index 73d904b1af2527b481bdf26b8f0b6b2fb2265979..0000000000000000000000000000000000000000 --- a/CoreCms.Net.Web.Admin/wwwroot/views/good/goodstype/edit.html +++ /dev/null @@ -1,38 +0,0 @@ - - \ No newline at end of file diff --git a/CoreCms.Net.Web.Admin/wwwroot/views/good/goodstype/getEditParameters.html b/CoreCms.Net.Web.Admin/wwwroot/views/good/goodstype/getEditParameters.html deleted file mode 100644 index 93ded027935b4a43d7c2d8222ab3f1d374824bac..0000000000000000000000000000000000000000 --- a/CoreCms.Net.Web.Admin/wwwroot/views/good/goodstype/getEditParameters.html +++ /dev/null @@ -1,66 +0,0 @@ - - \ No newline at end of file diff --git a/CoreCms.Net.Web.Admin/wwwroot/views/good/goodstype/getEditTypes.html b/CoreCms.Net.Web.Admin/wwwroot/views/good/goodstype/getEditTypes.html deleted file mode 100644 index dc6becda95b24e2ff0f736ddc25644d7661731e1..0000000000000000000000000000000000000000 --- a/CoreCms.Net.Web.Admin/wwwroot/views/good/goodstype/getEditTypes.html +++ /dev/null @@ -1,65 +0,0 @@ - - \ No newline at end of file diff --git a/CoreCms.Net.Web.Admin/wwwroot/views/good/goodstype/getgoodsparams.html b/CoreCms.Net.Web.Admin/wwwroot/views/good/goodstype/getgoodsparams.html deleted file mode 100644 index 5f6d0f9de6047dd9fa0b0345db771d880558536a..0000000000000000000000000000000000000000 --- a/CoreCms.Net.Web.Admin/wwwroot/views/good/goodstype/getgoodsparams.html +++ /dev/null @@ -1,124 +0,0 @@ -商品参数表 - -
-
- -
-
- - - -
-
-
- - - - \ No newline at end of file diff --git a/CoreCms.Net.Web.Admin/wwwroot/views/good/goodstype/getgoodstypespec.html b/CoreCms.Net.Web.Admin/wwwroot/views/good/goodstype/getgoodstypespec.html deleted file mode 100644 index 7f849b93025a637b1b7a6b871ad2fef6510bebf8..0000000000000000000000000000000000000000 --- a/CoreCms.Net.Web.Admin/wwwroot/views/good/goodstype/getgoodstypespec.html +++ /dev/null @@ -1,103 +0,0 @@ -商品类型属性表 - -
-
- -
-
- - - -
-
-
- - - - \ No newline at end of file diff --git a/CoreCms.Net.Web.Admin/wwwroot/views/good/goodstype/index.html b/CoreCms.Net.Web.Admin/wwwroot/views/good/goodstype/index.html deleted file mode 100644 index 5f6bbc92ac674034b8232cff8f188ad5edb63327..0000000000000000000000000000000000000000 --- a/CoreCms.Net.Web.Admin/wwwroot/views/good/goodstype/index.html +++ /dev/null @@ -1,359 +0,0 @@ -商品类型 - -
-
- -
-
- - - -
-
-
- - - - - \ No newline at end of file diff --git a/CoreCms.Net.Web.Admin/wwwroot/views/good/goodstypespec/create.html b/CoreCms.Net.Web.Admin/wwwroot/views/good/goodstypespec/create.html index 6157bc616dd57051b4c299054d85d5f037a31f71..a986aec1a4581e201c68475e151b4b0c9af6df56 100644 --- a/CoreCms.Net.Web.Admin/wwwroot/views/good/goodstypespec/create.html +++ b/CoreCms.Net.Web.Admin/wwwroot/views/good/goodstypespec/create.html @@ -1,27 +1,27 @@
@@ -50,7 +50,7 @@ //数据绑定 table.render({ elem: '#LAY-app-CoreCmsMessageCenter-tableBox', - url: 'Api/CoreCmsMessageCenter/GetPageList', + url: layui.setter.apiUrl + 'Api/CoreCmsMessageCenter/GetPageList', method: 'POST', defaultToolbar: ['filter', 'print', 'exports'], height: 'full-189',//无面包屑127,搜索框189,1行62 diff --git a/CoreCms.Net.Web.Admin/wwwroot/views/message/smslog/index.html b/CoreCms.Net.Web.Admin/wwwroot/views/message/smslog/index.html index 101983e4da804a06a82e3887ad1873574e7f4a58..262b22d984c0123915513c590f12bed342c0579c 100644 --- a/CoreCms.Net.Web.Admin/wwwroot/views/message/smslog/index.html +++ b/CoreCms.Net.Web.Admin/wwwroot/views/message/smslog/index.html @@ -10,7 +10,7 @@ -
@@ -90,7 +90,7 @@ //数据绑定 table.render({ elem: '#LAY-app-CoreCmsBillDelivery-tableBox', - url: 'Api/CoreCmsBillDelivery/GetPageList', + url: layui.setter.apiUrl + 'Api/CoreCmsBillDelivery/GetPageList', method: 'POST', toolbar: '#LAY-app-CoreCmsBillDelivery-toolbar', defaultToolbar: ['filter', 'print', 'exports'], diff --git a/CoreCms.Net.Web.Admin/wwwroot/views/order/billlading/index.html b/CoreCms.Net.Web.Admin/wwwroot/views/order/billlading/index.html index 4734ec1b68bc7d159cd5d63e279b73a472b036cf..5cbe789e72edecba4ae8f20f49e6153497ad9f81 100644 --- a/CoreCms.Net.Web.Admin/wwwroot/views/order/billlading/index.html +++ b/CoreCms.Net.Web.Admin/wwwroot/views/order/billlading/index.html @@ -10,7 +10,7 @@ -
@@ -63,7 +63,7 @@ //数据绑定 table.render({ elem: '#LAY-app-CoreCmsPages-tableBox', - url: 'Api/CoreCmsPages/GetPageList', + url: layui.setter.apiUrl + 'Api/CoreCmsPages/GetPageList', method: 'POST', toolbar: '#LAY-app-CoreCmsPages-toolbar', defaultToolbar: ['filter', 'print', 'exports'], diff --git a/CoreCms.Net.Web.Admin/wwwroot/views/shop/pagesitems/index.html b/CoreCms.Net.Web.Admin/wwwroot/views/shop/pagesitems/index.html index 20f6ae1661dbbe866b49ef4d082e4ac312a01802..c89d1e62cfedae15a45ef132d7077812ba94cfed 100644 --- a/CoreCms.Net.Web.Admin/wwwroot/views/shop/pagesitems/index.html +++ b/CoreCms.Net.Web.Admin/wwwroot/views/shop/pagesitems/index.html @@ -10,7 +10,7 @@ -
@@ -60,7 +60,7 @@ //数据绑定 table.render({ elem: '#LAY-app-CoreCmsShip-tableBox', - url: 'Api/CoreCmsShip/GetPageList', + url: layui.setter.apiUrl + 'Api/CoreCmsShip/GetPageList', method: 'POST', toolbar: '#LAY-app-CoreCmsShip-toolbar', defaultToolbar: ['filter', 'print', 'exports'], @@ -267,6 +267,10 @@ areaModel.firstunitAreaPrice = field[firstunitAreaPrice]; areaFee.push(areaModel); } + + + + field.areaFee = JSON.stringify(areaFee); } else { field.areaFee = ""; diff --git a/CoreCms.Net.Web.Admin/wwwroot/views/shop/store/index.html b/CoreCms.Net.Web.Admin/wwwroot/views/shop/store/index.html index 7a4b03a0ef91784fb53fb05cf1c575bfaea6c4f9..6add3ef56c9912f517dfc95975a7e4014995d586 100644 --- a/CoreCms.Net.Web.Admin/wwwroot/views/shop/store/index.html +++ b/CoreCms.Net.Web.Admin/wwwroot/views/shop/store/index.html @@ -14,7 +14,7 @@ #storeTable + .layui-table-view .layui-table-body tbody > tr.layui-table-click { background-color: #fff3e0; } #storeTable + .layui-table-view .layui-table-body tbody > tr.layui-table-click td:last-child > div:before { position: absolute; right: 6px; content: "\e602"; font-size: 12px; font-style: normal; font-family: layui-icon !important; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } -