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 bool UpdateCalculationCommission(OrderInfo order) { Exception exception; new MemberDao().SetOrderDate(order.UserId, 2); DistributorsInfo userIdDistributors = GetUserIdDistributors(order.ReferralUserId); SiteSettings masterSettings = SettingsManager.GetMasterSettings(false); bool flag = false; if (userIdDistributors != null) { flag = setCommission(order, userIdDistributors); if (!string.IsNullOrEmpty(order.ReferralPath)) { string userOpenIdByUserId; string aliUserOpenIdByUserId; int notDescDistributorGrades; ArrayList commTatalList = new ArrayList(); decimal num = 0M; ArrayList userIdList = new ArrayList(); string referralUserId = order.ReferralUserId.ToString(); string orderId = order.OrderId; ArrayList orderTotalList = new ArrayList(); decimal num2 = 0M; ArrayList gradeIdList = new ArrayList(); string[] strArray = order.ReferralPath.Split(new char[] { '|' }); if (strArray.Length == 1) { DistributorsInfo distributor = GetUserIdDistributors(int.Parse(strArray[0])); if (distributor != null) { foreach (LineItemInfo info3 in order.LineItems.Values) { if (info3.OrderItemsStatus.ToString() == OrderStatus.SellerAlreadySent.ToString()) { num += info3.SecondItemsCommission; num2 += info3.GetSubTotal(); } } commTatalList.Add(num); orderTotalList.Add(num2 + order.AdjustedFreight); userIdList.Add(distributor.UserId); try { if ((order != null) && (num > 0M)) { userOpenIdByUserId = MemberProcessor.GetUserOpenIdByUserId(distributor.UserId); aliUserOpenIdByUserId = MemberProcessor.GetAliUserOpenIdByUserId(distributor.UserId); Messenger.SendWeiXinMsg_OrderGetCommission(order, userOpenIdByUserId, aliUserOpenIdByUserId, num); } } catch (Exception exception1) { exception = exception1; } notDescDistributorGrades = GetNotDescDistributorGrades(distributor.UserId.ToString()); if (distributor.DistriGradeId != notDescDistributorGrades) { DistributorGradeChange(distributor, order.OrderId, notDescDistributorGrades); } } } if (strArray.Length == 2) { DistributorsInfo info4 = GetUserIdDistributors(int.Parse(strArray[0])); foreach (LineItemInfo info3 in order.LineItems.Values) { if (info3.OrderItemsStatus.ToString() == OrderStatus.SellerAlreadySent.ToString()) { num += info3.ThirdItemsCommission; num2 += info3.GetSubTotal(); } } commTatalList.Add(num); orderTotalList.Add(num2 + order.AdjustedFreight); userIdList.Add(info4.UserId); try { if ((order != null) && (num > 0M)) { userOpenIdByUserId = MemberProcessor.GetUserOpenIdByUserId(info4.UserId); aliUserOpenIdByUserId = MemberProcessor.GetAliUserOpenIdByUserId(info4.UserId); Messenger.SendWeiXinMsg_OrderGetCommission(order, userOpenIdByUserId, aliUserOpenIdByUserId, num); } } catch (Exception exception2) { exception = exception2; } notDescDistributorGrades = GetNotDescDistributorGrades(info4.UserId.ToString()); if (info4.DistriGradeId != notDescDistributorGrades) { DistributorGradeChange(info4, order.OrderId, notDescDistributorGrades); } DistributorsInfo info5 = GetUserIdDistributors(int.Parse(strArray[1])); num = 0M; num2 = 0M; foreach (LineItemInfo info3 in order.LineItems.Values) { if (info3.OrderItemsStatus.ToString() == OrderStatus.SellerAlreadySent.ToString()) { num += info3.SecondItemsCommission; num2 += info3.GetSubTotal(); } } commTatalList.Add(num); orderTotalList.Add(num2 + order.AdjustedFreight); userIdList.Add(info5.UserId); try { if ((order != null) && (num > 0M)) { userOpenIdByUserId = MemberProcessor.GetUserOpenIdByUserId(info5.UserId); aliUserOpenIdByUserId = MemberProcessor.GetAliUserOpenIdByUserId(info5.UserId); Messenger.SendWeiXinMsg_OrderGetCommission(order, userOpenIdByUserId, aliUserOpenIdByUserId, num); } } catch (Exception exception3) { exception = exception3; } int newDistributorGradeid = GetNotDescDistributorGrades(info5.UserId.ToString()); if (info5.DistriGradeId != newDistributorGradeid) { DistributorGradeChange(info5, order.OrderId, newDistributorGradeid); } } flag = new DistributorsDao().UpdateTwoCalculationCommission(userIdList, referralUserId, orderId, orderTotalList, commTatalList); for (int i = 0; i < userIdList.Count; i++) { int num6 = GetNotDescDistributorGrades(userIdList[i].ToString()); gradeIdList.Add(num6); } flag = new DistributorsDao().UpdateGradeId(gradeIdList, userIdList); } RemoveDistributorCache(userIdDistributors.UserId); } OrderRedPagerBrower.CreateOrderRedPager(order.OrderId, order.GetTotal(), order.UserId); int id = Globals.IsNumeric(order.ActivitiesId) ? Globals.ToNum(order.ActivitiesId) : 0; if (id > 0) { ActivityDetailInfo activityDetailInfo = new Hidistro.SqlDal.VShop.ActivityDao().GetActivityDetailInfo(id); if (activityDetailInfo != null) { OrderInfo info8; int couponId = activityDetailInfo.CouponId; int integral = activityDetailInfo.Integral; if ((couponId > 0) && (ShoppingProcessor.GetCoupon(couponId.ToString()) != null)) { SendCouponResult result = new CouponDao().SendCouponToMember(couponId, order.UserId); try { info8 = order; if (info8 != null) { Messenger.SendWeiXinMsg_OrderGetCoupon(info8); } } catch (Exception exception4) { exception = exception4; } } if (integral > 0) { new OrderDao().AddMemberPointNumber(integral, order, null); try { info8 = order; if (info8 != null) { Messenger.SendWeiXinMsg_OrderGetPoint(info8, integral); } } catch (Exception exception5) { exception = exception5; } } } } MemberProcessor.UpdateUserAccount(order); try { string retInfo = ""; DateTime orderDate = order.OrderDate; DateTime?payDate = order.PayDate; if (order.Gateway == "hishop.plugins.payment.podrequest") { payDate = new DateTime?(orderDate); } if (payDate.HasValue && (payDate.Value.ToString("yyyy-MM-dd") != DateTime.Now.ToString("yyyy-MM-dd"))) { bool flag2 = new ShopStatisticDao().StatisticsOrdersByRecDate(payDate.Value, UpdateAction.AllUpdate, 0, out retInfo); } } catch { } return(flag); }