public ActionResult PictureVote() { string campaignId = Request.QueryString["campaignId"]; string itemId = Request.QueryString["itemId"]; if (String.IsNullOrEmpty(campaignId) || String.IsNullOrEmpty(itemId)) { return(RespondResult(false, "参数无效。")); } Campaign_PictureVoteArgs args = new Campaign_PictureVoteArgs(); args.DomainId = DomainContext.Domain.Id; args.CampaignId = Guid.Parse(campaignId); args.ItemId = Guid.Parse(itemId); args.OpenId = this.OpenId; //在允许未关注者参与的情况下,无会员信息 if (MemberContext != null && MemberContext.Member != null) { args.Member = MemberContext.Member.Id; } EnumCampaignPictureVoteResult result = _campaignManager.PictureVote.PictureVote(args); return(RespondDataResult((int)result)); }
/// <summary> /// 投票 /// </summary> /// <param name="args"></param> public EnumCampaignPictureVoteResult PictureVote(Campaign_PictureVoteArgs args) { if (args == null) { Debug.Assert(false, "args == null"); return(EnumCampaignPictureVoteResult.Failed); } CampaignEntity campaign = _campaignManager.GetCampaign(args.CampaignId); if (campaign == null) { return(EnumCampaignPictureVoteResult.Failed); } //状态是否进行中 switch (campaign.Status) { case EnumCampaignStatus.Preparatory: return(EnumCampaignPictureVoteResult.NotStarted); case EnumCampaignStatus.End: return(EnumCampaignPictureVoteResult.AlreadyEnded); } //判断要投的项目是否已被锁定 Campaign_PictureVoteItemEntity item = GetPictureVoteItem(args.ItemId); if (item == null) { return(EnumCampaignPictureVoteResult.Failed); } if (item.Lock) { return(EnumCampaignPictureVoteResult.Lock); } Campaign_PictureVoteEntity campaign_PictureVote = GetPictureVote(args.CampaignId); if (campaign_PictureVote == null) { return(EnumCampaignPictureVoteResult.Failed); } //是否允许非会员投票 if (campaign_PictureVote.AllowedNoAttentionVote == false && args.Member == null) { return(EnumCampaignPictureVoteResult.OnlyMember); } //查出当前在此活动下的投票记录 List <CommandParameter> parameterList = new List <CommandParameter>(); parameterList.Add(new CommandParameter("@campaignId", args.CampaignId)); parameterList.Add(new CommandParameter("@openId", args.OpenId)); //根据投票方式判断是否按天投 if (campaign_PictureVote.VoteType == EnumCampaignPictureVoteVoteType.Day) { List <Campaign_PictureVoteLogEntity> logList = _campaignManager.DataBase.Select <Campaign_PictureVoteLogEntity>( @"SELECT * FROM [Campaign_PictureVoteLog] WHERE [CampaignId] = @campaignId AND [OpenId] = @openId AND Convert(varchar(10),[VoteTime],120) = Convert(varchar(10),CONVERT(datetime,'" + DateTime.Now.ToShortDateString() + "'),120)", parameterList); //是否达到最大投票数 if (logList.Count >= campaign_PictureVote.MaxVoteTimes) { return(EnumCampaignPictureVoteResult.OverVoteTimesByDay); } if (logList.Count > 0) { //是否给同一个项目投过票 if ((from c in logList where c.ItemId == args.ItemId select c).Count() > 0) { return(EnumCampaignPictureVoteResult.VotedByDay); } } } else //NoRepetition { List <Campaign_PictureVoteLogEntity> logList = _campaignManager.DataBase.Select <Campaign_PictureVoteLogEntity>( "SELECT * FROM [Campaign_PictureVoteLog] WHERE [CampaignId] = @campaignId AND [OpenId] = @openId", parameterList); //是否达到最大投票数 if (logList.Count >= campaign_PictureVote.MaxVoteTimes) { return(EnumCampaignPictureVoteResult.OverVoteTimes); } if (logList.Count > 0) { //是否给同一个项目投过票 if ((from c in logList where c.ItemId == args.ItemId select c).Count() > 0) { return(EnumCampaignPictureVoteResult.Voted); } } } //投票 Campaign_PictureVoteLogEntity log = new Campaign_PictureVoteLogEntity(); log.CampaignId = args.CampaignId; log.Domain = args.DomainId; log.ItemId = args.ItemId; log.OpenId = args.OpenId; log.Member = args.Member; log.VoteTime = DateTime.Now; _campaignManager.DataBase.Insert(log); parameterList = new List <CommandParameter>(); parameterList.Add(new CommandParameter("@itemId", args.ItemId)); _campaignManager.DataBase.ExecuteNonQuery("UPDATE [Campaign_PictureVoteItem] SET [VoteQuantity] = [VoteQuantity] + 1 WHERE [Id] = @itemId", parameterList); return(EnumCampaignPictureVoteResult.Successful); }