Inheritance: System.Web.UI.Page
        public async Task ExecuteAsync(string userPIN, string signatureImage)
        {
            try
            {
                if (string.IsNullOrWhiteSpace(userPIN))
                {
                    throw new ArgumentNullException(nameof(userPIN));
                }

                if (string.IsNullOrWhiteSpace(signatureImage))
                {
                    throw new ArgumentNullException(nameof(signatureImage));
                }

                using (var dbSession = dbFacade.Transaction())
                {
                    var user = await dbSession.Set <User>().FirstOrDefaultAsync(u => u.Pin == userPIN);

                    if (user == null)
                    {
                        throw new Exception("User not found");
                    }

                    user.Signature = signatureImage;
                    await dbSession.SaveChangesAsync();
                }
            }
            catch (Exception e)
            { throw Oops.Rewrap(e); }
        }
Exemple #2
0
        /// <summary>
        /// 删除班级
        /// </summary>
        /// <param name="classIds"></param>
        /// <returns></returns>
        public async Task DeleteAsync([Required, MinLength(1), MaxLength(20)] int[] classIds)
        {
            // 判断用户Id中是否有重复项
            var isRepeat = classIds.GroupBy(i => i).Any(g => g.Count() > 1);

            if (isRepeat)
            {
                throw Oops.Oh(SystemErrorCodes.u1011);
            }

            // 查询所有存在且不被引用的用户
            var classes = await _classRepository
                          .Where(u => classIds.Contains(u.Id))
                          .ToListAsync();

            // 判断要操作的数据长度是是否等于传入数据的长度
            if (classIds.Length != classes.Count)
            {
                throw Oops.Oh(SystemErrorCodes.u1007);
            }

            var nowTime = DateTimeOffset.Now;

            classes.ForEach(u =>
            {
                u.UpdatedTime = nowTime;
                u.IsDeleted   = true;
            });
        }
        /// <summary>
        /// 添加动态接口控制器服务
        /// </summary>
        /// <param name="mvcBuilder">Mvc构建器</param>
        /// <returns>Mvc构建器</returns>
        public static IMvcBuilder AddDynamicApiControllers(this IMvcBuilder mvcBuilder)
        {
            var services = mvcBuilder.Services;

            var partManager = services.FirstOrDefault(s => s.ServiceType == typeof(ApplicationPartManager)).ImplementationInstance as ApplicationPartManager
                              ?? throw Oops.Oh($"`{nameof(AddDynamicApiControllers)}` must be invoked after `{nameof(MvcServiceCollectionExtensions.AddControllers)}`", typeof(InvalidOperationException));

            // 添加控制器特性提供器
            partManager.FeatureProviders.Add(new DynamicApiControllerFeatureProvider());

            // 添加配置
            services.AddConfigurableOptions <DynamicApiControllerSettingsOptions>();

            // 配置 Mvc 选项
            mvcBuilder.AddMvcOptions(options =>
            {
                // 添加应用模型转换器
                options.Conventions.Add(new DynamicApiControllerApplicationModelConvention());

                // 处理 Web API 不支持的返回格式,统一返回 406 状态码
                //options.ReturnHttpNotAcceptable = true;
            });

            // 添加丰富类型支持
            mvcBuilder.AddNewtonsoftJson();

            // 添加 Xml 支持
            mvcBuilder.AddXmlDataContractSerializerFormatters();

            return(mvcBuilder);
        }
Exemple #4
0
 /// <summary>
 /// 获取实体仓储
 /// </summary>
 /// <typeparam name="TEntity">实体类型</typeparam>
 /// <typeparam name="TDbContextLocator">数据库上下文定位器</typeparam>
 /// <returns>IRepository<TEntity, TDbContextLocator></returns>
 public static IRepository <TEntity, TDbContextLocator> GetRepository <TEntity, TDbContextLocator>()
     where TEntity : class, IEntity, new()
     where TDbContextLocator : class, IDbContextLocator
 {
     return(RequestServiceProvider.GetService <IRepository <TEntity, TDbContextLocator> >()
            ?? throw Oops.Oh("Reading IRepository<TEntity, TDbContextLocator> instances on non HTTP requests is not supported.", typeof(NotSupportedException)));
 }
Exemple #5
0
        /// <summary>
        /// 删除试卷
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        /// <exception cref="Exception"></exception>
        public async Task DeleteExam(int id)
        {
            var exam = await _examRepository
                       .FirstOrDefaultAsync(u => u.Id == id);

            if (exam == null)
            {
                throw Oops.Oh(ExamErrorCodes.s1901);
            }

            // 删除卷题目
            await _examRepository
            .Change <TbExamquestion>()
            .DeleteAsync(
                _examRepository
                .Change <TbExamquestion>()
                .Where(u => u.ExamId == id, false).ToList()
                );

            // 删除试卷班级关联
            await _examRepository
            .Change <TbExamclass>()
            .DeleteAsync(
                _examRepository
                .Change <TbExamclass>()
                .Where(u => u.ExamId == id, false).ToList()
                );

            await _examRepository.DeleteAsync(exam);
        }
        /// <summary>
        /// 删除字典数据
        /// </summary>
        /// <param name="categoryId"></param>
        /// <param name="dataIds"></param>
        /// <returns></returns>
        public async Task DeleteDictionaryDataAsync([Required, Range(1, int.MaxValue, ErrorMessage = "请输入有效的字典分类Id"), ApiSeat(ApiSeats.ActionStart)] int categoryId,
                                                    [Required, MinLength(1), MaxLength(20)] int[] dataIds)
        {
            // 查询字典分类是否存在
            var isExist = await _categoryRepository.AnyAsync(u => u.Id == categoryId, false);

            if (!isExist)
            {
                throw Oops.Oh(SystemErrorCodes.u1002);
            }

            var dictionaryDatas = await _dataRepository.Where(u => dataIds.Contains(u.Id) && u.CategoryId == categoryId).ToListAsync();

            // 判断要操作的角色集合长度是否和传入数组的长度相等
            if (dataIds.Length != dictionaryDatas.Count)
            {
                throw Oops.Oh(SystemErrorCodes.u1007);
            }

            // 软/假删除
            var nowTime = DateTimeOffset.Now;

            dictionaryDatas.ForEach(u =>
            {
                u.UpdatedTime = nowTime;
                u.IsDeleted   = true;
            });
        }
Exemple #7
0
        /// <summary>
        /// 查询教师
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        /// <exception cref="Exception"></exception>
        public async Task <TeacherDto> FindTeacherById(int id)
        {
            var teacher = await _teacherRepository
                          .Entities
                          .Select(u => new TbTeacher
            {
                Id          = u.Id,
                TeacherName = u.TeacherName,
                DeptId      = u.DeptId,
                Sex         = u.Sex,
                TeacherNo   = u.TeacherNo,
                Telphone    = u.Telphone,
                IdCard      = u.IdCard,
                CreateTime  = u.CreateTime,
                Dept        = new TbDept
                {
                    CreateTime = u.Dept.CreateTime,
                    DeptName   = u.Dept.DeptName
                }
            })
                          .FirstOrDefaultAsync(x => x.Id == id);

            if (teacher == null)
            {
                throw Oops.Oh(TeacherErrorCodes.t1402);
            }

            return(teacher.Adapt <TeacherDto>());
        }
        /// <summary>
        /// 为老师分配受教班级
        /// </summary>
        /// <param name="classId"></param>
        /// <param name="teacherds"></param>
        public async Task GiveAsync([Range(1, int.MaxValue, ErrorMessage = "请输入有效的班级、老师 Id"), Required] int classId, [MinLength(1), Required] int[] teacherds)
        {
            // 判断传入老师数据是否正确
            var count = await _teacherRepository.CountAsync(u => teacherds.Contains(u.Id), false);

            if (teacherds.Contains(0) || count != teacherds.Length)
            {
                throw Oops.Oh(SystemErrorCodes.u1009);
            }

            // 删除已有的老师
            var classTeacherRepository = _teacherRepository.Change <ClassTeacher>();
            await classTeacherRepository.DeleteAsync(classTeacherRepository.Where(u => u.SchoolClassId == classId, false).ToList());

            var list = new List <ClassTeacher>();

            foreach (var techerId in teacherds)
            {
                list.Add(new ClassTeacher {
                    TeacherId = techerId, SchoolClassId = classId
                });
            }

            await classTeacherRepository.InsertAsync(list);
        }
Exemple #9
0
        /// <summary>
        /// 异常拦截
        /// </summary>
        /// <param name="context"></param>
        /// <returns></returns>
        public async Task OnExceptionAsync(ExceptionContext context)
        {
            // 解析异常处理服务,实现自定义异常额外操作,如记录日志等
            var globalExceptionHandler = _serviceProvider.GetService <IGlobalExceptionHandler>();

            if (globalExceptionHandler != null)
            {
                await globalExceptionHandler.OnExceptionAsync(context);
            }

            // 排除 Mvc 视图
            var actionDescriptor = context.ActionDescriptor as ControllerActionDescriptor;

            if (actionDescriptor.ControllerTypeInfo.BaseType == typeof(Controller))
            {
                return;
            }

            // 标识异常已经被处理
            context.ExceptionHandled = true;

            // 设置异常结果
            var exception = context.Exception;

            // 处理规范化结果
            var unifyResult = _serviceProvider.GetService <IUnifyResultProvider>();

            context.Result = unifyResult == null ? new ContentResult {
                Content = exception.Message
            } : unifyResult.OnException(context);

            // 打印错误到 MiniProfiler 中
            Oops.PrintToMiniProfiler(context.Exception);
        }
Exemple #10
0
        /// <summary>
        /// 学生注册
        /// </summary>
        /// <param name="studentDto"></param>
        /// <returns></returns>
        public async Task <StudentDto> RegisterStudent(StudentDto studentDto)
        {
            // 判断学号是否已经注册
            var stu = await _studentRepository.Where(x => x.StuNo == studentDto.StuNo).FirstOrDefaultAsync();

            if (stu != null)
            {
                throw Oops.Oh(StudentErrorCodes.s1205);
            }
            // 判断班级是否存在
            var classes = await _studentRepository.Change <TbClass>().FirstOrDefaultAsync(x => x.Id == studentDto.ClassesId);

            if (classes == null)
            {
                throw Oops.Oh(StudentErrorCodes.s1202);
            }
            // 判断班级是否属于该系别
            if (classes.DeptId != studentDto.DeptId)
            {
                throw Oops.Oh(StudentErrorCodes.s1203);
            }
            // studentDto.CreateTime = TimeUtil.GetTimeStampNow();
            var stduent = await _studentRepository
                          .InsertNowAsync(studentDto.Adapt <TbStudent>());

            return(stduent.Entity.Adapt <StudentDto>());
        }
Exemple #11
0
 [ApiDescriptionSettings(Name = "Roles")] // 自定义接口名称
 public List <string> GetUserRoles(
     // 自定义参数位置
     [ApiSeat(ApiSeats.ControllerEnd)] string id)
 {
     // 友好的异常处理
     throw Oops.Oh(ErrorCodes.UserNotFound, id);
 }
        public async Task <LoginOutput> LoginAsync([FromServices] IHttpContextAccessor httpContextAccessor, [Required] LoginInput input)
        {
            // 获取加密后的密码
            var encryptPassword = MD5Encryption.Encrypt(input.Password.Trim());

            // 判断用户名或密码是否正确
            var user = await _userRepository.FirstOrDefaultAsync(u => u.Account.Equals(input.Account) && u.Password.Equals(encryptPassword));

            _ = user ?? throw Oops.Oh(SystemErrorCodes.u1000);

            // 更新登录时间
            user.SigninedTime = DateTimeOffset.Now;

            // 映射结果
            var output = user.Adapt <LoginOutput>();

            // 生成 token
            var accessToken = output.AccessToken = JWTEncryption.Encrypt(new Dictionary <string, object>
            {
                { "UserId", user.Id },
                { "Account", user.Account }
            });

            // 生成 刷新token
            var refreshToken = JWTEncryption.GenerateRefreshToken(accessToken);

            // 设置 Swagger 自动登录
            httpContextAccessor.SigninToSwagger(accessToken);

            // 设置刷新 token
            httpContextAccessor.HttpContext.Response.Headers["x-access-token"] = refreshToken;

            return(output);
        }
        public IHttpActionResult InsertOops(Oops oops)
        {
            dbContext.Oops.Add(oops);
            dbContext.SaveChangesAsync();

            return(Ok(oops.ID));
        }
        public Electrode Execute(int productionOrderId)
        {
            try
            {
                using (var dbSession = dbFacade.Transaction())
                {
                    var order = dbSession.Set <ProductionOrder>()
                                .Include(x => x.Grade)
                                .Where(x => x.ID == productionOrderId)
                                .Select(x => new { GradeName = x.Grade.Name })
                                .SingleOrDefault();

                    if (order == null)
                    {
                        return(null);
                    }

                    return(new Electrode()
                    {
                    });
                }
            }
            catch (Exception e)
            { throw Oops.Rewrap(e); }
        }
        /// <summary>
        /// 添加编辑角色
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
        public void AddEdit(RoleAddEditDto dto)
        {
            dto.RoleName = dto.RoleName.Trim();
            SysRole role = null;
            if (dto.RoleId.HasValue)
            {
                if (dbClint.Queryable<SysRole>().Where(r => r.RoleName == dto.RoleName && r.IsDeleted == false && r.RoleId != dto.RoleId.Value).Any())
                    throw Oops.Oh($"已存在角色【{dto.RoleName}】!");
                role = _repository.FirstOrDefault(r=>r.RoleId==dto.RoleId.Value);
                role.ModifyDate = DateTime.Now;
                role.ModifyUserId = _userManager.UserId;
                role.ModifyUserName = _userManager.UserName;
            }
            else
            {
                if (dbClint.Queryable<SysRole>().Where(r => r.RoleName == dto.RoleName && r.IsDeleted == false).Any())
                    throw Oops.Oh($"已存在角色【{dto.RoleName}】!");
                role = new SysRole()
                {
                    CreateDate = DateTime.Now,
                    CreateUserId = _userManager.UserId,
                    CreateUserName = _userManager.UserName,
                    IsDeleted = false
                };
            }
            role.RoleName = dto.RoleName;
            role.Remark = dto.Remark;
            role.IsEnabled = dto.IsEnabled;

            if (dto.RoleId.HasValue)
                dbClint.Updateable(role).ExecuteCommand();
            else
                dbClint.Insertable(role).ExecuteCommand();
        }
Exemple #16
0
        public ObservableCollection <InstructionMaterial> Execute(string heatNumber)
        {
            try
            {
                // RecipeESR approach
                var materials = new GetAllMaterials(dbFacade).ExecuteWithMaterialTypeAndMaterialElements().Where(m => m.Active == true);

                using (var dbSession = dbFacade.Transaction())
                {
                    int?id = dbSession.Set <ProductionOrder>().Where(x => x.HeatNumber == heatNumber).FirstOrDefault()?.ID;

                    if (id == null)
                    {
                        return(null);
                    }

                    Instruction instruction = dbSession.Set <Instruction>()
                                              .Include(x => x.ProductionOrder)
                                              .Include(x => x.Materials)
                                              .Include(r => r.Materials.Select(rr => rr.Material))
                                              .Include(r => r.Materials.Select(rr => rr.Material.MaterialType))
                                              .Include(r => r.Materials.Select(rr => rr.Material.MaterialElements.Select(x => x.Element)))
                                              .FirstOrDefault(x => x.ProductionOrderID == id);

                    if (instruction != null)
                    {
                        return(CreateMaterialList(instruction.Materials, materials, "Slag"));
                    }

                    return(null);
                }
            }
            catch (Exception e)
            { throw Oops.Rewrap(e); }
        }
        /// <summary>
        /// 更新字典数据
        /// </summary>
        /// <param name="categoryId"></param>
        /// <param name="dataId"></param>
        /// <param name="input"></param>
        /// <returns></returns>
        public async Task UpdateDictionaryDataAsync(
            [Required, Range(1, int.MaxValue, ErrorMessage = "请输入有效的字典分类Id"), ApiSeat(ApiSeats.ActionStart)] int categoryId,
            [Required, Range(1, int.MaxValue, ErrorMessage = "请输入有效的字典数据Id")] int dataId,
            [Required] EditSystemDataInput input)
        {
            // 查询字典分类是否存在
            var isExist = await _categoryRepository.AnyAsync(u => u.Id == categoryId, false);

            if (!isExist)
            {
                throw Oops.Oh(SystemErrorCodes.u1002);
            }

            // 查询字典数据是否存在
            isExist = await _dataRepository.AnyAsync(u => u.Id == dataId && u.CategoryId == categoryId, false);

            if (!isExist)
            {
                throw Oops.Oh(SystemErrorCodes.u1002);
            }

            var dictionaryData = input.Adapt <SystemData>();

            // 配置主外键和更新时间
            dictionaryData.Id          = dataId;
            dictionaryData.CategoryId  = categoryId;
            dictionaryData.UpdatedTime = DateTimeOffset.Now;

            await _dataRepository.UpdateExcludeAsync(dictionaryData, new[] { nameof(SystemData.IsDeleted), nameof(SystemData.CreatedTime) }, ignoreNullValues : true);
        }
Exemple #18
0
        public IList <Substance> ExecuteWrapper(string heatNumber)
        {
            try
            {
                var listSet = Execute(heatNumber);

                if (listSet != null)
                {
                    // Convert to List<Substance>
                    var substances = new List <Substance>();
                    foreach (var item in listSet)
                    {
                        substances.Add(new Substance()
                        {
                            ID     = item.MaterialID,
                            Name   = item.Material.Name,
                            Charge = item.Material.Number,
                            Amount = item.Amount
                        });
                    }

                    return(substances);
                }

                return(null);
            }
            catch (Exception e)
            { throw Oops.Rewrap(e); }
        }
        /// <summary>
        /// 根据学生查询错题本详情
        /// </summary>
        /// <param name="examId"></param>
        /// <param name="studentId"></param>
        /// <returns></returns>
        public async Task <ExamDto> FindWrongInfoByExamAndStudent(int examId, int studentId)
        {
            var wrong = await _answerRepository.Change <TbExam>()
                        .Entities.AsNoTracking()
                        .Where(u => u.IsEnable == "1")
                        .Include(u => u.Stuanswerdetails)
                        .Select(u => new TbExam
            {
                Id               = u.Id,
                ExamName         = u.ExamName,
                Stuanswerdetails = u.Stuanswerdetails
                                   .Where(x => x.StuId == studentId && x.Isright == "0" && x.ExamId == examId)
                                   .Select(s => new TbStuanswerdetail
                {
                    Id           = s.Id,
                    QuestionType = s.QuestionType,
                }).ToList(),
            }).FirstOrDefaultAsync();

            if (wrong == null)
            {
                throw Oops.Oh(ExamErrorCodes.s1901);
            }

            return(wrong.Adapt <ExamDto>());
        }
Exemple #20
0
 /// <summary>
 /// 获取实体仓储
 /// </summary>
 /// <typeparam name="TEntity">实体类型</typeparam>
 /// <typeparam name="TDbContextLocator">数据库上下文定位器</typeparam>
 /// <returns>IRepository<TEntity, TDbContextLocator></returns>
 public static IRepository <TEntity, TDbContextLocator> GetRepository <TEntity, TDbContextLocator>()
     where TEntity : class, IEntityDependency, new()
     where TDbContextLocator : class, IDbContextLocator
 {
     return(RequestServiceProvider.GetService <IRepository <TEntity, TDbContextLocator> >()
            ?? throw Oops.Oh(NotSupportedResolveMessage, typeof(NotSupportedException), nameof(IRepository <TEntity, TDbContextLocator>)));
 }
Exemple #21
0
        public async Task <StuscoreDto> FindExamScoreByStudent(int examId, int studentId)
        {
            var score = await _stuscoreRepository
                        .Entities
                        .Where(u => u.ExamId == examId && u.StuId == studentId)
                        .Select(u => new TbStuscore
            {
                Id         = u.Id,
                StuId      = u.StuId,
                CourseId   = u.CourseId,
                ExamId     = u.ExamId,
                Score      = u.Score,
                CreateTime = u.CreateTime,
                Exam       = new TbExam
                {
                    Id        = u.Exam.Id,
                    ExamName  = u.Exam.ExamName,
                    StartTime = u.Exam.StartTime,
                    Duration  = u.Exam.Duration,
                },
            })
                        .FirstOrDefaultAsync();

            if (score == null)
            {
                throw Oops.Oh(ExamScoreErrorCodes.k2001);
            }

            return(score.Adapt <StuscoreDto>());
        }
Exemple #22
0
 /// <summary>
 /// 检查是否支持存储过程
 /// </summary>
 /// <param name="databaseFacade">ADO.NET 数据库对象</param>
 /// <param name="commandType">命令类型</param>
 private static void CheckStoredProcedureSupported(DatabaseFacade databaseFacade, CommandType commandType)
 {
     if (DatabaseProvider.IsSupportStoredProcedure(databaseFacade.ProviderName, commandType))
     {
         Oops.Oh(NotSupportException, typeof(NotSupportedException), "stored procedure");
     }
 }
Exemple #23
0
        public virtual IList <MachineEventViewModel> Execute(int?ingotId, DateTime fromDate)
        {
            try
            {
                using (var dbSession = dbFacade.Transaction())
                {
                    if (!ingotId.HasValue)
                    {
                        return(new List <MachineEventViewModel>());
                    }

                    return(dbSession.Set <MachineEvent>()
                           .Where(x =>
                                  x.Timestamp >= fromDate &&
                                  x.IngotID.HasValue &&
                                  x.IngotID.Value == ingotId.Value
                                  )
                           .Select(x => new MachineEventViewModel
                    {
                        Name = x.ValueString,
                        Timestamp = x.Timestamp,
                    })
                           .OrderByDescending(x => x.Timestamp)
                           .ToList());
                }
            }
            catch (Exception e)
            { throw Oops.Rewrap(e); }
        }
Exemple #24
0
        /// <summary>
        /// 创建数据库命令参数字典
        /// </summary>
        /// <param name="method"></param>
        /// <param name="arguments"></param>
        /// <returns></returns>
        private static object CombineDbParameter(MethodInfo method, object[] arguments)
        {
            var parameters = method.GetParameters();

            if (parameters == null || parameters.Length == 0)
            {
                return(null);
            }

            // 只支持要么全是基元类型,或全部都是类类型
            if (!parameters.All(u => u.ParameterType.IsRichPrimitive()) && !parameters.All(u => u.ParameterType.IsClass))
            {
                throw Oops.Oh("Invalid type cast", typeof(InvalidOperationException));
            }

            if (parameters.All(u => u.ParameterType.IsRichPrimitive()))
            {
                var dic = new Dictionary <string, object>();
                for (var i = 0; i < parameters.Length; i++)
                {
                    var parameter      = parameters[i];
                    var parameterValue = arguments.Length > i ? arguments[i] : null;
                    dic.Add(parameter.Name, parameterValue);
                }
                return(dic);
            }
            else
            {
                return(arguments.First());
            }
        }
Exemple #25
0
 public virtual List <int> Execute(string plantName)
 {
     try
     {
         using (var dbSession = dbFacade.Transaction())
         {
             return(dbSession.Set <ProcessVariable>()
                    .Where(x =>
                           x.Name == plantName + "." + Constants.PROCESS_VARIABLE_CURRENT ||
                           x.Name == plantName + "." + Constants.PROCESS_VARIABLE_ELECTRODE_POSITION ||
                           x.Name == plantName + "." + Constants.PROCESS_VARIABLE_ELECTRODE_WEIGHT ||
                           x.Name == plantName + "." + Constants.PROCESS_VARIABLE_INGOT_WEIGHT ||
                           x.Name == plantName + "." + Constants.PROCESS_VARIABLE_MELTRATE ||
                           x.Name == plantName + "." + Constants.PROCESS_VARIABLE_POWER ||
                           x.Name == plantName + "." + Constants.PROCESS_VARIABLE_RESISTANCE ||
                           x.Name == plantName + "." + Constants.PROCESS_VARIABLE_SWING ||
                           x.Name == plantName + "." + Constants.PROCESS_VARIABLE_VOLTAGE
                           )
                    .Select(x => x.ID)
                    .ToList());
         }
     }
     catch (Exception e)
     { throw Oops.Rewrap(e); }
 }
        public async Task BatchAddUser()
        {
            var user = await _repository.InsertNowAsync(new Core.SysUser
            {
                CreateUserId   = 0,
                CreateUserName = "",
                IsSystem       = Core.IsSystemEnum.否,
                Password       = "",
                SecretKey      = "111",
                State          = 0,
                TrueName       = "core-test" + System.Guid.NewGuid(),
                UserName       = "******"
            });


            var use1r = await _repository.InsertNowAsync(new Core.SysUser
            {
                CreateUserId   = 0,
                CreateUserName = "",
                IsSystem       = Core.IsSystemEnum.否,
                Password       = "",
                SecretKey      = "111",
                State          = 0,
                TrueName       = "core-test" + System.Guid.NewGuid(),
                UserName       = "******"
            });

            throw Oops.Oh(ErrorCodes.z1000);
        }
Exemple #27
0
        /// <summary>
        /// 查找系别
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        /// <exception cref="Exception"></exception>
        public async Task <DeptDto> FindDeptById(int id)
        {
            var dept = await _deptRepository
                       .Entities
                       .Select(u => new TbDept
            {
                Id         = u.Id,
                DeptName   = u.DeptName,
                CreateTime = u.CreateTime,
                Classes    = u.Classes.Select(c => new TbClass
                {
                    Id          = c.Id,
                    ClassesName = c.ClassesName,
                    CreateTime  = c.CreateTime,
                }).ToList()
            })
                       .FirstOrDefaultAsync(x => x.Id == id);

            if (dept == null)
            {
                throw Oops.Oh(DeptErrorCodes.d1301);
            }

            return(dept.Adapt <DeptDto>());
        }
Exemple #28
0
        /// <summary>
        /// 根据id查询是非题
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        /// <exception cref="Exception"></exception>
        public async Task <JudgeDto> FindJudgeById(int id)
        {
            var judgeEntity = await _judgeRepository
                              .Entities
                              .Select(u => new TbJudge
            {
                Id         = u.Id,
                Question   = u.Question,
                Answer     = u.Answer,
                CourseId   = u.CourseId,
                ChapterId  = u.ChapterId,
                TeacherId  = u.TeacherId,
                Ideas      = u.Ideas,
                CreateTime = u.CreateTime,
                Chapter    = new TbChapter
                {
                    Id          = u.Chapter.Id,
                    ChapterName = u.Chapter.ChapterName,
                },
                Course = new TbCourse
                {
                    Id         = u.Course.Id,
                    CourseName = u.Course.CourseName
                },
            })
                              .FirstOrDefaultAsync(u => u.Id == id);

            if (judgeEntity == null)
            {
                throw Oops.Oh(JudgeErrorCodes.s1801);
            }

            return(judgeEntity.Adapt <JudgeDto>());
        }
Exemple #29
0
 /// <summary>
 /// 检查是否支持存储过程
 /// </summary>
 /// <param name="providerName">数据库提供器名词</param>
 /// <param name="commandType">命令类型</param>
 internal static void CheckStoredProcedureSupported(string providerName, CommandType commandType)
 {
     if (commandType == CommandType.StoredProcedure && NotSupportStoredProcedureDatabases.Contains(providerName))
     {
         throw Oops.Oh(NotSupportException, typeof(NotSupportedException), "stored procedure");
     }
 }
        public async Task DeleteAsync([Required, MinLength(1), MaxLength(20)] int[] userIds)
        {
            // 判断用户Id中是否有重复项
            var isRepeat = userIds.GroupBy(i => i).Any(g => g.Count() > 1);

            if (isRepeat)
            {
                throw Oops.Oh(SystemErrorCodes.u1011);
            }

            // 禁止删除自己
            if (userIds.Contains(_userManager.UserId))
            {
                throw Oops.Oh(SystemErrorCodes.u1001);
            }

            // 查询所有存在且不被引用的用户
            var users = await _userRepository.Include(u => u.Roles)
                        .Where(u => userIds.Contains(u.Id) && !u.Roles.Any())
                        .ToListAsync();

            // 判断要操作的数据长度是是否等于传入数据的长度
            if (userIds.Length != users.Count)
            {
                throw Oops.Oh(SystemErrorCodes.u1007);
            }

            var nowTime = DateTimeOffset.Now;

            users.ForEach(u =>
            {
                u.UpdatedTime = nowTime;
                u.IsDeleted   = true;
            });
        }