public override async Task <VoidRsp> CreateAsync(UserReq user) { VoidRsp rsp = new VoidRsp(); rsp.Status = 0; rsp.Message = "test"; try { Logger.Debug("receive CreateAsync,data=" + Google.Protobuf.JsonFormatter.Default.Format(user)); UserReq existing = await this._repo.FindByNameAsync(user.Account); if (existing != null) { Logger.Debug("user already exists:{0}", user.Account); } Assert.IsNotNull(existing, "user already exists:" + user.Account); user.Password = CryptographyManager.Md5Encrypt(user.Account + "$" + user.Password); Logger.Debug("saving db"); await this._repo.SaveUserAsync(user); Logger.Debug("saving db success"); } catch (Exception ex) { rsp.Status = -1; rsp.Message = ex.Message; } return(rsp); }
public override async Task <VoidRsp> SaveAsync(AccountReq req) { VoidRsp rsp = new VoidRsp(); //数据校验 try { using (var scope = _accountRep.GetTransScope()) { await this._accountRep.UpdateUserInfoAsync(req); req.Saving.Account = req.Name; await this._accountRep.UpdateAccountSavingAsync(req.Saving); await this._accountRep.DeleteIncomesAsync(req.Name); await this._accountRep.DeleteExpensesAsync(req.Name); await this._accountRep.AddIncomesAsync(req.Name, req.Incomes); await this._accountRep.AddExpensesAsync(req.Name, req.Expenses); Logger.Debug("SaveAsync Receieve Data:{0}", req.ToString()); //调用远端服务 var statClient = ClientProxy.GetClient <StatisticServiceClient>(); var statRsp = await statClient.UpdateStatisticsAsync(req); if (statRsp.Status != 0) { rsp.Status = statRsp.Status; rsp.Message = statRsp.Message; return(rsp); } scope.Complete(); } Logger.Debug("add account stat success"); } catch (Exception ex) { rsp.Status = -1; rsp.Message = ex.Message + ex.StackTrace; Logger.Error(ex, "save error:" + ex.Message + ex.StackTrace); } return(new VoidRsp()); }
public override async Task <VoidRsp> UpdateStatisticsAsync(AccountReq request) { var rsp = new VoidRsp(); try { DataPoint dp = new DataPoint() { Account = request.Name, Date = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") }; double incomeAmout = 0; double expenseAmout = 0; foreach (var income in request.Incomes) { var item = new ItemMetric() { Title = income.Title, Amount = ConvertToRMB(income.Currency, income.Amount) }; dp.Incomes.Add(item); incomeAmout += item.Amount; } foreach (var expense in request.Expenses) { var item = new ItemMetric() { Title = expense.Title, Amount = ConvertToRMB(expense.Currency, expense.Amount) }; dp.Expenses.Add(item); expenseAmout += item.Amount; } var incomeDps = new DataPointStat() { Amount = incomeAmout, StatMetric = StatMetric.Saving }; var expenseDps = new DataPointStat() { Amount = expenseAmout, StatMetric = StatMetric.Saving }; var savingDps = new DataPointStat() { Amount = ConvertToRMB(request.Saving.Currency, request.Saving.Amount), StatMetric = StatMetric.Saving }; dp.Stat.Add(incomeDps); dp.Stat.Add(expenseDps); dp.Stat.Add(savingDps); //操作数据库 using (var trans = _repo.GetTransScope()) { int dpId = await _repo.SaveDataPointAsync(dp); if (dpId <= 0) { throw new RpcBizException("save datapoint error"); } _repo.SaveDataPointIncomesAsync(dpId, dp.Incomes); _repo.SaveDataPointExpensesAsync(dpId, dp.Expenses); _repo.SaveDataPointRateAsync(dpId, _rateService.GetRates()); _repo.SaveDataPointStatAsync(dpId, dp.Stat); trans.Complete(); } } catch (Exception ex) { rsp.Status = -1; rsp.Message = ex.Message; Logger.Error(ex, "Update Statistics Erorr:" + ex.Message + ex.StackTrace); } return(rsp); }