From 7483262c3dfa3a9b3c09b19f19ee1bc882d30a67 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?old=E6=98=93?= <156663459@qq.com> Date: Mon, 22 Jan 2024 23:06:37 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=AD=A6=E7=94=9F=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E8=87=AA=E5=8A=A8=E6=9B=B4=E6=96=B0=E4=BA=8B=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/Back/VipCardController.cs | 28 +++-- .../Controllers/Front/CustomerController.cs | 5 +- New_College.Api/New_College.Model.xml | 45 +++++++ .../ServiceExtensions/JobSetup.cs | 2 +- .../ID_UserSettingBaseServices.cs | 39 ++++++ New_College.Model/Models/D_UserSettingBase.cs | 34 +++++ .../ViewModels/UserSettingBaseRequest.cs | 44 +++++++ .../BASE/D_UserSettingBaseRepository.cs | 24 ++++ .../BASE/ID_UserSettingBaseRepository.cs | 22 ++++ .../D_PlanMajorDescServices.cs | 13 +- .../D_UserSettingBaseServices.cs | 117 ++++++++++++++++++ New_College.Services/V_OrderInfoServices.cs | 2 +- .../UserBaseSettingJobTimedService.cs | 52 ++++++++ 13 files changed, 410 insertions(+), 17 deletions(-) create mode 100644 New_College.IServices/ID_UserSettingBaseServices.cs create mode 100644 New_College.Model/Models/D_UserSettingBase.cs create mode 100644 New_College.Model/ViewModels/UserSettingBaseRequest.cs create mode 100644 New_College.Repository/BASE/D_UserSettingBaseRepository.cs create mode 100644 New_College.Repository/BASE/ID_UserSettingBaseRepository.cs create mode 100644 New_College.Services/D_UserSettingBaseServices.cs create mode 100644 New_College.Tasks/HostedService/UserBaseSettingJobTimedService.cs diff --git a/New_College.Api/Controllers/Back/VipCardController.cs b/New_College.Api/Controllers/Back/VipCardController.cs index c67c4fc..ba4afbe 100644 --- a/New_College.Api/Controllers/Back/VipCardController.cs +++ b/New_College.Api/Controllers/Back/VipCardController.cs @@ -20,13 +20,14 @@ namespace New_College.Api.Controllers.Back private readonly IV_VipCardTypeServices iV_VipCardTypeServices; private readonly IV_OrderInfoServices iV_OrderInfoServices; private readonly IV_CustomerInfoServices _CustomerInfoServices; - - public VipCardController(IV_VipCardInfoServices IV_VipCardInfoServices, IV_VipCardTypeServices IV_VipCardTypeServices, IV_OrderInfoServices IV_OrderInfoServices, IV_CustomerInfoServices customerInfoServices) + private readonly ID_UserSettingBaseServices d_UserSettingBase; + public VipCardController(IV_VipCardInfoServices IV_VipCardInfoServices, IV_VipCardTypeServices IV_VipCardTypeServices, IV_OrderInfoServices IV_OrderInfoServices, IV_CustomerInfoServices customerInfoServices, ID_UserSettingBaseServices userSettingBaseServices) { iV_VipCardInfoServices = IV_VipCardInfoServices; iV_VipCardTypeServices = IV_VipCardTypeServices; iV_OrderInfoServices = IV_OrderInfoServices; _CustomerInfoServices = customerInfoServices; + d_UserSettingBase = userSettingBaseServices; } /// /// 生成卡信息 @@ -116,17 +117,24 @@ namespace New_College.Api.Controllers.Back var custom = await _CustomerInfoServices.Query(c => c.Id == query.CustomerId); if (custom.Any()) { + var isverfiy = await d_UserSettingBase.Query(c => c.CustomerId == query.CustomerId); + if (!isverfiy.Any()) + { + await d_UserSettingBase.SyncBaseInfo(new UserSettingBaseRequest() { CustomerId = query.CustomerId.Value }); + } response.IsVip = custom.FirstOrDefault().IsVIP; - response.pcRole = new PCRole() + + var list = await d_UserSettingBase.GetUserBaseSettings(new UserSettingBaseRequest() { CustomerId = query.CustomerId.Value }); + response.pcRole = list.Where(e => e.PType == 0).Select(c => new PCRole() { - ScoreCount = 10, - SearchCount = 99999 - }; - response.minProRole = new MinProRole() + ScoreCount = c.ScoreCount, + SearchCount = c.SearchCount, + }).FirstOrDefault(); + response.minProRole = list.Where(e => e.PType == 1).Select(c => new MinProRole() { - ScoreCount = 10, - SearchCount = 99999 - }; + ScoreCount = c.ScoreCount, + SearchCount = c.SearchCount, + }).FirstOrDefault(); } else { diff --git a/New_College.Api/Controllers/Front/CustomerController.cs b/New_College.Api/Controllers/Front/CustomerController.cs index 9fbccf8..8eae20c 100644 --- a/New_College.Api/Controllers/Front/CustomerController.cs +++ b/New_College.Api/Controllers/Front/CustomerController.cs @@ -24,9 +24,11 @@ namespace New_College.Api.Controllers.Front public class CustomerController : ControllerBase { private readonly IV_CustomerInfoServices _services; - public CustomerController(IV_CustomerInfoServices IV_CustomerInfoServices) + private readonly ID_UserSettingBaseServices _userSetting; + public CustomerController(IV_CustomerInfoServices IV_CustomerInfoServices, ID_UserSettingBaseServices userSetting) { _services = IV_CustomerInfoServices; + _userSetting = userSetting; } @@ -226,6 +228,7 @@ namespace New_College.Api.Controllers.Front var result = await _services.UpdateScore(query); if (result.Id > 0) { + await _userSetting.UpdateSingleCustomerSetting(new UserBaseSettingUpdateDTO() { UType = 0, CustomerId = query.StudentId });//修改参数次数 var token = JwtHelper.IssueJwt(new TokenModelJwt() { Uid = result.Id, Role = "学生" }); result.Token = token; } diff --git a/New_College.Api/New_College.Model.xml b/New_College.Api/New_College.Model.xml index ea60195..3b687f3 100644 --- a/New_College.Api/New_College.Model.xml +++ b/New_College.Api/New_College.Model.xml @@ -1286,6 +1286,31 @@ 分数(没有就是--) + + + 用户配置表 + + + + + + + + + + 0-pc,1-minpro + + + + + 分数修改次数 + + + + + 功能查询次数 + + @@ -7495,6 +7520,26 @@ 扩缩招生情况 + + + 0分数修改次数|1查询次数 + + + + + 0-pc,1-minpro + + + + + 分数修改次数 + + + + + 功能查询次数 + + 用户ID diff --git a/New_College.Extensions/ServiceExtensions/JobSetup.cs b/New_College.Extensions/ServiceExtensions/JobSetup.cs index 8658990..f88d7fa 100644 --- a/New_College.Extensions/ServiceExtensions/JobSetup.cs +++ b/New_College.Extensions/ServiceExtensions/JobSetup.cs @@ -16,7 +16,7 @@ namespace New_College.Extensions //services.AddHostedService(); //services.AddHostedService(); - + services.AddHostedService(); services.AddSingleton(); services.AddTransient();//Job使用瞬时依赖注入 services.AddSingleton(); diff --git a/New_College.IServices/ID_UserSettingBaseServices.cs b/New_College.IServices/ID_UserSettingBaseServices.cs new file mode 100644 index 0000000..db31afb --- /dev/null +++ b/New_College.IServices/ID_UserSettingBaseServices.cs @@ -0,0 +1,39 @@ +using New_College.IServices.BASE; +using New_College.Model.Models; +using New_College.Model.ViewModels; +using System.Collections.Generic; +using System.Threading.Tasks; + +namespace New_College.IServices +{ + /// + /// ID_UserSettingBaseServices + /// + public interface ID_UserSettingBaseServices :IBaseServices + { + + + /// + /// 同步生成权益 + /// + /// + /// + Task SyncBaseInfo(UserSettingBaseRequest request); + + /// + /// 查询权益 + /// + /// + /// + Task> GetUserBaseSettings(UserSettingBaseRequest request); + + + Task UpdateSingleCustomerSetting(UserBaseSettingUpdateDTO request); + /// + /// 初始化所有数据次数 + /// + /// + Task UpdateBaseInit(); + + } +} \ No newline at end of file diff --git a/New_College.Model/Models/D_UserSettingBase.cs b/New_College.Model/Models/D_UserSettingBase.cs new file mode 100644 index 0000000..95ffe19 --- /dev/null +++ b/New_College.Model/Models/D_UserSettingBase.cs @@ -0,0 +1,34 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace New_College.Model.Models +{ + /// + ///用户配置表 + /// + public class D_UserSettingBase : EntityModel + { + /// + /// + /// + public int CustomerId { get; set; } + /// + /// 0-pc,1-minpro + /// + public int PType { get; set; } + + /// + /// 分数修改次数 + /// + public int ScoreCount { get; set; } + + /// + /// 功能查询次数 + /// + public int SearchCount { get; set; } + + } +} diff --git a/New_College.Model/ViewModels/UserSettingBaseRequest.cs b/New_College.Model/ViewModels/UserSettingBaseRequest.cs new file mode 100644 index 0000000..12cee47 --- /dev/null +++ b/New_College.Model/ViewModels/UserSettingBaseRequest.cs @@ -0,0 +1,44 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace New_College.Model.ViewModels +{ + public class UserSettingBaseRequest + { + public int CustomerId { get; set; } + + } + + public class UserBaseSettingUpdateDTO + { + public int CustomerId { get; set; } + /// + /// 0分数修改次数|1查询次数 + /// + public int UType { get; set; } + + } + + public class UserBaseSettingDto + { + public int CustomerId { get; set; } + /// + /// 0-pc,1-minpro + /// + public int PType { get; set; } + + /// + /// 分数修改次数 + /// + public int ScoreCount { get; set; } + + /// + /// 功能查询次数 + /// + public int SearchCount { get; set; } + } + +} diff --git a/New_College.Repository/BASE/D_UserSettingBaseRepository.cs b/New_College.Repository/BASE/D_UserSettingBaseRepository.cs new file mode 100644 index 0000000..4e1b463 --- /dev/null +++ b/New_College.Repository/BASE/D_UserSettingBaseRepository.cs @@ -0,0 +1,24 @@ +using New_College.IRepository; +using New_College.IRepository.UnitOfWork; +using New_College.Model.Models; +using New_College.Repository.Base; +using System.Collections.Generic; +using System.Threading.Tasks; + +namespace New_College.Repository +{ + /// + /// D_UserSettingBaseRepository + /// + public class D_UserSettingBaseRepository : BaseRepository, ID_UserSettingBaseRepository + { + public D_UserSettingBaseRepository(IUnitOfWork unitOfWork) : base(unitOfWork) + { + } + + public async Task UpdateAllBaseInfo(List userSettingBases) + { + return await this.Db.Updateable(userSettingBases).ExecuteCommandAsync()>0; + } + } +} \ No newline at end of file diff --git a/New_College.Repository/BASE/ID_UserSettingBaseRepository.cs b/New_College.Repository/BASE/ID_UserSettingBaseRepository.cs new file mode 100644 index 0000000..2687b49 --- /dev/null +++ b/New_College.Repository/BASE/ID_UserSettingBaseRepository.cs @@ -0,0 +1,22 @@ +using New_College.IRepository.Base; +using New_College.Model.Models; +using System.Collections.Generic; +using System.Threading.Tasks; + +namespace New_College.IRepository +{ + /// + /// ID_UserSettingBaseRepository + /// + public interface ID_UserSettingBaseRepository : IBaseRepository + { + + /// + /// + /// + /// + /// + Task UpdateAllBaseInfo(List userSettingBases); + + } +} \ No newline at end of file diff --git a/New_College.Services/D_PlanMajorDescServices.cs b/New_College.Services/D_PlanMajorDescServices.cs index 2efa9d1..89fb072 100644 --- a/New_College.Services/D_PlanMajorDescServices.cs +++ b/New_College.Services/D_PlanMajorDescServices.cs @@ -14,6 +14,8 @@ using New_College.Common; using New_College.IRepository; using LinqKit; using System.Collections.Generic; +using New_College.Repository; +using System.Data.Entity.Infrastructure; namespace New_College.Services { @@ -26,12 +28,14 @@ namespace New_College.Services private readonly IBaseRepository _dal; private readonly ID_QualificationLineRepository _qualificationLineRepository; private readonly ID_PlanMajorDescRepository _planMajorDescRepository; - public D_PlanMajorDescServices(IBaseRepository dal, ID_QualificationLineRepository d_QualificationLineRepository, ID_PlanMajorDescRepository planMajorDescRepository) + private readonly IT_BatchlineRepository _batchlineRepository; + public D_PlanMajorDescServices(IBaseRepository dal, ID_QualificationLineRepository d_QualificationLineRepository, ID_PlanMajorDescRepository planMajorDescRepository, IT_BatchlineRepository batchlineRepository) { this._dal = dal; base.BaseDal = dal; _qualificationLineRepository = d_QualificationLineRepository; _planMajorDescRepository = planMajorDescRepository; + _batchlineRepository = batchlineRepository; } @@ -55,11 +59,12 @@ namespace New_College.Services { request.PageSize = request.PageSize > 200 ? 200 : request.PageSize; var claim = request.SubjectClaim.Split(",", StringSplitOptions.RemoveEmptyEntries).ToList(); - var pagemodel = new AIGOPageModel(); int startscore = request.Score - 15; int endscore = request.Score + 15; int qyear = request.Year >= 2023 ? 2023 : request.Year; + var batlist = await _batchlineRepository.Query(c => c.Year == request.Year && c.Type_name == "综合"); + request.BatchName = batlist.Where(c => c.Average >= request.Score).Any() ? batlist.Where(c => c.Average >= request.Score).FirstOrDefault().Batch_name : batlist.Where(c => c.Average < request.Score).FirstOrDefault().Batch_name; Expression> expression = Expressionable.Create() .And(c => c.Years == qyear) .And(c => c.IsDelete == false) @@ -130,8 +135,8 @@ namespace New_College.Services // SubjectClam = c.SelectSubject, Type = MajorPlanScoreTool.GetPlanScore(c.LowScore, request.Score),//冲稳保院校 Percentage = MajorPlanScoreTool.GetPlanPercentage(c.LowScore, request.Score), - planCount = list.Where(w => w.Years == (DateTime.Now.Year-1) && w.UId == c.UId).Sum(c => c.PlanCount), - iGoPlanMajorItems = list.Where(w => w.Years == (DateTime.Now.Year-1) && w.UId == c.UId).Select(t => new AIGoPlanMajorItem() + planCount = list.Where(w => w.Years == (DateTime.Now.Year - 1) && w.UId == c.UId).Sum(c => c.PlanCount), + iGoPlanMajorItems = list.Where(w => w.Years == (DateTime.Now.Year - 1) && w.UId == c.UId).Select(t => new AIGoPlanMajorItem() { PlanId = t.Id, MajorCode = t.MajorCode, diff --git a/New_College.Services/D_UserSettingBaseServices.cs b/New_College.Services/D_UserSettingBaseServices.cs new file mode 100644 index 0000000..94cf3e0 --- /dev/null +++ b/New_College.Services/D_UserSettingBaseServices.cs @@ -0,0 +1,117 @@ + +using New_College.IServices; +using New_College.Model.Models; +using New_College.Services.BASE; +using New_College.IRepository.Base; +using System.Threading.Tasks; +using New_College.Model.ViewModels; +using New_College.IRepository; +using New_College.Common.WebApiClients.HttpApis; +using System; +using System.Linq; +using System.Collections.Generic; +using Senparc.NeuChar.Helpers; + +namespace New_College.Services +{ + public class D_UserSettingBaseServices : BaseServices, ID_UserSettingBaseServices + { + private readonly IBaseRepository _dal; + private readonly ID_UserSettingBaseRepository _userSettingBaseRepository; + private readonly IV_CustomerInfoRepository _CustomerInfoRepository; + public D_UserSettingBaseServices(IBaseRepository dal, IV_CustomerInfoRepository v_CustomerInfoRepository, ID_UserSettingBaseRepository userSettingBaseRepository) + { + this._dal = dal; + base.BaseDal = dal; + _CustomerInfoRepository = v_CustomerInfoRepository; + _userSettingBaseRepository = userSettingBaseRepository; + } + + public async Task> GetUserBaseSettings(UserSettingBaseRequest request) + { + return (await _dal.Query(c => c.CustomerId == request.CustomerId)).Select(c => new UserBaseSettingDto() + { + CustomerId = request.CustomerId, + PType = c.PType, + ScoreCount = c.ScoreCount, + SearchCount = c.SearchCount, + }).ToList(); + } + + public async Task SyncBaseInfo(UserSettingBaseRequest request) + { + var customerinfo = await _CustomerInfoRepository.Query(c => c.Id == request.CustomerId); + if (customerinfo == null) + { + + return false; + } + var basesettinginfo = new D_UserSettingBase() + { + CustomerId = request.CustomerId, + CreateTime = DateTime.Now, + IsDelete = false, + OrderSort = 0, + PType = 0, + ScoreCount = customerinfo.FirstOrDefault().IsVIP ? 10 : 3, + SearchCount = customerinfo.FirstOrDefault().IsVIP ? 9999 : 10, + + }; + + var basesettingtypeinfo = new D_UserSettingBase() + { + CustomerId = request.CustomerId, + CreateTime = DateTime.Now, + IsDelete = false, + OrderSort = 0, + PType = 1, + ScoreCount = customerinfo.FirstOrDefault().IsVIP ? 10 : 3, + SearchCount = customerinfo.FirstOrDefault().IsVIP ? 9999 : 10, + }; + await _dal.Add(basesettinginfo); + await _dal.Add(basesettingtypeinfo); + return true; + } + + /// + /// + /// + /// + public async Task UpdateBaseInit() + { + var modelslist = new List(); + var customerlist = await _CustomerInfoRepository.Query(c => c.IsDelete == false); + var userbaselist = await _userSettingBaseRepository.Query(c => c.IsDelete == false); + customerlist.ForEach(async c => + { + var userbaseinfo = userbaselist.Where(e => e.CustomerId == c.Id); + if (userbaselist.Any()) + { + var models = userbaselist.FirstOrDefault(); + models.ScoreCount = c.IsVIP ? 10 : 3; + models.SearchCount = c.IsVIP ? 9999 : 10; + modelslist.Add(models); + } + }); + await _userSettingBaseRepository.UpdateAllBaseInfo(modelslist); + } + + public async Task UpdateSingleCustomerSetting(UserBaseSettingUpdateDTO request) + { + var basesettinglist = await _userSettingBaseRepository.Query(c => c.CustomerId == request.CustomerId); + basesettinglist.ForEach(async a => + { + if (request.UType == 0) + { + a.ScoreCount = a.ScoreCount > 0 ? a.ScoreCount - 1 : 0; + } + if (request.UType == 1) + { + a.SearchCount = a.SearchCount > 0 ? a.SearchCount - 1 : 0; + } + await _userSettingBaseRepository.Update(a); + }); + + } + } +} \ No newline at end of file diff --git a/New_College.Services/V_OrderInfoServices.cs b/New_College.Services/V_OrderInfoServices.cs index 72e7ae8..80b75ef 100644 --- a/New_College.Services/V_OrderInfoServices.cs +++ b/New_College.Services/V_OrderInfoServices.cs @@ -335,7 +335,7 @@ namespace New_College.Services var cc = await _dal.Update(model); if (cc) { - var oldorderlist = await _dal.Query(c => c.Id != model.Id && c.CustomerId == model.CustomerId); + var oldorderlist = await _dal.Query(c => c.Id != model.Id && c.CustomerId == model.CustomerId && c.Status == EnumOrderType.payment); oldorderlist.ForEach(async c => { c.Status = EnumOrderType.Cancel; diff --git a/New_College.Tasks/HostedService/UserBaseSettingJobTimedService.cs b/New_College.Tasks/HostedService/UserBaseSettingJobTimedService.cs new file mode 100644 index 0000000..ed4a3c1 --- /dev/null +++ b/New_College.Tasks/HostedService/UserBaseSettingJobTimedService.cs @@ -0,0 +1,52 @@ +using New_College.Common.Helper; +using Microsoft.Extensions.Hosting; +using System; +using System.Threading; +using System.Threading.Tasks; +using New_College.IServices; + +namespace New_College.Tasks +{ + public class UserBaseSettingJobTimedService : IHostedService, IDisposable + { + private Timer _timer; + private ID_UserSettingBaseServices _UserSettingBaseServices; + // 这里可以注入 + public UserBaseSettingJobTimedService(ID_UserSettingBaseServices d_UserSettingBaseServices) + { + _UserSettingBaseServices = d_UserSettingBaseServices; + } + + public Task StartAsync(CancellationToken cancellationToken) + { + Console.WriteLine("Job userbaseupdate is starting."); + // 获取当前时间 + DateTime currentTime = DateTime.Now; + // 计算距离晚上12点的时间间隔 + TimeSpan timeUntilMidnight = TimeSpan.FromDays(1) - currentTime.TimeOfDay; + _timer = new Timer(DoWork, null, timeUntilMidnight, TimeSpan.FromDays(1));//小时 + return Task.CompletedTask; + } + + private void DoWork(object state) + { + + _UserSettingBaseServices.UpdateBaseInit();//晚上12点同步 + ConsoleHelper.WriteWarningLine($"userbaseJobstart : {DateTime.Now}"); + } + + public Task StopAsync(CancellationToken cancellationToken) + { + Console.WriteLine("userbaseJob is stopping."); + + _timer?.Change(Timeout.Infinite, 0); + + return Task.CompletedTask; + } + + public void Dispose() + { + _timer?.Dispose(); + } + } +}