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));
        }
Пример #2
0
        /// <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);
        }