public static Mall_UserPoint Insert_Mall_UserPoint(int UserID, int PointType, decimal OrderTotalAmount, string Title, string Summary, int CategoryType, string AddUserName, int PointStatus, string TradeNo, int OrderID, int PointValue = 0, int RelatedID = 0, int AmountRuleID = 0, bool IsSent = true, DateTime?IsReadySendTime = null) { Mall_UserPoint data = null; using (SqlHelper helper = new SqlHelper()) { try { helper.BeginTransaction(); data = Insert_Mall_UserPoint(UserID, PointType, OrderTotalAmount, Title, Summary, CategoryType, AddUserName, PointStatus, TradeNo, OrderID, PointValue: PointValue, RelatedID: RelatedID, AmountRuleID: AmountRuleID, helper: helper, IsSent: IsSent, IsReadySendTime: IsReadySendTime); helper.Commit(); } catch (Exception) { helper.Rollback(); return(null); } } return(data); }
/// <summary> /// /// </summary> /// <param name="UserID"></param> /// <param name="PointType">1-充值 2-消费</param> /// <param name="OrderTotalAmount"></param> /// <param name="Title"></param> /// <param name="Summary"></param> /// <param name="CategoryType">1-积分购买消费 2-购买商品赠与 3-积分购买退货返回 4-购买商品退货扣除 5-充值赠与 6-消费赠与</param> /// <param name="AddUserName"></param> /// <param name="PointStatus">0-未入账 1-已入账</param> /// <param name="TradeNo"></param> /// <param name="OrderID"></param> /// <param name="PointValue"></param> /// <param name="RelatedID"></param> public static void Insert_Mall_UserJiXiaoPoint(int UserID, int PointType, decimal OrderTotalAmount, string Title, string Summary, int CategoryType, string AddUserName, int PointStatus, SqlHelper helper, string TradeNo = "", int OrderID = 0, int FixedPointMonth = 0, DateTime?FixedPointDateTime = null, int PointValue = 0, int RelatedID = 0, int AmountRuleID = 0, int RuleID = 0, int InfoID = 0, string InfoName = "", string CategoryName = "", int EarnType = 0, string ApproveUserName = "", DateTime?ApproveTime = null, string ApproveRemark = "", string Remark = "", decimal BeforePointValue = 0) { if (UserID <= 0) { return; } var data = new Mall_UserJiXiaoPoint(); data.UserID = UserID; data.PointType = PointType; data.PointValue = PointValue; data.Title = Title; data.Summary = Summary; data.CategoryType = CategoryType; data.AddUserName = AddUserName; data.PointStatus = PointStatus; data.AddTime = DateTime.Now; data.TradeNo = TradeNo; data.RelatedID = RelatedID; data.AmountRuleID = AmountRuleID; data.FixedPointMonth = FixedPointMonth > 0 ? FixedPointMonth : DateTime.Now.Month; if (FixedPointDateTime.HasValue) { DateTime _FixedPointDateTime = Convert.ToDateTime(FixedPointDateTime); data.FixedPointDateTime = _FixedPointDateTime > DateTime.MinValue ? _FixedPointDateTime : DateTime.Now; } data.InfoID = InfoID; data.InfoName = InfoName; data.CategoryName = CategoryName; data.EarnType = EarnType; data.ApproveUserName = ApproveUserName; if (ApproveTime.HasValue) { data.ApproveTime = Convert.ToDateTime(ApproveTime); } data.ApproveRemark = ApproveRemark; data.Remark = Remark; Mall_PointCovertRecord record = null; if (data.EarnType == 2) { record = new Mall_PointCovertRecord(); record.UserID = data.UserID; record.PointValue = (int)BeforePointValue; record.CheckPointValue = data.PointValue; record.PointRuleID = data.RelatedID; record.Status = 2; record.AddTime = DateTime.Now; record.AddUserName = data.AddUserName; } Mall_PointWithDrawRecord withdrawrecord = null; if (data.EarnType == 3) { withdrawrecord = new Mall_PointWithDrawRecord(); withdrawrecord.UserID = data.UserID; withdrawrecord.PointValue = data.PointValue; withdrawrecord.Status = 2; withdrawrecord.AddTime = DateTime.Now; withdrawrecord.AddUserName = data.AddUserName; } data.Save(helper); if (record != null) { //积分兑换扣除 var userPoint = Mall_UserPoint.Insert_Mall_UserPoint(data.UserID, 2, 0, "积分兑换扣除", "Mall_PointCovertRecordID:" + record.ID, 8, data.AddUserName, 1, "", 0, helper, PointValue: -record.PointValue, RelatedID: record.ID); record.Mall_UserPointID = userPoint.ID; record.Mall_UserJiXiaoPointID = data.ID; record.Save(helper); data.PointStatus = 0; data.CategoryType = 3; data.RelatedID = record.ID; } if (withdrawrecord != null) { withdrawrecord.Mall_UserJiXiaoPointID = data.ID; withdrawrecord.Save(helper); data.PointStatus = 1; data.CategoryType = 4; data.RelatedID = withdrawrecord.ID; } data.Save(helper); }
/// <summary> /// 消费处理 /// </summary> /// <param name="order"></param> /// <param name="payment"></param> public static void GetEarnThroughBuy(Mall_Order order = null, Payment payment = null) { //消费赠与处理 if (order == null) { return; } int[] ProductIDList = Mall_OrderItem.GetProductIDListByOrderID(order.ID, IsProduct: true); int[] ServiceIDList = Mall_OrderItem.GetProductIDListByOrderID(order.ID, IsService: true); if (payment == null) { payment = Payment.GetPaymentByTradeNo(order.TradeNo); } decimal TotalCost = order.TotalCost; if (payment != null) { TotalCost = payment.Amount / 100; } Dictionary <string, object> BackObject = new Dictionary <string, object>(); Mall_AmountRule.GetBackAmountPoint(TotalCost, out BackObject, ProductIDList, ServiceIDList, AmountType: 2, UserID: order.UserID); string Title = "消费赠与"; int CategoryType = 6; using (SqlHelper helper = new SqlHelper()) { try { helper.BeginTransaction(); decimal BackAmount = Utility.Tools.GetValueFromDic <decimal>(BackObject, "BackAmount"); int AmountRuleID = Utility.Tools.GetValueFromDic <int>(BackObject, "AmountRuleID"); bool AmountIsSendNow = Utility.Tools.GetValueFromDic <bool>(BackObject, "AmountIsSendNow"); DateTime AmountIsReadySendTime = Utility.Tools.GetValueFromDic <DateTime>(BackObject, "AmountIsReadySendTime"); if (BackAmount > 0 && AmountRuleID > 0) { Insert_Mall_UserBalance(order.UserID, 1, BackAmount, Title, "BalaceID:" + order.ID, CategoryType, "System", 1, "", RelatedID: order.ID, AmountRuleID: AmountRuleID, helper: helper, PaymentMethod: order.PaymentMethod, IsSent: AmountIsSendNow, IsReadySendTime: AmountIsReadySendTime); } int BackPoint = Utility.Tools.GetValueFromDic <int>(BackObject, "BackPoint"); int PointRuleID = Utility.Tools.GetValueFromDic <int>(BackObject, "PointRuleID"); bool PointIsSendNow = Utility.Tools.GetValueFromDic <bool>(BackObject, "PointIsSendNow"); DateTime PointIsReadySendTime = Utility.Tools.GetValueFromDic <DateTime>(BackObject, "PointIsReadySendTime"); if (BackPoint > 0 && PointRuleID > 0) { Mall_UserPoint.Insert_Mall_UserPoint(order.UserID, 1, 0, Title, "BalaceID:" + order.ID, CategoryType, "System", 1, "", 0, helper, RelatedID: order.ID, PointValue: BackPoint, AmountRuleID: PointRuleID, IsSent: PointIsSendNow, IsReadySendTime: PointIsReadySendTime); } if (order.TotalOrderPointCost > 0) { Mall_UserPoint.Insert_Mall_UserPoint(order.UserID, 2, 0, "购买商品", "OrderID:" + order.ID, 1, "System", 1, order.TradeNo, order.ID, helper, RelatedID: order.ID, PointValue: -order.TotalOrderPointCost, AmountRuleID: 0); } List <int> CouponIDList = Utility.Tools.GetValueFromDic <List <int> >(BackObject, "CouponIDList"); int CouponRuleID = Utility.Tools.GetValueFromDic <int>(BackObject, "CouponRuleID"); bool CouponIsSendNow = Utility.Tools.GetValueFromDic <bool>(BackObject, "CouponIsSendNow"); DateTime CouponIsReadySendTime = Utility.Tools.GetValueFromDic <DateTime>(BackObject, "CouponIsReadySendTime"); int SendCouponCount = Utility.Tools.GetValueFromDic <int>(BackObject, "SendCouponCount"); if (CouponIDList != null && CouponIDList.Count > 0 && CouponRuleID > 0) { foreach (var CouponID in CouponIDList) { for (int i = 0; i < SendCouponCount; i++) { Mall_CouponUser.Insert_Mall_CouponUser(order.UserID, CouponID, 3, CouponRuleID, CouponIsReadySendTime, helper: helper, IsSent: CouponIsSendNow); } } } if (payment != null) { payment.Save(helper); } if (order != null) { order.Save(helper); } helper.Commit(); } catch (Exception ex) { helper.Rollback(); Utility.LogHelper.WriteError("Mall_UserBalance.cs", "GetEarnThroughBuy", ex); } } }
/// <summary> /// /// </summary> /// <param name="UserID"></param> /// <param name="PointType">1-充值 2-消费</param> /// <param name="OrderTotalAmount"></param> /// <param name="Title"></param> /// <param name="Summary"></param> /// <param name="CategoryType">1-积分购买消费 2-购买商品赠与 3-积分购买退货返回 4-购买商品退货扣除 5-充值赠与 6-消费赠与</param> /// <param name="AddUserName"></param> /// <param name="PointStatus">0-未入账 1-已入账</param> /// <param name="TradeNo"></param> /// <param name="OrderID"></param> /// <param name="PointValue"></param> /// <param name="RelatedID"></param> public static Mall_UserPoint Insert_Mall_UserPoint(int UserID, int PointType, decimal OrderTotalAmount, string Title, string Summary, int CategoryType, string AddUserName, int PointStatus, string TradeNo, int OrderID, SqlHelper helper, int PointValue = 0, int RelatedID = 0, int AmountRuleID = 0, bool IsSent = true, DateTime?IsReadySendTime = null) { if (UserID <= 0) { return(null); } if (CategoryType == 3) { var mall_point = Mall_UserPoint.GetMall_UserPointByOrderID(RelatedID, 1, helper: helper); if (mall_point == null) { return(null); } if (mall_point.PointStatus == 0) { mall_point.Delete(helper); return(null); } PointValue = -mall_point.PointValue; } if (CategoryType == 7) { var mall_point = Mall_UserPoint.GetMall_UserPointByOrderID(RelatedID, 6, helper: helper); if (mall_point == null) { return(null); } if (mall_point.PointStatus == 0) { mall_point.Delete(helper); return(null); } PointValue = -mall_point.PointValue; } var data = new Mall_UserPoint(); data.UserID = UserID; data.PointType = PointType; data.PointValue = PointValue; data.Title = Title; data.Summary = Summary; data.CategoryType = CategoryType; data.AddUserName = AddUserName; data.PointStatus = 0; data.AddTime = DateTime.Now; data.TradeNo = TradeNo; data.RelatedID = RelatedID; data.AmountRuleID = AmountRuleID; data.IsSent = IsSent; if (data.IsSent) { data.SentTime = DateTime.Now; data.PointStatus = 1; } if (PointStatus == 0) { data.PointStatus = PointStatus; } if (IsReadySendTime.HasValue) { data.IsReadySendTime = Convert.ToDateTime(IsReadySendTime); } data.Save(helper); return(data); }
/// <summary> /// 充值处理 /// </summary> /// <param name="BalanceStatus"></param> /// <param name="TradeNo"></param> /// <param name="payment"></param> /// <param name="AmountType"></param> public static void UpdateMall_UserBalanceStatus(int BalanceStatus, string TradeNo, Payment payment = null, int AmountType = 1, string PaymentMethod = "") { //充值赠与处理 Dictionary <string, object> BackObject = new Dictionary <string, object>(); Mall_UserBalance data = null; if (BalanceStatus == 1) { data = GetMall_UserBalanceByTradeNo(TradeNo); if (data == null) { return; } Mall_AmountRule.GetBackAmountPoint(data.BalanceValue, out BackObject, new int[] { }, new int[] { }, AmountType: AmountType, UserID: data.UserID); //AmountRuleID = Utility.Tools.GetValueFromDic<int>(BackObject, "AmountRuleID"); //BackAmount = Utility.Tools.GetValueFromDic<decimal>(BackObject, "BackAmount"); } string Title = "充值赠与"; int CategoryType = 5; User user = null; var user_level = Mall_UserLevel.GetMall_UserLevelByUserID(data.UserID, out user); using (SqlHelper helper = new SqlHelper()) { try { helper.BeginTransaction(); data.BalanceStatus = 1; data.Save(helper); if (user != null && user_level != null) { if (user.UserLevelID != user_level.ID) { string LevelTitle = "充值满" + user_level.StartAmount.ToString("0.00") + "升到到合伙人(" + user_level.Name + ")"; Mall_UserLevelApprove.Insert_Mall_UserLevelApprove(data.UserID, LevelTitle, user_level.ID, helper: helper, IncomingAmount: data.BalanceValue, IncomingType: data.PaymentMethodDesc, UserBalanceID: data.ID); } } decimal BackAmount = Utility.Tools.GetValueFromDic <decimal>(BackObject, "BackAmount"); int AmountRuleID = Utility.Tools.GetValueFromDic <int>(BackObject, "AmountRuleID"); bool AmountIsSendNow = Utility.Tools.GetValueFromDic <bool>(BackObject, "AmountIsSendNow"); DateTime AmountIsReadySendTime = Utility.Tools.GetValueFromDic <DateTime>(BackObject, "AmountIsReadySendTime"); if (BackAmount > 0 && AmountRuleID > 0) { Insert_Mall_UserBalance(data.UserID, 1, BackAmount, Title, "BalaceID:" + data.ID, CategoryType, "System", 1, "", RelatedID: data.ID, AmountRuleID: AmountRuleID, helper: helper, PaymentMethod: PaymentMethod, IsSent: AmountIsSendNow, IsReadySendTime: AmountIsReadySendTime); } int BackPoint = Utility.Tools.GetValueFromDic <int>(BackObject, "BackPoint"); int PointRuleID = Utility.Tools.GetValueFromDic <int>(BackObject, "PointRuleID"); bool PointIsSendNow = Utility.Tools.GetValueFromDic <bool>(BackObject, "PointIsSendNow"); DateTime PointIsReadySendTime = Utility.Tools.GetValueFromDic <DateTime>(BackObject, "PointIsReadySendTime"); if (BackPoint > 0 && PointRuleID > 0) { Mall_UserPoint.Insert_Mall_UserPoint(data.UserID, 1, 0, Title, "BalaceID:" + data.ID, CategoryType, "System", 1, "", 0, helper, RelatedID: data.ID, PointValue: BackPoint, AmountRuleID: PointRuleID, IsSent: PointIsSendNow, IsReadySendTime: PointIsReadySendTime); } List <int> CouponIDList = Utility.Tools.GetValueFromDic <List <int> >(BackObject, "CouponIDList"); int CouponRuleID = Utility.Tools.GetValueFromDic <int>(BackObject, "CouponRuleID"); bool CouponIsSendNow = Utility.Tools.GetValueFromDic <bool>(BackObject, "CouponIsSendNow"); DateTime CouponIsReadySendTime = Utility.Tools.GetValueFromDic <DateTime>(BackObject, "CouponIsReadySendTime"); int SendCouponCount = Utility.Tools.GetValueFromDic <int>(BackObject, "SendCouponCount"); if (CouponIDList != null && CouponIDList.Count > 0 && CouponRuleID > 0) { foreach (var CouponID in CouponIDList) { for (int i = 0; i < SendCouponCount; i++) { Mall_CouponUser.Insert_Mall_CouponUser(data.UserID, CouponID, 1, CouponRuleID, CouponIsReadySendTime, helper: helper, IsSent: CouponIsSendNow); } } } if (payment != null) { payment.Save(helper); } helper.Commit(); } catch (Exception ex) { helper.Rollback(); Utility.LogHelper.WriteError("Mall_UserBalance.cs", "UpdateMall_UserBalanceStatus", ex); } } }