/// <summary> /// 红包扫码计数 /// </summary> /// <param name="activityName">活动名称</param> public void CountByName(string activityName) { lock (asyncLock) { try { if (!string.IsNullOrWhiteSpace(activityName)) { Expression <Func <TRP_ScanCount, bool> > exp = a => a.ActivityName == activityName; var iquerable = idal.FindBy(exp); var list = iquerable.ToList(); if (list.Count == 0) { TRP_ScanCount model = new TRP_ScanCount(); model.ActivityName = activityName; model.Count = 1; idal.Add(model); idal.Save(); } else { TRP_ScanCount model = list.Single(); model.Count = model.Count + 1; idal.Edit(model); idal.Save(); } } } catch (Exception ex) { Logger.Error(string.Format("红包扫码计数异常,异常信息:{0}", ex.ToString())); } } }
/// <summary> /// 根据活动id 和 活动名称 记录扫码次数 /// </summary> /// <param name="activityId"></param> /// <param name="activityName"></param> public void CountByNameAndId(string activityId, string activityName) { lock (asyncLock) { try { if (!string.IsNullOrWhiteSpace(activityName)) { Expression <Func <TRP_ScanCount, bool> > exp = a => 1 == 1; Expression <Func <TRP_ScanCount, bool> > tempexp = a => 1 == 1; if (!string.IsNullOrWhiteSpace(activityId)) { exp = a => a.ActivityId == activityId; tempexp = a => a.ActivityName == activityName; //多条件拼装 exp = CompileLinqSearch.AndAlso <TRP_ScanCount>(tempexp, exp); var iquerable = idal.FindBy(exp); var list = iquerable.ToList(); if (list.Count == 0) { TRP_ScanCount model = new TRP_ScanCount(); model.ActivityName = activityName; model.ActivityId = activityId; model.Count = 1; model.UpdateTime = DateTime.Now; idal.Add(model); idal.Save(); } else { TRP_ScanCount model = list.Single(); model.Count = model.Count + 1; model.UpdateTime = DateTime.Now; idal.Edit(model); idal.Save(); } } } } catch (Exception ex) { Logger.Error(string.Format("红包扫码计数异常,活动ID{0},活动名称{1}异常信息:{2}", activityId, activityName, ex.ToString())); } } }
//// 定义一个静态变量来保存类的实例 //private static TRP_ScanCount_BLL mySingBll; //// 定义一个标识确保线程同步 //private static readonly object locker = new object(); //// 定义私有构造函数,使外界不能创建该类实例 //private TRP_ScanCount_BLL() //{ //} ////定义公有方法提供一个全局访问点。 //public static TRP_ScanCount_BLL GetInstance() //{ // //这里的lock其实使用的原理可以用一个词语来概括“互斥”这个概念也是操作系统的精髓 // //其实就是当一个进程进来访问的时候,其他进程便先挂起状态 // if (mySingBll == null)//区别就在这里 // { // lock (locker) // { // // 如果类的实例不存在则创建,否则直接返回 // if (mySingBll == null) // { // mySingBll = new TRP_ScanCount_BLL(); // } // } // } // return mySingBll; //} /// <summary> /// 红包扫码计数 /// </summary> /// <param name="activityId">活动id</param> public string CountById(string activityId) { string sum = ""; lock (asyncLock) { try { if (!string.IsNullOrWhiteSpace(activityId)) { Expression <Func <TRP_ScanCount, bool> > exp = a => a.ActivityId == activityId; Expression <Func <TRP_ScanCount, bool> > exp1 = a => a.ActivityName == null; exp = CompileLinqSearch.AndAlso(exp, exp1); var iquerable = idal.FindBy(exp); var list = iquerable.ToList(); if (list.Count == 0) { TRP_ScanCount model = new TRP_ScanCount(); model.ActivityId = activityId; model.Count = 1; idal.Add(model); idal.Save(); sum = model.Count.ToString(); } else { TRP_ScanCount model = list.Single(); model.Count = model.Count + 1; idal.Edit(model); idal.Save(); sum = model.Count.ToString(); } } } catch (Exception ex) { Logger.Error(string.Format("红包扫码计数异常,异常信息:{0}", ex.ToString())); } } return(sum); }
/// <summary> /// 红包扫码计数 /// </summary> /// <param name="activityid"></param> /// <param name="msg"></param> /// <param name="activityname"></param> /// <param name="url"></param> /// <returns></returns> public bool QrScanCount(string activityid, ref string msg, string activityname = "undefine ActivityName", string url = "undefine url") { lock (asyncLock) { bool success = false; try { DynamicParameters param = new DynamicParameters(); if (!string.IsNullOrWhiteSpace(activityid)) { param.Add("ActivityId", activityid); param.Add("ActivityName", activityname); string querysql = @"SELECT * FROM TRP_ScanCount WHERE ActivityId=@ActivityId and ActivityName=@ActivityName"; TRP_ScanCount model = idal.FindOne <TRP_ScanCount>(querysql, param, false); if (model == null) { TRP_ScanCount entity = new TRP_ScanCount(); entity.Count = 1; entity.ActivityName = activityname; entity.Url = url; entity.ActivityId = activityid; entity.UpdateTime = DateTime.Now; string insertsql = @"INSERT INTO TRP_ScanCount ( [Count] ,[ActivityId] ,[ActivityName] ,[Url] ,[UpdateTime] ) VALUES ( @Count ,@ActivityId ,@ActivityName ,@Url ,@UpdateTime ) "; success = idal.CreateEntity <TRP_ScanCount>(insertsql, entity); } else { model.Count = model.Count + 1; param.Add("Count", model.Count); string updatesql = @"UPDATE TRP_ScanCount SET Count=@Count WHERE ActivityId=@ActivityId and ActivityName=@ActivityName"; idal.ExcuteNonQuery <TRP_ScanCount>(updatesql, param, false); success = true; } } } catch (Exception ex) { msg = "SERVER_ERROR"; Logger.Error(string.Format("红包扫码计数异常,异常信息:{0}", ex.ToString())); } return(success); } }