Browse Source

团组汇率 GetGroupRateDataSources
1.按使用币种数量排序
2.每天零点定时任务写入redis缓存

leiy 11 months ago
parent
commit
cb75473222

+ 31 - 8
OASystem/OASystem.Api/Controllers/FinancialController.cs

@@ -30,6 +30,7 @@ using System.Globalization;
 using NPOI.POIFS.Properties;
 using NPOI.POIFS.Properties;
 using SixLabors.ImageSharp.ColorSpaces;
 using SixLabors.ImageSharp.ColorSpaces;
 using OASystem.Domain.ViewModels.QiYeWeChat;
 using OASystem.Domain.ViewModels.QiYeWeChat;
+using System.Diagnostics;
 
 
 namespace OASystem.API.Controllers
 namespace OASystem.API.Controllers
 {
 {
@@ -50,13 +51,14 @@ namespace OASystem.API.Controllers
         private readonly ForeignReceivablesRepository _ForForeignReceivablesRep;  //对外收款账单仓库
         private readonly ForeignReceivablesRepository _ForForeignReceivablesRep;  //对外收款账单仓库
         private readonly ProceedsReceivedRepository _proceedsReceivedRep;  //已收款项仓库
         private readonly ProceedsReceivedRepository _proceedsReceivedRep;  //已收款项仓库
         private readonly PaymentRefundAndOtherMoneyRepository _paymentRefundAndOtherMoneyRep; //收款退还与其他款项 仓库
         private readonly PaymentRefundAndOtherMoneyRepository _paymentRefundAndOtherMoneyRep; //收款退还与其他款项 仓库
+        private readonly DelegationInfoRepository _delegationInfoRep; //团组信息 仓库
 
 
         /// <summary>
         /// <summary>
         /// 初始化
         /// 初始化
         /// </summary>
         /// </summary>
         public FinancialController(IMapper mapper, IConfiguration configuration, DailyFeePaymentRepository daiRep, SqlSugarClient sqlSugar, SetDataTypeRepository setDataTypeRep,
         public FinancialController(IMapper mapper, IConfiguration configuration, DailyFeePaymentRepository daiRep, SqlSugarClient sqlSugar, SetDataTypeRepository setDataTypeRep,
             TeamRateRepository teamRateRep, ForeignReceivablesRepository ForForeignReceivablesRep, ProceedsReceivedRepository proceedsReceivedRep,
             TeamRateRepository teamRateRep, ForeignReceivablesRepository ForForeignReceivablesRep, ProceedsReceivedRepository proceedsReceivedRep,
-            PaymentRefundAndOtherMoneyRepository paymentRefundAndOtherMoneyRep, HttpClient httpClient)
+            PaymentRefundAndOtherMoneyRepository paymentRefundAndOtherMoneyRep, HttpClient httpClient, DelegationInfoRepository delegationInfoRep)
         {
         {
             _mapper = mapper;
             _mapper = mapper;
             _config = configuration;
             _config = configuration;
@@ -68,6 +70,7 @@ namespace OASystem.API.Controllers
             _proceedsReceivedRep = proceedsReceivedRep;
             _proceedsReceivedRep = proceedsReceivedRep;
             _paymentRefundAndOtherMoneyRep = paymentRefundAndOtherMoneyRep;
             _paymentRefundAndOtherMoneyRep = paymentRefundAndOtherMoneyRep;
             _httpClient = httpClient;
             _httpClient = httpClient;
+            _delegationInfoRep = delegationInfoRep;
         }
         }
 
 
         #region 日付申请
         #region 日付申请
@@ -335,21 +338,41 @@ namespace OASystem.API.Controllers
                 //迁移数据更新团组汇率
                 //迁移数据更新团组汇率
                 //Result teamRateData1 = await _teamRateRep.GetGroupRateChangeData();
                 //Result teamRateData1 = await _teamRateRep.GetGroupRateChangeData();
 
 
-                //PostGroupTeamRateHot
-
                 //var data = await _teamRateRep.PostGroupTeamRateHot();
                 //var data = await _teamRateRep.PostGroupTeamRateHot();
 
 
-                Result teamRateData = await _teamRateRep.GetGroupRateDataSource(dto);
-                if (teamRateData.Code != 0)
+
+                Stopwatch stopwatch = Stopwatch.StartNew();
+
+                GroupNameDto groupNameDto = new GroupNameDto() { PortType = dto.PortType };
+                var groups = await _delegationInfoRep.GetGroupNameList(groupNameDto);
+
+                List<CurrencyHot> _currData = new List<CurrencyHot>();
+
+                string currData = await RedisRepository.RedisFactory.CreateRedisRepository().StringGetAsync<string>("GroupTeamCurrencyData");//string 取
+
+                if (!string.IsNullOrEmpty(currData))
                 {
                 {
-                    return Ok(JsonView(false, teamRateData.Msg));
+                    _currData = JsonConvert.DeserializeObject<List<CurrencyHot>>(currData);
                 }
                 }
-                return Ok(JsonView(true, teamRateData.Msg, teamRateData.Data));
+                else
+                {
+                    _currData = await _teamRateRep.PostGroupTeamRateHot();
+
+                    //过期时间 25 Hours
+                    TimeSpan ts = DateTime.Now.AddHours(25).TimeOfDay;
+                    await RedisRepository.RedisFactory.CreateRedisRepository().StringSetAsync("GroupTeamCurrencyData", JsonConvert.SerializeObject(_currData), ts);
+                }
+
+                var _data = new { GroupData = groups.Data, TeamRateData = _currData };
+
+                stopwatch.Stop();
+
+                return Ok(JsonView(true, $"查询成功!耗时:{stopwatch.ElapsedMilliseconds / 1000}s", _data));
+
             }
             }
             catch (Exception ex)
             catch (Exception ex)
             {
             {
                 return Ok(JsonView(false, ex.Message));
                 return Ok(JsonView(false, ex.Message));
-                throw;
             }
             }
         }
         }
 
 

+ 1 - 0
OASystem/OASystem.Api/OAMethodLib/Quartz/Business/DeleReminderMessage.cs

@@ -83,5 +83,6 @@ namespace OASystem.API.OAMethodLib.Quartz.Business
             }
             }
         }
         }
 
 
+
     }
     }
 }
 }

+ 30 - 0
OASystem/OASystem.Api/OAMethodLib/Quartz/Business/TeamCurrency.cs

@@ -0,0 +1,30 @@
+using OASystem.Infrastructure.Repositories.Groups;
+
+namespace OASystem.API.OAMethodLib.Quartz.Business
+{
+    public class TeamCurrency
+    {
+
+        private readonly static TeamRateRepository _grpCurrencyRep = AutofacIocManager.Instance.GetService<TeamRateRepository>();
+
+        /// <summary>
+        /// 团组币种信息
+        /// 每天 凌晨零点更新
+        /// </summary>
+        public static async void PostTeamCurrencyUpdate()
+        {
+            string grpCurrencyName = "GroupTeamCurrencyData";
+
+            var _currData = await _grpCurrencyRep.PostGroupTeamRateHot();
+            if (_currData != null)
+            {
+              var s = await RedisRepository.RedisFactory.CreateRedisRepository().KeyDeleteAsync(grpCurrencyName);
+                if (s)
+                {
+                    TimeSpan ts = DateTime.Now.AddHours(25).TimeOfDay;
+                    await RedisRepository.RedisFactory.CreateRedisRepository().StringSetAsync(grpCurrencyName,JsonConvert.SerializeObject(_currData), ts);
+                }
+            }
+        }
+    }
+}

+ 33 - 0
OASystem/OASystem.Api/OAMethodLib/Quartz/Jobs/GroupTeamCurrencyJob.cs

@@ -0,0 +1,33 @@
+using OASystem.API.OAMethodLib.Quartz.Business;
+using Quartz;
+using QuzrtzJob.Factory;
+
+namespace OASystem.API.OAMethodLib.Quartz.Jobs
+{
+    /// <summary>
+    /// 团组币种 定时任务
+    /// </summary>
+    public class GroupTeamCurrencyJob : IJob
+    {
+        private readonly ILogger<GroupTeamCurrencyJob> _logger;
+
+        /// <summary>
+        /// 团组币种
+        /// 定时任务
+        /// </summary>
+        /// <param name="logger"></param>
+        public GroupTeamCurrencyJob(ILogger<GroupTeamCurrencyJob> logger)
+        {
+            _logger = logger;
+        }
+
+        public Task Execute(IJobExecutionContext context)
+        {
+            _logger.LogInformation("调用团组币种接口 " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
+            //在此处编写任务业务代码
+            TeamCurrency.PostTeamCurrencyUpdate();
+
+            return Task.CompletedTask;
+        }
+    }
+}

+ 6 - 0
OASystem/OASystem.Api/OAMethodLib/Quartz/QuartzFactory.cs

@@ -40,16 +40,22 @@ namespace QuzrtzJob.Factory
                             //.WithSimpleSchedule(x => x.WithIntervalInSeconds(60).RepeatForever())//每六十秒执行一次
                             //.WithSimpleSchedule(x => x.WithIntervalInSeconds(60).RepeatForever())//每六十秒执行一次
                             .WithCronSchedule("0 0 9,18 * * ?") //每天早上九点和下午六点触发
                             .WithCronSchedule("0 0 9,18 * * ?") //每天早上九点和下午六点触发
                             .Build();
                             .Build();
+            var teamCurrencyTrigger = TriggerBuilder.Create()
+                            //.WithSimpleSchedule(x => x.WithIntervalInSeconds(60).RepeatForever())//每六十秒执行一次
+                            .WithCronSchedule("0 0 0 * * ? ") //每天零点零分点触发
+                            .Build();
 
 
             //5、创建任务
             //5、创建任务
             var jobDetail = JobBuilder.Create<ALiYunPostMessageJob>().WithIdentity("job1", "group") .Build();
             var jobDetail = JobBuilder.Create<ALiYunPostMessageJob>().WithIdentity("job1", "group") .Build();
             var taskJobDetail = JobBuilder.Create<TaskJob>().WithIdentity("job2", "group").Build();
             var taskJobDetail = JobBuilder.Create<TaskJob>().WithIdentity("job2", "group").Build();
             var taskMsgJobDetail = JobBuilder.Create<TaskNewsFeedJob>().WithIdentity("job3", "group").Build();
             var taskMsgJobDetail = JobBuilder.Create<TaskNewsFeedJob>().WithIdentity("job3", "group").Build();
+            var teamCurrencyJobDetail = JobBuilder.Create<GroupTeamCurrencyJob>().WithIdentity("job4", "group").Build();
 
 
             //6、将触发器和任务器绑定到调度器中
             //6、将触发器和任务器绑定到调度器中
             await _scheduler.ScheduleJob(jobDetail, trigger);
             await _scheduler.ScheduleJob(jobDetail, trigger);
             await _scheduler.ScheduleJob(taskJobDetail, taskTrigger);
             await _scheduler.ScheduleJob(taskJobDetail, taskTrigger);
             await _scheduler.ScheduleJob(taskMsgJobDetail, taskMsgTrigger);
             await _scheduler.ScheduleJob(taskMsgJobDetail, taskMsgTrigger);
+            await _scheduler.ScheduleJob(teamCurrencyJobDetail, teamCurrencyTrigger);
 
 
 
 
             return await Task.FromResult("将触发器和任务器绑定到调度器中完成");
             return await Task.FromResult("将触发器和任务器绑定到调度器中完成");

+ 1 - 14
OASystem/OASystem.Infrastructure/Repositories/Groups/TeamRateRepository.cs

@@ -682,23 +682,10 @@ namespace OASystem.Infrastructure.Repositories.Groups
 
 
             var teamRateInfo = _sqlSugar.SqlQueryable<TeamRateInfoView>(teamRateInfoSql).ToList();
             var teamRateInfo = _sqlSugar.SqlQueryable<TeamRateInfoView>(teamRateInfoSql).ToList();
 
 
-            List<SetDataInfoView> currencyDatas = new List<SetDataInfoView>();
             #region 获取所有币种
             #region 获取所有币种
 
 
             string sql = string.Format(@"Select * From Sys_SetData Where STid = {0} And IsDel = 0", 66);
             string sql = string.Format(@"Select * From Sys_SetData Where STid = {0} And IsDel = 0", 66);
-            var DBdata = _setDataRep.GetListBySqlWithNolock(sql);
-
-            if (DBdata == null || DBdata.Count == 0)
-            {
-                return _view;
-            }
-
-            currencyDatas = DBdata.Select(x => new SetDataInfoView
-            {
-                Name = x.Name,
-                Id = x.Id,
-                Remark = x.Remark,
-            }).ToList();
+            var currencyDatas = _sqlSugar.SqlQueryable<SetDataInfoView>(sql).ToList();
 
 
             _view = currencyDatas.Select(it => new CurrencyHot() { CurrencyId = it.Id,  CurrencyCode = it.Name, CurrencyName = it.Remark}).ToList();
             _view = currencyDatas.Select(it => new CurrencyHot() { CurrencyId = it.Id,  CurrencyCode = it.Name, CurrencyName = it.Remark}).ToList();
             #endregion
             #endregion