示例#1
0
        private RedEnvelopeGetRecordInfo GetRedEnvelopeGetRecord(OAuthUserInfo authUserInfo, Guid sendCode, string orderId)
        {
            decimal amount = this.GetRedEnvelopeAmount(this.weiXinRedEnvelope);
            RedEnvelopeGetRecordInfo redEnvelopeGetRecordInfo = new RedEnvelopeGetRecordInfo();

            redEnvelopeGetRecordInfo.RedEnvelopeId = this.weiXinRedEnvelope.Id;
            redEnvelopeGetRecordInfo.UserName      = string.Empty;
            redEnvelopeGetRecordInfo.OpenId        = authUserInfo.OpenId;
            redEnvelopeGetRecordInfo.NickName      = authUserInfo.NickName;
            redEnvelopeGetRecordInfo.HeadImgUrl    = authUserInfo.HeadImageUrl;
            redEnvelopeGetRecordInfo.IsAttention   = authUserInfo.IsAttention;
            redEnvelopeGetRecordInfo.GetTime       = DateTime.Now;
            redEnvelopeGetRecordInfo.Amount        = amount;
            redEnvelopeGetRecordInfo.SendCode      = sendCode;
            redEnvelopeGetRecordInfo.OrderId       = orderId;
            return(redEnvelopeGetRecordInfo);
        }
示例#2
0
        public void AddCouponItemInfo(OAuthUserInfo oAuthUserInfo, RedEnvelopeGetRecordInfo redEnvelopeGetRecord)
        {
            CouponItemInfo couponItemInfo = new CouponItemInfo();
            MemberInfo     memberInfo     = null;

            memberInfo = ((HiContext.Current.UserId <= 0) ? MemberProcessor.GetMemberByOpenId("hishop.plugins.openid.weixin", oAuthUserInfo.OpenId) : HiContext.Current.User);
            if (memberInfo == null)
            {
                IDictionary <string, string> dictionary = new Dictionary <string, string>();
                dictionary.Add("OpenId", oAuthUserInfo.OpenId);
                dictionary.Add("IsAttention", oAuthUserInfo.IsAttention.ToNullString());
                dictionary.Add("unionId", oAuthUserInfo.unionId);
                dictionary.Add("NickName", oAuthUserInfo.NickName);
                dictionary.Add("ErrMsg", oAuthUserInfo.ErrMsg);
                dictionary.Add("RedEnvelopeId", redEnvelopeGetRecord.RedEnvelopeId.ToNullString());
                dictionary.Add("UserName", redEnvelopeGetRecord.UserName.ToNullString());
                dictionary.Add("OrderId", redEnvelopeGetRecord.OrderId.ToNullString());
                dictionary.Add("RedOpenId", redEnvelopeGetRecord.OpenId.ToNullString());
                dictionary.Add("SendCode", redEnvelopeGetRecord.SendCode.ToNullString());
                Globals.AppendLog(dictionary, "", "", "", "AddCouponItemInfo");
                this.toLogin.Visible    = true;
                this.toBuy.Visible      = false;
                this.divGetList.Visible = false;
            }
            else
            {
                couponItemInfo.UserId             = memberInfo.UserId;
                couponItemInfo.UserName           = redEnvelopeGetRecord.UserName;
                couponItemInfo.CanUseProducts     = "";
                couponItemInfo.ClosingTime        = this.weiXinRedEnvelope.EffectivePeriodEndTime;
                couponItemInfo.CouponId           = 0;
                couponItemInfo.RedEnvelopeId      = this.weiXinRedEnvelope.Id;
                couponItemInfo.CouponName         = this.weiXinRedEnvelope.Name;
                couponItemInfo.OrderUseLimit      = this.weiXinRedEnvelope.EnableUseMinAmount;
                couponItemInfo.Price              = redEnvelopeGetRecord.Amount;
                couponItemInfo.StartTime          = this.weiXinRedEnvelope.EffectivePeriodStartTime;
                couponItemInfo.UseWithGroup       = false;
                couponItemInfo.UseWithPanicBuying = false;
                couponItemInfo.UseWithFireGroup   = false;
                couponItemInfo.GetDate            = DateTime.Now;
                if (WeiXinRedEnvelopeProcessor.SetRedEnvelopeGetRecordToMember(redEnvelopeGetRecord.Id, memberInfo.UserName))
                {
                    CouponActionStatus couponActionStatus = CouponHelper.AddRedEnvelopeItemInfo(couponItemInfo);
                }
            }
        }
示例#3
0
        protected override void AttachChildControls()
        {
            this.toBuy              = (HtmlAnchor)this.FindControl("toBuy");
            this.toLogin            = (HtmlButton)this.FindControl("toLogin");
            this.divGetList         = (HtmlGenericControl)this.FindControl("divGetList");
            this.toBuy.Visible      = true;
            this.toLogin.Visible    = false;
            this.divGetList.Visible = true;
            string        text          = this.Page.Request["SendCode"];
            string        orderId       = this.Page.Request["OrderId"];
            OAuthUserInfo oAuthUserInfo = this.Context.Session["oAuthUserInfo"] as OAuthUserInfo;

            this.CheckRedEnvelope(text, orderId);
            if (HiContext.Current.UserId > 0 && oAuthUserInfo == null)
            {
                MemberInfo       user             = HiContext.Current.User;
                MemberOpenIdInfo memberOpenIdInfo = user.MemberOpenIds.FirstOrDefault((MemberOpenIdInfo item) => item.OpenIdType.ToLower() == "hishop.plugins.openid.weixin");
                if (memberOpenIdInfo != null)
                {
                    oAuthUserInfo = new OAuthUserInfo();
                    oAuthUserInfo.HeadImageUrl = user.Picture;
                    oAuthUserInfo.IsAttention  = user.IsSubscribe;
                    oAuthUserInfo.NickName     = user.NickName;
                    oAuthUserInfo.OpenId       = memberOpenIdInfo.OpenId;
                    oAuthUserInfo.unionId      = user.UnionId;
                }
            }
            if (oAuthUserInfo == null)
            {
                oAuthUserInfo = base.GetOAuthUserInfo(true);
                if (string.IsNullOrEmpty(oAuthUserInfo.OpenId))
                {
                    Globals.AppendLog("第一次获取用户OpenId失败,错误原因:" + oAuthUserInfo.ErrMsg, "", "", "OAuthUserInfoError");
                    this.Page.Response.Redirect("/Vshop/RedEnvelopeError?errorInfo=授权信息获取失败,请重试", true);
                }
                this.Context.Session["oAuthUserInfo"] = oAuthUserInfo;
            }
            if (string.IsNullOrEmpty(oAuthUserInfo.OpenId))
            {
                this.Page.Response.Redirect("/Vshop/RedEnvelopeError?errorInfo=用户OpenId获取失败,错误原因:" + oAuthUserInfo.ErrMsg, true);
            }
            Guid sendCode = Guid.Parse(text);
            RedEnvelopeGetRecordInfo redEnvelopeGetRecord = this.GetRedEnvelopeGetRecord(oAuthUserInfo, sendCode, orderId);
            int redEnvelopeGetRecordcCount = WeiXinRedEnvelopeProcessor.GetRedEnvelopeGetRecordcCount(this.weiXinRedEnvelope.Id, sendCode, orderId);
            RedEnvelopeGetRecordInfo lastRedEnvelopeGetRecord = WeiXinRedEnvelopeProcessor.GetLastRedEnvelopeGetRecord(oAuthUserInfo.OpenId, sendCode, orderId);
            DateTime dateTime = lastRedEnvelopeGetRecord?.GetTime ?? DateTime.Now.AddDays(-1.0);
            DateTime now      = DateTime.Now;
            bool     flag     = false;
            TimeSpan timeSpan = new TimeSpan(dateTime.Ticks);
            TimeSpan ts       = new TimeSpan(now.Ticks);

            if (timeSpan.Subtract(ts).Duration().TotalSeconds <= 4.0)
            {
                flag = true;
            }
            if (!flag)
            {
                if (redEnvelopeGetRecordcCount >= this.weiXinRedEnvelope.MaxNumber)
                {
                    if (oAuthUserInfo.IsAttention && WeiXinRedEnvelopeProcessor.IsGetInToday(oAuthUserInfo.OpenId, sendCode, true, orderId))
                    {
                        this.Page.Response.Redirect("/Vshop/RedEnvelopePrompt", true);
                    }
                    else
                    {
                        this.Page.Response.Redirect("/Vshop/RedEnvelopeFinish", true);
                    }
                }
                if (WeiXinRedEnvelopeProcessor.IsGetInToday(oAuthUserInfo.OpenId, sendCode, null, orderId))
                {
                    this.Page.Response.Redirect("/Vshop/RedEnvelopePrompt", true);
                }
                if (WeiXinRedEnvelopeProcessor.GetInTodayCount(oAuthUserInfo.OpenId, "", null, "") >= 3)
                {
                    this.Page.Response.Redirect("/Vshop/RedEnvelopePrompt", true);
                }
                if (!oAuthUserInfo.IsAttention)
                {
                    if (!WeiXinRedEnvelopeProcessor.IsGetInToday(oAuthUserInfo.OpenId, sendCode, null, ""))
                    {
                        WeiXinRedEnvelopeProcessor.AddRedEnvelopeGetRecord(redEnvelopeGetRecord);
                        this.AddCouponItemInfo(oAuthUserInfo, redEnvelopeGetRecord);
                    }
                    RedEnvelopeSendRecord redEnvelopeSendRecord = WeiXinRedEnvelopeProcessor.GetRedEnvelopeSendRecord(Guid.Parse(text), "", "");
                    this.Page.Response.Redirect($"AttentionHNYSJY?SendRecordId={redEnvelopeSendRecord.Id}", true);
                }
                else
                {
                    string openId = oAuthUserInfo.OpenId;
                    if (WeiXinRedEnvelopeProcessor.CheckRedEnvelopeGetRecordNoAttentionIsExist(openId))
                    {
                        WeiXinRedEnvelopeProcessor.SetRedEnvelopeGetRecordToAttention(oAuthUserInfo.NickName, oAuthUserInfo.HeadImageUrl, openId);
                    }
                    else
                    {
                        WeiXinRedEnvelopeProcessor.AddRedEnvelopeGetRecord(redEnvelopeGetRecord);
                        this.AddCouponItemInfo(oAuthUserInfo, redEnvelopeGetRecord);
                    }
                }
            }
            this.redEnvelopeAmount       = (Literal)this.FindControl("RedEnvelopeAmount");
            this.redEnvelopeAmount.Text  = (flag ? ((lastRedEnvelopeGetRecord != null) ? lastRedEnvelopeGetRecord.Amount.F2ToString("f2") : "0") : redEnvelopeGetRecord.Amount.F2ToString("f2"));
            this.rptRedEnvelopeGetRecord = (WapTemplatedRepeater)this.FindControl("rptRedEnvelopeGetRecord");
            this.RedEnvelopeGetRecordBind(text);
        }
示例#4
0
 public static int AddRedEnvelopeGetRecordRID(RedEnvelopeGetRecordInfo redEnvelopeGetRecord)
 {
     return(new RedEnvelopeGetRecordDao().Add(redEnvelopeGetRecord, null).ToInt(0));
 }
示例#5
0
 public static bool AddRedEnvelopeGetRecord(RedEnvelopeGetRecordInfo redEnvelopeGetRecord)
 {
     redEnvelopeGetRecord.Id = new RedEnvelopeGetRecordDao().Add(redEnvelopeGetRecord, null).ToInt(0);
     return(redEnvelopeGetRecord.Id > 0);
 }