using Castle.Core.Logging; using Dm.util; using LearningOfficer.OA.Common.Attributes; using LearningOfficer.OA.Common.Configs; using LearningOfficer.OA.Common.Dtos.Classes; using LearningOfficer.OA.Common.Dtos.LoginMobile; using LearningOfficer.OA.Common.Dtos.OA.ManagerData; using LearningOfficer.OA.Common.Dtos.School; using LearningOfficer.OA.Common.Dtos.TencentIM; using LearningOfficer.OA.Common.Dtos.User; using LearningOfficer.OA.Common.Enums; using LearningOfficer.OA.Common.Exceptions; using LearningOfficer.OA.Common.Helpers; using LearningOfficer.OA.Common.Request; using LearningOfficer.OA.Common.Response; using LearningOfficer.OA.Core.Entities.OA.SystemInfo; using LearningOfficer.OA.Core.Entities.OA.WorkProcess.ClassesTask; using LearningOfficer.OA.Core.Entities.UserCenter; using LearningOfficer.OA.Core.ServicesInterfaces; using LearningOfficer.OA.Core.ServicesInterfaces.ClassTask; using LearningOfficer.OA.Infrastructure.DBContext; using LearningOfficer.OA.Services.WorkProcess.ClassTask; using Mapster; using Masuit.Tools; using Masuit.Tools.Security; using Meeting.Infrastructure; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; using MiniExcelLibs; using Nacos.V2.Utils; using SqlSugar; using System.Collections.Generic; using System.Linq; using System.Runtime.ConstrainedExecution; using UserCenter.Model; using UserCenter.Model.Common; using UserCenter.Model.Enum; using Yitter.IdGenerator; using Classes = LearningOfficer.OA.Core.Entities.UserCenter.Classes; using Position = LearningOfficer.OA.Core.Entities.UserCenter.Position; using School = LearningOfficer.OA.Core.Entities.UserCenter.School; using User = LearningOfficer.OA.Core.Entities.UserCenter.User; using Cloudschool = LearningOfficer.OA.Core.Entities.UserCenter.Cloudschool; namespace LearningOfficer.OA.Services { [Inject] public class UserService : BaseService, IUserService { private readonly SugarRepository _userRepository; public UserService(SugarRepository userRepository) : base(userRepository) { this._userRepository = userRepository; } public async Task> GetStudentResults(long ClassesId, int IsBackOutStudent) { //获取班级下的学生职级 var result = await _userRepository.Context.Queryable() .LeftJoin((p, pr) => p.Id == pr.PositionId) .LeftJoin((p, pr, u) => pr.UserId == u.Id) .LeftJoin((p, pr, u, c) => p.ClassId == c.Id) .LeftJoin((p, pr, u, c, s) => c.SchoolId == s.Id) .Where((p, pr, u, c, s) => p.ClassId == ClassesId && p.DeleteState == false && u.State == 1 && p.Enable == true && p.PositionType == 1 && u.DeleteState == false) .WhereIF(IsBackOutStudent == 1, (p, pr, u, c, s) => (pr.Status == PositionRelationStatusEnum.就读任职 || pr.Status == PositionRelationStatusEnum.退学休学)) .WhereIF(IsBackOutStudent == 0, (p, pr, u, c, s) => pr.Status == PositionRelationStatusEnum.就读任职) .Select((p, pr, u, c, s) => new StudentResult { Id = u.Id, Name = u.RealName, Status = pr.Status, SchoolId = s.Id, ClassName = c.ClassName, GradeLevel = c.GradeLevel, GraduationYear = c.GraduationYear, SchoolName = s.Name, Account = u.Account }).ToListAsync(); return result; } public async Task ResetStudentPwd(long userId) { var user = await _userRepository.GetByIdAsync(userId); if (user == null) { throw new BusinessException("用户不存在"); } user.Password = MD5EncryptionHelper.MD5Encryption("123456"); //大写MD5 user.Password = user.Password.ToUpper(); return await _userRepository.UpdateAsync(user); } } }