From 557c2711a3e103ebc3d0492344eca9730d5e92b2 Mon Sep 17 00:00:00 2001
From: 移动系统liao <liaoxujun@qq.com>
Date: 星期一, 17 二月 2025 10:47:47 +0800
Subject: [PATCH] 增加司机配送单超时处理任务,防止一直不停手机定位信息,

---
 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