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();
+ }
+ }
+}