/// <summary> /// 领奖 /// </summary> /// <param name="model"></param> public bool update(string id, string openid) { bool flag = false; try { Expression <Func <TRP_AwardReceive, bool> > exp = a => 1 == 1; Expression <Func <TRP_AwardReceive, bool> > tempexp = a => 1 == 1; if (!string.IsNullOrWhiteSpace(id)) { var efid = Convert.ToInt32(id); exp = a => a.AwardDetailId == efid; tempexp = a => a.OpenId == openid; //多条件拼装 exp = CompileLinqSearch.AndAlso <TRP_AwardReceive>(tempexp, exp); Dictionary <string, object> dic = new Dictionary <string, object>(); tempexp = a => a.ReceiveTime.Equals(null); //多条件拼装 exp = CompileLinqSearch.AndAlso <TRP_AwardReceive>(tempexp, exp); dic.Add("ReceiveTime", DateTime.Now); idal.update(exp, dic); flag = true; } } catch (Exception ex) { Logger.Error(string.Format("核销领奖异常,异常信息:{0}", ex.ToString())); } return(flag); }
/// <summary> /// 奖品是否已领取 /// </summary> /// <param name="openId"></param> /// <returns></returns> public bool isGetAward(string activityId, string giftid) { bool flag = false; try { Expression <Func <TRP_AwardReceive, bool> > exp = a => 1 == 1; Expression <Func <TRP_AwardReceive, bool> > tempexp = a => 1 == 1; exp = a => a.SubmitTime != null; int efgiftId = Convert.ToInt32(giftid); tempexp = a => a.AwardDetailId == efgiftId; 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) { flag = true; } } catch (Exception ex) { Logger.Error(string.Format("判断奖品是否已领取异常,异常信息{0}", ex.ToString())); } return(flag); }
/// <summary> /// 此微信号是否已参加本次活动 /// </summary> /// <param name="activityId"></param> /// <returns></returns> public bool isExistWxByActivity(string activityId, string openId) { bool flag = false; try { Expression <Func <TRP_AwardReceive, bool> > exp = a => 1 == 1; Expression <Func <TRP_AwardReceive, bool> > tempexp = a => 1 == 1; if (!string.IsNullOrWhiteSpace(activityId)) { int dbActivityId = Convert.ToInt32(activityId); tempexp = a => a.ActivityId == dbActivityId; //多条件拼装 exp = CompileLinqSearch.AndAlso <TRP_AwardReceive>(tempexp, exp); } if (!string.IsNullOrWhiteSpace(openId)) { tempexp = a => a.OpenId == openId; //多条件拼装 exp = CompileLinqSearch.AndAlso <TRP_AwardReceive>(tempexp, exp); } var list = idal.FindBy(exp).ToList(); if (list.Count > 0) { flag = true; } } catch (Exception ex) { Logger.Error(string.Format("此微信号是否已参加本次活动异常,异常信息:{0},活动Id:{1}", ex.ToString(), activityId)); } return(flag); }
/// <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); } }
/// <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="querymodel">条件</param> /// <returns></returns> public List <SYS_MENU_BUTTON> GetList(SYS_MENU_BUTTON querymodel) { List <SYS_MENU_BUTTON> list = null; using (var dbcontext = DbFactory.Create()) { try { int id = Convert.ToInt32(querymodel.ID); Expression <Func <SYS_MENU_BUTTON, bool> > exp = a => a.ID == id; Expression <Func <SYS_MENU_BUTTON, bool> > temp = a => 1 == 1; exp = CompileLinqSearch.AndAlso(exp, temp); list = dbcontext.Find(exp); } catch (Exception ex) { Logger.Error(string.Format("SYS_MENU_BUTTON_BLL 根据条件获取列表异常,异常信息:{0}", ex.ToString())); } } return(list); }
/// <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="activityId"></param> /// <param name="openId"></param> /// <param name="times"></param> /// <returns></returns> public bool isAttendWxByActivity(string activityId, string openId, int times) { bool flag = false; try { Expression <Func <TRP_AwardReceive, bool> > exp = a => 1 == 1; Expression <Func <TRP_AwardReceive, bool> > tempexp = a => 1 == 1; if (!string.IsNullOrWhiteSpace(activityId)) { int dbActivityId = Convert.ToInt32(activityId); tempexp = a => a.ActivityId == dbActivityId; //多条件拼装 exp = CompileLinqSearch.AndAlso <TRP_AwardReceive>(tempexp, exp); } if (!string.IsNullOrWhiteSpace(openId)) { tempexp = a => a.OpenId == openId; //多条件拼装 exp = CompileLinqSearch.AndAlso <TRP_AwardReceive>(tempexp, exp); } tempexp = a => a.ReceiveTime != null; //多条件拼装 exp = CompileLinqSearch.AndAlso <TRP_AwardReceive>(tempexp, exp); int attendtimes = idal.FindBy(exp).ToList().Count; if (attendtimes >= times) { flag = true; } } catch (Exception ex) { Logger.Error(string.Format("判断此微信号参加是否在规定次数以内异常,异常信息:{0},活动Id:{1}", ex.ToString(), activityId)); } return(flag); }