Exemple #1
0
 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
     });
 }
Exemple #2
0
 /// <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);
     }
 }
Exemple #3
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);
     }
 }
Exemple #4
0
        /// <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);
            }
        }
Exemple #6
0
        /// <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);
        }