diff --git a/labs/Teacher/TeacherExt/AesHelper.cs b/labs/Teacher/TeacherExt/AesHelper.cs new file mode 100644 index 00000000..30a71e85 --- /dev/null +++ b/labs/Teacher/TeacherExt/AesHelper.cs @@ -0,0 +1,101 @@ +using Microsoft.Extensions.Configuration; +using System; +using System.Globalization; +using System.Linq; +using System.Security.Cryptography; +using System.Text; + +namespace TeacherExt +{ + public class AesHelper + { + private readonly IConfiguration _config; + + public AesHelper(IConfiguration config) + { + this._config = config; + } + + public string Decrypt(string input) + { + var data = HexStringToByteArray(input); + return Encoding.UTF8.GetString(AesDecrypt(data)).Trim(); + } + + public string Encrypt(string input) + { + var data = AesEncrypt(Encoding.UTF8.GetBytes(input)); + return BytesToHex(data); + } + + private byte[] AesEncrypt(byte[] plainText) + { + using var aes = CreateAes(); + using var encryptor = aes.CreateEncryptor(); + return encryptor.TransformFinalBlock(plainText, 0, plainText.Length); + } + + private byte[] AesDecrypt(byte[] cipherText) + { + using var aes = CreateAes(); + using var decryptor = aes.CreateDecryptor(); + return decryptor.TransformFinalBlock(cipherText, 0, cipherText.Length); + } + + private Aes CreateAes() + { + var password = this._config.GetValue("password"); + var key = Encoding.UTF8.GetBytes(password); + //var iv = HexStringToByteArray("DsideaL4r5t6y7u!@#"); + var aesAlg = Aes.Create(); + aesAlg.KeySize = 128; + + aesAlg.Key = AESCreateKey(key, aesAlg.KeySize / 8); + aesAlg.IV = new byte[16]; + aesAlg.BlockSize = 128; + + aesAlg.Mode = CipherMode.ECB; + aesAlg.Padding = PaddingMode.PKCS7; + return aesAlg; + } + + private static byte[] AESCreateKey(byte[] key, int keyLength) + { + // Create the real key with the given key length. + byte[] realkey = new byte[keyLength]; + + // XOR each byte of the Key given with the real key until there's nothing left. + // This allows for keys longer than our Key Length and pads short keys to the required length. + + for (int i = 0; i < key.Length; i++) + { + realkey[i % keyLength] ^= key[i]; + } + + return realkey; + } + + private static byte[] HexStringToByteArray(string hex) + { + return Enumerable.Range(0, hex.Length) + .Where(x => x % 2 == 0) + .Select(x => Convert.ToByte(hex.Substring(x, 2), 16)) + .ToArray(); + } + + public string BytesToHex(byte[] bytes) + { + if (bytes is null) + { + throw new ArgumentNullException(nameof(bytes)); + } + + var hex = new StringBuilder(bytes.Length * 2); + foreach (byte b in bytes) + { + hex.AppendFormat(CultureInfo.InvariantCulture, "{0:X2}", b); + } + return hex.ToString(); + } + } +} \ No newline at end of file diff --git a/labs/Teacher/TeacherExt/Controllers/HomeController.cs b/labs/Teacher/TeacherExt/Controllers/HomeController.cs index 3da567a3..b8f4bde0 100644 --- a/labs/Teacher/TeacherExt/Controllers/HomeController.cs +++ b/labs/Teacher/TeacherExt/Controllers/HomeController.cs @@ -1,26 +1,16 @@ using Infrastructure.Data; using Infrastructure.Extensions; -using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; -using Microsoft.AspNetCore.Mvc.ModelBinding; -using Microsoft.AspNetCore.Mvc.Rendering; -using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Logging; -using Newtonsoft.Json; -using Newtonsoft.Json.Serialization; -using NPOI.SS.UserModel; -using NPOI.XSSF.UserModel; -using System; -using System.Globalization; -using System.IO; +using System.Collections.Generic; using System.Linq; using TeacherExt.Entities; using TeacherExt.Models; namespace TeacherExt.Controllers { - [Authorize] + //[Authorize] [ApiController] [Route("[controller]/[action]")] public class HomeController : Controller @@ -28,832 +18,906 @@ namespace TeacherExt.Controllers private readonly IHostEnvironment _env; private readonly ILogger _logger; + private readonly AesHelper _helper; + private readonly IRepository _directoryRepo; + private readonly IRepository _personRepo; + private readonly IRepository _organizationRepo; - private readonly IRepository _organRepo; + //private readonly IRepository _userRepo; - private readonly IRepository _userRepo; + //private readonly IRepository _teacherRepo; - private readonly IRepository _teacherRepo; - - private readonly IRepository _checkLogRepo; + //private readonly IRepository _checkLogRepo; public HomeController(IHostEnvironment env, ILogger logger, - IRepository organRepo, - IRepository userRepo, - IRepository teacherRepo, - IRepository checkLogRepo) + AesHelper helper, + IRepository directoryRepo, + IRepository personRepo, + IRepository organizationRepo + //IRepository organRepo, + //IRepository userRepo, + //IRepository teacherRepo, + //IRepository checkLogRepo + ) { this._env = env; _logger = logger; - this._organRepo = organRepo; - this._userRepo = userRepo; - this._teacherRepo = teacherRepo; - this._checkLogRepo = checkLogRepo; + this._helper = helper; + this._directoryRepo = directoryRepo; + this._personRepo = personRepo; + this._organizationRepo = organizationRepo; + //this._organRepo = organRepo; + //this._userRepo = userRepo; + //this._teacherRepo = teacherRepo; + //this._checkLogRepo = checkLogRepo; } [HttpGet] [Route("/")] - public IActionResult Index(QueryTeacherModel model) - { - var query = Query(model); - model.TotalCount = query.Count(); - var list = query - .Skip(model.PageSize * (model.PageIndex - 1)) - .Take(model.PageSize) - .ToList() - .Select(o => - { - var m = o.Teacher != null ? o.Teacher.To() : new EditTeacherModel(); - if (o.Teacher != null) - { - this.EntityToModel(o.Teacher, m); - } - m.UserName = o.UserName; - m.UserId = o.Id; - m.Organ = o.Organ.Name; - m.RealName = o.RealName; - return m; - }).ToList(); - model.List.AddRange(list); - ViewData.SelectList(o => model.RequestEditStatus, () => this.GetRequestEditStatus(model.RequestEditStatus)); - ViewData.SelectList(o => model.CheckStatus, () => this.GetCheckStatus(model.CheckStatus)); - return Result(model); - } - - [HttpPost] - [Route("/")] - public IActionResult Index(QueryTeacherModel model, bool isPost) - { - return this.Index(model); - } - - [HttpGet] - public IActionResult Details(Guid userId) + public IActionResult Index(int bureau_id, string person_name, int pageNumber = 1, int pageSize = 20) { - var entity = this._userRepo.ReadOnlyTable() - .Include(o => o.Organ) - .Include(o => o.Teacher) - .FirstOrDefault(o => o.Id == userId); - var model = entity.To(); - if (entity.Teacher != null) + var personQuery = this._personRepo.ReadOnlyTable(); + var organQuery = this._organizationRepo.ReadOnlyTable(); + if (!string.IsNullOrEmpty(person_name)) { - model.From(entity.Teacher); + personQuery = personQuery.Where(o => o.RealName.Contains(person_name)); } - model.UserName = entity.UserName; - model.UserId = entity.Id; - model.Organ = entity.Organ.Name; - model.RealName = entity.RealName; - this.EntityToModel(entity.Teacher, model); - this.ToEditModel(entity.Teacher, model); - return Result(model); - } - - [HttpPost] - public IActionResult Details([FromForm] EditTeacherModel model) - { - ValidEditModel(model); - var entity = this._userRepo.Table().Include(o => o.Organ).Include(o => o.Teacher).FirstOrDefault(o => o.Id == model.UserId); - if (ModelState.IsValid) - { - if (entity.Teacher.CheckStatus != model.CheckStatus) - { - this._checkLogRepo.Add(new CheckLog - { - UpdateBy = User.Identity.Name, - UpdateAt = DateTime.Now, - UserName = entity.UserName, - FromStatus = entity.Teacher.CheckStatus, - ToStatus = model.CheckStatus - }); - } - entity.Teacher.From(model); - this._userRepo.SaveChanges(); - return RedirectToAction("Index"); - } - this.EntityToModel(entity?.Teacher, model); - this.ToEditModel(entity?.Teacher, model); - return Result(model); - } - - [HttpGet] - public IActionResult Add() - { - var model = new EditTeacherModel(); - this.ToEditModel(null, model); - return View(model); - } - - [HttpGet] - public IActionResult Edit(string userName) - { - var entity = this._userRepo.ReadOnlyTable() - .Include(o => o.Organ) - .Include(o => o.Teacher) - .FirstOrDefault(o => o.UserName == userName); - var model = entity.To(); - if (entity.Teacher != null) - { - model.From(entity.Teacher); - } - model.UserName = entity.UserName; - model.UserId = entity.Id; - model.Organ = entity.Organ.Name; - model.RealName = entity.RealName; - this.EntityToModel(entity.Teacher, model); - this.ToEditModel(entity.Teacher, model); - return Result(model); - } - - [HttpPost] - public IActionResult Add([FromForm] EditTeacherModel model) - { - if (ModelState.IsValid) - { - var entity = new Teacher(); - entity.From(model); - this._teacherRepo.Add(entity); - this._teacherRepo.SaveChanges(); - return RedirectToAction("Index"); - } - this.ToEditModel(null, model); - return View(model); - } - - [HttpPost] - public IActionResult Edit([FromForm] EditTeacherModel model) - { - ValidEditModel(model); - var entity = this._userRepo.Table().Include(o => o.Organ).Include(o => o.Teacher).FirstOrDefault(o => o.Id == model.UserId); - if (ModelState.IsValid) + var query = from person in personQuery + join organ in organQuery on person.BureauId equals organ.Id + join organ2 in organQuery on person.OrganId equals organ2.Id + where (person.IsUsed && person.BureauId == bureau_id) + orderby person.BureauId,person.CreateAt + select new ListItem + { + person_name = person.RealName, + sex = person.Sex, + nation = person.Nation, + placeofbirth= person.NativePlace, + bureau_name = organ.Name, + org_name = organ2.Name, + person_id =person.Id, + }; + if (!string.IsNullOrEmpty(person_name)) { - if (entity.Teacher == null) - { - entity.Teacher = new Teacher(); - } - entity.Teacher.From(model); - this._userRepo.SaveChanges(); - return RedirectToAction("Index"); + query.Where(o => o.person_name.Contains(person_name)); } - this.EntityToModel(entity?.Teacher, model); - this.ToEditModel(entity?.Teacher, model); - return View(model); - } - - [HttpGet] - public IActionResult History([FromQuery] QueryHistoryModel model) - { - var query = this._checkLogRepo.ReadOnlyTable() - .Where(o => o.UserName == model.UserName) - .OrderByDescending(o => o.UpdateAt); - model.TotalCount = query.Count(); - var list = query.Skip(model.PageSize * (model.PageIndex - 1)) - .OrderByDescending(o => o.UpdateAt) - .Take(model.PageSize) - .ToList() - .Select(o => - { - var m = o.To(); - return m; - }) + var count = query.Count(); + var list = query + .Skip(pageSize * (pageNumber - 1)) + .Take(pageSize) .ToList(); - model.List.AddRange(list); - return Result(model); - } - - /// - /// https://github.com/nissl-lab/npoi/wiki/How-to-use-NPOI-on-Linux - /// apt-get install libgdiplus libc6-dev - /// cd /usr/lib - /// ln -s libgdiplus.so gdiplus.dll - /// - /// - [HttpPost] - public FileResult Export([FromForm] QueryTeacherModel model) - { - var template = Path.Combine(this._env.ContentRootPath, "wwwroot", "teacher.xlsx"); - using var fs = System.IO.File.OpenRead(template); - var wk = new XSSFWorkbook(fs); - var sheet = wk.GetSheetAt(0); - this.ExportInternal(sheet, model); - using var ms = new MemoryStream(); - wk.Write(ms); - return File(ms.ToArray(), "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", $"在编汇总_{DateTime.Now.ToString("yyyy_MM-dd_HH_mm_ss")}.xlsx"); - } - - private IQueryable Query(QueryTeacherModel model) - { - var userName = User.Identity.Name; - var organId = this._userRepo.ReadOnlyTable().Where(o => o.UserName == userName).Select(o => o.OrganId).FirstOrDefault(); - if (User.IsInRole("局管理员")) - { - model.Organs = this._organRepo.Table().ToList().Where(o => o.ParentId == null).ToList(); - } - else - { - model.Organs = this._organRepo.ReadOnlyTable().ToList().Where(o => o.Id == organId).ToList(); - } - var query = this._userRepo.ReadOnlyTable().Include(o => o.Organ).Include(o => o.Teacher).AsQueryable(); - - if (User.IsInRole("局管理员")) - { - if (model.OrganId.HasValue) - { - query = query.Where(o => o.OrganId == model.OrganId.Value); - } - } - else if (User.IsInRole("校管理员")) - { - query = query.Where(o => o.OrganId == organId); - } - else + var nations = this.GetItems("ETHNIC_GROUP"); + foreach (var item in list) { - query = query.Where(o => o.UserName == userName); + item.nation_name = nations.FirstOrDefault(o => o.Code == item.nation)?.Remark; } - if (!model.OrganId.HasValue) - { - model.OrganId = organId; - } - query = query - .WhereIf(!string.IsNullOrEmpty(model.RequestEditStatus), o => o.Teacher.RequestEditStatus == model.RequestEditStatus) - .WhereIf(!string.IsNullOrEmpty(model.CheckStatus), o => o.Teacher.CheckStatus == model.CheckStatus) - .WhereIf(!string.IsNullOrEmpty(model.RealName), o => o.RealName.Contains(model.RealName)); - return query; - } - - private void ValidEditModel(EditTeacherModel model) - { - if (!ModelState.IsValid) + var model = new { - if (model.IsJobAsMaxTitle.HasValue) - { - if (model.IsJobAsMaxTitle.Value) - {//最高职称聘任 - if (ModelState.ContainsKey(nameof(model.JobAsNotMaxTitleReason))) - { - ModelState.Remove(nameof(model.JobAsNotMaxTitleReason)); - } - if (ModelState.ContainsKey(nameof(model.NotMaxTitle))) - { - ModelState.Remove(nameof(model.NotMaxTitle)); - } - if (ModelState.ContainsKey(nameof(model.NotMaxTitleStart))) - { - ModelState.Remove(nameof(model.NotMaxTitleStart)); - } - if (ModelState.ContainsKey(nameof(model.JobAsNotMaxTitleDate))) - { - ModelState.Remove(nameof(model.JobAsNotMaxTitleDate)); - } - } - else - { - if (ModelState.ContainsKey(nameof(model.JobAsMaxTitleDate))) - { - ModelState.Remove(nameof(model.JobAsMaxTitleDate)); - } - } - } - - if (string.IsNullOrEmpty(model.EducationGrade) && ModelState.ContainsKey(nameof(model.EducationGradeDate))) - {//不享受待遇 - ModelState.Remove(nameof(model.EducationGradeDate)); - } - if (model.HasPosition.HasValue) - { - if (model.HasPosition.Value) - {//在编在岗 - if (ModelState.ContainsKey(nameof(model.NotOnPostReason))) - { - ModelState.Remove(nameof(model.NotOnPostReason)); - } - if (ModelState.ContainsKey(nameof(model.NotOnPostReasonDate))) - { - ModelState.Remove(nameof(model.NotOnPostReasonDate)); - } - if (model.IsMiddleLevel.HasValue) - { - if (model.IsMiddleLevel.Value) - {//中层 - if (ModelState.ContainsKey(nameof(model.FrontTeacher))) - { - ModelState.Remove(nameof(model.FrontTeacher)); - } - } - else - {//一线教师 - if (ModelState.ContainsKey(nameof(model.Position))) - { - ModelState.Remove(nameof(model.Position)); - } - if (ModelState.ContainsKey(nameof(model.PositionStart))) - { - ModelState.Remove(nameof(model.PositionStart)); - } - } - } - } - else - {//在编不在岗 - if (ModelState.ContainsKey(nameof(model.Position))) - { - ModelState.Remove(nameof(model.Position)); - } - if (ModelState.ContainsKey(nameof(model.PositionStart))) - { - ModelState.Remove(nameof(model.PositionStart)); - } - if (ModelState.ContainsKey(nameof(model.FrontTeacher))) - { - ModelState.Remove(nameof(model.FrontTeacher)); - } - } - } - } - } - - private void ExportInternal(ISheet sheet, QueryTeacherModel model) - { - var style = NPOIHelper.CreateStyle(sheet, fontName: "宋体", fontSize: 11); - - var headers = NPOIHelper.CreateHader(sheet, typeof(EditTeacherModel), model.Headers); - var list = this.Query(model) - .ToList() - .Select(o => - { - var m = o.Teacher != null ? o.Teacher.To() : new EditTeacherModel { Id = Guid.Empty }; - if (o.Teacher != null) - { - this.EntityToModel(o.Teacher, m); - } - m.UserId = o.Id; - m.Organ = o.Organ.Name; - m.RealName = o.RealName; - return m; - }) + List = list, + PageNumber = pageNumber, + PageSize = pageSize, + TotalRow = count + }; + return Json(model); + ////return Json(this._directoryRepo.ReadOnlyTable().Where(o=>o.IsUsed&&o.Category== "Nationality").OrderBy(o=>o.Order)); + //var model = this._personRepo.ReadOnlyTable().Where(o => o.IdentityNumber != null).FirstOrDefault(); + ////var bytes = HexStringToByteArray(model); + ////var output = AesDecrypt(bytes); + //var value = _helper.Decrypt(model.IdentityNumber); + //var en = _helper.Encrypt(value); + //return Content(value); + } + + //[HttpGet] + //[Route("/")] + //public IActionResult Index(QueryTeacherModel model) + //{ + // var query = Query(model); + // model.TotalCount = query.Count(); + // var list = query + // .Skip(model.PageSize * (model.PageIndex - 1)) + // .Take(model.PageSize) + // .ToList() + // .Select(o => + // { + // var m = o.Teacher != null ? o.Teacher.To() : new EditTeacherModel(); + // if (o.Teacher != null) + // { + // this.EntityToModel(o.Teacher, m); + // } + // m.UserName = o.UserName; + // m.UserId = o.Id; + // m.Organ = o.Organ.Name; + // m.RealName = o.RealName; + // return m; + // }).ToList(); + // model.List.AddRange(list); + // ViewData.SelectList(o => model.RequestEditStatus, () => this.GetRequestEditStatus(model.RequestEditStatus)); + // ViewData.SelectList(o => model.CheckStatus, () => this.GetCheckStatus(model.CheckStatus)); + // return Result(model); + //} + + //[HttpPost] + //[Route("/")] + //public IActionResult Index(QueryTeacherModel model, bool isPost) + //{ + // return this.Index(model); + //} + + //[HttpGet] + //public IActionResult Details(Guid userId) + //{ + // var entity = this._userRepo.ReadOnlyTable() + // .Include(o => o.Organ) + // .Include(o => o.Teacher) + // .FirstOrDefault(o => o.Id == userId); + // var model = entity.To(); + // if (entity.Teacher != null) + // { + // model.From(entity.Teacher); + // } + // model.UserName = entity.UserName; + // model.UserId = entity.Id; + // model.Organ = entity.Organ.Name; + // model.RealName = entity.RealName; + // this.EntityToModel(entity.Teacher, model); + // this.ToEditModel(entity.Teacher, model); + // return Result(model); + //} + + //[HttpPost] + //public IActionResult Details([FromForm] EditTeacherModel model) + //{ + // ValidEditModel(model); + // var entity = this._userRepo.Table().Include(o => o.Organ).Include(o => o.Teacher).FirstOrDefault(o => o.Id == model.UserId); + // if (ModelState.IsValid) + // { + // if (entity.Teacher.CheckStatus != model.CheckStatus) + // { + // this._checkLogRepo.Add(new CheckLog + // { + // UpdateBy = User.Identity.Name, + // UpdateAt = DateTime.Now, + // UserName = entity.UserName, + // FromStatus = entity.Teacher.CheckStatus, + // ToStatus = model.CheckStatus + // }); + // } + // entity.Teacher.From(model); + // this._userRepo.SaveChanges(); + // return RedirectToAction("Index"); + // } + // this.EntityToModel(entity?.Teacher, model); + // this.ToEditModel(entity?.Teacher, model); + // return Result(model); + //} + + //[HttpGet] + //public IActionResult Add() + //{ + // var model = new EditTeacherModel(); + // this.ToEditModel(null, model); + // return View(model); + //} + + //[HttpGet] + //public IActionResult Edit(string userName) + //{ + // var entity = this._userRepo.ReadOnlyTable() + // .Include(o => o.Organ) + // .Include(o => o.Teacher) + // .FirstOrDefault(o => o.UserName == userName); + // var model = entity.To(); + // if (entity.Teacher != null) + // { + // model.From(entity.Teacher); + // } + // model.UserName = entity.UserName; + // model.UserId = entity.Id; + // model.Organ = entity.Organ.Name; + // model.RealName = entity.RealName; + // this.EntityToModel(entity.Teacher, model); + // this.ToEditModel(entity.Teacher, model); + // return Result(model); + //} + + //[HttpPost] + //public IActionResult Add([FromForm] EditTeacherModel model) + //{ + // if (ModelState.IsValid) + // { + // var entity = new Teacher(); + // entity.From(model); + // this._teacherRepo.Add(entity); + // this._teacherRepo.SaveChanges(); + // return RedirectToAction("Index"); + // } + // this.ToEditModel(null, model); + // return View(model); + //} + + //[HttpPost] + //public IActionResult Edit([FromForm] EditTeacherModel model) + //{ + // ValidEditModel(model); + // var entity = this._userRepo.Table().Include(o => o.Organ).Include(o => o.Teacher).FirstOrDefault(o => o.Id == model.UserId); + // if (ModelState.IsValid) + // { + // if (entity.Teacher == null) + // { + // entity.Teacher = new Teacher(); + // } + // entity.Teacher.From(model); + // this._userRepo.SaveChanges(); + // return RedirectToAction("Index"); + // } + // this.EntityToModel(entity?.Teacher, model); + // this.ToEditModel(entity?.Teacher, model); + // return View(model); + //} + + //[HttpGet] + //public IActionResult History([FromQuery] QueryHistoryModel model) + //{ + // var query = this._checkLogRepo.ReadOnlyTable() + // .Where(o => o.UserName == model.UserName) + // .OrderByDescending(o => o.UpdateAt); + // model.TotalCount = query.Count(); + // var list = query.Skip(model.PageSize * (model.PageIndex - 1)) + // .OrderByDescending(o => o.UpdateAt) + // .Take(model.PageSize) + // .ToList() + // .Select(o => + // { + // var m = o.To(); + // return m; + // }) + // .ToList(); + // model.List.AddRange(list); + // return Result(model); + //} + + ///// + ///// https://github.com/nissl-lab/npoi/wiki/How-to-use-NPOI-on-Linux + ///// apt-get install libgdiplus libc6-dev + ///// cd /usr/lib + ///// ln -s libgdiplus.so gdiplus.dll + ///// + ///// + //[HttpPost] + //public FileResult Export([FromForm] QueryTeacherModel model) + //{ + // var template = Path.Combine(this._env.ContentRootPath, "wwwroot", "teacher.xlsx"); + // using var fs = System.IO.File.OpenRead(template); + // var wk = new XSSFWorkbook(fs); + // var sheet = wk.GetSheetAt(0); + // this.ExportInternal(sheet, model); + // using var ms = new MemoryStream(); + // wk.Write(ms); + // return File(ms.ToArray(), "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", $"在编汇总_{DateTime.Now.ToString("yyyy_MM-dd_HH_mm_ss")}.xlsx"); + //} + + //private IQueryable Query(QueryTeacherModel model) + //{ + // var userName = User.Identity.Name; + // var organId = this._userRepo.ReadOnlyTable().Where(o => o.UserName == userName).Select(o => o.OrganId).FirstOrDefault(); + // if (User.IsInRole("局管理员")) + // { + // model.Organs = this._organRepo.Table().ToList().Where(o => o.ParentId == null).ToList(); + // } + // else + // { + // model.Organs = this._organRepo.ReadOnlyTable().ToList().Where(o => o.Id == organId).ToList(); + // } + // var query = this._userRepo.ReadOnlyTable().Include(o => o.Organ).Include(o => o.Teacher).AsQueryable(); + + // if (User.IsInRole("局管理员")) + // { + // if (model.OrganId.HasValue) + // { + // query = query.Where(o => o.OrganId == model.OrganId.Value); + // } + // } + // else if (User.IsInRole("校管理员")) + // { + // query = query.Where(o => o.OrganId == organId); + // } + // else + // { + // query = query.Where(o => o.UserName == userName); + // } + // if (!model.OrganId.HasValue) + // { + // model.OrganId = organId; + // } + // query = query + // .WhereIf(!string.IsNullOrEmpty(model.RequestEditStatus), o => o.Teacher.RequestEditStatus == model.RequestEditStatus) + // .WhereIf(!string.IsNullOrEmpty(model.CheckStatus), o => o.Teacher.CheckStatus == model.CheckStatus) + // .WhereIf(!string.IsNullOrEmpty(model.RealName), o => o.RealName.Contains(model.RealName)); + // return query; + //} + + //private void ValidEditModel(EditTeacherModel model) + //{ + // if (!ModelState.IsValid) + // { + // if (model.IsJobAsMaxTitle.HasValue) + // { + // if (model.IsJobAsMaxTitle.Value) + // {//最高职称聘任 + // if (ModelState.ContainsKey(nameof(model.JobAsNotMaxTitleReason))) + // { + // ModelState.Remove(nameof(model.JobAsNotMaxTitleReason)); + // } + // if (ModelState.ContainsKey(nameof(model.NotMaxTitle))) + // { + // ModelState.Remove(nameof(model.NotMaxTitle)); + // } + // if (ModelState.ContainsKey(nameof(model.NotMaxTitleStart))) + // { + // ModelState.Remove(nameof(model.NotMaxTitleStart)); + // } + // if (ModelState.ContainsKey(nameof(model.JobAsNotMaxTitleDate))) + // { + // ModelState.Remove(nameof(model.JobAsNotMaxTitleDate)); + // } + // } + // else + // { + // if (ModelState.ContainsKey(nameof(model.JobAsMaxTitleDate))) + // { + // ModelState.Remove(nameof(model.JobAsMaxTitleDate)); + // } + // } + // } + + // if (string.IsNullOrEmpty(model.EducationGrade) && ModelState.ContainsKey(nameof(model.EducationGradeDate))) + // {//不享受待遇 + // ModelState.Remove(nameof(model.EducationGradeDate)); + // } + // if (model.HasPosition.HasValue) + // { + // if (model.HasPosition.Value) + // {//在编在岗 + // if (ModelState.ContainsKey(nameof(model.NotOnPostReason))) + // { + // ModelState.Remove(nameof(model.NotOnPostReason)); + // } + // if (ModelState.ContainsKey(nameof(model.NotOnPostReasonDate))) + // { + // ModelState.Remove(nameof(model.NotOnPostReasonDate)); + // } + // if (model.IsMiddleLevel.HasValue) + // { + // if (model.IsMiddleLevel.Value) + // {//中层 + // if (ModelState.ContainsKey(nameof(model.FrontTeacher))) + // { + // ModelState.Remove(nameof(model.FrontTeacher)); + // } + // } + // else + // {//一线教师 + // if (ModelState.ContainsKey(nameof(model.Position))) + // { + // ModelState.Remove(nameof(model.Position)); + // } + // if (ModelState.ContainsKey(nameof(model.PositionStart))) + // { + // ModelState.Remove(nameof(model.PositionStart)); + // } + // } + // } + // } + // else + // {//在编不在岗 + // if (ModelState.ContainsKey(nameof(model.Position))) + // { + // ModelState.Remove(nameof(model.Position)); + // } + // if (ModelState.ContainsKey(nameof(model.PositionStart))) + // { + // ModelState.Remove(nameof(model.PositionStart)); + // } + // if (ModelState.ContainsKey(nameof(model.FrontTeacher))) + // { + // ModelState.Remove(nameof(model.FrontTeacher)); + // } + // } + // } + // } + //} + + //private void ExportInternal(ISheet sheet, QueryTeacherModel model) + //{ + // var style = NPOIHelper.CreateStyle(sheet, fontName: "宋体", fontSize: 11); + + // var headers = NPOIHelper.CreateHader(sheet, typeof(EditTeacherModel), model.Headers); + // var list = this.Query(model) + // .ToList() + // .Select(o => + // { + // var m = o.Teacher != null ? o.Teacher.To() : new EditTeacherModel { Id = Guid.Empty }; + // if (o.Teacher != null) + // { + // this.EntityToModel(o.Teacher, m); + // } + // m.UserId = o.Id; + // m.Organ = o.Organ.Name; + // m.RealName = o.RealName; + // return m; + // }) + // .ToList(); + // var rowIndex = 0; + // var colIndex = -1; + // for (int i = 0; i < list.Count; i++) + // { + // var teacher = list[i]; + // var rowNumber = i + 1; + // rowIndex = i + 4; + // colIndex = -1; + // var row = sheet.CreateRow(rowIndex); + // teacher.DisplayOrder = rowNumber; + + // row.Export("A", headers, () => teacher.DisplayOrder)?.SetCell(++colIndex, style, teacher.DisplayOrder); + // row.Export("B", headers, () => teacher.Organ)?.SetCell(++colIndex, style, teacher.Organ); + // row.Export("C", headers, () => teacher.RealName)?.SetCell(++colIndex, style, teacher.RealName); + // row.Export("D", headers, () => teacher.Sex)?.SetCell(++colIndex, style, teacher.Sex); + // row.Export("E", headers, () => teacher.Birthday)?.SetCell(++colIndex, style, teacher.Birthday); + // row.Export("F", headers, () => teacher.Age)?.SetCell(++colIndex, style, teacher.Age); + // row.Export("G", headers, () => teacher.Nation)?.SetCell(++colIndex, style, teacher.Nation); + // row.Export("H", headers, () => teacher.NativePlace)?.SetCell(++colIndex, style, teacher.NativePlace); + // row.Export("I", headers, () => teacher.PhoneNumber)?.SetCell(++colIndex, style, teacher.PhoneNumber); + // row.Export("J", headers, () => teacher.IdNumber)?.SetCell(++colIndex, style, teacher.IdNumber); + // row.Export("K", headers, () => teacher.JobStart)?.SetCell(++colIndex, style, teacher.JobStart); + // row.Export("L", headers, () => teacher.TeachDate)?.SetCell(++colIndex, style, teacher.TeachDate.HasValue); + // row.Export("M", headers, () => teacher.CurrentJobStart)?.SetCell(++colIndex, style, teacher.CurrentJobStart); + // row.Export("N", headers, () => teacher.JobAgeYear)?.SetCell(++colIndex, style, teacher.JobAgeYear, teacher.JobStart.HasValue); + // row.Export("O", headers, () => teacher.JobAgeMonth)?.SetCell(++colIndex, style, teacher.JobAgeMonth, teacher.JobStart.HasValue); + // row.Export("P", headers, () => teacher.Politics)?.SetCell(++colIndex, style, teacher.Politics); + // row.Export("Q", headers, () => teacher.JoinPartyDate)?.SetCell(++colIndex, style, teacher.JoinPartyDate); + // row.Export("R", headers, () => teacher.MaxTitle)?.SetCell(++colIndex, style, teacher.MaxTitle); + // row.Export("S", headers, () => teacher.MaxTitleStart)?.SetCell(++colIndex, style, teacher.MaxTitleStart); + // row.Export("T", headers, () => teacher.JobAsMaxTitleDate)?.SetCell(++colIndex, style, teacher.JobAsMaxTitleDate, teacher.IsJobAsMaxTitle.HasValue && teacher.IsJobAsMaxTitle.Value); + // row.Export("U", headers, () => teacher.JobAsNotMaxTitleReason)?.SetCell(++colIndex, style, teacher.JobAsNotMaxTitleReason, teacher.IsJobAsMaxTitle.HasValue && !teacher.IsJobAsMaxTitle.Value); + // row.Export("V", headers, () => teacher.NotMaxTitle)?.SetCell(++colIndex, style, teacher.NotMaxTitle, teacher.IsJobAsMaxTitle.HasValue && !teacher.IsJobAsMaxTitle.Value); + // row.Export("W", headers, () => teacher.NotMaxTitleStart)?.SetCell(++colIndex, style, teacher.NotMaxTitleStart, teacher.IsJobAsMaxTitle.HasValue && !teacher.IsJobAsMaxTitle.Value); + // row.Export("X", headers, () => teacher.JobAsNotMaxTitleDate)?.SetCell(++colIndex, style, teacher.JobAsNotMaxTitleDate, teacher.IsJobAsMaxTitle.HasValue && !teacher.IsJobAsMaxTitle.Value); + // row.Export("Y", headers, () => teacher.PostType)?.SetCell(++colIndex, style, teacher.PostType); + // row.Export("Z", headers, () => teacher.PostGrade)?.SetCell(++colIndex, style, teacher.PostGrade); + + // row.Export("AA", headers, () => teacher.CurrentPostGradeStart)?.SetCell(++colIndex, style, teacher.CurrentPostGradeStart); + // row.Export("AB", headers, () => teacher.EducationGrade)?.SetCell(++colIndex, style, teacher.EducationGrade); + // row.Export("AC", headers, () => teacher.EducationGradeDate)?.SetCell(++colIndex, style, teacher.EducationGradeDate, !string.IsNullOrEmpty(teacher.EducationGrade)); + // row.Export("AD", headers, () => teacher.FullTimeSchool)?.SetCell(++colIndex, style, teacher.FullTimeSchool); + // row.Export("AE", headers, () => teacher.FullTimeSchoolType)?.SetCell(++colIndex, style, teacher.FullTimeSchoolType); + // row.Export("AF", headers, () => teacher.FullTimeSchoolMajor)?.SetCell(++colIndex, style, teacher.FullTimeSchoolMajor); + // row.Export("AG", headers, () => teacher.FullTimeSchoolEducation)?.SetCell(++colIndex, style, teacher.FullTimeSchoolEducation); + // row.Export("AH", headers, () => teacher.FullTimeSchoolEducationDate)?.SetCell(++colIndex, style, teacher.FullTimeSchoolEducationDate); + // row.Export("AI", headers, () => teacher.JobTimeSchool)?.SetCell(++colIndex, style, teacher.JobTimeSchool); + // row.Export("AJ", headers, () => teacher.JobTimeSchoolType)?.SetCell(++colIndex, style, teacher.JobTimeSchoolType); + // row.Export("AK", headers, () => teacher.JobTimeSchoolMajor)?.SetCell(++colIndex, style, teacher.JobTimeSchoolMajor); + // row.Export("AL", headers, () => teacher.JobTimeSchoolEducation)?.SetCell(++colIndex, style, teacher.JobTimeSchoolEducation); + // row.Export("AM", headers, () => teacher.JobTimeSchoolEducationDate)?.SetCell(++colIndex, style, teacher.JobTimeSchoolEducationDate); + // row.Export("AN", headers, () => teacher.MaxEducation)?.SetCell(++colIndex, style, teacher.MaxEducation); + // row.Export("AO", headers, () => teacher.MaxDegree)?.SetCell(++colIndex, style, teacher.MaxDegree); + // row.Export("AP", headers, () => teacher.IsClassTeacher)?.SetCell(++colIndex, style, teacher.IsClassTeacher ? "是" : "否"); + // row.Export("AQ", headers, () => teacher.MainTeachPeriod)?.SetCell(++colIndex, style, teacher.MainTeachPeriod); + // row.Export("AR", headers, () => teacher.MainTeachSubject)?.SetCell(++colIndex, style, teacher.MainTeachSubject); + // row.Export("AS", headers, () => teacher.MainTeachGrade)?.SetCell(++colIndex, style, teacher.MainTeachGrade); + // row.Export("AT", headers, () => teacher.OtherTeachPeriod)?.SetCell(++colIndex, style, teacher.OtherTeachPeriod); + // row.Export("AU", headers, () => teacher.OtherTeachSubject)?.SetCell(++colIndex, style, teacher.OtherTeachSubject); + // row.Export("AV", headers, () => teacher.Position)?.SetCell(++colIndex, style, teacher.Position, teacher.HasPosition.HasValue && teacher.HasPosition.Value && teacher.IsMiddleLevel.HasValue && teacher.IsMiddleLevel.Value); + // row.Export("AW", headers, () => teacher.PositionStart)?.SetCell(++colIndex, style, teacher.PositionStart, teacher.HasPosition.HasValue && teacher.HasPosition.Value && teacher.IsMiddleLevel.HasValue && teacher.IsMiddleLevel.Value); + // row.Export("AX", headers, () => teacher.FrontTeacher)?.SetCell(++colIndex, style, teacher.FrontTeacher, teacher.HasPosition.HasValue && teacher.HasPosition.Value && teacher.IsMiddleLevel.HasValue && !teacher.IsMiddleLevel.Value); + // row.Export("AY", headers, () => teacher.NotOnPostReason)?.SetCell(++colIndex, style, teacher.NotOnPostReason, teacher.HasPosition.HasValue && !teacher.HasPosition.Value); + // row.Export("AZ", headers, () => teacher.NotOnPostReasonDate)?.SetCell(++colIndex, style, teacher.NotOnPostReasonDate, teacher.HasPosition.HasValue && !teacher.HasPosition.Value); + + // row.Export("BA", headers, () => teacher.TeacherCardType)?.SetCell(++colIndex, style, teacher.TeacherCardType); + // row.Export("BB", headers, () => teacher.TeacherCardSubject)?.SetCell(++colIndex, style, teacher.TeacherCardSubject); + // row.Export("BC", headers, () => teacher.TeacherCardLangLevel)?.SetCell(++colIndex, style, teacher.TeacherCardLangLevel); + // row.Export("BD", headers, () => teacher.CurrentAddressArea)?.SetCell(++colIndex, style, teacher.CurrentAddressArea); + // row.Export("BE", headers, () => teacher.CurrentAddressStreat)?.SetCell(++colIndex, style, teacher.CurrentAddressStreat); + // row.Export("BF", headers, () => teacher.Comment)?.SetCell(++colIndex, style, ""); + // } + // NPOIHelper.SetColWidth(3, sheet); + //} + + //private void EntityToModel(Teacher entity, EditTeacherModel model) + //{ + // if (entity != null) + // { + // if (!string.IsNullOrEmpty(entity.IdNumber)) + // { + // var value = entity.IdNumber.Length == 15 ? $"19{entity.IdNumber.Substring(6, 6)}" : entity.IdNumber.Substring(6, 8); + // var birthday = DateTime.ParseExact(value, "yyyyMMdd", CultureInfo.InvariantCulture); + // model.Age = DateTime.Now.Year - birthday.Year; + // } + // if (entity.JobStart.HasValue) + // { + // model.JobAgeYear = DateTime.Now.Year - entity.JobStart.Value.Year; + // model.JobAgeMonth = model.JobAgeYear * 12 + Math.Abs((entity.JobStart.Value.Month - DateTime.Now.Month)); + // } + // } + //} + + //private void ToEditModel(Teacher entity, EditTeacherModel model) + //{ + // ViewData.SelectList(o => model.RequestEditStatus, () => this.GetRequestEditStatus(model.RequestEditStatus)); + // ViewData.SelectList(o => model.CheckStatus, () => this.GetCheckStatus(model.CheckStatus)); + // ViewData.SelectList(o => model.UserType, () => this.GetUserType(model.UserType)); + // ViewData.SelectList(o => model.Sex, () => this.GetSex(model.Sex)); + // ViewData.SelectList(o => model.Nation, () => this.GetNation(model.Nation)); + // ViewData.SelectList(o => model.Politics, () => this.GetPolitics(model.Politics)); + // ViewData.SelectList(o => model.MaxTitle, () => this.GetTitle(model.MaxTitle)); + // ViewData.SelectList(o => model.NotMaxTitle, () => this.GetTitle(model.NotMaxTitle)); + // ViewData.SelectList(o => model.PostType, () => this.GetPost(model.PostType)); + // ViewData.SelectList(o => model.PostGrade, () => this.GetPostGrade(model.PostGrade)); + // ViewData.SelectList(o => model.EducationGrade, () => this.GetEducationGrade(model.EducationGrade)); + // ViewData.SelectList(o => model.FullTimeSchoolType, () => this.GetFullTimeSchoolType(model.FullTimeSchoolType)); + // ViewData.SelectList(o => model.FullTimeSchoolEducation, () => this.GetEducation(model.FullTimeSchoolEducation)); + // ViewData.SelectList(o => model.JobTimeSchoolType, () => this.GetFullTimeSchoolType(model.JobTimeSchoolType)); + // ViewData.SelectList(o => model.JobTimeSchoolEducation, () => this.GetEducation(model.JobTimeSchoolEducation)); + // ViewData.SelectList(o => model.MaxEducation, () => this.GetEducation(model.MaxEducation)); + // ViewData.SelectList(o => model.MaxDegree, () => this.GetDegree(model.MaxDegree)); + // ViewData.SelectList(o => model.MainTeachPeriod, () => this.GetTeachPeriod(model.MainTeachPeriod)); + // ViewData.SelectList(o => model.MainTeachSubject, () => this.GetTeachSubject(model.MainTeachSubject)); + // ViewData.SelectList(o => model.MainTeachGrade, () => this.GetTeachGrade(model.MainTeachGrade)); + // ViewData.SelectList(o => model.OtherTeachPeriod, () => this.GetTeachPeriod(model.OtherTeachPeriod)); + // ViewData.SelectList(o => model.OtherTeachSubject, () => this.GetTeachSubject(model.OtherTeachSubject)); + // ViewData.SelectList(o => model.Position, () => this.GetPosition(model.Position)); + // ViewData.SelectList(o => model.FrontTeacher, () => this.GetFrontTeacher(model.FrontTeacher)); + // ViewData.SelectList(o => model.NotOnPostReason, () => this.GetNotOnPostReason(model.NotOnPostReason)); + // ViewData.SelectList(o => model.TeacherCardType, () => this.GetTeacherCardType(model.TeacherCardType)); + // ViewData.SelectList(o => model.TeacherCardLangLevel, () => this.GetLangLevel(model.TeacherCardLangLevel)); + // ViewData.SelectList(o => model.CurrentAddressArea, () => this.GetAddressArea(model.CurrentAddressArea)); + //} + + //private SelectList GetRequestEditStatus(string selected) + //{ + // return new string[] { + // "未申请", + // "已申请", + // }.ToSelectList(selected); + //} + + //private SelectList GetCheckStatus(string selected) + //{ + // return new string[] { + // "未提交", + // "待审核", + // "审核失败", + // "审核成功", + // }.ToSelectList(selected); + //} + + //private SelectList GetUserType(string selected) + //{ + // return new string[] { + // "在编教师", + // "区聘教师", + // "校聘教师", + // }.ToSelectList(selected); + //} + + //private SelectList GetSex(string selected) + //{ + // return new string[] { + // "男", + // "女", + // }.ToSelectList(selected); + //} + + //private SelectList GetNation(string selected) + //{ + // return new string[] { + // "汉族", + // "蒙古族", + // "回族", + // "藏族", + // "维吾尔族", + // "苗族", + // "彝族", + // "壮族", + // "布依族", + // "朝鲜族", + // "满族", + // "侗族", + // "瑶族", + // "白族", + // "土家族", + // "哈尼族", + // "哈萨克族", + // "傣族", + // "黎族", + // "傈僳族", + // "佤族", + // "畲族", + // "高山族", + // "拉祜族", + // "水族", + // "东乡族", + // "纳西族", + // "景颇族", + // "柯尔克孜族", + // "土族", + // "达斡尔族", + // "仫佬族", + // "羌族", + // "布朗族", + // "撒拉族", + // "毛难族", + // "仡佬族", + // "锡伯族", + // "阿昌族", + // "普米族", + // "塔吉克族", + // "怒族", + // "乌孜别克族", + // "俄罗斯族", + // "鄂温克族", + // "崩龙族", + // "保安族", + // "裕固族", + // "京族", + // "塔塔尔族", + // "独龙族", + // "鄂伦春族", + // "赫哲族", + // "门巴族", + // "珞巴族", + // "基诺族", + // "无" + // }.ToSelectList(selected); + //} + + //private SelectList GetPolitics(string selected) + //{ + // return new string[] { + // "中共党员", + // "中共预备党员", + // "共青团员", + // "群众", + // "民革会员", + // "民盟盟员", + // "民建会员", + // "民进会员", + // "农工党党员", + // "致公党党员", + // "九三学社社员", + // "台盟盟员", + // "其他民主党派", + // }.ToSelectList(selected); + //} + + //private SelectList GetTitle(string selected) + //{ + // return new string[] { + // "正高级教师", + // "高级教师", + // "一级教师", + // "二级教师", + // "未评", + // "工勤", + // }.ToSelectList(selected); + //} + + //private SelectList GetPost(string selected) + //{ + // return new string[] { + // "专技岗位", + // "管理岗位", + // "工勤岗位", + // }.ToSelectList(selected); + //} + + //private SelectList GetPostGrade(string selected) + //{ + // return new string[] { + // "四级", + // "五级", + // "六级", + // "七级", + // "八级", + // "九级", + // "十级", + // "十一级", + // "十二级", + // }.ToSelectList(selected); + //} + + //private SelectList GetEducationGrade(string selected) + //{ + // return new string[] { + // "专技十一级", + // "专技十二级", + // }.ToSelectList(selected); + //} + + //private SelectList GetFullTimeSchoolType(string selected) + //{ + // return new string[] { + // "师范院校师范专业", + // "师范院校非师范专业", + // "非师范院校师范专业", + // "非师范院校非师范专业", + // }.ToSelectList(selected); + //} + + //private SelectList GetEducation(string selected) + //{ + // return new string[] { + // "研究生博士教育", + // "研究生硕士教育", + // "大学本科教育", + // "大学专科教育", + // "中等专业教育", + // "普通高级中学教育", + // "初级中学教育", + // "小学教育", + // "其他", + // }.ToSelectList(selected); + //} + + //private SelectList GetDegree(string selected) + //{ + // return new string[] { + // "学士学位", + // "硕士学位", + // "博士学位", + // }.ToSelectList(selected); + //} + + //private SelectList GetTeachPeriod(string selected) + //{ + // return new string[] { + // "学前教育", + // "小学", + // "普通初中", + // "无", + // }.ToSelectList(selected); + //} + + //private SelectList GetTeachSubject(string selected) + //{ + // return new string[] { + // "语文", + // "数学", + // "英语", + // "音乐", + // "体育", + // "美术", + // "科学", + // "书法", + // "信息技术", + // "政治", + // "历史", + // "地理", + // "物理", + // "化学", + // "生物", + // "幼教全科", + // "心理健康", + // "综合实践课", + // "无", + // }.ToSelectList(selected); + //} + + //private SelectList GetTeachGrade(string selected) + //{ + // return new string[] { + // "九年级", + // "八年级", + // "七年级", + // "六年级", + // "五年级", + // "四年级", + // "三年级", + // "二年级", + // "一年级", + // "幼儿园大班", + // "幼儿园中班", + // "幼儿园小班", + // "无", + // }.ToSelectList(selected); + //} + + //private SelectList GetPosition(string selected) + //{ + // return new string[] { + // "校长", + // "副校长", + // "党支部副书记", + // "办公室主任", + // "办公室副主任", + // "教导处主任", + // "教导处副主任", + // "德育主任", + // "团支部书记", + // "大队辅导员", + // "工会主席", + // "总务主任", + // "总务副主任", + // "无", + // }.ToSelectList(selected); + //} + + //private SelectList GetFrontTeacher(string selected) + //{ + // return new string[] { + // "一线教师", + // "无", + // }.ToSelectList(selected); + //} + + //private SelectList GetNotOnPostReason(string selected) + //{ + // return new string[] { + // "长期病假", + // "产假", + // "挂职", + // "支教", + // }.ToSelectList(selected); + //} + + //private SelectList GetTeacherCardType(string selected) + //{ + // return new string[] { + // "幼儿园教师资格", + // "小学教师资格", + // "初级中学教师资格", + // "高级中学教师资格", + // "中等职业学校教师资格", + // "中等职业学校实习指导教师资格", + // "高等学校教师资格", + // "无", + // }.ToSelectList(selected); + //} + + //private SelectList GetLangLevel(string selected) + //{ + // return new string[] { + // "一级甲等", + // "一级乙等", + // "二级甲等", + // "二级乙等", + // "三级甲等", + // "无", + // }.ToSelectList(selected); + //} + + //private SelectList GetAddressArea(string selected) + //{ + // return new string[] { + // "城中区", + // "城北区", + // "城西区", + // "城东区", + // }.ToSelectList(selected); + //} + + //private IActionResult Result(object model) + //{ + // if (this.IsJsonRequest()) + // { + // return Json(new + // { + // schema = this.GetJsonSchema(), + // model, + // errors = ModelState.Where(o => o.Value.ValidationState == ModelValidationState.Invalid), + // data = ViewData + // }, new JsonSerializerSettings { ContractResolver = new CamelCasePropertyNamesContractResolver(), ReferenceLoopHandling = ReferenceLoopHandling.Ignore }); + // } + // return View(model); + //} + private List GetItems(string category) + { + return this._directoryRepo.ReadOnlyTable() + .Where(o => o.Code == "1") + .Where(o => o.Category == category) + .OrderBy(o => o.Order) .ToList(); - var rowIndex = 0; - var colIndex = -1; - for (int i = 0; i < list.Count; i++) - { - var teacher = list[i]; - var rowNumber = i + 1; - rowIndex = i + 4; - colIndex = -1; - var row = sheet.CreateRow(rowIndex); - teacher.DisplayOrder = rowNumber; - - row.Export("A", headers, () => teacher.DisplayOrder)?.SetCell(++colIndex, style, teacher.DisplayOrder); - row.Export("B", headers, () => teacher.Organ)?.SetCell(++colIndex, style, teacher.Organ); - row.Export("C", headers, () => teacher.RealName)?.SetCell(++colIndex, style, teacher.RealName); - row.Export("D", headers, () => teacher.Sex)?.SetCell(++colIndex, style, teacher.Sex); - row.Export("E", headers, () => teacher.Birthday)?.SetCell(++colIndex, style, teacher.Birthday); - row.Export("F", headers, () => teacher.Age)?.SetCell(++colIndex, style, teacher.Age); - row.Export("G", headers, () => teacher.Nation)?.SetCell(++colIndex, style, teacher.Nation); - row.Export("H", headers, () => teacher.NativePlace)?.SetCell(++colIndex, style, teacher.NativePlace); - row.Export("I", headers, () => teacher.PhoneNumber)?.SetCell(++colIndex, style, teacher.PhoneNumber); - row.Export("J", headers, () => teacher.IdNumber)?.SetCell(++colIndex, style, teacher.IdNumber); - row.Export("K", headers, () => teacher.JobStart)?.SetCell(++colIndex, style, teacher.JobStart); - row.Export("L", headers, () => teacher.TeachDate)?.SetCell(++colIndex, style, teacher.TeachDate.HasValue); - row.Export("M", headers, () => teacher.CurrentJobStart)?.SetCell(++colIndex, style, teacher.CurrentJobStart); - row.Export("N", headers, () => teacher.JobAgeYear)?.SetCell(++colIndex, style, teacher.JobAgeYear, teacher.JobStart.HasValue); - row.Export("O", headers, () => teacher.JobAgeMonth)?.SetCell(++colIndex, style, teacher.JobAgeMonth, teacher.JobStart.HasValue); - row.Export("P", headers, () => teacher.Politics)?.SetCell(++colIndex, style, teacher.Politics); - row.Export("Q", headers, () => teacher.JoinPartyDate)?.SetCell(++colIndex, style, teacher.JoinPartyDate); - row.Export("R", headers, () => teacher.MaxTitle)?.SetCell(++colIndex, style, teacher.MaxTitle); - row.Export("S", headers, () => teacher.MaxTitleStart)?.SetCell(++colIndex, style, teacher.MaxTitleStart); - row.Export("T", headers, () => teacher.JobAsMaxTitleDate)?.SetCell(++colIndex, style, teacher.JobAsMaxTitleDate, teacher.IsJobAsMaxTitle.HasValue && teacher.IsJobAsMaxTitle.Value); - row.Export("U", headers, () => teacher.JobAsNotMaxTitleReason)?.SetCell(++colIndex, style, teacher.JobAsNotMaxTitleReason, teacher.IsJobAsMaxTitle.HasValue && !teacher.IsJobAsMaxTitle.Value); - row.Export("V", headers, () => teacher.NotMaxTitle)?.SetCell(++colIndex, style, teacher.NotMaxTitle, teacher.IsJobAsMaxTitle.HasValue && !teacher.IsJobAsMaxTitle.Value); - row.Export("W", headers, () => teacher.NotMaxTitleStart)?.SetCell(++colIndex, style, teacher.NotMaxTitleStart, teacher.IsJobAsMaxTitle.HasValue && !teacher.IsJobAsMaxTitle.Value); - row.Export("X", headers, () => teacher.JobAsNotMaxTitleDate)?.SetCell(++colIndex, style, teacher.JobAsNotMaxTitleDate, teacher.IsJobAsMaxTitle.HasValue && !teacher.IsJobAsMaxTitle.Value); - row.Export("Y", headers, () => teacher.PostType)?.SetCell(++colIndex, style, teacher.PostType); - row.Export("Z", headers, () => teacher.PostGrade)?.SetCell(++colIndex, style, teacher.PostGrade); - - row.Export("AA", headers, () => teacher.CurrentPostGradeStart)?.SetCell(++colIndex, style, teacher.CurrentPostGradeStart); - row.Export("AB", headers, () => teacher.EducationGrade)?.SetCell(++colIndex, style, teacher.EducationGrade); - row.Export("AC", headers, () => teacher.EducationGradeDate)?.SetCell(++colIndex, style, teacher.EducationGradeDate, !string.IsNullOrEmpty(teacher.EducationGrade)); - row.Export("AD", headers, () => teacher.FullTimeSchool)?.SetCell(++colIndex, style, teacher.FullTimeSchool); - row.Export("AE", headers, () => teacher.FullTimeSchoolType)?.SetCell(++colIndex, style, teacher.FullTimeSchoolType); - row.Export("AF", headers, () => teacher.FullTimeSchoolMajor)?.SetCell(++colIndex, style, teacher.FullTimeSchoolMajor); - row.Export("AG", headers, () => teacher.FullTimeSchoolEducation)?.SetCell(++colIndex, style, teacher.FullTimeSchoolEducation); - row.Export("AH", headers, () => teacher.FullTimeSchoolEducationDate)?.SetCell(++colIndex, style, teacher.FullTimeSchoolEducationDate); - row.Export("AI", headers, () => teacher.JobTimeSchool)?.SetCell(++colIndex, style, teacher.JobTimeSchool); - row.Export("AJ", headers, () => teacher.JobTimeSchoolType)?.SetCell(++colIndex, style, teacher.JobTimeSchoolType); - row.Export("AK", headers, () => teacher.JobTimeSchoolMajor)?.SetCell(++colIndex, style, teacher.JobTimeSchoolMajor); - row.Export("AL", headers, () => teacher.JobTimeSchoolEducation)?.SetCell(++colIndex, style, teacher.JobTimeSchoolEducation); - row.Export("AM", headers, () => teacher.JobTimeSchoolEducationDate)?.SetCell(++colIndex, style, teacher.JobTimeSchoolEducationDate); - row.Export("AN", headers, () => teacher.MaxEducation)?.SetCell(++colIndex, style, teacher.MaxEducation); - row.Export("AO", headers, () => teacher.MaxDegree)?.SetCell(++colIndex, style, teacher.MaxDegree); - row.Export("AP", headers, () => teacher.IsClassTeacher)?.SetCell(++colIndex, style, teacher.IsClassTeacher ? "是" : "否"); - row.Export("AQ", headers, () => teacher.MainTeachPeriod)?.SetCell(++colIndex, style, teacher.MainTeachPeriod); - row.Export("AR", headers, () => teacher.MainTeachSubject)?.SetCell(++colIndex, style, teacher.MainTeachSubject); - row.Export("AS", headers, () => teacher.MainTeachGrade)?.SetCell(++colIndex, style, teacher.MainTeachGrade); - row.Export("AT", headers, () => teacher.OtherTeachPeriod)?.SetCell(++colIndex, style, teacher.OtherTeachPeriod); - row.Export("AU", headers, () => teacher.OtherTeachSubject)?.SetCell(++colIndex, style, teacher.OtherTeachSubject); - row.Export("AV", headers, () => teacher.Position)?.SetCell(++colIndex, style, teacher.Position, teacher.HasPosition.HasValue && teacher.HasPosition.Value && teacher.IsMiddleLevel.HasValue && teacher.IsMiddleLevel.Value); - row.Export("AW", headers, () => teacher.PositionStart)?.SetCell(++colIndex, style, teacher.PositionStart, teacher.HasPosition.HasValue && teacher.HasPosition.Value && teacher.IsMiddleLevel.HasValue && teacher.IsMiddleLevel.Value); - row.Export("AX", headers, () => teacher.FrontTeacher)?.SetCell(++colIndex, style, teacher.FrontTeacher, teacher.HasPosition.HasValue && teacher.HasPosition.Value && teacher.IsMiddleLevel.HasValue && !teacher.IsMiddleLevel.Value); - row.Export("AY", headers, () => teacher.NotOnPostReason)?.SetCell(++colIndex, style, teacher.NotOnPostReason, teacher.HasPosition.HasValue && !teacher.HasPosition.Value); - row.Export("AZ", headers, () => teacher.NotOnPostReasonDate)?.SetCell(++colIndex, style, teacher.NotOnPostReasonDate, teacher.HasPosition.HasValue && !teacher.HasPosition.Value); - - - row.Export("BA", headers, () => teacher.TeacherCardType)?.SetCell(++colIndex, style, teacher.TeacherCardType); - row.Export("BB", headers, () => teacher.TeacherCardSubject)?.SetCell(++colIndex, style, teacher.TeacherCardSubject); - row.Export("BC", headers, () => teacher.TeacherCardLangLevel)?.SetCell(++colIndex, style, teacher.TeacherCardLangLevel); - row.Export("BD", headers, () => teacher.CurrentAddressArea)?.SetCell(++colIndex, style, teacher.CurrentAddressArea); - row.Export("BE", headers, () => teacher.CurrentAddressStreat)?.SetCell(++colIndex, style, teacher.CurrentAddressStreat); - row.Export("BF", headers, () => teacher.Comment)?.SetCell(++colIndex, style, ""); - } - NPOIHelper.SetColWidth(3, sheet); - } - - private void EntityToModel(Teacher entity, EditTeacherModel model) - { - if (entity != null) - { - if (!string.IsNullOrEmpty(entity.IdNumber)) - { - var value = entity.IdNumber.Length == 15 ? $"19{entity.IdNumber.Substring(6, 6)}" : entity.IdNumber.Substring(6, 8); - var birthday = DateTime.ParseExact(value, "yyyyMMdd", CultureInfo.InvariantCulture); - model.Age = DateTime.Now.Year - birthday.Year; - } - if (entity.JobStart.HasValue) - { - model.JobAgeYear = DateTime.Now.Year - entity.JobStart.Value.Year; - model.JobAgeMonth = model.JobAgeYear * 12 + Math.Abs((entity.JobStart.Value.Month - DateTime.Now.Month)); - } - } - } - - private void ToEditModel(Teacher entity, EditTeacherModel model) - { - ViewData.SelectList(o => model.RequestEditStatus, () => this.GetRequestEditStatus(model.RequestEditStatus)); - ViewData.SelectList(o => model.CheckStatus, () => this.GetCheckStatus(model.CheckStatus)); - ViewData.SelectList(o => model.UserType, () => this.GetUserType(model.UserType)); - ViewData.SelectList(o => model.Sex, () => this.GetSex(model.Sex)); - ViewData.SelectList(o => model.Nation, () => this.GetNation(model.Nation)); - ViewData.SelectList(o => model.Politics, () => this.GetPolitics(model.Politics)); - ViewData.SelectList(o => model.MaxTitle, () => this.GetTitle(model.MaxTitle)); - ViewData.SelectList(o => model.NotMaxTitle, () => this.GetTitle(model.NotMaxTitle)); - ViewData.SelectList(o => model.PostType, () => this.GetPost(model.PostType)); - ViewData.SelectList(o => model.PostGrade, () => this.GetPostGrade(model.PostGrade)); - ViewData.SelectList(o => model.EducationGrade, () => this.GetEducationGrade(model.EducationGrade)); - ViewData.SelectList(o => model.FullTimeSchoolType, () => this.GetFullTimeSchoolType(model.FullTimeSchoolType)); - ViewData.SelectList(o => model.FullTimeSchoolEducation, () => this.GetEducation(model.FullTimeSchoolEducation)); - ViewData.SelectList(o => model.JobTimeSchoolType, () => this.GetFullTimeSchoolType(model.JobTimeSchoolType)); - ViewData.SelectList(o => model.JobTimeSchoolEducation, () => this.GetEducation(model.JobTimeSchoolEducation)); - ViewData.SelectList(o => model.MaxEducation, () => this.GetEducation(model.MaxEducation)); - ViewData.SelectList(o => model.MaxDegree, () => this.GetDegree(model.MaxDegree)); - ViewData.SelectList(o => model.MainTeachPeriod, () => this.GetTeachPeriod(model.MainTeachPeriod)); - ViewData.SelectList(o => model.MainTeachSubject, () => this.GetTeachSubject(model.MainTeachSubject)); - ViewData.SelectList(o => model.MainTeachGrade, () => this.GetTeachGrade(model.MainTeachGrade)); - ViewData.SelectList(o => model.OtherTeachPeriod, () => this.GetTeachPeriod(model.OtherTeachPeriod)); - ViewData.SelectList(o => model.OtherTeachSubject, () => this.GetTeachSubject(model.OtherTeachSubject)); - ViewData.SelectList(o => model.Position, () => this.GetPosition(model.Position)); - ViewData.SelectList(o => model.FrontTeacher, () => this.GetFrontTeacher(model.FrontTeacher)); - ViewData.SelectList(o => model.NotOnPostReason, () => this.GetNotOnPostReason(model.NotOnPostReason)); - ViewData.SelectList(o => model.TeacherCardType, () => this.GetTeacherCardType(model.TeacherCardType)); - ViewData.SelectList(o => model.TeacherCardLangLevel, () => this.GetLangLevel(model.TeacherCardLangLevel)); - ViewData.SelectList(o => model.CurrentAddressArea, () => this.GetAddressArea(model.CurrentAddressArea)); - } - - private SelectList GetRequestEditStatus(string selected) - { - return new string[] { - "未申请", - "已申请", - }.ToSelectList(selected); - } - - private SelectList GetCheckStatus(string selected) - { - return new string[] { - "未提交", - "待审核", - "审核失败", - "审核成功", - }.ToSelectList(selected); - } - - private SelectList GetUserType(string selected) - { - return new string[] { - "在编教师", - "区聘教师", - "校聘教师", - }.ToSelectList(selected); - } - - private SelectList GetSex(string selected) - { - return new string[] { - "男", - "女", - }.ToSelectList(selected); - } - - private SelectList GetNation(string selected) - { - return new string[] { - "汉族", - "蒙古族", - "回族", - "藏族", - "维吾尔族", - "苗族", - "彝族", - "壮族", - "布依族", - "朝鲜族", - "满族", - "侗族", - "瑶族", - "白族", - "土家族", - "哈尼族", - "哈萨克族", - "傣族", - "黎族", - "傈僳族", - "佤族", - "畲族", - "高山族", - "拉祜族", - "水族", - "东乡族", - "纳西族", - "景颇族", - "柯尔克孜族", - "土族", - "达斡尔族", - "仫佬族", - "羌族", - "布朗族", - "撒拉族", - "毛难族", - "仡佬族", - "锡伯族", - "阿昌族", - "普米族", - "塔吉克族", - "怒族", - "乌孜别克族", - "俄罗斯族", - "鄂温克族", - "崩龙族", - "保安族", - "裕固族", - "京族", - "塔塔尔族", - "独龙族", - "鄂伦春族", - "赫哲族", - "门巴族", - "珞巴族", - "基诺族", - "无" - }.ToSelectList(selected); - } - - private SelectList GetPolitics(string selected) - { - return new string[] { - "中共党员", - "中共预备党员", - "共青团员", - "群众", - "民革会员", - "民盟盟员", - "民建会员", - "民进会员", - "农工党党员", - "致公党党员", - "九三学社社员", - "台盟盟员", - "其他民主党派", - }.ToSelectList(selected); - } - - private SelectList GetTitle(string selected) - { - return new string[] { - "正高级教师", - "高级教师", - "一级教师", - "二级教师", - "未评", - "工勤", - }.ToSelectList(selected); - } - - private SelectList GetPost(string selected) - { - return new string[] { - "专技岗位", - "管理岗位", - "工勤岗位", - }.ToSelectList(selected); - } - - private SelectList GetPostGrade(string selected) - { - return new string[] { - "四级", - "五级", - "六级", - "七级", - "八级", - "九级", - "十级", - "十一级", - "十二级", - }.ToSelectList(selected); - } - - private SelectList GetEducationGrade(string selected) - { - return new string[] { - "专技十一级", - "专技十二级", - }.ToSelectList(selected); - } - - private SelectList GetFullTimeSchoolType(string selected) - { - return new string[] { - "师范院校师范专业", - "师范院校非师范专业", - "非师范院校师范专业", - "非师范院校非师范专业", - }.ToSelectList(selected); - } - - private SelectList GetEducation(string selected) - { - return new string[] { - "研究生博士教育", - "研究生硕士教育", - "大学本科教育", - "大学专科教育", - "中等专业教育", - "普通高级中学教育", - "初级中学教育", - "小学教育", - "其他", - }.ToSelectList(selected); - } - - private SelectList GetDegree(string selected) - { - return new string[] { - "学士学位", - "硕士学位", - "博士学位", - }.ToSelectList(selected); - } - - private SelectList GetTeachPeriod(string selected) - { - return new string[] { - "学前教育", - "小学", - "普通初中", - "无", - }.ToSelectList(selected); - } - - private SelectList GetTeachSubject(string selected) - { - return new string[] { - "语文", - "数学", - "英语", - "音乐", - "体育", - "美术", - "科学", - "书法", - "信息技术", - "政治", - "历史", - "地理", - "物理", - "化学", - "生物", - "幼教全科", - "心理健康", - "综合实践课", - "无", - }.ToSelectList(selected); - } - - private SelectList GetTeachGrade(string selected) - { - return new string[] { - "九年级", - "八年级", - "七年级", - "六年级", - "五年级", - "四年级", - "三年级", - "二年级", - "一年级", - "幼儿园大班", - "幼儿园中班", - "幼儿园小班", - "无", - }.ToSelectList(selected); - } - - private SelectList GetPosition(string selected) - { - return new string[] { - "校长", - "副校长", - "党支部副书记", - "办公室主任", - "办公室副主任", - "教导处主任", - "教导处副主任", - "德育主任", - "团支部书记", - "大队辅导员", - "工会主席", - "总务主任", - "总务副主任", - "无", - }.ToSelectList(selected); - } - - private SelectList GetFrontTeacher(string selected) - { - return new string[] { - "一线教师", - "无", - }.ToSelectList(selected); - } - - private SelectList GetNotOnPostReason(string selected) - { - return new string[] { - "长期病假", - "产假", - "挂职", - "支教", - }.ToSelectList(selected); - } - - private SelectList GetTeacherCardType(string selected) - { - return new string[] { - "幼儿园教师资格", - "小学教师资格", - "初级中学教师资格", - "高级中学教师资格", - "中等职业学校教师资格", - "中等职业学校实习指导教师资格", - "高等学校教师资格", - "无", - }.ToSelectList(selected); - } - - private SelectList GetLangLevel(string selected) - { - return new string[] { - "一级甲等", - "一级乙等", - "二级甲等", - "二级乙等", - "三级甲等", - "无", - }.ToSelectList(selected); - } - - private SelectList GetAddressArea(string selected) - { - return new string[] { - "城中区", - "城北区", - "城西区", - "城东区", - }.ToSelectList(selected); - } - - private IActionResult Result(object model) - { - if (this.IsJsonRequest()) - { - return Json(new - { - schema = this.GetJsonSchema(), - model, - errors = ModelState.Where(o => o.Value.ValidationState == ModelValidationState.Invalid), - data = ViewData - }, new JsonSerializerSettings { ContractResolver = new CamelCasePropertyNamesContractResolver(), ReferenceLoopHandling = ReferenceLoopHandling.Ignore }); - } - return View(model); } } -} +} \ No newline at end of file diff --git a/labs/Teacher/TeacherExt/Data/TeacherDbContext.cs b/labs/Teacher/TeacherExt/Data/TeacherDbContext.cs index 3db28fb0..1588dc35 100644 --- a/labs/Teacher/TeacherExt/Data/TeacherDbContext.cs +++ b/labs/Teacher/TeacherExt/Data/TeacherDbContext.cs @@ -1,4 +1,5 @@ using Microsoft.EntityFrameworkCore; +using System; using TeacherExt.Entities; namespace TeacherExt.Data @@ -9,35 +10,107 @@ namespace TeacherExt.Data { } + protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) + { + optionsBuilder.LogTo(message => Console.WriteLine(message)) + .EnableDetailedErrors() + .EnableSensitiveDataLogging(); + } + protected override void OnModelCreating(ModelBuilder modelBuilder) { - base.OnModelCreating(modelBuilder); - modelBuilder.Entity().HasKey(o => o.Id); - modelBuilder.Entity().Property(o => o.Name).IsRequired(); - modelBuilder.Entity().Property(o => o.Number).IsRequired(); - modelBuilder.Entity().HasIndex(o => o.Number).IsUnique(); - modelBuilder.Entity().HasOne(o => o.Parent).WithMany(o => o.Children).HasForeignKey(o=>o.ParentId).OnDelete(DeleteBehavior.SetNull); - modelBuilder.Entity().HasKey(o => o.Id); - modelBuilder.Entity().Property(o => o.UserName).IsRequired(); - modelBuilder.Entity().HasIndex(o => o.UserName).IsUnique(); - modelBuilder.Entity().HasOne(o => o.Organ).WithMany(o => o.Users).HasForeignKey(o => o.OrganId).OnDelete(DeleteBehavior.Cascade); - modelBuilder.Entity().HasKey(o => o.Id); - modelBuilder.Entity().Property(o => o.Name).IsRequired(); - modelBuilder.Entity().HasIndex(o => o.Name).IsUnique(); - modelBuilder.Entity().HasOne(o => o.User).WithMany(o => o.UserRoles).HasForeignKey(o => o.UserId).OnDelete(DeleteBehavior.Cascade); - modelBuilder.Entity().HasOne(o => o.Role).WithMany(o => o.UserRoles).HasForeignKey(o => o.RoleId).OnDelete(DeleteBehavior.Cascade); - modelBuilder.Entity().HasIndex(o => new { o.UserId, o.RoleId }).IsUnique(); - modelBuilder.Entity().HasKey(o => o.Id); - modelBuilder.Entity().HasKey(o => o.Id); - modelBuilder.Entity().Property(o => o.Id).ValueGeneratedNever(); - modelBuilder.Entity().HasIndex(o => o.Id); - modelBuilder.Entity().Property(o => o.Id).ValueGeneratedNever(); - modelBuilder.Entity().HasOne(o => o.Teacher).WithOne(o => o.Info).HasForeignKey(o=>o.TeacherId).OnDelete(DeleteBehavior.Cascade); - modelBuilder.Entity().HasKey(o => o.Id); - modelBuilder.Entity().Property(o => o.Id).ValueGeneratedNever(); - modelBuilder.Entity().HasOne(o => o.Teacher).WithOne(o => o.Prop).HasForeignKey(o => o.TeacherId).OnDelete(DeleteBehavior.Cascade); - // - modelBuilder.Entity().HasOne(o => o.User).WithOne(o => o.Teacher).HasForeignKey(o => o.UserId).OnDelete(DeleteBehavior.Cascade); + //t_sys_dic_item + modelBuilder.Entity().ToTable("t_sys_dic_item"); + modelBuilder.Entity().HasKey(o => o.Id); + modelBuilder.Entity().Property(o => o.Id).HasColumnName("DIC_ITEM_ID").ValueGeneratedOnAdd(); + modelBuilder.Entity().Property(o => o.Code).HasColumnName("CODE"); + modelBuilder.Entity().Property(o => o.Detail).HasColumnName("DETAIL"); + modelBuilder.Entity().Property(o => o.Remark).HasColumnName("REMARK"); + modelBuilder.Entity().Property(o => o.IsUsed).HasColumnName("B_USE").HasConversion(o => o ? 1 : 0, o => o == 1); + modelBuilder.Entity().Property(o => o.Category).HasColumnName("KIND"); + modelBuilder.Entity().Property(o => o.Order).HasColumnName("SORT"); + + //t_base_organization + modelBuilder.Entity().ToTable("t_base_organization"); + modelBuilder.Entity().HasKey(o => o.Id); + modelBuilder.Entity().Property(o => o.Id).HasColumnName("ORG_ID").ValueGeneratedOnAdd(); + modelBuilder.Entity().Property(o => o.Name).HasColumnName("ORG_NAME"); + modelBuilder.Entity().Property(o => o.IsUsed).HasColumnName("B_USE").HasConversion(o => o ? 1 : 0, o => o == 1); + + //t_base_person + modelBuilder.Entity().ToTable("t_base_person"); + modelBuilder.Entity().HasKey(o => o.Id); + modelBuilder.Entity().Property(o => o.Id).HasColumnName("PERSON_ID").ValueGeneratedOnAdd(); + modelBuilder.Entity().Property(o => o.RealName).HasColumnName("PERSON_NAME").IsRequired(); + modelBuilder.Entity().Property(o => o.IsUsed).HasColumnName("B_USE").HasConversion(o => o ? 1 : 0, o => o == 1); + modelBuilder.Entity().Property(o => o.BureauId).HasColumnName("BUREAU_ID"); + modelBuilder.Entity().Property(o => o.OrganId).HasColumnName("ORG_ID"); + modelBuilder.Entity().Property(o => o.Sex).HasColumnName("XB_NAME"); + modelBuilder.Entity().Property(o => o.IdentityId).HasColumnName("IDENTITY_ID"); + modelBuilder.Entity().Property(o => o.IdentityNumber).HasColumnName("IDENTITY_NUM"); + modelBuilder.Entity().Property(o => o.PhoneNumber).HasColumnName("TEL"); + modelBuilder.Entity().Property(o => o.Politics).HasColumnName("political_status"); + modelBuilder.Entity().Property(o => o.AreaId).HasColumnName("DISTRICT_ID"); + modelBuilder.Entity().Property(o => o.CreateAt).HasColumnName("create_time"); + modelBuilder.Entity().Property(o => o.Nation).HasColumnName("NATION"); + modelBuilder.Entity().Property(o => o.NativePlace).HasColumnName("placeofbirth"); + + //t_base_person_title + modelBuilder.Entity().ToTable("t_base_person_title"); + modelBuilder.Entity().HasKey(o => o.Id); + modelBuilder.Entity().Property(o => o.Id).HasColumnName("title_id").ValueGeneratedOnAdd(); + modelBuilder.Entity().Property(o => o.IsUsed).HasColumnName("B_USE").HasConversion(o => o ? 1 : 0, o => o == 1); + + //t_base_person_record + modelBuilder.Entity().ToTable("t_base_person_record"); + modelBuilder.Entity().HasKey(o => o.Id); + modelBuilder.Entity().Property(o => o.Id).HasColumnName("record_id").ValueGeneratedOnAdd(); + modelBuilder.Entity().Property(o => o.IsUsed).HasColumnName("B_USE").HasConversion(o => o ? 1 : 0, o => o == 1); + modelBuilder.Entity().Property(o => o.PersonId).HasColumnName("person_id"); + modelBuilder.Entity().Property(o => o.Type).HasColumnName("record_type"); + + //t_base_person_rewards + modelBuilder.Entity().ToTable("t_base_person_rewards"); + modelBuilder.Entity().HasKey(o => o.Id); + modelBuilder.Entity().Property(o => o.Id).HasColumnName("rewards_id").ValueGeneratedOnAdd(); + modelBuilder.Entity().Property(o => o.IsUsed).HasColumnName("B_USE").HasConversion(o => o ? 1 : 0, o => o == 1); + modelBuilder.Entity().Property(o => o.PersonId).HasColumnName("person_id"); + modelBuilder.Entity().Property(o => o.Type).HasColumnName("rewards_type"); + + //t_sys_person_role + modelBuilder.Entity().ToTable("t_sys_person_role"); + modelBuilder.Entity().HasKey(o => o.Id); + modelBuilder.Entity().Property(o => o.Id).HasColumnName("ID").ValueGeneratedOnAdd(); + modelBuilder.Entity().Property(o => o.RoleId).HasColumnName("ROLE_ID"); + modelBuilder.Entity().Property(o => o.PersonId).HasColumnName("person_id"); + modelBuilder.Entity().Property(o => o.IdentityId).HasColumnName("IDENTITY_ID"); + + //modelBuilder.Entity().HasKey(o => o.Id); + //modelBuilder.Entity().Property(o => o.Name).IsRequired(); + //modelBuilder.Entity().Property(o => o.Number).IsRequired(); + //modelBuilder.Entity().HasIndex(o => o.Number).IsUnique(); + //modelBuilder.Entity().HasOne(o => o.Parent).WithMany(o => o.Children).HasForeignKey(o=>o.ParentId).OnDelete(DeleteBehavior.SetNull); + //modelBuilder.Entity().HasKey(o => o.Id); + //modelBuilder.Entity().Property(o => o.UserName).IsRequired(); + //modelBuilder.Entity().HasIndex(o => o.UserName).IsUnique(); + //modelBuilder.Entity().HasOne(o => o.Organ).WithMany(o => o.Users).HasForeignKey(o => o.OrganId).OnDelete(DeleteBehavior.Cascade); + //modelBuilder.Entity().HasKey(o => o.Id); + //modelBuilder.Entity().Property(o => o.Name).IsRequired(); + //modelBuilder.Entity().HasIndex(o => o.Name).IsUnique(); + //modelBuilder.Entity().HasOne(o => o.User).WithMany(o => o.UserRoles).HasForeignKey(o => o.UserId).OnDelete(DeleteBehavior.Cascade); + //modelBuilder.Entity().HasOne(o => o.Role).WithMany(o => o.UserRoles).HasForeignKey(o => o.RoleId).OnDelete(DeleteBehavior.Cascade); + //modelBuilder.Entity().HasIndex(o => new { o.UserId, o.RoleId }).IsUnique(); + //modelBuilder.Entity().HasKey(o => o.Id); + //modelBuilder.Entity().HasKey(o => o.Id); + //modelBuilder.Entity().Property(o => o.Id).ValueGeneratedNever(); + //modelBuilder.Entity().HasIndex(o => o.Id); + //modelBuilder.Entity().Property(o => o.Id).ValueGeneratedNever(); + //modelBuilder.Entity().HasOne(o => o.Teacher).WithOne(o => o.Info).HasForeignKey(o=>o.TeacherId).OnDelete(DeleteBehavior.Cascade); + //modelBuilder.Entity().HasKey(o => o.Id); + //modelBuilder.Entity().Property(o => o.Id).ValueGeneratedNever(); + //modelBuilder.Entity().HasOne(o => o.Teacher).WithOne(o => o.Prop).HasForeignKey(o => o.TeacherId).OnDelete(DeleteBehavior.Cascade); + //// + //modelBuilder.Entity().HasOne(o => o.User).WithOne(o => o.Teacher).HasForeignKey(o => o.UserId).OnDelete(DeleteBehavior.Cascade); } } -} +} \ No newline at end of file diff --git a/labs/Teacher/TeacherExt/Entities/DictionaryItem.cs b/labs/Teacher/TeacherExt/Entities/DictionaryItem.cs new file mode 100644 index 00000000..4bb65182 --- /dev/null +++ b/labs/Teacher/TeacherExt/Entities/DictionaryItem.cs @@ -0,0 +1,13 @@ +namespace TeacherExt.Entities +{ + public class DictionaryItem + { + public int Id { get; set; } + public string Code { get; set; } + public string Detail { get; set; } + public string Remark { get; set; } + public bool IsUsed { get; set; } + public string Category { get; set; } + public long Order { get; set; } + } +} \ No newline at end of file diff --git a/labs/Teacher/TeacherExt/Entities/Organization.cs b/labs/Teacher/TeacherExt/Entities/Organization.cs new file mode 100644 index 00000000..2bfea729 --- /dev/null +++ b/labs/Teacher/TeacherExt/Entities/Organization.cs @@ -0,0 +1,13 @@ +using System.ComponentModel.DataAnnotations.Schema; + +namespace TeacherExt.Entities +{ + public class Organization + { + [DatabaseGenerated(DatabaseGeneratedOption.Identity)] + public int Id { get; set; } + + public string Name { get; set; } + public bool IsUsed { get; set; } + } +} \ No newline at end of file diff --git a/labs/Teacher/TeacherExt/Entities/Person.cs b/labs/Teacher/TeacherExt/Entities/Person.cs new file mode 100644 index 00000000..c439a9b1 --- /dev/null +++ b/labs/Teacher/TeacherExt/Entities/Person.cs @@ -0,0 +1,35 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; + +namespace TeacherExt.Entities +{ + public class Person + { + public int Id { get; set; } + public bool IsUsed { get; set; } + public string RealName { get; set; } + + public string Sex { get; set; } + /// + /// 学校/教育局ID + /// + public int BureauId { get; set; } + public int OrganId { get; set; } + /// + /// 身份ID,对应t_sys_identity表的主键IDENTITY_ID + /// + public int IdentityId { get; set; } + public string IdentityNumber { get; set; } + public string PhoneNumber { get; set; } + public int Politics { get; set; } + /// + /// 区(县)ID + /// + public int AreaId { get; set; } + public DateTime CreateAt { get; set; } + public string Nation { get; set; } + public string NativePlace { get; set; } + } +} diff --git a/labs/Teacher/TeacherExt/Entities/PersonRecord.cs b/labs/Teacher/TeacherExt/Entities/PersonRecord.cs new file mode 100644 index 00000000..0d6eb34c --- /dev/null +++ b/labs/Teacher/TeacherExt/Entities/PersonRecord.cs @@ -0,0 +1,10 @@ +namespace TeacherExt.Entities +{ + public class PersonRecord + { + public int Id { get; set; } + public bool IsUsed { get; set; } + public int PersonId { get; set; } + public int Type { get; set; } + } +} \ No newline at end of file diff --git a/labs/Teacher/TeacherExt/Entities/PersonRewards.cs b/labs/Teacher/TeacherExt/Entities/PersonRewards.cs new file mode 100644 index 00000000..6258f920 --- /dev/null +++ b/labs/Teacher/TeacherExt/Entities/PersonRewards.cs @@ -0,0 +1,16 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; + +namespace TeacherExt.Entities +{ + public class PersonRewards + { + public int Id { get; set; } + public bool IsUsed { get; set; } + public int PersonId { get; set; } + public int Type { get; set; } + + } +} diff --git a/labs/Teacher/TeacherExt/Entities/PersonRole.cs b/labs/Teacher/TeacherExt/Entities/PersonRole.cs new file mode 100644 index 00000000..7a3fcb3d --- /dev/null +++ b/labs/Teacher/TeacherExt/Entities/PersonRole.cs @@ -0,0 +1,11 @@ +namespace TeacherExt.Entities +{ + public class PersonRole + { + public int Id { get; set; } + public bool IsUsed { get; set; } + public int PersonId { get; set; } + public int IdentityId { get; set; } + public int RoleId { get; set; } + } +} \ No newline at end of file diff --git a/labs/Teacher/TeacherExt/Entities/PersonTitle.cs b/labs/Teacher/TeacherExt/Entities/PersonTitle.cs new file mode 100644 index 00000000..687d1379 --- /dev/null +++ b/labs/Teacher/TeacherExt/Entities/PersonTitle.cs @@ -0,0 +1,8 @@ +namespace TeacherExt.Entities +{ + public class PersonTitle + { + public int Id { get; set; } + public bool IsUsed { get; set; } + } +} \ No newline at end of file diff --git a/labs/Teacher/TeacherExt/Models/ListItem.cs b/labs/Teacher/TeacherExt/Models/ListItem.cs new file mode 100644 index 00000000..4d783434 --- /dev/null +++ b/labs/Teacher/TeacherExt/Models/ListItem.cs @@ -0,0 +1,19 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; + +namespace TeacherExt.Models +{ + public class ListItem + { + public string person_name { get; internal set; } + public string sex { get; internal set; } + public string nation { get; internal set; } + public string nation_name { get; internal set; } + public string placeofbirth { get; internal set; } + public string org_name { get; internal set; } + public int person_id { get; internal set; } + public string bureau_name { get; internal set; } + } +} diff --git a/labs/Teacher/TeacherExt/Startup.cs b/labs/Teacher/TeacherExt/Startup.cs index ae51de3a..f5ff3b38 100644 --- a/labs/Teacher/TeacherExt/Startup.cs +++ b/labs/Teacher/TeacherExt/Startup.cs @@ -52,15 +52,19 @@ namespace TeacherExt .AllowCredentials(); })); var database = Configuration.GetValue("database"); - if (database=="sqlite") - { - services.AddDbContext(o => o.UseSqlite(Configuration.GetConnectionString("sqlite"))); - } - else - { - var connstr = Configuration.GetConnectionString("mysql"); - services.AddDbContext(o => o.UseMySql(connstr, ServerVersion.AutoDetect(connstr))); - } + //if (database=="sqlite") + //{ + // services.AddDbContext(o => o.UseSqlite(Configuration.GetConnectionString("sqlite"))); + //} + //else + //{ + // var connstr = Configuration.GetConnectionString("mysql"); + // services.AddDbContext(o => o.UseMySql(connstr, ServerVersion.AutoDetect(connstr))); + //} + services.AddTransient(); + var connstr = Configuration.GetConnectionString("mariyadb"); + services.AddDbContext(o => o.UseMySql(connstr, ServerVersion.AutoDetect(connstr))); + services.AddDistributedMemoryCache(); services.AddScoped(); services.AddTransient(typeof(IRepository<>), typeof(EfRepository<>)); @@ -174,120 +178,120 @@ namespace TeacherExt name: "default", pattern: "{controller=Home}/{action=Index}/{id?}"); }); - using var scope = app.ApplicationServices.CreateScope(); - var encryptionService = scope.ServiceProvider.GetRequiredService(); - var salt = "111111"; - var password = encryptionService.CreatePasswordHash(salt, salt); - using var db = scope.ServiceProvider.GetRequiredService(); - if (db.Database.EnsureCreated()) - { - db.Set().Add(new Role { Name = "局管理员" }); - db.Set().Add(new Role { Name = "校管理员" }); - db.Set().Add(new Role { Name = "教职工" }); - db.SaveChanges(); + //using var scope = app.ApplicationServices.CreateScope(); + //var encryptionService = scope.ServiceProvider.GetRequiredService(); + //var salt = "111111"; + //var password = encryptionService.CreatePasswordHash(salt, salt); + //using var db = scope.ServiceProvider.GetRequiredService(); + //if (db.Database.EnsureCreated()) + //{ + // db.Set().Add(new Role { Name = "局管理员" }); + // db.Set().Add(new Role { Name = "校管理员" }); + // db.Set().Add(new Role { Name = "教职工" }); + // db.SaveChanges(); - db.Set().Add(new Organ - { - Name = "教育局", - Number = "jiaoyuju", - Children = new List { - new Organ - { - Name="学校1", - Number="xuexiao1" - }, - new Organ - { - Name="学校2", - Number="xuexiao2" - } - } - }); - db.SaveChanges(); + // db.Set().Add(new Organ + // { + // Name = "教育局", + // Number = "jiaoyuju", + // Children = new List { + // new Organ + // { + // Name="学校1", + // Number="xuexiao1" + // }, + // new Organ + // { + // Name="学校2", + // Number="xuexiao2" + // } + // } + // }); + // db.SaveChanges(); - db.Set().Add(new User - { - UserName = "admin", - PasswordSalt = salt, - PasswordHash = password, - RealName = "教育局管理员", - OrganId = db.Set().FirstOrDefault(o => o.Number == "jiaoyuju").Id, - UserRoles = new List { new UserRole { RoleId = db.Set().FirstOrDefault(o => o.Name == "局管理员").Id } } - }); - db.Set().Add(new User - { - UserName = "admin1", - PasswordSalt = salt, - PasswordHash = password, - RealName = "校管理员1", - OrganId = db.Set().FirstOrDefault(o => o.Number == "xuexiao1").Id, - UserRoles = new List { new UserRole { RoleId = db.Set().FirstOrDefault(o => o.Name == "校管理员").Id } } - }); - db.Set().Add(new User - { - UserName = "xiaozhang1", - PasswordSalt = salt, - PasswordHash = password, - RealName = "校长1", - OrganId = db.Set().FirstOrDefault(o => o.Number == "xuexiao1").Id, - UserRoles = new List { new UserRole { RoleId = db.Set().FirstOrDefault(o => o.Name == "教职工").Id } } - }); - db.Set().Add(new User - { - UserName = "laoshi1", - PasswordSalt = salt, - PasswordHash = password, - RealName = "老师1", - OrganId = db.Set().FirstOrDefault(o => o.Number == "xuexiao1").Id, - UserRoles = new List { new UserRole { RoleId = db.Set().FirstOrDefault(o => o.Name == "教职工").Id } } - }); - db.Set().Add(new User - { - UserName = "zhigong1", - PasswordSalt = salt, - PasswordHash = password, - RealName = "职工1", - OrganId = db.Set().FirstOrDefault(o => o.Number == "xuexiao1").Id, - UserRoles = new List { new UserRole { RoleId = db.Set().FirstOrDefault(o => o.Name == "教职工").Id } } - }); - db.Set().Add(new User - { - UserName = "admin2", - PasswordSalt = salt, - PasswordHash = password, - RealName = "校管理员2", - OrganId = db.Set().FirstOrDefault(o => o.Number == "xuexiao2").Id, - UserRoles = new List { new UserRole { RoleId = db.Set().FirstOrDefault(o => o.Name == "校管理员").Id } } - }); - db.Set().Add(new User - { - UserName = "xiaozhang2", - PasswordSalt = salt, - PasswordHash = password, - RealName = "校长2", - OrganId = db.Set().FirstOrDefault(o => o.Number == "xuexiao2").Id, - UserRoles = new List { new UserRole { RoleId = db.Set().FirstOrDefault(o => o.Name == "教职工").Id } } - }); - db.Set().Add(new User - { - UserName = "laoshi2", - PasswordSalt = salt, - PasswordHash = password, - RealName = "老师2", - OrganId = db.Set().FirstOrDefault(o => o.Number == "xuexiao2").Id, - UserRoles = new List { new UserRole { RoleId = db.Set().FirstOrDefault(o => o.Name == "教职工").Id } } - }); - db.Set().Add(new User - { - UserName = "zhigong2", - PasswordSalt = salt, - PasswordHash = password, - RealName = "职工2", - OrganId = db.Set().FirstOrDefault(o => o.Number == "xuexiao2").Id, - UserRoles = new List { new UserRole { RoleId = db.Set().FirstOrDefault(o => o.Name == "教职工").Id } } - }); - db.SaveChanges(); - } + // db.Set().Add(new User + // { + // UserName = "admin", + // PasswordSalt = salt, + // PasswordHash = password, + // RealName = "教育局管理员", + // OrganId = db.Set().FirstOrDefault(o => o.Number == "jiaoyuju").Id, + // UserRoles = new List { new UserRole { RoleId = db.Set().FirstOrDefault(o => o.Name == "局管理员").Id } } + // }); + // db.Set().Add(new User + // { + // UserName = "admin1", + // PasswordSalt = salt, + // PasswordHash = password, + // RealName = "校管理员1", + // OrganId = db.Set().FirstOrDefault(o => o.Number == "xuexiao1").Id, + // UserRoles = new List { new UserRole { RoleId = db.Set().FirstOrDefault(o => o.Name == "校管理员").Id } } + // }); + // db.Set().Add(new User + // { + // UserName = "xiaozhang1", + // PasswordSalt = salt, + // PasswordHash = password, + // RealName = "校长1", + // OrganId = db.Set().FirstOrDefault(o => o.Number == "xuexiao1").Id, + // UserRoles = new List { new UserRole { RoleId = db.Set().FirstOrDefault(o => o.Name == "教职工").Id } } + // }); + // db.Set().Add(new User + // { + // UserName = "laoshi1", + // PasswordSalt = salt, + // PasswordHash = password, + // RealName = "老师1", + // OrganId = db.Set().FirstOrDefault(o => o.Number == "xuexiao1").Id, + // UserRoles = new List { new UserRole { RoleId = db.Set().FirstOrDefault(o => o.Name == "教职工").Id } } + // }); + // db.Set().Add(new User + // { + // UserName = "zhigong1", + // PasswordSalt = salt, + // PasswordHash = password, + // RealName = "职工1", + // OrganId = db.Set().FirstOrDefault(o => o.Number == "xuexiao1").Id, + // UserRoles = new List { new UserRole { RoleId = db.Set().FirstOrDefault(o => o.Name == "教职工").Id } } + // }); + // db.Set().Add(new User + // { + // UserName = "admin2", + // PasswordSalt = salt, + // PasswordHash = password, + // RealName = "校管理员2", + // OrganId = db.Set().FirstOrDefault(o => o.Number == "xuexiao2").Id, + // UserRoles = new List { new UserRole { RoleId = db.Set().FirstOrDefault(o => o.Name == "校管理员").Id } } + // }); + // db.Set().Add(new User + // { + // UserName = "xiaozhang2", + // PasswordSalt = salt, + // PasswordHash = password, + // RealName = "校长2", + // OrganId = db.Set().FirstOrDefault(o => o.Number == "xuexiao2").Id, + // UserRoles = new List { new UserRole { RoleId = db.Set().FirstOrDefault(o => o.Name == "教职工").Id } } + // }); + // db.Set().Add(new User + // { + // UserName = "laoshi2", + // PasswordSalt = salt, + // PasswordHash = password, + // RealName = "老师2", + // OrganId = db.Set().FirstOrDefault(o => o.Number == "xuexiao2").Id, + // UserRoles = new List { new UserRole { RoleId = db.Set().FirstOrDefault(o => o.Name == "教职工").Id } } + // }); + // db.Set().Add(new User + // { + // UserName = "zhigong2", + // PasswordSalt = salt, + // PasswordHash = password, + // RealName = "职工2", + // OrganId = db.Set().FirstOrDefault(o => o.Number == "xuexiao2").Id, + // UserRoles = new List { new UserRole { RoleId = db.Set().FirstOrDefault(o => o.Name == "教职工").Id } } + // }); + // db.SaveChanges(); + //} } } } diff --git a/labs/Teacher/TeacherExt/TeacherExt.csproj b/labs/Teacher/TeacherExt/TeacherExt.csproj index d3d470de..79fa57ca 100644 --- a/labs/Teacher/TeacherExt/TeacherExt.csproj +++ b/labs/Teacher/TeacherExt/TeacherExt.csproj @@ -9,7 +9,6 @@ - diff --git a/labs/Teacher/TeacherExt/appsettings.json b/labs/Teacher/TeacherExt/appsettings.json index 7b334fd5..7afdf17d 100644 --- a/labs/Teacher/TeacherExt/appsettings.json +++ b/labs/Teacher/TeacherExt/appsettings.json @@ -13,8 +13,10 @@ "issuer": "111111111111111111111111", "audience": "111111111111111111111111" }, + "password": "DsideaL4r5t6y7u!@#", "ConnectionStrings": { "sqlite": "Data Source=data.db", - "mysql": "Server=localhost;Port=3306;Database=teacher;Uid=root;Pwd=aA123456!;" + "mysql": "Server=localhost;Port=3306;Database=teacher;Uid=root;Pwd=aA123456!;", + "mariyadb": "Server=10.10.15.13;Port=22066;Database=dsideal_db;Uid=root;Pwd=DsideaL147258369;CharSet=utf8mb4;" } } diff --git a/labs/Teacher/account.txt b/labs/Teacher/account.txt index 892a1f75..8f849bc7 100644 --- a/labs/Teacher/account.txt +++ b/labs/Teacher/account.txt @@ -7,8 +7,9 @@ vpn下载&服务器地址:https://125.72.102.82:44331 用户名:靳发全 密码:DSideal!@#1234 +Web:10.10.15.12 root DsIdeal@123 数据库: -10.10.14.199:22066 root DsideaL147258369 +10.10.15.13:22066 root DsideaL147258369 接口:getPersonInfoList,获取用户列表,数据库表:t_base_person 接口:getEduUnitList,获取机构列表,数据库表:t_base_organization,area_id 是上级机构id