更新时间:2021年1月18日
一觉起来,状态拉满
废话少说,开干!
昨天把学生选课的模块干了
今天弄教师审批学生选课
后端:
写下两个方法:
TeacherCurriculumApproval()//教师进行对学生申请的课程审批,同意是将结果改成1,0代表待处理,不同意删数据
HandleCurriculumByIdList(List IdList,int is_result)//教师进行审批处理
先把数据展示给教师,教师再进行处理
为了能处理多个数据,传入参数用集合表示。并在业务逻辑层进行处理
好处:多次标注,一次提交,对数据库只需操作一次
这里我用的是switch,一开始考虑代码有点重复,我把switch放在循环里面,但是思考了一下,那样算术复杂度要比这样写的高出一倍,所以,一切为性能考虑!
后端差不多就这样,(应该也许不会出什么问题,吧。。)开始传给前端:
前端:
显示数据是没有错的了
显示的是:该名工号为1的教师,正在有几个同学选择他的课程
(虽然放的是一些id)
点击和删除,结果是蹦的!
找到了原因,这个地方json出了问题,f12查看网络
啊这,第一个转成了json,回复说json无法转换。。。
我有点懵。。。
不过这也好办,解决方案:
post请求也可以像get请求一样在后面添加参数,这样就能接受到了
我们来运行一下:
炸!我就知道。
人不能两次踏入同一条河。
同时进行一个上下文修改炸的,批量修改还是有问题,虽然一个没事。
那就估计是业务逻辑层的问题了
不过按理说,逻辑上应该是没有错的,不应该会出现这个问题。断个点,继续试探试探
完全没有那么简单!我用同样的操作进行删除,结果莫得问题
不同意的时候莫得问题,同意的时候,炸
我直接迷惑了
其实这个设计到ef修改部分列的问题:
db.Entry(model).Property(u => u.Status).IsModified = false;
需要将不修改的列进行说明
我们只给出了部分列,无法进行修改,因为他不知道我们要不要动剩下的列
此时,我们有2种解决方案,去数据处理层将属性设置一下,加一个额外的额方法,或者直接先查询所有数据。
先使用第二种吧,这里我留个坑,暂时没有兴趣去动数据处理层。。。
后面给补上!
我们先把业务逻辑层修改:
控制器重修修改一下:
传过来的还是int集合,为了防止数据过多,传输的值越少越好。
运行测试:
数据库:我们为该名工号为1的教师添加了3个审批通知
前端:
莫得问题
教师全部课程批量同意
同时,改名学生也添加了对应的课程:
选课模块,到此基本功能完成!!
关于昨天提到的选课课与必修课
班级分班之类的
再留个坑,后期完善
现在差不多进入教师模块,将教师信息进行完善!
写程序,不是在写bug,就是在修bug的路上