/// <summary>
        /// 奖品还未领取
        /// ReceiveTime=null,openId=value,activityId=value
        /// </summary>
        /// <param name="openId"></param>
        /// <param name="activityId"></param>
        /// <returns>奖品未领 返回model 否则返回null</returns>
        public TRP_AwardReceive hadTakeAward(string openId, string activityId)
        {
            TRP_AwardReceive model = null;

            try
            {
                Expression <Func <TRP_AwardReceive, bool> > exp     = a => 1 == 1;
                Expression <Func <TRP_AwardReceive, bool> > tempexp = a => 1 == 1;
                tempexp = a => a.ReceiveTime.Equals(null);
                exp     = CompileLinqSearch.AndAlso <TRP_AwardReceive>(tempexp, exp);
                if (!string.IsNullOrWhiteSpace(openId))
                {
                    tempexp = a => a.OpenId == openId.Trim();
                    //多条件拼装
                    exp = CompileLinqSearch.AndAlso <TRP_AwardReceive>(tempexp, exp);
                }

                if (!string.IsNullOrWhiteSpace(activityId))
                {
                    int efId = Convert.ToInt32(activityId);
                    tempexp = a => a.ActivityId == efId;
                    exp     = CompileLinqSearch.AndAlso <TRP_AwardReceive>(tempexp, exp);
                }



                var list = idal.FindBy(exp).ToList();
                if (list.Count > 0)
                {
                    model = list.FirstOrDefault();
                }
            }
            catch (Exception ex)
            {
                Logger.Error(string.Format("判断奖品是否已领取异常,异常信息{0}", ex.ToString()));
            }

            return(model);
        }
        /// <summary>
        /// 获取实体
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public TRP_AwardReceive GetByAwardDetailId(string id)
        {
            TRP_AwardReceive model = null;

            try
            {
                var efid = 0;
                Expression <Func <TRP_AwardReceive, bool> > exp = a => 1 == 1;
                if (!string.IsNullOrWhiteSpace(id))
                {
                    efid = Convert.ToInt32(id);
                    exp  = a => a.AwardDetailId == efid;
                }

                model = idal.FindBy(exp).ToList()[0];
            }
            catch (Exception ex)
            {
                Logger.Error(string.Format("异常信息:{0},id:{1}", ex.ToString(), id));
            }

            return(model);
        }
Exemplo n.º 3
0
        /// <summary>
        /// 发现金
        /// </summary>
        /// <returns></returns>
        public ActionResult GiveMoney(RequestModel request)
        {
            ActionResult empty = new EmptyResult();

            try
            {
                //扫码计数-所有
                scanCountDi.getBll().CountByNameAndId(request.activityId, request.activityName);


                #region 数据库日志记录  公共部分

                TRP_ClientLog entity = new TRP_ClientLog();
                entity.CreateTime = DateTime.Now;
                entity.DeleteMark = false;
                entity.Enable     = true;
                entity.PageUrl    = HttpContext.Request.Url.AbsoluteUri ?? "http://www.chinazhihuiping.com/wxredpackets/ReGaoPark/GiveMoney";
                entity.IPAddress  = HttpContext.Request.UserHostAddress ?? "127.0.0.1";
                entity.ActivityId = Convert.ToInt32(request.activityId);

                #endregion


                //获取微信用户信息
                wxUserInfoModel wxUser = GetWxUserInfo(request.code);

                if (wxUser == null)
                {
                    Response.Redirect(request.url + "&flag=1");
                    return(empty);
                }

                //微信用户openid
                string openid = wxUser.Openid;

                //保存微信信息
                if (!isExistOpenId(wxUser.Openid))
                {
                    //保存用户微信信息
                    saveUserInfo(wxUser);
                }

                TRP_AwardReceive receivedModel = null;

                #region 今天已参加活动

                if (isAttendToday(request.activityId, wxUser.Openid))
                {
                    //判断奖品是否已领
                    receivedModel = awardDi.getBll().hadTakeAward(wxUser.Openid, request.activityId);

                    #region 奖品已核销

                    //奖品已领
                    if (receivedModel == null)
                    {
                        Response.Redirect(request.url + "&flag=1");
                        return(empty);
                    }

                    #endregion

                    #region 奖品还未核销

                    //奖品还未领取
                    else
                    {
                        //获取奖品ID  int
                        string awardId = receivedModel.AwardDetailId.ToString();

                        //获取奖品详情
                        TRP_AwardDetail detailModel = detailDi.getBll().GetEntityById(awardId);

                        //奖品名称
                        string awardsName = "";

                        //加密奖品id
                        string ecodeAwardId = DESEncrypt.Encrypt(awardId, _key);

                        if (detailModel != null)
                        {
                            //奖品名称
                            awardsName = detailModel.AwardName;
                        }
                        else
                        {
                            Response.Redirect(request.url + "&flag=1");
                            return(empty);
                        }

                        //奖品类型
                        if (!string.IsNullOrWhiteSpace(awardsName))
                        {
                            GiveCash(awardsName, wxUser.Openid, request);
                        }
                        else
                        {
                            Response.Redirect(request.url + "&flag=1");
                            return(empty);
                        }

                        entity.Description = string.Format("用户在{0}点击红包,现金红包(为重复扫码,上次未核销奖品)", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
                        entity.PageDesc    = "实物扫码,上次未核销奖品";
                        entity.ActivityId  = Convert.ToInt32(request.activityId);
                        logDi.getBll().SaveLog(entity);
                        return(View("GiveMoney"));
                    }
                    #endregion
                }

                #endregion

                #region 今天还未参加活动  则请求奖品

                AwardsInfoModel awardsModel = new AwardsInfoModel();

                //请求奖品
                awardsModel = GetAwardsInfo(request.activityId);

                //奖品实体为null
                if (awardsModel == null)
                {
                    Response.Redirect(request.url + "&flag=1");
                    return(empty);
                }

                //奖品实体的类型为null
                if (awardsModel.Class != null)
                {
                    //奖品实体的类型为""
                    if (awardsModel.Class == "")
                    {
                        Response.Redirect(request.url + "&flag=1");
                        return(empty);
                    }
                }

                #endregion

                //发钱
                if (GiveCash(awardsModel.Class, openid, request))
                {
                    //保存领奖信息-测试
                    saveScanInfo(wxUser.Openid, awardsModel.id);
                    saveUserAwardReceiveInfo(wxUser.Openid, awardsModel.id);
                    return(View("GiveMoney"));
                }
                else
                {
                    Response.Redirect(request.url + "&flag=1");
                    return(empty);
                }
            }
            catch (Exception ex)
            {
                Response.Redirect(request.url);
                Common.Helper.Logger.Info(string.Format("获取用户微信Openid,发现金异常,异常信息:{0}", ex.ToString()));
                return(empty);
            }
        }