From e8fd9aa8a76c638991e60544ccab53e2e5bd5b6a Mon Sep 17 00:00:00 2001
From: username@email.com <yzy2002yzy@163.com>
Date: 星期一, 09 九月 2024 14:16:02 +0800
Subject: [PATCH] Merge branch 'master' of http://47.108.235.38:8080/r/baifenbaishop
---
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