Beispiel #1
0
        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);
        }
Beispiel #2
0
        /// <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);
                }
            }
        }
Beispiel #4
0
        /// <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);
                }
            }
        }