Example #1
0
        /// <summary>
        /// 创建邀请码信息
        /// </summary>
        /// <param name="userInfo">创建用户信息</param>
        /// <returns></returns>
        public static int CreateInviteCode(ShortUserInfo userInfo)
        {
            InvitationConfigInfo configInfo = InvitationConfigs.GetConfig();
            InviteCodeInfo inviteCode = new InviteCodeInfo();
            inviteCode.CreatorId = userInfo.Uid;
            inviteCode.Creator = userInfo.Username;

            inviteCode.Code = BuildInviteCode();
            while (IsInviteCodeExist(inviteCode.Code))//生成的邀请码code是否存在于数据库中
            {
                inviteCode.Code = BuildInviteCode();
            }

            inviteCode.CreateTime = Utils.GetDateTime();
            inviteCode.InviteType = GeneralConfigs.GetConfig().Regstatus;
            inviteCode.ExpireTime = Utils.GetDateTime(configInfo.InviteCodeExpireTime);
            if (inviteCode.InviteType == 3)
                inviteCode.MaxCount = configInfo.InviteCodeMaxCount > 1 ? configInfo.InviteCodeMaxCount : 1;
            else
                inviteCode.MaxCount = configInfo.InviteCodeMaxCount;
            return Data.Invitation.CreateInviteCode(inviteCode);
        }
Example #2
0
 /// <summary>
 /// 在数据库中插入新的邀请码
 /// </summary>
 /// <param name="code"></param>
 /// <param name="userid"></param>
 /// <param name="createtime"></param>
 /// <param name="invalidtime"></param>
 /// <param name="maxusecount"></param>
 public int CreateInviteCode(InviteCodeInfo inviteCode)
 {
     DbParameter[] parms = { 
                                DbHelper.MakeInParam("@code",(DbType)SqlDbType.NChar, 7, inviteCode.Code),
                                DbHelper.MakeInParam("@creatorid",(DbType)SqlDbType.Int, 4, inviteCode.CreatorId),
                                DbHelper.MakeInParam("@creator",(DbType)SqlDbType.NChar, 20, inviteCode.Creator),
                                DbHelper.MakeInParam("@createtime",(DbType)SqlDbType.SmallDateTime, 4, inviteCode.CreateTime),
                                DbHelper.MakeInParam("@expiretime",(DbType)SqlDbType.SmallDateTime, 4, inviteCode.ExpireTime),
                                DbHelper.MakeInParam("@maxcount",(DbType)SqlDbType.Int, 4,inviteCode.MaxCount ),
                                DbHelper.MakeInParam("@invitetype",(DbType)SqlDbType.Int, 4, inviteCode.InviteType)
                           };
     return TypeConverter.ObjectToInt(DbHelper.ExecuteScalar(CommandType.StoredProcedure, string.Format("[{0}createinvitecode]", BaseConfigs.GetTablePrefix), parms));
 }
Example #3
0
 /// <summary>
 /// 将邀请码信息兑换为用户积分
 /// </summary>
 /// <param name="inviteCode">邀请码信息</param>
 /// <param name="addScoreLine"></param>
 public static void ConvertInviteCodeToCredits(InviteCodeInfo inviteCode, int inviteCodePayCount)
 {
     int mount = inviteCode.SuccessCount - inviteCodePayCount;
     if (mount > -1)//如果邀请码使用次数超过了加分线,则做加分操作
     {
         UserCredits.UpdateUserCreditsByInvite(inviteCode.CreatorId, inviteCode.SuccessCount);
     }
 }
Example #4
0
        /// <summary>
        /// 验证邀请码是否可用
        /// </summary>
        /// <param name="inviteCode">邀请码信息</param>
        /// <returns></returns>
        public static bool CheckInviteCode(InviteCodeInfo inviteCode)
        {
            GeneralConfigInfo configInfo = GeneralConfigs.GetConfig();
            if (inviteCode == null)
                return false;

            if (inviteCode.InviteType != configInfo.Regstatus)
                return false;

            if (inviteCode.CreateTime != inviteCode.ExpireTime)  //如果创建时间等于失效时间,则表示该邀请码永不失效
                if (Utils.StrDateDiffHours(inviteCode.ExpireTime, 0) > 0)
                    return false;

            //如果邀请类型为邀请链接式,且全局邀请设置中链接最大使用次数不是0(无数次),则校验该邀请链接的次数合法性
            //否则如果邀请码的最大使用次数不是0,则校验该邀请码的次数合法性
            int maxCount = inviteCode.InviteType == 2 ? InvitationConfigs.GetConfig().InviteCodeMaxCount : inviteCode.MaxCount;

            if (maxCount > 0 && inviteCode.SuccessCount >= maxCount)
                return false;

            return true;
        }
Example #5
0
        public void SendEmail()
        {
            List<string> emailAddress = new List<string>(Utils.SplitString(DNTRequest.GetString("email"), ","));

            if (invitecode != "")//针对弹窗发送邀请码的数据获取
                invitecodeinfo = Invitation.GetInviteCodeByCode(invitecode);
            else
            {
                AddErrLine("丢失参数导致邮件发送失败,请检查本地杀毒软件设置");
                return;
            }

            int sendSuccessCount = 0;
            foreach (string address in emailAddress)
            {
                
                if (string.IsNullOrEmpty(address) || !Utils.IsValidEmail(address))
                    continue;

                if (Emails.SendEmailNotify(address, "来自您的好友:" + invitecodeinfo.Creator + "的邀请!", 
                    string.Format(invitationconfiginfo.InvitationEmailTemplate, address, userid, invitecodeinfo.Creator, 
                    GetUserInviteUrl(invitecodeinfo.Code, true), config.Forumtitle, usersaid != "" ? usersaid : "", rooturl, avatarSmall, avatarMedium, avatarLarge)))
                    sendSuccessCount++;

                if (sendSuccessCount > 19)//如果邮件发送次数已经达到20个,则不在继续发送
                    break;
            }

            if (sendSuccessCount > 0)
            {
                AddMsgLine("成功发送" + sendSuccessCount.ToString() + "封Email");
                return;
            }
            else
            {
                AddErrLine("发送失败,请检查Email地址是否正确");
                return;
            }
        }
Example #6
0
        protected override void ShowPage()
        {
            pagetitle = "邀请注册";
            if (!Utils.InArray(config.Regstatus.ToString(), "2,3"))
            {
                AddErrLine("当前站点没有开启邀请功能!");
                return;
            }
            if (userid > 0)
            {
                if (action == "floatwinemail")
                {
                    return;
                }
                //提取预览头像
                avatarSmall = Avatars.GetAvatarUrl(userid, AvatarSize.Small);
                avatarMedium = Avatars.GetAvatarUrl(userid, AvatarSize.Medium);
                avatarLarge = Avatars.GetAvatarUrl(userid, AvatarSize.Large);

                userinfo = Users.GetUserInfo(userid);
                if (config.Regstatus == 2)
                {
                    invitecodeinfo = Invitation.GetInviteCodeByUid(userid);
                    if (invitecodeinfo != null)
                    {
                        inviteurl = GetUserInviteUrl(invitecodeinfo.Code, false);
                        userscore = GetUserInviteScore(invitecodeinfo.SuccessCount);
                        usersaid = string.Format("邀请附言:<div id=\"usersaidinemail\">{0}</div>", usersaid);
                        if (!ispost)
                            CreateEmailPreview();
                    }
                }
                else
                {
                    invitecodecount = Invitation.GetUserInviteCodeCount(userid);
                    invitecodelist = Invitation.GetUserInviteCodeList(userid, pageindex);
                    invitecodeprice = GetInviteCodePrice();
                    pagecount = ((invitecodecount - 1) / 10) + 1;
                    pagenumber = Utils.GetPageNumbers(pageindex, pagecount, "invite.aspx", 8);
                }
                if (ispost)
                {
                    switch (action)
                    {
                        case "createcode":
                            CreateInviteCode();//创建开放式邀请码
                            break;
                        case "convertcode":
                            ConvertInviteCode();//将开放邀请码兑换为用户积分
                            break;
                        case "buycode":
                            BuyInviteCode();//购买封闭式邀请码
                            break;
                        case "floatwinemailsend":
                            SendEmail();//弹窗邮件发送邀请码
                            break;
                        default:
                            return;
                    }
                }
            }
            if (userid == -1 && invitecode != "")
            {
                invitecodeinfo = Invitation.GetInviteCodeByCode(invitecode);
            }

        }
Example #7
0
 /// <summary>
 /// 创建邀请码
 /// </summary>
 /// <param name="inviteCode"></param>
 /// <returns></returns>
 public static int CreateInviteCode(InviteCodeInfo inviteCode)
 {
     return DatabaseProvider.GetInstance().CreateInviteCode(inviteCode);
 }
Example #8
0
 /// <summary>
 /// 从reader中装载邀请码信息
 /// </summary>
 /// <param name="reader"></param>
 /// <returns></returns>
 private static InviteCodeInfo LoadInviteCode(IDataReader reader)
 {
     InviteCodeInfo inviteCode = new InviteCodeInfo();
     inviteCode.InviteId = TypeConverter.ObjectToInt(reader["inviteid"]);
     inviteCode.Code = reader["invitecode"].ToString();
     inviteCode.CreatorId = TypeConverter.ObjectToInt(reader["creatorid"]);
     inviteCode.Creator = reader["creator"].ToString().Trim();
     inviteCode.CreateTime = Utils.GetDate(reader["createdtime"].ToString(), "");
     inviteCode.ExpireTime = Utils.GetDate(reader["expiretime"].ToString(), "");
     inviteCode.SuccessCount = TypeConverter.ObjectToInt(reader["successcount"]);
     inviteCode.MaxCount = TypeConverter.ObjectToInt(reader["maxcount"]);
     inviteCode.InviteType = TypeConverter.ObjectToInt(reader["invitetype"]);
     return inviteCode;
 }