450 lines
19 KiB
C#
450 lines
19 KiB
C#
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
|
|
{
|
|
/// <summary>
|
|
/// 学生表服务
|
|
/// </summary>
|
|
[ApiDescriptionSettings("测评服务", Name = "SysOauthUser", Order = 100)]
|
|
|
|
public class SysOauthUserService : IDynamicApiController, ITransient
|
|
{
|
|
private readonly SqlSugarRepository<SysWechatUser> _sysOauthUserRep;
|
|
private readonly SqlSugarRepository<BusGrade> _busGradeRep;
|
|
private readonly SqlSugarRepository<BusStudyYears> _busStudyYearsRep;
|
|
private readonly SqlSugarRepository<BusClassInfo> _busClassInfoRep;
|
|
private readonly SqlSugarRepository<BusCustomMenus> _busCustomMenusRep;
|
|
private readonly SqlSugarRepository<SysDictData> _sysDictDataRep;
|
|
private readonly SysTenantService _tenantRep;
|
|
private readonly IHttpContextAccessor _httpContextAccessor;
|
|
private readonly IConfiguration _configuration;
|
|
private readonly UserManager _userManager;
|
|
public SysOauthUserService(
|
|
SqlSugarRepository<BusGrade> busGradeRep,
|
|
SqlSugarRepository<BusStudyYears> busStudyYearsRep,
|
|
SqlSugarRepository<BusClassInfo> busClassInfoRep,
|
|
SqlSugarRepository<SysWechatUser> sysOauthUserRep,
|
|
SqlSugarRepository<BusCustomMenus> _buscustomMenus,
|
|
SqlSugarRepository<SysDictData> _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<LoginResponse> Callback([FromQuery] string servicetoken)
|
|
//{
|
|
// var res = new LoginResponse();
|
|
// var userinfo = new StudentInfo();
|
|
// var headers = new System.Collections.Generic.Dictionary<string, string>
|
|
// {
|
|
// { "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<CasdoorUserInfoDto>();
|
|
// //下面写正常逻辑
|
|
// // 判断是否正确 忽略全局过滤器
|
|
// 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<string, object>
|
|
// {
|
|
// {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<RefreshTokenSettingOptions>().ExpiredTime);
|
|
// // 设置刷新Token令牌
|
|
// _httpContextAccessor.HttpContext.Response.Headers["x-access-token"] = refreshToken;
|
|
// res.Data = accessToken;
|
|
// res.TenantId = user.TenantId.Value;
|
|
// res.studentInfo = userinfo;
|
|
// return res;
|
|
//}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
/// 获取客户端菜单
|
|
/// </summary>
|
|
/// <param name="requestDTO"></param>
|
|
/// <returns></returns>
|
|
[HttpGet("GetCustomMenu")]
|
|
public async Task<CustomMenusDTO> 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;
|
|
}
|
|
|
|
///// <summary>
|
|
///// 分页查询学生表
|
|
///// </summary>
|
|
///// <param name="input"></param>
|
|
///// <returns></returns>
|
|
//[HttpGet("page")]
|
|
//public async Task<PageResult<CustomOutPut>> Page([FromQuery] SysOauthUserInput input)
|
|
//{
|
|
// var pageResult = new PageResult<CustomOutPut>();
|
|
// 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<SysOauthUserInput>(input))
|
|
// .ProjectToType<SysOauthUserOutput>()
|
|
// .ToADPagedListAsync(input.PageNo, input.PageSize);
|
|
|
|
// var customs = new List<CustomOutPut>();
|
|
// 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;
|
|
//}
|
|
|
|
/// <summary>
|
|
/// 增加学生表
|
|
/// </summary>
|
|
/// <param name="input"></param>
|
|
/// <returns></returns>
|
|
//[HttpPost("add")]
|
|
//public async Task Add(AddSysOauthUserInput input)
|
|
//{
|
|
// var sysOauthUser = input.Adapt<SysOauthUser>();
|
|
// await _sysOauthUserRep.InsertAsync(sysOauthUser);
|
|
//}
|
|
|
|
/// <summary>
|
|
/// 删除学生表
|
|
/// </summary>
|
|
/// <param name="input"></param>
|
|
/// <returns></returns>
|
|
//[HttpPost("delete")]
|
|
//public async Task Delete(DeleteSysOauthUserInput input)
|
|
//{
|
|
// var sysOauthUser = await _sysOauthUserRep.FirstOrDefaultAsync(u => u.Id == input.Id);
|
|
// await _sysOauthUserRep.FakeDeleteAsync(sysOauthUser);
|
|
//}
|
|
|
|
/// <summary>
|
|
/// 更新学生表
|
|
/// </summary>
|
|
/// <param name="input"></param>
|
|
/// <returns></returns>
|
|
//[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<SysOauthUser>();
|
|
// await _sysOauthUserRep.UpdateAsync(sysOauthUser, ignoreNullValues: true);
|
|
//}
|
|
|
|
/// <summary>
|
|
/// 获取学生表
|
|
/// </summary>
|
|
/// <param name="input"></param>
|
|
/// <returns></returns>
|
|
//[HttpGet("detail")]
|
|
//public async Task<SysOauthUserOutput> Get([FromQuery] QueryeSysOauthUserInput input)
|
|
//{
|
|
// return (await _sysOauthUserRep.AsQueryable().FirstOrDefaultAsync(u => u.Id == input.Id)).Adapt<SysOauthUserOutput>();
|
|
//}
|
|
|
|
/// <summary>
|
|
/// 获取学生表列表
|
|
/// </summary>
|
|
/// <param name="input"></param>
|
|
/// <returns></returns>
|
|
//[HttpGet("list")]
|
|
//public async Task<List<SysOauthUserOutput>> List([FromQuery] SysOauthUserInput input)
|
|
//{
|
|
// return await _sysOauthUserRep.AsQueryable().Where(e => e.TenantId == CurrentUserInfo.TenantId).ProjectToType<SysOauthUserOutput>().ToListAsync();
|
|
//}
|
|
|
|
/// <summary>
|
|
/// 获取BusGrade列表
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
[HttpGet("fkBusGrade")]
|
|
public async Task<dynamic> FkBusGradeList()
|
|
{
|
|
var list = await _busGradeRep.AsQueryable().Where(e => e.TenantId == _userManager.TenantId).ToListAsync();
|
|
return list.Select(e => new { Code = e.Id, Name = e.Name });
|
|
}
|
|
|
|
/// <summary>
|
|
/// 获取BusStudyYears列表
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
[HttpGet("fkBusStudyYears")]
|
|
public async Task<dynamic> FkBusStudyYearsList()
|
|
{
|
|
var list = await _busStudyYearsRep.AsQueryable().Where(e => e.TenantId == _userManager.TenantId).ToListAsync();
|
|
return list.Select(e => new { Code = e.Id, Name = e.Name });
|
|
}
|
|
|
|
/// <summary>
|
|
/// 获取BusClassInfo列表
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
[HttpGet("fkBusClassInfo")]
|
|
public async Task<dynamic> 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<bool> 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;
|
|
//}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
/// 学年是否存在
|
|
/// </summary>
|
|
/// <param name="studyyearsname"></param>
|
|
/// <param name="studyYears"></param>
|
|
/// <returns></returns>
|
|
private long CheckStudyyears(string studyyearsname, List<BusStudyYears> 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<BusGrade> 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<BusClassInfo> 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;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
}
|