Пример #1
0
        /// <summary>
        ///  完成日志记录此方法: AddInstitute
        /// </summary>
        /// <param name="moduleId"></param>
        /// <param name="instituteId"></param>
        /// <returns></returns>
        public IActionResult AddInstitute([Required] int moduleId, [Required] int instituteId)
        {
            if (ModelState.IsValid)
            {
                if (!_analysis.GetLoginUserConfig(HttpContext).Power.SystemInfoManager)
                {
                    return(Json(new
                    {
                        isOk = false,
                        error = "你并无信息管理操作权限"
                    }));
                }

                if (_context.Modules.Any(val => val.ModuleId == moduleId) && _context.Institute.Any(ins => ins.InstituteId == instituteId))
                {
                    LogPricipalOperation log = _logger.GetDefaultLogPricipalOperation(PrincpalOperationCode.ChangeInstituteToModule, " 学院id: {instituteId} 模块id {moduleId}", $"将一个学院归属要这个模块 学院id: {instituteId} 模块id {moduleId}");

                    if (_context.InstituteToModules.Any(one =>
                                                        one.InstituteId == instituteId))
                    {
                        _logger.Logger(log);
                        return(Json(new
                        {
                            isOk = false,
                            error = "学院有归属了! 一个学院不能属于两个模块"
                        }));
                    }
                    else
                    {
                        InstituteToModule im = new InstituteToModule {
                            InstituteId = instituteId, ModuleId = moduleId
                        };
                        log.PrincpalOperationStatus = PrincpalOperationStatus.Success;
                        _context.InstituteToModules.Add(im);
                        _context.LogPricipalOperations.Add(log);
                        _context.SaveChanges();
                        return(Json(new
                        {
                            isOk = true,
                        }));
                    }
                }
                else
                {
                    return(Json(new
                    {
                        isOk = false,
                        error = "模块或者学院不存在! 你不要搞我涩!"
                    }));
                }
            }
            else
            {
                return(Json(new
                {
                    isOk = false,
                    error = "参数错误"
                }));
            }
        }
Пример #2
0
        /// <summary>
        ///  完成日志记录方法 DeleteInstitute
        /// </summary>
        /// <param name="moduleId"></param>
        /// <param name="instituteId"></param>
        /// <returns></returns>
        public IActionResult DeleteInstitute([Required] int moduleId, [Required] int instituteId)
        {
            if (ModelState.IsValid)
            {
                if (!_analysis.GetLoginUserConfig(HttpContext).Power.SystemInfoManager)
                {
                    return(Json(new
                    {
                        isOk = false,
                        error = "你并无信息管理操作权限"
                    }));
                }
                LogPricipalOperation log = _logger.GetDefaultLogPricipalOperation(PrincpalOperationCode.DeleteInstituteFromModule, " 学院id: {instituteId} 模块id {moduleId}", $"将一个学院从此模块中排除出去 学院id: {instituteId} 模块id {moduleId}");

                InstituteToModule im = _context.InstituteToModules.FirstOrDefault(val =>
                                                                                  val.InstituteId == instituteId && val.ModuleId == moduleId);

                if (im != null)
                {
                    log.PrincpalOperationStatus = PrincpalOperationStatus.Success;
                    _context.InstituteToModules.Remove(im);
                    _context.LogPricipalOperations.Add(log);
                    _context.SaveChanges();
                    return(Json(new
                    {
                        isOk = true
                    }));
                }
                else
                {
                    _logger.Logger(log);
                    return(Json(new
                    {
                        isOk = false,
                        error = "没有此条记录,记录着此学院属于此模块"
                    }));
                }
            }
            else
            {
                return(Json(new
                {
                    isOk = false,
                    error = "参数错误"
                }));
            }
        }
Пример #3
0
        public IActionResult Login([Required] String userId, [Required] String userPassword)
        {
            if (ModelState.IsValid)
            {
                userId       = userId.Trim();
                userPassword = userPassword.Trim();

                //判断用户身份
                UserType type = _analysis.GetUserType(userId);
                if (type == UserType.Anonymous) //匿名用户
                {
                    return(Json(new
                    {
                        isOk = false,
                        message = "账户不存在!如果你的账号尚未录入请联系系统维护人员录入!",
                    }));
                }
                //如果是管理员判断密码是否正确
                if (type == UserType.Principal)
                {
                    Principal principal = _context.Principals.Find(userId);
                    if (_ncryption.DecryptByRsa(principal.Password) != _ncryption.EncodeByMd5(_ncryption.EncodeByMd5(userPassword)))
                    {
                        return(Json(new
                        {
                            isOk = false,
                            message = "管理员的密码不正确!",
                        }));
                    }
                }
                //如果是学生判断密码是正确
                if (type == UserType.Student)
                {
                    if (!_context.Student.Any(stu => stu.Password == _ncryption.EncodeByMd5(_ncryption.EncodeByMd5(userPassword))))
                    {
                        return(Json(new
                        {
                            isOk = false,
                            message = "同学你的密码不正确!忘记了可以修改密码。",
                        }));
                    }
                }
                //判断是否让管理员登录 超级管理员不被禁止登录
                SystemSetting setting = _config.LoadSystemSetting();
                if (type == UserType.Principal)
                {
                    Principal principal = _context.Principals.Find(userId);

                    if (!setting.LoginSetting.PrincipalLogin && principal.PrincipalStatus != PrincipalStatus.Super)
                    {
                        return(Json(new
                        {
                            isOk = false,
                            message = "系统维护中,管理员请等待系统维护之后进入!",
                        }));
                    }
                    //判断此管理员是否已经被禁止
                    if (principal.PrincipalStatus == PrincipalStatus.Ban)
                    {
                        return(Json(new
                        {
                            isOk = false,
                            message = "管理员,你已经被禁止登录!",
                        }));
                    }

                    //验证成功保存信息让其登录
                    LoginUserModel user = new LoginUserModel()
                    {
                        UserId       = userId,
                        UserPassword = userPassword,
                        LoginTime    = DateTime.Now,
                        UserType     = type
                    };
                    var            userData = JsonConvert.SerializeObject(user, Formatting.None);
                    ClaimsIdentity identity = new ClaimsIdentity();
                    identity.AddClaim(new Claim(ClaimTypes.Name, principal.Name)); //用户名 姓名
                    identity.AddClaim(new Claim(ClaimTypes.Role, "Principal"));    //角色
                    identity.AddClaim(new Claim(ClaimTypes.UserData, userData));   //用户数据
                    ClaimsPrincipal claimPrincipal = new ClaimsPrincipal(identity);

                    AuthenticationProperties property = new AuthenticationProperties
                    {
                        ExpiresUtc   = DateTimeOffset.UtcNow.AddHours(16),//保存 16小时
                        IsPersistent = true
                    };
                    //持久化 Cookie 浏览器关闭了 只有在IsPersistent为True时,才会在写入Cookie指定Expires
                    HttpContext.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme, claimPrincipal, property);

                    return(Json(new
                    {
                        isOk = true,
                        url = "/Principal/Index",
                        message = "登录成功!"
                    }));
                }
                else
                {
                    Student student = _context.Student.Find(userId);
                    if (!setting.LoginSetting.StudentLogin)
                    {
                        return(Json(new
                        {
                            isOk = false,
                            message = "系统尚未允许学生登录!请等待通知...",
                        }));
                    }

                    //模块判断
                    if (!_context.InstituteToModules.Any(im => im.InstituteId == student.InstituteId))
                    {
                        return(Json(new
                        {
                            isOk = false,
                            message = "你所在学院并没有被规划在考试模块内,你无法参与实验室安全学习...",
                        }));
                    }
                    InstituteToModule itm = _context.InstituteToModules.FirstOrDefault(m => m.InstituteId == student.InstituteId);

                    /* 学习任务安排 -- 判断是否安排了学习任务 */
                    if (!_context.VLearningMaps.Any(l => l.StudentId == student.StudentId && l.ModuleId == itm.ModuleId))
                    {
                        /* CourceView 自动统计了 每个课程的 在用的视频资源数量 */
                        List <vCourceMap> courseMaps = _context.VCourceMaps
                                                       .Where(vc => vc.ModuleId == itm.ModuleId && vc.RCount != 0 && vc.CourceStatus == CourceStatus.Using)
                                                       .ToList(); //找出在用的所有课程

                        /* 如果有学习任务*/
                        if (courseMaps.Count > 0)
                        {
                            //安排学习课程
                            foreach (var item in courseMaps)
                            {
                                Learing learning = new Learing
                                {
                                    StudentId = student.StudentId,
                                    CourceId  = item.CourceId,
                                    IsFinish  = false,
                                    AddTime   = DateTime.Now
                                };
                                _context.Learings.Add(learning);
                                //记录学习进度

                                List <Resource> resources = _context.Resources
                                                            .Where(r => r.CourceId == item.CourceId)
                                                            .Where(r => r.ResourceStatus == ResourceStatus.Using)
                                                            .Where(r => r.ResourceType == ResourceType.Vedio)
                                                            .ToList();

                                foreach (var res in resources)
                                {
                                    Progress progress = new Progress
                                    {
                                        AddTime    = DateTime.Now,
                                        NeedTime   = res.LengthOfStudy,
                                        StudyTime  = 0,
                                        StudentId  = student.StudentId,
                                        ResourceId = res.ResourceId
                                    };
                                    _context.Progresses.Add(progress);
                                }
                            }
                        }
                        /*如果没有学习任务*/
                    }
                    _context.SaveChanges();

                    LoginUserModel user = new LoginUserModel()
                    {
                        UserId       = userId,
                        UserPassword = userPassword,
                        LoginTime    = DateTime.Now,
                        UserType     = type
                    };
                    var            userData = JsonConvert.SerializeObject(user, Formatting.None);
                    ClaimsIdentity identity = new ClaimsIdentity();
                    identity.AddClaim(new Claim(ClaimTypes.Name, student.Name)); //用户名 姓名
                    identity.AddClaim(new Claim(ClaimTypes.Role, "Student"));    //角色
                    identity.AddClaim(new Claim(ClaimTypes.UserData, userData)); //用户数据
                    ClaimsPrincipal claimPrincipal = new ClaimsPrincipal(identity);

                    AuthenticationProperties property = new AuthenticationProperties
                    {
                        ExpiresUtc   = DateTimeOffset.UtcNow.AddHours(28),//保存28小时
                        IsPersistent = true
                    };
                    //持久化 Cookie 浏览器关闭了 只有在IsPersistent为True时,才会在写入Cookie指定Expires
                    HttpContext.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme, claimPrincipal, property);

                    return(Json(new
                    {
                        isOk = true,
                        url = "/Student/Index",
                        message = "登录成功!"
                    }));
                }
            }
            else
            {
                return(Json(new
                {
                    isOk = false,
                    message = "传递了错误的参数!无法登录",
                    url = "/Error/ParameterError"
                }));
            }
        }
Пример #4
0
        /// <summary>
        /// 创建一个新的学院
        /// </summary>
        /// <param name="name"></param>
        /// <param name="moduleId"></param>
        /// <returns></returns>
        public async Task <IActionResult> Create([Required] String name, [Required] int moduleId)
        {
            if (ModelState.IsValid)
            {
                if (!_analysis.GetLoginUserConfig(HttpContext).Power.SystemInfoManager)
                {
                    return(Json(new
                    {
                        isOk = false,
                        error = "你并无信息管理操作权限"
                    }));
                }

                if (_context.Modules.Any(m => m.ModuleId == moduleId))
                {
                    if (_context.Institute.Any(ins => ins.Name == name))
                    {
                        return(Json(new
                        {
                            isOk = false,
                            error = "新建学院名称重复,已经存在此学院"
                        }));
                    }
                    else
                    {
                        LogPricipalOperation log =
                            _logger.GetDefaultLogPricipalOperation(
                                PrincpalOperationCode.InstituteAdd,
                                $"添加新的学院",
                                $"添加新的学院名称 {name}");

                        log.PrincpalOperationStatus = PrincpalOperationStatus.Success;
                        _context.LogPricipalOperations.Add(log);
                        Institute institute = new Institute {
                            Name = name
                        };
                        _context.Institute.Add(institute);
                        await _context.SaveChangesAsync().ContinueWith(t =>
                        {
                            int result = t.Result;
                            if (result == 1)
                            {
                                InstituteToModule instituteToModule = new InstituteToModule();
                                instituteToModule.ModuleId          = moduleId;
                                instituteToModule.InstituteId       = institute.InstituteId;
                                _context.Add(instituteToModule);
                                _context.SaveChangesAsync();
                            }
                        });

                        return(Json(new
                        {
                            isOk = true,
                        }));
                    }
                }
                else
                {
                    return(Json(new
                    {
                        isOk = false,
                        error = "不存在此模块!学院不可属于此模块"
                    }));
                }
            }
            else
            {
                return(Json(new
                {
                    isOk = false,
                    error = "参数错误"
                }));
            }
        }