using Admin.NET.Application.Service; using Admin.NET.Core.Service; using Furion; using Furion.DatabaseAccessor; using Furion.DataEncryption; using Furion.DependencyInjection; using Furion.DynamicApiController; using Furion.FriendlyException; using Mapster; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Components.Forms; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Configuration; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Linq; using System.Linq.Dynamic.Core; using System.Threading.Tasks; using static SKIT.FlurlHttpClient.Wechat.Api.Models.ShopCouponGetResponse.Types.Result.Types.Coupon.Types.CouponDetail.Types.Discount.Types.DiscountCondidtion.Types; namespace Admin.NET.Application { /// /// 学生表服务 /// [ApiDescriptionSettings("测评服务", Name = "SysOauthUser", Order = 100)] public class SysOauthUserService : IDynamicApiController, ITransient { private readonly SqlSugarRepository _sysOauthUserRep; private readonly SqlSugarRepository _busGradeRep; private readonly SqlSugarRepository _busStudyYearsRep; private readonly SqlSugarRepository _busClassInfoRep; private readonly SqlSugarRepository _busCustomMenusRep; private readonly SqlSugarRepository _sysDictDataRep; private readonly SysTenantService _tenantRep; private readonly IHttpContextAccessor _httpContextAccessor; private readonly IConfiguration _configuration; private readonly UserManager _userManager; public SysOauthUserService( SqlSugarRepository busGradeRep, SqlSugarRepository busStudyYearsRep, SqlSugarRepository busClassInfoRep, SqlSugarRepository sysOauthUserRep, SqlSugarRepository _buscustomMenus, SqlSugarRepository _dictdataRep, SysTenantService tenantrep, IHttpContextAccessor httpContextAccessor, IConfiguration configuration, UserManager userManager ) { _busGradeRep = busGradeRep; _busStudyYearsRep = busStudyYearsRep; _busClassInfoRep = busClassInfoRep; _sysOauthUserRep = sysOauthUserRep; _busCustomMenusRep = _buscustomMenus; _sysDictDataRep = _dictdataRep; _tenantRep = tenantrep; _httpContextAccessor = httpContextAccessor; _configuration = configuration; _userManager = userManager; } //[HttpGet] //[AllowAnonymous] //public async Task Callback([FromQuery] string servicetoken) //{ // var res = new LoginResponse(); // var userinfo = new StudentInfo(); // var headers = new System.Collections.Generic.Dictionary // { // { "Authorization", string.Format("Bearer {0}",servicetoken) } // }; // if (servicetoken == null) // { // throw Oops.Oh("token无效"); // } // string casdoorurl = _configuration["Casdoor:url"] + "/api/userinfo"; // var casdooruserinfo = await casdoorurl.SetHeaders(headers).GetAsAsync(); // //下面写正常逻辑 // // 判断是否正确 忽略全局过滤器 // var user = _sysOauthUserRep.AsQueryable() // .Where(u => u.UnionId == casdooruserinfo.sub && !u.IsDelete) // .FirstAsync(); // _ = user ?? throw Oops.Oh(ErrorCodeEnum.D1000); // var accessToken = JWTEncryption.Encrypt(new Dictionary // { // {ClaimConst.CLAINM_USERID, user.Id}, // {ClaimConst.TENANT_ID, user.TenantId}, // {ClaimConst.CLAINM_ACCOUNT, user.UserCode}, // {ClaimConst.CLAINM_NAME, user.NickName} // }); // userinfo.UserName = user.NickName; // userinfo.Gender = user.Gender == "1" ? "男" : "女"; // userinfo.UserId = user.Id; // userinfo.SchoolName = (await _tenantRep.GetTenant(new QueryTenantInput() { Id = user.TenantId.Value })).Name; // userinfo.StudyYears = (await _busStudyYearsRep.FirstOrDefaultAsync(s => s.Id == user.StudyYearsId)).Name; // userinfo.ClassName = (await _busClassInfoRep.FirstOrDefaultAsync(s => s.Id == user.ClassId)).Name; // userinfo.Province = "山东省"; // // 设置Swagger自动登录 // _httpContextAccessor.HttpContext.SigninToSwagger(accessToken); // // 生成刷新Token令牌 // var refreshToken = // JWTEncryption.GenerateRefreshToken(accessToken, App.GetOptions().ExpiredTime); // // 设置刷新Token令牌 // _httpContextAccessor.HttpContext.Response.Headers["x-access-token"] = refreshToken; // res.Data = accessToken; // res.TenantId = user.TenantId.Value; // res.studentInfo = userinfo; // return res; //} /// /// 获取客户端菜单 /// /// /// [HttpGet("GetCustomMenu")] public async Task GetCustomMenu([FromQuery] CustomMenuRequestDTO requestDTO) { var result = new CustomMenusDTO(); var query = await _busCustomMenusRep.AsQueryable().Where(e => e.TenantId == requestDTO.TenantId && e.IsDelete == false).ToListAsync(); var rootmenus = _sysDictDataRep.AsQueryable().Where(e => e.DictTypeId == 339895952609349 && e.IsDelete == false); result.rootMenus = rootmenus.OrderBy(c => c.OrderNo).Select(s => new RootMenu() { Code = s.Code, Name = s.Value, Url = s.Remark.Trim() }).ToList(); result.rootMenus.ForEach(c => { c.Type = c.Url.Contains("http") ? 1 : 0; c.customMenus = query.Where(e => e.RootId == long.Parse(c.Code)).Select(s => new CustomMenuItem() { RootId = s.RootId, MenuId = s.Id, MenuName = s.MenuName, Sort = s.Sort, Url = s.Url, Icon = s.Icon, Type = s.UrlType }).OrderBy(o => o.Sort).ToList(); }); return result; } ///// ///// 分页查询学生表 ///// ///// ///// //[HttpGet("page")] //public async Task> Page([FromQuery] SysOauthUserInput input) //{ // var pageResult = new PageResult(); // var studyyears = await _busStudyYearsRep.AsQueryable().Where(e => e.TenantId == CurrentUserInfo.TenantId).ToListAsync(); // var gradeinfo = await _busGradeRep.AsQueryable().Where(e => e.TenantId == CurrentUserInfo.TenantId).ToListAsync(); // var classinfo = await _busClassInfoRep.AsQueryable().Where(e => e.TenantId == CurrentUserInfo.TenantId).ToListAsync(); // var sysOauthUsers = await _sysOauthUserRep.AsQueryable() // .Where(!string.IsNullOrEmpty(input.NickName), u => u.NickName == input.NickName) // .Where(!string.IsNullOrEmpty(input.UserCode), u => u.UserCode == input.UserCode) // .Where(!string.IsNullOrEmpty(input.Gender), u => u.Gender == input.Gender) // .Where(!string.IsNullOrEmpty(input.Phone), u => u.Phone == input.Phone) // .Where(!string.IsNullOrEmpty(input.Remark), u => u.Remark == input.Remark) // .Where(input.GradeId > 0, u => u.GradeId == input.GradeId) // .Where(input.StudyYearsId > 0, u => u.StudyYearsId == input.StudyYearsId) // .Where(input.ClassId > 0, u => u.ClassId == input.ClassId) // //.Where(u => u.IsGraduation == input.IsGraduation) // .Where(!CurrentUserInfo.IsSuperAdmin, u => u.TenantId == CurrentUserInfo.TenantId) // .OrderBy(PageInputOrder.OrderBuilder(input)) // .ProjectToType() // .ToADPagedListAsync(input.PageNo, input.PageSize); // var customs = new List(); // sysOauthUsers.Rows.ToList().ForEach(s => // { // customs.Add(new CustomOutPut() // { // Avatar = s.Avatar, // Class = classinfo.FirstOrDefault(c => c.Id == s.ClassId).Name, // Grade = gradeinfo.FirstOrDefault(c => c.Id == s.GradeId).Name, // Id = s.Id, // Email = s.Email, // Gender = s.Gender, // IsGraduation = s.IsGraduation, // NickName = s.NickName, // Phone = s.Phone, // Remark = s.Remark, // Source = s.Source, // StudyYears = studyyears.FirstOrDefault(c => c.Id == s.StudyYearsId).Name, // TenantId = s.TenantId, // UserCode = s.UserCode // }); // }); // pageResult.Rows = customs; // pageResult.TotalPage = sysOauthUsers.TotalPage; // pageResult.PageNo = sysOauthUsers.PageNo; // pageResult.PageSize = sysOauthUsers.PageSize; // return pageResult; //} /// /// 增加学生表 /// /// /// //[HttpPost("add")] //public async Task Add(AddSysOauthUserInput input) //{ // var sysOauthUser = input.Adapt(); // await _sysOauthUserRep.InsertAsync(sysOauthUser); //} /// /// 删除学生表 /// /// /// //[HttpPost("delete")] //public async Task Delete(DeleteSysOauthUserInput input) //{ // var sysOauthUser = await _sysOauthUserRep.FirstOrDefaultAsync(u => u.Id == input.Id); // await _sysOauthUserRep.FakeDeleteAsync(sysOauthUser); //} /// /// 更新学生表 /// /// /// //[HttpPost("edit")] //public async Task Update(UpdateSysOauthUserInput input) //{ // var isExist = await _sysOauthUserRep.AnyAsync(u => u.Id == input.Id, false); // if (!isExist) throw Oops.Oh(ErrorCode.D3000); // var sysOauthUser = input.Adapt(); // await _sysOauthUserRep.UpdateAsync(sysOauthUser, ignoreNullValues: true); //} /// /// 获取学生表 /// /// /// //[HttpGet("detail")] //public async Task Get([FromQuery] QueryeSysOauthUserInput input) //{ // return (await _sysOauthUserRep.AsQueryable().FirstOrDefaultAsync(u => u.Id == input.Id)).Adapt(); //} /// /// 获取学生表列表 /// /// /// //[HttpGet("list")] //public async Task> List([FromQuery] SysOauthUserInput input) //{ // return await _sysOauthUserRep.AsQueryable().Where(e => e.TenantId == CurrentUserInfo.TenantId).ProjectToType().ToListAsync(); //} /// /// 获取BusGrade列表 /// /// [HttpGet("fkBusGrade")] public async Task FkBusGradeList() { var list = await _busGradeRep.AsQueryable().Where(e => e.TenantId == _userManager.TenantId).ToListAsync(); return list.Select(e => new { Code = e.Id, Name = e.Name }); } /// /// 获取BusStudyYears列表 /// /// [HttpGet("fkBusStudyYears")] public async Task FkBusStudyYearsList() { var list = await _busStudyYearsRep.AsQueryable().Where(e => e.TenantId == _userManager.TenantId).ToListAsync(); return list.Select(e => new { Code = e.Id, Name = e.Name }); } /// /// 获取BusClassInfo列表 /// /// [HttpGet("fkBusClassInfo")] public async Task FkBusClassInfoList() { var list = await _busClassInfoRep.AsQueryable().Where(e => e.TenantId == _userManager.TenantId).ToListAsync(); return list.Select(e => new { Code = e.Id, Name = e.Name }); } //[HttpPost] //[AllowAnonymous] //public async Task WebHookSync([FromBody] SyncCustomerDto sync) //{ // switch (sync.action) // { // case "signup": // break; // case "login": // case "logout": // case "update-user": // case "delete-user": // case "add-user": // if (!string.IsNullOrWhiteSpace(sync.extendedUser.id)) // { // var singleinfo = _sysOauthUserRep // .Where(u => u.Uuid == sync.extendedUser.id && !u.IsDeleted, false, true) // .FirstOrDefault(); // if (singleinfo != null) // { // if (!string.IsNullOrWhiteSpace(sync.extendedUser.displayName)) // { // singleinfo.NickName = sync.extendedUser.displayName; // } // if (!string.IsNullOrWhiteSpace(sync.extendedUser.phone)) // { // singleinfo.Phone = sync.extendedUser.phone; // } // if (!string.IsNullOrWhiteSpace(sync.extendedUser.email)) // { // singleinfo.Email = sync.extendedUser.email; // } // if (!string.IsNullOrWhiteSpace(sync.extendedUser.avatar)) // { // singleinfo.Avatar = sync.extendedUser.avatar; // } // await _sysOauthUserRep.UpdateAsync(singleinfo); // } // else // { // await Register(new OauthRegister() // { // OauthId = sync.extendedUser.id, // Phone = sync.extendedUser.phone, // NickName = sync.extendedUser.displayName, // Password = sync.extendedUser.password // }); // } // } // break; // } // return true; //} /// /// 学年是否存在 /// /// /// /// private long CheckStudyyears(string studyyearsname, List studyYears) { long TenantId = 1300000000001; if (studyYears.Where(c => c.Name.Equals(studyyearsname)).Any()) { return studyYears.FirstOrDefault(s => s.Name.Equals(studyyearsname)).Id; } else { var newmodel = new BusStudyYears() { Name = studyyearsname, TenantId = TenantId, StartDays = DateTime.Now, EndDays = DateTime.Now, Status = 0, CreateTime = DateTime.Now, CreateUserId = TenantId, CreateUserName = "系统" }; _busStudyYearsRep.InsertAsync(newmodel); return newmodel.Id; } } private long CheckGradeinfo(string gradename, List busGrades) { long TenantId = 1300000000001; if (busGrades.Where(c => c.Name.Equals(gradename)).Any()) { return busGrades.FirstOrDefault(c => c.Name.Equals(gradename)).Id; } else { var newmodel = new BusGrade() { Name = gradename, NumberCode = DateTime.Now.ToString("MMddHHssfff"), TenantId = TenantId, Sort = 100, CreateTime = DateTime.Now, CreateUserId = TenantId, CreateUserName = "系统" }; _busGradeRep.InsertAsync(newmodel); return newmodel.Id; } } private long CheckClassinfo(string classname, List busClasses) { long TenantId = 1300000000001; if (busClasses.Where(c => c.Name.Equals(classname)).Any()) { return _busClassInfoRep.AsQueryable().FirstAsync(c => c.Name.Equals(classname)).Id; } else { var newmodel = new BusClassInfo() { NumberCode = DateTime.Now.ToString("MMddHHssfff"), Name = classname, Sort = 100, TenantId = TenantId, CreateTime = DateTime.Now, CreateUserId = TenantId, CreateUserName = "系统" }; _busClassInfoRep.InsertAsync(newmodel); return newmodel.Id; } } } }