public UserAssetRatio MapToNewUserAssetRatio(UserAssetRatio model) { return(new UserAssetRatio { AssetCategoryCode = model.AssetCategoryCode, AssetId = model.AssetId, BillDueDate = model.BillDueDate, Capital = model.Capital, Cellphone = model.Cellphone, CredentialNo = model.CredentialNo, Denominator = model.Denominator, IsInvestSuccess = model.IsInvestSuccess, IsNotifyTradingSuccess = model.IsNotifyTradingSuccess, IsReturned = model.IsReturned, NotifyTradingRespInfo = model.NotifyTradingRespInfo, NotifyTradingTime = model.NotifyTradingTime, Numerator = model.Numerator, OrderId = model.OrderId, OrderTime = model.OrderTime, OriginalUserAssetRatioId = model.OriginalUserAssetRatioId, PurchaseMoney = model.PurchaseMoney, Reserve = model.Reserve, Status = model.Status, UserAssetRatioId = model.UserAssetRatioId, UserId = model.UserId, UserName = model.UserName, IsDeleted = model.IsDeleted, CreatedBy = model.CreatedBy, CreatedTime = model.CreatedTime, UpdatedBy = model.UpdatedBy, UpdatedTime = model.UpdatedTime, UserPresentValue = model.UserPresentValue }); }
/// <summary> /// 插入用户资产关系表 /// </summary> /// <param name="tableClient1"></param> /// <param name="addUserAssetRatios"></param> /// <param name="writeUserAssetRatioAzureTable"></param> /// <param name="batchNum"></param> /// <param name="userId"></param> /// <returns></returns> private async Task AddUserAssetRatio(CloudTableClient tableClient1, List <UserAssetRatio> addUserAssetRatios, string writeUserAssetRatioAzureTable, int batchNum, string userId) { try { //用户资产关系 if (addUserAssetRatios.Any()) { int ratioCount = (int)Math.Ceiling((double)addUserAssetRatios.Count / batchNum); CloudTable userassetTable = tableClient1.GetTableReference(writeUserAssetRatioAzureTable); for (int i = 0; i < ratioCount; i++) { TableBatchOperation batch = new TableBatchOperation(); foreach (UserAssetRatio tableEntity in addUserAssetRatios.Skip(batchNum * i).Take(batchNum)) { UserAssetRatio insertModel = this.MapToTableUserAssetRatio(tableEntity, await RedisHelper.GetRedisUserInfoAsync(tableEntity.UserId), await RedisHelper.GetRedisAssetIdInfoAsync(tableEntity.AssetId), 0); batch.Add(TableOperation.Insert(insertModel)); } await userassetTable.ExecuteBatchAsync(batch); } this.UpdateNums(1, 0); } } catch (Exception e) { this.UpdateNums(1, 1); Logger.LoadData(@"RedisToTable\ErrorUser.txt", $"插入用户资产关系表时错误,错误信息{e.Message}userId为{userId},{userId}"); Logger.LogRecord(userId, 0); } }
public bool UpdateAssetUserRatioInfo(UserAssetRatio userAssetRatio, string tableName) { try { CloudTable deptTable = this.tableClient.GetTableReference(tableName); TableOperation updateOperation = TableOperation.InsertOrReplace(userAssetRatio); deptTable.Execute(updateOperation); return(true); } catch (Exception ex) { return(false); } }
/// <summary> /// 计算该用户的持有价值1 /// </summary> /// <param name="userAssetRatio"></param> /// <param name="dtTime"></param> /// <returns></returns> private long GetUserPrentValue1(UserAssetRatio userAssetRatio, DateTime dtTime) { try { //DateTime dateTime = Convert.ToDateTime(ConfigurationManager.AppSettings["DkTime"]); long days = (dtTime.Date - userAssetRatio.OrderTime.Date).Days; long assetPresentValue = 0; if (days >= 0) { assetPresentValue = (long)(Math.Pow((1 + (double)600 / 3600000), days) * userAssetRatio.Numerator); } //long assetPresentValue = onSellAssetDto.PresentValue * Math.Pow((1 + 0.06), ((useTime - onSellAssetDto.LastGrowthTime).Value.Days)); return(assetPresentValue); } catch (Exception e) { return(0); } }
/// <summary> /// 检查是否包含没有删除的用户资产比例 /// </summary> /// <param name="userAssetRatios"></param> /// <returns></returns> public async Task <bool> CheckRedisUserAssetRatioAsync(IEnumerable <UserAssetRatio> userAssetRatios) { try { foreach (UserAssetRatio subItem in userAssetRatios) { UserAssetRatio userAssetItem = await this.database.HashGetFromCacheAsync <UserAssetRatio>("UserAssetRelation", subItem.UserId, subItem.UserAssetRatioId); if (userAssetItem != null) { return(false); } } return(true); } // ReSharper disable once EmptyGeneralCatchClause catch (Exception ex) { Logger.Logw(ex.Message + "------CheckRedisUserAssetRatioAsync", 3); return(false); } }
/// <summary> /// map云table数据 /// </summary> /// <param name="userAssetRatio"></param> /// <param name="userInfo"></param> /// <param name="assetInfoRedis"></param> /// <param name="type">0,1</param> /// <returns></returns> private UserAssetRatio MapToTableUserAssetRatio(UserAssetRatio userAssetRatio, UserInfoRedis userInfo, OnSellAssetToRedis assetInfoRedis, int type) { //6 UserAssetRatio newUserAssetRation = userAssetRatio; //1.用户信息6 newUserAssetRation.Cellphone = userInfo.Cellphone; newUserAssetRation.CredentialNo = userInfo.CredentialNo; newUserAssetRation.OrderTime = userInfo.OrderTime; newUserAssetRation.OrderId = userInfo.OrderId; newUserAssetRation.PurchaseMoney = userInfo.PurchaseMoney; newUserAssetRation.UserName = userInfo.UserName; //2.资产信息3 newUserAssetRation.AssetCategoryCode = assetInfoRedis.AssetCategoryCode; newUserAssetRation.BillDueDate = assetInfoRedis.BillDueDate; newUserAssetRation.Denominator = assetInfoRedis.Denominator; //3.拼接其余默认配置 17 newUserAssetRation.Reserve = "1"; newUserAssetRation.Status = 4; newUserAssetRation.IsInvestSuccess = true; newUserAssetRation.IsNotifyTradingSuccess = true; newUserAssetRation.IsReturned = false; newUserAssetRation.NotifyTradingRespInfo = "Mock"; newUserAssetRation.NotifyTradingTime = DateTime.UtcNow.ToChinaStandardTime(); newUserAssetRation.UserPresentValue = 0; newUserAssetRation.CreatedBy = "System"; newUserAssetRation.CreatedTime = DateTime.UtcNow.ToChinaStandardTime(); newUserAssetRation.IsDeleted = false; newUserAssetRation.UpdatedBy = "System"; newUserAssetRation.UpdatedTime = DateTime.UtcNow.ToChinaStandardTime(); newUserAssetRation.PartitionKey = type == 0 ? userInfo.UserId : assetInfoRedis.OnSellAssetId; //0是用户资产 1是资产用户 newUserAssetRation.RowKey = (type == 0 ? newUserAssetRation.AssetId : newUserAssetRation.UserId) + "_" + newUserAssetRation.UserAssetRatioId; newUserAssetRation.OriginalUserAssetRatioId = newUserAssetRation.UserAssetRatioId; newUserAssetRation.ETag = DateTime.UtcNow.ToChinaStandardTime().UnixTimestamp().ToString(); return(newUserAssetRation); }