更新时间:2021年2月17日
今天是作业模块最后一个内容:
图片类型作业:
这里我们是之前弄好的
文件和图片是一个性质,所以添加作业可以直接公用,只用修改作业类型就可以
现在我们主要是要弄,学生提交图片的功能
为什么要把图片类型作业分来开呢?
1:大部分作业只是一张截图
2:我们要实现自动打水印的功能
3:我们要实现图片自动识别,不能上传差距过大的图片
api:
进入页面跳转:
注意,这里我们传过去的是workid,我们后端需要student_id
提交数据:
我们后端:
[HttpPost]
public async Task<IActionResult> sendImg(string myimg,int id)
{
if (myimg != null)
{
DateTime dateTime = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
string filename = Guid.NewGuid().ToString();
var student_workData = await _student__WorkBll.GetEntities(n => n.id == id).FirstOrDefaultAsync();
student_workData.is_complete = 1;
student_workData.student_file_name = filename + ".jpg";
student_workData.time_complete = dateTime;
student_workData.work_score = 100;
student_workData.work_score_time = dateTime;
Common.SaveImage.ByStringToSave(filename, myimg);
//if (System.IO.File.Exists("./wwwroot/StudentImage1/陈淳.jpg"))
// if (Common.SaveImage.Compare("./wwwroot/StudentImage/" + name + ".jpg", "./wwwroot/StudentImage/陈淳.jpg") > 20)
// {
// diffImg = "2";
// }
_student__WorkBll.Update(student_workData);
return Content(JsonFactory.Json(message:"作业提交成功!"));
}
else
{
return Content(JsonFactory.Json(flag: false, message: "作业提交失败!"));
}
}
注释的地方为图片识别功能,目前先留个坑
效果测试:
我们切换教师账号,添加 课程为:前端的一个作业,类型为图片
添加作业
后来发现这里出问题了,由于图片类型作业,不需要上传图片!
我们后端改改:
[HttpPost]
[Obsolete]
public IActionResult AddWork([FromServices] IHostingEnvironment env, IFormFile formFile, [FromForm] string work_name, [FromForm] DateTime time_start, [FromForm] DateTime time_end, [FromForm] int curriculum_id)//教师添加作业
{
string filename = Guid.NewGuid().ToString() + ".jpg";
string filepub = Path.Combine(env.WebRootPath, "WorkFiles", filename);//完整目录
string fileexit = Path.Combine(env.WebRootPath, "WorkFiles");//文件目录名
if (formFile == null)
{
//文件名:唯一标识号.jpg
if (!Directory.Exists(fileexit))
{
Directory.CreateDirectory(fileexit);
}
using (var stream = new FileStream(filepub, FileMode.Create))
{
formFile.CopyTo(stream);
}
}
work workData = new work();
workData.curriculum_id = curriculum_id;
workData.work_name = work_name;
workData.time_start = time_start;
workData.time_end = time_end;
workData.teacher_id = teacherId;
workData.work_file_name = filename;
workData.work_file_route = filepub;
var workDataResult = _workBll.Add(workData);//将作业添加到作业表中
//要想添加学生课程关系表的话,需要知道学生id,学生id通过该课程id来查找
var student__Curriculums = _student__CurriculumBll.GetEntities(n => n.curriculum_id == workDataResult.curriculum_id).ToList();
List<student__work> student__Works = new List<student__work>();
foreach (var k in student__Curriculums)
{
student__work student__WorkData = new student__work();
student__WorkData.is_complete = 0;
student__WorkData.time_complete = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
student__WorkData.student_id = k.id;
student__WorkData.work_id = workDataResult.id;
student__WorkData.work_score = -1;
student__Works.Add(student__WorkData);
}
_student__WorkBll.Add(student__Works);
return Content(JsonFactory.Json(message: "作业添加成功!所有课程下的学生已发布作业!"));
}
报错
这个问题是数据库的问题,datetime对应的是datetime2类型!!
这个真的是大坑
我们修改数据的时间类型即可解决
作业也加进来了
切换学生账号,开始写作业
进入后:
选择图片输出水印
提交
出问题了
由于传输数据太大,无法直接接收对象
我们改改:
ok
后端得到数据了,写入进文件夹中:
水印也保存了!!
查看数据库:
ok,完成了!!
还差最后一个东西
就是将数据展示出来:
数据展示:
效果:
ok,大功告成!
下一次,弄作业和课程的删除与修改操作
消息模块:这个东西,真的算比较复杂的。。。有点不太想弄下去了!目前没想好这么弄
设置模块:一切从简,就设置一个主题颜色得了
差不多,整个系统正在健全
目前难度最大的:统计模块
这个算真的难受,难度不大,但是极其复杂,涉及超多张表的查询连接处理
差不多,快了,加油!寒假也快过了,距离现在差不多7-8天的样子
我必须要留2到3天给开发环境
那真正弄玩的话,只能留给我5天时间(太难了)