/// <summary> /// 按用户群发消息 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void btnSendToUsers_Click(object sender, EventArgs e) { if (cblUser.SelectedIndex >= 0) { string userName = lbPublicAccount.SelectedValue; ErrorMessage errorMessage; List <string> openIds = new List <string>(); foreach (ListItem item in cblUser.Items) { if (item.Selected) { openIds.Add(item.Value); } } string content = txtContent.Text; long msgId = MassMessage.Send(userName, openIds, MassMessageTypeEnum.text, content, out errorMessage); if (errorMessage.IsSuccess) { ltrMessage.Text = "群发消息成功。"; rblMassMessage.Items.Add(new ListItem(string.Format("id:{0},text:{1}", msgId, content), msgId.ToString())); } else { ltrMessage.Text = string.Format("群发消息失败。{0}", errorMessage); } } }
/// <summary> /// 查询群发消息状态 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void btnGetStatus_Click(object sender, EventArgs e) { if (rblMassMessage.SelectedIndex >= 0) { string userName = lbPublicAccount.SelectedValue; ErrorMessage errorMessage; long msgId = long.Parse(rblMassMessage.SelectedValue); bool success = MassMessage.GetStatus(userName, msgId, out errorMessage); if (errorMessage.IsSuccess) { ltrMessage.Text = string.Format("消息群发{0}。", success ? "成功" : "失败"); } else { ltrMessage.Text = string.Format("获取消息群发状态失败。{0}", errorMessage); } } }
/// <summary> /// 删除群发消息 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void btnDelete_Click(object sender, EventArgs e) { if (rblMassMessage.SelectedIndex >= 0) { string userName = lbPublicAccount.SelectedValue; long msgId = long.Parse(rblMassMessage.SelectedValue); ErrorMessage errorMessage = MassMessage.Delete(userName, msgId); if (errorMessage.IsSuccess) { ltrMessage.Text = "删除消息成功。"; rblMassMessage.Items.Remove(rblMassMessage.SelectedItem); } else { ltrMessage.Text = string.Format("删除消息失败。{0}", errorMessage); } } }
/// <summary> /// 预览群发消息 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void btnPreview_Click(object sender, EventArgs e) { if (cblUser.SelectedIndex >= 0) { string userName = lbPublicAccount.SelectedValue; ErrorMessage errorMessage; string openId = cblUser.SelectedValue; string content = txtContent.Text; long msgId = MassMessage.Preview(userName, openId, MassMessageTypeEnum.text, content, out errorMessage); if (errorMessage.IsSuccess) { ltrMessage.Text = "预览消息成功。"; rblMassMessage.Items.Add(new ListItem(string.Format("id:{0},text:{1}", msgId, content), msgId.ToString())); } else { ltrMessage.Text = string.Format("预览消息失败。{0}", errorMessage); } } }
/// <summary> /// 按分组群发消息 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void btnSendToGroup_Click(object sender, EventArgs e) { if (rblGroup.SelectedIndex >= 0) { string userName = lbPublicAccount.SelectedValue; ErrorMessage errorMessage; bool isToAll = string.IsNullOrWhiteSpace(rblGroup.SelectedValue); string groupId = isToAll ? "" : rblGroup.SelectedValue; string content = txtContent.Text; long msgId = MassMessage.Send(userName, isToAll, groupId, MassMessageTypeEnum.text, content, out errorMessage); if (errorMessage.IsSuccess) { ltrMessage.Text = "群发消息成功。"; rblMassMessage.Items.Add(new ListItem(string.Format("id:{0},text:{1}", msgId, content), msgId.ToString())); } else { ltrMessage.Text = string.Format("群发消息失败。{0}", errorMessage); } } }
public UpdateRecipientsResponse UpdateRecipients(UpdateRecipientsRequest request) { var validationResult = _massMessageQueries.GetValidationResult(request); if (!validationResult.IsValid) { throw new RegoValidationException(validationResult); } using (var scope = CustomTransactionScope.GetTransactionScope()) { if (!request.Id.HasValue) { DeleteUnsentMassMessages(); } MassMessage massMessage; if (request.Id.HasValue) { massMessage = _messagingRepository.MassMessages .Include(x => x.Recipients.Select(y => y.Language)) .Single(x => x.Id == request.Id); } else { massMessage = new MassMessage { Id = Guid.NewGuid(), AdminId = _actorInfoProvider.Actor.Id }; _messagingRepository.MassMessages.Add(massMessage); } massMessage.IpAddress = request.IpAddress; if (request.UpdateRecipientsType == UpdateRecipientsType.SelectSingle) { massMessage.Recipients.Add(_messagingRepository.Players .Include(x => x.Language) .Single(x => x.Id == request.PlayerId)); } else if (request.UpdateRecipientsType == UpdateRecipientsType.UnselectSingle) { massMessage.Recipients.Remove(massMessage.Recipients.Single(x => x.Id == request.PlayerId)); } else if (request.UpdateRecipientsType == UpdateRecipientsType.RecipientsListUnselectAll) { massMessage.Recipients.Clear(); } else { var playerIds = _massMessageQueries.CreateMassMessagePlayerQuery(request.SearchPlayersRequest) .Select(x => x.Id); if (request.UpdateRecipientsType == UpdateRecipientsType.SearchResultSelectAll) { var players = _messagingRepository.Players .Include(x => x.Language) .Where(x => playerIds.Contains(x.Id)); foreach (var player in players) { massMessage.Recipients.Add(player); } } else { var recipients = massMessage.Recipients.Where(x => playerIds.Contains(x.Id)).ToArray(); foreach (var recipient in recipients) { massMessage.Recipients.Remove(recipient); } } } _messagingRepository.SaveChanges(); scope.Complete(); IEnumerable <Interface.Data.Language> languages = null; if (massMessage.Recipients.Any()) { var languageEntities = massMessage.Recipients.GroupBy(x => x.LanguageCode).Select(x => x.First().Language); languages = Mapper.Map <List <Interface.Data.Language> >(languageEntities); } return(new UpdateRecipientsResponse { Id = massMessage.Id, HasRecipients = massMessage.Recipients.Any(), Languages = languages }); } }