⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 coupon.cs

📁 动易SiteFactory&#8482 网上商店系统1.0源代码
💻 CS
字号:
namespace PowerEasy.Shop
{
    using PowerEasy.Common;
    using PowerEasy.Components;
    using PowerEasy.Contents;
    using PowerEasy.Enumerations;
    using PowerEasy.IDal.Shop;
    using PowerEasy.Model.Contents;
    using PowerEasy.Model.Shop;
    using PowerEasy.Model.UserManage;
    using PowerEasy.UserManage;
    using System;
    using System.Collections.Generic;

    public sealed class Coupon
    {
        private static readonly ICoupon dal = DataAccess.CreateCoupon();

        private Coupon()
        {
        }

        public static bool Add(CouponInfo couponInfo)
        {
            return dal.Add(DoHtmlEncode(couponInfo));
        }

        private static bool CheckModel(OrderInfo orderInfo, string modelIdList)
        {
            IList<OrderItemInfo> infoListByOrderId = OrderItem.GetInfoListByOrderId(orderInfo.OrderId);
            string[] strArray = modelIdList.Split(new char[] { ',' });
            foreach (OrderItemInfo info in infoListByOrderId)
            {
                if (string.IsNullOrEmpty(info.TableName))
                {
                    continue;
                }
                CommonModelInfo commonModelInfo = ContentManage.GetCommonModelInfo(info.ProductId, info.TableName);
                foreach (string str in strArray)
                {
                    if (commonModelInfo.ModelId.ToString() == str)
                    {
                        return true;
                    }
                }
            }
            return false;
        }

        private static bool CheckModelForUseCoupon(string cartId, string modelIdList)
        {
            IList<ShoppingCartInfo> infoByCart = ShoppingCart.GetInfoByCart(cartId, false);
            string[] strArray = modelIdList.Split(new char[] { ',' });
            foreach (ShoppingCartInfo info in infoByCart)
            {
                CommonModelInfo commonModelInfo = ContentManage.GetCommonModelInfo(info.ProductId, info.TableName);
                foreach (string str in strArray)
                {
                    if (commonModelInfo.ModelId.ToString() == str)
                    {
                        return true;
                    }
                }
            }
            return false;
        }

        private static bool CheckProduct(OrderInfo orderInfo, string productList)
        {
            IList<OrderItemInfo> infoListByOrderId = OrderItem.GetInfoListByOrderId(orderInfo.OrderId);
            string[] strArray = productList.Split(new char[] { ',' });
            foreach (OrderItemInfo info in infoListByOrderId)
            {
                if (string.IsNullOrEmpty(info.TableName))
                {
                    continue;
                }
                ProductInfo productById = Product.GetProductById(info.ProductId, info.TableName);
                foreach (string str in strArray)
                {
                    if (productById.ProductId.ToString() == str)
                    {
                        return true;
                    }
                }
            }
            return false;
        }

        private static bool CheckProductForUseCoupon(string cartId, string productList)
        {
            IList<ShoppingCartInfo> infoByCart = ShoppingCart.GetInfoByCart(cartId, false);
            string[] strArray = productList.Split(new char[] { ',' });
            foreach (ShoppingCartInfo info in infoByCart)
            {
                if (string.IsNullOrEmpty(info.TableName))
                {
                    continue;
                }
                ProductInfo productById = Product.GetProductById(info.ProductId, info.TableName);
                foreach (string str in strArray)
                {
                    if (productById.ProductId.ToString() == str)
                    {
                        return true;
                    }
                }
            }
            return false;
        }

        public static int CheckUsePurview(CouponInfo couponInfo, CouponItemInfo itemInfo, decimal totalMoney, string cartId)
        {
            if (itemInfo.UseTimes >= couponInfo.LimitNum)
            {
                return 1;
            }
            if (DateTime.Today > couponInfo.UseEndDate)
            {
                return 2;
            }
            if (totalMoney < couponInfo.OrderTotalMoney)
            {
                return 3;
            }
            switch (couponInfo.ProductLimitType)
            {
                case ProductLimitType.NominateModel:
                    if (CheckModelForUseCoupon(cartId, couponInfo.ProductLimitContent))
                    {
                        break;
                    }
                    return 4;

                case ProductLimitType.NominateProduct:
                    if (CheckProductForUseCoupon(cartId, couponInfo.ProductLimitContent))
                    {
                        break;
                    }
                    return 5;
            }
            return 0x63;
        }

        public static void Create(OrderInfo orderInfo)
        {
            if (string.IsNullOrEmpty(orderInfo.UserName))
            {
                return;
            }
            IList<CouponInfo> list = GetList();
            IList<CouponInfo> list2 = new List<CouponInfo>();
            foreach (CouponInfo info in list)
            {
                bool flag = false;
                switch (info.CouponCreateType)
                {
                    case CouponCreateType.AllProduct:
                        flag = true;
                        break;

                    case CouponCreateType.NominateModel:
                        flag = CheckModel(orderInfo, info.CouponCreateContent);
                        break;

                    case CouponCreateType.NominateProduct:
                        flag = CheckProduct(orderInfo, info.CouponCreateContent);
                        break;

                    case CouponCreateType.OrderTotalMoney:
                        if (orderInfo.MoneyTotal >= DataConverter.CDecimal(info.CouponCreateContent))
                        {
                            flag = true;
                        }
                        break;
                }
                if (flag)
                {
                    list2.Add(info);
                }
            }
            IList<CouponInfo> list3 = new List<CouponInfo>();
            UserInfo usersByUserName = Users.GetUsersByUserName(orderInfo.UserName);
        Label_0137:
            foreach (CouponInfo info3 in list2)
            {
                foreach (string str in info3.UserGroup.Split(new char[] { ',' }))
                {
                    if (str == usersByUserName.GroupId.ToString())
                    {
                        list3.Add(info3);
                        goto Label_0137;
                    }
                }
            }
            foreach (CouponInfo info4 in list3)
            {
                CreateCoupon(info4, usersByUserName.UserId);
            }
        }

        private static void CreateCoupon(CouponInfo couponInfo, int userId)
        {
            string randStringByPattern = RandomManage.GetRandStringByPattern(couponInfo.CouponNumPattern);
            CouponItemInfo couponItemInfo = new CouponItemInfo();
            couponItemInfo.CouponId = couponInfo.CouponId;
            couponItemInfo.CouponNum = randStringByPattern;
            couponItemInfo.UserId = userId;
            couponItemInfo.OrderId = 0;
            CouponItem.Add(couponItemInfo);
        }

        public static bool Delete(string couponId)
        {
            if (DataValidator.IsValidId(couponId) && dal.Delete(couponId))
            {
                CouponItem.Delete(couponId);
                return true;
            }
            return false;
        }

        private static CouponInfo DoHtmlDecode(CouponInfo couponInfo)
        {
            couponInfo.CouponCreateContent = DataSecurity.HtmlDecode(couponInfo.CouponCreateContent);
            couponInfo.CouponName = DataSecurity.HtmlDecode(couponInfo.CouponName);
            couponInfo.CouponNumPattern = DataSecurity.HtmlDecode(couponInfo.CouponNumPattern);
            couponInfo.ProductLimitContent = DataSecurity.HtmlDecode(couponInfo.ProductLimitContent);
            couponInfo.UserGroup = DataSecurity.HtmlDecode(couponInfo.UserGroup);
            return couponInfo;
        }

        private static CouponInfo DoHtmlEncode(CouponInfo couponInfo)
        {
            couponInfo.CouponCreateContent = DataSecurity.HtmlEncode(couponInfo.CouponCreateContent);
            couponInfo.CouponName = DataSecurity.HtmlEncode(couponInfo.CouponName);
            couponInfo.CouponNumPattern = DataSecurity.HtmlEncode(couponInfo.CouponNumPattern);
            couponInfo.ProductLimitContent = DataSecurity.HtmlEncode(couponInfo.ProductLimitContent);
            couponInfo.UserGroup = DataSecurity.HtmlEncode(couponInfo.UserGroup);
            return couponInfo;
        }

        public static CouponInfo GetCouponInfoById(int couponId)
        {
            return GetCouponInfoById(couponId, false);
        }

        public static CouponInfo GetCouponInfoById(int couponId, bool isDecode)
        {
            CouponInfo couponInfoById = dal.GetCouponInfoById(couponId);
            if (isDecode && !couponInfoById.IsNull)
            {
                couponInfoById = DoHtmlDecode(couponInfoById);
            }
            return couponInfoById;
        }

        public static IList<CouponDetailInfo> GetDetailList(int startRowIndexId, int maxNumberRows, int userId)
        {
            return dal.GetDetailList(startRowIndexId, maxNumberRows, userId);
        }

        public static IList<CouponInfo> GetList()
        {
            return dal.GetList();
        }

        public static IList<CouponInfo> GetList(int startRowIndexId, int maxNumberRows)
        {
            return dal.GetList(startRowIndexId, maxNumberRows);
        }

        public static int GetTotalOfCoupon()
        {
            return dal.GetTotalOfCoupon();
        }

        public static int GetTotalOfCoupon(int userId)
        {
            return GetTotalOfCoupon();
        }

        public static bool SetState(int couponId, int state)
        {
            return dal.SetState(couponId, state);
        }

        public static bool Update(CouponInfo couponInfo)
        {
            return dal.Update(DoHtmlEncode(couponInfo));
        }
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -