package com.yutou.tools.services; import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSONObject; import com.yutou.tools.mybatis.dao.BangumiItemDao; import com.yutou.tools.mybatis.dao.BangumiListDao; import com.yutou.tools.mybatis.model.BangumiItem; import com.yutou.tools.mybatis.model.BangumiItemExample; import com.yutou.tools.mybatis.model.BangumiList; import com.yutou.tools.mybatis.model.BangumiListExample; import com.yutou.tools.services.interfaces.BangumiService; import com.yutou.tools.utils.BangumiTools; import com.yutou.tools.utils.RedisTools; import com.yutou.tools.utils.Tools; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.ArrayList; import java.util.List; import java.util.Set; @Service("BangumiService") public class BangumiServiceImpl implements BangumiService { @Resource BangumiListDao listDao; @Resource BangumiItemDao itemDao; @Override public int addBangumiList(BangumiList... list) { for (BangumiList bangumiList : list) { if (listDao.insert(bangumiList) <= 0) { return 0; } } return 1; } @Override public int addBangumiItem(BangumiItem... list) { for (BangumiItem item : list) { if (item.getId() != null&&item.getId().equals(-1)) { RedisTools.list_add("anim_tmp_rss", JSON.toJSON(item).toString()); } else if (itemDao.insert(item) <= 0) { return 0; } } return 1; } @Override public int updateBangumiItem(BangumiItem item) { return itemDao.updateByPrimaryKey(item); } @Override public int removeBangumiItem(int id) { return itemDao.deleteByPrimaryKey(id); } @Override public int removeBangumiType(int id) { BangumiItemExample example = new BangumiItemExample(); example.createCriteria().andBidEqualTo(id + ""); itemDao.deleteByExample(example); return listDao.deleteByPrimaryKey(id); } @Override public BangumiItem getBangumiItem(int id) { return itemDao.selectByPrimaryKey(id); } @Override public List getBangumiItemList(String type) { List items; if ("-1".equals(type)) { Set strings = RedisTools.list_get("anim_tmp_rss"); items=new ArrayList<>(); for (String string : strings) { BangumiItem item=JSON.parseObject(string, BangumiItem.class); items.add(item); } return items; } BangumiItemExample example = new BangumiItemExample(); example.createCriteria().andBidEqualTo(type); items = itemDao.selectByExample(example); for (BangumiItem item : items) { if (item.getEnable() == 0 || item.getBgmid() == 0) { continue; } String tmp = RedisTools.get(item.getBgmid() + "", 1); JSONObject bangumi = tmp == null ? BangumiTools.getBangumiInfoSmall(item.getBgmid()) : JSONObject.parseObject(tmp); RedisTools.set(1, 2592000, item.getBgmid() + "", bangumi.toJSONString()); if (bangumi.containsKey("code") && bangumi.getInteger("code") == 404) { continue; } int day = Tools.getWeekDay(); if (day == 0) { day = 7; } if (bangumi.getInteger("air_weekday") == day) { item.setUpdateDay("今天更新"); } else { item.setUpdateDay("周" + getDay(bangumi.getInteger("air_weekday")) + "更新"); } } return items; } private String getDay(int day) { switch (day) { case 1: return "一"; case 2: return "二"; case 3: return "三"; case 4: return "四"; case 5: return "五"; case 6: return "六"; default: return "日"; } } @Override public List getAllBangumiItemList() { return itemDao.selectByExample(new BangumiItemExample()); } @Override public List getAllBangumiList() { List list = listDao.selectByExample(new BangumiListExample()); BangumiList bangumi = new BangumiList(); bangumi.setTitle("临时RSS"); bangumi.setId(-1); list.add(bangumi); return list; } }