Beispiel #1
0
        protected override bool SetSettingItemValue(SettingBase setting, System.Reflection.PropertyInfo property)
        {
            if (property.Name == "IntiveSerialPoint")
            {
                int           value = _Request.Get <int>("IntiveSerialPoint", Method.Post, 0);
                UserPointType type  = _Request.Get <UserPointType>("PointFieldIndex", Method.Post, UserPointType.Point1);
                UserPoint     point = AllSettings.Current.PointSettings.GetUserPoint(type);

                if (point.MaxValue < value)
                {
                    ThrowError(new CustomError("IntiveSerialPoint", "超出" + point.Name + "允许的最大值"));
                    return(false);
                }

                if (value <= 0)
                {
                    ThrowError(new CustomError("IntiveSerialPoint", "所需的积分值不能小于等于0"));
                    return(false);
                }
            }
            if (property.Name == "ShowRegisterInviteInput")
            {
                bool value = _Request.Get <bool>("ShowRegisterInviteInput", Method.Post, true);
                InvitationSettings temp = (InvitationSettings)setting;
                temp.ShowRegisterInviteInput = value;
                return(true);
            }

            return(base.SetSettingItemValue(setting, property));
        }
        /// <summary>
        /// 转换为实体
        /// </summary>
        /// <param name="invitationSettings"></param>
        /// <returns></returns>
        public NoticeSettings AsMessagesSettings(out InvitationSettings invitationSettings)
        {
            NoticeSettings noticeSettings = new NoticeSettings();

            noticeSettings.NoticeTypeSettingses = NoticeTypeSettings;

            invitationSettings = new InvitationSettings();
            invitationSettings.InvitationTypeSettingses = InvitationTypeSettings;

            return(noticeSettings);
        }
 /// <summary>
 /// 构造函数
 /// </summary>
 /// <param name="noticeSettings"></param>
 /// <param name="invitationSettings"></param>
 public MessagesSettingEditModel(NoticeSettings noticeSettings, InvitationSettings invitationSettings)
 {
     if (noticeSettings != null)
     {
         NoticeTypeSettings = noticeSettings.NoticeTypeSettingses;
     }
     if (invitationSettings != null)
     {
         InvitationTypeSettings = invitationSettings.InvitationTypeSettingses;
     }
 }
Beispiel #4
0
 public void Save(InvitationSettings invitationSettings)
 {
     repository.Save(invitationSettings);
 }
Beispiel #5
0
        /// <summary>
        /// 用户通过积分购买邀请码
        /// </summary>
        /// <param name="buyNumber"></param>
        public void BuyInviteSerial(AuthUser operatorUser, int buyCount)
        {
            if (buyCount <= 0)
            {
                ThrowError(new InviteSerialCountFormatError("buyCount", buyCount.ToString()));
                return;
            }
            if (operatorUser.UserID <= 0)
            {
                ThrowError(new NotLoginError());
                return;
            }

            InvitationSettings invitationSettings = AllSettings.Current.InvitationSettings;

            if (invitationSettings.InviteMode == InviteMode.Close ||
                invitationSettings.InviteMode == InviteMode.InviteLinkOptional ||
                invitationSettings.InviteMode == InviteMode.InviteLinkRequire
                )
            {
                ThrowError(new InviteSerialDisableError());
                return;
            }

            if (operatorUser.NeedInputInviteSerial)
            {
                ThrowError(new CustomError("operatorUser", "您的账号本身尚未输入邀请码,您不具备购买邀请码的资格"));
                return;
            }

            if (!CanBuyInviteSerial(operatorUser))
            {
                ThrowError(new NoPermissionManageInviteSerialError());
                return;
            }

            DateTime ExpiresDate;

            if (AllSettings.Current.InvitationSettings.InviteEffectiveHours <= 0)
            {
                ExpiresDate = DateTime.MaxValue;
            }
            else
            {
                ExpiresDate = DateTimeUtil.Now.AddHours(AllSettings.Current.InvitationSettings.InviteEffectiveHours);
            }

            //连续购买数量检查
            if (AllSettings.Current.InvitationSettings.Interval != InviteBuyInterval.Disable &&
                (AllSettings.Current.InvitationSettings.InviteSerialBuyCount < buyCount ||
                 InviteDao.Instance.CheckOverFlowBuyCount(operatorUser.UserID
                                                          , AllSettings.Current.InvitationSettings.Interval
                                                          , AllSettings.Current.InvitationSettings.InviteSerialBuyCount
                                                          )))
            {
                ThrowError(new InviteSerialBuyOverflow(AllSettings.Current.InvitationSettings.InviteSerialBuyCount,
                                                       AllSettings.Current.InvitationSettings.Interval));
                return;
            }

            UserPointType type = invitationSettings.PointFieldIndex;

            UserPoint point = AllSettings.Current.PointSettings.GetUserPoint(type);

            if (!point.Enable)
            {
                ThrowError(new BuyInviteSerialPointNotEnableError(point.Name));
                return;
            }

            int[] points = new int[] { 0, 0, 0, 0, 0, 0, 0, 0 };


            points[(int)type] = 0 - invitationSettings.IntiveSerialPoint * buyCount;

            if (UserBO.Instance.UpdateUserPoints(operatorUser.UserID, false, true, points, "邀请", string.Concat("购买", buyCount, "个邀请码每个" + invitationSettings.IntiveSerialPoint)))
            {
                string remark = string.Format("花费{0}{1}{2}购买", AllSettings.Current.InvitationSettings.IntiveSerialPoint, point.UnitName, point.Name);
                InviteDao.Instance.BuyInviteSerial(operatorUser.UserID, buyCount, ExpiresDate, remark);
            }
        }
Beispiel #6
0
        /// <summary>
        /// 用户注册时验证邀请码
        /// </summary>
        /// <param name="serial">邀请码</param>
        /// <param name="invitationUser">如果邀请码有限的话,输出邀请人</param>
        /// <returns></returns>
        public ErrorInfo ValidateInvideCode(string serial, out User invitationUser)
        {
            invitationUser = null;
            if (string.IsNullOrEmpty(serial))
            {
                return(new EmptyInviteSerialError("serial"));
            }

            InvitationSettings settings = AllSettings.Current.InvitationSettings;

            if (settings.InviteMode == InviteMode.Close)
            {
                return(new CustomError("serial", "邀请/推广功能并未开放"));
            }
            else if (settings.InviteMode == InviteMode.InviteSerialRequire ||
                     settings.InviteMode == InviteMode.InviteSerialOptional)//邀请码模式
            {
                Guid         serialGuid   = Guid.Empty;
                InviteSerial inviteSerial = null;
                try
                {
                    serialGuid = new Guid(serial);
                }
                catch
                {
                    return(new InviteSerialError("serial", serial));
                }

                inviteSerial = InviteBO.Instance.GetInviteSerial(serialGuid);

                if (inviteSerial == null)
                {
                    return(new InviteSerialError("serial", string.Empty));
                }

                if (inviteSerial.ExpiresDate < DateTimeUtil.Now)
                {
                    return(new InviteExpiredError());
                }

                switch (inviteSerial.Status)
                {
                case InviteSerialStatus.Used:
                {
                    return(new InviteUsedError());
                }

                case InviteSerialStatus.Expires:
                {
                    return(new InviteExpiredError());
                }

                default:
                {
                    invitationUser = UserBO.Instance.GetUser(inviteSerial.UserID);
                    ////如果邀请人本身就是未受邀请的用户的话
                    //if (invitationUser.Roles.IsInRole(Role.InviteLessUsers)) invitationUser = null;
                    break;
                }
                }
            }
            else  //固定连接模式
            {
                //string inviteUsername;

                invitationUser = FixInviteCodeToUser(serial);

                if (invitationUser == null)
                {
                    return(new InviteSerialError("serial", serial));
                }
            }
            return(null);
        }