Exemple #1
0
        public UserSession SetUserSesion(string openId, string userName,
                                         string headerUrl, string phone,
                                         CourseScheduleType currentScheduleType,
                                         UserRole userRole,
                                         MemberType memberType,
                                         bool courseSkipToday,
                                         EUserAccount userAccount)
        {
            UserSession session = new UserSession()
            {
                OpenId                  = openId,
                UserName                = userName,
                HeaderUrl               = headerUrl,
                Phone                   = phone,
                CurrentScheduleType     = currentScheduleType,
                CurrentScheduleTypeName = BaseEnumSrv.GetCourseScheduleTypeName(currentScheduleType),
                MemeberType             = memberType,
                UserRole                = userRole,
                CourseSkipToday         = courseSkipToday,
                UserAccount             = userAccount
            };

            var json = JsonConvert.SerializeObject(session);

            HttpContext.Session.SetString(EduConstant.UserSessionKey, json);

            return(session);
        }
Exemple #2
0
        //查询某个帐户余额
        public UserAccount GetUserAccount(EUserAccount _accountName, int _userId)
        {
            long _val = 0;

            switch (_accountName)
            {
            case EUserAccount.cobi:
                _val = new BCW.BLL.User().GetGold(_userId);
                break;

            case EUserAccount.money:
                _val = new BCW.BLL.User().GetMoney(_userId);
                break;

            case EUserAccount.bank:
                _val = new BCW.BLL.User().GetBank(_userId);
                break;

            default:
                return(null);
            }

            UserAccount _userAccount = new UserAccount();

            _userAccount.accountName = _accountName;
            _userAccount.value       = _val;
            return(_userAccount);
        }
        public void OnGet()
        {
            var us = base.GetUserSession();

            if (us != null)
            {
                UserAccount = _UserSrv.GetUserAccount(us.OpenId);
            }
        }
        /// <summary>
        /// /获取订单行,更新课时
        /// </summary>
        /// <param name="userOpenId"></param>
        /// <param name="line"></param>
        private EUserAccount UpdateUserAccountByOrderLine(string userOpenId, EOrderLine line)
        {
            EUserAccount userAccount = _dbContext.DBUserAccount.Where(a => a.UserOpenId == userOpenId).FirstOrDefault();

            if (userAccount == null)
            {
                UserSrv userSrv = new UserSrv(_dbContext);
                userAccount = userSrv.CreateNewUserAccount(userOpenId);
            }

            CourseScheduleType courseScheduleType = (CourseScheduleType)line.Ext1;
            ECourseDateRange   dr = null;

            switch (courseScheduleType)
            {
            case CourseScheduleType.Standard:
            case CourseScheduleType.VIP:
                userAccount.RemainCourseTime += line.Qty;
                if (userAccount.BuyDate == DateTime.MinValue)
                {
                    userAccount.BuyDate = DateTime.Now;
                }
                if (userAccount.DeadLine == DateTime.MinValue)
                {
                    userAccount.DeadLine = DateTime.Now;
                }
                userAccount.DeadLine = userAccount.DeadLine.AddYears(1);

                break;

            case CourseScheduleType.Summer:
                userAccount.RemainSummerTime += line.Qty;
                dr = StaticDataSrv.CourseDateRange.Where(a => a.CourseScheduleType == CourseScheduleType.Summer && a.Year == DateTime.Now.Year).FirstOrDefault();

                userAccount.SummerDeadLine = dr.EndDate;

                if (userAccount.SummerBuyDate == DateTime.MinValue)
                {
                    userAccount.SummerBuyDate = DateTime.Now;
                }

                break;

            case CourseScheduleType.Winter:
                userAccount.RemainWinterTime += line.Qty;
                dr = StaticDataSrv.CourseDateRange.Where(a => a.CourseScheduleType == CourseScheduleType.Winter && a.Year == DateTime.Now.Year).FirstOrDefault();
                userAccount.WinterDeadLine = dr.EndDate;
                if (userAccount.WinterBuyDate == DateTime.MinValue)
                {
                    userAccount.WinterBuyDate = DateTime.Now;
                }
                break;
            }
            return(userAccount);
        }
        public EUserAccount PayCourseSuccess(WXPaySuccess wXPaySuccess)
        {
            EUserAccount eUserAccount = null;

            try
            {
                string orderId = wXPaySuccess.OrderId;
                //    NLogHelper.InfoTxt($"PayCourseSuccess OrderId:{orderId}");
                BeginTrans();
                //跟新订单状态
                var order = _dbContext.DBOrder.Where(a => a.OrderId == orderId && a.OrderStatus == OrderStatus.Created).FirstOrDefault();
                if (order == null)
                {
                    throw new Exception($"没有找到状态为[{ OrderStatus.Created}]的[{orderId}]订单,");
                }
                order.OrderStatus = OrderStatus.PaySuccess;

                //获取订单行,更新课时
                var line = _dbContext.DBOrderLine.Where(a => a.OrderId == orderId).FirstOrDefault();
                eUserAccount = UpdateUserAccountByOrderLine(order.CustOpenId, line);

                var ui = _dbContext.DBUserInfo.Where(a => a.OpenId == order.CustOpenId).FirstOrDefault();
                if (ui.UserRole == UserRole.Visitor)
                {
                    ui.UserRole = UserRole.Member;
                }
                //如果是JSPay
                if (wXPaySuccess.IsJSPay)
                {
                    ui.MemberType          = MemberType.VIP;
                    eUserAccount.VIPPrice1 = Math.Round(line.Price / line.Qty, 2);
                }
                //查看用户是否有邀请人

                SalesSrv salesSrv  = new SalesSrv(_dbContext);
                var      inviteLog = salesSrv.GetInviteLogByInvitedOpenId(ui.OpenId);
                if (inviteLog != null)
                {
                    salesSrv.CreateRewardTrans(inviteLog.Id, inviteLog.OwnOpenId, AmountTransType.Invited_Paied, out eUserAccount, false);
                }

                _dbContext.SaveChanges();
                CommitTrans();
            }
            catch (Exception ex)
            {
                RollBackTrans();
                NLogHelper.ErrorTxt($"[PayCourseSuccess] {ex.Message}");
                throw ex;
            }
            return(eUserAccount);
        }
        public ResultNormal PaySuccess(WXPaySuccess paySuccess)
        {
            ResultNormal result = new ResultNormal();

            try
            {
                EUserAccount eUserAccount = _BusinessSrv.PayCourseSuccess(paySuccess);
                if (eUserAccount != null)
                {
                    var us = GetUserSession(false);
                    us.UserAccount = eUserAccount;
                    us.UserRole    = EduCenterModel.BaseEnum.UserRole.Member;
                    SetUserSesion(us);
                }
            }
            catch (Exception ex)
            {
                result.ErrorMsg = ex.Message;
            }
            return(result);
        }
        /// <summary>
        ///根据传入的班类,如果是假期班,有假期班课时则扣减假期班,没则扣标准班
        /// </summary>
        /// <param name="openId"></param>
        /// <param name="memberType"></param>
        /// <param name="courseScheduleType"></param>
        /// <returns>返回-1 用户余额不足</returns>
        public int UpdateUserCourseTimeOnce(string openId, MemberType memberType, CourseScheduleType courseScheduleType)
        {
            EUserAccount result     = _dbContext.DBUserAccount.Where(a => a.UserOpenId == openId).FirstOrDefault();
            double       reduceTime = 2;

            if (result.ReduceTime > 0)
            {
                reduceTime = result.ReduceTime;
            }

            switch (courseScheduleType)
            {
            case CourseScheduleType.Summer:
                if (result.RemainSummerTime == 0)
                {
                    if (result.RemainCourseTime == 0)
                    {
                        return(-1);
                    }
                    else
                    {
                        result.RemainCourseTime -= reduceTime;
                    }
                }
                else
                {
                    result.RemainSummerTime -= reduceTime;
                }
                break;

            case CourseScheduleType.Winter:
                if (result.RemainWinterTime == 0)
                {
                    if (result.RemainCourseTime == 0)
                    {
                        return(-1);
                    }
                    else
                    {
                        result.RemainCourseTime -= reduceTime;
                    }
                }
                else
                {
                    result.RemainWinterTime -= reduceTime;
                }
                break;

            default:
                if (result.RemainCourseTime == 0)
                {
                    return(-1);
                }
                else
                {
                    result.RemainCourseTime -= reduceTime;
                }
                break;
            }

            //if(memberType == MemberType.Normal)
            //{
            //    switch (courseScheduleType)
            //    {
            //        case CourseScheduleType.Summer:
            //            if (result.RemainSummerTime == 0) return -1;
            //            else result.RemainSummerTime -= 2;
            //            break;
            //        case CourseScheduleType.Winter:
            //            if (result.RemainWinterTime == 0) return -1;
            //            else result.RemainWinterTime -= 2;
            //            break;
            //        default:
            //            if (result.RemainCourseTime == 0) return -1;
            //            else result.RemainCourseTime -= 2;
            //            break;

            //    }
            //}
            //else
            //{

            //}

            return(0);
        }
Exemple #8
0
        public bool CreateRewardTrans(long inviteLogId, string ownOpenId, AmountTransType TransType, out EUserAccount UserAccount, bool needSave = true)
        {
            int c = _dbContext.DBInviteRewardTrans.Where(a => a.InviteLogId == inviteLogId && a.TransType == TransType).Count();

            UserAccount = null;
            if (c == 0)
            {
                var reward = new EInviteRewardTrans()
                {
                    Amount        = GlobalSrv.GetRewardAmount(TransType),
                    Direction     = AmountTransDirection.In,
                    InviteLogId   = inviteLogId,
                    TransDateTime = DateTime.Now,
                    TransType     = TransType,
                    UserOpenId    = ownOpenId,
                    TransStatus   = AmountTransStatus.Created
                };
                _dbContext.DBInviteRewardTrans.Add(reward);
                UserAccount = _dbContext.DBUserAccount.Where(a => a.UserOpenId == ownOpenId).FirstOrDefault();
                if (UserAccount != null)
                {
                    UserAccount.InviteRewards += reward.Amount;
                    UserAccount.RemainRewards += reward.Amount;
                }

                var inviteLog = _dbContext.DBInviteLog.Where(a => a.Id == inviteLogId).FirstOrDefault();
                if (inviteLog != null)
                {
                    if (TransType == AmountTransType.Invited_TrialReward)
                    {
                        inviteLog.InviteStatus = InviteStatus.ApplyTrial;
                    }
                    else if (TransType == AmountTransType.Invited_Paied)
                    {
                        inviteLog.InviteStatus = InviteStatus.Paied;
                    }
                }

                if (needSave)
                {
                    _dbContext.SaveChanges();
                }
                return(true);
            }
            return(false);
        }