Пример #1
0
        public void ConfirmApplyWithDraw(ApplyWithDrawInfo info)
        {
            var model = Context.ApplyWithDrawInfo.FirstOrDefault(e => e.Id == info.Id);

            using (TransactionScope scope = new TransactionScope())
            {
                model.ApplyStatus = info.ApplyStatus;
                model.OpUser      = info.OpUser;
                model.Remark      = info.Remark;
                model.ConfirmTime = info.ConfirmTime.HasValue ? info.ConfirmTime.Value : DateTime.Now;
                Context.SaveChanges();
                if (info.ApplyStatus == ApplyWithDrawInfo.ApplyWithDrawStatus.WithDrawSuccess)
                {
                    model.PayNo   = info.PayNo;
                    model.PayTime = info.PayTime.HasValue ? info.PayTime.Value : DateTime.Now;
                    CapitalDetailModel capitalDetail = new CapitalDetailModel
                    {
                        Amount     = -info.ApplyAmount,
                        UserId     = model.MemId,
                        PayWay     = info.Remark,
                        SourceType = CapitalDetailInfo.CapitalDetailType.WithDraw,
                        SourceData = info.Id.ToString()
                    };
                    AddCapital(capitalDetail);
                }
                scope.Complete();
            }
        }
Пример #2
0
        public void ConfirmApplyWithDraw(ApplyWithDrawInfo info)
        {
            ApplyWithDrawInfo applyStatus = context.ApplyWithDrawInfo.FirstOrDefault((ApplyWithDrawInfo e) => e.Id == info.Id);

            using (TransactionScope transactionScope = new TransactionScope())
            {
                applyStatus.ApplyStatus = info.ApplyStatus;
                applyStatus.OpUser      = info.OpUser;
                applyStatus.Remark      = info.Remark;
                applyStatus.ConfirmTime = new DateTime?((info.ConfirmTime.HasValue ? info.ConfirmTime.Value : DateTime.Now));
                context.SaveChanges();
                if (info.ApplyStatus == ApplyWithDrawInfo.ApplyWithDrawStatus.WithDrawSuccess)
                {
                    applyStatus.PayNo   = info.PayNo;
                    applyStatus.PayTime = new DateTime?((info.PayTime.HasValue ? info.PayTime.Value : DateTime.Now));
                    CapitalDetailModel capitalDetailModel = new CapitalDetailModel()
                    {
                        Amount     = -info.ApplyAmount,
                        UserId     = applyStatus.MemId,
                        PayWay     = info.Remark,
                        SourceType = CapitalDetailInfo.CapitalDetailType.WithDraw,
                        SourceData = info.Id.ToString()
                    };
                    AddCapital(capitalDetailModel);
                }
                transactionScope.Complete();
            }
        }
Пример #3
0
        //平台红包存储
        private void DepositToRegister(MemberOpenIdInfo openInfo, Entities efContext)
        {
            //获取某个OpenId对应的红包记录
            var receives = efContext.BonusReceiveInfo.Where(p => p.OpenId == openInfo.OpenId && !p.IsTransformedDeposit);
            var list     = receives.ToList();
            List <CapitalDetailModel> capitals = new List <CapitalDetailModel>();

            //存在数据则证明有可用红包,可以存到预存款里
            if (list.Count > 0)
            {
                foreach (var model in list)
                {
                    model.IsTransformedDeposit = true;
                    model.Himall_Members       = efContext.UserMemberInfo.FirstOrDefault(p => p.Id == openInfo.UserId);


                    CapitalDetailModel capital = new CapitalDetailModel()
                    {
                        UserId     = openInfo.UserId,
                        SourceType = CapitalDetailInfo.CapitalDetailType.RedPacket,
                        Amount     = model.Price,
                        CreateTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")
                    };
                    new MemberCapitalService().AddCapital(capital);
                }
                efContext.SaveChanges();
            }
            IMemberCapitalService capitalServicer = Himall.ServiceProvider.Instance <IMemberCapitalService> .Create;

            foreach (var c in capitals)
            {
                capitalServicer.AddCapital(c);
            }
        }
Пример #4
0
        private void DepositToMember(string openId, decimal price)
        {
            Entities         entity           = new Entities();
            MemberOpenIdInfo memberOpenIdInfo = (
                from p in entity.MemberOpenIdInfo
                where p.OpenId == openId
                select p).FirstOrDefault();

            if (memberOpenIdInfo != null)
            {
                BonusReceiveInfo bonusReceiveInfo = (
                    from p in entity.BonusReceiveInfo
                    where (p.OpenId == openId) && !p.IsTransformedDeposit
                    select p).FirstOrDefault();
                bonusReceiveInfo.IsTransformedDeposit = true;
                bonusReceiveInfo.ChemCloud_Members    = entity.UserMemberInfo.FirstOrDefault((UserMemberInfo p) => p.Id == memberOpenIdInfo.UserId);
                entity.SaveChanges();
                IMemberCapitalService create             = Instance <IMemberCapitalService> .Create;
                CapitalDetailModel    capitalDetailModel = new CapitalDetailModel()
                {
                    UserId = memberOpenIdInfo.UserId,
                    //SourceType = CapitalDetailInfo.CapitalDetailType.RedPacket,
                    Amount     = price,
                    CreateTime = bonusReceiveInfo.ReceiveTime.Value.ToString("yyyy-MM-dd HH:mm:ss")
                };
                create.AddCapital(capitalDetailModel);
            }
            entity.Dispose();
        }
Пример #5
0
        private void DepositToRegister(MemberOpenIdInfo openInfo, Entities efContext)
        {
            IQueryable <BonusReceiveInfo> bonusReceiveInfo =
                from p in efContext.BonusReceiveInfo
                where (p.OpenId == openInfo.OpenId) && !p.IsTransformedDeposit
                select p;
            List <BonusReceiveInfo>   list = bonusReceiveInfo.ToList();
            List <CapitalDetailModel> capitalDetailModels = new List <CapitalDetailModel>();

            if (list.Count > 0)
            {
                foreach (BonusReceiveInfo bonusReceiveInfo1 in list)
                {
                    bonusReceiveInfo1.IsTransformedDeposit = true;
                    bonusReceiveInfo1.ChemCloud_Members    = efContext.UserMemberInfo.FirstOrDefault((UserMemberInfo p) => p.Id == openInfo.UserId);
                    CapitalDetailModel capitalDetailModel = new CapitalDetailModel()
                    {
                        UserId = openInfo.UserId,
                        //SourceType = CapitalDetailInfo.CapitalDetailType.RedPacket,
                        Amount     = bonusReceiveInfo1.Price,
                        CreateTime = bonusReceiveInfo1.ReceiveTime.Value.ToString("yyyy-MM-dd HH:mm:ss")
                    };
                    capitalDetailModels.Add(capitalDetailModel);
                }
                efContext.SaveChanges();
            }
            IMemberCapitalService create = Instance <IMemberCapitalService> .Create;

            foreach (CapitalDetailModel capitalDetailModel1 in capitalDetailModels)
            {
                create.AddCapital(capitalDetailModel1);
            }
        }
Пример #6
0
 public void UpdateChargeDetail(ChargeDetailInfo model)
 {
     //var oldmodel = Context.ChargeDetailInfo.FirstOrDefault(e => e.Id == model.Id);
     var oldmodel = DbFactory.Default.Get <ChargeDetailInfo>().Where(e => e.Id == model.Id).FirstOrDefault();
     //using (TransactionScope scope = new TransactionScope())
     //{
     var flag = DbFactory.Default.InTransaction(() =>
     {
         //oldmodel.ChargeStatus = model.ChargeStatus;
         //oldmodel.ChargeTime = model.ChargeTime.Value;
         //oldmodel.ChargeWay = model.ChargeWay;
         //Context.SaveChanges();
         DbFactory.Default.Set <ChargeDetailInfo>().Set(n => n.ChargeStatus, model.ChargeStatus)
         .Set(n => n.ChargeTime, model.ChargeTime.Value).Set(n => n.ChargeWay, model.ChargeWay).Where(e => e.Id == oldmodel.Id).Succeed();
         CapitalDetailModel capitalDetail = new CapitalDetailModel
         {
             Amount        = oldmodel.ChargeAmount,
             UserId        = oldmodel.MemId,
             PayWay        = model.ChargeWay,
             SourceType    = CapitalDetailInfo.CapitalDetailType.ChargeAmount,
             SourceData    = oldmodel.Id.ToString(),
             PresentAmount = oldmodel.PresentAmount
         };
         AddCapital(capitalDetail);
         //scope.Complete();
         return(true);
     });
 }
Пример #7
0
        /// <summary>
        /// 充值成功
        /// </summary>
        /// <param name="chargeDetailId"></param>
        public void ChargeSuccess(long chargeDetailId, string remark = "")
        {
            var chargeDetail = DbFactory.Default.Get <ChargeDetailInfo>().Where(p => p.Id == chargeDetailId).FirstOrDefault();

            if (chargeDetail == null)
            {
                return;
            }

            chargeDetail.ChargeStatus = ChargeDetailInfo.ChargeDetailStatus.ChargeSuccess;
            var capitalDetail = DbFactory.Default.Get <CapitalDetailInfo>().Where(e => e.SourceData == chargeDetailId.ToString() && e.SourceType == CapitalDetailInfo.CapitalDetailType.ChargeAmount).FirstOrDefault();

            if (capitalDetail != null)//已经处理过直接返回
            {
                return;
            }
            DbFactory.Default.Update(chargeDetail);
            CapitalDetailModel detail = new CapitalDetailModel
            {
                Id            = CreateCode(CapitalDetailInfo.CapitalDetailType.ChargeAmount),
                UserId        = chargeDetail.MemId,
                Amount        = chargeDetail.ChargeAmount,
                CreateTime    = DateTime.Now.ToString(),
                SourceType    = CapitalDetailInfo.CapitalDetailType.ChargeAmount,
                SourceData    = chargeDetailId.ToString(),
                Remark        = remark,
                PresentAmount = chargeDetail.PresentAmount
            };

            AddCapital(detail);
        }
Пример #8
0
        /// <summary>
        /// 将红包金额存到预存款里  (领取红包时执行)
        /// 只会出现一条红包记录
        /// </summary>
        private void DepositToMember(string openId, decimal price, string unionId = "")
        {
            //查看用户、OpenId关联表里是否存在数据,存在则证明已经绑定过OpenId
            MemberOpenIdInfo model = DbFactory.Default.Get <MemberOpenIdInfo>().Where(p => p.OpenId.ToLower() == openId.ToLower()).FirstOrDefault();

            if (model == null && !string.IsNullOrEmpty(unionId))
            {
                model = DbFactory.Default.Get <MemberOpenIdInfo>().Where(p => p.UnionId.ToLower() == unionId.ToLower()).FirstOrDefault();
            }
            if (model != null)
            {
                var receive = DbFactory.Default.Get <BonusReceiveInfo>().Where(p => (p.OpenId.ToLower() == openId.ToLower() || p.OpenId.ToLower() == model.UnionId.ToLower()) && p.IsTransformedDeposit == false).FirstOrDefault();
                if (receive == null || receive.Id <= 0)
                {
                    return;//没有未领取红包提前跳出
                }
                receive.IsTransformedDeposit = true;
                receive.UserId = model.UserId;
                DbFactory.Default.Update(receive);

                IMemberCapitalService capitalServicer = Mall.ServiceProvider.Instance <IMemberCapitalService> .Create;
                CapitalDetailModel    capita          = new CapitalDetailModel
                {
                    UserId     = model.UserId,
                    SourceType = Mall.Entities.CapitalDetailInfo.CapitalDetailType.RedPacket,
                    Amount     = price,
                    CreateTime = ((DateTime)receive.ReceiveTime).ToString("yyyy-MM-dd HH:mm:ss")
                };
                capitalServicer.AddCapital(capita);
            }
        }
Пример #9
0
        /// <summary>
        /// 将红包金额存到预存款里  (领取红包时执行)
        /// 只会出现一条红包记录
        /// </summary>
        private void DepositToMember(string openId, decimal price)
        {
            Entities efContext = new Entities();
            //查看用户、OpenId关联表里是否存在数据,存在则证明已经绑定过OpenId
            MemberOpenIdInfo model = efContext.MemberOpenIdInfo.Where(p => p.OpenId == openId).FirstOrDefault();

            if (model != null)
            {
                var receive = efContext.BonusReceiveInfo.Where(p => p.OpenId == openId && !p.IsTransformedDeposit).FirstOrDefault();
                receive.IsTransformedDeposit = true;
                receive.Himall_Members       = efContext.UserMemberInfo.FirstOrDefault(p => p.Id == model.UserId);
                efContext.SaveChanges();

                IMemberCapitalService capitalServicer = Himall.ServiceProvider.Instance <IMemberCapitalService> .Create;
                CapitalDetailModel    capita          = new CapitalDetailModel
                {
                    UserId     = model.UserId,
                    SourceType = CapitalDetailInfo.CapitalDetailType.RedPacket,
                    Amount     = price,
                    CreateTime = ((DateTime)receive.ReceiveTime).ToString("yyyy-MM-dd HH:mm:ss")
                };
                capitalServicer.AddCapital(capita);
            }
            efContext.Dispose();
        }
Пример #10
0
        //平台红包存储
        private void DepositToRegister(MemberOpenIdInfo openInfo)
        {
            //获取某个OpenId对应的红包记录(在Mall3.3版本,考虑到小程序首页配置了现金红包跳转到红包页面的情况,将之前的openId改为UnionId,并兼容以前的数据)
            var receives = DbFactory.Default.Get <BonusReceiveInfo>().Where(p => (p.OpenId.ToLower() == openInfo.OpenId.ToLower() || p.OpenId.ToLower() == openInfo.UnionId.ToLower()) && p.IsTransformedDeposit == false);
            var list     = receives.ToList();
            List <CapitalDetailModel> capitals = new List <CapitalDetailModel>();

            //存在数据则证明有可用红包,可以存到预存款里
            if (list.Count > 0)
            {
                foreach (var model in list)
                {
                    model.IsTransformedDeposit = true;
                    model.UserId = openInfo.UserId;
                    DbFactory.Default.Update(model);

                    CapitalDetailModel capital = new CapitalDetailModel()
                    {
                        UserId     = openInfo.UserId,
                        SourceType = Mall.Entities.CapitalDetailInfo.CapitalDetailType.RedPacket,
                        Amount     = model.Price,
                        CreateTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")
                    };
                    new MemberCapitalService().AddCapital(capital);
                }
            }
            IMemberCapitalService capitalServicer = Mall.ServiceProvider.Instance <IMemberCapitalService> .Create;

            foreach (var c in capitals)
            {
                capitalServicer.AddCapital(c);
            }
        }
Пример #11
0
        public void Execute(IJobExecutionContext context)
        {
            Entity.Entities entity   = new Entities();
            var             settings = new SiteSettingService().GetSiteSettings();
            var             expried  = settings.SalesReturnTimeout;
            var             now      = DateTime.Now;
            var             exday    = now.AddDays(-expried);
            var             t        = entity.BrokerageIncomeInfo.Where(a => a.Status == Model.BrokerageIncomeInfo.BrokerageStatus.NotSettled);
            var             order    = entity.OrderInfo.Where(b => b.OrderStatus == Model.OrderInfo.OrderOperateStatus.Finish && b.FinishDate.Value <= exday);
            var             models   = t.Join(order, a => a.OrderId, b => b.Id, (a, b) => new
            {
                a.Id,
                a.OrderId,
                a.OrderTime,
                a.OrderItemId,
                a.Brokerage,
                a.Himall_BrokerageRefund,
                a.ProductID,
                a.UserId,
                b.FinishDate,
                b.OrderStatus,
            }).ToList();

            foreach (var model in models)
            {
                using (TransactionScope transaction = new TransactionScope())
                {
                    IMemberCapitalService capitalServicer = Himall.ServiceProvider.Instance <IMemberCapitalService> .Create;
                    CapitalDetailModel    capita          = new CapitalDetailModel
                    {
                        UserId     = model.UserId,
                        SourceType = CapitalDetailInfo.CapitalDetailType.Brokerage,
                        CreateTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")
                    };
                    capita.Amount = model.Brokerage;
                    var refund = model.Himall_BrokerageRefund.FirstOrDefault();
                    if (refund != null)
                    {
                        capita.Amount = model.Brokerage - refund.Brokerage;
                    }
                    var paid = entity.ProductBrokerageInfo.Where(a => a.ProductId == model.ProductID).FirstOrDefault();
                    var b    = entity.BrokerageIncomeInfo.Where(a => a.OrderItemId == model.OrderItemId && a.Status == BrokerageIncomeInfo.BrokerageStatus.NotSettled).FirstOrDefault();
                    if (b != null)
                    {
                        b.Status              = BrokerageIncomeInfo.BrokerageStatus.Settled;
                        b.SettlementTime      = DateTime.Now;
                        paid.BrokerageAmount += capita.Amount;
                        capita.Remark         = "分佣佣金,预约单Id:" + model.OrderId + ",诊疗项目ID:" + model.ProductID;
                        capita.SourceData     = model.OrderId.HasValue ? model.OrderId.Value.ToString() : "";
                        capitalServicer.AddCapital(capita);
                        //已结算累加
                        entity.SaveChanges();
                        transaction.Complete();
                    }
                }
            }
        }
Пример #12
0
        public void ConfirmApplyWithDraw(ApplyWithdrawInfo info)
        {
            var model = DbFactory.Default.Get <ApplyWithdrawInfo>().Where(e => e.Id == info.Id).FirstOrDefault();

            var flag = DbFactory.Default.InTransaction(() =>
            {
                model.ApplyStatus = info.ApplyStatus;
                model.OpUser      = info.OpUser;
                model.Remark      = info.Remark;
                model.ConfirmTime = info.ConfirmTime.HasValue ? info.ConfirmTime.Value : DateTime.Now;
                //Context.SaveChanges();
                DbFactory.Default.Update(model);
                if (info.ApplyStatus == ApplyWithdrawInfo.ApplyWithdrawStatus.WithDrawSuccess)
                {
                    //model.PayNo = info.PayNo;
                    //model.PayTime = info.PayTime.HasValue ? info.PayTime.Value : DateTime.Now;
                    //DbFactory.Default.Update(model);
                    DbFactory.Default.Set <ApplyWithdrawInfo>().Set(n => n.PayNo, info.PayNo).Set(n => n.PayTime, info.PayTime.HasValue ? info.PayTime.Value : DateTime.Now).Where(p => p.Id == model.Id).Succeed();
                    CapitalDetailModel capitalDetail = new CapitalDetailModel
                    {
                        Amount     = -info.ApplyAmount,
                        UserId     = model.MemId,
                        PayWay     = info.Remark,
                        SourceType = CapitalDetailInfo.CapitalDetailType.WithDraw,
                        SourceData = info.Id.ToString()
                    };
                    AddCapital(capitalDetail, false);
                }
                //scope.Complete();
                return(true);
            });

            if (flag)
            {
                //发送消息
                var member  = DbFactory.Default.Get <MemberInfo>(m => m.Id == model.MemId).FirstOrDefault();
                var message = new MessageWithDrawInfo();
                message.UserName  = model.NickName;
                message.UserName  = member != null ? member.UserName : "";
                message.Amount    = model.ApplyAmount;
                message.ApplyType = model.ApplyType.GetHashCode();
                message.ApplyTime = model.ApplyTime;
                message.Remark    = model.Remark;
                message.SiteName  = SiteSettingApplication.SiteSettings.SiteName;

                if (info.ApplyStatus == ApplyWithdrawInfo.ApplyWithdrawStatus.WithDrawSuccess)
                {
                    Task.Factory.StartNew(() => ServiceProvider.Instance <IMessageService> .Create.SendMessageOnMemberWithDrawSuccess(model.MemId, message));
                }

                if (info.ApplyStatus == ApplyWithdrawInfo.ApplyWithdrawStatus.Refuse)
                {
                    Task.Factory.StartNew(() => ServiceProvider.Instance <IMessageService> .Create.SendMessageOnMemberWithDrawFail(model.MemId, message));
                }
            }
        }
Пример #13
0
        public JsonResult ChageCapital(long userId, decimal amount, string remark)
        {
            var result = new Result {
                msg = "错误的会员编号"
            };
            var _user = MemberApplication.GetMember(userId);

            if (_user != null)
            {
                if (string.IsNullOrWhiteSpace(remark))
                {
                    result.msg = "请填写备注信息";
                }
                else
                {
                    if (amount < 0)
                    {
                        var balance = MemberCapitalApplication.GetBalanceByUserId(userId);
                        if (balance < Math.Abs(amount))
                        {
                            throw new HimallException("用户余额不足相减");
                        }
                    }
                    if (amount < 0)
                    {
                        CapitalDetailModel capita = new CapitalDetailModel
                        {
                            UserId     = userId,
                            SourceType = CapitalDetailType.ChargeAmount,
                            Amount     = amount,
                            CreateTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
                            Remark     = remark,
                            PayWay     = "管理员操作"
                        };
                        _iMemberCapitalService.AddCapital(capita);
                    }
                    else
                    {
                        var detail = new Entities.ChargeDetailInfo()
                        {
                            ChargeAmount = amount,
                            ChargeStatus = Entities.ChargeDetailInfo.ChargeDetailStatus.WaitPay,
                            CreateTime   = DateTime.Now,
                            MemId        = userId,
                            ChargeWay    = "管理员操作"
                        };
                        long id = _iMemberCapitalService.AddChargeApply(detail);
                        _iMemberCapitalService.ChargeSuccess(id, remark + " 管理员操作");
                    }
                    result.success = true;
                    result.msg     = "操作成功";
                }
            }

            return(Json(result));
        }
Пример #14
0
        /// <summary>
        /// 微信活动 将红包金额存到预存款里  (领取红包时执行)
        /// 只会出现一条红包记录
        /// </summary>
        private void WeiDepositToMember(long userId, decimal price)
        {
            IMemberCapitalService capitalServicer = Mall.ServiceProvider.Instance <IMemberCapitalService> .Create;
            CapitalDetailModel    capita          = new CapitalDetailModel
            {
                UserId     = userId,
                SourceType = Mall.Entities.CapitalDetailInfo.CapitalDetailType.RedPacket,
                Amount     = price,
                CreateTime = (DateTime.Now).ToString("yyyy-MM-dd HH:mm:ss")
            };

            capitalServicer.AddCapital(capita);
        }
Пример #15
0
        public void UpdateChargeDetail(ChargeDetailInfo model)
        {
            ChargeDetailInfo chargeStatus = context.ChargeDetailInfo.FirstOrDefault((ChargeDetailInfo e) => e.Id == model.Id);

            using (TransactionScope transactionScope = new TransactionScope())
            {
                chargeStatus.ChargeStatus = model.ChargeStatus;
                chargeStatus.ChargeTime   = new DateTime?(model.ChargeTime.Value);
                chargeStatus.ChargeWay    = model.ChargeWay;
                context.SaveChanges();
                CapitalDetailModel capitalDetailModel = new CapitalDetailModel()
                {
                    Amount     = chargeStatus.ChargeAmount,
                    UserId     = chargeStatus.MemId,
                    PayWay     = model.ChargeWay,
                    SourceType = CapitalDetailInfo.CapitalDetailType.ChargeAmount,
                    SourceData = chargeStatus.Id.ToString()
                };
                AddCapital(capitalDetailModel);
                transactionScope.Complete();
            }
        }
Пример #16
0
        public void UpdateChargeDetail(ChargeDetailInfo model)
        {
            var oldmodel = Context.ChargeDetailInfo.FirstOrDefault(e => e.Id == model.Id);

            using (TransactionScope scope = new TransactionScope())
            {
                oldmodel.ChargeStatus = model.ChargeStatus;
                oldmodel.ChargeTime   = model.ChargeTime.Value;
                oldmodel.ChargeWay    = model.ChargeWay;
                Context.SaveChanges();
                CapitalDetailModel capitalDetail = new CapitalDetailModel
                {
                    Amount     = oldmodel.ChargeAmount,
                    UserId     = oldmodel.MemId,
                    PayWay     = model.ChargeWay,
                    SourceType = CapitalDetailInfo.CapitalDetailType.ChargeAmount,
                    SourceData = oldmodel.Id.ToString()
                };

                AddCapital(capitalDetail);
                scope.Complete();
            }
        }
Пример #17
0
        public void AddCapital(CapitalDetailModel model, bool isAccrualRecharge = true)
        {
            //var capital = Context.CapitalInfo.FirstOrDefault(e => e.MemId == model.UserId);
            var     capital       = DbFactory.Default.Get <CapitalInfo>().Where(e => e.MemId == model.UserId).FirstOrDefault();
            decimal balance       = 0;
            decimal presentAmount = 0;

            //充值赠送
            if (model.PresentAmount.HasValue && model.PresentAmount > 0)
            {
                presentAmount = model.PresentAmount.Value;
            }
            decimal       chargeAmount = model.Amount;
            decimal       freezeAmount = 0;
            StringBuilder strBuilder   = new StringBuilder();

            if (presentAmount > 0)
            {
                strBuilder.Append("充" + model.Amount + "元赠送" + presentAmount + "元");
            }
            else
            {
                //备注、支付方式保存到remark
                //strBuilder.Append(model.PayWay);//BUG 40384
                //strBuilder.Append(" ");
                strBuilder.Append(model.Remark);
            }
            switch (model.SourceType)
            {
            case CapitalDetailInfo.CapitalDetailType.ChargeAmount:
                balance = chargeAmount + presentAmount;
                break;

            case CapitalDetailInfo.CapitalDetailType.WithDraw:
                freezeAmount = model.Amount;
                break;

            default:
                balance = chargeAmount + presentAmount;
                break;
            }
            if (capital == null)
            {
                capital = new CapitalInfo
                {
                    MemId         = model.UserId,
                    Balance       = balance,
                    ChargeAmount  = chargeAmount,
                    FreezeAmount  = freezeAmount,
                    PresentAmount = presentAmount
                };
                if (!isAccrualRecharge)
                {
                    capital.ChargeAmount = 0;
                }
                DbFactory.Default.Add(capital);
                var capitalDetail = new CapitalDetailInfo
                {
                    Id            = CreateCode(model.SourceType),
                    CapitalID     = capital.Id,
                    Amount        = balance,
                    PresentAmount = presentAmount,
                    CreateTime    = DateTime.Parse(model.CreateTime),
                    SourceType    = model.SourceType,
                    SourceData    = model.SourceData,
                    Remark        = strBuilder.ToString()
                };
                DbFactory.Default.Add(capitalDetail);
                if (string.IsNullOrWhiteSpace(capitalDetail.SourceData) &&
                    capitalDetail.SourceType == CapitalDetailInfo.CapitalDetailType.ChargeAmount &&
                    model.PayWay == "管理员操作")
                {
                    capitalDetail.SourceData = capitalDetail.Id.ToString();
                    DbFactory.Default.Update(capitalDetail);
                }
            }
            else
            {
                var capitalDetail = DbFactory.Default.Get <CapitalDetailInfo>().Where(e => e.Id == model.Id && e.Id != 0).FirstOrDefault();
                if (capitalDetail == null)
                {
                    capitalDetail = new CapitalDetailInfo()
                    {
                        Id            = CreateCode(model.SourceType),
                        Amount        = model.Amount,
                        PresentAmount = model.PresentAmount.HasValue ? model.PresentAmount.Value : 0,
                        CreateTime    = DateTime.Parse(model.CreateTime),
                        CapitalID     = capital.Id,
                        SourceType    = model.SourceType,
                        SourceData    = model.SourceData,
                        Remark        = strBuilder.ToString()
                    };
                    DbFactory.Default.Add(capitalDetail);
                    if (string.IsNullOrWhiteSpace(capitalDetail.SourceData) &&
                        capitalDetail.SourceType == CapitalDetailInfo.CapitalDetailType.ChargeAmount &&
                        model.PayWay == "管理员操作")
                    {
                        capitalDetail.SourceData = capitalDetail.Id.ToString();
                        DbFactory.Default.Update(capitalDetail);
                    }
                    capital.Balance       += balance;
                    capital.PresentAmount += presentAmount;

                    if (isAccrualRecharge)
                    {
                        capital.ChargeAmount += chargeAmount;
                    }
                    capital.FreezeAmount += freezeAmount;
                    DbFactory.Default.Update(capital);
                }
            }
        }
Пример #18
0
        public void AddCapital(CapitalDetailModel model)
        {
            decimal?      nullable;
            decimal?      nullable1;
            decimal?      nullable2;
            CapitalInfo   capitalInfo   = context.CapitalInfo.FirstOrDefault((CapitalInfo e) => e.MemId == model.UserId);
            decimal       num           = new decimal(0);
            decimal       num1          = new decimal(0);
            decimal       amount        = new decimal(0);
            StringBuilder stringBuilder = new StringBuilder();

            stringBuilder.Append(model.Remark);
            stringBuilder.Append(" ");
            stringBuilder.Append(model.PayWay);
            switch (model.SourceType)
            {
            case CapitalDetailInfo.CapitalDetailType.ChargeAmount:
            {
                decimal amount1 = model.Amount;
                num1 = amount1;
                num  = amount1;
                break;
            }

            case CapitalDetailInfo.CapitalDetailType.WithDraw:
            {
                amount = model.Amount;
                break;
            }

            default:
            {
                num = model.Amount;
                break;
            }
            }
            if (capitalInfo == null)
            {
                CapitalInfo capitalInfo1 = new CapitalInfo()
                {
                    MemId        = model.UserId,
                    Balance      = new decimal?(num),
                    ChargeAmount = new decimal?(num1),
                    FreezeAmount = new decimal?(amount)
                };
                List <CapitalDetailInfo> capitalDetailInfos = new List <CapitalDetailInfo>();
                CapitalDetailInfo        capitalDetailInfo  = new CapitalDetailInfo()
                {
                    Id         = CreateCode(model.SourceType),
                    Amount     = num,
                    CreateTime = new DateTime?(DateTime.Parse(model.CreateTime)),
                    SourceType = model.SourceType,
                    SourceData = model.SourceData,
                    Remark     = stringBuilder.ToString()
                };
                capitalDetailInfos.Add(capitalDetailInfo);
                capitalInfo1.ChemCloud_CapitalDetail = capitalDetailInfos;
                capitalInfo = capitalInfo1;
                context.CapitalInfo.Add(capitalInfo);
            }
            else if (context.CapitalDetailInfo.FirstOrDefault((CapitalDetailInfo e) => e.Id == model.Id && e.Id != 0) == null)
            {
                CapitalDetailInfo capitalDetailInfo1 = new CapitalDetailInfo()
                {
                    Id         = CreateCode(model.SourceType),
                    Amount     = model.Amount,
                    CreateTime = new DateTime?(DateTime.Parse(model.CreateTime)),
                    CapitalID  = capitalInfo.Id,
                    SourceType = model.SourceType,
                    SourceData = model.SourceData,
                    Remark     = stringBuilder.ToString()
                };
                context.CapitalDetailInfo.Add(capitalDetailInfo1);
                CapitalInfo capitalInfo2 = capitalInfo;
                decimal?    balance      = capitalInfo2.Balance;
                decimal     num2         = num;
                if (balance.HasValue)
                {
                    nullable = new decimal?(balance.GetValueOrDefault() + num2);
                }
                else
                {
                    nullable = null;
                }
                capitalInfo2.Balance = nullable;
                CapitalInfo capitalInfo3 = capitalInfo;
                decimal?    chargeAmount = capitalInfo3.ChargeAmount;
                decimal     num3         = num1;
                if (chargeAmount.HasValue)
                {
                    nullable1 = new decimal?(chargeAmount.GetValueOrDefault() + num3);
                }
                else
                {
                    nullable1 = null;
                }
                capitalInfo3.ChargeAmount = nullable1;
                CapitalInfo capitalInfo4 = capitalInfo;
                decimal?    freezeAmount = capitalInfo4.FreezeAmount;
                decimal     num4         = amount;
                if (freezeAmount.HasValue)
                {
                    nullable2 = new decimal?(freezeAmount.GetValueOrDefault() + num4);
                }
                else
                {
                    nullable2 = null;
                }
                capitalInfo4.FreezeAmount = nullable2;
            }
            context.SaveChanges();
        }
Пример #19
0
        public void AddCapital(CapitalDetailModel model)
        {
            Log.Debug("AddCapital:" + model.UserId);
            var           capital      = Context.CapitalInfo.FirstOrDefault(e => e.MemId == model.UserId);
            decimal       balance      = 0;
            decimal       chargeAmount = 0;
            decimal       freezeAmount = 0;
            StringBuilder strBuilder   = new StringBuilder();

            //备注、支付方式保存到remark
            strBuilder.Append(model.Remark);
            strBuilder.Append(" ");
            strBuilder.Append(model.PayWay);
            switch (model.SourceType)
            {
            case CapitalDetailInfo.CapitalDetailType.ChargeAmount:
                balance = chargeAmount = model.Amount;
                break;

            case CapitalDetailInfo.CapitalDetailType.WithDraw:
                freezeAmount = model.Amount;
                break;

            default:
                balance = model.Amount;
                break;
            }
            if (capital == null)
            {
                capital = new CapitalInfo
                {
                    MemId                = model.UserId,
                    Balance              = balance,
                    ChargeAmount         = chargeAmount,
                    FreezeAmount         = freezeAmount,
                    Himall_CapitalDetail = new List <CapitalDetailInfo> {
                        new CapitalDetailInfo {
                            Id         = CreateCode(model.SourceType),
                            Amount     = balance,
                            CreateTime = DateTime.Parse(model.CreateTime),
                            SourceType = model.SourceType,
                            SourceData = model.SourceData,
                            Remark     = strBuilder.ToString()
                        }
                    }
                };
                Context.CapitalInfo.Add(capital);
            }
            else
            {
                var capitalDetail = Context.CapitalDetailInfo.FirstOrDefault(e => e.Id == model.Id && e.Id != 0);
                if (capitalDetail == null)
                {
                    capitalDetail = new CapitalDetailInfo()
                    {
                        Id         = CreateCode(model.SourceType),
                        Amount     = model.Amount,
                        CreateTime = DateTime.Parse(model.CreateTime),
                        CapitalID  = capital.Id,
                        SourceType = model.SourceType,
                        SourceData = model.SourceData,
                        Remark     = strBuilder.ToString()
                    };
                    Context.CapitalDetailInfo.Add(capitalDetail);
                    capital.Balance      += balance;
                    capital.ChargeAmount += chargeAmount;
                    capital.FreezeAmount += freezeAmount;
                }
            }
            Context.SaveChanges();
        }
 /// <summary>
 /// 添加会员资产
 /// </summary>
 /// <param name="capitalModel"></param>
 public static void AddCapital(CapitalDetailModel model)
 {
     _iMemberCapitalService.AddCapital(model);
 }
Пример #21
0
 /// <summary>
 /// 添加会员资产
 /// </summary>
 /// <param name="capitalModel"></param>
 public static void AddCapital(CapitalDetailModel model)
 {
     Service.AddCapital(model);
 }