Beispiel #1
0
        /// <summary>
        /// Query查询
        /// </summary>
        /// <param name="filter"></param>
        /// <returns></returns>
        public static QueryResult QueryRules(FreeShippingChargeRuleQueryFilter filter)
        {
            int       count = 0;
            DataTable dt    = FreeShippingChargeRuleDA.Query(filter, out count);

            return(new QueryResult(dt, filter, count));
        }
Beispiel #2
0
        /// <summary>
        /// 加载一条免运费规则信息
        /// </summary>
        /// <param name="sysno"></param>
        /// <returns></returns>
        public static FreeShippingChargeRuleInfoResult Load(int sysno, int SellerSysNo)
        {
            if (sysno <= 0)
            {
                return(null);
            }

            return(FreeShippingChargeRuleDA.Load(sysno, SellerSysNo));
        }
Beispiel #3
0
        /// <summary>
        /// 创建一条免运费规则
        /// </summary>
        /// <param name="entity"></param>
        /// <returns></returns>
        public static FreeShippingChargeRuleInfo Create(FreeShippingChargeRuleInfo entity)
        {
            //新建的规则设置状态为“无效”,防止不符合规则的规则立即生效
            entity.Status   = FreeShippingAmountSettingStatus.DeActive;
            entity.IsGlobal = false;

            CreateOrUpdatePreCheck(entity);

            return(FreeShippingChargeRuleDA.Create(entity));
        }
Beispiel #4
0
        /// <summary>
        /// 删除一条无效的免运费规则
        /// </summary>
        /// <param name="sysno"></param>
        public static void Delete(int sysno, int SellerSysNo)
        {
            FreeShippingChargeRuleInfo info = Load(sysno, SellerSysNo);

            if (info == null)
            {
                throw new BusinessException(LanguageHelper.GetText("编号为{0}的免运费规则不存在!"), sysno);
            }

            if (info.Status != FreeShippingAmountSettingStatus.DeActive)
            {
                throw new BusinessException("只有“无效”状态的免运费规则才能删除!");
            }

            FreeShippingChargeRuleDA.Delete(info.SysNo.Value);
        }
Beispiel #5
0
        /// <summary>
        /// 设置一条免运费规则为无效状态
        /// </summary>
        /// <param name="sysno"></param>
        public static void Invalid(int sysno, int SellerSysNo, int UserSysNo)
        {
            FreeShippingChargeRuleInfo info = Load(sysno, SellerSysNo);

            if (info == null)
            {
                throw new BusinessException(LanguageHelper.GetText("编号为{0}的免运费规则不存在!"), sysno);
            }

            if (info.Status != FreeShippingAmountSettingStatus.Active)
            {
                throw new BusinessException("只有“有效”状态的免运费规则才能设置为无效!");
            }

            info.Status = FreeShippingAmountSettingStatus.DeActive;
            FreeShippingChargeRuleDA.UpdateStatus(info, UserSysNo);
        }
Beispiel #6
0
        /// <summary>
        /// 更新一条免运费规则
        /// </summary>
        /// <param name="entity"></param>
        public static void Update(FreeShippingChargeRuleInfo entity)
        {
            FreeShippingChargeRuleInfo info = Load(entity.SysNo.Value, entity.SellerSysNo.Value);

            if (info == null)
            {
                throw new BusinessException(LanguageHelper.GetText("编号为{0}的免运费规则不存在!"), entity.SysNo);
            }

            if (info.Status == FreeShippingAmountSettingStatus.Active)
            {
                throw new BusinessException("只有“无效”状态的免运费规则才能编辑!");
            }
            entity.IsGlobal = false;
            CreateOrUpdatePreCheck(entity);

            FreeShippingChargeRuleDA.UpdateInfo(entity);
        }
Beispiel #7
0
        /// <summary>
        /// 检查冲突的规则
        /// </summary>
        /// <param name="entity"></param>
        private static void CheckConflictRule(FreeShippingChargeRuleInfo entity)
        {
            List <FreeShippingChargeRuleInfo> allValidRules =
                FreeShippingChargeRuleDA.GetAllByStatus(FreeShippingAmountSettingStatus.Active, entity.SellerSysNo.Value);

            allValidRules.RemoveAll(x => x.SysNo == entity.SysNo);
            if (allValidRules != null && allValidRules.Count > 0)
            {
                List <FreeShippingChargeRuleInfo> checkList = new List <FreeShippingChargeRuleInfo>();
                List <SimpleObject> conflictList            = new List <SimpleObject>();
                // 1. 找出有相同时间段的规则
                foreach (var ruleItem in allValidRules)
                {
                    if (entity.StartDate >= ruleItem.StartDate && entity.EndDate <= ruleItem.EndDate)
                    {
                        checkList.Add(ruleItem);
                    }
                    else if (entity.StartDate <= ruleItem.StartDate && entity.EndDate >= ruleItem.StartDate)
                    {
                        checkList.Add(ruleItem);
                    }
                    else if (entity.StartDate <= ruleItem.EndDate && entity.EndDate >= ruleItem.EndDate)
                    {
                        checkList.Add(ruleItem);
                    }
                }
                #region  旧逻辑 现在不用

                /*if (HasElements(entity.PayTypeSettingValue) || HasElements(entity.ShipAreaSettingValue))
                 * {
                 *  SimpleObjectEqualityComparer comparer = new SimpleObjectEqualityComparer();
                 *
                 *  for (var index = checkList.Count - 1; index >= 0; index--)
                 *  {
                 *      var rule = checkList[index];
                 *      bool conflict = false;
                 *      SimpleObject conflictObject = null;
                 *
                 *      //2.  检查这些规则是否和当前规则有相同的支付方式
                 *      if (HasElements(entity.PayTypeSettingValue) && HasElements(rule.PayTypeSettingValue))
                 *      {
                 *          var intersect = entity.PayTypeSettingValue.Intersect(rule.PayTypeSettingValue, comparer);
                 *          if (intersect != null && intersect.Count() > 0)
                 *          {
                 *              conflict = true;
                 *              //冲突的支付方式:{0} !
                 *              conflictObject = new SimpleObject()
                 *              {
                 *                  ID = rule.SysNo.ToString(),
                 *                  BakString1 = string.Format("冲突的支付方式:{0} !", String.Join(",", intersect.Select(x => x.Name)))
                 *              };
                 *          }
                 *      }
                 *      else
                 *      {
                 *          //没有配置支付方式表示不限定配送方式,相当于entity和rule具有相同的支付方式设置,支付方式冲突
                 *          conflict = true;
                 *          conflictObject = new SimpleObject()
                 *          {
                 *              ID = rule.SysNo.ToString(),
                 *              BakString1 = "支付方式冲突 !"
                 *          };
                 *      }
                 *
                 *      //2.  检查这些规则是否和当前规则有相同的配送区域
                 *      if (HasElements(entity.ShipAreaSettingValue) && HasElements(rule.ShipAreaSettingValue))
                 *      {
                 *          var intersect = entity.ShipAreaSettingValue.Intersect(rule.ShipAreaSettingValue, comparer);
                 *          if (intersect != null && intersect.Count() > 0)
                 *          {
                 *              if (conflict)
                 *              {
                 *                  //冲突的配送区域:{0} !
                 *                  conflictObject.BakString1 = string.Format("{0} {1}", conflictObject.BakString1
                 *                      , string.Format("冲突的配送区域:{0} !", String.Join(",", intersect.Select(x => x.Name))));
                 *              }
                 *          }
                 *          else
                 *          {
                 *              conflict = false;
                 *              conflictObject = null;
                 *          }
                 *      }
                 *      else
                 *      {
                 *          if (conflict)
                 *          {
                 *              //冲突的配送区域
                 *              conflictObject.BakString1 = string.Format("{0} {1}", conflictObject.BakString1
                 *                  , "配送区域冲突!");
                 *          }
                 *      }
                 *
                 *      if (conflict)
                 *      {
                 *          conflictList.Add(conflictObject);
                 *          break;
                 *      }
                 *  }
                 * }
                 * else
                 * {
                 *  if (checkList.Count > 0)
                 *  {
                 *      var checkItem = checkList.First();
                 *      //冲突的时间范围:{1:yyyy-MM-dd} - {2:yyyy-MM-dd} !
                 *      conflictList.Add(new SimpleObject()
                 *      {
                 *          ID = checkItem.SysNo.ToString(),
                 *          BakString1 = string.Format("冲突的时间范围:{0:yyyy-MM-dd} - {1:yyyy-MM-dd} !", checkItem.StartDate, checkItem.EndDate)
                 *      });
                 *  }
                 * }*/
                #endregion
                if (checkList.Count > 0)
                {
                    SimpleObjectEqualityComparer comparer = new SimpleObjectEqualityComparer();
                    foreach (var checkitem in checkList)
                    {
                        bool         conflict       = false;
                        SimpleObject conflictObject = null;
                        var          Intersect      = checkitem.ProductSettingValue.Intersect(entity.ProductSettingValue, comparer);
                        if (Intersect != null && Intersect.Count() > 0)
                        {
                            conflict       = true;
                            conflictObject = new SimpleObject()
                            {
                                ID         = checkitem.SysNo.ToString(),
                                BakString1 = string.Format("冲突的商品:{0} !", String.Join(",", Intersect.Select(x => x.Name)))
                            };
                        }
                        if (conflict)
                        {
                            conflictList.Add(conflictObject);
                            break;
                        }
                    }
                }
                if (conflictList.Count > 0)
                {
                    var conflictRuleItem = conflictList.First();
                    throw new BusinessException("存在冲突的免运费规则:编号为{0},{1} ", conflictRuleItem.ID, conflictRuleItem.BakString1);
                }
            }
        }