예제 #1
0
        public JsonResult GetWXCardData(long id)
        {
            WXJSCardModel    wXJSCardModel    = new WXJSCardModel();
            bool             flag             = true;
            ICouponService   couponService    = ServiceHelper.Create <ICouponService>();
            CouponRecordInfo couponRecordById = null;

            if (flag)
            {
                couponRecordById = couponService.GetCouponRecordById(id);
                if (couponRecordById == null)
                {
                    flag = false;
                }
            }
            CouponInfo couponInfo = null;

            if (flag)
            {
                couponInfo = couponService.GetCouponInfo(couponRecordById.ShopId, couponRecordById.CouponId);
                if (couponInfo == null)
                {
                    flag = false;
                }
            }
            if (flag && couponInfo.IsSyncWeiXin == 1 && base.PlatformType == ChemCloud.Core.PlatformType.WeiXin)
            {
                wXJSCardModel = ser_wxcard.GetJSWeiXinCard(couponRecordById.CouponId, couponRecordById.Id, ThisCouponType);
            }
            return(Json(wXJSCardModel));
        }
예제 #2
0
        public ActionResult Detail(long id)
        {
            OrderInfo          order = ServiceHelper.Create <IOrderService>().GetOrder(id, base.CurrentUser.Id);
            IEnumerable <long> nums  = (
                from d in order.OrderItemInfo
                select d.ProductId).AsEnumerable <long>();
            var list = (
                from d in ServiceHelper.Create <IProductService>().GetProductByIds(nums)
                select new { Id = d.Id, ProductCode = d.ProductCode }).ToList();

            foreach (OrderItemInfo orderItemInfo in order.OrderItemInfo)
            {
                var variable = list.Find((d) => d.Id == orderItemInfo.ProductId);
                if (variable == null)
                {
                    continue;
                }
                orderItemInfo.ProductCode = variable.ProductCode;
            }
            ViewBag.Coupon = 0;
            CouponRecordInfo couponRecordInfo = ServiceHelper.Create <ICouponService>().GetCouponRecordInfo(order.UserId, order.Id);
            decimal          usedPrice        = ServiceHelper.Create <IShopBonusService>().GetUsedPrice(order.Id, order.UserId);

            if (couponRecordInfo == null)
            {
                ViewBag.Coupon = usedPrice;
            }
            else
            {
                ViewBag.Coupon = couponRecordInfo.Himall_Coupon.Price;
            }
            return(View(order));
        }
예제 #3
0
        public CouponRecordInfo AddCouponRecord(CouponRecordInfo info)
        {
            string     shopName = base.Context.ShopInfo.FindById <ShopInfo>(info.ShopId).ShopName;
            CouponInfo info2    = base.Context.CouponInfo.FirstOrDefault <CouponInfo>(d => d.Id == info.CouponId);

            if ((info2.IsSyncWeiXin == 1) && (info2.WXAuditStatus != 1))
            {
                throw new HimallException("优惠券状态错误,不可领取");
            }
            if (info2.ReceiveType == CouponInfo.CouponReceiveType.IntegralExchange)
            {
                MemberIntegralRecord model = new MemberIntegralRecord
                {
                    UserName   = info.UserName,
                    MemberId   = info.UserId,
                    RecordDate = new DateTime?(DateTime.Now),
                    TypeId     = MemberIntegral.IntegralType.Exchange,
                    Integral   = info2.NeedIntegral,
                    ReMark     = "兑换优惠券:面值" + info2.Price.ToString("f2")
                };
                IConversionMemberIntegralBase conversionMemberIntegralEntity = Instance <IMemberIntegralConversionFactoryService> .Create.Create(MemberIntegral.IntegralType.Exchange, model.Integral);

                Instance <IMemberIntegralService> .Create.AddMemberIntegral(model, conversionMemberIntegralEntity);
            }
            info.CounponStatus = CouponRecordInfo.CounponStatuses.Unuse;
            info.CounponSN     = Guid.NewGuid().ToString().Replace("-", "");
            info.UsedTime      = null;
            info.CounponTime   = DateTime.Now;
            info.ShopName      = shopName;
            info.OrderId       = null;
            CouponRecordInfo info3 = base.Context.CouponRecordInfo.Add(info);

            base.Context.SaveChanges();
            return(info3);
        }
예제 #4
0
        public ActionResult GetCouponSuccess(long id)
        {
            VshopCouponInfoModel vshopCouponInfoModel = new VshopCouponInfoModel();
            ICouponService       couponService        = ServiceHelper.Create <ICouponService>();
            CouponRecordInfo     couponRecordById     = couponService.GetCouponRecordById(id);

            if (couponRecordById == null)
            {
                throw new HimallException("错误的优惠券编号");
            }
            CouponInfo couponInfo = couponService.GetCouponInfo(couponRecordById.ShopId, couponRecordById.CouponId);

            if (couponInfo == null)
            {
                throw new HimallException("错误的优惠券编号");
            }
            vshopCouponInfoModel.CouponData       = couponInfo;
            vshopCouponInfoModel.CouponId         = couponInfo.Id;
            vshopCouponInfoModel.CouponRecordId   = couponRecordById.Id;
            vshopCouponInfoModel.ShopId           = couponInfo.ShopId;
            vshopCouponInfoModel.IsShowSyncWeiXin = false;
            if (base.CurrentUser != null && ServiceHelper.Create <IShopService>().IsFavoriteShop(base.CurrentUser.Id, couponInfo.ShopId))
            {
                vshopCouponInfoModel.IsFavoriteShop = true;
            }
            vshopCouponInfoModel.CouponId = id;
            if (couponInfo.IsSyncWeiXin == 1 && base.PlatformType == ChemCloud.Core.PlatformType.WeiXin)
            {
                vshopCouponInfoModel.WXJSInfo = ser_wxcard.GetSyncWeiXin(couponInfo.Id, couponRecordById.Id, ThisCouponType, base.Request.Url.AbsoluteUri);
                if (vshopCouponInfoModel.WXJSInfo != null)
                {
                    vshopCouponInfoModel.IsShowSyncWeiXin = true;
                }
            }
            string    wXLogo        = wxlogo;
            VShopInfo vShopByShopId = ServiceHelper.Create <IVShopService>().GetVShopByShopId(couponInfo.ShopId);

            if (vShopByShopId != null)
            {
                vshopCouponInfoModel.VShopid = vShopByShopId.Id;
                if (!string.IsNullOrWhiteSpace(vShopByShopId.WXLogo))
                {
                    wXLogo = vShopByShopId.WXLogo;
                }
                if (string.IsNullOrWhiteSpace(wxlogo) && !string.IsNullOrWhiteSpace(_siteSetting.WXLogo))
                {
                    wXLogo = _siteSetting.WXLogo;
                }
            }
            ViewBag.ShopLogo     = wXLogo;
            ViewBag.ShopId       = vshopCouponInfoModel.ShopId;
            ViewBag.FollowUrl    = vshopCouponInfoModel.FollowUrl;
            base.ViewBag.FavText = (vshopCouponInfoModel.IsFavoriteShop ? "己收藏" : "收藏供应商");
            ViewBag.VShopid      = vshopCouponInfoModel.VShopid;
            return(View(vshopCouponInfoModel));
        }
예제 #5
0
        public CouponRecordInfo GetCouponRecordById(long id)
        {
            CouponRecordInfo couponRecordInfo = context.CouponRecordInfo.FirstOrDefault((CouponRecordInfo d) => d.Id == id);

            if (couponRecordInfo.WXCodeId.HasValue)
            {
                couponRecordInfo.WXCardCodeInfo = context.WXCardCodeLogInfo.FirstOrDefault((WXCardCodeLogInfo d) => d.Id == couponRecordInfo.WXCodeId.Value);
            }
            return(couponRecordInfo);
        }
예제 #6
0
        public CouponRecordInfo GetCouponRecordInfo(long userId, long orderId)
        {
            CouponRecordInfo couponRecordInfo = context.CouponRecordInfo.FirstOrDefault((CouponRecordInfo a) => a.UserId == userId && a.OrderId == orderId);

            if (couponRecordInfo != null && couponRecordInfo.WXCodeId.HasValue)
            {
                couponRecordInfo.WXCardCodeInfo = context.WXCardCodeLogInfo.FirstOrDefault((WXCardCodeLogInfo d) => d.Id == couponRecordInfo.WXCodeId.Value);
            }
            return(couponRecordInfo);
        }
예제 #7
0
        public CouponRecordInfo GetCouponRecordInfo(long userId, long orderId)
        {
            CouponRecordInfo result = base.Context.CouponRecordInfo.FirstOrDefault <CouponRecordInfo>(a => (a.UserId == userId) && (a.OrderId == orderId));

            if ((result != null) && result.WXCodeId.HasValue)
            {
                result.WXCardCodeInfo = base.Context.WXCardCodeLogInfo.FirstOrDefault <WXCardCodeLogInfo>(d => d.Id == result.WXCodeId.Value);
            }
            return(result);
        }
예제 #8
0
        public CouponRecordInfo GetCouponRecordById(long id)
        {
            CouponRecordInfo result = base.Context.CouponRecordInfo.FirstOrDefault <CouponRecordInfo>(d => d.Id == id);

            if (result.WXCodeId.HasValue)
            {
                result.WXCardCodeInfo = base.Context.WXCardCodeLogInfo.FirstOrDefault <WXCardCodeLogInfo>(d => d.Id == result.WXCodeId.Value);
            }
            return(result);
        }
예제 #9
0
        public CouponRecordInfo GetCouponRecordById(long id)
        {
            CouponRecordInfo result = DbFactory.Default.Get <CouponRecordInfo>().Where(d => d.Id == id).FirstOrDefault();

            //数据补充
            if (result != null && result.WXCodeId.HasValue)
            {
                result.WXCardCodeInfo = DbFactory.Default.Get <WXCardCodeLogInfo>().Where(d => d.Id == result.WXCodeId.Value).FirstOrDefault();
            }
            return(result);
        }
예제 #10
0
        public JsonResult ReceiveCoupons(long couponId, long shopId)
        {
            var service = _iCouponService;
            var model   = service.GetCouponInfo(shopId, couponId);

            if (CurrentUser == null)
            {
                return(Json(new Result {
                    success = false, msg = "请登录后领取", status = -1
                }));
            }
            if (model.EndTime < DateTime.Now.Date)
            {
                return(Json(new Result {
                    success = false, msg = "此优惠券已过期", status = -2
                }));
            }
            var max = service.GetUserReceiveCoupon(couponId, CurrentUser.Id);

            if (model.PerMax != 0 && max >= model.PerMax)
            {
                return(Json(new Result {
                    success = false, msg = "每人最多领取" + model.PerMax + "张该类型的优惠券", status = -3
                }));
            }
            if (model.Himall_CouponRecord.Count >= model.Num)
            {
                return(Json(new Result {
                    success = false, msg = "优惠券已领完", status = -3
                }));
            }

            if (model.ReceiveType == CouponInfo.CouponReceiveType.IntegralExchange)
            {
                var userInte = MemberIntegralApplication.GetMemberIntegral(CurrentUser.Id);
                if (userInte.AvailableIntegrals < model.NeedIntegral)
                {
                    return(Json(new Result {
                        success = false, msg = "积分不足", status = -4
                    }));
                }
            }
            CouponRecordInfo info = new CouponRecordInfo();

            info.UserId   = CurrentUser.Id;
            info.UserName = CurrentUser.UserName;
            info.ShopId   = shopId;
            info.CouponId = couponId;
            service.AddCouponRecord(info);
            return(Json(new Result {
                success = true, msg = "领取成功", status = 1
            }));
        }
예제 #11
0
        //领取优惠券
        public object PostAcceptCoupon(CouponAcceptCouponModel value)
        {
            CheckUserLogin();
            long vshopId       = value.vshopId;
            long couponId      = value.couponId;
            var  couponService = ServiceProvider.Instance <ICouponService> .Create;
            var  couponInfo    = couponService.GetCouponInfo(couponId);

            if (couponInfo.EndTime < DateTime.Now)
            {
                //已经失效
                return(ErrorResult("优惠券已经过期.", 2));
            }
            CouponRecordQuery crQuery = new CouponRecordQuery();

            crQuery.CouponId = couponId;
            crQuery.UserId   = CurrentUser.Id;
            QueryPageModel <CouponRecordInfo> pageModel = couponService.GetCouponRecordList(crQuery);

            if (couponInfo.PerMax != 0 && pageModel.Total >= couponInfo.PerMax)
            {
                //达到个人领取最大张数
                return(ErrorResult("达到个人领取最大张数,不能再领取.", 3));
            }
            crQuery = new CouponRecordQuery()
            {
                CouponId = couponId
            };
            pageModel = couponService.GetCouponRecordList(crQuery);
            if (pageModel.Total >= couponInfo.Num)
            {
                //达到领取最大张数
                return(ErrorResult("此优惠券已经领完了.", 4));
            }
            if (couponInfo.ReceiveType == CouponInfo.CouponReceiveType.IntegralExchange)
            {
                var integral = MemberIntegralApplication.GetAvailableIntegral(CurrentUserId);
                if (integral < couponInfo.NeedIntegral)
                {
                    return(ErrorResult("积分不足 " + couponInfo.NeedIntegral.ToString(), 5));
                }
            }
            CouponRecordInfo couponRecordInfo = new CouponRecordInfo()
            {
                CouponId = couponId,
                UserId   = CurrentUser.Id,
                UserName = CurrentUser.UserName,
                ShopId   = couponInfo.ShopId
            };

            couponService.AddCouponRecord(couponRecordInfo);
            return(SuccessResult("", 1));
        }
예제 #12
0
        //领取优惠券
        public object PostAcceptCoupon(CouponAcceptCouponModel value)
        {
            CheckUserLogin();
            long vshopId       = value.vshopId;
            long couponId      = value.couponId;
            var  couponService = ServiceProvider.Instance <ICouponService> .Create;
            var  couponInfo    = couponService.GetCouponInfo(couponId);

            if (couponInfo.EndTime < DateTime.Now)
            {//已经失效
                return(Json(new { Status = 2, Success = "false", ErrorMsg = "优惠券已经过期." }));
            }
            CouponRecordQuery crQuery = new CouponRecordQuery();

            crQuery.CouponId = couponId;
            crQuery.UserId   = CurrentUser.Id;
            ObsoletePageModel <CouponRecordInfo> pageModel = couponService.GetCouponRecordList(crQuery);

            if (couponInfo.PerMax != 0 && pageModel.Total >= couponInfo.PerMax)
            {//达到个人领取最大张数
                return(Json(new { Status = 3, Success = "false", ErrorMsg = "达到个人领取最大张数,不能再领取." }));
            }
            crQuery = new CouponRecordQuery()
            {
                CouponId = couponId
            };
            pageModel = couponService.GetCouponRecordList(crQuery);
            if (pageModel.Total >= couponInfo.Num)
            {//达到领取最大张数
                return(Json(new { Status = 4, Success = "false", ErrorMsg = "此优惠券已经领完了." }));
            }
            if (couponInfo.ReceiveType == Himall.Model.CouponInfo.CouponReceiveType.IntegralExchange)
            {
                var userInte = MemberIntegralApplication.GetMemberIntegral(CurrentUserId);
                if (userInte.AvailableIntegrals < couponInfo.NeedIntegral)
                {
                    //积分不足
                    return(Json(new { Status = 5, Success = "false", ErrorMsg = "积分不足 " + couponInfo.NeedIntegral.ToString() }));
                }
            }
            CouponRecordInfo couponRecordInfo = new CouponRecordInfo()
            {
                CouponId = couponId,
                UserId   = CurrentUser.Id,
                UserName = CurrentUser.UserName,
                ShopId   = couponInfo.ShopId
            };

            couponService.AddCouponRecord(couponRecordInfo);
            return(Json(new { Status = 1, Success = "true" }));//执行成功
        }
예제 #13
0
        public CouponRecordInfo GetCouponRecordInfo(long userId, long orderId)
        {
            CouponRecordInfo result = DbFactory.Default.Get <CouponRecordInfo>().Where(a => a.UserId == userId && a.OrderId == orderId).FirstOrDefault();

            if (result != null)
            {
                //数据补充
                if (result.WXCodeId.HasValue)
                {
                    result.WXCardCodeInfo = DbFactory.Default.Get <WXCardCodeLogInfo>().Where(d => d.Id == result.WXCodeId.Value).FirstOrDefault();
                }
            }
            return(result);
        }
예제 #14
0
        public CouponRecordInfo AddCouponRecord(CouponRecordInfo info)
        {
            var shop = DbFactory.Default.Get <ShopInfo>().Where(p => p.Id == info.ShopId).FirstOrDefault();

            if (shop == null)
            {
                throw new HimallException("错误的店铺信息");
            }
            if (shop.ShopStatus != ShopInfo.ShopAuditStatus.Open)
            {
                throw new HimallException("兑换失败,当前店铺已过期/冻结");
            }
            if (shop.EndDate < DateTime.Now)
            {
                throw new HimallException("兑换失败,当前店铺已过期/冻结");
            }
            var shopName   = shop.ShopName;
            var coupondata = DbFactory.Default.Get <CouponInfo>().Where(d => d.Id == info.CouponId).FirstOrDefault();

            if (coupondata.IsSyncWeiXin == 1 && coupondata.WXAuditStatus != (int)WXCardLogInfo.AuditStatusEnum.Audited)
            {
                throw new HimallException("优惠券状态错误,不可领取");
            }
            DbFactory.Default
            .InTransaction(() =>
            {
                //扣积分
                if (coupondata.ReceiveType == CouponInfo.CouponReceiveType.IntegralExchange)
                {
                    Himall.Entities.MemberIntegralRecordInfo mirinfo = new Himall.Entities.MemberIntegralRecordInfo();
                    mirinfo.UserName   = info.UserName;
                    mirinfo.MemberId   = info.UserId;
                    mirinfo.RecordDate = DateTime.Now;
                    mirinfo.TypeId     = Himall.Entities.MemberIntegralInfo.IntegralType.Exchange;
                    mirinfo.Integral   = coupondata.NeedIntegral;
                    mirinfo.ReMark     = "兑换优惠券:面值" + coupondata.Price.ToString("f2");
                    var memberIntegral = ServiceProvider.Instance <IMemberIntegralConversionFactoryService> .Create.Create(Himall.Entities.MemberIntegralInfo.IntegralType.Exchange, mirinfo.Integral);
                    ServiceProvider.Instance <IMemberIntegralService> .Create.AddMemberIntegral(mirinfo, memberIntegral);
                }

                info.CounponStatus = CouponRecordInfo.CounponStatuses.Unuse;
                info.CounponSN     = Guid.NewGuid().ToString().Replace("-", "");
                info.UsedTime      = null;
                info.CounponTime   = DateTime.Now;
                info.ShopName      = shopName;
                info.OrderId       = null;
                var flag           = DbFactory.Default.Add(info);
            });
            return(info);
        }
예제 #15
0
        public CouponRecordInfo GetCouponRecordInfo(long userId, long orderId)
        {
            CouponRecordInfo result = Context.CouponRecordInfo.FirstOrDefault(a => a.UserId == userId && a.OrderId == orderId);

            if (result != null)
            {
                //数据补充
                if (result.WXCodeId.HasValue)
                {
                    result.WXCardCodeInfo = Context.WXCardCodeLogInfo.FirstOrDefault(d => d.Id == result.WXCodeId.Value);
                }
            }
            return(result);
        }
예제 #16
0
        public JsonResult AcceptCoupon(long vshopid, long couponid)
        {
            var couponService = _iCouponService;
            var couponInfo    = couponService.GetCouponInfo(couponid);

            if (couponInfo.EndTime < DateTime.Now)
            {//已经失效
                return(Json(new { status = 2, success = false, msg = "优惠券已经过期." }));
            }
            CouponRecordQuery crQuery = new CouponRecordQuery();

            crQuery.CouponId = couponid;
            crQuery.UserId   = CurrentUser.Id;
            ObsoletePageModel <CouponRecordInfo> pageModel = couponService.GetCouponRecordList(crQuery);

            if (couponInfo.PerMax != 0 && pageModel.Total >= couponInfo.PerMax)
            {//达到个人领取最大张数
                return(Json(new { status = 3, success = false, msg = "达到个人领取最大张数,不能再领取." }));
            }
            crQuery = new CouponRecordQuery()
            {
                CouponId = couponid
            };
            pageModel = couponService.GetCouponRecordList(crQuery);
            if (pageModel.Total >= couponInfo.Num)
            {//达到领取最大张数
                return(Json(new { status = 4, success = false, msg = "此优惠券已经领完了." }));
            }
            if (couponInfo.ReceiveType == Himall.Model.CouponInfo.CouponReceiveType.IntegralExchange)
            {
                var userInte = MemberIntegralApplication.GetMemberIntegral(CurrentUser.Id);
                if (userInte.AvailableIntegrals < couponInfo.NeedIntegral)
                {
                    //积分不足
                    return(Json(new { status = 5, success = false, msg = "积分不足 " + couponInfo.NeedIntegral.ToString() }));
                }
            }
            CouponRecordInfo couponRecordInfo = new CouponRecordInfo()
            {
                CouponId = couponid,
                UserId   = CurrentUser.Id,
                UserName = CurrentUser.UserName,
                ShopId   = couponInfo.ShopId
            };

            couponService.AddCouponRecord(couponRecordInfo);
            return(Json(new { status = 0, success = true, msg = "领取成功", crid = couponRecordInfo.Id }));//执行成功
        }
예제 #17
0
        public void UseCoupon(long userId, IEnumerable <long> Ids, IEnumerable <OrderInfo> orders)
        {
            DateTime date = DateTime.Now.Date;
            DbQuery <CouponRecordInfo> dbQuery = this.Context.CouponRecordInfo.Include("Himall_Coupon");
            Expression <Func <CouponRecordInfo, bool> > predicate = (Expression <Func <CouponRecordInfo, bool> >)(a => a.UserId == userId && Enumerable.Contains <long>(Ids, a.Id) && (int)a.CounponStatus == 0 && a.Himall_Coupon.EndTime > date);

            foreach (CouponRecordInfo couponRecordInfo in Enumerable.ToList <CouponRecordInfo>(LinqHelper.DistinctBy <CouponRecordInfo, long>((IEnumerable <CouponRecordInfo>)Queryable.Where <CouponRecordInfo>((IQueryable <CouponRecordInfo>)dbQuery, predicate), (Func <CouponRecordInfo, long>)(a => a.ShopId))))
            {
                CouponRecordInfo info = couponRecordInfo;
                info.CounponStatus = CouponRecordInfo.CounponStatuses.Used;
                info.UsedTime      = new DateTime?(DateTime.Now);
                info.OrderId       = new long?(Enumerable.FirstOrDefault <OrderInfo>(orders, (Func <OrderInfo, bool>)(a => a.ShopId == info.ShopId && a.ProductTotalAmount >= info.Himall_Coupon.OrderAmount)).Id);
                this.ser_wxcard.Consume(info.Id, this.ThisCouponType);
            }
            this.Context.SaveChanges();
        }
예제 #18
0
        public JsonResult AcceptCoupon(long vshopid, long couponid)
        {
            if (base.CurrentUser == null)
            {
                return(Json(new { status = 1, success = false, msg = "未登录." }));
            }
            ICouponService service    = ServiceHelper.Create <ICouponService>();
            CouponInfo     couponInfo = service.GetCouponInfo(couponid);

            if (couponInfo.EndTime < DateTime.Now)
            {
                return(Json(new { status = 2, success = false, msg = "优惠券已经过期." }));
            }
            CouponRecordQuery query = new CouponRecordQuery
            {
                CouponId = new long?(couponid),
                UserId   = new long?(base.CurrentUser.Id)
            };
            PageModel <CouponRecordInfo> couponRecordList = service.GetCouponRecordList(query);

            if ((couponInfo.PerMax != 0) && (couponRecordList.Total >= couponInfo.PerMax))
            {
                return(Json(new { status = 3, success = false, msg = "达到个人领取最大张数,不能再领取." }));
            }
            query = new CouponRecordQuery
            {
                CouponId = new long?(couponid)
            };
            if (service.GetCouponRecordList(query).Total >= couponInfo.Num)
            {
                return(Json(new { status = 4, success = false, msg = "此优惠券已经领完了." }));
            }
            if ((couponInfo.ReceiveType == (CouponInfo.CouponReceiveType) 1) && (ServiceHelper.Create <IMemberService>().GetMember(base.CurrentUser.Id).AvailableIntegrals < couponInfo.NeedIntegral))
            {
                return(Json(new { status = 5, success = false, msg = "积分不足 " + couponInfo.NeedIntegral.ToString() }));
            }
            CouponRecordInfo info = new CouponRecordInfo
            {
                CouponId = couponid,
                UserId   = base.CurrentUser.Id,
                UserName = base.CurrentUser.UserName,
                ShopId   = couponInfo.ShopId
            };

            service.AddCouponRecord(info);
            return(Json(new { status = 0, success = true, msg = "领取成功", crid = info.Id }));
        }
예제 #19
0
        public JsonResult AcceptCoupon(long vshopid, long couponid)
        {
            ICouponService couponService = ServiceHelper.Create <ICouponService>();
            CouponInfo     couponInfo    = couponService.GetCouponInfo(couponid);

            if (couponInfo.EndTime < DateTime.Now)
            {
                return(Json(new { status = 2, success = false, msg = "优惠券已经过期." }));
            }
            CouponRecordQuery couponRecordQuery = new CouponRecordQuery()
            {
                CouponId = new long?(couponid),
                UserId   = new long?(base.CurrentUser.Id)
            };
            PageModel <CouponRecordInfo> couponRecordList = couponService.GetCouponRecordList(couponRecordQuery);

            if (couponInfo.PerMax != 0 && couponRecordList.Total >= couponInfo.PerMax)
            {
                return(Json(new { status = 3, success = false, msg = "达到个人领取最大张数,不能再领取." }));
            }
            couponRecordQuery = new CouponRecordQuery()
            {
                CouponId = new long?(couponid)
            };
            couponRecordList = couponService.GetCouponRecordList(couponRecordQuery);
            if (couponRecordList.Total >= couponInfo.Num)
            {
                return(Json(new { status = 4, success = false, msg = "此优惠券已经领完了." }));
            }
            if (couponInfo.ReceiveType == CouponInfo.CouponReceiveType.IntegralExchange && ServiceHelper.Create <IMemberService>().GetMember(base.CurrentUser.Id).AvailableIntegrals < couponInfo.NeedIntegral)
            {
                int needIntegral = couponInfo.NeedIntegral;
                return(Json(new { status = 5, success = false, msg = string.Concat("积分不足 ", needIntegral.ToString()) }));
            }
            CouponRecordInfo couponRecordInfo = new CouponRecordInfo()
            {
                CouponId = couponid,
                UserId   = base.CurrentUser.Id,
                UserName = base.CurrentUser.UserName,
                ShopId   = couponInfo.ShopId
            };
            CouponRecordInfo couponRecordInfo1 = couponRecordInfo;

            couponService.AddCouponRecord(couponRecordInfo1);
            return(Json(new { status = 0, success = true, msg = "领取成功", crid = couponRecordInfo1.Id }));
        }
예제 #20
0
        private long SyncCouponRecordInfo(string cardid, long couponRecordId, WXCardLogInfo.CouponTypeEnum couponType)
        {
            long id = 0;

            if (!string.IsNullOrWhiteSpace(cardid))
            {
                WXCardLogInfo wXCardLogInfo = context.WXCardLogInfo.FirstOrDefault((WXCardLogInfo d) => d.CardId == cardid);
                if (wXCardLogInfo != null)
                {
                    WXCardCodeLogInfo wXCardCodeLogInfo = context.WXCardCodeLogInfo.FirstOrDefault((WXCardCodeLogInfo d) => d.CouponCodeId == couponRecordId && (int?)d.CouponType == (int?)couponType);
                    if (wXCardCodeLogInfo == null)
                    {
                        wXCardCodeLogInfo = new WXCardCodeLogInfo()
                        {
                            CardId       = cardid,
                            CodeStatus   = 0,
                            CouponType   = new WXCardLogInfo.CouponTypeEnum?(couponType),
                            CouponCodeId = new long?(couponRecordId),
                            SendTime     = new DateTime?(DateTime.Now),
                            CardLogId    = new long?(wXCardLogInfo.Id)
                        };
                        context.WXCardCodeLogInfo.Add(wXCardCodeLogInfo);
                        context.SaveChanges();
                        WXCardLogInfo.CouponTypeEnum?nullable       = wXCardCodeLogInfo.CouponType;
                        WXCardLogInfo.CouponTypeEnum valueOrDefault = nullable.GetValueOrDefault();
                        if (nullable.HasValue && valueOrDefault == WXCardLogInfo.CouponTypeEnum.Coupon)
                        {
                            CouponRecordInfo couponRecordInfo = context.CouponRecordInfo.FirstOrDefault((CouponRecordInfo d) => d.Id == couponRecordId);
                            if (couponRecordInfo != null)
                            {
                                couponRecordInfo.WXCodeId = new long?(wXCardCodeLogInfo.Id);
                            }
                        }
                        context.SaveChanges();
                    }
                    id = wXCardCodeLogInfo.Id;
                }
            }
            return(id);
        }
예제 #21
0
        /// <summary>
        /// 注册成功赠送优惠券
        /// </summary>
        /// <param name="id">会员ID</param>
        /// <param name="userName">会员登录名</param>
        /// <returns>返回赠送张数</returns>
        public static int RegisterSendCoupon(long id, string userName)
        {
            int result = 0;
            var model  = GetCouponSendByRegister();

            if (model != null && model.Status.Equals(Himall.CommonModel.CouponSendByRegisterStatus.Open) && model.total > 0) //如果活动开启,且优惠券有剩余
            {
                foreach (var item in model.CouponIds)
                {
                    if (item.inventory > 0)
                    {
                        CouponRecordInfo info = new CouponRecordInfo();
                        info.UserId   = id;
                        info.UserName = userName;
                        info.ShopId   = item.ShopId;
                        info.CouponId = item.Id;
                        _iCouponService.AddCouponRecord(info);
                        result++;
                    }
                }
            }
            return(result);
        }
예제 #22
0
        public void AddCouponRecord(CouponRecordInfo info)
        {
            string     shopName   = context.ShopInfo.FindById <ShopInfo>(info.ShopId).ShopName;
            CouponInfo couponInfo = context.CouponInfo.FirstOrDefault((CouponInfo d) => d.Id == info.CouponId);

            if (couponInfo.IsSyncWeiXin == 1 && couponInfo.WXAuditStatus != 1)
            {
                throw new HimallException("优惠券状态错误,不可领取");
            }
            if (couponInfo.ReceiveType == CouponInfo.CouponReceiveType.IntegralExchange)
            {
                MemberIntegralRecord memberIntegralRecord = new MemberIntegralRecord()
                {
                    UserName   = info.UserName,
                    MemberId   = info.UserId,
                    RecordDate = new DateTime?(DateTime.Now),
                    TypeId     = MemberIntegral.IntegralType.Exchange,
                    Integral   = couponInfo.NeedIntegral
                };
                decimal price = couponInfo.Price;
                memberIntegralRecord.ReMark = string.Concat("兑换优惠券:面值", price.ToString("f2"));
                IConversionMemberIntegralBase conversionMemberIntegralBase = Instance <IMemberIntegralConversionFactoryService> .Create.Create(MemberIntegral.IntegralType.Exchange, memberIntegralRecord.Integral);

                Instance <IMemberIntegralService> .Create.AddMemberIntegral(memberIntegralRecord, conversionMemberIntegralBase);
            }
            info.CounponStatus = CouponRecordInfo.CounponStatuses.Unuse;
            CouponRecordInfo couponRecordInfo = info;
            Guid             guid             = Guid.NewGuid();

            couponRecordInfo.CounponSN = guid.ToString().Replace("-", "");
            info.UsedTime    = null;
            info.CounponTime = DateTime.Now;
            info.ShopName    = shopName;
            info.OrderId     = null;
            context.CouponRecordInfo.Add(info);
            context.SaveChanges();
        }
예제 #23
0
        public CouponRecordInfo AddCouponRecord(CouponRecordInfo info)
        {
            var shopName   = Context.ShopInfo.FindById(info.ShopId).ShopName;
            var coupondata = Context.CouponInfo.FirstOrDefault(d => d.Id == info.CouponId);

            if (coupondata.IsSyncWeiXin == 1 && coupondata.WXAuditStatus != (int)WXCardLogInfo.AuditStatusEnum.Audited)
            {
                throw new HimallException("优惠券状态错误,不可领取");
            }

            //扣积分
            if (coupondata.ReceiveType == Himall.Model.CouponInfo.CouponReceiveType.IntegralExchange)
            {
                MemberIntegralRecord mirinfo = new MemberIntegralRecord();
                mirinfo.UserName   = info.UserName;
                mirinfo.MemberId   = info.UserId;
                mirinfo.RecordDate = DateTime.Now;
                mirinfo.TypeId     = MemberIntegral.IntegralType.Exchange;
                mirinfo.Integral   = coupondata.NeedIntegral;
                mirinfo.ReMark     = "兑换优惠券:面值" + coupondata.Price.ToString("f2");
                var memberIntegral = ServiceProvider.Instance <IMemberIntegralConversionFactoryService> .Create.Create(MemberIntegral.IntegralType.Exchange, mirinfo.Integral);

                ServiceProvider.Instance <IMemberIntegralService> .Create.AddMemberIntegral(mirinfo, memberIntegral);
            }

            info.CounponStatus = CouponRecordInfo.CounponStatuses.Unuse;
            info.CounponSN     = Guid.NewGuid().ToString().Replace("-", "");
            info.UsedTime      = null;
            info.CounponTime   = DateTime.Now;
            info.ShopName      = shopName;
            info.OrderId       = null;
            var item = Context.CouponRecordInfo.Add(info);

            Context.SaveChanges();
            return(item);
        }
예제 #24
0
        /// <summary>
        /// 领取优惠券
        /// </summary>
        /// <returns></returns>
        public object GetUserCoupon(string openId, long couponId)
        {
            CheckUserLogin();
            bool   status  = true;
            string message = "";
            //long vshopId = vspId;// value.vshopId; 店铺Id
            //long couponId = couponId;// value.couponId; 优惠劵Id
            var couponService = ServiceProvider.Instance <ICouponService> .Create;
            var couponInfo    = couponService.GetCouponInfo(couponId);

            if (couponInfo.EndTime < DateTime.Now)
            {//已经失效
                status  = false;
                message = "优惠券已经过期";
            }
            CouponRecordQuery crQuery = new CouponRecordQuery();

            crQuery.CouponId = couponId;
            crQuery.UserId   = CurrentUser.Id;
            ObsoletePageModel <CouponRecordInfo> pageModel = couponService.GetCouponRecordList(crQuery);

            if (couponInfo.PerMax != 0 && pageModel.Total >= couponInfo.PerMax)
            {//达到个人领取最大张数
                status  = false;
                message = "达到领取最大张数";
            }
            crQuery = new CouponRecordQuery()
            {
                CouponId = couponId
            };
            pageModel = couponService.GetCouponRecordList(crQuery);
            if (pageModel.Total >= couponInfo.Num)
            {//达到领取最大张数
                status  = false;
                message = "此优惠券已经领完了";
            }
            if (couponInfo.ReceiveType == Himall.Model.CouponInfo.CouponReceiveType.IntegralExchange)
            {
                var userInte = MemberIntegralApplication.GetMemberIntegral(CurrentUserId);
                if (userInte.AvailableIntegrals < couponInfo.NeedIntegral)
                {
                    //积分不足
                    status  = false;
                    message = "积分不足 ";
                }
            }
            if (status)
            {
                CouponRecordInfo couponRecordInfo = new CouponRecordInfo()
                {
                    CouponId = couponId,
                    UserId   = CurrentUser.Id,
                    UserName = CurrentUser.UserName,
                    ShopId   = couponInfo.ShopId
                };
                couponService.AddCouponRecord(couponRecordInfo);
                return(Json(new { Status = "OK", Message = "领取成功" }));//执行成功
            }
            else
            {
                return(Json(new { Status = "NO", Message = message }));
            }
        }
예제 #25
0
        public JsonResult ReceiveCoupons(long couponId, long shopId)
        {
            ICouponService couponService = ServiceHelper.Create <ICouponService>();
            CouponInfo     couponInfo    = couponService.GetCouponInfo(shopId, couponId);

            if (base.CurrentUser == null)
            {
                Result result = new Result()
                {
                    success = false,
                    msg     = "请登录后领取",
                    status  = -1
                };
                return(Json(result));
            }
            if (couponInfo.EndTime < DateTime.Now.Date)
            {
                Result result1 = new Result()
                {
                    success = false,
                    msg     = "此优惠券已过期",
                    status  = -2
                };
                return(Json(result1));
            }
            int userReceiveCoupon = couponService.GetUserReceiveCoupon(couponId, base.CurrentUser.Id);

            if (couponInfo.PerMax != 0 && userReceiveCoupon >= couponInfo.PerMax)
            {
                Result result2 = new Result()
                {
                    success = false,
                    msg     = string.Concat("每人最多领取", couponInfo.PerMax, "张该类型的优惠券"),
                    status  = -3
                };
                return(Json(result2));
            }
            if (couponInfo.Himall_CouponRecord.Count >= couponInfo.Num)
            {
                Result result3 = new Result()
                {
                    success = false,
                    msg     = "优惠券已领完",
                    status  = -3
                };
                return(Json(result3));
            }
            if (couponInfo.ReceiveType == CouponInfo.CouponReceiveType.IntegralExchange)
            {
                int availableIntegrals = base.CurrentUser.AvailableIntegrals;
                int needIntegral       = couponInfo.NeedIntegral;
            }
            CouponRecordInfo couponRecordInfo = new CouponRecordInfo()
            {
                UserId   = base.CurrentUser.Id,
                UserName = base.CurrentUser.UserName,
                ShopId   = shopId,
                CouponId = couponId
            };

            couponService.AddCouponRecord(couponRecordInfo);
            Result result4 = new Result()
            {
                success = true,
                msg     = "领取成功",
                status  = 1
            };

            return(Json(result4));
        }
        public static void WinnerSubmit(WeiActivityWinModel winModel)
        {
            //添加中奖信息记录
            WeiActivityWinInfo activityWinInfo = new WeiActivityWinInfo();

            activityWinInfo.ActivityId = winModel.activityId;
            activityWinInfo.AddDate    = DateTime.Now;
            activityWinInfo.UserId     = winModel.userId;
            activityWinInfo.IsWin      = winModel.isWin;
            if (activityWinInfo.IsWin)
            {
                if (winModel.awardType == WeiActivityAwardType.Integral)//积分
                {
                    activityWinInfo.AwardName = winModel.awardName + " 积分";
                    //新增积分记录
                    var factoryService        = ServiceProvider.Instance <IMemberIntegralConversionFactoryService> .Create;
                    MemberIntegralRecord info = new MemberIntegralRecord();
                    info.UserName   = _iMemberService.GetMember(activityWinInfo.UserId).UserName;
                    info.MemberId   = activityWinInfo.UserId;
                    info.RecordDate = DateTime.Now;
                    info.ReMark     = "微信活动中奖";
                    info.TypeId     = MemberIntegral.IntegralType.WeiActivity;
                    var memberIntegral = factoryService.Create(MemberIntegral.IntegralType.WeiActivity, Convert.ToInt32(winModel.awardName));//winModel.integrals为消耗积分 此处不是用户总积分
                    _iMemberIntegralService.AddMemberIntegral(info, memberIntegral);
                }
                else if (winModel.awardType == WeiActivityAwardType.Bonus)//红包
                {
                    activityWinInfo.AwardName = winModel.awardName;
                    _iBonusService.SetShareByUserId(winModel.bonusId, false, winModel.userId);//添加红包记录
                    _iBonusService.IncrReceiveCount(winModel.bonusId);
                }
                else
                {
                    activityWinInfo.AwardName = winModel.awardName;
                    //添加优惠券记录
                    CouponRecordInfo recordInfo = new CouponRecordInfo();
                    recordInfo.UserId   = winModel.userId;
                    recordInfo.UserName = _iMemberService.GetMember(winModel.userId).UserName;
                    recordInfo.ShopId   = _iCouponService.GetCouponInfo(winModel.couponId).ShopId;
                    recordInfo.CouponId = winModel.couponId;
                    _iCouponService.AddCouponRecord(recordInfo);
                }
            }
            else
            {
                activityWinInfo.AwardName = winModel.awardName;
            }
            activityWinInfo.AwardId = winModel.awardId;
            _iWeiActivityWinService.AddWinner(activityWinInfo);

            //消耗积分
            if (winModel.integrals > 0)
            {
                var factoryService        = ServiceProvider.Instance <IMemberIntegralConversionFactoryService> .Create;
                MemberIntegralRecord info = new MemberIntegralRecord();
                info.UserName   = _iMemberService.GetMember(activityWinInfo.UserId).UserName;
                info.MemberId   = activityWinInfo.UserId;
                info.RecordDate = DateTime.Now;
                info.ReMark     = "微信活动消耗";
                info.TypeId     = MemberIntegral.IntegralType.WeiActivity;
                var memberIntegral = factoryService.Create(MemberIntegral.IntegralType.WeiActivity, -winModel.integrals);
                _iMemberIntegralService.AddMemberIntegral(info, memberIntegral);
            }
        }
예제 #27
0
 /// <summary>
 /// 领取一个优惠券
 /// </summary>
 /// <param name="info"></param>
 public static void AddCouponRecord(CouponRecordInfo info)
 {
     _iCouponService.AddCouponRecord(info);
 }
예제 #28
0
        /// <summary>
        /// 发送优惠券,根据搜索条件
        /// </summary>
        /// <param name="query"></param>
        /// <param name="couponIds"></param>
        public static void SendCoupon(MemberPowerQuery query, IEnumerable <long> couponIds, string labelinfos = "")
        {
            var     siteName = SiteSettingApplication.GetSiteSettings().SiteName;
            decimal price    = 0;
            string  result   = "";

            //会员领取优惠券记录ID
            //   List<long> memberCouponIds = new List<long>();
            // dictResult = new Dictionary<string, int>();

            query.PageSize = 500;
            query.PageNo   = 1;

            var pageMode = MemberApplication.GetPurchasingPowerMember(query);

            if (pageMode.Total > 0)
            {
                var mUserMember = new List <MemberPurchasingPower>();
                while (pageMode.Models.Count() > 0)//循环批量获取用户信息
                {
                    //   string[] dests = pageMode.Models.Select(e => e.).ToArray();
                    foreach (var item in pageMode.Models)
                    {
                        mUserMember.Add(item);
                    }
                    query.PageNo += 1;
                    pageMode      = MemberApplication.GetPurchasingPowerMember(query);
                }


                var model = _iCouponService.GetCouponInfo(couponIds.ToArray());//获取所选优惠券集合

                //查询优惠券领取状况
                var mCouponRecord = _iCouponService.GetCouponRecordTotal(couponIds.ToArray());

                List <SendmessagerecordCouponInfo> lsendInfo = new List <SendmessagerecordCouponInfo>();
                //验证优惠券是否充足
                foreach (var item in model)
                {
                    price += item.Price;
                    lsendInfo.Add(new SendmessagerecordCouponInfo()
                    {
                        CouponId = item.Id
                    });
                    if ((item.Num - item.Himall_CouponRecord.Count()) < mUserMember.Count)
                    {
                        result = item.CouponName + "优惠券的数量不足,无法赠送";
                        break;
                    }
                }
                if (result == "")
                {
                    //发送优惠券
                    bool alTotal = false;
                    for (int i = 0; i < mUserMember.Count; i++)
                    {
                        bool suTotal = false;//会员发送优惠券成功数
                        foreach (var item in model)
                        {
                            //判断会员领取限制,是否可领取此优惠券
                            bool isf = true;
                            if (item.PerMax > 0)
                            {
                                int total = mCouponRecord.Where(p => p.UserId == mUserMember[i].Id && p.CouponId == item.Id).ToList().Count;
                                if (item.PerMax <= total)
                                {
                                    isf = false;
                                }
                            }

                            if (isf)
                            {
                                suTotal = true;
                                alTotal = true;

                                CouponRecordInfo info = new CouponRecordInfo();
                                info.UserId   = mUserMember[i].Id;
                                info.UserName = mUserMember[i].UserName;
                                info.ShopId   = item.ShopId;
                                info.CouponId = item.Id;
                                _iCouponService.AddCouponRecord(info);
                            }
                        }

                        if (suTotal)
                        {
                            MessageCouponInfo info = new MessageCouponInfo();
                            info.Money    = price;
                            info.SiteName = siteName;
                            info.UserName = mUserMember[i].UserName;
                            MessageApplication.SendMessageOnCouponSuccess(mUserMember[i].Id, info);
                        }
                    }

                    Log.Debug("sendCoupon:" + alTotal);
                    //查看成功发送会员数
                    if (alTotal)
                    {
                        //记录发送历史
                        var sendRecord = new Himall.Model.SendMessageRecordInfo
                        {
                            ContentType = WXMsgType.wxcard,
                            MessageType = MsgType.Coupon,
                            SendContent = "",
                            SendState   = 1,
                            SendTime    = DateTime.Now,
                            ToUserLabel = labelinfos == null ? "" : labelinfos,
                            Himall_SendmessagerecordCoupon = lsendInfo
                        };
                        WXMsgTemplateApplication.AddSendRecord(sendRecord);
                    }
                    else
                    {
                        result = "此标签下无符合领取此优惠券的会员";
                    }
                }
            }
            else
            {
                result = "该标签下无任何会员";
            }


            if (!string.IsNullOrWhiteSpace(result))
            {
                throw new HimallException(result);
            }
        }
예제 #29
0
        /// <summary>
        /// 发送优惠券,根据会员ID
        /// </summary>
        /// <param name="userIds">发送对象</param>
        /// <param name="couponIds">优惠券名称</param>
        public static void SendCouponByUserIds(IEnumerable <long> userIds, IEnumerable <long> couponIds)
        {
            var     model         = _iCouponService.GetCouponInfo(couponIds.ToArray());
            var     siteName      = SiteSettingApplication.GetSiteSettings().SiteName;
            var     mCouponRecord = _iCouponService.GetCouponRecordTotal(couponIds.ToArray());
            var     mUserMember   = MemberApplication.GetMembers(userIds);
            decimal price         = 0;
            string  result        = "";
            List <SendmessagerecordCouponInfo> lsendInfo = new List <SendmessagerecordCouponInfo>();

            //验证优惠券是否充足
            foreach (var item in model)
            {
                price += item.Price;
                lsendInfo.Add(new SendmessagerecordCouponInfo()
                {
                    CouponId = item.Id
                });
                if ((item.Num - item.Himall_CouponRecord.Count()) < mUserMember.Count)
                {
                    result = item.CouponName + "优惠券的数量不足,无法赠送";
                    break;
                }
            }
            if (result == "")
            {
                //发送优惠券
                bool alTotal = false;
                for (int i = 0; i < mUserMember.Count; i++)
                {
                    bool suTotal = false;//会员发送优惠券成功数
                    foreach (var item in model)
                    {
                        //判断会员领取限制,是否可领取此优惠券
                        bool isf = true;
                        if (item.PerMax > 0)
                        {
                            int total = mCouponRecord.Where(p => p.UserId == mUserMember[i].Id && p.CouponId == item.Id).ToList().Count;
                            if (item.PerMax <= total)
                            {
                                isf = false;
                            }
                        }

                        if (isf)
                        {
                            suTotal = true;
                            alTotal = true;

                            CouponRecordInfo info = new CouponRecordInfo();
                            info.UserId   = mUserMember[i].Id;
                            info.UserName = mUserMember[i].UserName;
                            info.ShopId   = item.ShopId;
                            info.CouponId = item.Id;
                            _iCouponService.AddCouponRecord(info);
                        }
                    }

                    if (suTotal)
                    {
                        MessageCouponInfo info = new MessageCouponInfo();
                        info.Money    = price;
                        info.SiteName = siteName;
                        info.UserName = mUserMember[i].UserName;
                        MessageApplication.SendMessageOnCouponSuccess(mUserMember[i].Id, info);
                    }
                }

                Log.Debug("sendCoupon:" + alTotal);
                //查看成功发送会员数
                if (alTotal)
                {
                    //记录发送历史
                    var sendRecord = new Himall.Model.SendMessageRecordInfo
                    {
                        ContentType = WXMsgType.wxcard,
                        MessageType = MsgType.Coupon,
                        SendContent = "",
                        SendState   = 1,
                        SendTime    = DateTime.Now,
                        ToUserLabel = "",
                        Himall_SendmessagerecordCoupon = lsendInfo
                    };
                    WXMsgTemplateApplication.AddSendRecord(sendRecord);
                }
                else
                {
                    result = "无符合领取此优惠券的会员";
                }
            }
            else
            {
                result = "该标签下无任何会员";
            }
            if (!string.IsNullOrWhiteSpace(result))
            {
                throw new HimallException(result);
            }
        }
예제 #30
0
        /// <summary>
        /// 发送优惠券
        /// </summary>
        /// <param name="labelids">发送标签</param>
        /// <param name="labelinfos">标签名称</param>
        /// <param name="couponIds">优惠券名称</param>
        /// <returns>-1:优惠券不足;-2:请选择发送的优惠券;-3:标签中用户数为0</returns>
        public static string SendCouponMsg(string labelids, string labelinfos, string couponIds, string url)
        {
            var    messageEmali = PluginsManagement.GetPlugin <IMessagePlugin>("Himall.Plugin.Message.Email");
            var    messageSMS   = PluginsManagement.GetPlugin <IMessagePlugin>("Himall.Plugin.Message.SMS");
            string result       = "";

            if (!couponIds.TrimEnd(',').Equals(""))
            {
                //取出标签对应的会员信息
                long[] lids = string.IsNullOrWhiteSpace(labelids) ? null : labelids.Split(',').Select(s => long.Parse(s)).ToArray();
                int    pageNo = 1, pageSize = 100;
                var    pageMode = MemberApplication.GetMembers(new MemberQuery
                {
                    LabelId  = lids,
                    PageNo   = pageNo,
                    PageSize = pageSize
                });
                if (pageMode.Total > 0)
                {
                    List <UserMemberInfo> mUserMember = new List <UserMemberInfo>();
                    while (pageMode.Models.Count() > 0)//循环批量获取用户信息
                    {
                        string[] dests = pageMode.Models.Select(e => e.Email).ToArray();
                        foreach (var item in pageMode.Models)
                        {
                            mUserMember.Add(item);
                        }
                        pageNo  += 1;
                        pageMode = MemberApplication.GetMembers(new MemberQuery
                        {
                            LabelId  = lids,
                            PageNo   = pageNo,
                            PageSize = pageSize
                        });
                    }

                    string[] arrStr       = couponIds.TrimEnd(',').Split(',');
                    long[]   arrcouponIds = arrStr.Select(a => long.Parse(a)).ToArray();

                    var model = _iCouponService.GetCouponInfo(arrcouponIds);//获取所选优惠券集合

                    //查询优惠券领取状况
                    var mCouponRecord = _iCouponService.GetCouponRecordTotal(arrcouponIds);

                    decimal price = 0;
                    List <SendmessagerecordCouponInfo>   lsendInfo = new List <SendmessagerecordCouponInfo>();
                    List <SendmessagerecordCouponSNInfo> lsendSN   = new List <SendmessagerecordCouponSNInfo>();
                    //验证优惠券是否充足
                    foreach (var item in model)
                    {
                        price += item.Price;
                        lsendInfo.Add(new SendmessagerecordCouponInfo()
                        {
                            CouponId = item.Id
                        });
                        if ((item.Num - item.Himall_CouponRecord.Count()) < mUserMember.Count)
                        {
                            result = item.CouponName + "优惠券的数量不足,无法赠送";
                            break;
                        }
                    }
                    var siteName = ServiceProvider.Instance <ISiteSettingService> .Create.GetSiteSettings().SiteName;

                    if (result == "")
                    {
                        //发送优惠券
                        bool alTotal = false;
                        for (int i = 0; i < mUserMember.Count; i++)
                        {
                            bool suTotal = false;//会员发送优惠券成功数
                            foreach (var item in model)
                            {
                                //判断会员领取限制,是否可领取此优惠券
                                bool isf = true;
                                if (item.PerMax > 0)
                                {
                                    int total = mCouponRecord.Where(p => p.UserId == mUserMember[i].Id && p.CouponId == item.Id).ToList().Count;
                                    if (item.PerMax <= total)
                                    {
                                        isf = false;
                                    }
                                }

                                if (isf)
                                {
                                    suTotal = true;
                                    alTotal = true;

                                    CouponRecordInfo info = new CouponRecordInfo();
                                    info.UserId   = mUserMember[i].Id;
                                    info.UserName = mUserMember[i].UserName;
                                    info.ShopId   = item.ShopId;
                                    info.CouponId = item.Id;
                                    var couponRecord = _iCouponService.AddCouponRecord(info);
                                    lsendSN.Add(new SendmessagerecordCouponSNInfo()
                                    {
                                        CouponSN = couponRecord.CounponSN
                                    });
                                }
                            }

                            if (suTotal)
                            {
                                MessageCouponInfo info = new MessageCouponInfo();
                                info.Money    = price;
                                info.SiteName = siteName;
                                info.UserName = mUserMember[i].UserName;
                                MessageApplication.SendMessageOnCouponSuccess(mUserMember[i].Id, info);
                            }
                        }

                        Log.Debug("sendCoupon:" + alTotal);
                        //查看成功发送会员数
                        if (alTotal)
                        {
                            //记录发送历史
                            var sendRecord = new Himall.Model.SendMessageRecordInfo
                            {
                                ContentType = WXMsgType.wxcard,
                                MessageType = MsgType.Coupon,
                                SendContent = "",
                                SendState   = 1,
                                SendTime    = DateTime.Now,
                                ToUserLabel = labelinfos == null ? "" : labelinfos,
                                Himall_SendmessagerecordCoupon = lsendInfo
                            };
                            var record = WXMsgTemplateApplication.AddSendRecordItem(sendRecord);
                            foreach (var item in lsendSN)
                            {
                                item.MessageId = record.Id;
                            }
                            _iCouponService.AddSendmessagerecordCouponSN(lsendSN);
                        }
                        else
                        {
                            result = "此标签下无符合领取此优惠券的会员";
                        }
                    }
                }
                else
                {
                    result = "该标签下无任何会员";
                }
            }
            else
            {
                result = "请选择发送的优惠券";
            }
            return(result);
        }