发表于: 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 ");

   }


}



明天计划的事情:


遇到的问题:


收获:




返回列表 返回列表
评论

    分享到