using Jaina; using Photon.Core.Redis; using Photon.Core.Timer; namespace Application.Web; public class GameAutoJobService(ISqlSugarClient DbClient, IRedisCache redis, ITimerJobManager jobManager) : IGameAutoJobService, ITransient { public async Task> GetJobData() { var db = DbClient.AsTenant().GetConnectionWithAttr(); return await db.Queryable().Where(it => it.state == 1).ToListAsync(); } public async Task GetJobInfo(string jobId) { string key = string.Format(BaseCache.BaseCacheKey, "JobData"); if (await redis.HExistsHashAsync(key, jobId)) { return await redis.GetHashAsync(key, jobId); } var db = DbClient.AsTenant().GetConnectionWithAttr(); var data = await db.Queryable().Where(it => it.jobId == jobId).SingleAsync(); await redis.AddHashAsync(key, jobId, data); return data; } public async Task StartJob() { Console.WriteLine(">>>开始执行定时任务>>>"); var jobData = await GetJobData(); if (jobData.Count > 0) { foreach (var item in jobData) { await jobManager.CreateAndStartTask(item.jobId, item.code, item.cron); Console.WriteLine($"-已启动--->{item.name}"); } } Console.WriteLine("<<<定时任务初始化完成<<<"); await Task.CompletedTask; } public async Task StopJob(string jobId) { var db = DbClient.AsTenant().GetConnectionWithAttr(); bool result = await db.Updateable().SetColumns(it => it.state == 0).Where(it => it.jobId == jobId) .ExecuteCommandAsync() > 0; if (result) { await jobManager.DeleteTask(jobId); } } public async Task HandleJob(game_job data) { if (data.code == nameof(GameEnum.JobCode.OnHook)) //挂机 { var _eventPublisher = App.GetService(); await _eventPublisher.PublishAsync(new ChannelEventSource(BusEventsEnum.BusEventsName.HandleOnHook, data)); } else if (data.code == nameof(GameEnum.JobCode.UpdateRank)) //更新排名 { var _eventPublisher = App.GetService(); await _eventPublisher.PublishAsync(new ChannelEventSource(BusEventsEnum.BusEventsName.HandleUpdateRank, data)); } else if (data.code == nameof(GameEnum.JobCode.UpdateOnlineTime)) //更新在线时间 { var _eventPublisher = App.GetService(); await _eventPublisher.PublishAsync(new ChannelEventSource(BusEventsEnum.BusEventsName.HandleOnlineTime, data)); } else if (data.code == nameof(GameEnum.JobCode.UpdateCreateMonster)) //更新创建得怪物 { var _eventPublisher = App.GetService(); await _eventPublisher.PublishAsync(new ChannelEventSource(BusEventsEnum.BusEventsName.HandleCreateMonster, data)); } else if (data.code == nameof(GameEnum.JobCode.UpdateFightData)) //更新战斗记录 { var _eventPublisher = App.GetService(); await _eventPublisher.PublishAsync(new ChannelEventSource(BusEventsEnum.BusEventsName.HandleFightData, data)); } else if (data.code == nameof(GameEnum.JobCode.UpdateExchangeData)) //更新兑换类记录 { var _eventPublisher = App.GetService(); await _eventPublisher.PublishAsync(new ChannelEventSource(BusEventsEnum.BusEventsName.HandleExchangeData, data)); } else if (data.code == nameof(GameEnum.JobCode.UpdateTaskLog)) //更新任务日志 { var _eventPublisher = App.GetService(); await _eventPublisher.PublishAsync(new ChannelEventSource(BusEventsEnum.BusEventsName.HandleTaskLog, data)); } else if (data.code == nameof(GameEnum.JobCode.UpdateTaskUser)) //更新角色任务 { var _eventPublisher = App.GetService(); await _eventPublisher.PublishAsync(new ChannelEventSource(BusEventsEnum.BusEventsName.HandelTaskUser, data)); } else if (data.code == nameof(GameEnum.JobCode.ClearChat)) //清理频道信息 { var _eventPublisher = App.GetService(); await _eventPublisher.PublishAsync(new ChannelEventSource(BusEventsEnum.BusEventsName.HandleClearChat, data)); } else if (data.code == nameof(GameEnum.JobCode.ClearMessage)) //清理频道信息 { var _eventPublisher = App.GetService(); await _eventPublisher.PublishAsync(new ChannelEventSource(BusEventsEnum.BusEventsName.HandleMessageData, data)); } } }