From 6b310cb4d4eb6fb301eab20c7a3bc754732dba88 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=8F=E8=82=A5=E7=BE=8A?= <1048382248@qq.com> Date: Fri, 22 Aug 2025 19:14:48 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E5=96=84=20=E5=AD=A6=E7=94=9F?= =?UTF-8?q?=E6=B5=81=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/StudentController.cs | 190 +++++++ Learn.Archives.API/Program.cs | 1 + .../appsettings.Production.json | 3 + Learn.Archives.API/appsettings.json | 7 +- .../Common/UserCenterService.cs | 126 +++++ .../Learn.Archives.Core.csproj | 2 +- Learn.Archives.Core/Model/Dto/BaseReturn.cs | 2 +- .../Model/Dto/UserCenterServiceDto.cs | 464 ++++++++++++++++++ .../Model/Enum/UserStatusEnum.cs | 1 + Learn.Archives.Core/Model/Student.cs | 11 +- 10 files changed, 798 insertions(+), 9 deletions(-) create mode 100644 Learn.Archives.API/Controllers/StudentController.cs create mode 100644 Learn.Archives.Core/Common/UserCenterService.cs create mode 100644 Learn.Archives.Core/Model/Dto/UserCenterServiceDto.cs diff --git a/Learn.Archives.API/Controllers/StudentController.cs b/Learn.Archives.API/Controllers/StudentController.cs new file mode 100644 index 0000000..1250065 --- /dev/null +++ b/Learn.Archives.API/Controllers/StudentController.cs @@ -0,0 +1,190 @@ +using Aliyun.OSS; +using Learn.Archives.API.Controllers.Dto; +using Learn.Archives.API.Expand; +using Learn.Archives.Core.Common; +using Learn.Archives.Core.Model; +using Learn.Archives.Core.Model.Dto; +using Learn.Archives.Core.Model.Enum; +using Mapster; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Mvc; +using MiniExcelLibs; +using System.Diagnostics; +using System.Security.Claims; +using System.Text.RegularExpressions; +using UserCenter.Model; +using UserCenter.Model.Common; + +namespace Learn.Archives.API.Controllers +{ + /// + /// 年级控制器 + /// + public class StudentController : BackController + { + private readonly IHttpContextAccessor _httpContextAccessor; + readonly Repository baseService; + readonly UserCenterService _userCenterService; + readonly LiveUserInfo userInfo; + public StudentController(Repository baseService, LiveUserInfo userInfo, IHttpContextAccessor httpContextAccessor, UserCenterService userCenterService) : base(baseService) + { + this.baseService = baseService; + this.userInfo = userInfo; + _httpContextAccessor = httpContextAccessor; + _userCenterService = userCenterService; + } + + [NonAction] + public override Task PageList([FromBody] QueryRequestBase model) + { + return base.PageList(model); + } + + + /// + /// 用户信息 + /// + /// + [HttpGet] + public async Task Info(long uid) + { + if (uid == 0) + Oh.ModelError("无效数据"); + return await baseService.AsQueryable().FirstAsync(s => s.UserCenterId == uid); + } + + /// + /// 修改用户信息 + /// 调用流程 用户中心->档案系统 + /// + /// + [HttpPost] + public async Task EditInfo(Student e) + { + if (e == null || e.UserCenterId == 0) + Oh.ModelError("无效数据"); + var has = await baseService.AsQueryable().FirstAsync(s => s.UserCenterId == e.UserCenterId); + if (has == null) + await baseService.InsertAsync(e); + else + { + e.Id = has.Id; + e.UserCenterId = has.UserCenterId; + await baseService.UpdateAsync(e); + } + return e.Id; + } + /// + /// 设置角色菜单 + /// + /// + [HttpPost] + public new async Task> PageList() + { + var apiRes =await _userCenterService.CallAPI_GetPageUserList(_httpContextAccessor.HttpContext); + var res= new PageResult() { Data = new List() }; + if (apiRes == null|| apiRes.Data.Count == 0) return res; + res.Total = apiRes.Total; + var uids = apiRes.Data.Select(s => s.Id).ToArray(); + var exData = await baseService.AsQueryable() + .Where(s => uids.Contains(s.UserCenterId)) + .ToArrayAsync(); + var exDataDic = exData.GroupBy(s => s.UserCenterId).ToDictionary(s => s.Key); + foreach (var item in apiRes.Data.Select(s => s.Adapt())) + { + res.Data.Add(item); + if (!exDataDic.ContainsKey(item.Id)) continue; + var ex = exDataDic[item.Id].First(); + item.AmountRelief = ex.AmountRelief; + item.Status = ex.Status; + item.ExitTime = ex.ExitTime?.ToString("yyyy-MM-dd")??string.Empty; + item.JoinTime = ex.JoinTime?.ToString("yyyy-MM-dd") ?? string.Empty; + item.Remark = ex.Remark; + } + return res; + } + + + + + + + + + /// + /// 导入考试信息 + /// + /// + [HttpPost, ResultIgnore] + [HttpLogEnable] + public async Task Import(IFormFile? file) + { + + var fl = file != null ? file : _httpContextAccessor.HttpContext?.Request.Form.Files[0]; + if (fl == null) Oh.ModelError("传入无效的数据"); + if (!Path.GetExtension(fl.FileName).Equals(".xlsx", StringComparison.OrdinalIgnoreCase)) + Oh.ModelError("请选择导入文件为.xlsx的后缀名!"); + //分析excel + IEnumerable dataList; + using var stream = new MemoryStream(); + { + await fl.CopyToAsync(stream); + dataList = stream.Query() + .Where(s => !string.IsNullOrEmpty(s.School)); + } + if (dataList == null || dataList.Count() == 0) + Oh.ModelError("导入失败:无有效数据"); + + var insertInfo = new List(); + var userCenterImp = new List(); + foreach (var s in dataList) + { + insertInfo.Add(new Student() + { + AmountRelief = s.AmountRelief, + ExitTime = s.ExitTime, + Remark = s.Remark, + JoinTime = s.JoinTime, + Status = s.Status.ToEnum()??default, + UserCenterId = s.Id, + }); + userCenterImp.Add(new UserExcelExportData() + { + UserType = "学生", + Account = s.Id.ToString(), + School = s.School, + Grade = s.Grade, + Class = s.Class, + ClassType = s.ClassType, + ExamNo = s.Id.ToString(), + Phone = s.Phone, + RealName = s.RealName, + Stages = s.Stages + }); + } + + //调用 用户中心 导入接口 + var importRes = await _userCenterService.CallAPI_ImportJsonData(_httpContextAccessor.HttpContext, userCenterImp); + + var hUAccount = importRes.InsertUsers.Select(s => s.Account).ToHashSet(); + //基于结果判断添加成功` + insertInfo = insertInfo.Where(s => hUAccount.Contains(s.Id.ToString())).ToList(); + //部分成功的数据写入数据库 + await baseService.InsertRangeAsync(insertInfo); + //处理数据 + var errorExcelInfo = importRes.ErrorExcelExport.Select(s => s.Adapt()); + //如果有错误数据则返回excel + if (errorExcelInfo.Count() != 0) + return File(errorExcelInfo.ExportExcel(), "application/ms-excel"); + + return Ok(); + } + + + + + + + + } +} diff --git a/Learn.Archives.API/Program.cs b/Learn.Archives.API/Program.cs index 0a8498b..0918320 100644 --- a/Learn.Archives.API/Program.cs +++ b/Learn.Archives.API/Program.cs @@ -37,6 +37,7 @@ builder.Services.AddRedisExpand(); builder.Services.AddCorsExpand(); builder.Services.AddMapster(); builder.Services.AddLiveUserInfoExpand(); +builder.Services.AddUserCenterServiceExpand(); builder.Services.AddHttpClient(); builder.Services.AddHttpContextAccessor(); diff --git a/Learn.Archives.API/appsettings.Production.json b/Learn.Archives.API/appsettings.Production.json index 30cefab..769d062 100644 --- a/Learn.Archives.API/appsettings.Production.json +++ b/Learn.Archives.API/appsettings.Production.json @@ -14,6 +14,9 @@ "SqlType": "MySql", "UpdateTable": false }, + "UserCenterService": { + "API": "https://dcb.23544.com/api" + }, "OtherDBArr": [ { "ConfigId": 1001, //用户中心 diff --git a/Learn.Archives.API/appsettings.json b/Learn.Archives.API/appsettings.json index 6701092..60f3648 100644 --- a/Learn.Archives.API/appsettings.json +++ b/Learn.Archives.API/appsettings.json @@ -7,14 +7,14 @@ }, "AllowedHosts": "*", "AppConfig": { - "ID": 1, //程序唯一值 + "ID": 2, //程序唯一值 "Redis": { "ConnectionString": "127.0.0.1:6379,password=Woshiren123,defaultDatabase=10" }, "DB": { "ConnectionString": "AllowLoadLocalInfile=true;Server=192.168.2.9;User ID=root;Password=qwe123!@#;Port=3306;Database=learn.archives;CharSet=utf8mb4;pooling=true;SslMode=None;", "SqlType": "MySql", - "UpdateTable": true + "UpdateTable": false }, "AuthKey": { "Secret": "9FAB7AC7-F1DB-4C56-B84F-044055A34AF2", @@ -22,6 +22,9 @@ "Audience": "Admin", "Expires": 120 // 过期时间120小时 }, + "UserCenterService": { + "API": "https://dca.w.23544.com:8843/api" + }, "OtherDBArr": [ { "ConfigId": 1001, //用户中心 diff --git a/Learn.Archives.Core/Common/UserCenterService.cs b/Learn.Archives.Core/Common/UserCenterService.cs new file mode 100644 index 0000000..1f61c21 --- /dev/null +++ b/Learn.Archives.Core/Common/UserCenterService.cs @@ -0,0 +1,126 @@ +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.DependencyInjection; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Net.Http.Headers; +using System.Net; +using System.Text; +using System.Threading.Tasks; +using System.Security.Policy; +using System.Text.Json; +using Learn.Archives.Core.Model.Dto; +using Microsoft.AspNetCore.Mvc.RazorPages; + +namespace Learn.Archives.Core.Common +{ + public static class UserCenterServiceExpand + { + + /// + /// 添加 当前作用域登录用户信息 + /// + /// + public static void AddUserCenterServiceExpand(this IServiceCollection services) + { + services.AddScoped(); + } + } + /// + /// 调用 UserCenter服务的接口 + /// + public class UserCenterService + { + private readonly IHttpClientFactory _httpClientFactory; + + public UserCenterService(IHttpClientFactory httpClientFactory) + { + _httpClientFactory = httpClientFactory; + } + + const string API_getpageuserlist = "back/users/getpageuserlist"; + const string API_ImportJsonData = "back/users/importjsondata"; + /// + /// 请求用户中心 接口 + /// + /// + /// + public async Task> CallAPI_GetPageUserList(HttpContext context) + { + var res = await ForwardRequestAsync>>(API_getpageuserlist, context); + if (res==null || res.Code != 200) + Oh.Error(res.Message, res.Code); + return res.Data; + } + /// + /// 请求用户中心 接口 + /// + /// + /// + public async Task CallAPI_ImportJsonData(HttpContext context,object data) + { + + var httpClient = _httpClientFactory.CreateClient(); + + var targetUri = new Uri(AppCommon.Config.UserCenterService.API + API_ImportJsonData); + var requestMessage = new HttpRequestMessage(new HttpMethod("POST"), targetUri); + + if (context.Request.Headers.TryGetValue("Authorization", out var authValues)) + requestMessage.Headers.Authorization = AuthenticationHeaderValue.Parse(authValues.FirstOrDefault()); + requestMessage.Content = new StringContent(data.ToJson(), Encoding.UTF8, "application/json"); + + var responseMessage = await httpClient.SendAsync(requestMessage, HttpCompletionOption.ResponseHeadersRead); + var resStr = await requestMessage.Content?.ReadAsStringAsync(); + var res = JsonSerializer.Deserialize>(resStr); + if (res == null || res.Code != 200) + Oh.Error(res.Message, res.Code); + return res.Data; + } + /// + /// 转发请求 + /// + /// 用户中心API + /// 上下文 + /// + public async Task ForwardRequestAsync(string url, HttpContext context) where T : class, new() + { + var httpClient = _httpClientFactory.CreateClient(); + var Request = context.Request; + try + { + // ========== 1. 准备目标请求 ========== + var targetUri = new Uri(AppCommon.Config.UserCenterService.API+"/"+ url); + + // 创建 HttpRequestMessage,使用与当前请求相同的 HttpMethod + var requestMessage = new HttpRequestMessage(new HttpMethod(Request.Method), targetUri); + + // ========== 2. 复制请求头 ========== + // ========== 3. 处理请求体(Body)========== + if (Request.Body != null && (Request.Method == "POST" || Request.Method == "PUT" || Request.Method == "PATCH")) + { + // 由于 Request.Body 只能读取一次,我们需要缓存它(ASP.NET Core 默认不缓存) + // 如果你希望多次读取 Body,可以使用 EnableBuffering() 中间件,或者在这里直接读取并重新赋值 + Request.EnableBuffering(); // 允许重新读取请求流 + Request.Body.Position = 0; // 重置 Stream 位置,以便后续中间件或框架再次读取(如有必要) + using var reader = new System.IO.StreamReader(Request.Body); + var body = await reader.ReadToEndAsync(); + if (!string.IsNullOrEmpty(body)) + requestMessage.Content = new StringContent(body, Encoding.UTF8, Request.ContentType); + } + // ========== 4. 添加 Authorization 等自定义 Header(可选)========== + if (Request.Headers.TryGetValue("Authorization", out var authValues)) + requestMessage.Headers.Authorization = AuthenticationHeaderValue.Parse(authValues.FirstOrDefault()); + // ========== 5. 发送请求到目标服务器 ========== + var responseMessage = await httpClient.SendAsync(requestMessage, HttpCompletionOption.ResponseHeadersRead); + var resStr = await responseMessage.Content?.ReadAsStringAsync(); + return JsonSerializer.Deserialize(resStr); + } + catch + { + throw; + } + } + + } +} diff --git a/Learn.Archives.Core/Learn.Archives.Core.csproj b/Learn.Archives.Core/Learn.Archives.Core.csproj index 6b80d3b..7f3019b 100644 --- a/Learn.Archives.Core/Learn.Archives.Core.csproj +++ b/Learn.Archives.Core/Learn.Archives.Core.csproj @@ -28,6 +28,6 @@ - + diff --git a/Learn.Archives.Core/Model/Dto/BaseReturn.cs b/Learn.Archives.Core/Model/Dto/BaseReturn.cs index 572ec9a..899ddba 100644 --- a/Learn.Archives.Core/Model/Dto/BaseReturn.cs +++ b/Learn.Archives.Core/Model/Dto/BaseReturn.cs @@ -20,7 +20,7 @@ namespace Learn.Archives.Core.Model.Dto } public class BaseReturn { - public required T? Data { get; set; } + public T? Data { get; set; } /// /// 消息码 diff --git a/Learn.Archives.Core/Model/Dto/UserCenterServiceDto.cs b/Learn.Archives.Core/Model/Dto/UserCenterServiceDto.cs new file mode 100644 index 0000000..7477d4a --- /dev/null +++ b/Learn.Archives.Core/Model/Dto/UserCenterServiceDto.cs @@ -0,0 +1,464 @@ +using Learn.Archives.Core.Model.Enum; +using MiniExcelLibs.Attributes; +using SqlSugar; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using UserCenter.Model; + +namespace Learn.Archives.Core.Model.Dto +{ + + public class UserImportInsertUser + { + // + // 摘要: + // 账号 + public string Account { get; set; } + } + public class UserImportRes + { + /// + /// 错误数据 + /// + public IEnumerable ErrorExcelExport { get; set; } + /// + /// 入库的用户 + /// + public IEnumerable InsertUsers { get; set; } + } + + + + public class StudentInfoImportError : StudentInfoImport + { + /// + /// 导入失败原因 + /// + [ExcelColumn(Name = "导入失败原因", Width = 50)] + public string ErrorMsg { get; set; } + } + public class StudentInfoImport + { + /// + /// 姓名 + /// + [ExcelColumn(Name="姓名", Width = 20)] + public string RealName { get; set; } + /// + /// 家长电话 + /// + [ExcelColumn(Name="家长电话", Width = 20)] + public string Phone { get; set; } + /// + /// 学校 + /// + [ExcelColumn(Name="学校", Width = 20)] + public string School { get; set; } + /// + /// 年级 + /// + [ExcelColumn(Name="年级")] + public string Grade { get; set; } + /// + /// 班级 + /// + [ExcelColumn(Name="班级")] + public string Class { get; set; } + /// + /// 班级 + /// + [ExcelColumn(Name="班级类型")] + public string ClassType { get; set; } + + /// + /// 学段 + /// + [ExcelColumn(Name="学段")] + public string? Stages { get; set; } + + /// + /// 减免金额 + /// + [ExcelColumn(Name = "减免金额")] + public decimal AmountRelief { get; set; } + + /// + /// 学生状态[就读/退出] + /// + [ExcelColumn(Name = "学生状态")] + public string Status { get; set; } + + /// + /// 入班时间 + /// + [ExcelColumn(Name = "入班时间")] + public DateTime? JoinTime { get; set; } + /// + /// 退出时间 + /// + [ExcelColumn(Name = "退出时间")] + public DateTime? ExitTime { get; set; } + + /// + /// 备注 + /// + /// + [ExcelColumn(Name = "备注",Width =50)] + public string? Remark { get; set; } + /// + /// id + /// + public long Id { get; set; } = Yitter.IdGenerator.YitIdHelper.NextId(); + + + } + + /// + /// 用户中心 Excel用户导入 + /// + public class UserExcelExportData + { + /// + /// 用户类型 (校长、年级主任、班主任、教师、学生) + /// + [ExcelColumn(Name="用户类型")] + public string UserType { get; set; } + /// + /// 第三方id + /// + [ExcelColumn(Name="第三方id")] + public string ThirdPartyId { get; set; } + /// + /// 点阵笔SN + /// + [ExcelColumn(Name="点阵笔SN")] + public string PointPenSN { get; set; } + /// + /// 姓名 + /// + [ExcelColumn(Name="姓名")] + public string RealName { get; set; } + /// + /// 学籍号/账号 + /// + [ExcelColumn(Name="账号")] + public string Account { get; set; } + /// + /// 电话号码 + /// + [ExcelColumn(Name="手机号")] + public string Phone { get; set; } + /// + /// 学籍号/账号 + /// + [ExcelColumn(Name="考号")] + public string ExamNo { get; set; } + /// + /// 身份证 + /// + [ExcelColumn(Name="身份证")] + public string IdCard { get; set; } + /// + /// 学校 + /// + [ExcelColumn(Name="学校")] + public string School { get; set; } + /// + /// 年级 + /// + [ExcelColumn(Name="年级")] + public string Grade { get; set; } + /// + /// 班级 + /// + [ExcelColumn(Name="班级")] + public string Class { get; set; } + /// + /// 班级 + /// + [ExcelColumn(Name="班级类型")] + public string ClassType { get; set; } + /// + /// 科目 + /// + [ExcelColumn(Name="科目")] + public string Subject { get; set; } + /// + /// 所属云校 + /// + [ExcelColumn(Name="所属云校")] + public string? CloudSchool { get; set; } + /// + /// 导入失败原因 + /// + [ExcelColumn(Name = "导入失败原因", Width = 50)] + public string ErrorMsg { get; set; } + + + /// + /// 账号密码 + /// + [ExcelColumn(Name="账号密码")] + public string Password { get; set; } + /// + /// 学段 + /// + [ExcelColumn(Name="学段")] + public string? Stages { get; set; } + + } + + public class StudentInfoRes :UserInfoResponceDto + { + + /// + /// 减免金额 + /// + [SugarColumn(DecimalDigits = 2)] + public decimal AmountRelief { get; set; } + + /// + /// 学生状态 + /// + public UserStatusEnum Status { get; set; } + + /// + /// 备注 + /// + /// + public string? Remark { get; set; } + + /// + /// 退出时间 + /// + public string? ExitTime { get; set; } + + /// + /// 退出时间 + /// + public string? JoinTime { get; set; } + } + + /// + /// 用户信息 + /// + public class UserInfoResponceDto + { + /// + /// + /// + public long Id { get; set; } + /// + /// 模板编号 + /// + public long TemplateId { get; set; } + /// + /// 电话号码 + /// + public string Phone { get; set; } + /// + /// 信息模板是否编辑过 + /// + public bool Edited { get; set; } + + /// + /// 用户类型 1:学生 2:校职工 + /// + public int UserType { get; set; } + /// + /// 云校id + /// + public long CloudSchoolId { get; set; } + + /// + /// 账号 + /// + public string Account { get; set; } + + /// + /// 学号 + /// + public string StudentId { get; set; } + + /// + /// 姓名 + /// + public string RealName { get; set; } + + /// + /// 性别 0=男 1=女 + /// + public int Sex { get; set; } + /// + /// 学科级别 + /// + public UserSubjectLevel SubjectLevel { get; set; } + + /// + /// 出生日期 + /// + public string? BirthDate { get; set; } + + /// + /// 家庭户口 + /// + public string Residence { get; set; } + + /// + /// 民族 + /// + public string National { get; set; } + + /// + /// 头像 + /// + public string HeadImage { get; set; } + public string IdCard { get; set; } + + /// + /// 省Id + /// + public int Pid { get; set; } + + /// + /// + /// + public string Pname { get; set; } + + /// + /// 市Id + /// + public int Cid { get; set; } + + /// + /// + /// + public string Cname { get; set; } + + /// + /// 区Id + /// + public int Rid { get; set; } + + /// + /// + /// + public string Rname { get; set; } + + /// + /// 微信号 + /// + public string Wx { get; set; } + + /// + /// 是否完善信息 0:否 1:是 + /// + public int IsPerfectInfo { get; set; } + + /// + /// 用户层次 + /// + public int Level { get; set; } + + /// + /// 账户状态 0禁用 1正常 + /// + public int State { get; set; } + + /// + /// 会议系统账号 + /// + public string MeetingAccount { get; set; } + public string GKSubject { get; set; } + public int? GLSubject { get; set; } + public int? GSubject1 { get; set; } + public int? GSubject2 { get; set; } + /// + /// 第三方id + /// + public string ThirdPartyId { get; set; } + + /// + /// 点阵笔SN + /// + public string PointPenSN { get; set; } + + /// + /// 职位 + /// + public List Positions { get; set; } + } + + public class PositionsResponeDto + { + /// + /// 用户Id + /// + public long UserId { get; set; } + /// + /// 职位编号 + /// + public long Id { get; set; } + /// + /// 职位名称 + /// + public string Name { get; set; } + /// + /// 学校编号 + /// + public long SchoolId { get; set; } + public bool Enable { get; set; } + public DateTime? EndTime { get; set; } + + /// + /// 学校名称 + /// + public string SchoolName { get; set; } + /// + /// 级别(初/高) + /// + [Newtonsoft.Json.JsonIgnore] + public string GradeLevel { get; set; } + /// + /// 所属届 + /// + public int GraduationYear { get; set; } + /// + /// 年级 + /// + public string Grade { get; set; } + /// + /// 班级编号 + /// + public long ClassId { get; set; } + /// + /// 班级名称 + /// + public string ClassName { get; set; } + /// + /// 科目编号 + /// + public int SubjectId { get; set; } + /// + /// 科目名称 + /// + public string SubjectName { get; set; } + /// + /// 职位类型1:学生 2:校职工 + /// + public int PositionType { get; set; } + + /// + /// 职级1:校级 2:年级 3:班级 + /// + public int PositionLevel { get; set; } + + /// + /// 职位状态 + /// + public bool Status { get; set; } + } +} diff --git a/Learn.Archives.Core/Model/Enum/UserStatusEnum.cs b/Learn.Archives.Core/Model/Enum/UserStatusEnum.cs index 149523d..88c7337 100644 --- a/Learn.Archives.Core/Model/Enum/UserStatusEnum.cs +++ b/Learn.Archives.Core/Model/Enum/UserStatusEnum.cs @@ -8,6 +8,7 @@ namespace Learn.Archives.Core.Model.Enum { public enum UserStatusEnum { + 未录入=0, 就读=1, 退出=10, } diff --git a/Learn.Archives.Core/Model/Student.cs b/Learn.Archives.Core/Model/Student.cs index e028dc1..c0b1459 100644 --- a/Learn.Archives.Core/Model/Student.cs +++ b/Learn.Archives.Core/Model/Student.cs @@ -1,4 +1,5 @@ -using Learn.Archives.Core.Model.Interface; +using Learn.Archives.Core.Model.Enum; +using Learn.Archives.Core.Model.Interface; using SqlSugar; using System.ComponentModel.DataAnnotations; using System.Net; @@ -30,26 +31,26 @@ namespace Learn.Archives.Core.Model /// /// 学生状态 /// - public UserSourceEnum Status { get; set; } + public UserStatusEnum Status { get; set; } /// /// 备注 /// /// - [SugarColumn(IsNullable = true)] + [SugarColumn(IsNullable = true,Length = 500)] public string? Remark { get; set; } /// /// 退出时间 /// [SugarColumn(IsNullable = true)] - public DateTime ExitTime { get; set; } = DateTime.Now; + public DateTime? ExitTime { get; set; } = DateTime.Now; /// /// 退出时间 /// [SugarColumn(IsNullable = true)] - public DateTime JoinTime { get; set; } = DateTime.Now; + public DateTime? JoinTime { get; set; } = DateTime.Now; /// /// 创建时间