using DouyinApi.IServices; using Quartz; using System; using System.Threading.Tasks; using DouyinApi.Common.Utility; using DouyinApi.Model.Models; using DouyinApi.Repository.UnitOfWorks; using SqlSugar; /// /// 这里要注意下,命名空间和程序集是一样的,不然反射不到 /// namespace DouyinApi.Tasks { [DisallowConcurrentExecution] public class Job_Blogs_Quartz : JobBase, IJob { private readonly IBlogArticleServices _blogArticleServices; private readonly IGuestbookServices _guestbookServices; private readonly IUnitOfWorkManage _uowm; private readonly ISqlSugarClient _db; private SqlSugarScope db => _db as SqlSugarScope; public Job_Blogs_Quartz(IBlogArticleServices blogArticleServices, ITasksQzServices tasksQzServices, ITasksLogServices tasksLogServices, IGuestbookServices guestbookServices, IUnitOfWorkManage uowm, ISqlSugarClient db) : base(tasksQzServices, tasksLogServices) { _blogArticleServices = blogArticleServices; _guestbookServices = guestbookServices; _uowm = uowm; this._db = db; } /// /// 直接写就没有锁库 上下文ContextID一样 /// /// public async Task Execute2(IJobExecutionContext context) { try { db.BeginTran(); Console.WriteLine(_uowm.GetDbClient().ContextID); await db.Insertable(new Guestbook() { username = "bbb", blogId = 1, createdate = DateTime.Now, isshow = true }).ExecuteReturnSnowflakeIdAsync(); await db.Insertable(new PasswordLib() { PLID = IdGeneratorUtility.NextId(), IsDeleted = false, plAccountName = "aaa", plCreateTime = DateTime.Now }).ExecuteReturnSnowflakeIdAsync(); db.BeginTran(); Console.WriteLine(db.ContextID); await db.Insertable(new PasswordLib() { PLID = IdGeneratorUtility.NextId(), IsDeleted = false, plAccountName = "aaa", plCreateTime = DateTime.Now }).ExecuteReturnSnowflakeIdAsync(); db.CommitTran(); Console.WriteLine(db.ContextID); db.CommitTran(); Console.WriteLine("完成"); } catch (Exception e) { db.RollbackTran(); } } /// /// 但是调用其他类方法 上下文ContextID就不一样 /// /// public async Task Execute(IJobExecutionContext context) { var executeLog = await ExecuteJob(context, async () => await Run(context)); } public async Task Run(IJobExecutionContext context) { System.Console.WriteLine($"Job_Blogs_Quartz 执行 {DateTime.Now.ToShortTimeString()}"); var list = await _blogArticleServices.Query(); // 也可以通过数据库配置,获取传递过来的参数 JobDataMap data = context.JobDetail.JobDataMap; //int jobId = data.GetInt("JobParam"); await _guestbookServices.TestTranPropagationTran2(); } } }