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; } }
public void Save(InvitationSettings invitationSettings) { repository.Save(invitationSettings); }
/// <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); } }
/// <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); }