/// <summary>
        /// 模拟收入
        /// </summary>
        /// <param name="user">用户信息</param>
        /// <param name="date">日期</param>
        /// <returns></returns>
        private IEnumerable <InComeInfo> SimulateInCome(LoginInfo user, DateTime date)
        {
            //限制收入生成次数
            if (random.NextDouble() < 0.95)
            {
                yield break;
            }

            //条数
            int num = 3;
            //最大金额
            decimal maxAmount = 15000;
            //年份偏移量
            var offset = (date.Year - 2019) * 2000;

            maxAmount += offset;

            //查询账户列表
            var lstAmountAccount = this.QueryAmountAccount(user);

            //查询收入类型列表
            var lstInType = this.QueryInType(user);

            for (int i = 0; i < num; i++)
            {
                var item = new InComeInfo();
                item.InDate          = date.Date;
                item.InTypeID        = lstInType[random.Next(0, lstInType.Count)].ID;
                item.AmountAccountID = lstAmountAccount[random.Next(0, lstAmountAccount.Count)].ID;

                var amountRandom = random.NextDouble();
                item.Amount = (Convert.ToDecimal(amountRandom) * maxAmount) + 1;

                item.Remark = "模拟收入";

                yield return(item);

                //限制收入生成次数
                if (amountRandom > 0.5)
                {
                    yield break;
                }
            }
        }
        /// <summary>
        /// 保存收入信息
        /// </summary>
        /// <param name="user">用户信息</param>
        /// <param name="info">收入信息</param>
        /// <returns>主键ID</returns>
        private int SaveInCome(LoginInfo user, InComeInfo info)
        {
            //token
            var dicHeader = new Dictionary <string, string>();

            dicHeader["Authorization"] = user.Token;

            //条件
            var req = new LoginReq();

            req.LoginName = AppConfig.Inst.App.IOLoginName;
            req.Password  = AppConfig.Inst.App.IOLoginPwd;

            //请求接口
            var client = new TdbHttpClient(AppConfig.Inst.App.IOApiUrl);
            var res    = client.ExecPost <ResultInfo <int> >("api/InOut/SaveInCome", info, dicHeader);

            return(res.Result.Info);
        }
Exemplo n.º 3
0
        /// <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));
        }
Exemplo n.º 4
0
        /// <summary>
        /// 获取收入信息
        /// </summary>
        /// <param name="id">主键ID</param>
        /// <returns></returns>
        public async Task <InComeInfo> GetInComeAsync(int id)
        {
            //获取数据库信息
            var model = await InOutDAL.Inst.GetInComeAsync(this.LoginInfo.FamilyID, id);

            if (model == null)
            {
                return(null);
            }

            //结果
            var info = new InComeInfo();

            info.ID              = model.ID;
            info.InDate          = model.InDate;
            info.InTypeID        = model.InTypeID;
            info.AmountAccountID = model.AmountAccountID;
            info.Amount          = model.Amount;
            info.Remark          = model.Remark;

            return(info);
        }
Exemplo n.º 5
0
        public async Task <ResultInfo <int> > SaveInComeAsync([FromBody] InComeInfo info)
        {
            var result = await this.bll.SaveInComeAsync(info);

            return(result);
        }