/// <summary>
        /// 刷新喷漆打折服务缓存
        /// </summary>
        /// <returns></returns>
        public bool RefreshPaintDiscountConfigCache()
        {
            var result = false;

            try
            {
                var models = dbScopeManagerProductcatalogRead.Execute(conn =>
                                                                      DalPaintDiscountConfig.GetAllPaintDiscountService(conn));
                var servicePids = models?.Select(s => s.ServicePid).Distinct().ToList();
                if (servicePids != null && servicePids.Any())
                {
                    using (var client = new Service.Config.CacheClient())
                    {
                        var cacheResult = client.RefreshPaintDiscountConfigCache(servicePids);
                        cacheResult.ThrowIfException(true);
                        result = cacheResult.Result;
                    }
                }
            }
            catch (Exception ex)
            {
                Logger.Error("RefreshPaintDiscountConfigCache", ex);
            }
            return(result);
        }
        /// <summary>
        /// 查询喷漆打折配置
        /// </summary>
        /// <param name="servicePid"></param>
        /// <param name="carNoPrefix"></param>
        /// <param name="pageIndex"></param>
        /// <param name="pageSize"></param>
        /// <returns></returns>
        public Tuple <List <PaintDiscountConfigModel>, int> SelectPaintDiscountConfig
            (string servicePid, int pageIndex, int pageSize)
        {
            var result     = null as List <PaintDiscountConfigModel>;
            var totalCount = 0;

            try
            {
                var configs = dbScopeManagerConfigurationRead.Execute(conn =>
                                                                      DalPaintDiscountConfig.SelectPaintDiscountConfig(conn, servicePid, pageIndex, pageSize, out totalCount))
                              ?? new List <PaintDiscountConfigModel>();
                var allService = GetAllPaintDiscountService();
                configs.ForEach(
                    f =>
                {
                    var service   = allService.Where(w => string.Equals(w.ServicePid, f.ServicePid))?.FirstOrDefault();
                    f.ServiceName = service?.ServiceName;
                });
                result = configs;
            }
            catch (Exception ex)
            {
                result = null;
                Logger.Error("SelectPaintDiscountConfig", ex);
            }
            return(Tuple.Create(result, totalCount));
        }
        /// <summary>
        /// 判断喷漆打折配置唯一性
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public bool IsExistPaintDiscountConfig(PaintDiscountConfigModel model)
        {
            var result = true;

            try
            {
                result = dbScopeManagerConfigurationRead.Execute
                             (conn => DalPaintDiscountConfig.IsExistPaintDiscountConfig(conn, model));
            }
            catch (Exception ex)
            {
                Logger.Error("IsExistPaintDiscountConfig", ex);
            }
            return(result);
        }
        /// <summary>
        /// 获取所有喷漆打折服务
        /// </summary>
        /// <returns></returns>
        public List <PaintDiscountServiceModel> GetAllPaintDiscountService()
        {
            var result = null as List <PaintDiscountServiceModel>;

            try
            {
                result = dbScopeManagerProductcatalogRead.Execute
                             (conn => DalPaintDiscountConfig.GetAllPaintDiscountService(conn));
            }
            catch (Exception ex)
            {
                Logger.Error("GetAllPaintDiscountService", ex);
            }
            return(result ?? new List <PaintDiscountServiceModel>());
        }
        /// <summary>
        /// 查询喷漆打折操作日志
        /// </summary>
        /// <param name="logType"></param>
        /// <param name="identityId"></param>
        /// <param name="pageIndex"></param>
        /// <param name="pageSize"></param>
        /// <returns></returns>
        public List <PaintDiscountOprLogModel> SelectPaintDiscountOprLog
            (string logType, string identityId, int pageIndex = 1, int pageSize = 20)
        {
            var result = null as List <PaintDiscountOprLogModel>;

            try
            {
                result = dbScopeManagerTuhulog.Execute
                             (conn => DalPaintDiscountConfig.SelectPaintDiscountOprLog(conn, logType, identityId, pageIndex, pageSize));
            }
            catch (Exception ex)
            {
                Logger.Error("SelectPaintDiscountOprLog", ex);
            }
            return(result);
        }
        /// <summary>
        /// 添加喷漆打折配置
        /// </summary>
        /// <param name="model"></param>
        /// <param name="user"></param>
        /// <returns></returns>
        public bool AddPaintDiscountConfig(PaintDiscountConfigModel model, string user)
        {
            var result = false;

            try
            {
                var oldValue = GetPaintDiscountConfig(model.ServicePid, model.SurfaceCount);
                if (oldValue == null)
                {
                    var pkid = dbScopeManagerConfiguration.Execute
                                   (conn => DalPaintDiscountConfig.AddPaintDiscountConfig(conn, model));
                    result     = pkid > 0;
                    model.PKID = pkid;
                }
                else if (oldValue.IsDeleted)
                {
                    model.PKID = oldValue.PKID;
                    result     = dbScopeManagerConfiguration.Execute
                                     (conn => DalPaintDiscountConfig.UpdatePaintDiscountConfig(conn, model));
                }
                model.CreateDateTime     = DateTime.Now;
                model.LastUpdateDateTime = DateTime.Now;
                var log = new PaintDiscountOprLogModel
                {
                    LogType       = "PaintDiscountConfig",
                    IdentityId    = $"{model.ServicePid}_{model.SurfaceCount}",
                    OperationType = "Add",
                    OldValue      = null,
                    NewValue      = JsonConvert.SerializeObject(model),
                    Remarks       = $"添加服务Pid:{model.ServicePid},面数:{model.SurfaceCount}的配置",
                    Operator      = user,
                };
                LoggerManager.InsertLog("PaintDiscountOprLog", log);
            }
            catch (Exception ex)
            {
                result = false;
                Logger.Error("AddPaintDiscountConfig", ex);
            }
            return(result);
        }
        /// <summary>
        /// 删除喷漆打折配置
        /// </summary>
        /// <param name="carNoPrefix"></param>
        /// <param name="surfaceCount"></param>
        /// <param name="servicePid"></param>
        /// <param name="user"></param>
        /// <returns></returns>
        public bool DeletePaintDiscountConfig
            (string servicePid, int surfaceCount, string user)
        {
            var result = false;

            try
            {
                var oldValue = GetPaintDiscountConfig(servicePid, surfaceCount);
                if (oldValue != null && !oldValue.IsDeleted)
                {
                    result = dbScopeManagerConfiguration.Execute(conn => DalPaintDiscountConfig.DeletePaintDiscountConfig(conn, oldValue.PKID));
                    if (!result)
                    {
                        throw new Exception($"DeletePaintDiscountConfig失败,待删除数据{JsonConvert.SerializeObject(oldValue)}");
                    }
                    var log = new PaintDiscountOprLogModel
                    {
                        LogType       = "PaintDiscountConfig",
                        IdentityId    = $"{servicePid}_{surfaceCount}",
                        OperationType = "Delete",
                        OldValue      = JsonConvert.SerializeObject(oldValue),
                        NewValue      = null,
                        Remarks       = $"删除服务Pid:{oldValue.ServicePid},面数:{oldValue.SurfaceCount}的配置",
                        Operator      = user,
                    };
                    LoggerManager.InsertLog("PaintDiscountOprLog", log);
                }
                else
                {
                    result = true;
                }
            }
            catch (Exception ex)
            {
                result = false;
                Logger.Error("DeletePaintDiscountConfig", ex);
            }
            return(result);
        }
        /// <summary>
        /// 更新喷漆打折配置
        /// </summary>
        /// <param name="model"></param>
        /// <param name="user"></param>
        /// <returns></returns>
        public bool UpdatePaintDiscountConfig
            (PaintDiscountConfigModel model, string user)
        {
            var result = false;

            try
            {
                var oldValue = GetPaintDiscountConfig(model.ServicePid, model.SurfaceCount);
                if (oldValue != null)
                {
                    model.PKID = oldValue.PKID;
                    result     = dbScopeManagerConfiguration.Execute(conn =>
                                                                     DalPaintDiscountConfig.UpdatePaintDiscountConfig(conn, model));
                    if (!result)
                    {
                        throw new Exception($"UpdatePaintDiscountConfig失败,待更新数据{JsonConvert.SerializeObject(model)}");
                    }
                    model.CreateDateTime     = oldValue.CreateDateTime;
                    model.LastUpdateDateTime = DateTime.Now;
                    var log = new PaintDiscountOprLogModel
                    {
                        LogType       = "PaintDiscountConfig",
                        IdentityId    = $"{model.ServicePid}_{model.SurfaceCount}",
                        OperationType = "Update",
                        OldValue      = JsonConvert.SerializeObject(oldValue),
                        NewValue      = JsonConvert.SerializeObject(model),
                        Remarks       = $"更新服务Pid:{model.ServicePid},面数:{model.SurfaceCount}的配置",
                        Operator      = user,
                    };
                    LoggerManager.InsertLog("PaintDiscountOprLog", log);
                }
            }
            catch (Exception ex)
            {
                result = false;
                Logger.Error("UpdatePaintDiscountConfig", ex);
            }
            return(result);
        }
 /// <summary>
 /// 获取喷漆打折配置
 /// </summary>
 /// <param name="servicePid"></param>
 /// <param name="surfaceCount"></param>
 /// <returns></returns>
 private PaintDiscountConfigModel GetPaintDiscountConfig
     (string servicePid, int surfaceCount)
 {
     return(dbScopeManagerConfigurationRead.Execute
                (conn => DalPaintDiscountConfig.GetPaintDiscountConfig(conn, servicePid, surfaceCount)));
 }