/// <summary> /// 保存收入信息 /// </summary> /// <param name="info">收入信息</param> /// <returns>主键ID</returns> public async Task <ResultInfo <int> > SaveInComeAsync(InComeInfo info) { //判断收入类型是否存在 var modelInType = await BasicDAL.Inst.GetInTypeAsync(this.LoginInfo.FamilyID, info.InTypeID); if (modelInType == null) { return(new ResultInfo <int>(false, this.Res.Bas.InTypeUnexist, -1)); } //判断账户是否存在 var modelAmountAccount = await BasicDAL.Inst.GetAmountAccountAsync(this.LoginInfo.FamilyID, info.AmountAccountID); if (modelAmountAccount == null) { return(new ResultInfo <int>(false, this.Res.Bas.AmountAccountUnexist, -1)); } //转成model var model = new InCome(); model.ID = info.ID; model.FamilyID = this.LoginInfo.FamilyID; model.InDate = info.InDate; model.InTypeID = info.InTypeID; model.AmountAccountID = info.AmountAccountID; model.Amount = info.Amount; model.Remark = info.Remark; //设置创建者/更新者字段值 this.SetCreateUpdateFields(model); //保存到数据库 var ret = await CacheLock.DoByLockFamilyAsync(this.LoginInfo.FamilyID, () => InOutDAL.Inst.SaveInComeAsync(model)); if (!ret.IsDone) { return(new ResultInfo <int>(false, Res.Gen.WaiteTimeOut, model.ID)); } return(new ResultInfo <int>(true, Res.Gen.OK, model.ID)); }
/// <summary> /// 保存收入信息 /// </summary> /// <param name="model">收入信息</param> /// <returns>主键ID</returns> public async Task <int> SaveInComeAsync(InCome model) { using (IOSysContext db = new IOSysContext()) { using (var trans = db.Database.BeginTransaction()) { InCome oldModel = null; //尝试查找原数据 if (model.ID > 0) { oldModel = db.InComes.AsNoTracking().Where(m => m.ID == model.ID && m.FamilyID == model.FamilyID).FirstOrDefault(); if (oldModel == null) { model.CreatorID = model.UpdateID.Value; model.CreateTime = model.UpdateTime.Value; } } //新增 if (oldModel == null) { //新增 await db.InComes.AddAsync(model); //修改账户信息 await BasicDAL.Inst.UseAmountAccount(model.FamilyID, model.AmountAccountID, model.Amount, db); ////修改收入类型信息 //await BasicDAL.Inst.UseInType(model.FamilyID, model.InTypeID, db); } //更新 else { //设置更新者信息 model.UpdateID = model.UpdateID; model.UpdateTime = model.UpdateTime; model.CreatorID = oldModel.CreatorID; model.CreateTime = oldModel.CreateTime; //更新 db.Entry(model).State = EntityState.Modified; //修改账户信息 await BasicDAL.Inst.ChangeAmountAccount(model.FamilyID, model.AmountAccountID, model.Amount, oldModel.AmountAccountID, oldModel.Amount, db); ////修改收入类型信息 //await BasicDAL.Inst.ChangeInType(model.FamilyID, model.InTypeID, oldModel.InTypeID, db); } //保存修改 await db.SaveChangesAsync(); //提交事务 trans.Commit(); } } //更新最小交易流水日期缓存 this.UpdateMinTurnoverDate(model.FamilyID, model.InDate); return(model.ID); }