Пример #1
0
        /// <summary>
        /// 直接充值
        /// </summary>
        /// <param name="uid"></param>
        /// <param name="amount"></param>
        /// <returns></returns>
        public bool DirectRecharge(int uid, double amount)
        {
            // 1.生成参数
            IDictionary <string, DbParameter[]> dictionary = new Dictionary <string, DbParameter[]>();
            PayParam payParam = RechargeUtil.GetDirectParam(uid, amount);

            // 2.生成流水账
            Pays payAccounts = RechargeUtil.GetPayAccounts(Constants.HotAccountID, uid, payParam);

            paysRepository.InsertAccounts(payAccounts, ref dictionary);

            // 3.生成往来账
            var list = new List <Accounts>()
            {
                new Accounts()
                {
                    AccountsId       = IdWorkTool.Instance().GetId(),
                    PayId            = payParam.SystemRecordId,
                    TradeAccountId   = payParam.ToUid,
                    TradeAccountName = payParam.ToUsername,
                    AccountsType     = 1,
                    Amount           = payParam.Amount,
                    Remark           = payParam.Remark,
                    Currency         = payParam.Currency,
                    AddTime          = DateTime.Now
                }
            };

            accountsRepository.BatchInsertAccounts(list, ref dictionary);


            // 4.目标账户进账
            var user = userRepository.SelectFinanceDetail(uid);

            walletRepository.PutAccounts(user.Uid, amount, user.Version, ref dictionary);

            return(walletRepository.CommitTransactionLock(dictionary));
        }