Commit afdf6a2e authored by 罗超's avatar 罗超

Merge branch 'master' of http://gitlab.oytour.com/Kui2/education

parents 806e6f5f 5cbc1a71
using Edu.CacheManager.Base;
using Edu.Common.Enum;
using Edu.Model.CacheModel;
using Edu.Repository.User;
using System;
using System.Linq;
namespace Edu.Cache.User
{
/// <summary>
/// redis缓存
/// </summary>
public class AppletStudentReidsCache
{
/// <summary>
/// 使用redis第几号库
/// </summary>
public static readonly int REDIS_DB3 = 3;
static readonly RedisHelper redis = new RedisHelper(REDIS_DB3);
/// <summary>
/// 设置缓存
/// </summary>
/// <param name="model"></param>
public static void UserInfoSet(string cacheKey, AppletStudentInfo model, int JwtExpirTime)
{
try
{
TimeSpan ts = GetExpirTime(JwtExpirTime);
redis.StringSet<AppletStudentInfo>(cacheKey, model, ts);
}
catch (Exception ex)
{
Common.Plugin.LogHelper.Write(ex, "AppletStudentInfoSet缓存设置失败");
}
}
/// <summary>
/// 获取缓存时长
/// </summary>
/// <param name="JwtExpirTime"></param>
/// <returns></returns>
private static TimeSpan GetExpirTime(int JwtExpirTime)
{
DateTime dt = DateTime.Now;
DateTime dt2 = DateTime.Now;
TimeSpan ts = dt.AddSeconds(JwtExpirTime) - dt2;
return ts;
}
/// <summary>
/// 判断key是否存在
/// </summary>
/// <param name="cacheKey"></param>
/// <returns></returns>
public static bool Exists(string cacheKey)
{
return redis.KeyExists(cacheKey);
}
/// <summary>
/// 设置缓存
/// </summary>
/// <param name="cacheKey"></param>
/// <param name="Data"></param>
/// <param name="JwtExpirTime"></param>
public static void Set(string cacheKey, object Data, int JwtExpirTime)
{
try
{
TimeSpan ts = GetExpirTime(JwtExpirTime);
redis.StringSet(cacheKey, Data, ts);
}
catch (Exception)
{
}
}
/// <summary>
/// 账号仓储层对象
/// </summary>
private static readonly RB_AccountRepository accountRepository = new RB_AccountRepository();
/// <summary>
/// 获取用户登录信息
/// </summary>
/// <param name="Id">账号Id</param>
/// <param name="apiRequestFromEnum">请求来源</param>
/// <returns></returns>
public static AppletStudentInfo GetUserLoginInfo(object Id, ApiRequestFromEnum apiRequestFromEnum = ApiRequestFromEnum.AppStudent)
{
AppletStudentInfo userInfo = null;
if (Id != null)
{
string cacheKey = Cache.CacheKey.AppletStudent_Login_Key + Id.ToString();
try
{
userInfo = redis.StringGet<AppletStudentInfo>(cacheKey);
}
catch (Exception ex)
{
Common.Plugin.LogHelper.Write(ex, "GetUserLoginInfo");
}
if (userInfo == null)
{
Int32.TryParse(Id.ToString(), out int NewId);
if (NewId > 0)
{
string token = "";
var model = accountRepository.GetAccountListExtRepository(new Model.ViewModel.User.RB_Account_ViewModel()
{
Id = NewId
})?.FirstOrDefault();
if (model != null)
{
userInfo = new AppletStudentInfo
{
Id = model.Id,
Group_Id = model.Group_Id,
School_Id = model.School_Id,
AccountName = model.AccountName,
GroupName = model.GroupName,
SchoolName = model.SchoolName,
Token = token,
ApiRequestFromEnum = apiRequestFromEnum
};
UserInfoSet(Cache.CacheKey.AppletStudent_Login_Key + Id.ToString(), userInfo, Common.Config.JwtExpirTime);
}
}
}
}
else
{
userInfo = new AppletStudentInfo();
}
return userInfo;
}
}
}
\ No newline at end of file
......@@ -17,6 +17,11 @@ namespace Edu.Cache
/// </summary>
public static string AppStudent_Login_Key = "App_Student_Login_";
/// <summary>
///小程序学生登录缓存Key
/// </summary>
public static string AppletStudent_Login_Key = "Applet_Student_Login_";
/// <summary>
/// 短信号码缓存Key
/// </summary>
......
......@@ -51,5 +51,11 @@ namespace Edu.Common.Enum
[EnumField("App学生端")]
AppStudent = 103,
/// <summary>
/// 小程序学生端
/// </summary>
[EnumField("小程序学生端")]
AppletStudent = 104,
}
}
\ No newline at end of file
......@@ -683,5 +683,43 @@ namespace Edu.Common
}
return data;
}
/// <summary>
/// 解析手机号码
/// </summary>
/// <param name="encryptedDataStr"></param>
/// <param name="key"></param>
/// <param name="iv"></param>
/// <returns></returns>
public static string AES_decrypt(string encryptedDataStr, string key, string iv)
{
RijndaelManaged rijalg = new RijndaelManaged();
//-----------------
//设置 cipher 格式 AES-128-CBC
rijalg.KeySize = 128;
rijalg.Padding = PaddingMode.PKCS7;
rijalg.Mode = CipherMode.CBC;
rijalg.Key = Convert.FromBase64String(key);
rijalg.IV = Convert.FromBase64String(iv);
byte[] encryptedData = Convert.FromBase64String(encryptedDataStr);
//解密
ICryptoTransform decryptor = rijalg.CreateDecryptor(rijalg.Key, rijalg.IV);
string result;
using (MemoryStream msDecrypt = new MemoryStream(encryptedData))
{
using (CryptoStream csDecrypt = new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read))
{
using (StreamReader srDecrypt = new StreamReader(csDecrypt))
{
result = srDecrypt.ReadToEnd();
}
}
}
return result;
}
}
}
\ No newline at end of file
......@@ -8,10 +8,10 @@ using System.Text;
namespace Edu.Common.Plugin
{
/// <summary>
/// 微信帮助类
/// </summary>
public class WeChatHelper
/// <summary>
/// 微信帮助类
/// </summary>
public class WeChatHelper
{
/// <summary>
/// 获取access_token
......@@ -19,7 +19,7 @@ namespace Edu.Common.Plugin
/// <param name="AppID"></param>
/// <param name="AppSecret"></param>
/// <returns></returns>
public static string GetAccessToken(string AppID,string AppSecret)
public static string GetAccessToken(string AppID, string AppSecret)
{
string token = string.Empty;
try
......@@ -28,12 +28,12 @@ namespace Edu.Common.Plugin
string appID = AppID;
string appSecret = AppSecret;
//获取微信token
string token_url = wechatapi+"cgi-bin/token?grant_type=client_credential&appid=" + appID + "&secret=" + appSecret;
string token_url = wechatapi + "cgi-bin/token?grant_type=client_credential&appid=" + appID + "&secret=" + appSecret;
HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(token_url);
//请求方式
myRequest.Method = "GET";
HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse();
StreamReader reader = new StreamReader(myResponse.GetResponseStream(),Encoding.UTF8);
StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8);
string content = reader.ReadToEnd();
myResponse.Close();
reader.Dispose();
......@@ -56,11 +56,11 @@ namespace Edu.Common.Plugin
/// <param name="url">跳转地址</param>
/// <param name="width">宽度</param>
/// <returns></returns>
public static string GetWeChatQRCode(string token,string url, int width)
public static string GetWeChatQRCode(string token, string url, int width)
{
string result = "";
string tempPath = "\\upfile\\temporary\\" + DateTime.Now.ToString("yyyyMMdd") + "\\";
string basepath = AppContext.BaseDirectory+ tempPath;
string basepath = AppContext.BaseDirectory + tempPath;
string fileName = DateTime.Now.Ticks + ".jpg";
if (!Directory.Exists(basepath))
{
......@@ -72,13 +72,123 @@ namespace Edu.Common.Plugin
string apiurl = "https://api.weixin.qq.com/wxa/getwxacode?access_token=" + token;
var postData = new
{
path= url,
path = url,
width
};
var Robj = HttpHelper.HttpPostImageToBase64(apiurl, JsonHelper.Serialize(postData),path: basepath + fileName, resultType:0);
var Robj = HttpHelper.HttpPostImageToBase64(apiurl, JsonHelper.Serialize(postData), path: basepath + fileName, resultType: 0);
result = "/upfile/temporary/" + DateTime.Now.ToString("yyyyMMdd") + "/" + fileName;
}
return result;
}
/// <summary>
/// 获取微信用户OpenId
/// </summary>
/// <param name="AppId"></param>
/// <param name="AppSecret"></param>
/// <param name="Code"></param>
/// <returns></returns>
public static result GetWeChatOpenId(string AppId, string AppSecret, string Code)
{
// string result = "";
result userInfo = new result();
string resultInfo = "";
try
{
//请求路径
string url = "https://api.weixin.qq.com/sns/jscode2session?appid=" + AppId + "&secret=" + AppSecret + "&js_code=" + Code + "&grant_type=authorization_code";
resultInfo = Common.Plugin.HttpHelper.HttpGet(url);
if (resultInfo != null && !string.IsNullOrEmpty(resultInfo))
{
userInfo = JsonConvert.DeserializeObject<result>(resultInfo);
}
}
catch (Exception ex)
{
//GetWeChatOpenId:result={"errcode":40163,"errmsg":"code been used, hints: [ req_id: AHGbGiqNe-OhJh.a ]"}&&Code=051S1Ykl2wYCF64U7gnl2AK6ga0S1Yk2
//Code过期
Common.Plugin.LogHelper.Write(ex, string.Format("GetWeChatOpenId:result={0}&&Code={1}", resultInfo, Code));
}
return userInfo;
}
}
/// <summary>
/// 获取用心信息帮助类
/// </summary>
public class GetUsersHelper
{
/// <summary>
/// 获取链接返回数据
/// </summary>
/// <param name="Url">链接</param>
/// <param name="type">请求类型</param>
/// <returns></returns>
public string GetUrltoHtml(string Url, string type)
{
try
{
System.Net.WebRequest wReq = System.Net.WebRequest.Create(Url);
// Get the response instance.
System.Net.WebResponse wResp = wReq.GetResponse();
System.IO.Stream respStream = wResp.GetResponseStream();
// Dim reader As StreamReader = New StreamReader(respStream)
using (System.IO.StreamReader reader = new System.IO.StreamReader(respStream, Encoding.GetEncoding(type)))
{
return reader.ReadToEnd();
}
}
catch (System.Exception ex)
{
return ex.Message;
}
}
}
#region 实体类
/// <summary>
/// 微信小程序验证返回结果
/// </summary>
public class result
{
/// <summary>
/// openid
/// </summary>
public string openid { get; set; }
/// <summary>
/// openid
/// </summary>
public string unionid { get; set; }
/// <summary>
/// session_key
/// </summary>
public string session_key { get; set; }
/// <summary>
/// 错误状态码
/// </summary>
public string errcode { get; set; }
/// <summary>
/// 错误提示信息
/// </summary>
public string errmsg { get; set; }
}
#endregion
}
using Edu.Common.Enum;
using Edu.Common.Enum.User;
using Edu.Model.ViewModel.System;
using System.Collections.Generic;
namespace Edu.Model.CacheModel
{
/// <summary>
/// 小程序学生用户缓存
/// </summary>
public class AppletStudentInfo
{
/// <summary>
/// 账号编号
/// </summary>
public int Id { get; set; }
/// <summary>
/// 集团编号
/// </summary>
public int Group_Id { get; set; }
/// <summary>
/// 学校编号
/// </summary>
public int School_Id { get; set; }
/// <summary>
/// 账号名称
/// </summary>
public string AccountName { get; set; }
/// <summary>
/// 请求来源
/// </summary>
public ApiRequestFromEnum ApiRequestFromEnum { get; set; }
/// <summary>
/// 账号类型(1-管理端,2,-教师端,3-助教,4-学生)
/// </summary>
public AccountTypeEnum AccountType { get; set; }
/// <summary>
/// 对应的账户id
/// </summary>
public int AccountId { get; set; }
/// <summary>
/// 学校名称
/// </summary>
public string SchoolName { get; set; }
/// <summary>
/// 集团名称
/// </summary>
public string GroupName { get; set; }
/// <summary>
/// Token验证
/// </summary>
public string Token { get; set; }
/// <summary>
/// 课程名称
/// </summary>
public string CourseName { get; set; }
/// <summary>
/// 老师
/// </summary>
public string TeacherName { get; set; }
/// <summary>
/// 集团Logo
/// </summary>
public string GroupLogo { get; set; }
/// <summary>
/// 用户头像
/// </summary>
public string UserIcon { get; set; }
/// <summary>
/// 上传配置
/// </summary>
public object UploadConfig { get; set; }
/// <summary>
/// 激活状态
/// </summary>
public int ActivationStatus { get; set; }
/// <summary>
/// 是否冻结,1-是
/// </summary>
public int IsFrozen { get; set; }
/// <summary>
/// 服务人员电话
/// </summary>
public string EnterPhone { get; set; }
}
}
\ No newline at end of file
......@@ -62,5 +62,10 @@ namespace Edu.Model.Entity.Exam
/// 删除状态
/// </summary>
public int Status { get; set; }
/// <summary>
/// 组卷类型(1-智能组卷,2-手动组卷,3-智能导入)
/// </summary>
public int GenerateType { get; set; }
}
}
......@@ -86,6 +86,12 @@ namespace Edu.Model.Entity.User
/// 微信openid
/// </summary>
public string OpenId { get; set; }
/// <summary>
/// 微信Unionid
/// </summary>
public string UnionId { get; set; }
/// <summary>
/// 学生激活状态0-未激活,1-已激活
/// </summary>
......
......@@ -82,5 +82,9 @@ namespace Edu.Model.ViewModel.BackClass
/// 退课协议编号
/// </summary>
public string ProtocolNum { get; set; }
public int IsCompanySeal { get; set; }
}
}
......@@ -56,6 +56,11 @@ namespace Edu.Model.ViewModel.Grade
/// </summary>
public string CourseName { get; set; }
/// <summary>
/// 课程id
/// </summary>
public int CourseId { get; set; }
/// <summary>
/// 班级类型
/// </summary>
......@@ -165,6 +170,10 @@ namespace Edu.Model.ViewModel.Grade
public int OrderBy { get; set; }
/// <summary>
/// 章节信息
/// </summary>
public List<ChapterTree_ViewModel> Chapter { get; set; }
/// 班级数量
/// </summary>
public int ClassCount { get; set; }
......
......@@ -61,6 +61,11 @@ namespace Edu.Model.ViewModel.User
/// </summary>
public string SName { get; set; }
/// <summary>
/// 所属校区id
/// </summary>
public int SId { get; set; }
/// <summary>
/// 地区名称【省/市/区县】
/// </summary>
......@@ -75,5 +80,40 @@ namespace Edu.Model.ViewModel.User
/// 班级名称
/// </summary>
public string ClassName { get; set; }
/// <summary>
/// 班级id
/// </summary>
public int ClassId { get; set; }
/// <summary>
/// 课程id
/// </summary>
public int CourseId { get; set; }
/// <summary>
/// 课程
/// </summary>
public string CourseName { get; set; }
/// <summary>
/// 班级状态
/// </summary>
public int ClassStatus { get; set; }
/// <summary>
/// 老师名称
/// </summary>
public string TeacherName { get; set; }
/// <summary>
/// 销售人员
/// </summary>
public int EnterID { get; set; }
/// <summary>
/// 剩余课时
/// </summary>
public int SurplusHours { get; set; }
}
}
\ No newline at end of file
This diff is collapsed.
......@@ -643,13 +643,31 @@ namespace Edu.Module.Course
return treeList;
}
/// <summary>
/// 递归遍历所有章节
/// 查询符合的课程章节
/// </summary>
/// <param name="sourceList">源数据</param>
/// <param name="parentId">父节点编号</param>
/// <param name="courseId"></param>
/// <param name="currentHours"></param>
/// <returns></returns>
public List<ChapterTree_ViewModel> GetChapterChild(List<RB_Course_Chapter_ViewModel> sourceList, int parentId)
public List<ChapterTree_ViewModel> GetMatchChapterRepository(int courseId, string currentHours)
{
var list = chapterRepository.GetMatchChapterRepository(courseId, currentHours);
list.ForEach(x =>
{
x.SerialNumber = int.Parse(x.ChapterNo.Replace(".", ""));
});
List<ChapterTree_ViewModel> treeList = GetChapterChild(list, 0);
return treeList;
}
/// <summary>
/// 递归遍历所有章节
/// </summary>
/// <param name="sourceList">源数据</param>
/// <param name="parentId">父节点编号</param>
/// <returns></returns>
public List<ChapterTree_ViewModel> GetChapterChild(List<RB_Course_Chapter_ViewModel> sourceList, int parentId)
{
List<ChapterTree_ViewModel> resultList = new List<ChapterTree_ViewModel>();
//获取下级节点
......
......@@ -744,5 +744,26 @@ namespace Edu.Module.Course
}
return flag;
}
}
/// <summary>
/// 根据学生id获取学生的有效合同信息
/// </summary>
/// <param name="teacherIds"></param>
/// <returns></returns>
public List<RB_Education_Contract_ViewModel> GetStudentContractInfo(int Student_Id, int Group_Id)
{
return education_ContractRepository.GetStudentContractInfo(Student_Id, Group_Id);
}
/// <summary>
/// 根据学生id获取学生的退课合同信息
/// </summary>
/// <param name="teacherIds"></param>
/// <returns></returns>
public List<Model.ViewModel.BackClass.RB_Student_BackClass_ViewModel> GetStudentBackClassInfo(int Student_Id, int Group_Id)
{
return student_BackClassRepository.GetStudentBackClassInfo(Student_Id, Group_Id);
}
}
}
\ No newline at end of file
......@@ -167,7 +167,7 @@ namespace Edu.Module.Exam
// 定义正则表达式用来匹配 img 标签
string str = @"<img\b[^<>]*?\bsrc[\s\t\r\n]*=[\s\t\r\n]*[""']?[\s\t\r\n]*(?<imgUrl>[^\s\t\r\n""'<>]*)[^<>]*?/?[\s\t\r\n]*>";
var extModel = examination_PaperRepository.GetEntity<RB_Examination_Paper_ViewModel>(PaperId);
if (extModel != null&& extModel.PaperId>0)
if (extModel != null && extModel.PaperId > 0)
{
extModel.GroupList = GetExaminationGroupListModule(new RB_Examination_Group_ViewModel()
{
......@@ -177,7 +177,7 @@ namespace Edu.Module.Exam
{
PaperId = extModel.PaperId
});
if (extModel.GroupList != null && extModel.GroupList.Count > 0 && detailsList!=null && detailsList.Count>0)
if (extModel.GroupList != null && extModel.GroupList.Count > 0 && detailsList != null && detailsList.Count > 0)
{
foreach (var gItem in extModel.GroupList)
{
......@@ -222,5 +222,16 @@ namespace Edu.Module.Exam
{
return examination_DetailsRepository.Delete(Id) > 0;
}
/// <summary>
/// 根据分组删除分组和题目
/// </summary>
/// <param name="GId"></param>
/// <returns></returns>
public bool RemoveExamnationGroupModule(int GId)
{
return false;
}
}
}
......@@ -78,6 +78,27 @@ namespace Edu.Module.User
return accountRepository.GetStudentExt(query);
}
/// <summary>
/// 更新账户的UnionId
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
public bool UpdateAccountUnionId(RB_Account_ViewModel model)
{
bool flag = false;
if (model.Id > 0)
{
Dictionary<string, object> fileds = new Dictionary<string, object>()
{
{nameof(RB_Account_ViewModel.OpenId),model.OpenId.Trim() },
{nameof(RB_Account_ViewModel.UnionId),model.UnionId.Trim() }
};
flag = accountRepository.Update(fileds, new WhereHelper(nameof(RB_Account_ViewModel.Id), model.Id));
}
return flag;
}
/// <summary>
/// 添加修改账号
/// </summary>
......
......@@ -267,5 +267,17 @@ namespace Edu.Module.User
{
return studentRepository.GetListByStudentId(Student_Id, Group_Id);
}
/// <summary>
/// 根据学生id获取学生的班级课程学校信息
/// </summary>
/// <param name="teacherIds"></param>
/// <returns></returns>
public List<RB_Student_ViewModel> GetStudentInfo(int Student_Id, int Group_Id)
{
return studentRepository.GetStudentInfo(Student_Id, Group_Id);
}
}
}
......@@ -135,9 +135,9 @@ WHERE 1=1 ");
backprotocolFileds.Add(nameof(RB_BackClass_Protocol_ViewModel.PartyBSignDate), DateTime.Now);
}
//更新退课协议审核状态
flag= backClass_ProtocolRepository.Update(backprotocolFileds, new WhereHelper(nameof(RB_BackClass_Protocol_ViewModel.BackId), backModel.BackId));
flag = backClass_ProtocolRepository.Update(backprotocolFileds, new WhereHelper(nameof(RB_BackClass_Protocol_ViewModel.BackId), backModel.BackId));
}
if (flag)
{
var guestList = order_GuestRepository.GetOrderGuestListRepository(new RB_Order_Guest_ViewModel() { OrderId = backModel.OrderId });
......@@ -201,5 +201,22 @@ WHERE 1=1 ");
flag = order_GuestRepository.Update(guestFileds, new WhereHelper(nameof(RB_Order_Guest_ViewModel.Id), model.OrderGuestId));
return flag;
}
/// <summary>
/// 根据学生id获取学生的退课合同信息
/// </summary>
/// <param name="teacherIds"></param>
/// <returns></returns>
public List<RB_Student_BackClass_ViewModel> GetStudentBackClassInfo(int Student_Id, int Group_Id)
{
var parameters = new DynamicParameters();
StringBuilder builder = new StringBuilder();
builder.AppendFormat($@"SELECT sbc.*,bcp.ProtocolNum,bcp.Id as BackClassProtocolId ,bcp.IsCompanySeal from rb_student_backclass as sbc
LEFT JOIN rb_backclass_protocol as bcp on sbc.BackId=bcp.BackId
LEFT JOIN rb_student_orderguest as sog on sog.GuestId=sbc.GuestId
where bcp.AuditStatus=2 and sog.Student_Id={Student_Id} and sbc.Group_Id={Group_Id}");
return Get<RB_Student_BackClass_ViewModel>(builder.ToString(), parameters).ToList();
}
}
}
\ No newline at end of file
......@@ -442,5 +442,23 @@ left join {datebaseStr}.rb_tradeway t on f.FrID = t.FinanceId
return GetPage<RB_Education_Contract_ViewModel>(pageIndex, pageSize, out rowsCount, sql, parameters).ToList();
}
/// <summary>
/// 根据学生id获取学生的有效合同信息
/// </summary>
/// <param name="teacherIds"></param>
/// <returns></returns>
public List<RB_Education_Contract_ViewModel> GetStudentContractInfo(int Student_Id, int Group_Id)
{
var parameters = new DynamicParameters();
StringBuilder builder = new StringBuilder();
builder.AppendFormat($@"SELECT sog.Student_Id,ec.* from rb_education_contract as ec LEFT JOIN rb_order as o on ec.OrderId=o.OrderId
LEFT JOIN rb_order_guest as og on og.OrderId=o.OrderId
LEFT JOIN rb_student_orderguest as sog on sog.GuestId=og.Id
where ec.Status =2 and og.`Status`=0 and o.OrderState =1 and sog.`Status`=0 and sog.Student_Id={Student_Id} and o.Group_Id={Group_Id}");
return Get<RB_Education_Contract_ViewModel>(builder.ToString(), parameters).ToList();
}
}
}
......@@ -53,11 +53,12 @@ namespace Edu.Repository.Course
/// </summary>
/// <param name="param"></param>
/// <returns></returns>
public bool SetBatchUpdateChapterNoRepository(List<RB_Course_Chapter_ViewModel> param)
public bool SetBatchUpdateChapterNoRepository(List<RB_Course_Chapter_ViewModel> param)
{
StringBuilder builder = new StringBuilder();
builder.Append("INSERT INTO rb_course_chapter (ChapterId, ChapterNo, ParentId,SortNum) VALUES");
param.ForEach(x => {
param.ForEach(x =>
{
var newChapterNo = x.ChapterNo.Replace(".", "");
double.TryParse(newChapterNo, out double SortNum);
builder.Append($"({x.ChapterId},'{x.ChapterNo}',{x.ParentId},{SortNum}),");
......@@ -71,7 +72,8 @@ namespace Edu.Repository.Course
{
StringBuilder builder = new StringBuilder();
builder.Append("INSERT INTO rb_course_chapter (ChapterId, CurrentHours) VALUES");
param.ForEach(x => {
param.ForEach(x =>
{
builder.Append($"({x.ChapterId},'{x.CurrentHours}'),");
});
builder = builder.Remove(builder.Length - 1, 1);
......@@ -88,7 +90,7 @@ namespace Edu.Repository.Course
{
StringBuilder builder = new StringBuilder();
builder.Append("update rb_course_chapter ");
builder.AppendFormat("set {0}={1}",nameof(RB_Course_Chapter_ViewModel.CourseRate),EnumHelper.ToInt(model.CourseRate));
builder.AppendFormat("set {0}={1}", nameof(RB_Course_Chapter_ViewModel.CourseRate), EnumHelper.ToInt(model.CourseRate));
builder.AppendFormat(" where {0}={1}", nameof(RB_Course_Chapter_ViewModel.CourseId), model.CourseId);
builder.AppendFormat(" and {0} like '{1}%'", nameof(RB_Course_Chapter_ViewModel.ChapterNo), model.ChapterNo);
......@@ -132,5 +134,48 @@ namespace Edu.Repository.Course
//builder.AppendFormat(" ORDER BY {0} Desc",nameof(RB_Course_Chapter_ViewModel.CurrentHours));
return Get<RB_Course_Chapter_ViewModel>(builder.ToString(), parameters).ToList();
}
/// <summary>
/// 查询符合的课程章节
/// </summary>
/// <param name="courseId"></param>
/// <param name="currentHours"></param>
/// <returns></returns>
public List<RB_Course_Chapter_ViewModel> GetMatchChapterRepository(int courseId, string currentHours)
{
var parameters = new DynamicParameters();
StringBuilder builder = new StringBuilder();
builder.AppendFormat(@"
SELECT *
FROM rb_course_chapter
WHERE 1=1
");
builder.AppendFormat(" AND {0}={1}", nameof(RB_Course_Chapter_ViewModel.Status), EnumHelper.ToInt(DateStateEnum.Normal));
builder.AppendFormat(" AND {0}={1}", nameof(RB_Course_Chapter_ViewModel.CourseId), courseId);
if (!string.IsNullOrWhiteSpace(currentHours))
{
builder.AppendFormat(" AND (");
int i = 0;
foreach (var item in currentHours.Split(","))
{
i += 1;
builder.AppendFormat(" ({0}='{1}' or {2} like '{3}.%')", nameof(RB_Course_Chapter_ViewModel.ChapterNo), item, nameof(RB_Course_Chapter_ViewModel.ChapterNo), item);
if (i != currentHours.Split(",").Length)
{
builder.AppendFormat(" Or ");
}
}
builder.AppendFormat(" )");
}
//builder.AppendFormat(" ORDER BY {0} Desc",nameof(RB_Course_Chapter_ViewModel.CurrentHours));
return Get<RB_Course_Chapter_ViewModel>(builder.ToString(), parameters).ToList();
}
}
}
......@@ -575,12 +575,12 @@ where sog.Account_Id={query.StuId} and c.ClassStatus in(1,2) and c.`Status`=0 an
}
StringBuilder builder = new StringBuilder();
builder.AppendFormat(@"
SELECT A.ClassPlanId,A.ClassId,A.ClassDate,A.ClassRoomId,A.ClassName,A.CourseName,A.Teacher_Id,A.TeacherName,A.RoomName
SELECT A.ClassPlanId,A.ClassId,A.ClassDate,A.ClassRoomId,A.ClassName,A.CourseName,A.CourseId,A.Teacher_Id,A.TeacherName,A.UserIcon,A.RoomName
,SUM(A.minNum) AS ClassMinutes,MIN(A.StartTime) AS StartTime,MAX(A.EndTime) AS EndTime,A.CompleteProgress,a.TotalPlanNum,
(SELECT COUNT(*) from rb_class_plan where `Status`=0 and DATE_FORMAT(ClassDate,'%Y-%m-%d') <=DATE_FORMAT(a.ClassDate,'%Y-%m-%d') and ClassId=a.ClassId) as Ranks
FROM
(
SELECT A.ClassPlanId, A.ClassId,A.ClassDate,A.ClassRoomId,B.ClassName,C.CourseName,B.Teacher_Id,IFNULL(D.TeacherName,'') AS TeacherName,E.RoomName
SELECT A.ClassPlanId, A.ClassId,A.ClassDate,A.ClassRoomId,B.ClassName,C.CourseName,c.CourseId,B.Teacher_Id,IFNULL(D.TeacherName,'') AS TeacherName,IFNULL(D.TeacherHead,'') AS UserIcon,E.RoomName
,TIMESTAMPDIFF(MINUTE, CONCAT('2020-12-16',' ',F.StartTime), CONCAT('2020-12-16',' ',F.EndTime)) AS minNum,F.StartTime,F.EndTime,B.CompleteProgress,plan.TotalPlanNum
FROM rb_class_plan AS A INNER JOIN rb_class AS B ON A.ClassId=B.ClassId
LEFT JOIN rb_course AS C ON B.CouseId=C.CourseId
......
......@@ -288,5 +288,7 @@ where a.`Status`=0 and c.ClassStatus in(1,2) and a.TeacherId={TId} and c.`Sta
}
return flag;
}
}
}
......@@ -112,10 +112,11 @@ namespace Edu.Repository.Sell
}
string sql = $@"
SELECT A.*,IFNULL(B.JoinType,0) AS JoinType,IFNULL(B.TargetJoinType,0) AS TargetJoinType,IFNULL(B.StartClassHours,0) AS StartClassHours
SELECT sog.Student_Id as StudentId,A.*,IFNULL(B.JoinType,0) AS JoinType,IFNULL(B.TargetJoinType,0) AS TargetJoinType,IFNULL(B.StartClassHours,0) AS StartClassHours
,IFNULL(C.CourseName,'') AS CourseName,B.EffectStatus,B.EffectTime,B.UpOrderId,B.OrderType,B.CourseId,B.IsRenewOrder,B.RenewOrderId,B.EnterID
,sc.StopClassEffectTime,B.SourceOrderId,B.TargetOrderId,IFNULL(D.FirstClassHours,0)+IFNULL(D.SecondClassHours,0)+IFNULL(D.ThirdClassHours,0) AS ContractTotalHours
FROM RB_Order_Guest AS A LEFT JOIN rb_order AS B ON A.OrderId=B.OrderId
LEFT JOIN rb_student_orderguest as sog on sog.GuestId=a.Id
LEFT JOIN rb_course AS C ON (B.CourseId=C.CourseId AND B.CourseId>0 AND B.OrderType=1)
LEFT JOIN (SELECT OrderGuestId,MAX(TakeEffectTime) as StopClassEffectTime from rb_student_stopclass where IsAuditThrough=1 GROUP BY OrderGuestId) as sc on sc.OrderGuestId=a.Id
LEFT JOIN rb_education_contract AS D ON A.OrderId=D.OrderId AND A.Id=D.GuestId AND D.IsSystemUse=1
......
......@@ -152,5 +152,27 @@ where b.`Status`=0 and b.ClassStatus in(1,2) and a.status=0 and a.Account_Id={
AND c.Group_Id={Group_Id}");
return Get<RB_Student_ViewModel>(builder.ToString(), parameters).ToList();
}
/// <summary>
/// 根据学生id获取学生的班级课程学校信息
/// </summary>
/// <param name="teacherIds"></param>
/// <returns></returns>
public List<RB_Student_ViewModel> GetStudentInfo(int Student_Id, int Group_Id)
{
var parameters = new DynamicParameters();
StringBuilder builder = new StringBuilder();
builder.AppendFormat($@"SELECT s.*,o.OrderState,cou.CourseName,cou.CourseId,c.ClassName,c.ClassId,c.ClassStatus,sch.SName,sch.SId,t.TeacherName,o.EnterID,(og.TotalHours-og.CompleteHours) as SurplusHours from rb_student as s LEFT JOIN rb_student_orderguest as sog on s.StuId=sog.Student_Id
LEFT JOIN rb_order_guest as og on og.Id=sog.GuestId
LEFT JOIN rb_order as o on og.OrderId=o.OrderId
LEFT JOIN rb_course as cou on o.CourseId=cou.CourseId
LEFT JOIN rb_class as c on c.ClassId=o.ClassId
LEFT JOIN rb_school as sch on sch.SId=c.School_Id
LEFT JOIN rb_teacher as t on t.TId=c.Teacher_Id
where o.OrderState=1 and og.`Status`=0 and sog.`Status`=0 and og.GuestState=1 and cou.`Status`=0 and c.`Status`=0 and s.`Status`=0 and s.StuId={Student_Id} and s.Group_Id={Group_Id}");
return Get<RB_Student_ViewModel>(builder.ToString(), parameters).ToList();
}
}
}
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
using Edu.Common;
using Edu.Common.API;
using Edu.Common.Plugin;
using Edu.WebApi.Filter;
using Microsoft.AspNetCore.Cors;
using Microsoft.AspNetCore.Mvc;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using Edu.Model.CacheModel;
using Edu.Cache.User;
using Edu.Module.System;
namespace Edu.WebApi.Controllers
{
[Route("api/[controller]/[action]")]
[ApiExceptionFilter]
[ApiFilter]
[EnableCors("AllowCors")]
public class AppletBaseController : ControllerBase
{ /// <summary>
/// 整理前端传递的post参数
/// </summary>
/// <param name="requestMsg"></param>
/// <returns></returns>
public RequestParm RequestParm
{
get
{
var requestParm = new RequestParm();
#region 读取post参数
var requestMsg = Request.HttpContext.Items[GlobalKey.UserPostInfo];
if (requestMsg != null)
{
requestParm = JsonConvert.DeserializeObject<RequestParm>(requestMsg.ToString());
if (Request.HttpContext.Items[GlobalKey.TokenUserInfo] != null)
{
JObject parms = JObject.Parse(Request.HttpContext.Items[GlobalKey.TokenUserInfo].ToString());
requestParm.Uid = parms.GetStringValue("uid");
}
}
#endregion
//根据token 获取uid
return requestParm;
}
}
/// <summary>
/// 获取参数
/// </summary>
public JObject ParmJObj
{
get
{
if (this.RequestParm != null && this.RequestParm.Msg != null)
{
return JObject.Parse(this.RequestParm.Msg.ToString());
}
return new JObject();
}
}
/// <summary>
/// 用户缓存
/// </summary>
public AppletStudentInfo AppletUserInfo
{
get
{
var parm = this.RequestParm;
AppletStudentInfo userInfo = AppletStudentReidsCache.GetUserLoginInfo(parm.Uid);
return userInfo;
}
}
/// <summary>
/// 根据Id获取用户信息
/// </summary>
/// <param name="Id"></param>
/// <returns></returns>
public AppletStudentInfo GetAppletUserInfo(object Id)
{
AppletStudentInfo userInfo = AppletStudentReidsCache.GetUserLoginInfo(Id);
return userInfo;
}
}
}
\ No newline at end of file
......@@ -80,6 +80,7 @@ namespace Edu.WebApi.Controllers.Exam
CreateBy = UserInfo.Id,
CreateTime = DateTime.Now,
Group_Id = base.UserInfo.Group_Id,
GenerateType=base.ParmJObj.GetInt("GenerateType"),
};
extModel.GroupList = new List<RB_Examination_Group_ViewModel>();
string groups = base.ParmJObj.GetStringValue("GroupList");
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment