/// <summary>
        ///
        /// </summary>
        /// <param name="activityId"></param>
        public bool IsInDate(string activityId, string QRRCode, int limitedTime)
        {
            lock (asyncLock)
            {
                bool isExpiryDate = false;
                try
                {
                    if (!string.IsNullOrWhiteSpace(activityId) &&
                        !string.IsNullOrWhiteSpace(QRRCode))
                    {
                        Expression <Func <TRP_QRCodeScanLimited, bool> > exp  = a => a.ActivityId == activityId;
                        Expression <Func <TRP_QRCodeScanLimited, bool> > exp1 = a => a.QRRCode == QRRCode;
                        //多条件拼装
                        exp = CompileLinqSearch.AndAlso <TRP_QRCodeScanLimited>(exp, exp1);
                        var iquerable = idal.FindBy(exp);
                        var list      = iquerable.ToList();
                        if (list.Count == 0)
                        {
                            TRP_QRCodeScanLimited model = new TRP_QRCodeScanLimited();
                            model.ActivityId   = activityId;
                            model.QRRCode      = QRRCode;
                            model.LimitedCount = 1;
                            model.UpdateTime   = DateTime.Now;
                            idal.Add(model);
                            idal.Save();
                            isExpiryDate = true;
                        }
                        else
                        {
                            TRP_QRCodeScanLimited model = list.FirstOrDefault();

                            //二维码已经过期
                            if (Convert.ToInt32(model.LimitedCount) >= limitedTime)
                            {
                                isExpiryDate = false;
                            }
                            //二维码还未过期,次数累计
                            else
                            {
                                isExpiryDate       = true;
                                model.LimitedCount = model.LimitedCount + 1;
                                model.UpdateTime   = DateTime.Now;
                                idal.Edit(model);
                                idal.Save();
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    Logger.Error(string.Format("二维码guid扫码计数异常,异常信息:{0}", ex.ToString()));
                }
                return(isExpiryDate);
            }
        }
Exemple #2
0
        /// <summary>
        /// 判断二维码是否过期
        /// </summary>
        /// <param name="activityId"></param>
        public bool IsOutofdate(string guid, ref string msg, int times = 1)
        {
            int _qrcodetimes = Convert.ToInt32(ConfigurationManager.AppSettings["qrcodetimes"]);

            if (_qrcodetimes > times)
            {
                times = _qrcodetimes;
            }

            lock (asyncLock)
            {
                bool success = false;

                try
                {
                    DynamicParameters param = new DynamicParameters();

                    if (!string.IsNullOrWhiteSpace(guid))
                    {
                        param.Add("QRRCode", guid);
                        string querysql             = @"SELECT * FROM TRP_QRCodeScanLimited WHERE QRRCode=@QRRCode";
                        TRP_QRCodeScanLimited model = idal.FindOne <TRP_QRCodeScanLimited>(querysql, param, false);

                        if (model == null)
                        {
                            TRP_QRCodeScanLimited entity = new TRP_QRCodeScanLimited();
                            entity.LimitedCount = 1;
                            entity.QRRCode      = guid;
                            entity.UpdateTime   = DateTime.Now;
                            string insertsql = @"INSERT INTO TRP_QRCodeScanLimited
                                          (
                                              [LimitedCount]
                                              ,[QRRCode]
                                              ,[UpdateTime]
                                           )
                                        VALUES
                                           (
                                             @LimitedCount
                                             ,@QRRCode
                                             ,@UpdateTime
                                            )            ";
                            idal.CreateEntity <TRP_QRCodeScanLimited>(insertsql, entity);
                            success = true;
                        }
                        else
                        {
                            if (model.LimitedCount < times)
                            {
                                model.LimitedCount = model.LimitedCount + 1;
                                param.Add("LimitedCount", model.LimitedCount);
                                string updatesql = @"UPDATE TRP_QRCodeScanLimited SET  LimitedCount=@LimitedCount WHERE QRRCode=@QRRCode";
                                idal.ExcuteNonQuery <TRP_QRCodeScanLimited>(updatesql, param, false);
                                success = true;
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    msg = "SERVER_ERROR";
                    Logger.Error(string.Format("判断二维码是否过期异常,异常信息:{0}", ex.ToString()));
                }

                return(success);
            }
        }