发表于: 2017-10-17 08:46:17
0 740
今天完成的事情:
1、APP端在登录 pc-web 的时候会因为缺少token,
2、解决“上一个课程”,“下一个课程”的报错问题。
之前有个地方写错了,自己也没有发现。直到发布到线上测试的时候暴露出了问题。
之前在排序的时候,只要有了新的课程(Period),它的排序(sort)就是当前最大的排序位上+1,但这样做是错误的。
应当先找到每个 period 所属的 Lesson,在该 Lesson下加1 。
但现在 Period 表里已经有600多条记录了,如果手动去按照他们的LessonId进行排序,会比较麻烦。
试了一下 MyListUtil 工具类中的一些个方法,非常方便。
@Test
public void testSort2() throws Exception {// 拿到所有的 课程 id列表
List<Long> periodIds = periodService.getPeriodIds(0, Integer.MAX_VALUE);
List<Period> periodList = periodService.getObjectsByIds(periodIds);
// 使用 convert2ListMap() 从 periodList 得到一个 Map<Long, List<Period>>,存储着 LessonId 对 Period 集合的 键值对。
Map lessonIdPeriodMap = MyListUtil.convert2ListMap(Period.class.getDeclaredField("lessonId"), periodList);
List list = MyMapUtil.converMapToEntryList(lessonIdPeriodMap);
for (Object obj : list) {
Map.Entry entry1 = (Map.Entry) obj;
List periodListR = (List) entry1.getValue();
List periodIdList = MyListUtil.getList(Period.class.getDeclaredField("id"), periodListR);
sortPeriod(periodIdList);
}
}
public void sortPeriod(List<Long> ids) throws Exception {
log.info("sort lesson : uids= " + ids);
try {
List<Period> periodList = periodService.getObjectsByIds(ids);
int index = 1;
for (Period period : periodList) {
period.setSort(index);
index = index + 1;
}
this.periodService.updateList(periodList);
} catch (Throwable t) {
t.printStackTrace();
log.error(t.getMessage());
log.error("sort period error ");
}
}
明天计划的事情:
遇到的问题:
收获:
评论