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;
///
/// 创建时间