public ActivityAwardItemInfo GetNewItemInfo(ActivityAwardItemInfo model) { ActivityAwardItemInfo awardItemInfoById = ActivityHelper.GetAwardItemInfoById(model.AwardId); if (model.PrizeType != awardItemInfoById.PrizeType || model.PrizeValue != awardItemInfoById.PrizeValue) { awardItemInfoById.WinningNum = 0; } awardItemInfoById.AwardGrade = model.AwardGrade; awardItemInfoById.PrizeType = model.PrizeType; awardItemInfoById.HitRate = model.HitRate; awardItemInfoById.AwardNum = model.AwardNum; awardItemInfoById.PrizeValue = model.PrizeValue; return(awardItemInfoById); }
protected void btnAddActivity_Click(object sender, EventArgs e) { string sharePic = string.Empty; if (this.hidUploadImages.Value.Trim().Length > 0) { try { sharePic = this.UploadImage(); } catch { this.ShowMsg("图片上传失败,您选择的不是图片类型的文件,或者网站的虚拟目录没有写入文件的权限", false); return; } } if (!this.calendarEndDate.SelectedDate.HasValue) { this.ShowMsg("请选择活动结束时间", false); } else { DateTime value = this.calendarEndDate.SelectedDate.Value; DateTime?t = this.calendarStartDate.Text.ToDateTime(); int freeTimes = default(int); int consumptionIntegral = default(int); if ((DateTime?)value < t) { this.ShowMsg("活动开始时间不能晚于活动结束时间", false); } else if (!int.TryParse(this.txtMaxNum.Text, out freeTimes) || freeTimes.ToString() != this.txtMaxNum.Text) { this.ShowMsg("可抽奖次数必须是整数", false); } else if (!int.TryParse(this.txtUsePoints.Text, out consumptionIntegral)) { this.ShowMsg("每次参与消耗的积分不能为空,且是整数", false); } else { ActivityInfo activityInfo = ActivityHelper.GetActivityInfo(this.activityid); activityInfo.ActivityName = Globals.StripHtmlXmlTags(this.txtActiveName.Text); activityInfo.Description = this.txtdesc.Text; DateTime value2 = this.calendarEndDate.SelectedDate.Value; if (value2.Second == 0) { value2.AddSeconds(59.0); } activityInfo.EndDate = value2; activityInfo.ShareDetail = this.txtKeyword.Text; activityInfo.SharePic = sharePic; activityInfo.FreeTimes = freeTimes; activityInfo.ConsumptionIntegral = consumptionIntegral; Database database = DatabaseFactory.CreateDatabase(); using (DbConnection dbConnection = database.CreateConnection()) { dbConnection.Open(); DbTransaction dbTransaction = dbConnection.BeginTransaction(); try { if (ActivityHelper.UpdateActivityInfo(activityInfo, dbTransaction)) { string value3 = this.hidJson.Value; if (string.IsNullOrEmpty(value3)) { dbTransaction.Rollback(); this.ShowMsg("获得奖项不能为空!", false); } else { decimal d = default(decimal); bool flag = true; List <ActivityAwardItemInfo> activityItemList = ActivityHelper.GetActivityItemList(activityInfo.ActivityId); List <ActivityAwardItemInfo> list = JsonHelper.ParseFormJson <List <ActivityAwardItemInfo> >(value3); int[] array = new int[activityItemList.Count]; int num = 0; string text = ""; foreach (ActivityAwardItemInfo item in list) { if (item.AwardId > 0) { text = text + item.AwardId + ","; } } text = text.Remove(text.Length - 1); ActivityHelper.DeleteEidAwardItem(this.activityid, text, dbTransaction); foreach (ActivityAwardItemInfo item2 in activityItemList) { array[num] = item2.AwardId; num++; } if (list.Any()) { foreach (ActivityAwardItemInfo item3 in list) { if (item3.PrizeType == 2) { int couponSurplus = CouponHelper.GetCouponSurplus(item3.PrizeValue); if (item3.AwardNum > couponSurplus) { dbTransaction.Rollback(); this.ShowMsg("优惠券奖项数量不能大于总数!", false); return; } } d += item3.HitRate; item3.ActivityId = this.activityid; bool flag2 = false; if (array.Contains(item3.AwardId)) { if (item3.AwardId > 0) { ActivityAwardItemInfo newItemInfo = this.GetNewItemInfo(item3); if (!ActivityHelper.UpdateActivityAwardItemInfo(newItemInfo, dbTransaction)) { dbTransaction.Rollback(); this.ShowMsg("编辑失败!", false); return; } } else if (ActivityHelper.AddActivityAwardItemInfo(item3, dbTransaction) <= 0) { dbTransaction.Rollback(); this.ShowMsg("编辑失败!", false); return; } continue; } if (item3.AwardId > 0) { flag = ActivityHelper.DeleteActivityAwardItemByActivityId(item3.AwardId, dbTransaction); continue; } int num2 = ActivityHelper.AddActivityAwardItemInfo(item3, dbTransaction); if (num2 > 0) { flag = true; continue; } dbTransaction.Rollback(); this.ShowMsg("编辑失败!", false); return; } } if (d > 100m) { dbTransaction.Rollback(); this.ShowMsg("奖项概率总和不能大于100%!", false); } else if (flag) { dbTransaction.Commit(); this.ShowMsg("编辑成功!", true); base.Response.Redirect("NewLotteryActivity.aspx?type=" + this.type, true); base.Response.End(); } else { dbTransaction.Rollback(); this.ShowMsg("编辑失败!", false); } } } } catch (Exception ex) { dbTransaction.Rollback(); Globals.WriteLog("ActivityLog.txt", "Methed:Edit , Id:" + activityInfo.ActivityId + " , Msg:" + ex.Message); this.ShowMsg(ex.Message, false); } finally { dbConnection.Close(); } } } } }
public static bool UpdateActivityAwardItemInfo(ActivityAwardItemInfo model, DbTransaction dbTran) { return(new ActivityDao().Update(model, dbTran)); }
public static bool ManageWinningResult(int UserId, ActivityInfo Info, int AwardGrade, ref int FreeTimes) { lock (ActivityHelper.oWinning) { Database database = DatabaseFactory.CreateDatabase(); ActivityDao activityDao = new ActivityDao(); using (DbConnection dbConnection = database.CreateConnection()) { dbConnection.Open(); DbTransaction dbTransaction = dbConnection.BeginTransaction(); try { bool flag = false; bool flag2 = false; ActivityJoinStatisticsInfo activityJoinStatisticsInfo = activityDao.GetCurrUserActivityStatisticsInfo(UserId, Info.ActivityId, dbTransaction); MemberInfo memberInfo = new MemberDao().Get <MemberInfo>(UserId); if (activityJoinStatisticsInfo != null) { if (Info.ResetType == 2) { DateTime lastJoinDate = activityJoinStatisticsInfo.LastJoinDate; if (DateTime.Now.Date == lastJoinDate.Date) { if (activityJoinStatisticsInfo.FreeNum < Info.FreeTimes) { flag = true; activityJoinStatisticsInfo.FreeNum++; FreeTimes = Info.FreeTimes - activityJoinStatisticsInfo.FreeNum; } else { activityJoinStatisticsInfo.IntegralTotal += Info.ConsumptionIntegral; activityJoinStatisticsInfo.IntegralNum++; FreeTimes = 0; } } else { flag = true; activityJoinStatisticsInfo.FreeNum = 1; FreeTimes = Info.FreeTimes - 1; } } else if (activityJoinStatisticsInfo.FreeNum < Info.FreeTimes) { flag = true; activityJoinStatisticsInfo.FreeNum++; FreeTimes = Info.FreeTimes - activityJoinStatisticsInfo.FreeNum; } else { activityJoinStatisticsInfo.IntegralTotal += Info.ConsumptionIntegral; activityJoinStatisticsInfo.IntegralNum++; FreeTimes = 0; } } else { flag2 = true; activityJoinStatisticsInfo = new ActivityJoinStatisticsInfo(); activityJoinStatisticsInfo.ActivityId = Info.ActivityId; activityJoinStatisticsInfo.UserId = UserId; if (Info.FreeTimes > 0) { flag = true; activityJoinStatisticsInfo.FreeNum = 1; activityJoinStatisticsInfo.IntegralTotal = 0; activityJoinStatisticsInfo.IntegralNum = 0; FreeTimes = Info.FreeTimes - 1; } else { activityJoinStatisticsInfo.IntegralTotal = Info.ConsumptionIntegral; activityJoinStatisticsInfo.IntegralNum = 1; activityJoinStatisticsInfo.FreeNum = 0; FreeTimes = 0; } } activityJoinStatisticsInfo.JoinNum++; activityJoinStatisticsInfo.LastJoinDate = DateTime.Now; bool flag3 = false; CouponInfo couponInfo = null; GiftInfo giftInfo = null; ActivityAwardItemInfo activityAwardItemInfo = null; if (AwardGrade > 0) { activityAwardItemInfo = activityDao.GetActivityItem(Info.ActivityId, AwardGrade, dbTransaction); if (activityAwardItemInfo.WinningNum < activityAwardItemInfo.AwardNum) { if (activityAwardItemInfo.PrizeType == 2) { couponInfo = new CouponDao().Get <CouponInfo>(activityAwardItemInfo.PrizeValue); if (couponInfo != null) { int couponSurplus = new CouponDao().GetCouponSurplus(activityAwardItemInfo.PrizeValue); if (couponSurplus > 0 && couponInfo.ClosingTime > DateTime.Now) { flag3 = true; } } } else if (activityAwardItemInfo.PrizeType == 3) { giftInfo = new GiftDao().Get <GiftInfo>(activityAwardItemInfo.PrizeValue); if (giftInfo != null) { flag3 = true; } } else { flag3 = true; } } } else { flag3 = false; } if (!flag) { PointDetailInfo pointDetailInfo = new PointDetailInfo(); pointDetailInfo.Increased = 0; pointDetailInfo.OrderId = ""; pointDetailInfo.Points = memberInfo.Points - Info.ConsumptionIntegral; pointDetailInfo.Reduced = Info.ConsumptionIntegral; pointDetailInfo.Remark = "抽奖消耗积分"; pointDetailInfo.SignInSource = 0; pointDetailInfo.TradeDate = DateTime.Now; if (Info.ActivityType == 1) { pointDetailInfo.TradeType = PointTradeType.JoinRotaryTable; } else if (Info.ActivityType == 3) { pointDetailInfo.TradeType = PointTradeType.JoinSmashingGoldenEgg; } else { pointDetailInfo.TradeType = PointTradeType.JoinScratchCard; } pointDetailInfo.UserId = UserId; if (new PointDetailDao().Add(pointDetailInfo, dbTransaction) <= 0) { dbTransaction.Rollback(); return(false); } } if (!flag3) { if (flag2) { if (activityDao.Add(activityJoinStatisticsInfo, dbTransaction) <= 0) { dbTransaction.Rollback(); } } else if (!activityDao.UpdateActivityStatisticsInfo(activityJoinStatisticsInfo, dbTransaction)) { dbTransaction.Rollback(); } dbTransaction.Commit(); return(false); } activityJoinStatisticsInfo.WinningNum++; if (flag2) { if (activityDao.Add(activityJoinStatisticsInfo, dbTransaction) <= 0) { dbTransaction.Rollback(); } } else if (!activityDao.UpdateActivityStatisticsInfo(activityJoinStatisticsInfo, dbTransaction)) { dbTransaction.Rollback(); } activityAwardItemInfo.WinningNum++; if (!activityDao.Update(activityAwardItemInfo, dbTransaction)) { dbTransaction.Rollback(); return(false); } UserAwardRecordsInfo userAwardRecordsInfo = new UserAwardRecordsInfo(); userAwardRecordsInfo.ActivityId = Info.ActivityId; if (activityAwardItemInfo.PrizeType == 2) { userAwardRecordsInfo.AwardName = couponInfo.CouponName; userAwardRecordsInfo.AwardDate = DateTime.Now; userAwardRecordsInfo.Status = 2; CouponItemInfo couponItemInfo = new CouponItemInfo(); couponItemInfo.UserId = UserId; couponItemInfo.UserName = memberInfo.UserName; couponItemInfo.CanUseProducts = couponInfo.CanUseProducts; couponItemInfo.ClosingTime = couponInfo.ClosingTime; couponItemInfo.CouponId = couponInfo.CouponId; couponItemInfo.CouponName = couponInfo.CouponName; couponItemInfo.OrderUseLimit = couponInfo.OrderUseLimit; couponItemInfo.Price = couponInfo.Price; couponItemInfo.StartTime = couponInfo.StartTime; couponItemInfo.UseWithGroup = couponInfo.UseWithGroup; couponItemInfo.UseWithPanicBuying = couponInfo.UseWithPanicBuying; couponItemInfo.UseWithFireGroup = couponInfo.UseWithFireGroup; couponItemInfo.GetDate = DateTime.Now; couponItemInfo.ClaimCode = Guid.NewGuid().ToString(); if (new CouponDao().Add(couponItemInfo, dbTransaction) <= 0) { dbTransaction.Rollback(); return(false); } } else if (activityAwardItemInfo.PrizeType == 3) { userAwardRecordsInfo.AwardDate = null; userAwardRecordsInfo.AwardName = giftInfo.Name; userAwardRecordsInfo.AwardPic = giftInfo.ThumbnailUrl160; userAwardRecordsInfo.Status = 1; } else { userAwardRecordsInfo.AwardName = activityAwardItemInfo.PrizeValue + "积分"; userAwardRecordsInfo.AwardDate = DateTime.Now; userAwardRecordsInfo.Status = 2; PointDetailInfo pointDetailInfo2 = new PointDetailInfo(); pointDetailInfo2.Increased = activityAwardItemInfo.PrizeValue; pointDetailInfo2.OrderId = ""; if (flag) { pointDetailInfo2.Points = memberInfo.Points + activityAwardItemInfo.PrizeValue; } else { pointDetailInfo2.Points = memberInfo.Points - Info.ConsumptionIntegral + activityAwardItemInfo.PrizeValue; } pointDetailInfo2.Reduced = 0; pointDetailInfo2.Remark = "抽奖获得积分"; pointDetailInfo2.SignInSource = 0; pointDetailInfo2.TradeDate = DateTime.Now; if (Info.ActivityType == 1) { pointDetailInfo2.TradeType = PointTradeType.JoinRotaryTable; } else if (Info.ActivityType == 3) { pointDetailInfo2.TradeType = PointTradeType.JoinSmashingGoldenEgg; } else { pointDetailInfo2.TradeType = PointTradeType.JoinScratchCard; } pointDetailInfo2.UserId = UserId; if (new PointDetailDao().Add(pointDetailInfo2, dbTransaction) <= 0) { dbTransaction.Rollback(); return(false); } } userAwardRecordsInfo.AwardGrade = AwardGrade; userAwardRecordsInfo.AwardId = activityAwardItemInfo.AwardId; userAwardRecordsInfo.CreateDate = DateTime.Now; userAwardRecordsInfo.PrizeType = activityAwardItemInfo.PrizeType; userAwardRecordsInfo.PrizeValue = activityAwardItemInfo.PrizeValue; userAwardRecordsInfo.UserId = UserId; if (activityDao.Add(userAwardRecordsInfo, dbTransaction) <= 0) { dbTransaction.Rollback(); return(false); } dbTransaction.Commit(); return(true); } catch (Exception ex) { dbTransaction.Rollback(); Globals.WriteLog("ActivityLog.txt", "Methed:ManageWinningResult , Id:" + Info.ActivityId + " , Msg:" + ex.Message); return(false); } finally { dbConnection.Close(); } } } }
public static int AddActivityAwardItemInfo(ActivityAwardItemInfo info, DbTransaction dbTran) { return((int)new ActivityDao().Add(info, dbTran)); }