发表于: 2017-10-28 23:16:39
0 808
今日完成:
1、修改了上一个/下一个 课程接口。
story 中要求实现点击上一个课程前往上一个课程,下一个课程前往下一个课程。
查看了接口返回的数据,这3门课程的排序字段值(sort)分别为3、7、8。
之所以在『集合关系』页面中、“上一节”的缺失,是因为现在的代码里、获取上/下一节课程是根据 lessonId,sort,status 三个字段来确定的,『集合关系』的sort 减去1为6,而数据库没有sort为6的课程记录、造成了没有“上一节”。
而课程的sort值又是如何确定的呢?是每当新建一门课程时,取出该课程所属『专题』下的课程列表(按sort排序),得到最大的sort值,加一,赋给新创建的课程的sort。
所以,每新建一门课程,它的sort值都是当前最大sort值+1。
所以重要的是要保证sort的连续性。所以在某一门课程的“上下架”和“删除”操作后、必须要对当前专题下的课程重新排序、并且是对上架课程(status=1)进行排序,以使得sort值是连续的。
这样的话在前台使用『select id from period where lesson_id = ? and sort =? and status = ? 』来查到具体的课程,并通过 sort 增减取到下/上一条课程了。
本来我以为这样做已经ok没问题了,可却没考虑到当管理员在后台点击『保存排序』时、所有的课程(无论其上下架状态)都会被重新排序。这样的话、某个下架课程的sort依旧有可能会被前台读到、造成前台展示了下架的课程。
其实有另外一种方法,那就是。
2、使用下标来判断上一个/下一个 课程。
如何保证『sort』字段的连续性?
如果sort的连续性无法保证。
getPeriodIdByLessonId&StatusOrderBySort(String lessonId, Integer status)
List<Long> periodId ,
如何取到当前的上一个?
评论