浏览代码

Merge branch '娄底高职分支' of http://8.141.155.183:3000/bjquanjiang/DigitalScholl into 娄底高职分支

娄底高职分支
dao 1 个月前
父节点
当前提交
9dba7206ea
共有 11 个文件被更改,包括 419 次插入82 次删除
  1. +10
    -12
      Learun.Framework.Ultimate V7/Learun.Application.Web/Areas/EducationalAdministration/Controllers/StuScoreController.cs
  2. +1
    -0
      Learun.Framework.Ultimate V7/Learun.Application.Web/Areas/EducationalAdministration/Views/StuScore/AllStuScoreQueryIndex.js
  3. +217
    -17
      Learun.Framework.Ultimate V7/Learun.Application.Web/Controllers/LoginController.cs
  4. +4
    -0
      Learun.Framework.Ultimate V7/Learun.Application.Web/Learun.Application.Web.csproj
  5. +51
    -28
      Learun.Framework.Ultimate V7/Learun.Application.Web/Views/Login/Default.cshtml
  6. +86
    -4
      Learun.Framework.Ultimate V7/Learun.Application.Web/Views/Login/Default/Index.js
  7. +13
    -5
      Learun.Framework.Ultimate V7/Learun.Application.WebApi/Modules/UserApi.cs
  8. +1
    -1
      Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/EducationalAdministration/OpenLessonPlan/OpenLessonPlanEntity.cs
  9. +5
    -0
      Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/EducationalAdministration/StuScore/StuScoreEntity.cs
  10. +30
    -15
      Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/EducationalAdministration/StuScore/StuScoreService.cs
  11. +1
    -0
      Learun.Framework.Ultimate V7/LearunApp-2.2.0/pages/login.vue

+ 10
- 12
Learun.Framework.Ultimate V7/Learun.Application.Web/Areas/EducationalAdministration/Controllers/StuScoreController.cs 查看文件

@@ -595,10 +595,10 @@ namespace Learun.Application.Web.Areas.EducationalAdministration.Controllers
{
var semesterAndYear = Common.GetSemesterAndYear();
var queryParam = queryJson.ToJObject();
string year = queryParam["AcademicYearNo"].IsEmpty()? semesterAndYear.AcademicYearShort: queryParam["AcademicYearNo"].ToString();
string year = queryParam["AcademicYearNo"].IsEmpty() ? semesterAndYear.AcademicYearShort : queryParam["AcademicYearNo"].ToString();
string semester = queryParam["Semester"].IsEmpty() ? semesterAndYear.AcademicYearShort : queryParam["Semester"].ToString();
var loginInfo = LoginUserInfo.Get();
var data = stuScoreIBLL.GetLessonNoDataOfAll(loginInfo.account, loginInfo.Description,year, semester);
var data = stuScoreIBLL.GetLessonNoDataOfAll(loginInfo.account, loginInfo.Description, year, semester);
foreach (var item in data)
{
item.text = string.Format("{0}({1})", item.text, item.value);
@@ -733,30 +733,28 @@ namespace Learun.Application.Web.Areas.EducationalAdministration.Controllers
var data = stuScoreIBLL.GetScoreListByClassNo(queryJson);
//var stuData = stuInfoBasicIBLL.GetAllList();

var aa = data.GroupBy(x => new { x.StuNo, x.StuName, x.StuId }).Select(x => new
var aa = data.GroupBy(x => new { x.StuNo, x.StuName }).Select(x => new
{
StuId = x.Key.StuId,
StuNo = x.Key.StuNo,
StuName = x.Key.StuName,
//FinishSchoolMark = stuData.FirstOrDefault(a => a.StuNo == x.Key.StuNo)?.FinishSchoolMark,
TotalScore = x.Select(y => y.Score).Sum(),
TotalScore = x.Where(s => s.ExamType == "1").Select(y => y.Score).Sum(),
LessonInfo = x.Select(y => new { y.LessonNo, y.LessonName, y.Score, y.ScoreFormat }).OrderBy(y => y.LessonNo)
}).OrderByDescending(x => x.TotalScore);
var bb=aa.Select(x=>x.StuNo).ToList();
var cc=stuScoreIBLL.GetScoreListByMajor(queryJson).ToList();
var bb = aa.Select(x => x.StuNo).ToList();
var cc = stuScoreIBLL.GetScoreListByMajor(queryJson).ToList();

var result = new List<Dictionary<string, string>>();
foreach (var item in aa)
{
var aaa = new Dictionary<string, string>();
aaa.Add("StuId", item.StuId);
aaa.Add("StuNo", item.StuNo);
aaa.Add("StuName", item.StuName);
//aaa.Add("FinishSchoolMark", item.FinishSchoolMark);
aaa.Add("TotalScore", item.TotalScore.ToString());
aaa.Add("OrderClass", (bb.IndexOf(item.StuNo) + 1).ToString());
aaa.Add("OrderMajor",(cc.IndexOf(item.StuNo)+1).ToString());
aaa.Add("OrderMajor", (cc.IndexOf(item.StuNo) + 1).ToString());
foreach (var lessonInfoItem in item.LessonInfo)
{
aaa.Add(lessonInfoItem.LessonNo, lessonInfoItem.ScoreFormat);
@@ -817,9 +815,9 @@ namespace Learun.Application.Web.Areas.EducationalAdministration.Controllers
var data = stuScoreIBLL.GetScoreListByStuInfo(queryJson);
if (data.Any())
{
data = data.OrderByDescending(x => x.AcademicYearNo).ThenByDescending(x => x.Semester).ThenBy(x=>x.LessonSortNo).ThenBy(x => x.LessonNo);
data = data.OrderByDescending(x => x.AcademicYearNo).ThenByDescending(x => x.Semester).ThenBy(x => x.LessonSortNo).ThenBy(x => x.LessonNo);
}
return Success(data);
}



+ 1
- 0
Learun.Framework.Ultimate V7/Learun.Application.Web/Areas/EducationalAdministration/Views/StuScore/AllStuScoreQueryIndex.js 查看文件

@@ -87,6 +87,7 @@ var bootstrap = function ($, learun) {
{ label: '第二次补考成绩', name: 'ScoreOfNotPassTwo', width: 100, align: "left" },
{ label: '专业排名', name: 'RankInMajor', width: 100, align: "left" },
{ label: '班级排名', name: 'RankInClass', width: 100, align: "left" },
{ label: '备注', name: 'Remark', width: 100, align: "left" },
],
mainId: 'StuNo',
isPage: false,


+ 217
- 17
Learun.Framework.Ultimate V7/Learun.Application.Web/Controllers/LoginController.cs 查看文件

@@ -17,6 +17,10 @@ using System.Web;
using Quanjiang.DigitalScholl.WebLicense;
using Learun.Application.TwoDevelopment.EducationalAdministration;
using Newtonsoft.Json;
using Learun.Cache.Base;
using Learun.Cache.Factory;
using Quanjiang.DigitalScholl.SendSms;
using System.Collections.Generic;

namespace Learun.Application.Web.Controllers
{
@@ -38,6 +42,10 @@ namespace Learun.Application.Web.Controllers
private LoginModelIBLL loginModelIbll = new LoginModelBLL();
private AnnexesFileIBLL annexesFileIbll = new AnnexesFileBLL();
WeChatDevelopIBLL weChatDevelopIbll = new WeChatDevelopBLL();
private StuInfoBasicIBLL stuInfoBasicIBLL = new StuInfoBasicBLL();
private EmpInfoIBLL empInfoIBLL = new EmpInfoBLL();
private readonly ISms yixintongSms = new YixintongSms();
private ICache redisCache = CacheFactory.CaChe();
#endregion

#region 视图功能
@@ -510,11 +518,11 @@ namespace Learun.Application.Web.Controllers
if (error >= 3)
{
#region 验证码验证
verifycode = Md5Helper.Encrypt(verifycode.ToLower(), 16);
if (Session["session_verifycode"].IsEmpty() || verifycode != Session["session_verifycode"].ToString())
{
return Fail("验证码错误");
}
//verifycode = Md5Helper.Encrypt(verifycode.ToLower(), 16);
//if (Session["session_verifycode"].IsEmpty() || verifycode != Session["session_verifycode"].ToString())
//{
// return Fail("验证码错误");
//}
#endregion
}
int ForbidLoginNum = 5;
@@ -522,14 +530,15 @@ namespace Learun.Application.Web.Controllers
{
ForbidLoginNum = Convert.ToInt32(ConfigurationManager.AppSettings["ForbidLoginNum"]);
}
if (error>= ForbidLoginNum)
if (error >= ForbidLoginNum)
{
var needlockaccount = userBll.GetEntityByMobile(username);
userBll.UpdateState(needlockaccount.F_UserId,0);
userBll.UpdateState(needlockaccount.F_UserId, 0);
OperatorHelper.Instance.ClearCurrentErrorNum();
return Fail("账户已被锁定!");
}

var isSend = GetAccountIsSendMsg(username);
#region 内部账户验证
UserEntity userEntity = userBll.CheckLogin(username, password);

@@ -556,6 +565,17 @@ namespace Learun.Application.Web.Controllers
}
else
{
if (!isSend.HasValue)
return Fail("请检查登录账号信息");
if (isSend.Value)
{
if (string.IsNullOrEmpty(verifycode))
return Success(new { sendresult = true, msg = "请输入验证码" });
var redisKey = $"studentuserlogin_pc_{userEntity.F_Mobile}";
if (redisCache.Read<string>(redisKey) != verifycode)
return Fail("验证码错误或已失效。");
redisCache.Remove(redisKey);
}
//记录ip
userBll.UpdateIp(GetIP(), userEntity.F_UserId);
OperatorHelper.Instance.AddLoginUser(userEntity.F_Account, "Learun_ADMS_6.1_PC", null);//写入缓存信息
@@ -564,13 +584,29 @@ namespace Learun.Application.Web.Controllers
logEntity.F_ExecuteResultJson = "登录成功";
logEntity.WriteLog();
OperatorHelper.Instance.ClearCurrentErrorNum();
if (isSend.Value)
{
logEntity = new LogEntity
{
F_CategoryId = 3,
F_OperateTypeId = "sms",
F_OperateType = "sms",
F_OperateAccount = "system",
F_ExecuteResult = 200,
F_ExecuteResultJson = "短信发送成功:发送短信成功",
F_Description = "短信发送:" + userEntity.F_Mobile
};
logEntity.WriteLog();
}
//配置短信发送日志,为登录时效验是否需要发送短信

//是否强密码验证
if (!string.IsNullOrEmpty(ConfigurationManager.AppSettings["verifypwd"]) && ConfigurationManager.AppSettings["verifypwd"] == "true" && up == "false")
{
return Success(new { pwd = true });
}
//每月1号强制用户修改密码
if (DateTime.Now.Day == 1 && up == "false"&&teachSwitchIBLL.FindFirst("modifypwdfirstday"))
if (DateTime.Now.Day == 1 && up == "false" && teachSwitchIBLL.FindFirst("modifypwdfirstday"))
{
return Success(new { pwd = true });
}
@@ -580,16 +616,16 @@ namespace Learun.Application.Web.Controllers
{
if (userEntity.F_ModifyPwdDate.HasValue)
{
if ((DateTime.Now-userEntity.F_ModifyPwdDate.Value).Days>30)
if ((DateTime.Now - userEntity.F_ModifyPwdDate.Value).Days > 30)
{
return Success(new { pwdtip = true });
}
}
else
{
if (userEntity.F_CreateDate.HasValue && (DateTime.Now-userEntity.F_CreateDate.Value).Days>30)
if (userEntity.F_CreateDate.HasValue && (DateTime.Now - userEntity.F_CreateDate.Value).Days > 30)
{
return Success(new { pwdtip=true });
return Success(new { pwdtip = true });
}
}
}
@@ -783,13 +819,13 @@ namespace Learun.Application.Web.Controllers
/// <param name="p"></param>
/// <returns></returns>
[HttpGet]
public ActionResult CheckLoginForSSOBC(string u,string p)
public ActionResult CheckLoginForSSOBC(string u, string p)
{
try
{
string uid = Request.QueryString["u"];
string pwd = Request.QueryString["p"];
if (!string.IsNullOrEmpty(uid)&&!string.IsNullOrEmpty(pwd))
if (!string.IsNullOrEmpty(uid) && !string.IsNullOrEmpty(pwd))
{
string username = uid;
string password = pwd;
@@ -818,7 +854,7 @@ namespace Learun.Application.Web.Controllers
logEntity.F_ExecuteResult = 1;
logEntity.F_ExecuteResultJson = "无ui接口登录成功";
logEntity.WriteLog();
return Success("login success",new{userType=userEntity?.F_Description});
return Success("login success", new { userType = userEntity?.F_Description });
}
}
else
@@ -843,7 +879,7 @@ namespace Learun.Application.Web.Controllers
logEntity.F_CategoryId = 1;
logEntity.F_OperateTypeId = ((int)OperationType.Exit).ToString();
logEntity.F_OperateType = EnumAttribute.GetDescription(OperationType.Exit);
logEntity.F_OperateAccount ="第三方无ui";
logEntity.F_OperateAccount = "第三方无ui";
logEntity.F_OperateUserId = "noui";
logEntity.F_ExecuteResult = 1;
logEntity.F_ExecuteResultJson = "无ui退出系统";
@@ -1015,13 +1051,177 @@ namespace Learun.Application.Web.Controllers
{
string appid = "76d40062-349f-486d-b871-35bed08d2f59";
string secret = "cgpi";
string appkey =Request.QueryString["appkey"];
string response = Util.HttpMethods.HttpGet("http://localhost:20472/SSOSystem/authorize?appid=" + appid + "&secret=" + secret + "&appkey="+ appkey);
string appkey = Request.QueryString["appkey"];
string response = Util.HttpMethods.HttpGet("http://localhost:20472/SSOSystem/authorize?appid=" + appid + "&secret=" + secret + "&appkey=" + appkey);
return Content(response);
}

#endregion

#region 登录验证码的验证

/// <summary>
/// 验证是否需要输入验证码
/// </summary>
/// <returns></returns>
[HttpPost]
public ActionResult LoginVerify(string account)
{
var isSend = GetAccountIsSendMsg(account);
if (!isSend.HasValue)
{
return Fail("请检查登录账号信息");
}
return Success(new { sendresult = isSend });
}

/// <summary>
/// 发送短信验证码
/// </summary>
/// <returns></returns>
[HttpPost]
public ActionResult LoginSendMessage(string account)
{
var isSend = GetAccountIsSendMsg(account);
if (!isSend.HasValue)
return Fail("请检查登录账号信息");

if (!isSend.Value)
return Fail("该用户不需要短信登录");
var userEntity = userBll.GetEntityByMobile(account);
if (userEntity == null)
{
userEntity = userBll.GetEntityByAccount(account);
if (userEntity == null)
{
return Fail("请检查登录账号信息");
}
}
LogEntity logEntity;
var redisKey = $"studentuserlogin_pc_{userEntity.F_Mobile}";
var msg = redisCache.Read<string>(redisKey);
if (!string.IsNullOrEmpty(msg)) return Fail("原验证码未过期请使用原验证码。");
try
{
//短信发送验证
string raRndNum = CommonHelper.RndNum(6);
var listStr = new List<string> { $"欢迎使用智慧校园,您本次登录的验证码是 {raRndNum}。" };
var result = yixintongSms.SendSmsToSingle(userEntity.F_Mobile, SmsType.LoginBind, listStr);
if (result.Result.code == "0")
{
redisCache.Write<string>(redisKey, raRndNum, new TimeSpan(0, 5, 0));
return Success(new { sendstate = true, msg = $"短信发送成功:{raRndNum}" });
}
logEntity = new LogEntity
{
F_CategoryId = 4,
F_OperateTypeId = "sms",
F_OperateType = "sms",
F_OperateAccount = "system",
F_ExecuteResult = 400,
F_ExecuteResultJson = "短信发送失败:" + result.Result.message + result.Result.errorType,
F_Description = "短信发送:" + userEntity.F_Mobile
};
logEntity.WriteLog();
return Fail("短信发送失败" + result.Result.message);
}
catch (Exception e)
{
logEntity = new LogEntity
{
F_CategoryId = 4,
F_OperateTypeId = "sms",
F_OperateType = "sms",
F_OperateAccount = "system",
F_ExecuteResult = 400,
F_ExecuteResultJson = "短信发送失败:" + e.Message,
F_Description = "短信发送:" + userEntity.F_Mobile
};
logEntity.WriteLog();
return Fail("短信发送失败" + e.Message);
}
}

/// <summary>
/// 判断是否需要发送验证码
/// </summary>
/// <param name="account"></param>
/// <returns></returns>
[HttpPost]
public bool? GetAccountIsSendMsg(string account)
{
var userEntity = userBll.GetEntityByMobile(account);
if (userEntity == null)
{
userEntity = userBll.GetEntityByAccount(account);
if (userEntity == null)
{
return null;
}
}
//是否强密码验证
bool pwd = !string.IsNullOrEmpty(ConfigurationManager.AppSettings["verifypwd"]) && ConfigurationManager.AppSettings["verifypwd"] == "true";
//是否发送短信
bool whethersendsms = false;
if (!pwd)
{
#region 学生

var studententity = stuInfoBasicIBLL.GetStuInfoBasicEntityByStuNo(userEntity.F_Account);
if (studententity != null)
{
string queryjson = "{\"keywords\":\"" + userEntity.F_Mobile + "\"}";
LogEntity lastsendlog = LogBLL.GetlikeList(queryjson);
if (lastsendlog != null)
{
var aa = ((DateTime)lastsendlog.F_OperateTime - DateTime.Now).TotalMinutes;
//大于1天就要发短信了
if (Math.Abs(aa) > 1 * 24 * 60)
{
whethersendsms = true;
}
}
else
{
whethersendsms = true;
}
}

#endregion

#region 老师

var teacherentity = empInfoIBLL.GetEmpInfoEntityByEmpNo(userEntity.F_Account);
if (teacherentity != null)
{

string queryjson = "{\"keywords\":\"" + userEntity.F_Mobile + "\"}";
LogEntity lastsendlog = LogBLL.GetlikeList(queryjson);
if (lastsendlog != null)
{
var aa = ((DateTime)lastsendlog.F_OperateTime - DateTime.Now).TotalMinutes;
//大于1天就要发短信了
if (Math.Abs(aa) > 1 * 24 * 60)
{
whethersendsms = true;
}
}
else
{
whethersendsms = true;
}
}
#endregion
if (studententity == null && teacherentity == null && userEntity.F_SecurityLevel != 1)
{
return null;
}
}
return whethersendsms;
}

#endregion

/// <summary>
/// 获取IP
/// </summary>


+ 4
- 0
Learun.Framework.Ultimate V7/Learun.Application.Web/Learun.Application.Web.csproj 查看文件

@@ -7104,6 +7104,10 @@
<Project>{1d192591-b85a-41db-ae3a-4bf9765786c1}</Project>
<Name>Learun.Workflow.Engine</Name>
</ProjectReference>
<ProjectReference Include="..\Quanjiang.DigitalScholl.SendSms\Quanjiang.DigitalScholl.SendSms.csproj">
<Project>{55F0F08D-2A9F-489A-BE1B-2EEAE80687E6}</Project>
<Name>Quanjiang.DigitalScholl.SendSms</Name>
</ProjectReference>
<ProjectReference Include="..\Quanjiang.DigitalScholl.WebLicense\Quanjiang.DigitalScholl.WebLicense.csproj">
<Project>{4D841EAD-3FD8-4FAC-BC67-C4CE6C0D1181}</Project>
<Name>Quanjiang.DigitalScholl.WebLicense</Name>


+ 51
- 28
Learun.Framework.Ultimate V7/Learun.Application.Web/Views/Login/Default.cshtml 查看文件

@@ -26,21 +26,40 @@
width: 880px;
margin: auto;
}
.tips{
position: absolute;
left: 50%;
bottom: 35px;
color: #fff;
font-size: 13px;
margin-left: -91px;
}
.tips > *{
display: inline-block;
vertical-align: middle;
}
.tips img{
margin-right: 8px
}

.tips {
position: absolute;
left: 50%;
bottom: 35px;
color: #fff;
font-size: 13px;
margin-left: -91px;
}

.tips > * {
display: inline-block;
vertical-align: middle;
}

.tips img {
margin-right: 8px
}

.codeBtn {
border: 1px solid #DCDFE6;
padding: 6px 10px;
color: #606266;
font-size: 12px;
cursor: pointer;
border-radius: 2px;
position: absolute;
left: 260px;
top: 10px;
}

.codeBtn:hover {
border-color: #CBCFD5;
}
</style>
</head>

@@ -59,7 +78,7 @@
<div class="lr-login-middle">
@if (ViewBag.WeixinLoginSwitch)
{
<a href="/Login/LoginForWeixin?login=one" class="wxLogin down" title="使用微信登录">
<a href="/Login/LoginForWeixin?login=one" class="wxLogin down" title="使用微信登录">
<img src="~/Content/images/LoginPage/icon.png" alt="" /> 使用微信登录
</a>
}
@@ -88,12 +107,16 @@
</div>
<div class="lr-login-input">
<img class="inp_icon" src="~/Content/images/Login/default_psw0.png" alt=""><input id="lr_password" type="password" placeholder="密码">
</div>
<div class="lr-login-input lr-login-reg">
<img class="inp_icon" src="~/Content/images/Login/default_reg0.png" alt=""><input id="lr_verifycode_input" type="text" placeholder="验证码">
<img class="code" id="lr_verifycode_img" src="~/Login/VerifyCode" alt="点击切换验证码" title="点击切换验证码" />
<div class="lr-login-input" id="needCode" style="display:none;">
<img class="inp_icon" src="/Content/images/Login/default_psw0.png" alt=""><input id="lr_verifycode_input" type="text" placeholder="验证码">
<span id="sendCode" class="codeBtn">发送验证码</span>
</div>
@*<div class="lr-login-input lr-login-reg">
<img class="inp_icon" src="~/Content/images/Login/default_reg0.png" alt=""><input id="lr_verifycode_input" type="text" placeholder="验证码">
<img class="code" id="lr_verifycode_img" src="~/Login/VerifyCode" alt="点击切换验证码" title="点击切换验证码" />
</div>*@
<div class="lr-login-btn" id="lr_login_btn"><span>登录</span></div>
<br />

@@ -121,14 +144,14 @@
</div>
</div>
</div>
<div class="lr-login-footer" style="font-size: 12px;color: #fff;width: 880px;right:0;margin: auto;">
<div class="tips">
<img src="~/Content/images/LoginPage/tips3.png" alt=""> <span>建议使用360或谷歌浏览器</span>
</div>
<div style="position: relative;">
Copyright © 2019 数字化智慧校园 版权所有 <span class="OnlineUserNumBox" style="position: absolute;right: 0;top: 0;">在线用户数:<span class="OnlineUserNum">@ViewBag.OnlineUserNum</span>人</span>
</div>
<div class="lr-login-footer" style="font-size: 12px;color: #fff;width: 880px;right:0;margin: auto;">
<div class="tips">
<img src="~/Content/images/LoginPage/tips3.png" alt=""> <span>建议使用360或谷歌浏览器</span>
</div>
<div style="position: relative;">
Copyright © 2019 数字化智慧校园 版权所有 <span class="OnlineUserNumBox" style="position: absolute;right: 0;top: 0;">在线用户数:<span class="OnlineUserNum">@ViewBag.OnlineUserNum</span>人</span>
</div>
</div>
<img id="loginFoot" src="~/Content/images/logins/login1.png" alt="">
<script src="~/Content/jquery/jquery-1.10.2.min.js"></script>


+ 86
- 4
Learun.Framework.Ultimate V7/Learun.Application.Web/Views/Login/Default/Index.js 查看文件

@@ -12,6 +12,7 @@
var isBindAccountLogin = request('isBindAccountLogin');//切换账号登录
var bindUserName = request('bindUserName');//绑定账号
var bindUserPassword = request('bindUserPassword');//绑定账号密码
var needCode = false, hasSendCode = false, time = 0, timeT = '', isSending = false;
var lrPage = {
init: function () {
//切换账号登录时:登录页赋值,触发登录事件;
@@ -114,6 +115,15 @@
$("#lr_login_btn").on('click', function () {
lrPage.login();
});
// 发送验证码事件
$("#sendCode").on('click', function () {
lrPage.sendCode();
});
// 账户失去焦点事件
$("#lr_username").on('blur', function () {
lrPage.getNeedCode();
});

},
login: function () {
lrPage.tip();
@@ -159,6 +169,11 @@
dataType: "json",
success: function (res) {
if (res.code == 200) {
if (res.data.sendresult) {
needCode = true;
$("#needCode").show();
return;
}
if (source == "noLogin") {
window.location.href = "/SSOSystem/Index";
} else {
@@ -169,7 +184,6 @@
}
else
window.location.href = "/Home/Index";
//window.location.href = "/Home/Index";
}
}
else if (res.code == 400) {
@@ -177,8 +191,8 @@
lrPage.tip(res.info, true);
$('#errornum').val(res.data);
if (res.data >= 3) {
$('#lr_verifycode_input').parent().show();
$("#lr_verifycode_img").trigger('click');
//$('#lr_verifycode_input').parent().show();
//$("#lr_verifycode_img").trigger('click');
}
}
else if (res.code == 500) {
@@ -209,7 +223,75 @@
$tip.find('span').html(msg);
$tip.show();
}
}
},
sendCode: function () {
if (isSending || hasSendCode) return;
let phone = $('#lr_username').val()
if (!phone) {
lrPage.tip('请输入账户')
$('#lr_username').focus();
return
}
lrPage.tip();
isSending = true
$.ajax({
url: $.rootUrl + "/Login/LoginSendMessage",
data: { account: phone },
dataType: 'json',
type: "post",
success: (res) => {
isSending = false;
if (res.code == 200) {
lrpa.tip('短信已发送')

hasSendCode = true
time = 60
$('#sendCode').text(`重新发送(${time}s)`)
timeT = setInterval(() => {
time--
if (time == 0) {
hasSendCode = false
clearInterval(timeT)
timeT = ''
}
$('#sendCode').text(`重新发送${time ? '(' + time + 's' + ')' : ''}`)
}, 1000);
} else {
lrPage.tip(res.info)
}
}
});
},
getNeedCode: function () {
needCode = false;
$("#needCode").hide();
let phone = $('#lr_username').val()
if (!phone) {
lrPage.tip('请输入账户')
$('#lr_username').focus();
return
}
lrPage.tip();
$.ajax({
url: $.rootUrl + "/Login/LoginVerify",
data: { account: phone },
dataType: 'json',
type: "post",
success: (res) => {
if (res.code == 200) {
if (res.data.sendresult) {
needCode = true;
$("#needCode").show();
}
} else {
lrPage.tip(res.info)
needCode = false;
$("#needCode").hide();

}
}
});
},
};
$(function () {
lrPage.init();


+ 13
- 5
Learun.Framework.Ultimate V7/Learun.Application.WebApi/Modules/UserApi.cs 查看文件

@@ -91,6 +91,14 @@ namespace Learun.Application.WebApi
if (!isSend.Value)
return Fail("该用户不需要短信登录");
var userEntity = userIBLL.GetEntityByMobile(account.account);
if (userEntity == null)
{
userEntity = userIBLL.GetEntityByAccount(account.account);
if (userEntity == null)
{
return Fail("请检查登录账号信息");
}
}
LogEntity logEntity;
var redisKey = $"studentuserlogin_{userEntity.F_Mobile}";
var msg = redisCache.Read<string>(redisKey);
@@ -167,8 +175,8 @@ namespace Learun.Application.WebApi
if (lastsendlog != null)
{
var aa = ((DateTime)lastsendlog.F_OperateTime - DateTime.Now).TotalMinutes;
//大于30天就要发短信了
if (Math.Abs(aa) > 30 * 24 * 60)
//大于1天就要发短信了
if (Math.Abs(aa) > 1 * 24 * 60)
{
whethersendsms = true;
}
@@ -192,8 +200,8 @@ namespace Learun.Application.WebApi
if (lastsendlog != null)
{
var aa = ((DateTime)lastsendlog.F_OperateTime - DateTime.Now).TotalMinutes;
//大于7天就要发短信了
if (Math.Abs(aa) > 7 * 24 * 60)
//大于1天就要发短信了
if (Math.Abs(aa) > 1 * 24 * 60)
{
whethersendsms = true;
}
@@ -204,7 +212,7 @@ namespace Learun.Application.WebApi
}
}
#endregion
if (studententity == null && teacherentity == null)
if (studententity == null && teacherentity == null && userEntity.F_SecurityLevel != 1)
{
return null;
}


+ 1
- 1
Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/EducationalAdministration/OpenLessonPlan/OpenLessonPlanEntity.cs 查看文件

@@ -276,7 +276,7 @@ namespace Learun.Application.TwoDevelopment.EducationalAdministration
[Column("STATE")]
public int? State { get; set; }
/// <summary>
/// 考试类型
/// 考试类型(1考试,2考查)
/// </summary>
[Column("EXAMTYPE")]
public string ExamType { get; set; }


+ 5
- 0
Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/EducationalAdministration/StuScore/StuScoreEntity.cs 查看文件

@@ -433,6 +433,11 @@ namespace Learun.Application.TwoDevelopment.EducationalAdministration
/// </summary>
[NotMapped]
public string MoveType { get; set; }
/// <summary>
/// 考试类型
/// </summary>
[NotMapped]
public string ExamType { get; set; }


}


+ 30
- 15
Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/EducationalAdministration/StuScore/StuScoreService.cs 查看文件

@@ -1305,11 +1305,11 @@ where StuNo not in(Select StuNo from stuscore s where s.Academicyearno = sl.Acad
tableName = queryParam["TableName"].ToString();
}
var strSql = new StringBuilder();
strSql.Append(" select bb.AcademicYearNo,bb.Semester,bb.ClassNo,bb.LessonNo,bb.LessonName,bb.StuNo,bb.StuName ");
strSql.Append(" select bb.AcademicYearNo,bb.Semester,bb.ClassNo,bb.LessonNo,bb.LessonName,bb.StuNo,bb.StuName,op.ExamType ");
strSql.Append(" ,case when bb.Score >=60 then bb.Score else (case when sp.Score>= 60 then sp.Score else (case when spt.Score>=60 then spt.Score else bb.Score end) end) end as Score ");
strSql.Append(" ,case when bb.Score >=60 then convert(nvarchar(50),bb.Score) else (case when sp.Score>= 60 then convert(nvarchar(50),sp.Score)+'(补)' else (case when spt.Score>=60 then convert(nvarchar(50),spt.Score)+'(重)' else convert(nvarchar(50),bb.Score) end) end) end as ScoreFormat ");
strSql.Append(" from ( ");
strSql.Append($" select s.AcademicYearNo,s.Semester,s.ClassNo,s.LessonNo,s.LessonName,s.StuNo,sb.StuName,Max(s.Score) as Score from {tableName} s left join StuInfoBasic sb on s.StuNo=sb.StuNo ");
strSql.Append($" select s.AcademicYearNo,s.Semester,s.DeptNo,s.MajorNo,s.ClassNo,s.LessonNo,s.LessonName,s.LessonSortNo,s.Grade,s.StuNo,sb.StuName,Max(s.Score) as Score from {tableName} s left join StuInfoBasic sb on s.StuNo=sb.StuNo ");
strSql.Append(" where 1=1 and s.LessonSortNo='1' ");
if (!queryParam["AcademicYearNo"].IsEmpty())
{
@@ -1331,11 +1331,13 @@ where StuNo not in(Select StuNo from stuscore s where s.Academicyearno = sl.Acad
dp.Add("StuNo", queryParam["StuNo"].ToString(), DbType.String);
strSql.Append(" and s.StuNo=@StuNo ");
}
strSql.Append(" group by s.AcademicYearNo,s.Semester,s.ClassNo,s.LessonNo,s.LessonName,s.StuNo,sb.StuName ) as bb ");
strSql.Append(" group by s.AcademicYearNo,s.Semester,s.DeptNo,s.MajorNo,s.ClassNo,s.LessonNo,s.LessonName,s.LessonSortNo,s.Grade,s.StuNo,sb.StuName ) as bb ");
strSql.Append(" left join StuScoreNotPass sp on bb.AcademicYearNo=sp.AcademicYearNo and bb.Semester=sp.Semester and bb.ClassNo=sp.ClassNo and bb.LessonNo=sp.LessonNo and bb.LessonName=sp.LessonName and bb.StuNo=sp.StuNo ");
strSql.Append(" left join StuScoreNotPassTwo spt on bb.AcademicYearNo=spt.AcademicYearNo and bb.Semester=spt.Semester and bb.ClassNo=spt.ClassNo and bb.LessonNo=spt.LessonNo and bb.LessonName=spt.LessonName and bb.StuNo=spt.StuNo ");
strSql.Append(" left join OpenLessonPlan op on bb.AcademicYearNo=op.AcademicYearNo and bb.Semester=op.Semester and bb.DeptNo=op.DeptNo and bb.MajorNo=op.MajorNo and bb.LessonNo=op.LessonNo and bb.Grade=op.Grade and bb.LessonSortNo=op.LessonSortNo ");

return this.BaseRepository("CollegeMIS").FindList<StuScoreEntity>(strSql.ToString(), dp);

}
catch (Exception ex)
{
@@ -1364,7 +1366,7 @@ where StuNo not in(Select StuNo from stuscore s where s.Academicyearno = sl.Acad
var xq = queryParam["Semester"].ToString();
var bj = queryParam["ClassNo"].ToString();
var ssentity = this.BaseRepository("CollegeMIS").FindEntity<StuScoreEntity>(x => x.AcademicYearNo == xn && x.Semester == xq && x.ClassNo == bj);
if(ssentity == null) return new List<string>();
if (ssentity == null) return new List<string>();

var majorNo = ssentity.MajorNo;
// 虚拟参数
@@ -1372,11 +1374,11 @@ where StuNo not in(Select StuNo from stuscore s where s.Academicyearno = sl.Acad
var tableName = "StuScore";

var strSql = new StringBuilder();
strSql.Append(" select bb.AcademicYearNo,bb.Semester,bb.ClassNo,bb.LessonNo,bb.LessonName,bb.StuNo,bb.StuName ");
strSql.Append(" select bb.AcademicYearNo,bb.Semester,bb.ClassNo,bb.LessonNo,bb.LessonName,bb.StuNo,bb.StuName,op.ExamType ");
strSql.Append(" ,case when bb.Score >=60 then bb.Score else (case when sp.Score>= 60 then sp.Score else (case when spt.Score>=60 then spt.Score else bb.Score end) end) end as Score ");
strSql.Append(" ,case when bb.Score >=60 then convert(nvarchar(50),bb.Score) else (case when sp.Score>= 60 then convert(nvarchar(50),sp.Score)+'(补)' else (case when spt.Score>=60 then convert(nvarchar(50),spt.Score)+'(重)' else convert(nvarchar(50),bb.Score) end) end) end as ScoreFormat ");
strSql.Append(" from ( ");
strSql.Append($" select s.AcademicYearNo,s.Semester,s.ClassNo,s.LessonNo,s.LessonName,s.StuNo,sb.StuName,Max(s.Score) as Score from {tableName} s left join StuInfoBasic sb on s.StuNo=sb.StuNo ");
strSql.Append($" select s.AcademicYearNo,s.Semester,s.DeptNo,s.MajorNo,s.ClassNo,s.LessonNo,s.LessonName,s.LessonSortNo,s.Grade,s.StuNo,sb.StuName,Max(s.Score) as Score from {tableName} s left join StuInfoBasic sb on s.StuNo=sb.StuNo ");
strSql.Append($" where 1=1 and s.LessonSortNo='1' and s.MajorNo='{majorNo}' ");
if (!queryParam["AcademicYearNo"].IsEmpty())
{
@@ -1388,14 +1390,15 @@ where StuNo not in(Select StuNo from stuscore s where s.Academicyearno = sl.Acad
dp.Add("Semester", queryParam["Semester"].ToString(), DbType.String);
strSql.Append(" and s.Semester=@Semester ");
}
strSql.Append(" group by s.AcademicYearNo,s.Semester,s.ClassNo,s.LessonNo,s.LessonName,s.StuNo,sb.StuName ) as bb ");
strSql.Append(" group by s.AcademicYearNo,s.Semester,s.DeptNo,s.MajorNo,s.ClassNo,s.LessonNo,s.LessonName,s.LessonSortNo,s.Grade,s.StuNo,sb.StuName ) as bb ");
strSql.Append(" left join StuScoreNotPass sp on bb.AcademicYearNo=sp.AcademicYearNo and bb.Semester=sp.Semester and bb.ClassNo=sp.ClassNo and bb.LessonNo=sp.LessonNo and bb.LessonName=sp.LessonName and bb.StuNo=sp.StuNo ");
strSql.Append(" left join StuScoreNotPassTwo spt on bb.AcademicYearNo=spt.AcademicYearNo and bb.Semester=spt.Semester and bb.ClassNo=spt.ClassNo and bb.LessonNo=spt.LessonNo and bb.LessonName=spt.LessonName and bb.StuNo=spt.StuNo ");
strSql.Append(" left join OpenLessonPlan op on bb.AcademicYearNo=op.AcademicYearNo and bb.Semester=op.Semester and bb.DeptNo=op.DeptNo and bb.MajorNo=op.MajorNo and bb.LessonNo=op.LessonNo and bb.Grade=op.Grade and bb.LessonSortNo=op.LessonSortNo ");

var lst= this.BaseRepository("CollegeMIS").FindList<StuScoreEntity>(strSql.ToString(), dp);
var gp = lst.GroupBy(x => x.StuNo).Select(x => new { x.Key,TotalScore=x.Sum(a=>a.Score)}).OrderByDescending(x => x.TotalScore);
var rs=gp.Select(x=>x.Key).ToList();
var lst = this.BaseRepository("CollegeMIS").FindList<StuScoreEntity>(strSql.ToString(), dp);
var gp = lst.GroupBy(x => x.StuNo).Select(x => new { x.Key, TotalScore = x.Where(s => s.ExamType == "1").Sum(a => a.Score) }).OrderByDescending(x => x.TotalScore);
var rs = gp.Select(x => x.Key).ToList();
return rs;
}
catch (Exception ex)
@@ -2090,9 +2093,9 @@ where StuNo not in(Select StuNo from stuscore s where s.Academicyearno = sl.Acad
tableName = queryParam["TableName"].ToString();
}
var strSql = new StringBuilder();
strSql.Append(" select bb.AcademicYearNo,bb.Semester,bb.LessonSortNo,bb.LessonNo,bb.LessonName,bb.StuNo,bb.StuName,bb.MajorNo,bb.ClassNo,li.StudyScore,ls.LessonSortName,bb.Score,(case when sp.Score>=60 then 60 else sp.score end) as ScoreOfNotPass,(case when spt.Score>=60 then 60 else spt.Score end) as ScoreOfNotPassTwo,cm.MajorName,ci.ClassName ");
strSql.Append(" select bb.AcademicYearNo,bb.Semester,bb.LessonSortNo,bb.LessonNo,bb.LessonName,bb.StuNo,bb.StuName,bb.MajorNo,bb.ClassNo,li.StudyScore,ls.LessonSortName,bb.Score,bb.Remark,(case when sp.Score>=60 then 60 else sp.score end) as ScoreOfNotPass,(case when spt.Score>=60 then 60 else spt.Score end) as ScoreOfNotPassTwo,cm.MajorName,ci.ClassName ");
strSql.Append(" from ( ");
strSql.Append($"select s.AcademicYearNo,s.Semester,s.LessonSortNo,s.LessonNo,s.LessonName,s.StuNo,sb.StuName,s.MajorNo,s.ClassNo,Max(s.Score) as Score from {tableName} s left join StuInfoBasic sb on s.StuNo=sb.StuNo ");
strSql.Append($"select s.AcademicYearNo,s.Semester,s.LessonSortNo,s.LessonNo,s.LessonName,s.StuNo,sb.StuName,s.MajorNo,s.ClassNo,Max(s.Score) as Score,MAX(s.Remark) as Remark from {tableName} s left join StuInfoBasic sb on s.StuNo=sb.StuNo ");
strSql.Append(" where 1=1 and s.CheckMark='1' ");
if (!queryParam["AcademicYearNo"].IsEmpty())
{
@@ -2140,7 +2143,13 @@ where StuNo not in(Select StuNo from stuscore s where s.Academicyearno = sl.Acad
foreach (var item in temp)
{
//专业排名
var ml = this.BaseRepository("CollegeMIS").FindList<StuScoreEntity>(x => x.AcademicYearNo == item.AcademicYearNo && x.Semester == item.Semester && x.LessonSortNo == "1" && x.MajorNo == item.MajorNo && x.CheckMark == "1");
//var ml = this.BaseRepository("CollegeMIS").FindList<StuScoreEntity>(x => x.AcademicYearNo == item.AcademicYearNo && x.Semester == item.Semester && x.LessonSortNo == "1" && x.MajorNo == item.MajorNo && x.CheckMark == "1");
//只计算考试类课程
var ml = this.BaseRepository("CollegeMIS").FindList<StuScoreEntity>($@"select s.* from StuScore s
left join OpenLessonPlan p on s.AcademicYearNo=p.AcademicYearNo and s.Semester=p.Semester and s.OpenLessonDeptNo=p.DeptNo
and s.OpenLessonMajorNo=p.MajorNo and s.Grade=p.Grade and s.LessonNo=p.LessonNo and s.LessonSortNo=p.LessonSortNo
where s.AcademicYearNo='{item.AcademicYearNo}' and s.Semester='{item.Semester}' and s.LessonSortNo='1' and s.CheckMark='1' and s.MajorNo='{item.MajorNo}'
and p.ExamType='1'");
var mlGroup = ml.GroupBy(x => x.StuNo).Select(x => new
{
StuNo = x.Key,
@@ -2152,7 +2161,13 @@ where StuNo not in(Select StuNo from stuscore s where s.Academicyearno = sl.Acad
item.RankInMajor = rank + 1;
}
//班级排名
var cl = this.BaseRepository("CollegeMIS").FindList<StuScoreEntity>(x => x.AcademicYearNo == item.AcademicYearNo && x.Semester == item.Semester && x.LessonSortNo == "1" && x.ClassNo == item.ClassNo && x.CheckMark == "1");
//var cl = this.BaseRepository("CollegeMIS").FindList<StuScoreEntity>(x => x.AcademicYearNo == item.AcademicYearNo && x.Semester == item.Semester && x.LessonSortNo == "1" && x.ClassNo == item.ClassNo && x.CheckMark == "1");
//只计算考试类课程
var cl = this.BaseRepository("CollegeMIS").FindList<StuScoreEntity>($@"select s.* from StuScore s
left join OpenLessonPlan p on s.AcademicYearNo=p.AcademicYearNo and s.Semester=p.Semester and s.OpenLessonDeptNo=p.DeptNo
and s.OpenLessonMajorNo=p.MajorNo and s.Grade=p.Grade and s.LessonNo=p.LessonNo and s.LessonSortNo=p.LessonSortNo
where s.AcademicYearNo='{item.AcademicYearNo}' and s.Semester='{item.Semester}' and s.LessonSortNo='1' and s.CheckMark='1' and s.ClassNo='{item.ClassNo}'
and p.ExamType='1'");
var clGroup = cl.GroupBy(x => x.StuNo).Select(x => new
{
StuNo = x.Key,


+ 1
- 0
Learun.Framework.Ultimate V7/LearunApp-2.2.0/pages/login.vue 查看文件

@@ -344,6 +344,7 @@
},
// 获取是否需要验证码
getNeedCode() {
this.needCode = false
if (!this.username) return
this.POST('learun/adms/user/loginverify', {
account: this.username


正在加载...
取消
保存