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)); }
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)); }
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); }
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)); }
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); }
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); }
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); }
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); }
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); }
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 })); }
//领取优惠券 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)); }
//领取优惠券 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" }));//执行成功 }
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); }
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); }
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); }
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 }));//执行成功 }
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(); }
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 })); }
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 })); }
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); }
/// <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); }
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(); }
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); }
/// <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 })); } }
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); } }
/// <summary> /// 领取一个优惠券 /// </summary> /// <param name="info"></param> public static void AddCouponRecord(CouponRecordInfo info) { _iCouponService.AddCouponRecord(info); }
/// <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); } }
/// <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); } }
/// <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); }