/***
* 活动list排序
* 一级排序 版块推广按类型排在最前面 顺序
* 二级排序 审核失败 2,审核中0,审核成功1 顺序排序
* 三级排序 以活动未开始 当前时间小于开始时间,进行中 当前时间大于等于开始时间AND当前时间小于等于结束时间,已结束 当前时间大于结束时间, 顺序排序
* 四级排序 以活动创建时间倒序排序
*
* @param generalizeList 活动list
* @author dongwei.
* @date 2018/12/06.
*/
private List<Generalize> activitySortList(List<Generalize> generalizeList) {
List<Integer> checkList = new ArrayList<>();
checkList.add(2);
checkList.add(0);
checkList.add(1);
List<Integer> categoryList = new ArrayList<>();
categoryList.add(GeneralizeEnum.APPLET_INDEX.getKey());
categoryList.add(GeneralizeEnum.DINE_PLATE.getKey());
categoryList.add(GeneralizeEnum.TAKEOUT_PLATE.getKey());
categoryList.add(GeneralizeEnum.QUEUE_PLATE.getKey());
// 以 审核失败 2,审核中0,审核成功1 排序
generalizeList.sort((o1, o2) -> {
if (categoryList.contains(o1.getActivityCategory()) && categoryList.contains(o2.getActivityCategory())) {
return o1.getActivityCategory() - (o2.getActivityCategory());
} else {
int io1 = checkList.indexOf(o1.getIsCheck());
int io2 = checkList.indexOf(o2.getIsCheck());
if (io1 != io2) {
return io1 - io2;
} else {
Integer flag1 = 0;
Integer flag2 = 0;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
String format = sdf.format(new Date());
// 以未开始,进行中,已结束顺序排序
Date date = DateUtil.StringToDate(format, DateStyle.YYYY_MM_DD_HH_MM);
flag1 = getFlag(o1, flag1, date);
flag2 = getFlag(o2, flag2, date);
if (flag1.equals(flag2)) {
//对创建时间倒序排序
return o2.getCreatedDate().compareTo(o1.getCreatedDate());
} else {
return flag1 - flag2;
}
}
}
});
return generalizeList;
}
private Integer getFlag(Generalize o2, Integer flag2, Date date) {
if (0 < o2.getStartTime().compareTo(date)) {
flag2 = 0;
} else if (0 <= o2.getStartTime().compareTo(date) && 0 >= o2.getEndTime().compareTo(date)) {
flag2 = 1;
} else if (0 > o2.getEndTime().compareTo(date)) {
flag2 = 2;
}
return flag2;
}