发表于: 2017-10-28 23:16:39

0 805


今日完成:

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 ,

如何取到当前的上一个?









返回列表 返回列表
评论

    分享到