示例#1
0
        /// <summary>
        /// 加入流水表
        /// </summary>
        /// <param name="userId"></param>
        /// <param name="Amount"></param>
        /// <param name="journalTypeId"></param>
        /// <param name="currencyType"></param>
        /// <param name="balanceAmount"></param>
        /// <param name="remark"></param>
        /// <param name="type">1-加,0-减</param>
        /// <returns></returns>
        public async Task <bool> AddAsync(long userId, decimal Amount, int journalTypeId, int currencyType, decimal balanceAmount, string remark, int type)
        {
            using (MyDbContext dbc = new MyDbContext())
            {
                JournalEntity journal = new JournalEntity();
                if (type == 1)//1-加,0-减
                {
                    journal.InAmount  = Amount;
                    journal.OutAmount = 0;
                }
                else
                {
                    journal.InAmount  = 0;
                    journal.OutAmount = Amount;
                }
                journal.JournalTypeId = journalTypeId;
                journal.CurrencyType  = currencyType;
                journal.Remark        = remark;
                journal.UserId        = userId;
                journal.BalanceAmount = balanceAmount;
                dbc.Journals.Add(journal);

                await dbc.SaveChangesAsync();

                return(true);
            }
        }
示例#2
0
        /// <summary>
        /// 插入一条记录
        /// </summary>
        /// <param name="entity"></param>
        /// <returns></returns>
        public void Insert(JournalEntity entity)
        {
            if (string.IsNullOrEmpty(entity.iGuid))
            {
                entity.iGuid = Guid.NewGuid().ToString();
            }
            entity.iCreatedOn = DateTime.Now;
            entity.iUpdatedOn = DateTime.Now;
            entity.iIsDeleted = 0;
            entity.iStatus    = 1;
            IDbSession session = SessionFactory.CreateSession();

            try
            {
                session.BeginTrans();
                Repository.Insert <JournalEntity>(session.Connection, entity, session.Transaction);
                session.Commit();
            }
            catch (System.Exception)
            {
                session.Rollback();
                throw;
            }
            finally
            {
                session.Dispose();
            }
        }
示例#3
0
        public JournalDTO ToDTO(JournalEntity entity)
        {
            JournalDTO dto = new JournalDTO();

            dto.Amount                 = entity.Amount;
            dto.CreateTime             = entity.CreateTime;
            dto.Description            = entity.Description;
            dto.Id                     = entity.Id;
            dto.InIntegral             = entity.InIntegral;
            dto.Integral               = entity.Integral;
            dto.IntegralTypeId         = entity.IntegralTypeId;
            dto.JournalTypeId          = entity.JournalTypeId;
            dto.JournalTypeName        = entity.JournalType.Name;
            dto.OutIntegral            = entity.OutIntegral;
            dto.Tip                    = entity.Tip;
            dto.FromPlatformUserId     = entity.FormPlatformUserId;
            dto.FromPlatformUserMobile = entity.FormPlatformUser.Mobile;
            dto.ToPlatformUserId       = entity.ToPlatformUserId;
            dto.ToPlatformUserMobile   = entity.ToPlatformUser.Mobile;
            dto.IntegralTypeName       = entity.IntegralType.Name;
            dto.ToIntegralTypeName     = entity.ToIntegralType.Name;
            dto.Journal01              = entity.Journal01;
            dto.PlatformUserId         = entity.PlatformUserId;
            dto.PlatformUserMobile     = entity.PlatformUser.Mobile;
            dto.ToPlatformUserCode     = entity.ToPlatformUser.Code;
            dto.FormPlatformUserCode   = entity.FormPlatformUser.Code;
            return(dto);
        }
示例#4
0
 public bool Confirm(long id, string imgUrl)
 {
     using (MyDbContext dbc = new MyDbContext())
     {
         CommonService <TakeCashEntity>      cs  = new CommonService <TakeCashEntity>(dbc);
         CommonService <TakeCashStateEntity> tcs = new CommonService <TakeCashStateEntity>(dbc);
         CommonService <HolderEntity>        hcs = new CommonService <HolderEntity>(dbc);
         CommonService <JournalTypeEntity>   jcs = new CommonService <JournalTypeEntity>(dbc);
         var takeCash = cs.GetAll().SingleOrDefault(t => t.Id == id);
         if (takeCash == null)
         {
             return(false);
         }
         var holder = hcs.GetAll().SingleOrDefault(h => h.Id == takeCash.HolderId);
         if (holder == null)
         {
             return(false);
         }
         takeCash.ImgUrl  = imgUrl;
         takeCash.StateId = tcs.GetAll().SingleOrDefault(t => t.Name == "已完成").Id;
         holder.TakeBonus = holder.TakeBonus - takeCash.Amount;
         holder.HaveBonus = holder.HaveBonus + takeCash.Amount;
         JournalEntity journal = new JournalEntity();
         journal.BalanceAmount = holder.TakeBonus;
         journal.HolderId      = holder.Id;
         journal.OutAmount     = takeCash.Amount;
         journal.Remark        = "提现";
         journal.JournalTypeId = jcs.GetAll().SingleOrDefault(j => j.Name == "takecash").Id;
         dbc.Journal.Add(journal);
         dbc.SaveChanges();
         return(true);
     }
 }
示例#5
0
        /// <summary>
        /// 修改升级,扣款,加人流水表
        /// </summary>
        /// <param name="user"></param>
        /// <returns></returns>
        public long Update_LeveID(int GetLoginID, int LeveID, decimal Amount)
        {
            using (MyDbContext dbc = new MyDbContext())
            {
                MemberSearchResult         result = new MemberSearchResult();
                CommonService <UserEntity> cs     = new CommonService <UserEntity>(dbc);
                //先查询有没有值。
                var User = cs.GetById(GetLoginID);
                if (User == null)
                {
                    //没有值就返回null
                    result.MemberList = null;
                    return(0);
                }
                User.LevelID  = LeveID;
                User.Emoney   = User.Emoney - Amount;
                User.RegMoney = User.RegMoney + Amount;

                JournalEntity journal = new JournalEntity();
                journal.UserID        = GetLoginID;
                journal.Remark        = "会员升级";
                journal.OutAmount     = Amount;
                journal.BalanceAmount = User.Emoney;
                journal.JournalDate   = DateTime.Now;
                journal.JournalType   = 1;
                journal.Journal01     = GetLoginID;
                dbc.Journal.Add(journal);
                dbc.SaveChanges();
                return(2);
            }
        }
示例#6
0
        /// <summary>
        /// 转账
        /// </summary>
        /// <param name="UserID"></param>
        /// <param name="ToUserID"></param>
        /// <param name="Amount"></param>
        /// <param name="ChangeType"></param>
        /// <param name="remark"></param>
        /// <param name="remarken"></param>
        /// <param name="toremark"></param>
        /// <param name="toremarken"></param>
        /// <returns></returns>
        public long TransferMonbey(long UserID, long ToUserID, decimal Amount, long ChangeType, string remark, string remarken, string toremark, string toremarken)
        {
            using (MyDbContext dbcontext = new MyDbContext())
            {
                CommonService <ChangeEntity>  change  = new CommonService <ChangeEntity>(dbcontext);
                CommonService <UserEntity>    user    = new CommonService <UserEntity>(dbcontext);
                CommonService <JournalEntity> journal = new CommonService <JournalEntity>(dbcontext);
                //转账表(insert)
                ChangeEntity entity = new ChangeEntity();
                entity.UserID     = UserID;
                entity.ToUserType = 0;
                entity.ToUserID   = ToUserID;
                entity.Amount     = Amount;
                entity.ChangeType = ChangeType;
                entity.ChangeDate = DateTime.Now;
                dbcontext.Change.Add(entity);

                //转账用户(update)
                UserEntity uentity   = user.GetById(UserID);
                UserEntity touentity = user.GetById(ToUserID);
                if (ChangeType == 1)
                {
                    uentity.BonusAccount   -= Amount;
                    touentity.BonusAccount += Amount;
                }

                //转出明细(insert)
                JournalEntity jentity = new JournalEntity();
                jentity.UserID   = UserID;
                jentity.InAmount = 0;
                if (ChangeType == 1)
                {
                    jentity.OutAmount     = Amount;
                    jentity.BalanceAmount = uentity.BonusAccount;
                }
                jentity.JournalType = 1;
                jentity.Journal01   = ToUserID;
                jentity.Remark      = remark;
                jentity.RemarkEn    = remarken;
                dbcontext.Journal.Add(jentity);

                //转入明细(insert)
                JournalEntity tojentity = new JournalEntity();
                tojentity.UserID    = ToUserID;
                tojentity.OutAmount = 0;
                if (ChangeType == 1)
                {
                    tojentity.InAmount      = Amount;
                    tojentity.BalanceAmount = uentity.BonusAccount;
                }
                tojentity.JournalType = 1;
                tojentity.Journal01   = UserID;
                tojentity.Remark      = toremark;
                tojentity.RemarkEn    = toremarken;
                dbcontext.Journal.Add(tojentity);

                int re = dbcontext.SaveChanges();
                return(re);
            }
        }
        internal bool TryAddPage(JournalEntity journalEntity, JournalPageEntity page, out Exception exception)
        {
            bool result = false;

            exception = null;

            try
            {
                // connecting to, or creating a brand new given journal's DB
                using (var db = GetInternalStorageContext(journalEntity))
                {
                    // inserting a page
                    db.GetCollection <JournalPageEntity>("JournalPages").Insert(page);

                    // adding references
                    page.Journal = journalEntity;

                    page.StorageContext = this;

                    result = true;
                }
            }
            catch (Exception ex)
            {
                // setting our exception
                exception = ex;
                result    = false;
            }

            return(result);
        }
示例#8
0
        public void AutoConfirm()
        {
            using (MyDbContext dbc = new MyDbContext())
            {
                long   stateId = dbc.GetId <IdNameEntity>(i => i.Name == "已完成");
                string val     = dbc.GetParameter <SettingEntity>(s => s.Name == "自动确认收货时间", s => s.Parm);
                double day;
                double.TryParse(val, out day);
                if (day == 0)
                {
                    day = 7;
                }

                //Expression<Func<OrderEntity, bool>> timewhere = r => r.ConsignTime == null ? false : r.ConsignTime.Value.AddDays(Convert.ToDouble(val)) < DateTime.Now;
                //var orders = dbc.GetAll<OrderEntity>().Where(r => r.OrderState.Name == "已发货").Where(timewhere.Compile()).ToList();
                var  orders = dbc.GetAll <OrderEntity>().Where(r => r.OrderState.Name == "已发货").Where(r => SqlFunctions.DateAdd("day", day, r.ConsignTime) < DateTime.Now);
                long count  = 0;
                foreach (OrderEntity order in orders)
                {
                    order.EndTime      = DateTime.Now;
                    order.OrderStateId = stateId;
                    count++;
                }
                log.Debug($"自动确认收货时间:{day},订单状态:{stateId},符合要求订单数量{count}");
                dbc.SaveChanges();
                val = dbc.GetParameter <SettingEntity>(s => s.Name == "不能退货时间", s => s.Parm);
                double.TryParse(val, out day);
                if (day == 0)
                {
                    day = 3;
                }
                var           orders1    = dbc.GetAll <OrderEntity>().Where(r => r.CloseTime == null).Where(r => r.OrderState.Name == "已完成" || r.OrderState.Name == "退货审核").Where(r => SqlFunctions.DateAdd("day", day, r.EndTime) < DateTime.Now);
                List <string> orderCodes = new List <string>();
                foreach (OrderEntity order in orders1)
                {
                    order.OrderStateId = stateId;
                    order.CloseTime    = DateTime.Now;
                    orderCodes.Add(order.Code);
                }
                var journals = dbc.GetAll <JournalEntity>().AsNoTracking().Where(j => orderCodes.Contains(j.OrderCode) && j.JournalType.Name == "佣金收入" && j.IsEnabled == false);
                Dictionary <long, long> dicts = new Dictionary <long, long>();
                foreach (JournalEntity journal in journals)
                {
                    dicts.Add(journal.Id, journal.UserId);
                }
                foreach (var dict in dicts)
                {
                    var           user    = dbc.GetAll <UserEntity>().SingleOrDefault(u => u.Id == dict.Value);
                    JournalEntity journal = dbc.GetAll <JournalEntity>().SingleOrDefault(j => j.Id == dict.Key);
                    user.Amount           = user.Amount + journal.InAmount.Value;
                    user.FrozenAmount     = user.FrozenAmount - journal.InAmount.Value;
                    user.BonusAmount      = user.BonusAmount + journal.InAmount.Value;
                    journal.BalanceAmount = user.Amount;
                    journal.IsEnabled     = true;
                }

                dbc.SaveChanges();
                log.Debug($"service中执行自动收货,不能退货完成");
            }
        }
示例#9
0
        public async Task <long> Confirm(long id, long adminId)
        {
            using (MyDbContext dbc = new MyDbContext())
            {
                TakeCashEntity takeCash = await dbc.GetAll <TakeCashEntity>().SingleOrDefaultAsync(t => t.Id == id);

                if (takeCash == null)
                {
                    return(-1);
                }
                UserEntity user = await dbc.GetAll <UserEntity>().SingleOrDefaultAsync(u => u.Id == takeCash.UserId);

                if (user == null)
                {
                    return(-2);
                }
                if (takeCash.Amount > user.Amount)
                {
                    return(-3);
                }
                user.Amount          = user.Amount - takeCash.Amount;
                takeCash.StateId     = (await dbc.GetAll <IdNameEntity>().SingleOrDefaultAsync(i => i.Name == "已结款")).Id;
                takeCash.AdminMobile = (await dbc.GetAll <AdminEntity>().SingleOrDefaultAsync(a => a.Id == adminId)).Mobile;
                JournalEntity journal = new JournalEntity();
                journal.OutAmount     = takeCash.Amount;
                journal.JournalTypeId = 1;
                journal.Remark        = "余额提现";
                journal.UserId        = takeCash.UserId;
                journal.BalanceAmount = user.Amount;
                dbc.Journals.Add(journal);
                await dbc.SaveChangesAsync();

                return(takeCash.Id);
            }
        }
示例#10
0
 public string JournalSaveChanges(string jsonString)
 {
     try
     {
         JsonSerializerSettings st = new JsonSerializerSettings();
         st.DateTimeZoneHandling = DateTimeZoneHandling.Local;
         JournalEntity  entity  = JsonConvert.DeserializeObject <JournalEntity>(jsonString, st);
         JournalManager service = new JournalManager();
         if (string.IsNullOrEmpty(entity.iGuid))
         {
             entity.iCreatedBy = SessionHelper.CurrentUser.UserName;
             entity.iUpdatedBy = SessionHelper.CurrentUser.UserName;
             service.Insert(entity);
         }
         else
         {
             entity.iUpdatedBy = SessionHelper.CurrentUser.UserName;
             service.Update(entity);
         }
         return("success");
     }
     catch (Exception e)
     {
         return(e.ToString());
     }
 }
示例#11
0
        private async void LoadJournal(JournalEntity journalEntity)
        {
            this.CurrentJournal = journalEntity;

            // binding
            var pages     = journalEntity.Pages;
            var leftPage  = pages[1];
            var rightPage = pages[2];

            if (leftPage.InkLayer != null)
            {
                LoadInkStrokesFromInkLayer(leftPage.InkLayer, this.LeftInkCanvasView);
            }

            if (rightPage.InkLayer != null)
            {
                LoadInkStrokesFromInkLayer(rightPage.InkLayer, this.RightInkCanvasView);
            }

            //this.currentJournalBook.ItemsSource = journalEntity.Pages;
            //this.currentJournalBook.CurrentSheetIndex = journalEntity.LastOpenPage;

            // update current journal's metadata
            // UpdateCurrentJournalMetadata(journalEntity);

            //var page1 = this.CurrentJournal.Pages[0];


            this.CurrentJournal.PropertyChanged += CurrentJournal_PropertyChanged;

            // this.book.ItemsSource = this.CurrentJournal.Pages;

            // this.LeftPageNumber = this.book.CurrentPage;
            // this.RightPageNumber = this.LeftPageNumber + 1;
        }
示例#12
0
        public JournalDTO ToDTO(JournalEntity journal)
        {
            JournalDTO jourDTO = new JournalDTO();

            jourDTO.ID             = journal.ID;
            jourDTO.UserID         = journal.UserID;
            jourDTO.JournalType    = journal.JournalType;
            jourDTO.InAmount       = journal.InAmount;
            jourDTO.OutAmount      = journal.OutAmount;
            jourDTO.BalanceAmount  = journal.BalanceAmount;
            jourDTO.JournalDate    = journal.JournalDate;
            jourDTO.Journal01      = journal.Journal01;
            jourDTO.Journal02      = journal.Journal02;
            jourDTO.Journal03      = journal.Journal03;
            jourDTO.Journal04      = journal.Journal04;
            jourDTO.Journal05      = journal.Journal05;
            jourDTO.Journal06      = journal.Journal06;
            jourDTO.Journal07      = journal.Journal07;
            jourDTO.UserCode       = journal.Users.UserCode;
            jourDTO.TrueName       = journal.Users.TrueName;
            jourDTO.CurrencyName   = journal.Currencys.CurrencyName;
            jourDTO.CurrencyNameEn = journal.Currencys.CurrencyNameEn;

            return(jourDTO);
        }
示例#13
0
        private JournalEntity CreateJournalInternal(Guid id, string displayName, string hexColor)
        {
            #region Creating Journal
            var journal = new JournalEntity
            {
                Id                      = id,
                StorageContext          = this,
                IsSoftDeleted           = false,
                DateCreated             = DateTime.UtcNow,
                DateUpdated             = DateTime.UtcNow,
                FrontCoverSolidBrushHex = hexColor,
                FrontCoverSolidColorHex = hexColor,
                DisplayName             = displayName,
                Width                   = 205,
                X         = 350,
                Y         = 490,
                ZoomLevel = 1
            };

            this.Journals.AddJournal(journal);
            #endregion

            // loading pages
            var pages = journal.Pages;

            #region Creating Front Cover & First Two Pages
            JournalPageEntity cover = new JournalPageEntity
            {
                Id          = 1,
                DateCreated = DateTime.UtcNow,
                DateUpdated = DateTime.UtcNow,
                IsCoverPage = true
            };

            journal.Pages.AddPage(cover);

            JournalPageEntity page1 = new JournalPageEntity
            {
                Id          = 2,
                DateCreated = DateTime.UtcNow,
                DateUpdated = DateTime.UtcNow,
                IsCoverPage = false
            };

            journal.Pages.AddPage(page1);

            JournalPageEntity page2 = new JournalPageEntity
            {
                Id          = 3,
                DateCreated = DateTime.UtcNow,
                DateUpdated = DateTime.UtcNow,
                IsCoverPage = false
            };

            journal.Pages.AddPage(page2);
            #endregion

            return(journal);
        }
示例#14
0
        public async Task <long> AddAsync(long buyerId, string buyerName, long courseId)
        {
            using (MyDbContext dbc = new MyDbContext())
            {
                int res = await dbc.GetAll <CourseOrderEntity>().Where(c => c.CourseId == courseId && c.BuyerId == buyerId && c.OrderStateId != (int)CourseOrderStateEnum.已取消 && c.PayTypeId == 2).Select(c => c.OrderStateId).SingleOrDefaultAsync();

                //订单已经存在且状态不是已取消
                if (res > 0)
                {
                    return(-1);
                }
                decimal amount = await dbc.GetAll <LinkEntity>().Where(l => l.Id == courseId).Select(l => l.link002).SingleOrDefaultAsync();

                var user = await dbc.GetAll <UserEntity>().SingleOrDefaultAsync(u => u.Id == buyerId);

                if (user.Amount < amount)
                {
                    return(-2);
                }
                user.Amount = user.Amount - amount;


                CourseOrderEntity entity = new CourseOrderEntity();
                entity.Code         = CommonHelper.GetRandom3();
                entity.BuyerId      = buyerId;
                entity.BuyerName    = buyerName;
                entity.CourseId     = courseId;
                entity.PayTypeId    = 2;
                entity.OrderStateId = 2;
                entity.CourseName   = await dbc.GetParameterAsync <LinkEntity>(l => l.Id == courseId, l => l.Name);

                entity.Amount = amount;
                entity.ImgUrl = "";
                dbc.CourseOrders.Add(entity);

                JournalEntity journal = new JournalEntity();
                journal.UserId        = user.Id;
                journal.BalanceAmount = user.Amount;
                journal.OutAmount     = amount;
                journal.Remark        = "用户(" + user.Mobile + ")用碳积分购买课程";
                journal.JournalTypeId = (int)JournalTypeEnum.购买课程;
                journal.OrderCode     = entity.Code;
                journal.GoodsId       = entity.CourseId;//来至订单ID
                journal.CurrencyType  = (int)CurrencyEnums.碳积分;
                dbc.Journals.Add(journal);
                await dbc.SaveChangesAsync();

                //积分购买课程发放奖励
                //await IntegralBuyAsync(entity.Id);

                //积分购买课程升级
                await IntegralBuyUpAsync(dbc, buyerId);

                //积分购买课程奖励
                await IntegralBuyBonusAsync(dbc, entity.Id);

                return(entity.Id);
            }
        }
示例#15
0
        public async Task <long> ConfirmAsync(long id, bool auditState)
        {
            using (MyDbContext dbc = new MyDbContext())
            {
                ForwardEntity forward = await dbc.GetAll <ForwardEntity>().Include(f => f.Task).SingleOrDefaultAsync(f => f.Id == id);

                if (forward == null)
                {
                    return(-1);
                }
                if (forward.State.Name != "审核中")
                {
                    return(-6);//不是审核中的任务不能通过审核或取消审核
                }
                long stateId = await dbc.GetIdAsync <ForwardStateEntity>(f => f.Name == "未通过审核");

                if (stateId <= 0)
                {
                    return(-2);
                }
                if (auditState == false)
                {
                    forward.StateId = stateId;
                    await dbc.SaveChangesAsync();

                    return(forward.Id);
                }
                stateId = await dbc.GetIdAsync <ForwardStateEntity>(f => f.Name == "任务完成");

                forward.StateId = stateId;
                UserEntity user = await dbc.GetAll <UserEntity>().SingleOrDefaultAsync(u => u.Id == forward.UserId);

                if (user == null)
                {
                    return(-4);
                }
                decimal bonus = forward.Task.Bonus;
                user.Amount      = user.Amount + bonus;
                user.BonusAmount = user.BonusAmount + bonus;
                long journalTypeId = await dbc.GetIdAsync <IdNameEntity>(f => f.Name == "任务转发");

                if (journalTypeId <= 0)
                {
                    return(-5);
                }
                JournalEntity journal = new JournalEntity();
                journal.BalanceAmount = user.Amount;
                journal.ForwardId     = forward.Id;
                journal.TaskId        = forward.TaskId;
                journal.InAmount      = bonus;
                journal.JournalTypeId = journalTypeId;
                journal.Remark        = "任务转发获得佣金";
                journal.UserId        = user.Id;
                dbc.Journals.Add(journal);
                await dbc.SaveChangesAsync();

                return(forward.Id);
            }
        }
示例#16
0
        public async Task <long> BalancePayAsync(long orderId)
        {
            using (MyDbContext dbc = new MyDbContext())
            {
                OrderEntity order = await dbc.GetAll <OrderEntity>().SingleOrDefaultAsync(o => o.Id == orderId);

                if (order == null)
                {
                    return(-1);
                }

                UserEntity user = await dbc.GetAll <UserEntity>().Where(u => u.IsNull == false).SingleOrDefaultAsync(u => u.Id == order.BuyerId);

                if (user == null)
                {
                    return(-2);
                }

                if (order.Amount > user.Amount)
                {
                    return(-4);
                }

                //更新库存、销量
                UpdateGoodsInfo(dbc, order);

                int upLevelId = 1;
                user.Amount = user.Amount - order.Amount;

                order.PayTime   = DateTime.Now;
                order.PayTypeId = await dbc.GetIdAsync <IdNameEntity>(i => i.Name == "余额");

                order.OrderStateId = await dbc.GetIdAsync <IdNameEntity>(i => i.Name == "待发货");

                if (order.Deliver == "无需物流")
                {
                    order.OrderStateId = await dbc.GetIdAsync <IdNameEntity>(i => i.Name == "已完成");
                }

                JournalEntity journal = new JournalEntity();
                journal.UserId        = user.Id;
                journal.BalanceAmount = user.Amount;
                journal.OutAmount     = order.Amount;
                journal.Remark        = "购买商品";
                journal.JournalTypeId = 1;
                journal.OrderCode     = order.Code;
                journal.LevelId       = upLevelId;
                dbc.Journals.Add(journal);

                int result = await dbc.SaveChangesAsync();

                if (result > 0)
                {
                    await CalcSroce(user.Id, order.Amount); // 累计业绩
                }
                return(1);
            }
        }
示例#17
0
        public async Task AutoConfirmAsync()
        {
            using (MyDbContext dbc = new MyDbContext())
            {
                long stateId = await dbc.GetIdAsync <IdNameEntity>(i => i.Name == "已完成");

                string val = await dbc.GetParameterAsync <SettingEntity>(s => s.Name == "自动确认收货时间", s => s.Param);

                double day;
                double.TryParse(val, out day);
                if (day == 0)
                {
                    day = 7;
                }
                var orders = dbc.GetAll <OrderEntity>().AsNoTracking().Where(r => r.OrderState.Name == "已发货").Where(r => SqlFunctions.DateAdd("day", day, r.ConsignTime) < DateTime.Now);
                foreach (OrderEntity order in orders)
                {
                    order.EndTime      = DateTime.Now;
                    order.OrderStateId = stateId;
                }
                val = await dbc.GetParameterAsync <SettingEntity>(s => s.Name == "不能退货时间", s => s.Param);

                double.TryParse(val, out day);
                if (day == 0)
                {
                    day = 3;
                }
                var           orders1    = dbc.GetAll <OrderEntity>().Where(r => r.CloseTime == null).Where(r => r.OrderState.Name == "已完成" || r.OrderState.Name == "退货审核").Where(r => SqlFunctions.DateAdd("day", day, r.EndTime) < DateTime.Now);
                List <string> orderCodes = new List <string>();
                foreach (OrderEntity order in orders1)
                {
                    order.OrderStateId = stateId;
                    order.CloseTime    = DateTime.Now;
                    orderCodes.Add(order.Code);
                }
                var journals = dbc.GetAll <JournalEntity>().AsNoTracking().Where(j => orderCodes.Contains(j.OrderCode) && j.JournalTypeId == 1 && j.IsEnabled == false);
                Dictionary <long, long> dicts = new Dictionary <long, long>();
                foreach (JournalEntity journal in journals)
                {
                    dicts.Add(journal.Id, journal.UserId);
                }
                foreach (var dict in dicts)
                {
                    var user = await dbc.GetAll <UserEntity>().SingleOrDefaultAsync(u => u.Id == dict.Value);

                    JournalEntity journal = await dbc.GetAll <JournalEntity>().SingleOrDefaultAsync(j => j.Id == dict.Key);

                    user.Amount           = user.Amount + journal.InAmount.Value;
                    user.FrozenAmount     = user.FrozenAmount - journal.InAmount.Value;
                    user.BonusAmount      = user.BonusAmount + journal.InAmount.Value;
                    journal.BalanceAmount = user.Amount;
                    journal.IsEnabled     = true;
                }

                await dbc.SaveChangesAsync();
            }
        }
示例#18
0
        /// <summary>
        /// 计算购物奖
        /// </summary>
        /// <param name="orderId"></param>
        /// <param name="orderCode"></param>
        /// <param name="profit">支付积分部分</param>
        /// <param name="buyerId"></param>
        /// <returns></returns>
        public async Task <bool> CalcAwardBuy(long orderId, string orderCode, decimal profit, long buyerId)
        {
            if (profit <= 0)
            {
                return(true);
            }
            using (MyDbContext dbc = new MyDbContext())
            {
                int     journalTypeId = 1;
                decimal parm;
                decimal.TryParse(await dbc.GetParameterAsync <SettingEntity>(s => s.Name == "购物奖励", s => s.Param), out parm);
                var user = await dbc.GetAll <UserEntity>().Where(u => u.IsNull == false).SingleOrDefaultAsync(u => u.Id == buyerId);

                decimal bonus = profit * (parm / 100);

                user.FrozenAmount = user.FrozenAmount + bonus;

                BonusEntity entity = new BonusEntity();
                entity.UserId     = user.Id;
                entity.Amount     = bonus;
                entity.Revenue    = 0;
                entity.sf         = bonus;
                entity.TypeID     = 3; //购物奖励
                entity.Source     = "用户(" + user.Mobile + ")购买商品,获得购物奖励";
                entity.FromUserID = user.Id;
                entity.IsSettled  = 1;
                dbc.Bonus.Add(entity);

                JournalEntity journal1 = new JournalEntity();
                journal1.UserId        = user.Id;
                journal1.BalanceAmount = user.FrozenAmount;
                journal1.InAmount      = bonus;
                journal1.Remark        = "用户(" + user.Mobile + ")购买商品,获得购物奖励";
                journal1.JournalTypeId = journalTypeId;
                journal1.OrderCode     = orderCode;
                journal1.GoodsId       = orderId;//来至订单ID
                journal1.CurrencyType  = (int)CurrencyEnums.碳积分;
                dbc.Journals.Add(journal1);
                await dbc.SaveChangesAsync();

                //累计业绩
                int flag = await dbc.Database.ExecuteSqlCommandAsync("exec proc_Sroce @UserId = " + user.Id + ",@sroce = " + bonus);

                log.DebugFormat($"购物奖励 累计业绩 CalcAwardBuy:{flag},orderCode:{orderCode},buyerId:{buyerId}");
                //极差奖
                bool result = await CalcAwardLevelDiff(orderId, orderCode, bonus, buyerId);

                log.DebugFormat($"购物奖励 极差奖 CalcAwardLevelDiff:{result},orderCode:{orderCode},buyerId:{buyerId}");
                //极差奖 平分
                result = await CalcAwardLevelDiffMaxAvg(orderId, orderCode, bonus, buyerId, user.Mobile);

                log.DebugFormat($"购物奖励 极差奖 平分 CalcAwardLevelDiffMaxAvg:{result},orderCode:{orderCode},buyerId:{buyerId}");

                return(true);
            }
        }
示例#19
0
        public JournalPartDTO ToPartDTO(JournalEntity entity)
        {
            JournalPartDTO dto = new JournalPartDTO();

            dto.CreateTime      = entity.CreateTime;
            dto.Id              = entity.Id;
            dto.Remark          = entity.Remark;
            dto.JournalTypeName = entity.JournalTypeId.GetEnumName <JournalTypeEnum>();
            dto.Amount          = entity.InAmount > 0 ? "+" + ((decimal)entity.InAmount) : (0 - (decimal)entity.OutAmount).ToString();
            dto.BalanceAmount   = entity.BalanceAmount;
            return(dto);
        }
示例#20
0
        public long AddNew(HolderSvcModel model)
        {
            using (MyDbContext dbc = new MyDbContext())
            {
                CommonService <SettingsEntity>    scs = new CommonService <SettingsEntity>(dbc);
                CommonService <StockItemEntity>   cs  = new CommonService <StockItemEntity>(dbc);
                CommonService <JournalTypeEntity> jcs = new CommonService <JournalTypeEntity>(dbc);
                CommonService <HolderEntity>      hcs = new CommonService <HolderEntity>(dbc);
                if (hcs.GetAll().SingleOrDefault(h => h.Mobile == model.Mobile) != null)
                {
                    return(-2);
                }
                StockItemEntity stockItem = cs.GetAll().Where(s => s.Id == model.StockItemId).SingleOrDefault();
                long            holderadd = jcs.GetAll().SingleOrDefault(j => j.Name == "holderadd").Id;
                if (stockItem == null)
                {
                    return(-1);
                }

                var seting = scs.GetAll().SingleOrDefault(s => s.Name == "takecashtime");

                HolderEntity entity = new HolderEntity();
                entity.Amount       = model.Amount;
                entity.BankAccount  = model.BankAccount;
                entity.BankName     = model.BankName;
                entity.Contact      = model.Mobile;
                entity.IdNumber     = model.IdNumber;
                entity.Mobile       = model.Mobile;
                entity.Name         = model.Name;
                entity.Gender       = model.Gender;
                entity.Proportion   = model.Amount / stockItem.TotalAmount;
                entity.TotalAssets  = model.Amount;
                entity.Password     = model.Password;
                entity.Copies       = model.Copies;
                entity.TakeCashTime = entity.CreateTime.AddDays(Convert.ToDouble(seting.Value));

                stockItem.HaveCopies = stockItem.HaveCopies - model.Copies;

                JournalEntity journal = new JournalEntity();
                journal.BalanceAmount = entity.TotalAssets;
                journal.InAmount      = entity.Amount;
                journal.JournalTypeId = holderadd;
                journal.Remark        = "后台添加股东";

                dbc.Holder.Add(entity);
                dbc.Journal.Add(journal);
                dbc.SaveChanges();
                return(entity.Id);
            }
        }
示例#21
0
        public async Task <long> AddAsync(long userId, long payTypeId, decimal amount, string descripton, string partner_trade_no, string payment_no, DateTime payment_time)
        {
            using (MyDbContext dbc = new MyDbContext())
            {
                UserEntity user = await dbc.GetAll <UserEntity>().SingleOrDefaultAsync(u => u.Id == userId);

                if (user == null)
                {
                    return(-1);
                }
                if (user.Amount < amount)
                {
                    return(-2);
                }
                //if(user.Level.Name=="普通会员")
                //{
                //    return -4;
                //}
                TakeCashEntity entity = new TakeCashEntity();
                entity.UserId    = userId;
                entity.PayTypeId = payTypeId;
                var stateId = await dbc.GetIdAsync <IdNameEntity>(i => i.Name == "已结款");

                if (stateId == 0)
                {
                    return(-3);
                }
                entity.StateId          = stateId;
                entity.Amount           = amount;
                entity.Description      = descripton;
                entity.partner_trade_no = partner_trade_no;
                entity.payment_no       = payment_no;
                entity.payment_time     = payment_time;
                dbc.TakeCashes.Add(entity);

                user.Amount -= amount;

                JournalEntity journal = new JournalEntity();
                journal.OutAmount     = amount;
                journal.JournalTypeId = 1;
                journal.Remark        = "余额提现";
                journal.UserId        = userId;
                journal.BalanceAmount = user.Amount;
                journal.OrderCode     = payment_no;
                dbc.Journals.Add(journal);
                await dbc.SaveChangesAsync();

                return(entity.Id);
            }
        }
示例#22
0
        internal List <JournalPageEntity> LoadPages(JournalEntity journalEntity)
        {
            List <JournalPageEntity> pages = new List <JournalPageEntity>();

            // connecting to, or creating a brand new given journal's DB
            using (var db = GetInternalStorageContext(journalEntity))
            {
                // obtaining pages
                pages = db.GetCollection <JournalPageEntity>("JournalPages").FindAll().ToList();
            }

            // returning our pages
            return(pages);
        }
示例#23
0
        public async Task <long> UpdateDeliverStateAsync(long id, string deliver, string deliverName, string deliverCode)
        {
            using (MyDbContext dbc = new MyDbContext())
            {
                OrderEntity entity = await dbc.GetAll <OrderEntity>().SingleOrDefaultAsync(g => g.Id == id);

                if (entity == null)
                {
                    return(-1);
                }
                if (entity.OrderState.Name == "退单中" || entity.OrderState.Name == "退单完成")
                {
                    return(-2);
                }
                if (deliver == "无需物流")
                {
                    entity.OrderStateId = await dbc.GetIdAsync <IdNameEntity>(i => i.Name == "已完成");

                    entity.EndTime = DateTime.Now;
                }
                else
                {
                    entity.OrderStateId = await dbc.GetIdAsync <IdNameEntity>(i => i.Name == "已发货");
                }
                entity.Deliver     = deliver;
                entity.DeliverName = deliverName;
                entity.DeliverCode = deliverCode;
                entity.ConsignTime = DateTime.Now;
                UserEntity user = await dbc.GetAll <UserEntity>().SingleOrDefaultAsync(u => u.Id == entity.BuyerId);

                if (user == null)
                {
                    return(-3);
                }
                JournalEntity journal = await dbc.GetAll <JournalEntity>().SingleOrDefaultAsync(j => j.UserId == user.Id && j.OrderCode == entity.Code && j.JournalTypeId == 1);

                if (journal == null)
                {
                    return(-4);
                }
                if (journal.LevelId > user.LevelId)
                {
                    user.LevelId = journal.LevelId;
                }

                await dbc.SaveChangesAsync();

                return(1);
            }
        }
示例#24
0
        public async Task <long> AddAsync(long userId, decimal amount)
        {
            using (MyDbContext dbc = new MyDbContext())
            {
                UserEntity user = await dbc.GetAll <UserEntity>().SingleOrDefaultAsync(u => u.Id == userId);

                if (user == null)
                {
                    return(-1);
                }
                if (user.BonusAmount < amount)
                {
                    return(-2);
                }

                TransferEntity entity = new TransferEntity();
                entity.UserId     = userId;
                entity.ChangeType = 1;
                entity.Amount     = amount;
                dbc.Transfer.Add(entity);

                user.BonusAmount -= amount;
                user.Amount      += amount;

                int           JournalTypeId = 1;
                JournalEntity journal       = new JournalEntity();
                journal.OutAmount     = amount;
                journal.InAmount      = 0;
                journal.JournalTypeId = JournalTypeId;
                journal.Remark        = "A积分转换B积分";
                journal.UserId        = userId;
                journal.CurrencyType  = 1;
                journal.BalanceAmount = user.BonusAmount;
                dbc.Journals.Add(journal);

                JournalEntity journalInfo = new JournalEntity();
                journalInfo.OutAmount     = 0;
                journalInfo.InAmount      = amount;
                journalInfo.JournalTypeId = JournalTypeId;
                journalInfo.Remark        = "A积分转换B积分";
                journalInfo.UserId        = userId;
                journalInfo.CurrencyType  = 2;
                journalInfo.BalanceAmount = user.Amount;
                dbc.Journals.Add(journalInfo);
                await dbc.SaveChangesAsync();

                return(entity.Id);
            }
        }
示例#25
0
        public async Task <long> AddAsync(long userId, long payTypeId, decimal amount, string descripton)
        {
            using (MyDbContext dbc = new MyDbContext())
            {
                UserEntity user = await dbc.GetAll <UserEntity>().SingleOrDefaultAsync(u => u.Id == userId);

                if (user == null)
                {
                    return(-1);
                }
                if (user.Amount < amount)
                {
                    return(-2);
                }
                if (string.IsNullOrEmpty(user.Mobile))
                {
                    return(-4);
                }

                TakeCashEntity takeCash = new TakeCashEntity();
                takeCash.UserId = userId;
                takeCash.TypeId = payTypeId;
                var stateId = await dbc.GetIdAsync <IdNameEntity>(i => i.Name == "未结款");

                if (stateId == 0)
                {
                    return(-3);
                }
                takeCash.StateId     = stateId;
                takeCash.Amount      = amount;
                takeCash.Description = descripton;
                dbc.TakeCashes.Add(takeCash);
                await dbc.SaveChangesAsync();

                user.Amount = user.Amount - takeCash.Amount;
                JournalEntity journal = new JournalEntity();
                journal.OutAmount     = takeCash.Amount;
                journal.JournalTypeId = await dbc.GetIdAsync <IdNameEntity>(i => i.Name == "余额提现中");

                journal.Remark        = "余额提现";
                journal.UserId        = takeCash.UserId;
                journal.BalanceAmount = user.Amount;
                journal.Journal01     = takeCash.Id;
                dbc.Journals.Add(journal);
                await dbc.SaveChangesAsync();

                return(takeCash.Id);
            }
        }
示例#26
0
        private LiteDatabase GetInternalStorageContext(JournalEntity journalEntity)
        {
            if (this.Journals.Where(j => j.Id == journalEntity.Id).Count() == 0)
            {
                throw new Exception("Journal with a given Id doesn't exist");
            }

            var journalDirectoryPath = System.IO.Path.Combine(courierShellDataPath, journalEntity.Id.ToString());
            var journalDirectory     = System.IO.Directory.CreateDirectory(journalDirectoryPath);

            // journal db
            var journalDb = System.IO.Path.Combine(journalDirectoryPath, "journal.db");

            return(new LiteDatabase(journalDb));
        }
示例#27
0
        public Journal GetJournalById(int Id)
        {
            Journal result = null;

            using (DataContext)
            {
                JournalEntity entity = DataContext.Journals.SingleOrDefault(j => j.Id == Id);
                if (entity != null)
                {
                    result = Mapper.Map <Journal>(entity);
                }
            }

            return(result);
        }
示例#28
0
        public bool Average(decimal Amount)
        {
            using (MyDbContext dbc = new MyDbContext())
            {
                CommonService <HolderEntity>      cs  = new CommonService <HolderEntity>(dbc);
                CommonService <JournalTypeEntity> jcs = new CommonService <JournalTypeEntity>(dbc);
                long average = jcs.GetAll().SingleOrDefault(j => j.Name == "average").Id;
                var  holders = cs.GetAll();
                if (holders.LongCount() <= 0)
                {
                    return(false);
                }
                //foreach (var holder in holders)
                //{
                //    holder.TotalBonus = holder.TotalBonus + Amount * holder.Proportion;
                //    holder.TotalAssets = holder.Amount + holder.TotalBonus - holder.HaveBonus;
                //    holder.TakeBonus = holder.TotalBonus - holder.HaveBonus;
                //    holder.Point = true;

                //    JournalEntity journal = new JournalEntity();
                //    journal.HolderId = holder.Id;
                //    journal.BalanceAmount = holder.TotalAssets;
                //    journal.InAmount = Amount * holder.Proportion;
                //    journal.JournalTypeId = average;
                //    journal.Remark = "获得平均分红";
                //    dbc.Journal.Add(journal);
                //}
                holders.ForEachAsync(holder =>
                {
                    holder.TotalBonus  = holder.TotalBonus + Amount * holder.Proportion;
                    holder.TotalAssets = holder.Amount + holder.TotalBonus - holder.HaveBonus;
                    holder.TakeBonus   = holder.TotalBonus - holder.HaveBonus;
                    holder.Point       = true;

                    JournalEntity journal = new JournalEntity();
                    journal.HolderId      = holder.Id;
                    journal.BalanceAmount = holder.TotalAssets;
                    journal.InAmount      = Amount * holder.Proportion;
                    journal.JournalTypeId = average;
                    journal.Remark        = "获得平均分红";
                    dbc.Journal.Add(journal);
                });
                dbc.SaveChanges();
                return(true);
            }
        }
示例#29
0
        public async Task <long> Confirm(long id, long adminId, bool isSuccess)
        {
            using (MyDbContext dbc = new MyDbContext())
            {
                TakeCashEntity takeCash = await dbc.GetAll <TakeCashEntity>().SingleOrDefaultAsync(t => t.Id == id);

                if (takeCash == null)
                {
                    return(-1);
                }
                UserEntity user = await dbc.GetAll <UserEntity>().SingleOrDefaultAsync(u => u.Id == takeCash.UserId);

                if (user == null)
                {
                    return(-2);
                }
                if (isSuccess == false)
                {
                    takeCash.StateId = await dbc.GetIdAsync <IdNameEntity>(i => i.Name == "已取消");

                    takeCash.AdminMobile = await dbc.GetParameterAsync <AdminEntity>(a => a.Id == adminId, a => a.Mobile);

                    JournalEntity journal = await dbc.GetAll <JournalEntity>().SingleOrDefaultAsync(j => j.Journal01 == takeCash.Id && j.JournalType.Name == "余额提现中");

                    user.Amount = user.Amount + journal.OutAmount.Value;
                    await dbc.SaveChangesAsync();

                    return(-4);
                }
                else
                {
                    takeCash.StateId = await dbc.GetIdAsync <IdNameEntity>(i => i.Name == "已结款");

                    takeCash.AdminMobile = await dbc.GetParameterAsync <AdminEntity>(a => a.Id == adminId, a => a.Mobile);

                    JournalEntity journal = await dbc.GetAll <JournalEntity>().SingleOrDefaultAsync(j => j.Journal01 == takeCash.Id && j.JournalType.Name == "余额提现中");

                    journal.JournalTypeId = await dbc.GetIdAsync <IdNameEntity>(i => i.Name == "余额提现");

                    user.TakeCashAmount = user.TakeCashAmount + journal.OutAmount.Value;
                    await dbc.SaveChangesAsync();

                    return(takeCash.Id);
                }
            }
        }
示例#30
0
        public async Task <bool> ActivateAllAsync(long[] ids)
        {
            using (MyDbContext dbc = new MyDbContext())
            {
                //批量激活会员
                foreach (var id in ids)
                {
                    UserEntity entity = await dbc.GetAll <UserEntity>().Where(u => u.IsNull == false).SingleOrDefaultAsync(u => u.Id == id);

                    if (entity == null)
                    {
                        return(false);
                    }
                    decimal givingAmount = await dbc.GetDecimalParamAsync("激活赠送积分数量");

                    entity.IsUpgraded = true;
                    entity.Amount     = entity.Amount + givingAmount;

                    BonusEntity bonus = new BonusEntity();
                    bonus.UserId     = entity.Id;
                    bonus.Amount     = givingAmount;
                    bonus.Revenue    = 0;
                    bonus.sf         = givingAmount;
                    bonus.TypeID     = 1; //购买课程奖励
                    bonus.Source     = "用户(" + entity.Mobile + ")后台激活成功,获赠碳积分";
                    bonus.FromUserID = entity.Id;
                    bonus.IsSettled  = 1;
                    dbc.Bonus.Add(bonus);

                    JournalEntity journal = new JournalEntity();
                    journal.UserId        = entity.Id;
                    journal.BalanceAmount = entity.Amount;
                    journal.InAmount      = givingAmount;
                    journal.Remark        = "用户(" + entity.Mobile + ")后台激活成功,获赠碳积分";
                    journal.JournalTypeId = (int)JournalTypeEnum.会员激活;
                    journal.OrderCode     = "";
                    journal.GoodsId       = 0;//来至订单ID
                    journal.CurrencyType  = (int)CurrencyEnums.碳积分;
                    dbc.Journals.Add(journal);
                }
                await dbc.SaveChangesAsync();

                return(true);
            }
        }