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;
}
}
}
}