mirror of
http://git.coreshop.cn/jianweie/coreshoppro.git
synced 2025-12-06 18:03:27 +08:00
添加项目文件。
This commit is contained in:
38
CoreCms.Net.Services/Good/CoreCmsBrandServices.cs
Normal file
38
CoreCms.Net.Services/Good/CoreCmsBrandServices.cs
Normal file
@@ -0,0 +1,38 @@
|
||||
/***********************************************************************
|
||||
* 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
|
||||
{
|
||||
/// <summary>
|
||||
/// 品牌表 接口实现
|
||||
/// </summary>
|
||||
public class CoreCmsBrandServices : BaseServices<CoreCmsBrand>, ICoreCmsBrandServices
|
||||
{
|
||||
private readonly ICoreCmsBrandRepository _dal;
|
||||
private readonly IUnitOfWork _unitOfWork;
|
||||
public CoreCmsBrandServices(IUnitOfWork unitOfWork, ICoreCmsBrandRepository dal)
|
||||
{
|
||||
this._dal = dal;
|
||||
base.BaseDal = dal;
|
||||
_unitOfWork = unitOfWork;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
57
CoreCms.Net.Services/Good/CoreCmsGoodsBrowsingServices.cs
Normal file
57
CoreCms.Net.Services/Good/CoreCmsGoodsBrowsingServices.cs
Normal file
@@ -0,0 +1,57 @@
|
||||
/***********************************************************************
|
||||
* 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.Linq.Expressions;
|
||||
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.Basics;
|
||||
using CoreCms.Net.Model.ViewModels.UI;
|
||||
using SqlSugar;
|
||||
|
||||
|
||||
namespace CoreCms.Net.Services
|
||||
{
|
||||
/// <summary>
|
||||
/// 商品浏览记录表 接口实现
|
||||
/// </summary>
|
||||
public class CoreCmsGoodsBrowsingServices : BaseServices<CoreCmsGoodsBrowsing>, ICoreCmsGoodsBrowsingServices
|
||||
{
|
||||
private readonly ICoreCmsGoodsBrowsingRepository _dal;
|
||||
private readonly IUnitOfWork _unitOfWork;
|
||||
public CoreCmsGoodsBrowsingServices(IUnitOfWork unitOfWork, ICoreCmsGoodsBrowsingRepository dal)
|
||||
{
|
||||
this._dal = dal;
|
||||
base.BaseDal = dal;
|
||||
_unitOfWork = unitOfWork;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 重写根据条件查询分页数据
|
||||
/// </summary>
|
||||
/// <param name="predicate">判断集合</param>
|
||||
/// <param name="orderByType">排序方式</param>
|
||||
/// <param name="pageIndex">当前页面索引</param>
|
||||
/// <param name="pageSize">分布大小</param>
|
||||
/// <param name="orderByExpression"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<IPageList<CoreCmsGoodsBrowsing>> QueryPageAsync(Expression<Func<CoreCmsGoodsBrowsing, bool>> predicate,
|
||||
Expression<Func<CoreCmsGoodsBrowsing, object>> orderByExpression, OrderByType orderByType, int pageIndex = 1,
|
||||
int pageSize = 20)
|
||||
{
|
||||
return await _dal.QueryPageAsync(predicate, orderByExpression, orderByType, pageIndex, pageSize);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
/***********************************************************************
|
||||
* 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
|
||||
{
|
||||
/// <summary>
|
||||
/// 商品分类扩展表 接口实现
|
||||
/// </summary>
|
||||
public class CoreCmsGoodsCategoryExtendServices : BaseServices<CoreCmsGoodsCategoryExtend>, ICoreCmsGoodsCategoryExtendServices
|
||||
{
|
||||
private readonly ICoreCmsGoodsCategoryExtendRepository _dal;
|
||||
private readonly IUnitOfWork _unitOfWork;
|
||||
public CoreCmsGoodsCategoryExtendServices(IUnitOfWork unitOfWork, ICoreCmsGoodsCategoryExtendRepository dal)
|
||||
{
|
||||
this._dal = dal;
|
||||
base.BaseDal = dal;
|
||||
_unitOfWork = unitOfWork;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
153
CoreCms.Net.Services/Good/CoreCmsGoodsCategoryServices.cs
Normal file
153
CoreCms.Net.Services/Good/CoreCmsGoodsCategoryServices.cs
Normal file
@@ -0,0 +1,153 @@
|
||||
/***********************************************************************
|
||||
* 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.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.ViewModels.UI;
|
||||
|
||||
|
||||
namespace CoreCms.Net.Services
|
||||
{
|
||||
/// <summary>
|
||||
/// 商品分类 接口实现
|
||||
/// </summary>
|
||||
public class CoreCmsGoodsCategoryServices : BaseServices<CoreCmsGoodsCategory>, ICoreCmsGoodsCategoryServices
|
||||
{
|
||||
private readonly ICoreCmsGoodsCategoryRepository _dal;
|
||||
private readonly IUnitOfWork _unitOfWork;
|
||||
public CoreCmsGoodsCategoryServices(IUnitOfWork unitOfWork, ICoreCmsGoodsCategoryRepository dal)
|
||||
{
|
||||
this._dal = dal;
|
||||
base.BaseDal = dal;
|
||||
_unitOfWork = unitOfWork;
|
||||
}
|
||||
|
||||
|
||||
#region 实现重写增删改查操作==========================================================
|
||||
|
||||
/// <summary>
|
||||
/// 重写异步插入方法
|
||||
/// </summary>
|
||||
/// <param name="entity">实体数据</param>
|
||||
/// <returns></returns>
|
||||
public new async Task<AdminUiCallBack> InsertAsync(CoreCmsGoodsCategory entity)
|
||||
{
|
||||
return await _dal.InsertAsync(entity);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 重写异步更新方法方法
|
||||
/// </summary>
|
||||
/// <param name="entity"></param>
|
||||
/// <returns></returns>
|
||||
public new async Task<AdminUiCallBack> UpdateAsync(CoreCmsGoodsCategory entity)
|
||||
{
|
||||
return await _dal.UpdateAsync(entity);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 重写异步更新方法方法
|
||||
/// </summary>
|
||||
/// <param name="entity"></param>
|
||||
/// <returns></returns>
|
||||
public new async Task<AdminUiCallBack> UpdateAsync(List<CoreCmsGoodsCategory> entity)
|
||||
{
|
||||
return await _dal.UpdateAsync(entity);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 重写删除指定ID的数据
|
||||
/// </summary>
|
||||
/// <param name="id"></param>
|
||||
/// <returns></returns>
|
||||
public new async Task<AdminUiCallBack> DeleteByIdAsync(object id)
|
||||
{
|
||||
return await _dal.DeleteByIdAsync(id);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 重写删除指定ID集合的数据(批量删除)
|
||||
/// </summary>
|
||||
/// <param name="ids"></param>
|
||||
/// <returns></returns>
|
||||
public new async Task<AdminUiCallBack> DeleteByIdsAsync(int[] ids)
|
||||
{
|
||||
return await _dal.DeleteByIdsAsync(ids);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region 获取缓存的所有数据==========================================================
|
||||
|
||||
/// <summary>
|
||||
/// 获取缓存的所有数据
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public async Task<List<CoreCmsGoodsCategory>> GetCaChe()
|
||||
{
|
||||
return await _dal.GetCaChe();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region 判断商品分类下面是否有某一个商品分类
|
||||
/// <summary>
|
||||
/// 判断商品分类下面是否有某一个商品分类
|
||||
/// </summary>
|
||||
/// <param name="catParentId"></param>
|
||||
/// <param name="catId"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<bool> IsChild(int catParentId, int catId)
|
||||
{
|
||||
var list = await _dal.GetCaChe();
|
||||
var bl = IsHave(list, catParentId, catId);
|
||||
return bl;
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region 判断是否含有子类
|
||||
/// <summary>
|
||||
/// 判断是否含有子类
|
||||
/// </summary>
|
||||
/// <param name="list"></param>
|
||||
/// <param name="catParentId"></param>
|
||||
/// <param name="catId"></param>
|
||||
/// <returns></returns>
|
||||
public bool IsHave(List<CoreCmsGoodsCategory> list, int catParentId, int catId)
|
||||
{
|
||||
if (catParentId == catId)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
if (!list.Exists(p => p.id == catParentId))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
var children = list.Where(p => p.parentId == catParentId).ToList();
|
||||
foreach (var item in children)
|
||||
{
|
||||
if (IsHave(list, item.id, catId))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
#endregion
|
||||
|
||||
}
|
||||
}
|
||||
119
CoreCms.Net.Services/Good/CoreCmsGoodsCollectionServices.cs
Normal file
119
CoreCms.Net.Services/Good/CoreCmsGoodsCollectionServices.cs
Normal file
@@ -0,0 +1,119 @@
|
||||
/***********************************************************************
|
||||
* 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.Linq;
|
||||
using System.Linq.Expressions;
|
||||
using System.Threading.Tasks;
|
||||
using CoreCms.Net.Configuration;
|
||||
using CoreCms.Net.IRepository;
|
||||
using CoreCms.Net.IRepository.UnitOfWork;
|
||||
using CoreCms.Net.IServices;
|
||||
using CoreCms.Net.Loging;
|
||||
using CoreCms.Net.Model.Entities;
|
||||
using CoreCms.Net.Model.Entities.Expression;
|
||||
using CoreCms.Net.Model.ViewModels.Basics;
|
||||
using CoreCms.Net.Model.ViewModels.UI;
|
||||
using SqlSugar;
|
||||
using StackExchange.Redis;
|
||||
|
||||
|
||||
namespace CoreCms.Net.Services
|
||||
{
|
||||
/// <summary>
|
||||
/// 商品收藏表 接口实现
|
||||
/// </summary>
|
||||
public class CoreCmsGoodsCollectionServices : BaseServices<CoreCmsGoodsCollection>, ICoreCmsGoodsCollectionServices
|
||||
{
|
||||
private readonly ICoreCmsGoodsCollectionRepository _dal;
|
||||
private readonly IUnitOfWork _unitOfWork;
|
||||
public CoreCmsGoodsCollectionServices(IUnitOfWork unitOfWork, ICoreCmsGoodsCollectionRepository dal)
|
||||
{
|
||||
this._dal = dal;
|
||||
base.BaseDal = dal;
|
||||
_unitOfWork = unitOfWork;
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 检查是否收藏了此商品
|
||||
/// </summary>
|
||||
/// <param name="userId"></param>
|
||||
/// <param name="goodsId"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<bool> Check(int userId, int goodsId)
|
||||
{
|
||||
var bl =await _dal.ExistsAsync(p => p.userId == userId && p.goodsId == goodsId);
|
||||
return bl;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 重写根据条件查询分页数据
|
||||
/// </summary>
|
||||
/// <param name="predicate">判断集合</param>
|
||||
/// <param name="orderByType">排序方式</param>
|
||||
/// <param name="pageIndex">当前页面索引</param>
|
||||
/// <param name="pageSize">分布大小</param>
|
||||
/// <param name="orderByExpression"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<IPageList<CoreCmsGoodsCollection>> QueryPageAsync(Expression<Func<CoreCmsGoodsCollection, bool>> predicate,
|
||||
Expression<Func<CoreCmsGoodsCollection, object>> orderByExpression, OrderByType orderByType, int pageIndex = 1,
|
||||
int pageSize = 20)
|
||||
{
|
||||
return await _dal.QueryPageAsync(predicate, orderByExpression, orderByType, pageIndex, pageSize);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 如果收藏了,就取消收藏,如果没有收藏,就收藏
|
||||
/// </summary>
|
||||
public async Task<WebApiCallBack> ToDo(int userId, int goodsId)
|
||||
{
|
||||
var collectionInfo = await _dal.ExistsAsync(p => p.userId == userId && p.goodsId == goodsId);
|
||||
if (collectionInfo)
|
||||
{
|
||||
return await ToDel(userId, goodsId);
|
||||
}
|
||||
else
|
||||
{
|
||||
return await ToAdd(userId, goodsId);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 取消收藏
|
||||
/// </summary>
|
||||
/// <param name="userId"></param>
|
||||
/// <param name="goodsId"></param>
|
||||
/// <returns></returns>
|
||||
private async Task<WebApiCallBack> ToDel(int userId, int goodsId)
|
||||
{
|
||||
var jm = new WebApiCallBack() { status = true, msg = "取消收藏成功" };
|
||||
await _dal.DeleteAsync(p => p.userId == userId && p.goodsId == goodsId);
|
||||
return jm;
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 收藏
|
||||
/// </summary>
|
||||
/// <param name="userId"></param>
|
||||
/// <param name="goodsId"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<WebApiCallBack> ToAdd(int userId, int goodsId)
|
||||
{
|
||||
return await _dal.ToAdd(userId, goodsId);
|
||||
}
|
||||
}
|
||||
}
|
||||
238
CoreCms.Net.Services/Good/CoreCmsGoodsCommentServices.cs
Normal file
238
CoreCms.Net.Services/Good/CoreCmsGoodsCommentServices.cs
Normal file
@@ -0,0 +1,238 @@
|
||||
/***********************************************************************
|
||||
* 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.Generic;
|
||||
using System.Linq;
|
||||
using System.Linq.Expressions;
|
||||
using System.Threading.Tasks;
|
||||
using CoreCms.Net.Configuration;
|
||||
using CoreCms.Net.IRepository;
|
||||
using CoreCms.Net.IRepository.UnitOfWork;
|
||||
using CoreCms.Net.IServices;
|
||||
using CoreCms.Net.Loging;
|
||||
using CoreCms.Net.Model.Entities;
|
||||
using CoreCms.Net.Model.ViewModels.Basics;
|
||||
using CoreCms.Net.Model.ViewModels.UI;
|
||||
using CoreCms.Net.Model.ViewModels.DTO;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.Extensions.Hosting;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using SqlSugar;
|
||||
using ToolGood.Words;
|
||||
|
||||
|
||||
namespace CoreCms.Net.Services
|
||||
{
|
||||
/// <summary>
|
||||
/// 商品评价表 接口实现
|
||||
/// </summary>
|
||||
public class CoreCmsGoodsCommentServices : BaseServices<CoreCmsGoodsComment>, ICoreCmsGoodsCommentServices
|
||||
{
|
||||
private readonly ICoreCmsGoodsCommentRepository _dal;
|
||||
private readonly IUnitOfWork _unitOfWork;
|
||||
private readonly IServiceProvider _serviceProvider;
|
||||
private readonly IToolsServices _toolsServices;
|
||||
public CoreCmsGoodsCommentServices(IUnitOfWork unitOfWork, ICoreCmsGoodsCommentRepository dal,
|
||||
IServiceProvider serviceProvider, IToolsServices toolsServices)
|
||||
{
|
||||
this._dal = dal;
|
||||
base.BaseDal = dal;
|
||||
_unitOfWork = unitOfWork;
|
||||
_serviceProvider = serviceProvider;
|
||||
_toolsServices = toolsServices;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 添加一条评论
|
||||
/// </summary>
|
||||
/// <param name="orderId">订单号</param>
|
||||
/// <param name="items">评价数据</param>
|
||||
/// <param name="userId">用户序列</param>
|
||||
/// <returns></returns>
|
||||
public async Task<WebApiCallBack> AddComment(string orderId, List<OrderEvaluatePostItems> items, int userId)
|
||||
{
|
||||
var jm = new WebApiCallBack();
|
||||
|
||||
using var container = _serviceProvider.CreateScope();
|
||||
|
||||
var orderServices = container.ServiceProvider.GetService<ICoreCmsOrderServices>();
|
||||
var orderItemServices = container.ServiceProvider.GetService<ICoreCmsOrderItemServices>();
|
||||
var goodsServices = container.ServiceProvider.GetService<ICoreCmsGoodsServices>();
|
||||
|
||||
//判断这个订单是否可以评价
|
||||
var res = await orderServices.IsOrderComment(orderId, userId);
|
||||
if (!res.status)
|
||||
{
|
||||
//已经评价或者存在问题
|
||||
return res;
|
||||
}
|
||||
var goodComments = new List<CoreCmsGoodsComment>();
|
||||
var gid = new List<int>();
|
||||
|
||||
|
||||
|
||||
|
||||
foreach (var item in items)
|
||||
{
|
||||
//判断此条记录是否是此订单下面的
|
||||
var itemInfo = await orderItemServices.QueryByClauseAsync(p => p.id == item.orderItemId && p.orderId == orderId);
|
||||
if (itemInfo == null)
|
||||
{
|
||||
//说明没有此条记录,就不需要评论了
|
||||
continue;
|
||||
}
|
||||
var score = 5;
|
||||
if (item.score >= 1 && item.score <= 5)
|
||||
{
|
||||
score = item.score;
|
||||
}
|
||||
var images = string.Empty;
|
||||
if (item.images.Any())
|
||||
{
|
||||
images = string.Join(",", item.images);
|
||||
}
|
||||
|
||||
//过滤违规字符串
|
||||
item.textarea = await _toolsServices.IllegalWordsReplace(item.textarea);
|
||||
|
||||
var commentModel = new CoreCmsGoodsComment
|
||||
{
|
||||
commentId = 0,
|
||||
score = score,
|
||||
userId = userId,
|
||||
goodsId = itemInfo.goodsId,
|
||||
orderId = orderId,
|
||||
images = images,
|
||||
contentBody = item.textarea,
|
||||
addon = itemInfo.addon,
|
||||
isDisplay = false,
|
||||
createTime = DateTime.Now
|
||||
};
|
||||
goodComments.Add(commentModel);
|
||||
gid.Add(itemInfo.goodsId);
|
||||
}
|
||||
|
||||
await _dal.InsertAsync(goodComments);
|
||||
//商品表更新评论数量
|
||||
await goodsServices.UpdateAsync(p => new CoreCmsGoods() { commentsCount = p.commentsCount + 1 },
|
||||
p => gid.Contains(p.id));
|
||||
//修改评价状态
|
||||
await orderServices.UpdateAsync(p => new CoreCmsOrder() { isComment = true }, p => p.orderId == orderId);
|
||||
|
||||
jm.status = true;
|
||||
jm.msg = "评价成功";
|
||||
|
||||
return jm;
|
||||
}
|
||||
|
||||
|
||||
#region 实现重写增删改查操作==========================================================
|
||||
|
||||
/// <summary>
|
||||
/// 重写异步插入方法
|
||||
/// </summary>
|
||||
/// <param name="entity">实体数据</param>
|
||||
/// <returns></returns>
|
||||
public new async Task<AdminUiCallBack> InsertAsync(CoreCmsGoodsComment entity)
|
||||
{
|
||||
return await _dal.InsertAsync(entity);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 重写异步更新方法方法
|
||||
/// </summary>
|
||||
/// <param name="entity"></param>
|
||||
/// <returns></returns>
|
||||
public new async Task<AdminUiCallBack> UpdateAsync(CoreCmsGoodsComment entity)
|
||||
{
|
||||
return await _dal.UpdateAsync(entity);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 重写异步更新方法方法
|
||||
/// </summary>
|
||||
/// <param name="entity"></param>
|
||||
/// <returns></returns>
|
||||
public new async Task<AdminUiCallBack> UpdateAsync(List<CoreCmsGoodsComment> entity)
|
||||
{
|
||||
return await _dal.UpdateAsync(entity);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 重写删除指定ID的数据
|
||||
/// </summary>
|
||||
/// <param name="id"></param>
|
||||
/// <returns></returns>
|
||||
public new async Task<AdminUiCallBack> DeleteByIdAsync(object id)
|
||||
{
|
||||
return await _dal.DeleteByIdAsync(id);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 重写删除指定ID集合的数据(批量删除)
|
||||
/// </summary>
|
||||
/// <param name="ids"></param>
|
||||
/// <returns></returns>
|
||||
public new async Task<AdminUiCallBack> DeleteByIdsAsync(int[] ids)
|
||||
{
|
||||
return await _dal.DeleteByIdsAsync(ids);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
/// <summary>
|
||||
/// 商家回复评价
|
||||
/// </summary>
|
||||
/// <param name="id">序列</param>
|
||||
/// <param name="sellerContent">回复内容</param>
|
||||
/// <returns></returns>
|
||||
public async Task<AdminUiCallBack> Reply(int id, string sellerContent)
|
||||
{
|
||||
return await _dal.Reply(id, sellerContent);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取单个详情数据
|
||||
/// </summary>
|
||||
/// <param name="predicate">判断集合</param>
|
||||
/// <param name="orderByType">排序方式</param>
|
||||
/// <param name="orderByExpression"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<CoreCmsGoodsComment> DetailsByIdAsync(Expression<Func<CoreCmsGoodsComment, bool>> predicate,
|
||||
Expression<Func<CoreCmsGoodsComment, object>> orderByExpression, OrderByType orderByType)
|
||||
{
|
||||
return await _dal.DetailsByIdAsync(predicate, orderByExpression, orderByType);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
#region 重写根据条件查询分页数据
|
||||
/// <summary>
|
||||
/// 重写根据条件查询分页数据
|
||||
/// </summary>
|
||||
/// <param name="predicate">判断集合</param>
|
||||
/// <param name="orderByType">排序方式</param>
|
||||
/// <param name="pageIndex">当前页面索引</param>
|
||||
/// <param name="pageSize">分布大小</param>
|
||||
/// <param name="orderByExpression"></param>
|
||||
/// <param name="blUseNoLock">是否使用WITH(NOLOCK)</param>
|
||||
/// <returns></returns>
|
||||
public new async Task<IPageList<CoreCmsGoodsComment>> QueryPageAsync(Expression<Func<CoreCmsGoodsComment, bool>> predicate,
|
||||
Expression<Func<CoreCmsGoodsComment, object>> orderByExpression, OrderByType orderByType, int pageIndex = 1,
|
||||
int pageSize = 20, bool blUseNoLock = false)
|
||||
{
|
||||
return await _dal.QueryPageAsync(predicate, orderByExpression, orderByType, pageIndex, pageSize, blUseNoLock);
|
||||
}
|
||||
#endregion
|
||||
|
||||
}
|
||||
}
|
||||
39
CoreCms.Net.Services/Good/CoreCmsGoodsGradeServices.cs
Normal file
39
CoreCms.Net.Services/Good/CoreCmsGoodsGradeServices.cs
Normal file
@@ -0,0 +1,39 @@
|
||||
/***********************************************************************
|
||||
* 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
|
||||
{
|
||||
/// <summary>
|
||||
/// 商品会员价表 接口实现
|
||||
/// </summary>
|
||||
public class CoreCmsGoodsGradeServices : BaseServices<CoreCmsGoodsGrade>, ICoreCmsGoodsGradeServices
|
||||
{
|
||||
private readonly ICoreCmsGoodsGradeRepository _dal;
|
||||
private readonly IUnitOfWork _unitOfWork;
|
||||
public CoreCmsGoodsGradeServices(IUnitOfWork unitOfWork, ICoreCmsGoodsGradeRepository dal)
|
||||
{
|
||||
this._dal = dal;
|
||||
base.BaseDal = dal;
|
||||
_unitOfWork = unitOfWork;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
39
CoreCms.Net.Services/Good/CoreCmsGoodsParamsServices.cs
Normal file
39
CoreCms.Net.Services/Good/CoreCmsGoodsParamsServices.cs
Normal file
@@ -0,0 +1,39 @@
|
||||
/***********************************************************************
|
||||
* 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
|
||||
{
|
||||
/// <summary>
|
||||
/// 商品参数表 接口实现
|
||||
/// </summary>
|
||||
public class CoreCmsGoodsParamsServices : BaseServices<CoreCmsGoodsParams>, ICoreCmsGoodsParamsServices
|
||||
{
|
||||
private readonly ICoreCmsGoodsParamsRepository _dal;
|
||||
private readonly IUnitOfWork _unitOfWork;
|
||||
public CoreCmsGoodsParamsServices(IUnitOfWork unitOfWork, ICoreCmsGoodsParamsRepository dal)
|
||||
{
|
||||
this._dal = dal;
|
||||
base.BaseDal = dal;
|
||||
_unitOfWork = unitOfWork;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
684
CoreCms.Net.Services/Good/CoreCmsGoodsServices.cs
Normal file
684
CoreCms.Net.Services/Good/CoreCmsGoodsServices.cs
Normal file
@@ -0,0 +1,684 @@
|
||||
/***********************************************************************
|
||||
* 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.Generic;
|
||||
using System.Linq;
|
||||
using System.Linq.Expressions;
|
||||
using System.Threading.Tasks;
|
||||
using CoreCms.Net.Configuration;
|
||||
using CoreCms.Net.IRepository;
|
||||
using CoreCms.Net.IRepository.UnitOfWork;
|
||||
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.Basics;
|
||||
using CoreCms.Net.Model.ViewModels.UI;
|
||||
using CoreCms.Net.Utility.Extensions;
|
||||
using CoreCms.Net.Utility.Helper;
|
||||
using Newtonsoft.Json;
|
||||
using SqlSugar;
|
||||
|
||||
|
||||
namespace CoreCms.Net.Services
|
||||
{
|
||||
/// <summary>
|
||||
/// 商品表 接口实现
|
||||
/// </summary>
|
||||
public class CoreCmsGoodsServices : BaseServices<CoreCmsGoods>, ICoreCmsGoodsServices
|
||||
{
|
||||
private readonly ICoreCmsGoodsRepository _dal;
|
||||
private readonly IUnitOfWork _unitOfWork;
|
||||
private readonly ICoreCmsProductsServices _productsServices;
|
||||
private readonly ICoreCmsGoodsGradeServices _goodsGradeServices;
|
||||
private readonly ICoreCmsLabelServices _labelServices;
|
||||
private readonly ICoreCmsPromotionServices _promotionServices;
|
||||
private readonly ICoreCmsGoodsCollectionServices _goodsCollectionServices;
|
||||
private readonly ICoreCmsBrandServices _brandServices;
|
||||
private readonly ICoreCmsOrderItemServices _orderItemServices;
|
||||
|
||||
public CoreCmsGoodsServices(IUnitOfWork unitOfWork, ICoreCmsGoodsRepository dal
|
||||
, ICoreCmsProductsServices productsServices
|
||||
, ICoreCmsGoodsGradeServices goodsGradeServices
|
||||
, ICoreCmsLabelServices labelServices
|
||||
, ICoreCmsPromotionServices promotionServices
|
||||
, ICoreCmsGoodsCollectionServices goodsCollectionServices
|
||||
, ICoreCmsBrandServices brandServices
|
||||
, ICoreCmsOrderItemServices orderItemServices
|
||||
)
|
||||
{
|
||||
this._dal = dal;
|
||||
base.BaseDal = dal;
|
||||
_unitOfWork = unitOfWork;
|
||||
_productsServices = productsServices;
|
||||
_goodsGradeServices = goodsGradeServices;
|
||||
_labelServices = labelServices;
|
||||
_promotionServices = promotionServices;
|
||||
_goodsCollectionServices = goodsCollectionServices;
|
||||
_brandServices = brandServices;
|
||||
_orderItemServices = orderItemServices;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 重写异步插入方法
|
||||
/// </summary>
|
||||
/// <param name="entity">实体数据</param>
|
||||
/// <returns></returns>
|
||||
public async Task<AdminUiCallBack> InsertAsync(FMGoodsInsertModel entity)
|
||||
{
|
||||
return await _dal.InsertAsync(entity);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 重写异步更新方法方法
|
||||
/// </summary>
|
||||
/// <param name="entity"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<AdminUiCallBack> UpdateAsync(FMGoodsInsertModel entity)
|
||||
{
|
||||
return await _dal.UpdateAsync(entity);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 重写删除指定ID集合的数据(批量删除)
|
||||
/// </summary>
|
||||
/// <param name="ids"></param>
|
||||
/// <returns></returns>
|
||||
public new async Task<AdminUiCallBack> DeleteByIdsAsync(int[] ids)
|
||||
{
|
||||
return await _dal.DeleteByIdsAsync(ids);
|
||||
}
|
||||
|
||||
|
||||
#region 批量修改价格==========================================
|
||||
/// <summary>
|
||||
/// 批量修改价格
|
||||
/// </summary>
|
||||
/// <param name="entity"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<AdminUiCallBack> DoBatchModifyPrice(FmBatchModifyPrice entity)
|
||||
{
|
||||
var jm = new AdminUiCallBack();
|
||||
|
||||
var bl = false;
|
||||
//获取商品信息
|
||||
var goods = await base.BaseDal.QueryListByClauseAsync(p => entity.ids.Contains(p.id));
|
||||
if (!goods.Any())
|
||||
{
|
||||
jm.msg = GlobalConstVars.DataisNo;
|
||||
return jm;
|
||||
}
|
||||
var goodIds = goods.Select(p => p.id).ToList();
|
||||
//获取货品信息
|
||||
var products = await _productsServices.QueryListByClauseAsync(p => goodIds.Contains((int)p.goodsId));
|
||||
var productIds = products.Select(p => p.id).ToList();
|
||||
//获取自定义价格信息
|
||||
var goodsGrade = await _goodsGradeServices.QueryListByClauseAsync(p => goodIds.Contains(p.goodsId));
|
||||
var goodsGradeIds = goodsGrade.Select(p => p.id).ToList();
|
||||
|
||||
var priceValue = entity.priceValue;
|
||||
|
||||
switch (entity.modifyType)
|
||||
{
|
||||
case "=":
|
||||
if (entity.priceType == GlobalEnumVars.PriceType.price.ToString())
|
||||
{
|
||||
bl = await _productsServices.UpdateAsync(p => new CoreCmsProducts() { price = priceValue }, p => goodIds.Contains((int)p.goodsId) && p.isDel == false);
|
||||
}
|
||||
else if (entity.priceType == GlobalEnumVars.PriceType.costprice.ToString())
|
||||
{
|
||||
bl = await _productsServices.UpdateAsync(p => new CoreCmsProducts() { costprice = priceValue }, p => goodIds.Contains((int)p.goodsId) && p.isDel == false);
|
||||
}
|
||||
else if (entity.priceType == GlobalEnumVars.PriceType.mktprice.ToString())
|
||||
{
|
||||
bl = await _productsServices.UpdateAsync(p => new CoreCmsProducts() { mktprice = priceValue }, p => goodIds.Contains((int)p.goodsId) && p.isDel == false);
|
||||
}
|
||||
else if (entity.priceType.Contains("grade_price_"))
|
||||
{
|
||||
var gradeArr = entity.priceType.Split("_");
|
||||
var goodsGradeId = Convert.ToInt16(gradeArr[2]);
|
||||
if (goodsGradeId > 0)
|
||||
{
|
||||
bl = await _goodsGradeServices.UpdateAsync(p => new CoreCmsGoodsGrade { gradePrice = priceValue }, p => goodsGradeIds.Contains(p.id) && p.gradeId == goodsGradeId);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case "-":
|
||||
if (entity.priceType == GlobalEnumVars.PriceType.price.ToString())
|
||||
{
|
||||
bl = await _productsServices.UpdateAsync(p => new CoreCmsProducts() { price = p.price - priceValue }, p => goodIds.Contains((int)p.goodsId) && p.isDel == false);
|
||||
}
|
||||
else if (entity.priceType == GlobalEnumVars.PriceType.costprice.ToString())
|
||||
{
|
||||
bl = await _productsServices.UpdateAsync(p => new CoreCmsProducts() { costprice = p.costprice - priceValue }, p => goodIds.Contains((int)p.goodsId) && p.isDel == false);
|
||||
}
|
||||
else if (entity.priceType == GlobalEnumVars.PriceType.mktprice.ToString())
|
||||
{
|
||||
bl = await _productsServices.UpdateAsync(p => new CoreCmsProducts() { mktprice = p.mktprice - priceValue }, p => goodIds.Contains((int)p.goodsId) && p.isDel == false);
|
||||
}
|
||||
else if (entity.priceType.Contains("grade_price_"))
|
||||
{
|
||||
var gradeArr = entity.priceType.Split("_");
|
||||
var goodsGradeId = Convert.ToInt16(gradeArr[2]);
|
||||
if (goodsGradeId > 0)
|
||||
{
|
||||
bl = await _goodsGradeServices.UpdateAsync(p => new CoreCmsGoodsGrade { gradePrice = p.gradePrice - priceValue }, p => goodsGradeIds.Contains(p.id) && p.gradeId == goodsGradeId);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case "+":
|
||||
if (entity.priceType == GlobalEnumVars.PriceType.price.ToString())
|
||||
{
|
||||
bl = await _productsServices.UpdateAsync(p => new CoreCmsProducts() { price = p.price + priceValue }, p => goodIds.Contains((int)p.goodsId) && p.isDel == false);
|
||||
}
|
||||
else if (entity.priceType == GlobalEnumVars.PriceType.costprice.ToString())
|
||||
{
|
||||
bl = await _productsServices.UpdateAsync(p => new CoreCmsProducts() { costprice = p.costprice + priceValue }, p => goodIds.Contains((int)p.goodsId) && p.isDel == false);
|
||||
}
|
||||
else if (entity.priceType == GlobalEnumVars.PriceType.mktprice.ToString())
|
||||
{
|
||||
bl = await _productsServices.UpdateAsync(p => new CoreCmsProducts() { mktprice = p.mktprice + priceValue }, p => goodIds.Contains((int)p.goodsId) && p.isDel == false);
|
||||
}
|
||||
else if (entity.priceType.Contains("grade_price_"))
|
||||
{
|
||||
var gradeArr = entity.priceType.Split("_");
|
||||
var goodsGradeId = Convert.ToInt16(gradeArr[2]);
|
||||
if (goodsGradeId > 0)
|
||||
{
|
||||
bl = await _goodsGradeServices.UpdateAsync(p => new CoreCmsGoodsGrade { gradePrice = p.gradePrice + priceValue }, p => goodsGradeIds.Contains(p.id) && p.gradeId == goodsGradeId);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case "*":
|
||||
if (entity.priceType == GlobalEnumVars.PriceType.price.ToString())
|
||||
{
|
||||
bl = await _productsServices.UpdateAsync(p => new CoreCmsProducts() { price = p.price * priceValue }, p => goodIds.Contains((int)p.goodsId) && p.isDel == false);
|
||||
}
|
||||
else if (entity.priceType == GlobalEnumVars.PriceType.costprice.ToString())
|
||||
{
|
||||
bl = await _productsServices.UpdateAsync(p => new CoreCmsProducts() { costprice = p.costprice * priceValue }, p => goodIds.Contains((int)p.goodsId) && p.isDel == false);
|
||||
}
|
||||
else if (entity.priceType == GlobalEnumVars.PriceType.mktprice.ToString())
|
||||
{
|
||||
bl = await _productsServices.UpdateAsync(p => new CoreCmsProducts() { mktprice = p.mktprice * priceValue }, p => goodIds.Contains((int)p.goodsId) && p.isDel == false);
|
||||
}
|
||||
else if (entity.priceType.Contains("grade_price_"))
|
||||
{
|
||||
var gradeArr = entity.priceType.Split("_");
|
||||
var goodsGradeId = Convert.ToInt16(gradeArr[2]);
|
||||
if (goodsGradeId > 0)
|
||||
{
|
||||
bl = await _goodsGradeServices.UpdateAsync(p => new CoreCmsGoodsGrade { gradePrice = p.gradePrice * priceValue }, p => goodsGradeIds.Contains(p.id) && p.gradeId == goodsGradeId);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
jm.code = bl ? 0 : 1;
|
||||
jm.msg = bl ? "价格修改成功" : "价格修改失败";
|
||||
|
||||
return jm;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region 批量修改库存==========================================
|
||||
/// <summary>
|
||||
/// 批量修改价格
|
||||
/// </summary>
|
||||
/// <param name="entity"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<AdminUiCallBack> DoBatchModifyStock(FmBatchModifyStock entity)
|
||||
{
|
||||
var jm = new AdminUiCallBack();
|
||||
|
||||
var bl = false;
|
||||
//获取商品信息
|
||||
var goods = await base.BaseDal.QueryListByClauseAsync(p => entity.ids.Contains(p.id));
|
||||
if (!goods.Any())
|
||||
{
|
||||
jm.msg = GlobalConstVars.DataisNo;
|
||||
return jm;
|
||||
}
|
||||
var goodIds = goods.Select(p => p.id).ToList();
|
||||
|
||||
var modifyValue = entity.modifyValue;
|
||||
|
||||
switch (entity.modifyType)
|
||||
{
|
||||
case "=":
|
||||
bl = await _productsServices.UpdateAsync(p => new CoreCmsProducts() { stock = modifyValue }, p => goodIds.Contains((int)p.goodsId) && p.isDel == false);
|
||||
break;
|
||||
case "-":
|
||||
bl = await _productsServices.UpdateAsync(p => new CoreCmsProducts() { stock = p.stock - modifyValue }, p => goodIds.Contains((int)p.goodsId) && p.isDel == false);
|
||||
break;
|
||||
case "+":
|
||||
bl = await _productsServices.UpdateAsync(p => new CoreCmsProducts() { stock = p.stock + modifyValue }, p => goodIds.Contains((int)p.goodsId) && p.isDel == false);
|
||||
break;
|
||||
case "*":
|
||||
bl = await _productsServices.UpdateAsync(p => new CoreCmsProducts() { stock = p.stock * modifyValue }, p => goodIds.Contains((int)p.goodsId) && p.isDel == false);
|
||||
break;
|
||||
}
|
||||
jm.code = bl ? 0 : 1;
|
||||
jm.msg = bl ? "库存修改成功" : "库存修改失败";
|
||||
|
||||
return jm;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region 批量上架==========================================
|
||||
|
||||
/// <summary>
|
||||
/// 批量上架
|
||||
/// </summary>
|
||||
/// <param name="ids"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<AdminUiCallBack> DoBatchMarketableUp(int[] ids)
|
||||
{
|
||||
var jm = new AdminUiCallBack();
|
||||
|
||||
var bl = await _dal.UpdateAsync(p => new CoreCmsGoods() { isMarketable = true }, p => ids.Contains(p.id));
|
||||
jm.code = bl ? 0 : 1;
|
||||
jm.msg = bl ? "上架成功" : "上架失败";
|
||||
|
||||
return jm;
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region 批量下架==========================================
|
||||
|
||||
/// <summary>
|
||||
/// 批量下架
|
||||
/// </summary>
|
||||
/// <param name="ids"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<AdminUiCallBack> DoBatchMarketableDown(int[] ids)
|
||||
{
|
||||
var jm = new AdminUiCallBack();
|
||||
|
||||
var bl = await base.BaseDal.UpdateAsync(p => new CoreCmsGoods() { isMarketable = false }, p => ids.Contains(p.id));
|
||||
jm.code = bl ? 0 : 1;
|
||||
jm.msg = bl ? "下架成功" : "下架失败";
|
||||
|
||||
return jm;
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region 设置标签==========================================
|
||||
|
||||
/// <summary>
|
||||
/// 设置标签
|
||||
/// </summary>
|
||||
/// <param name="entity"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<AdminUiCallBack> DoSetLabel(FmSetLabel entity)
|
||||
{
|
||||
var jm = new AdminUiCallBack();
|
||||
|
||||
|
||||
var names = entity.labels.Select(p => p.text).ToList();
|
||||
//获取已经存在数据库数据
|
||||
var olds = await _labelServices.QueryListByClauseAsync(p => names.Contains(p.name));
|
||||
if (olds.Any())
|
||||
{
|
||||
var oldNames = olds.Select(p => p.name).ToList();
|
||||
//获取未插入数据库数据
|
||||
var newNames = entity.labels.Where(p => !oldNames.Contains(p.text)).ToList();
|
||||
if (newNames.Any())
|
||||
{
|
||||
var labels = new List<CoreCmsLabel>();
|
||||
newNames.ForEach(p =>
|
||||
{
|
||||
labels.Add(new CoreCmsLabel()
|
||||
{
|
||||
name = p.text,
|
||||
style = p.style
|
||||
});
|
||||
});
|
||||
await _labelServices.InsertAsync(labels);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
var labels = new List<CoreCmsLabel>();
|
||||
entity.labels.ForEach(p =>
|
||||
{
|
||||
labels.Add(new CoreCmsLabel()
|
||||
{
|
||||
name = p.text,
|
||||
style = p.style
|
||||
});
|
||||
});
|
||||
await _labelServices.InsertAsync(labels);
|
||||
}
|
||||
|
||||
var items = await _labelServices.QueryListByClauseAsync(p => names.Contains(p.name));
|
||||
var idsInts = items.Select(p => p.id).ToArray();
|
||||
var ids = String.Join(",", idsInts);
|
||||
|
||||
var bl = await base.BaseDal.UpdateAsync(p => new CoreCmsGoods() { labelIds = ids }, p => entity.ids.Contains(p.id));
|
||||
|
||||
jm.code = bl ? 0 : 1;
|
||||
jm.msg = bl ? "设置成功" : "设置失败";
|
||||
|
||||
return jm;
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region 取消标签==========================================
|
||||
|
||||
/// <summary>
|
||||
/// 取消标签
|
||||
/// </summary>
|
||||
/// <param name="entity"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<AdminUiCallBack> DoDeleteLabel(FmSetLabel entity)
|
||||
{
|
||||
var jm = new AdminUiCallBack();
|
||||
|
||||
var names = entity.labels.Select(p => p.text).ToList();
|
||||
//获取已经存在数据库数据
|
||||
var labels = await _labelServices.QueryListByClauseAsync(p => names.Contains(p.name));
|
||||
var labelIds = labels.Select(p => p.id).ToList();
|
||||
|
||||
var goods = await base.QueryListByClauseAsync(p => entity.ids.Contains(p.id));
|
||||
goods.ForEach(p =>
|
||||
{
|
||||
if (!string.IsNullOrEmpty(p.labelIds))
|
||||
{
|
||||
var ids = CommonHelper.StringToIntArray(p.labelIds);
|
||||
var newIds = ids.Except(labelIds).ToList();
|
||||
if (newIds.Any())
|
||||
{
|
||||
p.labelIds = String.Join(",", newIds);
|
||||
}
|
||||
else
|
||||
{
|
||||
p.labelIds = "";
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
var bl = await base.UpdateAsync(goods);
|
||||
|
||||
jm.code = bl ? 0 : 1;
|
||||
jm.msg = bl ? "设置成功" : "设置失败";
|
||||
|
||||
|
||||
return jm;
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region 判断商品是否参加团购或者秒杀
|
||||
|
||||
public bool IsInGroup(int goodId, out CoreCmsPromotion promotionsModel, int promotionId = 0)
|
||||
{
|
||||
promotionsModel = new CoreCmsPromotion();
|
||||
if (goodId == 0)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
var dt = DateTime.Now;
|
||||
var where = PredicateBuilder.True<CoreCmsPromotion>();
|
||||
where = where.And(p => p.isEnable == true);
|
||||
if (promotionId > 0)
|
||||
{
|
||||
where = where.And(p => p.id == promotionId);
|
||||
}
|
||||
where = where.And(p =>
|
||||
(p.type == (int)GlobalEnumVars.PromotionType.Group ||
|
||||
p.type == (int)GlobalEnumVars.PromotionType.Seckill));
|
||||
where = where.And(p => p.startTime < dt || p.endTime > dt);
|
||||
where = where.And(p => p.isDel == false);
|
||||
|
||||
var promotions = _promotionServices.QueryByClause(where);
|
||||
if (promotions == null) return false;
|
||||
|
||||
try
|
||||
{
|
||||
if (string.IsNullOrEmpty(promotions.parameters)) return false;
|
||||
var obj = JsonConvert.DeserializeAnonymousType(promotions.parameters, new
|
||||
{
|
||||
goodsId = "",
|
||||
num = 0,
|
||||
});
|
||||
if (obj.goodsId.ObjectToInt(0) != goodId) return false;
|
||||
promotionsModel = promotions;
|
||||
return true;
|
||||
}
|
||||
catch
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region 获取商品重量
|
||||
|
||||
/// <summary>
|
||||
/// 获取商品重量
|
||||
/// </summary>
|
||||
/// <param name="productsId"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<decimal> GetWeight(int productsId)
|
||||
{
|
||||
return await _dal.GetWeight(productsId);
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region 库存改变机制
|
||||
/// <summary>
|
||||
/// 库存改变机制。
|
||||
/// 库存机制:商品下单 总库存不变,冻结库存加1,
|
||||
/// 商品发货:冻结库存减1,总库存减1,
|
||||
/// 订单完成但未发货:总库存不变,冻结库存减1
|
||||
/// 商品退款&取消订单:总库存不变,冻结库存减1,
|
||||
/// 商品退货:总库存加1,冻结库存不变,
|
||||
/// 可销售库存:总库存-冻结库存
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public WebApiCallBack ChangeStock(int productsId, string type = "order", int num = 0)
|
||||
{
|
||||
|
||||
return _dal.ChangeStock(productsId, type, num);
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region 获取商品详情
|
||||
|
||||
/// <summary>
|
||||
/// 获取商品详情
|
||||
/// </summary>
|
||||
/// <param name="id"></param>
|
||||
/// <param name="userId"></param>
|
||||
/// <param name="isPromotion">是否涉及优惠</param>
|
||||
/// <param name="type"></param>
|
||||
/// <param name="groupId"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<CoreCmsGoods> GetGoodsDetial(int id, int userId = 0, bool isPromotion = false, string type = "goods", int groupId = 0)
|
||||
{
|
||||
var model = await _dal.QueryByIdAsync(id);
|
||||
if (model == null) return null;
|
||||
//取图片集
|
||||
var album = model.images.Split(",");
|
||||
model.image = !string.IsNullOrEmpty(model.image) ? model.image : "/static/images/common/empty-banner.png";
|
||||
model.album = album;
|
||||
//label_ids
|
||||
//获取用户信息
|
||||
if (userId > 0)
|
||||
{
|
||||
model.isFav = await _goodsCollectionServices.ExistsAsync(p => p.goodsId == model.id && p.userId == userId);
|
||||
}
|
||||
//取默认货品
|
||||
var products = await _productsServices.QueryByClauseAsync(p => p.goodsId == model.id && p.isDefalut == true && p.isDel == false);
|
||||
if (products == null) return null;
|
||||
var getProductInfo = await _productsServices.GetProductInfo(products.id, isPromotion, userId, type, groupId);
|
||||
if (getProductInfo == null) return null;
|
||||
|
||||
model.product = getProductInfo;
|
||||
|
||||
model.sn = getProductInfo.sn;
|
||||
model.price = getProductInfo.price;
|
||||
model.costprice = getProductInfo.costprice;
|
||||
model.mktprice = getProductInfo.mktprice;
|
||||
model.stock = getProductInfo.stock;
|
||||
model.freezeStock = getProductInfo.freezeStock;
|
||||
model.weight = getProductInfo.weight;
|
||||
|
||||
//获取品牌
|
||||
var brand = await _brandServices.QueryByIdAsync(model.brandId);
|
||||
model.brand = brand;
|
||||
|
||||
//取出销量
|
||||
model.buyCount = await _orderItemServices.GetCountAsync(p => p.goodsId == model.id);
|
||||
return model;
|
||||
}
|
||||
#endregion
|
||||
|
||||
|
||||
#region 获取随机推荐数据
|
||||
|
||||
/// <summary>
|
||||
/// 获取随机推荐数据
|
||||
/// </summary>
|
||||
/// <param name="number"></param>
|
||||
/// <param name="isRecommend"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<List<CoreCmsGoods>> GetGoodsRecommendList(int number, bool isRecommend = false)
|
||||
{
|
||||
return await _dal.GetGoodsRecommendList(number, isRecommend);
|
||||
}
|
||||
#endregion
|
||||
|
||||
|
||||
#region 获取数据总数
|
||||
/// <summary>
|
||||
/// 获取数据总数
|
||||
/// </summary>
|
||||
/// <param name="predicate">条件表达式树</param>
|
||||
/// <param name="blUseNoLock">是否使用WITH(NOLOCK)</param>
|
||||
/// <returns></returns>
|
||||
public new async Task<int> GetCountAsync(Expression<Func<CoreCmsGoods, bool>> predicate, bool blUseNoLock = false)
|
||||
{
|
||||
return await _dal.GetCountAsync(predicate, blUseNoLock);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region 重写根据条件查询分页数据
|
||||
/// <summary>
|
||||
/// 重写根据条件查询分页数据
|
||||
/// </summary>
|
||||
/// <param name="predicate">判断集合</param>
|
||||
/// <param name="orderByType">排序方式</param>
|
||||
/// <param name="pageIndex">当前页面索引</param>
|
||||
/// <param name="pageSize">分布大小</param>
|
||||
/// <param name="orderByExpression"></param>
|
||||
/// <param name="blUseNoLock">是否使用WITH(NOLOCK)</param>
|
||||
/// <returns></returns>
|
||||
public new async Task<IPageList<CoreCmsGoods>> QueryPageAsync(Expression<Func<CoreCmsGoods, bool>> predicate,
|
||||
Expression<Func<CoreCmsGoods, object>> orderByExpression, OrderByType orderByType, int pageIndex = 1,
|
||||
int pageSize = 20, bool blUseNoLock = false)
|
||||
{
|
||||
return await _dal.QueryPageAsync(predicate, orderByExpression, orderByType, pageIndex, pageSize, blUseNoLock);
|
||||
}
|
||||
#endregion
|
||||
|
||||
|
||||
#region 重写根据条件查询一定数量数据
|
||||
/// <summary>
|
||||
/// 重写根据条件查询一定数量数据
|
||||
/// </summary>
|
||||
/// <param name="predicate">条件表达式树</param>
|
||||
/// <param name="take">获取数量</param>
|
||||
/// <param name="orderByPredicate">排序字段</param>
|
||||
/// <param name="orderByType">排序顺序</param>
|
||||
/// <param name="blUseNoLock">是否使用WITH(NOLOCK)</param>
|
||||
/// <returns></returns>
|
||||
public new async Task<List<CoreCmsGoods>> QueryListByClauseAsync(Expression<Func<CoreCmsGoods, bool>> predicate, int take,
|
||||
Expression<Func<CoreCmsGoods, object>> orderByPredicate, OrderByType orderByType, bool blUseNoLock = false)
|
||||
{
|
||||
return await _dal.QueryListByClauseAsync(predicate, take, orderByPredicate, orderByType, blUseNoLock);
|
||||
}
|
||||
#endregion
|
||||
|
||||
|
||||
|
||||
#region 重写根据条件查询数据
|
||||
/// <summary>
|
||||
/// 重写根据条件查询数据
|
||||
/// </summary>
|
||||
/// <param name="predicate">条件表达式树</param>
|
||||
/// <param name="orderBy">排序字段,如name asc,age desc</param>
|
||||
/// <param name="blUseNoLock">是否使用WITH(NOLOCK)</param>
|
||||
/// <returns>泛型实体集合</returns>
|
||||
public new async Task<List<CoreCmsGoods>> QueryListByClauseAsync(Expression<Func<CoreCmsGoods, bool>> predicate, string orderBy = "",
|
||||
bool blUseNoLock = false)
|
||||
{
|
||||
return await _dal.QueryListByClauseAsync(predicate, orderBy, blUseNoLock);
|
||||
}
|
||||
#endregion
|
||||
|
||||
|
||||
#region 重写根据条件查询分页数据
|
||||
/// <summary>
|
||||
/// 重写根据条件查询分页数据
|
||||
/// </summary>
|
||||
/// <param name="predicate"></param>
|
||||
/// <param name="orderBy"></param>
|
||||
/// <param name="pageIndex">当前页面索引</param>
|
||||
/// <param name="pageSize">分布大小</param>
|
||||
/// <param name="blUseNoLock">是否使用WITH(NOLOCK)</param>
|
||||
/// <returns></returns>
|
||||
public new async Task<IPageList<CoreCmsGoods>> QueryPageAsync(Expression<Func<CoreCmsGoods, bool>> predicate, string orderBy = "",
|
||||
int pageIndex = 1, int pageSize = 20, bool blUseNoLock = false)
|
||||
{
|
||||
return await _dal.QueryPageAsync(predicate, orderBy, pageIndex, pageSize, blUseNoLock);
|
||||
}
|
||||
#endregion
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 根据条件查询代理池商品分页数据
|
||||
/// </summary>
|
||||
/// <param name="predicate"></param>
|
||||
/// <param name="orderBy"></param>
|
||||
/// <param name="pageIndex">当前页面索引</param>
|
||||
/// <param name="pageSize">分布大小</param>
|
||||
/// <param name="blUseNoLock">是否使用WITH(NOLOCK)</param>
|
||||
/// <returns></returns>
|
||||
public async Task<IPageList<CoreCmsGoods>> QueryAgentGoodsPageAsync(Expression<Func<CoreCmsGoods, bool>> predicate, string orderBy = "",
|
||||
int pageIndex = 1, int pageSize = 20, bool blUseNoLock = false)
|
||||
{
|
||||
return await _dal.QueryAgentGoodsPageAsync(predicate, orderBy, pageIndex, pageSize, blUseNoLock);
|
||||
}
|
||||
|
||||
|
||||
#region 获取下拉商品数据
|
||||
/// <summary>
|
||||
/// 获取下拉商品数据
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public async Task<List<EnumEntity>> QueryEnumEntityAsync()
|
||||
{
|
||||
|
||||
return await _dal.QueryEnumEntityAsync();
|
||||
}
|
||||
#endregion
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
74
CoreCms.Net.Services/Good/CoreCmsGoodsTypeSpecServices.cs
Normal file
74
CoreCms.Net.Services/Good/CoreCmsGoodsTypeSpecServices.cs
Normal file
@@ -0,0 +1,74 @@
|
||||
/***********************************************************************
|
||||
* 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.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
|
||||
{
|
||||
/// <summary>
|
||||
/// 商品类型属性表 接口实现
|
||||
/// </summary>
|
||||
public class CoreCmsGoodsTypeSpecServices : BaseServices<CoreCmsGoodsTypeSpec>, ICoreCmsGoodsTypeSpecServices
|
||||
{
|
||||
private readonly ICoreCmsGoodsTypeSpecRepository _dal;
|
||||
private readonly IUnitOfWork _unitOfWork;
|
||||
public CoreCmsGoodsTypeSpecServices(IUnitOfWork unitOfWork, ICoreCmsGoodsTypeSpecRepository dal)
|
||||
{
|
||||
this._dal = dal;
|
||||
base.BaseDal = dal;
|
||||
_unitOfWork = unitOfWork;
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 使用事务重写异步插入方法
|
||||
/// </summary>
|
||||
/// <param name="entity">实体数据</param>
|
||||
/// <returns></returns>
|
||||
public async Task<AdminUiCallBack> InsertAsync(FmGoodsTypeSpecInsert entity)
|
||||
{
|
||||
return await _dal.InsertAsync(entity);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 重写异步更新方法方法
|
||||
/// </summary>
|
||||
/// <param name="entity"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<AdminUiCallBack> UpdateAsync(FmGoodsTypeSpecUpdate entity)
|
||||
{
|
||||
return await _dal.UpdateAsync(entity);
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 重写删除指定ID的数据
|
||||
/// </summary>
|
||||
/// <param name="id"></param>
|
||||
/// <returns></returns>
|
||||
public new async Task<AdminUiCallBack> DeleteByIdAsync(object id)
|
||||
{
|
||||
return await _dal.DeleteByIdAsync(id);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
/***********************************************************************
|
||||
* 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
|
||||
{
|
||||
/// <summary>
|
||||
/// 商品类型属性值表 接口实现
|
||||
/// </summary>
|
||||
public class CoreCmsGoodsTypeSpecValueServices : BaseServices<CoreCmsGoodsTypeSpecValue>, ICoreCmsGoodsTypeSpecValueServices
|
||||
{
|
||||
private readonly ICoreCmsGoodsTypeSpecValueRepository _dal;
|
||||
private readonly IUnitOfWork _unitOfWork;
|
||||
public CoreCmsGoodsTypeSpecValueServices(IUnitOfWork unitOfWork, ICoreCmsGoodsTypeSpecValueRepository dal)
|
||||
{
|
||||
this._dal = dal;
|
||||
base.BaseDal = dal;
|
||||
_unitOfWork = unitOfWork;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,40 @@
|
||||
/***********************************************************************
|
||||
* 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.Generic;
|
||||
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
|
||||
{
|
||||
/// <summary>
|
||||
/// 货品三级佣金表 接口实现
|
||||
/// </summary>
|
||||
public class CoreCmsProductsDistributionServices : BaseServices<CoreCmsProductsDistribution>, ICoreCmsProductsDistributionServices
|
||||
{
|
||||
private readonly ICoreCmsProductsDistributionRepository _dal;
|
||||
private readonly IUnitOfWork _unitOfWork;
|
||||
|
||||
public CoreCmsProductsDistributionServices(IUnitOfWork unitOfWork, ICoreCmsProductsDistributionRepository dal)
|
||||
{
|
||||
this._dal = dal;
|
||||
base.BaseDal = dal;
|
||||
_unitOfWork = unitOfWork;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
363
CoreCms.Net.Services/Good/CoreCmsProductsServices.cs
Normal file
363
CoreCms.Net.Services/Good/CoreCmsProductsServices.cs
Normal file
@@ -0,0 +1,363 @@
|
||||
/***********************************************************************
|
||||
* 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.IServices;
|
||||
using CoreCms.Net.Model.Entities;
|
||||
using CoreCms.Net.Model.FromBody;
|
||||
using CoreCms.Net.Model.ViewModels.DTO;
|
||||
using CoreCms.Net.Utility.Helper;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using SqlSugar;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Linq.Expressions;
|
||||
using System.Threading.Tasks;
|
||||
using CoreCms.Net.Configuration;
|
||||
using CoreCms.Net.Model.ViewModels.Basics;
|
||||
using CoreCms.Net.Model.ViewModels.UI;
|
||||
|
||||
namespace CoreCms.Net.Services
|
||||
{
|
||||
/// <summary>
|
||||
/// 货品表 接口实现
|
||||
/// </summary>
|
||||
public class CoreCmsProductsServices : BaseServices<CoreCmsProducts>, ICoreCmsProductsServices
|
||||
{
|
||||
private readonly ICoreCmsProductsRepository _dal;
|
||||
private readonly IUnitOfWork _unitOfWork;
|
||||
private readonly IServiceProvider _serviceProvider;
|
||||
|
||||
public CoreCmsProductsServices(IUnitOfWork unitOfWork, ICoreCmsProductsRepository dal,
|
||||
IServiceProvider serviceProvider
|
||||
)
|
||||
{
|
||||
this._dal = dal;
|
||||
base.BaseDal = dal;
|
||||
_unitOfWork = unitOfWork;
|
||||
_serviceProvider = serviceProvider;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 根据货品ID获取货品信息
|
||||
/// </summary>
|
||||
/// <param name="id">货品序列</param>
|
||||
/// <param name="isPromotion">是否计算促销</param>
|
||||
/// <param name="userId">用户序列</param>
|
||||
/// <param name="type">类型</param>
|
||||
/// <param name="groupId"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<CoreCmsProducts> GetProductInfo(int id, bool isPromotion, int userId, string type = "goods", int groupId = 0)
|
||||
{
|
||||
using var container = _serviceProvider.CreateScope();
|
||||
|
||||
var userGradeServices = container.ServiceProvider.GetService<ICoreCmsUserGradeServices>();
|
||||
var promotionServices = container.ServiceProvider.GetService<ICoreCmsPromotionServices>();
|
||||
var orderServices = container.ServiceProvider.GetService<ICoreCmsOrderServices>();
|
||||
var goodsServices = container.ServiceProvider.GetService<ICoreCmsGoodsServices>();
|
||||
var userServices = container.ServiceProvider.GetService<ICoreCmsUserServices>();
|
||||
var goodsGradeServices = container.ServiceProvider.GetService<ICoreCmsGoodsGradeServices>();
|
||||
var pinTuanRuleServices = container.ServiceProvider.GetService<ICoreCmsPinTuanRuleServices>();
|
||||
|
||||
//获取货品
|
||||
var productModel = await _dal.QueryByClauseAsync(p => p.id == id);
|
||||
if (productModel == null) return null;
|
||||
//获取商品信息
|
||||
var goods = await goodsServices.QueryByIdAsync(productModel.goodsId);
|
||||
if (goods == null) return null;
|
||||
//DTO映射
|
||||
productModel.bn = goods.bn;
|
||||
productModel.images = !string.IsNullOrEmpty(productModel.images) ? GoodsHelper.GetOneImage(productModel.images) : GoodsHelper.GetOneImage(goods.images);
|
||||
productModel.totalStock = Convert.ToInt32(productModel.stock);
|
||||
productModel.stock = GoodsHelper.GetStock(productModel.stock, productModel.freezeStock);
|
||||
productModel.name = goods.name;
|
||||
|
||||
var price = productModel.price;
|
||||
var gradePrice = new List<CoreCmsGoodsGrade>();
|
||||
//获取价格体系
|
||||
if (userId > 0)
|
||||
{
|
||||
//获取用户信息
|
||||
var userInfo = await userServices.QueryByIdAsync(userId);
|
||||
if (userInfo != null)
|
||||
{
|
||||
var gradeInfo = await userGradeServices.QueryByIdAsync(userInfo.grade);
|
||||
if (gradeInfo != null)
|
||||
{
|
||||
productModel.gradeInfo = gradeInfo;
|
||||
}
|
||||
var goodsGrades = await goodsGradeServices.QueryListByClauseAsync(p => p.goodsId == goods.id);
|
||||
if (goodsGrades != null && goodsGrades.Count > 0)
|
||||
{
|
||||
var userGradeList = await userGradeServices.QueryAsync();
|
||||
goodsGrades.ForEach(p =>
|
||||
{
|
||||
var userGrades = userGradeList.Find(o => o.id == p.gradeId);
|
||||
p.gradeName = userGrades != null ? userGrades.title : "";
|
||||
|
||||
if (gradeInfo != null && gradeInfo.id == p.gradeId)
|
||||
{
|
||||
price = (productModel.price - p.gradePrice) > 0 ? productModel.price - p.gradePrice : 0;
|
||||
}
|
||||
p.gradePrice = (productModel.price - p.gradePrice) > 0 ? productModel.price - p.gradePrice : 0;
|
||||
});
|
||||
}
|
||||
gradePrice = goodsGrades;
|
||||
}
|
||||
}
|
||||
productModel.gradePrice = gradePrice;
|
||||
productModel.price = price;
|
||||
|
||||
//如果是多规格商品,算多规格
|
||||
if (goods.openSpec == 1 && !string.IsNullOrEmpty(goods.spesDesc))
|
||||
{
|
||||
var defaultSpec = new Dictionary<string, Dictionary<string, DefaultSpesDesc>>();
|
||||
//一级拆分
|
||||
var spesDescArr = goods.spesDesc.Split("|");
|
||||
var productSpecDescArr = productModel.spesDesc.Split(",");
|
||||
foreach (var item in spesDescArr)
|
||||
{
|
||||
//小类拆分
|
||||
var itemArr = item.Split(".");
|
||||
//键值对处理
|
||||
var keyValue = itemArr[1].Split(":");
|
||||
var defaultSpesDesc = new DefaultSpesDesc();
|
||||
defaultSpesDesc.name = keyValue[1];
|
||||
foreach (var childItem in productSpecDescArr)
|
||||
{
|
||||
if (childItem == itemArr[1])
|
||||
{
|
||||
defaultSpesDesc.isDefault = true;
|
||||
}
|
||||
}
|
||||
if (defaultSpec.ContainsKey(keyValue[0]))
|
||||
{
|
||||
defaultSpec[keyValue[0]].Add(keyValue[1], defaultSpesDesc);
|
||||
}
|
||||
else
|
||||
{
|
||||
var a = new Dictionary<string, DefaultSpesDesc> { { keyValue[1], defaultSpesDesc } };
|
||||
|
||||
defaultSpec.Add(keyValue[0], a);
|
||||
}
|
||||
}
|
||||
//取其他货品信息
|
||||
var otherProduts = await _dal.QueryListByClauseAsync(t => t.goodsId == goods.id && t.isDel == false && t.id != productModel.id);
|
||||
if (otherProduts.Any())
|
||||
{
|
||||
foreach (var item in defaultSpec)
|
||||
{
|
||||
foreach (var childItem in item.Value)
|
||||
{
|
||||
//如果是默认选中的,跳出本次
|
||||
if (childItem.Value.isDefault) continue;
|
||||
//当前主货品sku
|
||||
var tempProductSpesDesc = productSpecDescArr;
|
||||
//替换当前sku的当前值为当前遍历的值
|
||||
for (var i = 0; i < tempProductSpesDesc.Length; i++)
|
||||
{
|
||||
if (tempProductSpesDesc[i].Contains(item.Key)) tempProductSpesDesc[i] = item.Key + ":" + childItem.Key;
|
||||
}
|
||||
//循环所有货品,找到对应的多规格
|
||||
foreach (var o in otherProduts)
|
||||
{
|
||||
var otherProductSpesDesc = o.spesDesc.Split(",");
|
||||
if (!tempProductSpesDesc.Except(otherProductSpesDesc).Any())
|
||||
{
|
||||
childItem.Value.productId = o.id;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
productModel.defaultSpecificationDescription = defaultSpec;
|
||||
}
|
||||
|
||||
productModel.amount = productModel.price;
|
||||
productModel.promotionList = new Dictionary<int, WxNameTypeDto>();
|
||||
productModel.promotionAmount = 0;
|
||||
|
||||
//开启计算促销
|
||||
if (isPromotion)
|
||||
{
|
||||
//模拟购物车数据库结构,去取促销信息
|
||||
var miniCart = new CartDto();
|
||||
miniCart.userId = userId;
|
||||
miniCart.goodsAmount = productModel.amount;
|
||||
miniCart.amount = productModel.amount;
|
||||
var listOne = new CartProducts()
|
||||
{
|
||||
id = 0,
|
||||
isSelect = true,
|
||||
userId = userId,
|
||||
productId = productModel.id,
|
||||
nums = 1,
|
||||
products = productModel
|
||||
};
|
||||
miniCart.list.Add(listOne);
|
||||
|
||||
var cartModel = new CartDto();
|
||||
|
||||
if (type == "group" || type == "skill")
|
||||
{
|
||||
//团购秒杀默认时间过期后,不可以下单
|
||||
var dt = DateTime.Now;
|
||||
var promotionInfo = await promotionServices.QueryByClauseAsync(p => p.startTime < dt && p.endTime > dt && p.id == groupId);
|
||||
if (promotionInfo != null)
|
||||
{
|
||||
await promotionServices.SetPromotion(promotionInfo, miniCart);
|
||||
}
|
||||
cartModel = miniCart;
|
||||
}
|
||||
else
|
||||
{
|
||||
cartModel = await promotionServices.ToPromotion(miniCart);
|
||||
}
|
||||
|
||||
//把促销信息和新的价格等,覆盖到这里
|
||||
var promotionList = cartModel.promotionList;
|
||||
|
||||
if (cartModel.list[0].products.promotionList.Count > 0)
|
||||
{
|
||||
//把订单促销和商品促销合并,都让他显示
|
||||
foreach (KeyValuePair<int, WxNameTypeDto> kvp in cartModel.list[0].products.promotionList)
|
||||
{
|
||||
if (promotionList.ContainsKey(kvp.Key))
|
||||
{
|
||||
promotionList[kvp.Key] = kvp.Value;
|
||||
}
|
||||
else
|
||||
{
|
||||
promotionList.Add(kvp.Key, kvp.Value);
|
||||
}
|
||||
}
|
||||
}
|
||||
productModel.price = cartModel.list[0].products.price; //新的商品单价
|
||||
productModel.amount = cartModel.list[0].products.amount; //商品总价格
|
||||
productModel.promotionList = promotionList; //促销列表
|
||||
productModel.promotionAmount = cartModel.list[0].products.promotionAmount; //如果商品促销应用了,那么促销的金额
|
||||
}
|
||||
|
||||
//获取活动数量
|
||||
if (type == "pinTuan")
|
||||
{
|
||||
//把拼团的一些属性等加上
|
||||
var pinTuanRule = pinTuanRuleServices.QueryMuchFirst<CoreCmsPinTuanRule, CoreCmsPinTuanGoods, CoreCmsPinTuanRule>(
|
||||
(role, pinTuanGoods) => new object[] { JoinType.Inner, role.id == pinTuanGoods.ruleId }
|
||||
, (role, pinTuanGoods) => role
|
||||
, (role, pinTuanGoods) => pinTuanGoods.goodsId == productModel.goodsId);
|
||||
|
||||
//var pinTuanRule = dbClient.Queryable<CoreCmsPinTuanRule, CoreCmsPinTuanGoods>(
|
||||
|
||||
// ).Where((role, pinTuanGoods) => pinTuanGoods.goodsId == productModel.goodsId)
|
||||
// .Select((role, pinTuanGoods) => role).First();
|
||||
//调整前台显示数量
|
||||
var checkOrder = orderServices.FindLimitOrder(productModel.id, userId, pinTuanRule.startTime, pinTuanRule.endTime);
|
||||
if (pinTuanRule.maxGoodsNums != 0)
|
||||
{
|
||||
//活动销售件数
|
||||
productModel.stock = pinTuanRule.maxGoodsNums - checkOrder.TotalOrders;
|
||||
productModel.buyPinTuanCount = checkOrder.TotalOrders;
|
||||
}
|
||||
else
|
||||
{
|
||||
productModel.buyPinTuanCount = checkOrder.TotalOrders;
|
||||
}
|
||||
}
|
||||
else if (type == "group" || type == "skill")
|
||||
{
|
||||
if (!goodsServices.IsInGroup(productModel.goodsId, out var groupModel, groupId))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
//调整前台显示数量
|
||||
var checkOrder = orderServices.FindLimitOrder(productModel.id, userId, groupModel.startTime,
|
||||
groupModel.endTime);
|
||||
if (groupModel.maxGoodsNums != 0)
|
||||
{
|
||||
//活动销售件数
|
||||
productModel.stock = groupModel.maxGoodsNums - checkOrder.TotalOrders;
|
||||
productModel.buyPromotionCount = checkOrder.TotalOrders;
|
||||
}
|
||||
else
|
||||
{
|
||||
productModel.buyPromotionCount = checkOrder.TotalOrders;
|
||||
}
|
||||
}
|
||||
return productModel;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 判断货品上下架状态
|
||||
/// </summary>
|
||||
/// <param name="productsId">货品序列</param>
|
||||
/// <returns></returns>
|
||||
public async Task<bool> GetShelfStatus(int productsId)
|
||||
{
|
||||
return await _dal.GetShelfStatus(productsId);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取库存报警数量
|
||||
/// </summary>
|
||||
/// <param name="goodsStocksWarn"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<int> GoodsStaticsTotalWarn(int goodsStocksWarn)
|
||||
{
|
||||
return await _dal.GoodsStaticsTotalWarn(goodsStocksWarn);
|
||||
}
|
||||
|
||||
|
||||
#region 获取关联商品的货品列表数据
|
||||
/// <summary>
|
||||
/// 获取关联商品的货品列表数据
|
||||
/// </summary>
|
||||
/// <param name="predicate">判断集合</param>
|
||||
/// <param name="orderByType">排序方式</param>
|
||||
/// <param name="pageIndex">当前页面索引</param>
|
||||
/// <param name="pageSize">分布大小</param>
|
||||
/// <param name="orderByExpression"></param>
|
||||
/// <param name="blUseNoLock">是否使用WITH(NOLOCK)</param>
|
||||
/// <returns></returns>
|
||||
public async Task<IPageList<CoreCmsProducts>> QueryDetailPageAsync(Expression<Func<CoreCmsProducts, bool>> predicate,
|
||||
Expression<Func<CoreCmsProducts, object>> orderByExpression, OrderByType orderByType, int pageIndex = 1,
|
||||
int pageSize = 20, bool blUseNoLock = false)
|
||||
{
|
||||
return await _dal.QueryDetailPageAsync(predicate, orderByExpression, orderByType, pageIndex, pageSize, blUseNoLock);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 修改单个货品库存并记入库存管理日志内
|
||||
/// </summary>
|
||||
/// <param name="productId"></param>
|
||||
/// <param name="stock"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<AdminUiCallBack> EditStock(int productId, int stock)
|
||||
{
|
||||
return await _dal.EditStock(productId, stock);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取所有货品数据
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public async Task<List<CoreCmsProducts>> GetProducts(int goodId = 0)
|
||||
{
|
||||
return await _dal.GetProducts(goodId);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user