package com.yutou.tools.utils; import com.alibaba.fastjson2.JSONArray; import com.alibaba.fastjson2.JSONObject; import com.yutou.tools.bean.CalendarTask; import lombok.SneakyThrows; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.*; @SuppressWarnings("MagicConstant") public class CalendarTools { public static final String REDIS_TAG = "Calendar"; public static JSONObject getHoliday() { int year = Calendar.getInstance(DateFormat.getDateInstance().getTimeZone(), Locale.CHINA).get(Calendar.YEAR); return getHoliday(year + ""); } @SneakyThrows public static JSONObject getHoliday(String year) { String get = HttpTools.get(String.format("https://timor.tech/api/holiday/year/%s", year)); JSONObject json = JSONObject.parseObject(get); JSONObject date = new JSONObject(); JSONArray dateHoliday = new JSONArray(); JSONObject holiday = json.getJSONObject("holiday"); JSONArray a1=new JSONArray(); JSONArray a2=new JSONArray(); for (CalendarTask task : getTasks()) { for (String datum : getMouthData(task)) { date.put(new SimpleDateFormat("yyyy-MM-dd").format(new SimpleDateFormat("yyyy-M-d").parse(datum.split(" ")[0])), task.getTitle()); a1.add(datum.split(" ")[0]); a2.add(datum.split(" ")[0]); } } for (String key : holiday.keySet()) { JSONObject _tmp = holiday.getJSONObject(key); date.put(year + "-" + key, _tmp.getString("name")); String _key=new SimpleDateFormat("yyyy-M-d").format(new SimpleDateFormat("yyyy-MM-dd").parse(year + "-" + key)); if(_tmp.getBooleanValue("holiday")){ a1.add(_key); }else{ a2.add(_key); } } dateHoliday.add(a1); dateHoliday.add(a2); JSONObject tmp = new JSONObject(); tmp.put("date", date); tmp.put("holiday", dateHoliday); return tmp; } public static boolean addTask(CalendarTask task){ task.setId(RedisTools.list_get(REDIS_TAG).size()+1); String json = JSONObject.toJSONString(task); RedisTools.list_add(REDIS_TAG,json); return true; } public static List getTasks(){ List list=new ArrayList<>(); Set set = RedisTools.list_get(REDIS_TAG); for (String s : set) { list.add(JSONObject.parseObject(s,CalendarTask.class)); } return list; } public static boolean removeTask(CalendarTask task){ for (String s : RedisTools.list_get(REDIS_TAG)) { CalendarTask tmp=JSONObject.parseObject(s,CalendarTask.class); if(tmp.getId()==task.getId()){ RedisTools.list_remove(REDIS_TAG,s); break; } } return true; } public static List getMouthData(CalendarTask task) { List list = new ArrayList<>(); Calendar calendar = Calendar.getInstance(Locale.CHINA); calendar.setTime(task.getStartTime()); list.add(new SimpleDateFormat("yyyy-M-d HH:mm:ss",Locale.CHINA).format(calendar.getTime())); while (true) { calendar.set(task.getType(),calendar.get(task.getType())+task.getTime()); if(calendar.getTime().getTime()>task.getEndTime().getTime()){ break; } list.add(new SimpleDateFormat("yyyy-M-d HH:mm:ss",Locale.CHINA).format(calendar.getTime())); if(task.getModel()==CalendarTask.MODEL_ONE){ break; } } return list; } public static void main(String[] args) { } }