From 1cb49b04ae6709e6054c328f5ed12bff9ca014c8 Mon Sep 17 00:00:00 2001 From: 移动系统liao <liaoxujun@qq.com> Date: 星期二, 12 十一月 2024 09:21:57 +0800 Subject: [PATCH] no message --- CoreCms.Net.Web.WebApi/Controllers/baifenbingfa/DistributorGoodsController.cs | 483 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 476 insertions(+), 7 deletions(-) diff --git a/CoreCms.Net.Web.WebApi/Controllers/baifenbingfa/DistributorGoodsController.cs b/CoreCms.Net.Web.WebApi/Controllers/baifenbingfa/DistributorGoodsController.cs index f46e905..be3b566 100644 --- a/CoreCms.Net.Web.WebApi/Controllers/baifenbingfa/DistributorGoodsController.cs +++ b/CoreCms.Net.Web.WebApi/Controllers/baifenbingfa/DistributorGoodsController.cs @@ -1,8 +1,32 @@ -锘縰sing CoreCms.Net.Model.Entities.baifenbingfa.jon; +锘縰sing AutoMapper; +using CoreCms.Net.Auth.HttpContextUser; +using CoreCms.Net.Caching.AutoMate.RedisCache; +using CoreCms.Net.Configuration; +using CoreCms.Net.DTO.ComponentsDTO; +using CoreCms.Net.Filter; +using CoreCms.Net.IRepository.UnitOfWork; +using CoreCms.Net.IServices; +using CoreCms.Net.IServices.baifenbingfa; +using CoreCms.Net.Model.Entities; +using CoreCms.Net.Model.Entities.baifenbingfa.jon; +using CoreCms.Net.Model.Entities.Expression; +using CoreCms.Net.Model.FromBody; using CoreCms.Net.Model.ViewModels.UI; +using CoreCms.Net.Services; +using CoreCms.Net.Services.Basic; +using CoreCms.Net.Utility.Extensions; +using CoreCms.Net.Utility.Helper; using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Mvc; +using Nest; +using Newtonsoft.Json; +using SqlSugar; using Swashbuckle.AspNetCore.Annotations; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; using System.Threading.Tasks; namespace CoreCms.Net.Web.WebApi.Controllers.baifenbingfa @@ -13,23 +37,468 @@ [Route("api/[controller]/[action]")] [ApiController] [Authorize] + [DPremisssionFilter]//缁忛攢鍟嗚闂帶鍒� + public class DistributorGoodsController : ControllerBase { + private readonly IHttpContextUser _user; + private readonly IUnitOfWork _worke; + + private readonly ICoreCmsBrandServices _brandServices; + private readonly ICoreCmsGoodsCategoryExtendServices _categoryExtendServices; + private readonly ICoreCmsGoodsCategoryServices _coreCmsGoodsCategoryServices; + private readonly ICoreCmsGoodsServices _coreCmsGoodsServices; + private readonly ICoreCmsGoodsGradeServices _goodsGradeServices; + private readonly ICoreCmsGoodsParamsServices _goodsParamsServices; + private readonly ICoreCmsGoodsTypeSpecServices _goodsTypeSpecServices; + private readonly ICoreCmsLabelServices _labelServices; + private readonly ICoreCmsProductsServices _productsServices; + private readonly ICoreCmsSettingServices _settingServices; + private readonly ICoreCmsGoodsTypeSpecValueServices _typeSpecValueServices; + private readonly ICoreCmsUserGradeServices _userGradeServices; + private readonly ICoreCmsProductsDistributionServices _productsDistributionServices; + private readonly IWebHostEnvironment _webHostEnvironment; + private readonly IRedisOperationRepository _redisOperationRepository; + private readonly ICoreCmsGoodsCategoryExtendServices _goodsCategoryExtendServices; + + /// <summary> - /// + /// 鏋勯�犲嚱鏁� + /// </summary> + public DistributorGoodsController(IWebHostEnvironment webHostEnvironment + , ICoreCmsGoodsServices coreCmsGoodsServices + , ICoreCmsSettingServices settingServices + , ICoreCmsBrandServices brandServices + , ICoreCmsGoodsCategoryServices coreCmsGoodsCategoryServices + , ICoreCmsUserGradeServices userGradeServices + , ICoreCmsGoodsParamsServices goodsParamsServices + , ICoreCmsGoodsTypeSpecValueServices typeSpecValueServices + , ICoreCmsGoodsGradeServices goodsGradeServices + , ICoreCmsProductsServices productsServices + , ICoreCmsGoodsCategoryExtendServices categoryExtendServices + , ICoreCmsLabelServices labelServices + , ICoreCmsProductsDistributionServices productsDistributionServices + , ICoreCmsGoodsTypeSpecServices goodsTypeSpecServices, + IRedisOperationRepository redisOperationRepository, + ICoreCmsGoodsCategoryExtendServices goodsCategoryExtendServices + ,IHttpContextUser user) + { + _webHostEnvironment = webHostEnvironment; + _coreCmsGoodsServices = coreCmsGoodsServices; + _settingServices = settingServices; + _brandServices = brandServices; + _coreCmsGoodsCategoryServices = coreCmsGoodsCategoryServices; + _userGradeServices = userGradeServices; + _goodsParamsServices = goodsParamsServices; + _typeSpecValueServices = typeSpecValueServices; + _goodsGradeServices = goodsGradeServices; + _productsServices = productsServices; + _categoryExtendServices = categoryExtendServices; + _labelServices = labelServices; + _productsDistributionServices = productsDistributionServices; + _goodsTypeSpecServices = goodsTypeSpecServices; + _redisOperationRepository = redisOperationRepository; + _goodsCategoryExtendServices = goodsCategoryExtendServices; + _user = user; + } + /// <summary> + /// 鑾峰彇鍟嗗搧鍒濆鍖栧弬鏁� /// </summary> /// <returns></returns> - [HttpPost("GetGoodslist")] - [SwaggerResponse(200, "杩斿洖鏁版嵁", typeof(WebApiCallBack))] - [SwaggerResponse(201, "Data绫诲瀷", typeof(Job_jobSeting))] - public async Task<WebApiCallBack> GetGoodslist() + [HttpPost("GetInitParam")] + public async Task<WebApiCallBack> GetInitParam() { var jm = new WebApiCallBack(); + //鑾峰彇鍟嗗搧鍒嗙被 + var categories = await _coreCmsGoodsCategoryServices.QueryListByClauseAsync(p => p.isShow, p => p.sort, OrderByType.Asc, true, true); + //鑾峰彇鍙傛暟鍒楄〃 + var paramsList = await _goodsParamsServices.QueryListByClauseAsync(p => p.id > 0, p => p.id, OrderByType.Desc, true, true); + //鑾峰彇SKU鍒楄〃 + var skuList = await _goodsTypeSpecServices.QueryListByClauseAsync(p => p.id > 0, p => p.id, OrderByType.Desc, true, true); + //鑾峰彇鍝佺墝 + var brands = await _brandServices.QueryListByClauseAsync(p => p.id > 0 && p.isShow == true, p => p.id, OrderByType.Desc, true, true); + //鑾峰彇鐢ㄦ埛绛夌骇 + var userGrade = await _userGradeServices.QueryAsync(); - + //鑾峰彇鍟嗗搧缁忛攢enum + var productsDistributionType = EnumHelper.EnumToList<GlobalEnumVars.ProductsDistributionType>(); + + jm.data = new + { + categories = GoodsHelper.GetTree(categories, false), + brands, + userGrade, + productsDistributionType, + paramsList, + skuList + }; + + jm.status = true; return jm; } + /// <summary> + /// 鑾峰彇鍟嗗搧鍒楄〃 + /// </summary> + /// <returns></returns> + [HttpPost("GetGoodsList")] + public async Task<WebApiCallBack> GetGoodsList([FromBody] FMPageByWhereOrder entity) + { + var jm = new WebApiCallBack(); + + var where = PredicateBuilder.True<GoodListDTO>(); + + var className = string.Empty; + if (!string.IsNullOrWhiteSpace(entity.where)) + { + var obj = JsonConvert.DeserializeAnonymousType(entity.where, new + { + priceFrom = "", + priceTo = "", + catId = "", + brandId = "", + labelId = "", + searchName = "", + areaCode = "" + + }); + + if (!string.IsNullOrWhiteSpace(obj.priceFrom)) + { + var priceF = obj.priceFrom.ObjectToDouble(0); + if (priceF >= 0) + { + var f = Convert.ToDecimal(priceF); + where = where.And(p => p.price >= f); + } + } + if (!string.IsNullOrWhiteSpace(obj.priceTo)) + { + var priceT = obj.priceTo.ObjectToDouble(0); + if (priceT > 0) + { + var f = Convert.ToDecimal(priceT); + where = where.And(p => p.price <= f); + } + } + if (!string.IsNullOrWhiteSpace(obj.catId)) + { + var catId = obj.catId.ObjectToInt(0); + if (catId > 0) + { + + where = where.And(p => p.goodsCategoryId==catId); + + } + } + if (!string.IsNullOrWhiteSpace(obj.brandId)) + { + if (obj.brandId.Contains(",")) + { + var brandIdsIntArray = CommonHelper.StringToIntArray(obj.brandId); + if (brandIdsIntArray.Any()) + { + where = where.And(p => brandIdsIntArray.Contains(p.brandId)); + } + } + else + { + var brandId = obj.brandId.ObjectToInt(0); + if (brandId > 0) + { + where = where.And(p => p.brandId == brandId); + } + } + + } + if (!string.IsNullOrWhiteSpace(obj.labelId)) + { + where = where.And(p => (',' + p.labelIds.Trim(',') + ',').Contains(',' + obj.labelId.Trim(',') + ',')); + } + if (!string.IsNullOrWhiteSpace(obj.searchName)) + { + where = where.And(p => p.name.Contains(obj.searchName)); + } + if (!string.IsNullOrWhiteSpace(obj.areaCode)) + { + where = where.And(p => p.areaCode.Contains(obj.areaCode)); + } + + } + //鍙幏鍙栧綋鍓嶇敤鎴风殑 + where = where.And(p => p.publisherId == _user.ID); + //鑾峰彇鏁版嵁 + var list = await _coreCmsGoodsServices.QueryPageByDTOAsync(where, entity.page, entity.limit, true); + jm.status = true; + return jm; + + } + /// <summary> + /// 鑾峰彇鍟嗗搧璇︽儏 + /// </summary> + /// <param name="entity"></param> + /// <returns></returns> + [HttpPost] + public async Task<WebApiCallBack> GetEdit([FromBody] FMIntId entity) + { + var jm = new WebApiCallBack(); + + var model = await _coreCmsGoodsServices.QueryByClauseAsync(x=>x.id==entity.id&&x.publisherId==_user.ID); + if (model == null) + { + jm.msg = "鏃犳潈淇敼璇ュ晢鍝�"; + jm.status = false; + return jm; + } + + jm.code = 0; + + //鑾峰彇鍟嗗搧鍒嗙被 + var categories = await _coreCmsGoodsCategoryServices.QueryListByClauseAsync(p => p.isShow, p => p.sort, OrderByType.Asc, true, true); + //鑾峰彇鐢ㄦ埛绛夌骇 + var userGrade = await _userGradeServices.QueryAsync(); + //鐢ㄦ埛浠锋牸浣撶郴 + var goodsGrades = await _goodsGradeServices.QueryListByClauseAsync(p => p.goodsId == model.id); + //璐у搧淇℃伅 + var products = await _productsServices.QueryListByClauseAsync(p => p.goodsId == model.id && p.isDel == false); + //鎵╁睍淇℃伅 + var categoryExtend = await _categoryExtendServices.QueryListByClauseAsync(p => p.goodsId == model.id); + //鑾峰彇鍟嗗搧缁忛攢enum + var productsDistributionType = EnumHelper.EnumToList<GlobalEnumVars.ProductsDistributionType>(); + + //鑾峰彇鍙傛暟鍒楄〃 + var paramsList = await _goodsParamsServices.QueryListByClauseAsync(p => p.id > 0, p => p.id, OrderByType.Desc, true, true); + //鑾峰彇SKU鍒楄〃 + var skuList = await _goodsTypeSpecServices.QueryListByClauseAsync(p => p.id > 0, p => p.id, OrderByType.Desc, true, true); + //鑾峰彇鍝佺墝 + var brands = await _brandServices.QueryListByClauseAsync(p => p.id > 0 && p.isShow == true, p => p.id, OrderByType.Desc, true, true); + + + if (products != null && products.Any()) + { + var pIds = products.Select(p => p.id).ToList(); + if (pIds.Any()) + { + // 鑾峰彇鍟嗗搧缁忛攢鏄庣粏 + var pds = await _productsDistributionServices.QueryListByClauseAsync(p => pIds.Contains(p.productsId), p => p.id, OrderByType.Asc); + products.ForEach(p => + { + foreach (var o in pds.Where(o => o.productsId == p.id)) + { + p.levelOne = o.levelOne; + p.levelTwo = o.levelTwo; + p.levelThree = o.levelThree; + } + }); + jm.otherData = pds; + } + + } + + //鑾峰彇鍙傛暟淇℃伅 + var goodsTypeSpec = new List<CoreCmsGoodsTypeSpec>(); + var goodsParams = new List<CoreCmsGoodsParams>(); + + //鑾峰彇鍙傛暟 + 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 specIds = Utility.Helper.CommonHelper.StringToIntArray(model.goodsSkuIds); + var typeSpecs = skuList.Where(p => specIds.Contains(p.id)).ToList(); + 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; + } + + jm.data = new + { + model, + categories = GoodsHelper.GetTree(categories, false), + brands, + userGrade, + goodsGrades, + products, + categoryExtend, + goodsTypeSpec, + goodsParams, + productsDistributionType, + paramsList, + skuList + }; + + jm.status = true; + return jm; + + + } + + + + + // POST: Admins/CoreCmsGoods/Edit + /// <summary> + /// 缂栬緫鎻愪氦 + /// </summary> + /// <param name="entity"></param> + /// <returns></returns> + [HttpPost] + [Description("缂栬緫鎻愪氦")] + public async Task<WebApiCallBack> DoEdit([FromBody] FMGoodsInsertModel entity) + { + var jm = await _coreCmsGoodsServices.UpdateAsync(entity); + var ret=new WebApiCallBack(); + ret.status = jm.code == 0 ? true : false; + ret.data = jm.data; + ret.msg=jm.msg; + + return ret; + } + // POST: Api/CoreCmsGoods/DoCreate + /// <summary> + /// 鍒涘缓鎻愪氦 + /// </summary> + /// <param name="entity"></param> + /// <returns></returns> + [HttpPost] + [Description("鍒涘缓鎻愪氦")] + public async Task<WebApiCallBack> DoCreate([FromBody] FMGoodsInsertModel entity) + { + + entity.goods.auditStatus = AuditStatusType.Pending; + entity.goods.publisherId = _user.ID; + + var jm = await _coreCmsGoodsServices.InsertAsync(entity); + var ret = new WebApiCallBack(); + ret.status = jm.code == 0 ? true : false; + ret.data = jm.data; + ret.msg = jm.msg; + + return ret; + } + + + + // POST: Api/CoreCmsGoods/GetDetails/10 + /// <summary> + /// 棰勮鏁版嵁 + /// </summary> + /// <param name="entity"></param> + /// <returns></returns> + [HttpPost] + [Description("棰勮鏁版嵁")] + public async Task<WebApiCallBack> GetDetails([FromBody] FMIntId entity) + { + var jm = new WebApiCallBack(); + + var model = await _coreCmsGoodsServices.QueryByIdAsync(entity.id); + if (model == null) + { + jm.msg = "涓嶅瓨鍦ㄦ淇℃伅"; + jm.data = entity.id; + jm.status = false; + return jm; + } + + jm.code = 0; + + //鑾峰彇鍟嗗搧鍒嗙被 + var categories = await _coreCmsGoodsCategoryServices.QueryListByClauseAsync(p => p.isShow, p => p.sort, OrderByType.Asc, true, true); + + //鑾峰彇鐢ㄦ埛绛夌骇 + var userGrade = await _userGradeServices.QueryAsync(); + //鐢ㄦ埛浠锋牸浣撶郴 + var goodsGrades = await _goodsGradeServices.QueryListByClauseAsync(p => p.goodsId == model.id); + //璐у搧淇℃伅 + var products = + await _productsServices.QueryListByClauseAsync(p => p.goodsId == model.id && p.isDel == false); + //鎵╁睍淇℃伅 + var categoryExtend = await _categoryExtendServices.QueryListByClauseAsync(p => p.goodsId == model.id); + //鑾峰彇鍟嗗搧缁忛攢enum + var productsDistributionType = EnumHelper.EnumToList<GlobalEnumVars.ProductsDistributionType>(); + + + //鑾峰彇鍙傛暟鍒楄〃 + var paramsList = await _goodsParamsServices.QueryListByClauseAsync(p => p.id > 0, p => p.id, OrderByType.Desc, true, true); + //鑾峰彇SKU鍒楄〃 + var skuList = await _goodsTypeSpecServices.QueryListByClauseAsync(p => p.id > 0, p => p.id, OrderByType.Desc, true, true); + + //鑾峰彇鍝佺墝 + var brands = await _brandServices.QueryListByClauseAsync(p => p.id > 0 && p.isShow == true, p => p.id, OrderByType.Desc, true, true); + + + if (products != null && products.Any()) + { + var pIds = products.Select(p => p.id).ToList(); + if (pIds.Any()) + { + // 鑾峰彇鍟嗗搧缁忛攢鏄庣粏 + var pds = await _productsDistributionServices.QueryListByClauseAsync(p => pIds.Contains(p.productsId), p => p.id, OrderByType.Asc); + products.ForEach(p => + { + foreach (var o in pds.Where(o => o.productsId == p.id)) + { + p.levelOne = o.levelOne; + p.levelTwo = o.levelTwo; + p.levelThree = o.levelThree; + } + }); + jm.otherData = pds; + } + + } + + //鑾峰彇鍙傛暟淇℃伅 + var goodsTypeSpec = new List<CoreCmsGoodsTypeSpec>(); + var goodsParams = new List<CoreCmsGoodsParams>(); + + //鑾峰彇鍙傛暟 + 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 specIds = Utility.Helper.CommonHelper.StringToIntArray(model.goodsSkuIds); + var typeSpecs = await _goodsTypeSpecServices.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; + } + + jm.data = new + { + model, + categories = GoodsHelper.GetTree(categories, false), + brands, + userGrade, + goodsGrades, + products, + categoryExtend, + goodsTypeSpec, + goodsParams, + productsDistributionType, + paramsList, + skuList + }; + + jm.status = true; + return jm; + } } } -- Gitblit v1.9.1