admin
2022-04-16 04f09e52ffd4681bdfd85e51acd3da0d1280c3d3
src/main/java/com/yeshi/buwan/service/imp/juhe/IqiyiService.java
@@ -9,6 +9,8 @@
import javax.annotation.Resource;
import com.yeshi.buwan.dto.mq.VideoDataChangeMQMsg;
import com.yeshi.buwan.util.mq.CMQManager;
import org.apache.log4j.Logger;
import org.hibernate.HibernateException;
import org.hibernate.Session;
@@ -40,844 +42,857 @@
@Service
public class IqiyiService {
   static Logger logger = Logger.getLogger(IqiyiService.class);
   @Resource
   private IqiyiVideoInfoDao iqiyiVideoInfoDao;
   @Resource
   private VideoIqiyiDao videoIqiyiDao;
   @Resource
   private StatisticsService statisticsService;
   @Resource
   private PushService pushService;
    static Logger logger = Logger.getLogger(IqiyiService.class);
    @Resource
    private IqiyiVideoInfoDao iqiyiVideoInfoDao;
    @Resource
    private VideoIqiyiDao videoIqiyiDao;
    @Resource
    private StatisticsService statisticsService;
    @Resource
    private PushService pushService;
   @Resource
   private ResourceVideoDao resourceVideoDao;
    @Resource
    private ResourceVideoDao resourceVideoDao;
   static {
      // PropertyConfigurator.configure(".\\src\\log4j.properties");
   }
    static {
        // PropertyConfigurator.configure(".\\src\\log4j.properties");
    }
   @SuppressWarnings({ "unchecked", "rawtypes" })
   public String saveAlbum(final IqiyiAlbum album) {
      if (album.getCreditList() != null && album.getCreditList().length() > 512)
         album.setCreditList(album.getCreditList().substring(0, 512));
    @SuppressWarnings({"unchecked", "rawtypes"})
    public String saveAlbum(final IqiyiAlbum album) {
        if (album.getCreditList() != null && album.getCreditList().length() > 512)
            album.setCreditList(album.getCreditList().substring(0, 512));
      return videoIqiyiDao.excute(new HibernateCallback() {
         public Object doInHibernate(Session session) throws HibernateException {
            Serializable id = "";
            try {
               List<IqiyiAlbum> list = session.createQuery("from IqiyiAlbum a where a.albumId=?")
                     .setParameter(0, album.getAlbumId()).list();
               if (list == null || list.size() == 0) {
                  session.getTransaction().begin();
                  id = session.save(album);
                  session.flush();
                  session.getTransaction().commit();
               } else
                  id = list.get(0).getId();
        return videoIqiyiDao.excute(new HibernateCallback() {
            public Object doInHibernate(Session session) throws HibernateException {
                Serializable id = "";
                try {
                    List<IqiyiAlbum> list = session.createQuery("from IqiyiAlbum a where a.albumId=?")
                            .setParameter(0, album.getAlbumId()).list();
                    if (list == null || list.size() == 0) {
                        session.getTransaction().begin();
                        id = session.save(album);
                        session.flush();
                        session.getTransaction().commit();
                    } else
                        id = list.get(0).getId();
            } catch (Exception e) {
               logger.error(album.getId() + "---" + album.getAlbumName());
               logger.error(e.getMessage());
               e.printStackTrace();
               session.getTransaction().rollback();
               System.out.println(album.getId() + "---" + album.getAlbumName());
            }
            return id.toString();
         }
      }) + "";
                } catch (Exception e) {
                    logger.error(album.getId() + "---" + album.getAlbumName());
                    logger.error(e.getMessage());
                    e.printStackTrace();
                    session.getTransaction().rollback();
                    System.out.println(album.getId() + "---" + album.getAlbumName());
                }
                return id.toString();
            }
        }) + "";
   }
    }
   public IqiyiVideoInfo getLatestVideoInfo(String albumId) {
      List<IqiyiVideoInfo> list = iqiyiVideoInfoDao.list(
            "from IqiyiVideoInfo iv where iv.albumId=? order by iv.playOrder desc", 0, 1, new String[] { albumId });
      return list != null && list.size() > 0 ? list.get(0) : null;
   }
    public IqiyiVideoInfo getLatestVideoInfo(String albumId) {
        List<IqiyiVideoInfo> list = iqiyiVideoInfoDao.list(
                "from IqiyiVideoInfo iv where iv.albumId=? order by iv.playOrder desc", 0, 1, new String[]{albumId});
        return list != null && list.size() > 0 ? list.get(0) : null;
    }
   @SuppressWarnings("unchecked")
   public static IqiyiVideoInfo getLatestVideoInfo(String albumId, Session session) {
      List<IqiyiVideoInfo> list = session
            .createQuery("from IqiyiVideoInfo iv where iv.albumId=? order by iv.playOrder desc")
            .setParameter(0, albumId).setFirstResult(0).setMaxResults(1).list();
    @SuppressWarnings("unchecked")
    public static IqiyiVideoInfo getLatestVideoInfo(String albumId, Session session) {
        List<IqiyiVideoInfo> list = session
                .createQuery("from IqiyiVideoInfo iv where iv.albumId=? order by iv.playOrder desc")
                .setParameter(0, albumId).setFirstResult(0).setMaxResults(1).list();
      return list != null && list.size() > 0 ? list.get(0) : null;
   }
        return list != null && list.size() > 0 ? list.get(0) : null;
    }
   @SuppressWarnings("rawtypes")
   public void saveVideoInfo(final IqiyiVideoInfo vi) {
      videoIqiyiDao.excute(new HibernateCallback() {
         public Object doInHibernate(Session session) throws HibernateException {
            try {
               List list = session.createQuery("from IqiyiVideoInfo a where a.tvId=?")
                     .setParameter(0, vi.getTvId()).list();
               if (list == null || list.size() == 0) {
                  session.getTransaction().begin();
                  session.persist(vi);
                  session.flush();
                  session.getTransaction().commit();
               }
    @SuppressWarnings("rawtypes")
    public void saveVideoInfo(final IqiyiVideoInfo vi) {
        videoIqiyiDao.excute(new HibernateCallback() {
            public Object doInHibernate(Session session) throws HibernateException {
                try {
                    List list = session.createQuery("from IqiyiVideoInfo a where a.tvId=?")
                            .setParameter(0, vi.getTvId()).list();
                    if (list == null || list.size() == 0) {
                        session.getTransaction().begin();
                        session.persist(vi);
                        session.flush();
                        session.getTransaction().commit();
                    }
            } catch (Exception e) {
               logger.error("saveVideoInfo");
               logger.error(e.getMessage());
               e.printStackTrace();
                  session.getTransaction().rollback();
            }
            return null;
         }
      });
   }
                } catch (Exception e) {
                    logger.error("saveVideoInfo");
                    logger.error(e.getMessage());
                    e.printStackTrace();
                    session.getTransaction().rollback();
                }
                return null;
            }
        });
    }
   public String saveAlbumVideoInfo(IqiyiAlbum album, List<IqiyiVideoInfo> videoList) {
      String id = saveAlbum(album);
      IqiyiVideoInfo latestVideoIfo = getLatestVideoInfo(album.getAlbumId() + "");
      int startP = 0;
      Comparator<IqiyiVideoInfo> c = new Comparator<IqiyiVideoInfo>() {
    public String saveAlbumVideoInfo(IqiyiAlbum album, List<IqiyiVideoInfo> videoList) {
        String id = saveAlbum(album);
        IqiyiVideoInfo latestVideoIfo = getLatestVideoInfo(album.getAlbumId() + "");
        int startP = 0;
        Comparator<IqiyiVideoInfo> c = new Comparator<IqiyiVideoInfo>() {
         public int compare(IqiyiVideoInfo o1, IqiyiVideoInfo o2) {
            return o1.getPlayOrder() - o2.getPlayOrder();
         }
      };
            public int compare(IqiyiVideoInfo o1, IqiyiVideoInfo o2) {
                return o1.getPlayOrder() - o2.getPlayOrder();
            }
        };
      Collections.sort(videoList, c);
        Collections.sort(videoList, c);
      if (latestVideoIfo != null) {
         for (int i = 0; i < videoList.size(); i++) {
            if (latestVideoIfo.getTvId() == videoList.get(i).getTvId()) {
               startP = i + 1;
            }
         }
      }
      if (videoList.size() > 1) {
         System.out.println("--");
      }
        if (latestVideoIfo != null) {
            for (int i = 0; i < videoList.size(); i++) {
                if (latestVideoIfo.getTvId() == videoList.get(i).getTvId()) {
                    startP = i + 1;
                }
            }
        }
        if (videoList.size() > 1) {
            System.out.println("--");
        }
      if (startP < videoList.size())// 有更新内容
      {
         // startP = startP == 0 ? videoList.size() : startP;
         videoList = videoList.subList(startP, videoList.size());
         for (IqiyiVideoInfo info : videoList)
            saveVideoInfo(info);
      }
      return id;
   }
        if (startP < videoList.size())// 有更新内容
        {
            // startP = startP == 0 ? videoList.size() : startP;
            videoList = videoList.subList(startP, videoList.size());
            for (IqiyiVideoInfo info : videoList)
                saveVideoInfo(info);
        }
        return id;
    }
   public void deleteByTvId(final String tvId) {
      iqiyiVideoInfoDao.excute(new HibernateCallback<Object>() {
         @Override
         public Object doInHibernate(Session session) throws HibernateException {
            session.getTransaction().begin();
            session.createSQLQuery("delete from `wk_iqiyi_album_tvid`   WHERE `tvid`=" + tvId).executeUpdate();
            session.getTransaction().commit();
            session.close();
            return null;
         }
      });
    public void deleteByTvId(final String tvId) {
        iqiyiVideoInfoDao.excute(new HibernateCallback<Object>() {
            @Override
            public Object doInHibernate(Session session) throws HibernateException {
                session.getTransaction().begin();
                session.createSQLQuery("delete from `wk_iqiyi_album_tvid`   WHERE `tvid`=" + tvId).executeUpdate();
                session.getTransaction().commit();
                session.close();
                return null;
            }
        });
   }
    }
   private static boolean isSameVideoType(int categoryid, long typeid) {
    private static boolean isSameVideoType(int categoryid, long typeid) {
      switch (categoryid) {
      case 1:
         if (typeid == 151)
            return true;
         break;
      case 2:
         if (typeid == 150)
            return true;
         break;
      case 4:
         if (typeid == 153)
            return true;
         break;
      case 6:
         if (typeid == 152)
            return true;
         break;
      }
        switch (categoryid) {
            case 1:
                if (typeid == 151)
                    return true;
                break;
            case 2:
                if (typeid == 150)
                    return true;
                break;
            case 4:
                if (typeid == 153)
                    return true;
                break;
            case 6:
                if (typeid == 152)
                    return true;
                break;
        }
      return false;
        return false;
   }
    }
   // 判断是否为同一视频
   @SuppressWarnings("unchecked")
   private static VideoInfo isSameVideo(IqiyiAlbum album, Session session) {
      Calendar ca = Calendar.getInstance();
      ca.setTimeInMillis(TimeUtil.convertGernalTime(album.getTvYear(), "yyyyMMdd"));
      int year = ca.get(Calendar.YEAR);
      List<VideoInfo> list = session.createQuery("from VideoInfo vi where vi.name=?")
            .setParameter(0, album.getSourceId() > 0 ? album.getSource() : album.getAlbumName()).list();
      if (list != null && list.size() > 0)
         for (int i = 0; i < list.size(); i++) {
    // 判断是否为同一视频
    @SuppressWarnings("unchecked")
    private static VideoInfo isSameVideo(IqiyiAlbum album, Session session) {
        Calendar ca = Calendar.getInstance();
        ca.setTimeInMillis(TimeUtil.convertGernalTime(album.getTvYear(), "yyyyMMdd"));
        int year = ca.get(Calendar.YEAR);
        List<VideoInfo> list = session.createQuery("from VideoInfo vi where vi.name=?")
                .setParameter(0, album.getSourceId() > 0 ? album.getSource() : album.getAlbumName()).list();
        if (list != null && list.size() > 0)
            for (int i = 0; i < list.size(); i++) {
            if (Math.abs(Integer.parseInt(list.get(i).getYear()) - year) < 2) {// 年份相差1年以下且属于同一个分类才归为一起
               // 判断分类
               if (album.getCategoryId() == 1 || album.getCategoryId() == 2 || album.getCategoryId() == 4
                     || album.getCategoryId() == 6) {// 正片分类
                  List<CategoryVideo> cvList = session
                        .createQuery("from CategoryVideo cv where cv.video.id=" + list.get(i).getId()).list();
                  boolean isS = false;
                  for (CategoryVideo cv : cvList) {
                     if (isSameVideoType(album.getCategoryId(), cv.getVideoType().getId())
                           || (cv.getVideoType().getParent() != null && isSameVideoType(album.getCategoryId(),
                                 cv.getVideoType().getParent().getId()))) {// 类型相同
                        return list.get(i);
                     }
                if (Math.abs(Integer.parseInt(list.get(i).getYear()) - year) < 2) {// 年份相差1年以下且属于同一个分类才归为一起
                    // 判断分类
                    if (album.getCategoryId() == 1 || album.getCategoryId() == 2 || album.getCategoryId() == 4
                            || album.getCategoryId() == 6) {// 正片分类
                        List<CategoryVideo> cvList = session
                                .createQuery("from CategoryVideo cv where cv.video.id=" + list.get(i).getId()).list();
                        boolean isS = false;
                        for (CategoryVideo cv : cvList) {
                            if (isSameVideoType(album.getCategoryId(), cv.getVideoType().getId())
                                    || (cv.getVideoType().getParent() != null && isSameVideoType(album.getCategoryId(),
                                    cv.getVideoType().getParent().getId()))) {// 类型相同
                                return list.get(i);
                            }
                  }
                        }
               } else // 不必比较分类--只要名称相同则判断为相同
               { // 判断上个是否为正片分类
                  List<VideoType> typeList = session
                        .createQuery("select cv.videoType from CategoryVideo cv where cv.video.id=?")
                        .setParameter(0, list.get(i).getId()).list();
                  boolean isZhengpian = false;
                  if (typeList != null)
                     for (VideoType ltype : typeList) {
                        if (ltype.getId() == 150 || ltype.getId() == 151 || ltype.getId() == 152
                              || ltype.getId() == 153
                              || (ltype.getParent() != null && ltype.getParent().getId() == 150)
                              || (ltype.getParent() != null && ltype.getParent().getId() == 151)
                              || (ltype.getParent() != null && ltype.getParent().getId() == 152)
                              || (ltype.getParent() != null && ltype.getParent().getId() == 153)) {
                           isZhengpian = true;
                           break;
                        }
                     }
                    } else // 不必比较分类--只要名称相同则判断为相同
                    { // 判断上个是否为正片分类
                        List<VideoType> typeList = session
                                .createQuery("select cv.videoType from CategoryVideo cv where cv.video.id=?")
                                .setParameter(0, list.get(i).getId()).list();
                        boolean isZhengpian = false;
                        if (typeList != null)
                            for (VideoType ltype : typeList) {
                                if (ltype.getId() == 150 || ltype.getId() == 151 || ltype.getId() == 152
                                        || ltype.getId() == 153
                                        || (ltype.getParent() != null && ltype.getParent().getId() == 150)
                                        || (ltype.getParent() != null && ltype.getParent().getId() == 151)
                                        || (ltype.getParent() != null && ltype.getParent().getId() == 152)
                                        || (ltype.getParent() != null && ltype.getParent().getId() == 153)) {
                                    isZhengpian = true;
                                    break;
                                }
                            }
                  if (!isZhengpian)
                     return list.get(i);
                  else
                     return null;
               }
            }
                        if (!isZhengpian)
                            return list.get(i);
                        else
                            return null;
                    }
                }
         }
            }
      return null;
   }
        return null;
    }
   /**
    * 将专辑插入视频表
    *
    * @param album
    */
    /**
     * 将专辑插入视频表
     *
     * @param album
     */
   @SuppressWarnings("unchecked")
   public String insertAlbumToVideoInfo(final IqiyiAlbum album, final List<IqiyiVideoInfo> videoList,
         final boolean isUpdate) {
      if (JSONArray.fromObject(album.getTvIds()).size() <= 0)// 还没有视频信息
         return null;
    @SuppressWarnings("unchecked")
    public String insertAlbumToVideoInfo(final IqiyiAlbum album, final List<IqiyiVideoInfo> videoList,
                                         final boolean isUpdate) {
        if (JSONArray.fromObject(album.getTvIds()).size() <= 0)// 还没有视频信息
            return null;
      return videoIqiyiDao.excute(new HibernateCallback() {
         public Object doInHibernate(Session session) throws HibernateException {
            String vid = null;
            VideoInfo updateVideo = null;
            try {
               if (album.getSourceId() <= 0) {
                  session.getTransaction().begin();
                  List<VideoIqiyi> list = session.createQuery("from  VideoIqiyi vi where vi.album.albumId=?")
                        .setParameter(0, album.getAlbumId()).setMaxResults(1).list();
        return videoIqiyiDao.excute(new HibernateCallback() {
            public Object doInHibernate(Session session) throws HibernateException {
                String vid = null;
                VideoInfo updateVideo = null;
                try {
                    if (album.getSourceId() <= 0) {
                        session.getTransaction().begin();
                        List<VideoIqiyi> list = session.createQuery("from  VideoIqiyi vi where vi.album.albumId=?")
                                .setParameter(0, album.getAlbumId()).setMaxResults(1).list();
                  if (list == null || list.size() == 0) {// 该专辑未加入到videoinfo
                     VideoInfo vi = convertAlbumTOVideoInfo(album, session);
                     vi.setVideocount(videoList.size());
                     VideoInfo same = isSameVideo(album, session);
                     String id = "";
                     if (same == null) {
                        id = session.save(vi).toString();
                        // if(id!=null)
                        // session.createSQLQuery(String.format("CALL
                        // copyvideotemp(%s)",id)).executeUpdate();
                     } else {
                        List<IqiyiVideoInfo> ilist = session
                              .createQuery(
                                    "from  IqiyiVideoInfo vi where vi.albumId=? order by vi.playOrder desc")
                              .setParameter(0, album.getAlbumId() + "").setFirstResult(0).setMaxResults(1)
                              .list();
                        id = same.getId();
                        if (!StringUtil.isNullOrEmpty(ilist.get(0).getUpdateTime())) {
                           same.setUpdatetime(TimeUtil.convertGernalTime(ilist.get(0).getUpdateTime(),
                                 "yyyy-MM-dd HH:mm:ss") + "");
                        } else {
                           same.setUpdatetime(TimeUtil.convertGernalTime(album.getTvYear(), "yyyyMMdd") + "");
                        }
                        if (list == null || list.size() == 0) {// 该专辑未加入到videoinfo
                            VideoInfo vi = convertAlbumTOVideoInfo(album, session);
                            vi.setVideocount(videoList.size());
                            VideoInfo same = isSameVideo(album, session);
                            String id = "";
                            if (same == null) {
                                id = session.save(vi).toString();
                                CMQManager.getInstance().addVideoDataChanged(new VideoDataChangeMQMsg(VideoDataChangeMQMsg.TYPE_VIDEO_INFO, id, VideoDataChangeMQMsg.ACTION_ADD));
                                // if(id!=null)
                                // session.createSQLQuery(String.format("CALL
                                // copyvideotemp(%s)",id)).executeUpdate();
                            } else {
                                List<IqiyiVideoInfo> ilist = session
                                        .createQuery(
                                                "from  IqiyiVideoInfo vi where vi.albumId=? order by vi.playOrder desc")
                                        .setParameter(0, album.getAlbumId() + "").setFirstResult(0).setMaxResults(1)
                                        .list();
                                id = same.getId();
                                if (!StringUtil.isNullOrEmpty(ilist.get(0).getUpdateTime())) {
                                    same.setUpdatetime(TimeUtil.convertGernalTime(ilist.get(0).getUpdateTime(),
                                            "yyyy-MM-dd HH:mm:ss") + "");
                                } else {
                                    same.setUpdatetime(TimeUtil.convertGernalTime(album.getTvYear(), "yyyyMMdd") + "");
                                }
                        String tag = IqiyiUtil.getAlbumTag(album, session);
                        LogHelper.iqiyi("爱奇艺TAG:" + tag);
                        if (!StringUtil.isNullOrEmpty(tag)) {// tag不为空
                           if (album.getCategoryId() == 6 && album.getContentType() == 1)// 综艺
                                                                           // 并且是正片
                           {
                              same.setTag(tag);
                           } else if (album.getCategoryId() != 6) {
                              same.setTag(tag);
                           }
                        }
                                String tag = IqiyiUtil.getAlbumTag(album, session);
                                LogHelper.iqiyi("爱奇艺TAG:" + tag);
                                if (!StringUtil.isNullOrEmpty(tag)) {// tag不为空
                                    if (album.getCategoryId() == 6 && album.getContentType() == 1)// 综艺
                                    // 并且是正片
                                    {
                                        same.setTag(tag);
                                    } else if (album.getCategoryId() != 6) {
                                        same.setTag(tag);
                                    }
                                }
                        session.update(same);// 更新原来的视频
                                session.update(same);// 更新原来的视频
                                CMQManager.getInstance().addVideoDataChanged(new VideoDataChangeMQMsg(VideoDataChangeMQMsg.TYPE_VIDEO_INFO, same.getId(), VideoDataChangeMQMsg.ACTION_UPDATE));
                        Object obj = session
                              .createQuery(
                                    "select count(*) from ResourceVideo rv where rv.resource.id=? and rv.video.id=?")
                              .setParameter(0, 13 + "").setParameter(1, same.getId()).uniqueResult();
                                Object obj = session
                                        .createQuery(
                                                "select count(*) from ResourceVideo rv where rv.resource.id=? and rv.video.id=?")
                                        .setParameter(0, 13 + "").setParameter(1, same.getId()).uniqueResult();
                        long c = Long.parseLong(obj + "");
                        if (c <= 0) {
                           ResourceVideo rv = new ResourceVideo();
                           rv.setResource(new VideoResource("13"));
                           rv.setVideo(new VideoInfo(same.getId()));
                           session.persist(rv);
                        }
                                long c = Long.parseLong(obj + "");
                                if (c <= 0) {
                                    ResourceVideo rv = new ResourceVideo();
                                    rv.setResource(new VideoResource("13"));
                                    rv.setVideo(new VideoInfo(same.getId()));
                                    session.persist(rv);
                                    CMQManager.getInstance().addVideoDataChanged(new VideoDataChangeMQMsg(VideoDataChangeMQMsg.TYPE_VIDEO_RESOURCE, rv.getVideo().getId(), VideoDataChangeMQMsg.ACTION_ADD));
                                }
                     }
                     // 将视频保存到渠道列表
                     vid = id;
                     Object obj = session
                           .createQuery(
                                 "select count(*) from ResourceVideo rv where rv.resource.id=? and rv.video.id=?")
                           .setParameter(0, 13 + "").setParameter(1, id).uniqueResult();
                     long c = Long.parseLong(obj + "");
                     if (c <= 0) {
                        ResourceVideo rv = new ResourceVideo();
                        rv.setResource(new VideoResource("13"));
                        rv.setVideo(new VideoInfo(id));
                        session.persist(rv);
                     }
                            }
                            // 将视频保存到渠道列表
                            vid = id;
                            Object obj = session
                                    .createQuery(
                                            "select count(*) from ResourceVideo rv where rv.resource.id=? and rv.video.id=?")
                                    .setParameter(0, 13 + "").setParameter(1, id).uniqueResult();
                            long c = Long.parseLong(obj + "");
                            if (c <= 0) {
                                ResourceVideo rv = new ResourceVideo();
                                rv.setResource(new VideoResource("13"));
                                rv.setVideo(new VideoInfo(id));
                                session.persist(rv);
                                CMQManager.getInstance().addVideoDataChanged(new VideoDataChangeMQMsg(VideoDataChangeMQMsg.TYPE_VIDEO_RESOURCE, rv.getVideo().getId(), VideoDataChangeMQMsg.ACTION_ADD));
                            }
                     VideoIqiyi vii = new VideoIqiyi();
                     vii.setAlbum(new IqiyiAlbum(album.getId()));
                     vii.setVideo(new VideoInfo(id));
                     session.persist(vii);
                  } else// 更新时间与tag
                  {
                     List<IqiyiVideoInfo> ilist = session
                           .createQuery(
                                 "from  IqiyiVideoInfo vi where vi.albumId=? order by vi.playOrder desc")
                           .setParameter(0, album.getAlbumId() + "").setFirstResult(0).setMaxResults(1).list();
                     if (ilist != null && ilist.size() > 0) {
                        // if
                        // (!StringUtil.isNullOrEmpty(ilist.get(0).getUpdateTime()))
                        // {
                        // list.get(0).getVideo()
                        // .setUpdatetime(TimeUtil.convertGernalTime(ilist.get(0).getUpdateTime(),
                        // "yyyy-MM-dd HH:mm:ss") + "");
                        // } else {
                        // list.get(0).getVideo().setUpdatetime(
                        // TimeUtil.convertGernalTime(ilist.get(0).getTvYear(),
                        // "yyyyMMdd") + "");
                        // }
                        list.get(0).getVideo().setVideocount(videoList.size());
                        if (!StringUtil.isNullOrEmpty(ilist.get(0).getVideoImage())) {
                           list.get(0).getVideo().setLatestHpicture(
                              IqiyiUtil.getHPicture(ilist.get(0).getVideoImage()));
                           list.get(0).getVideo().setLatestVpicture(ilist.get(0).getVideoImage());
                        }
                     }
                            VideoIqiyi vii = new VideoIqiyi();
                            vii.setAlbum(new IqiyiAlbum(album.getId()));
                            vii.setVideo(new VideoInfo(id));
                            session.persist(vii);
                        } else// 更新时间与tag
                        {
                            List<IqiyiVideoInfo> ilist = session
                                    .createQuery(
                                            "from  IqiyiVideoInfo vi where vi.albumId=? order by vi.playOrder desc")
                                    .setParameter(0, album.getAlbumId() + "").setFirstResult(0).setMaxResults(1).list();
                            if (ilist != null && ilist.size() > 0) {
                                // if
                                // (!StringUtil.isNullOrEmpty(ilist.get(0).getUpdateTime()))
                                // {
                                // list.get(0).getVideo()
                                // .setUpdatetime(TimeUtil.convertGernalTime(ilist.get(0).getUpdateTime(),
                                // "yyyy-MM-dd HH:mm:ss") + "");
                                // } else {
                                // list.get(0).getVideo().setUpdatetime(
                                // TimeUtil.convertGernalTime(ilist.get(0).getTvYear(),
                                // "yyyyMMdd") + "");
                                // }
                                list.get(0).getVideo().setVideocount(videoList.size());
                                if (!StringUtil.isNullOrEmpty(ilist.get(0).getVideoImage())) {
                                    list.get(0).getVideo().setLatestHpicture(
                                            IqiyiUtil.getHPicture(ilist.get(0).getVideoImage()));
                                    list.get(0).getVideo().setLatestVpicture(ilist.get(0).getVideoImage());
                                }
                            }
                     if (isUpdate)
                        list.get(0).getVideo().setUpdatetime(System.currentTimeMillis() + "");
                            if (isUpdate)
                                list.get(0).getVideo().setUpdatetime(System.currentTimeMillis() + "");
                     String tag = IqiyiUtil.getAlbumTag(album, session);
                     if (!StringUtil.isNullOrEmpty(tag)) {// tag不为空
                        if (!tag.equalsIgnoreCase(list.get(0).getVideo().getTag())) {// tag不一样
                           list.get(0).getVideo().setTag(tag);
                           if (ilist != null && ilist.size() > 0) {
                              updateVideo = list.get(0).getVideo();
                              List<VideoDetailInfo> detailList = new ArrayList<>();
                              detailList.add(convertVideoinfoToDetail(album, ilist.get(0)));
                              updateVideo.setVideoDetailList(detailList);
                           }
                        }
                     }
                     session.update(list.get(0).getVideo());
                     vid = list.get(0).getVideo().getId();
                     Object obj = session
                           .createQuery(
                                 "select count(*) from ResourceVideo rv where rv.resource.id=? and rv.video.id=?")
                           .setParameter(0, 13 + "").setParameter(1, list.get(0).getVideo().getId())
                           .uniqueResult();
                            String tag = IqiyiUtil.getAlbumTag(album, session);
                            if (!StringUtil.isNullOrEmpty(tag)) {// tag不为空
                                if (!tag.equalsIgnoreCase(list.get(0).getVideo().getTag())) {// tag不一样
                                    list.get(0).getVideo().setTag(tag);
                                    if (ilist != null && ilist.size() > 0) {
                                        updateVideo = list.get(0).getVideo();
                                        List<VideoDetailInfo> detailList = new ArrayList<>();
                                        detailList.add(convertVideoinfoToDetail(album, ilist.get(0)));
                                        updateVideo.setVideoDetailList(detailList);
                                    }
                                }
                            }
                            session.update(list.get(0).getVideo());
                            vid = list.get(0).getVideo().getId();
                            CMQManager.getInstance().addVideoDataChanged(new VideoDataChangeMQMsg(VideoDataChangeMQMsg.TYPE_VIDEO_INFO, vid, VideoDataChangeMQMsg.ACTION_UPDATE));
                     long c = Long.parseLong(obj + "");
                     if (c <= 0) {
                        ResourceVideo rv = new ResourceVideo();
                        rv.setResource(new VideoResource("13"));
                        rv.setVideo(new VideoInfo(list.get(0).getVideo().getId()));
                        session.persist(rv);
                     }
                  }
                  // 更新tag
                  session.flush();
                  session.getTransaction().commit();
               } else {
                  // sourceid>0
                  Object detailCountObj = session
                        .createQuery(
                              "select count(*) from IqiyiAlbum a where a.sourceId=" + album.getSourceId())
                        .uniqueResult();
                  int videoDetailCount = Integer.parseInt(detailCountObj + "");
                            Object obj = session
                                    .createQuery(
                                            "select count(*) from ResourceVideo rv where rv.resource.id=? and rv.video.id=?")
                                    .setParameter(0, 13 + "").setParameter(1, list.get(0).getVideo().getId())
                                    .uniqueResult();
                  List<VideoIqiyi> list = session
                        .createQuery(
                              "from VideoIqiyi vi where vi.album.sourceId=? order by UNIX_TIMESTAMP(vi.album.createdTime) desc")
                        .setParameter(0, album.getSourceId()).setFirstResult(0).setMaxResults(1).list();
                  session.getTransaction().begin();
                  if (list == null || list.size() == 0) {// 不存在
                     VideoInfo vi = convertAlbumTOVideoInfo(album, session);
                     String videoid = "";
                            long c = Long.parseLong(obj + "");
                            if (c <= 0) {
                                ResourceVideo rv = new ResourceVideo();
                                rv.setResource(new VideoResource("13"));
                                rv.setVideo(new VideoInfo(list.get(0).getVideo().getId()));
                                session.persist(rv);
                                CMQManager.getInstance().addVideoDataChanged(new VideoDataChangeMQMsg(VideoDataChangeMQMsg.TYPE_VIDEO_RESOURCE, rv.getVideo().getId(), VideoDataChangeMQMsg.ACTION_ADD));
                            }
                        }
                        // 更新tag
                        session.flush();
                        session.getTransaction().commit();
                    } else {
                        // sourceid>0
                        Object detailCountObj = session
                                .createQuery(
                                        "select count(*) from IqiyiAlbum a where a.sourceId=" + album.getSourceId())
                                .uniqueResult();
                        int videoDetailCount = Integer.parseInt(detailCountObj + "");
                     VideoInfo same = isSameVideo(album, session);
                     if (same == null) {
                        vi.setVideocount(videoDetailCount);
                        videoid = session.save(vi).toString();
                     } else
                        videoid = same.getId();
                        List<VideoIqiyi> list = session
                                .createQuery(
                                        "from VideoIqiyi vi where vi.album.sourceId=? order by UNIX_TIMESTAMP(vi.album.createdTime) desc")
                                .setParameter(0, album.getSourceId()).setFirstResult(0).setMaxResults(1).list();
                        session.getTransaction().begin();
                        if (list == null || list.size() == 0) {// 不存在
                            VideoInfo vi = convertAlbumTOVideoInfo(album, session);
                            String videoid = "";
                     vid = videoid;
                     VideoIqiyi vii = new VideoIqiyi();
                     vii.setAlbum(album);
                     vii.setVideo(new VideoInfo(videoid));
                     session.persist(vii);
                            VideoInfo same = isSameVideo(album, session);
                            if (same == null) {
                                vi.setVideocount(videoDetailCount);
                                videoid = session.save(vi).toString();
                                CMQManager.getInstance().addVideoDataChanged(new VideoDataChangeMQMsg(VideoDataChangeMQMsg.TYPE_VIDEO_INFO, videoid, VideoDataChangeMQMsg.ACTION_ADD));
                            } else
                                videoid = same.getId();
                     Object obj = session
                           .createQuery(
                                 "select count(*) from ResourceVideo rv where rv.resource.id=? and rv.video.id=?")
                           .setParameter(0, 13 + "").setParameter(1, videoid).uniqueResult();
                            vid = videoid;
                            VideoIqiyi vii = new VideoIqiyi();
                            vii.setAlbum(album);
                            vii.setVideo(new VideoInfo(videoid));
                            session.persist(vii);
                     long c = Long.parseLong(obj + "");
                     if (c <= 0) {
                        ResourceVideo rv = new ResourceVideo();
                        rv.setResource(new VideoResource("13"));
                        rv.setVideo(new VideoInfo(videoid));
                        session.persist(rv);
                     }
                            Object obj = session
                                    .createQuery(
                                            "select count(*) from ResourceVideo rv where rv.resource.id=? and rv.video.id=?")
                                    .setParameter(0, 13 + "").setParameter(1, videoid).uniqueResult();
                            long c = Long.parseLong(obj + "");
                            if (c <= 0) {
                                ResourceVideo rv = new ResourceVideo();
                                rv.setResource(new VideoResource("13"));
                                rv.setVideo(new VideoInfo(videoid));
                                session.persist(rv);
                                CMQManager.getInstance().addVideoDataChanged(new VideoDataChangeMQMsg(VideoDataChangeMQMsg.TYPE_VIDEO_RESOURCE, rv.getVideo().getId(), VideoDataChangeMQMsg.ACTION_ADD));
                            }
                            if (same != null)// 更新内容
                            {
                                list = session
                                        .createQuery(
                                                "from VideoIqiyi vi where vi.album.sourceId=? order by UNIX_TIMESTAMP(vi.album.tvYear) desc")
                                        .setParameter(0, album.getSourceId()).setFirstResult(0).setMaxResults(1).list();
                                String tag = IqiyiUtil.getAlbumTag(list.get(0).getAlbum(), session);
                                if (!tag.equalsIgnoreCase(same.getTag())) {
                                    same.setTag(tag);
                     if (same != null)// 更新内容
                     {
                        list = session
                              .createQuery(
                                    "from VideoIqiyi vi where vi.album.sourceId=? order by UNIX_TIMESTAMP(vi.album.tvYear) desc")
                              .setParameter(0, album.getSourceId()).setFirstResult(0).setMaxResults(1).list();
                        String tag = IqiyiUtil.getAlbumTag(list.get(0).getAlbum(), session);
                        if (!tag.equalsIgnoreCase(same.getTag())) {
                           same.setTag(tag);
                                    if (isUpdate) {
                                        updateVideo = same;
                                        List<VideoDetailInfo> detailList = new ArrayList<VideoDetailInfo>();
                                        detailList.add(convertAlbumToDetail(list.get(0).getAlbum()));
                                        updateVideo.setVideoDetailList(detailList);
                                    }
                                }
                                same.setUpdatetime(
                                        TimeUtil.convertGernalTime(list.get(0).getAlbum().getTvYear(), "yyyyMMdd")
                                                + "");
                                session.update(same);
                           if (isUpdate) {
                              updateVideo = same;
                              List<VideoDetailInfo> detailList = new ArrayList<VideoDetailInfo>();
                              detailList.add(convertAlbumToDetail(list.get(0).getAlbum()));
                              updateVideo.setVideoDetailList(detailList);
                           }
                        }
                        same.setUpdatetime(
                              TimeUtil.convertGernalTime(list.get(0).getAlbum().getTvYear(), "yyyyMMdd")
                                    + "");
                        session.update(same);
                                CMQManager.getInstance().addVideoDataChanged(new VideoDataChangeMQMsg(VideoDataChangeMQMsg.TYPE_VIDEO_INFO, videoid, VideoDataChangeMQMsg.ACTION_UPDATE));
                        obj = session
                              .createQuery(
                                    "select count(*) from ResourceVideo rv where rv.resource.id=? and rv.video.id=?")
                              .setParameter(0, 13 + "").setParameter(1, list.get(0).getVideo().getId())
                              .uniqueResult();
                                obj = session
                                        .createQuery(
                                                "select count(*) from ResourceVideo rv where rv.resource.id=? and rv.video.id=?")
                                        .setParameter(0, 13 + "").setParameter(1, list.get(0).getVideo().getId())
                                        .uniqueResult();
                        c = Long.parseLong(obj + "");
                        if (c <= 0) {
                           ResourceVideo rv = new ResourceVideo();
                           rv.setResource(new VideoResource("13"));
                           rv.setVideo(same);
                           session.persist(rv);
                        }
                                c = Long.parseLong(obj + "");
                                if (c <= 0) {
                                    ResourceVideo rv = new ResourceVideo();
                                    rv.setResource(new VideoResource("13"));
                                    rv.setVideo(same);
                                    session.persist(rv);
                                    CMQManager.getInstance().addVideoDataChanged(new VideoDataChangeMQMsg(VideoDataChangeMQMsg.TYPE_VIDEO_RESOURCE, rv.getVideo().getId(), VideoDataChangeMQMsg.ACTION_ADD));
                                }
                     }
                            }
                  } else {
                     Object ob = session
                           .createQuery(
                                 "select count(*) from  VideoIqiyi vi where vi.album.sourceId=? and vi.album.albumId=?")
                           .setParameter(0, album.getSourceId()).setParameter(1, album.getAlbumId())
                           .uniqueResult();
                     long count = Long.parseLong(ob.toString());
                     if (count <= 0) {// 需要加入VideoIqiyi
                        VideoIqiyi vi = new VideoIqiyi();
                        vi.setVideo(list.get(0).getVideo());
                        vi.setAlbum(album);
                        session.persist(vi);
                        if (album.getSourceId() > 0) {// 综艺
                           // 查询最新做更新
                           list = session
                                 .createQuery(
                                       "from VideoIqiyi vi where vi.album.sourceId=? order by UNIX_TIMESTAMP(vi.album.tvYear) desc")
                                 .setParameter(0, album.getSourceId()).setFirstResult(0).setMaxResults(1)
                                 .list();
                           String tag = IqiyiUtil.getAlbumTag(list.get(0).getAlbum(), session);
                        } else {
                            Object ob = session
                                    .createQuery(
                                            "select count(*) from  VideoIqiyi vi where vi.album.sourceId=? and vi.album.albumId=?")
                                    .setParameter(0, album.getSourceId()).setParameter(1, album.getAlbumId())
                                    .uniqueResult();
                            long count = Long.parseLong(ob.toString());
                            if (count <= 0) {// 需要加入VideoIqiyi
                                VideoIqiyi vi = new VideoIqiyi();
                                vi.setVideo(list.get(0).getVideo());
                                vi.setAlbum(album);
                                session.persist(vi);
                                if (album.getSourceId() > 0) {// 综艺
                                    // 查询最新做更新
                                    list = session
                                            .createQuery(
                                                    "from VideoIqiyi vi where vi.album.sourceId=? order by UNIX_TIMESTAMP(vi.album.tvYear) desc")
                                            .setParameter(0, album.getSourceId()).setFirstResult(0).setMaxResults(1)
                                            .list();
                                    String tag = IqiyiUtil.getAlbumTag(list.get(0).getAlbum(), session);
                           list.get(0).getVideo().setTag(tag);
                           // list.get(0).getVideo().setUpdatetime(
                           // TimeUtil.convertGernalTime(list.get(0).getAlbum().getTvYear(),
                           // "yyyyMMdd")
                           // + "");
                           if (isUpdate)
                              list.get(0).getVideo().setUpdatetime(System.currentTimeMillis() + "");
                                    list.get(0).getVideo().setTag(tag);
                                    // list.get(0).getVideo().setUpdatetime(
                                    // TimeUtil.convertGernalTime(list.get(0).getAlbum().getTvYear(),
                                    // "yyyyMMdd")
                                    // + "");
                                    if (isUpdate)
                                        list.get(0).getVideo().setUpdatetime(System.currentTimeMillis() + "");
                           if (!StringUtil.isNullOrEmpty(list.get(0).getAlbum().getPosterPicUrl())) {
                              list.get(0).getVideo().setLatestHpicture(   IqiyiUtil.getHPicture( list.get(0).getAlbum()
                                    .getPosterPicUrl()));
                              list.get(0).getVideo()
                                    .setLatestVpicture(list.get(0).getAlbum().getPosterPicUrl());
                           }
                           list.get(0).getVideo().setVideocount(videoDetailCount);
                                    if (!StringUtil.isNullOrEmpty(list.get(0).getAlbum().getPosterPicUrl())) {
                                        list.get(0).getVideo().setLatestHpicture(IqiyiUtil.getHPicture(list.get(0).getAlbum()
                                                .getPosterPicUrl()));
                                        list.get(0).getVideo()
                                                .setLatestVpicture(list.get(0).getAlbum().getPosterPicUrl());
                                    }
                                    list.get(0).getVideo().setVideocount(videoDetailCount);
                           session.update(list.get(0).getVideo());
                           if (isUpdate) {
                              updateVideo = list.get(0).getVideo();
                              List<VideoDetailInfo> detailList = new ArrayList<VideoDetailInfo>();
                              detailList.add(convertAlbumToDetail(list.get(0).getAlbum()));
                              updateVideo.setVideoDetailList(detailList);
                           }
                        }
                     }
                                    session.update(list.get(0).getVideo());
                                    if (isUpdate) {
                                        updateVideo = list.get(0).getVideo();
                                        List<VideoDetailInfo> detailList = new ArrayList<VideoDetailInfo>();
                                        detailList.add(convertAlbumToDetail(list.get(0).getAlbum()));
                                        updateVideo.setVideoDetailList(detailList);
                                    }
                                }
                            }
                     Object obj = session
                           .createQuery(
                                 "select count(*) from ResourceVideo rv where rv.resource.id=? and rv.video.id=?")
                           .setParameter(0, 13 + "").setParameter(1, list.get(0).getVideo().getId())
                           .uniqueResult();
                            Object obj = session
                                    .createQuery(
                                            "select count(*) from ResourceVideo rv where rv.resource.id=? and rv.video.id=?")
                                    .setParameter(0, 13 + "").setParameter(1, list.get(0).getVideo().getId())
                                    .uniqueResult();
                     long c = Long.parseLong(obj + "");
                     if (c <= 0) {
                        ResourceVideo rv = new ResourceVideo();
                        rv.setResource(new VideoResource("13"));
                        rv.setVideo(list.get(0).getVideo());
                        session.persist(rv);
                     }
                     vid = list.get(0).getVideo().getId();
                  }
                  session.flush();
                  session.getTransaction().commit();
               }
                            long c = Long.parseLong(obj + "");
                            if (c <= 0) {
                                ResourceVideo rv = new ResourceVideo();
                                rv.setResource(new VideoResource("13"));
                                rv.setVideo(list.get(0).getVideo());
                                session.persist(rv);
                                CMQManager.getInstance().addVideoDataChanged(new VideoDataChangeMQMsg(VideoDataChangeMQMsg.TYPE_VIDEO_RESOURCE, rv.getVideo().getId(), VideoDataChangeMQMsg.ACTION_ADD));
                            }
                            vid = list.get(0).getVideo().getId();
                        }
                        session.flush();
                        session.getTransaction().commit();
                    }
            } catch (Exception e) {
               logger.error("insertAlbumToVideoInfo");
               logger.error(e.getMessage());
                  session.getTransaction().rollback();
               e.printStackTrace();
            }
                } catch (Exception e) {
                    logger.error("insertAlbumToVideoInfo");
                    logger.error(e.getMessage());
                    session.getTransaction().rollback();
                    e.printStackTrace();
                }
            try {
               if (updateVideo != null && isUpdate) {
                  VideoPushHistory vh = new VideoPushHistory();
                  vh.setCreatetime(System.currentTimeMillis() + "");
                  vh.setDetailId(updateVideo.getVideoDetailList().get(0).getId() + "");
                  vh.setType(updateVideo.getVideoDetailList().get(0).getType());
                  vh.setResourceId("13");
                  vh.setTag(updateVideo.getTag());
                  vh.setVideoInfo(updateVideo);
                  pushService.addVideoPushHistory(vh);
               }
            } catch (Exception e) {
               e.printStackTrace();
            }
                try {
                    if (updateVideo != null && isUpdate) {
                        VideoPushHistory vh = new VideoPushHistory();
                        vh.setCreatetime(System.currentTimeMillis() + "");
                        vh.setDetailId(updateVideo.getVideoDetailList().get(0).getId() + "");
                        vh.setType(updateVideo.getVideoDetailList().get(0).getType());
                        vh.setResourceId("13");
                        vh.setTag(updateVideo.getTag());
                        vh.setVideoInfo(updateVideo);
                        pushService.addVideoPushHistory(vh);
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
            return vid;
         }
      }) + "";
                return vid;
            }
        }) + "";
   }
    }
   private static VideoDetailInfo convertAlbumToDetail(IqiyiAlbum ia) {
      VideoDetailInfo vi = new VideoDetailInfo();
      vi.setAdmin(new AdminInfo("1"));
      vi.setId(ia.getAlbumId());
      vi.setIntroduction(ia.getDesc());
      vi.setName(ia.getSource());
      vi.setTag(ia.getTvYear() + " " + (StringUtil.isNullOrEmpty(ia.getFocus()) ? "" : ia.getFocus()));
      vi.setType("album");
      return vi;
   }
    private static VideoDetailInfo convertAlbumToDetail(IqiyiAlbum ia) {
        VideoDetailInfo vi = new VideoDetailInfo();
        vi.setAdmin(new AdminInfo("1"));
        vi.setId(ia.getAlbumId());
        vi.setIntroduction(ia.getDesc());
        vi.setName(ia.getSource());
        vi.setTag(ia.getTvYear() + " " + (StringUtil.isNullOrEmpty(ia.getFocus()) ? "" : ia.getFocus()));
        vi.setType("album");
        return vi;
    }
   private static VideoDetailInfo convertVideoinfoToDetail(IqiyiAlbum album, IqiyiVideoInfo info) {
      VideoDetailInfo vi = new VideoDetailInfo();
      vi.setAdmin(new AdminInfo("1"));
      vi.setId(info.getTvId());
      vi.setExtraId(info.getTvId() + "");
      vi.setIntroduction("");
      vi.setName("");
      vi.setTag(info.getPlayOrder() + "");
      if (album != null)
         if (album.getCategoryId() == 1)
            vi.setTag(album.getAlbumName());
    private static VideoDetailInfo convertVideoinfoToDetail(IqiyiAlbum album, IqiyiVideoInfo info) {
        VideoDetailInfo vi = new VideoDetailInfo();
        vi.setAdmin(new AdminInfo("1"));
        vi.setId(info.getTvId());
        vi.setExtraId(info.getTvId() + "");
        vi.setIntroduction("");
        vi.setName("");
        vi.setTag(info.getPlayOrder() + "");
        if (album != null)
            if (album.getCategoryId() == 1)
                vi.setTag(album.getAlbumName());
      info.getSubTitle();
        info.getSubTitle();
      vi.setType("tvid");
      return vi;
   }
        vi.setType("tvid");
        return vi;
    }
   @SuppressWarnings("rawtypes")
   public List<List<String>> getSourceAlbumList() {
      List<List<String>> olist = new ArrayList<List<String>>();
    @SuppressWarnings("rawtypes")
    public List<List<String>> getSourceAlbumList() {
        List<List<String>> olist = new ArrayList<List<String>>();
      List list = videoIqiyiDao.sqlList(
            "SELECT a.`sourceId`,a.categoryId FROM wk_iqiyi_album a WHERE a.`sourceId`>0 GROUP BY a.`sourceId` ");
      for (int i = 0; i < list.size(); i++) {
         List<String> ilist = new ArrayList<String>();
         Object[] obj = (Object[]) list.get(i);
         ilist.add(obj[0] + "");
         ilist.add(obj[1] + "");
         olist.add(ilist);
      }
      return olist;
   }
        List list = videoIqiyiDao.sqlList(
                "SELECT a.`sourceId`,a.categoryId FROM wk_iqiyi_album a WHERE a.`sourceId`>0 GROUP BY a.`sourceId` ");
        for (int i = 0; i < list.size(); i++) {
            List<String> ilist = new ArrayList<String>();
            Object[] obj = (Object[]) list.get(i);
            ilist.add(obj[0] + "");
            ilist.add(obj[1] + "");
            olist.add(ilist);
        }
        return olist;
    }
   @SuppressWarnings("rawtypes")
   public List<List<String>> getSourceAlbumListBySourceId(String sourceId) {
      List<List<String>> olist = new ArrayList<List<String>>();
    @SuppressWarnings("rawtypes")
    public List<List<String>> getSourceAlbumListBySourceId(String sourceId) {
        List<List<String>> olist = new ArrayList<List<String>>();
      List list = videoIqiyiDao.sqlList("SELECT a.`sourceId`,a.categoryId FROM wk_iqiyi_album a WHERE a.`sourceId`="
            + sourceId + " GROUP BY a.`sourceId` ");
      for (int i = 0; i < list.size(); i++) {
         List<String> ilist = new ArrayList<String>();
         Object[] obj = (Object[]) list.get(i);
         ilist.add(obj[0] + "");
         ilist.add(obj[1] + "");
         olist.add(ilist);
      }
      return olist;
   }
        List list = videoIqiyiDao.sqlList("SELECT a.`sourceId`,a.categoryId FROM wk_iqiyi_album a WHERE a.`sourceId`="
                + sourceId + " GROUP BY a.`sourceId` ");
        for (int i = 0; i < list.size(); i++) {
            List<String> ilist = new ArrayList<String>();
            Object[] obj = (Object[]) list.get(i);
            ilist.add(obj[0] + "");
            ilist.add(obj[1] + "");
            olist.add(ilist);
        }
        return olist;
    }
   @SuppressWarnings("unchecked")
   public List<VideoDetailInfo> getVideoDetailList(final String videoid,int page,int pageSize) {
      return (List<VideoDetailInfo>) videoIqiyiDao.excute(new HibernateCallback<List<VideoDetailInfo>>() {
         public List<VideoDetailInfo> doInHibernate(Session session) throws HibernateException {
            try {
               List<IqiyiAlbum> list = session
                     .createQuery(
                           "select a.album from VideoIqiyi a where a.video.id=? order by UNIX_TIMESTAMP(a.album.tvYear) desc")
                            .setFirstResult((page-1)*pageSize).setMaxResults(pageSize)
                     .setParameter(0, videoid).list();
               if (list == null || list.size() == 0) {
                  return null;
               }
    @SuppressWarnings("unchecked")
    public List<VideoDetailInfo> getVideoDetailList(final String videoid, int page, int pageSize) {
        return (List<VideoDetailInfo>) videoIqiyiDao.excute(new HibernateCallback<List<VideoDetailInfo>>() {
            public List<VideoDetailInfo> doInHibernate(Session session) throws HibernateException {
                try {
                    List<IqiyiAlbum> list = session
                            .createQuery(
                                    "select a.album from VideoIqiyi a where a.video.id=? order by UNIX_TIMESTAMP(a.album.tvYear) desc")
                            .setFirstResult((page - 1) * pageSize).setMaxResults(pageSize)
                            .setParameter(0, videoid).list();
                    if (list == null || list.size() == 0) {
                        return null;
                    }
               List<VideoDetailInfo> detailList = new ArrayList<VideoDetailInfo>();
                    List<VideoDetailInfo> detailList = new ArrayList<VideoDetailInfo>();
               if (list.size() > 1) {
                  for (IqiyiAlbum ia : list)
                     // 综艺只加正片
                     if (ia.getCategoryId() == 6) {
                        if (ia.getContentType() == 1)
                           detailList.add(convertAlbumToDetail(ia));
                     } else
                        detailList.add(convertAlbumToDetail(ia));
               } else {
                  List<IqiyiVideoInfo> ivlist = session
                        .createQuery("from IqiyiVideoInfo a where a.albumId=? order by a.playOrder")
                                .setFirstResult((page-1)*pageSize).setMaxResults(pageSize)
                        .setParameter(0, list.get(0).getAlbumId() + "").list();
                    if (list.size() > 1) {
                        for (IqiyiAlbum ia : list)
                            // 综艺只加正片
                            if (ia.getCategoryId() == 6) {
                                if (ia.getContentType() == 1)
                                    detailList.add(convertAlbumToDetail(ia));
                            } else
                                detailList.add(convertAlbumToDetail(ia));
                    } else {
                        List<IqiyiVideoInfo> ivlist = session
                                .createQuery("from IqiyiVideoInfo a where a.albumId=? order by a.playOrder")
                                .setFirstResult((page - 1) * pageSize).setMaxResults(pageSize)
                                .setParameter(0, list.get(0).getAlbumId() + "").list();
                  for (IqiyiVideoInfo ia : ivlist)
                     detailList.add(convertVideoinfoToDetail(list.get(0), ia));
               }
               return detailList;
                        for (IqiyiVideoInfo ia : ivlist)
                            detailList.add(convertVideoinfoToDetail(list.get(0), ia));
                    }
                    return detailList;
            } catch (Exception e) {
               e.printStackTrace();
               logger.error("getVideoDetailList");
               logger.error(e.getMessage());
            }
            return new ArrayList<VideoDetailInfo>();
         }
      });
                } catch (Exception e) {
                    e.printStackTrace();
                    logger.error("getVideoDetailList");
                    logger.error(e.getMessage());
                }
                return new ArrayList<VideoDetailInfo>();
            }
        });
   }
    }
   // 获取最新一集的详情
   @SuppressWarnings("unchecked")
   public VideoDetailInfo getLatestVideoDetail(final String videoid) {
      return (VideoDetailInfo) videoIqiyiDao.excute(new HibernateCallback<VideoDetailInfo>() {
         public VideoDetailInfo doInHibernate(Session session) throws HibernateException {
            try {
               List<IqiyiAlbum> list = session
                     .createQuery(
                           "select a.album from VideoIqiyi a where a.video.id=? order by UNIX_TIMESTAMP(a.album.tvYear) desc")
                     .setFirstResult(0).setMaxResults(2).setParameter(0, videoid).list();
               if (list == null || list.size() == 0) {
                  return null;
               }
    // 获取最新一集的详情
    @SuppressWarnings("unchecked")
    public VideoDetailInfo getLatestVideoDetail(final String videoid) {
        return (VideoDetailInfo) videoIqiyiDao.excute(new HibernateCallback<VideoDetailInfo>() {
            public VideoDetailInfo doInHibernate(Session session) throws HibernateException {
                try {
                    List<IqiyiAlbum> list = session
                            .createQuery(
                                    "select a.album from VideoIqiyi a where a.video.id=? order by UNIX_TIMESTAMP(a.album.tvYear) desc")
                            .setFirstResult(0).setMaxResults(2).setParameter(0, videoid).list();
                    if (list == null || list.size() == 0) {
                        return null;
                    }
               List<VideoDetailInfo> detailList = new ArrayList<VideoDetailInfo>();
                    List<VideoDetailInfo> detailList = new ArrayList<VideoDetailInfo>();
               if (list.size() > 1) {
                  for (IqiyiAlbum ia : list)
                     detailList.add(convertAlbumToDetail(ia));
                    if (list.size() > 1) {
                        for (IqiyiAlbum ia : list)
                            detailList.add(convertAlbumToDetail(ia));
               } else {
                  List<IqiyiVideoInfo> ivlist = session
                        .createQuery("from IqiyiVideoInfo a where a.albumId=? order by a.playOrder desc")
                        .setParameter(0, list.get(0).getAlbumId() + "").list();
                    } else {
                        List<IqiyiVideoInfo> ivlist = session
                                .createQuery("from IqiyiVideoInfo a where a.albumId=? order by a.playOrder desc")
                                .setParameter(0, list.get(0).getAlbumId() + "").list();
                  for (IqiyiVideoInfo ia : ivlist)
                     detailList.add(convertVideoinfoToDetail(list.get(0), ia));
               }
               return detailList.get(0);
                        for (IqiyiVideoInfo ia : ivlist)
                            detailList.add(convertVideoinfoToDetail(list.get(0), ia));
                    }
                    return detailList.get(0);
            } catch (Exception e) {
               e.printStackTrace();
               logger.error("getVideoDetailList");
               logger.error(e.getMessage());
            }
            return null;
         }
      });
                } catch (Exception e) {
                    e.printStackTrace();
                    logger.error("getVideoDetailList");
                    logger.error(e.getMessage());
                }
                return null;
            }
        });
   }
    }
   public String getAlbumTag(IqiyiAlbum album) {
      String tag = "";
      if (album.getCategoryId() == 1) {
         if (album.getSourceId() > 0)
            tag = "更新至" + TimeUtil.getGernalTime(TimeUtil.convertGernalTime(album.getTvYear(), "yyyyMMdd"),
                  "yyyy-MM-dd");
         else
            tag = "评分:" + album.getScore();
      } else if (album.getCategoryId() == 2) {
         IqiyiVideoInfo video = getLatestVideoInfo(album.getAlbumId() + "");
         tag = "更新至" + video.getPlayOrder() + "集";
         if (video.getPlayOrder() == album.getSets()) {
            tag = album.getSets() + "集全";
         }
      } else if (album.getCategoryId() == 6) {
         tag = "更新至"
               + TimeUtil.getGernalTime(TimeUtil.convertGernalTime(album.getTvYear(), "yyyyMMdd"), "yyyy-MM-dd")
               + "期";
      } else if (album.getCategoryId() == 4) {
         IqiyiVideoInfo video = getLatestVideoInfo(album.getAlbumId() + "");
         tag = "更新至" + video.getPlayOrder() + "集";
         if (video.getPlayOrder() == album.getSets()) {
            tag = album.getSets() + "集全";
         }
      }
      return tag;
   }
    public String getAlbumTag(IqiyiAlbum album) {
        String tag = "";
        if (album.getCategoryId() == 1) {
            if (album.getSourceId() > 0)
                tag = "更新至" + TimeUtil.getGernalTime(TimeUtil.convertGernalTime(album.getTvYear(), "yyyyMMdd"),
                        "yyyy-MM-dd");
            else
                tag = "评分:" + album.getScore();
        } else if (album.getCategoryId() == 2) {
            IqiyiVideoInfo video = getLatestVideoInfo(album.getAlbumId() + "");
            tag = "更新至" + video.getPlayOrder() + "集";
            if (video.getPlayOrder() == album.getSets()) {
                tag = album.getSets() + "集全";
            }
        } else if (album.getCategoryId() == 6) {
            tag = "更新至"
                    + TimeUtil.getGernalTime(TimeUtil.convertGernalTime(album.getTvYear(), "yyyyMMdd"), "yyyy-MM-dd")
                    + "期";
        } else if (album.getCategoryId() == 4) {
            IqiyiVideoInfo video = getLatestVideoInfo(album.getAlbumId() + "");
            tag = "更新至" + video.getPlayOrder() + "集";
            if (video.getPlayOrder() == album.getSets()) {
                tag = album.getSets() + "集全";
            }
        }
        return tag;
    }
   @SuppressWarnings({ "deprecation", "unchecked" })
   public VideoInfo convertAlbumTOVideoInfo(IqiyiAlbum album, Session session) {
      Calendar ca = Calendar.getInstance();
      if ("0".equalsIgnoreCase(album.getTvYear())) {
         album.setTvYear("20160101");
      }
      ca.setTimeInMillis(TimeUtil.convertGernalTime(album.getTvYear(), "yyyyMMdd"));
      int day = ca.get(Calendar.DAY_OF_MONTH);
      int month = ca.get(Calendar.MONTH) + 1;
      int year = ca.get(Calendar.YEAR);
    @SuppressWarnings({"deprecation", "unchecked"})
    public VideoInfo convertAlbumTOVideoInfo(IqiyiAlbum album, Session session) {
        Calendar ca = Calendar.getInstance();
        if ("0".equalsIgnoreCase(album.getTvYear())) {
            album.setTvYear("20160101");
        }
        ca.setTimeInMillis(TimeUtil.convertGernalTime(album.getTvYear(), "yyyyMMdd"));
        int day = ca.get(Calendar.DAY_OF_MONTH);
        int month = ca.get(Calendar.MONTH) + 1;
        int year = ca.get(Calendar.YEAR);
      VideoInfo video = new VideoInfo();
      video.setVideoType(new VideoType(IqiyiUtil.getType(album.getContentType())));
      video.setArea(album.getArea());
      video.setBaseurl(album.getHtml5Url());
      video.setCanSave(false);
      video.setCommentCount(0);
      video.setCreatetime(System.currentTimeMillis());
      video.setDay(day + "");
      video.setDirector(album.getDirector());
      video.setDuration(album.getTimeLength() + "");
      video.setFinish("1");
      video.setIntroduction(album.getDesc());
      video.setMainActor(album.getActor());
      video.setMonth(month + "");
      if (album.getSourceId() == 0)
         video.setName(album.getAlbumName());
      else
         video.setName(album.getSource());
      video.setNowNumber("1");
      video.setOrderby("0" + "");
      video.setPicture(album.getPicUrl());
        VideoInfo video = new VideoInfo();
        video.setVideoType(new VideoType(IqiyiUtil.getType(album.getContentType())));
        video.setArea(album.getArea());
        video.setBaseurl(album.getHtml5Url());
        video.setCanSave(false);
        video.setCommentCount(0);
        video.setCreatetime(System.currentTimeMillis());
        video.setDay(day + "");
        video.setDirector(album.getDirector());
        video.setDuration(album.getTimeLength() + "");
        video.setFinish("1");
        video.setIntroduction(album.getDesc());
        video.setMainActor(album.getActor());
        video.setMonth(month + "");
        if (album.getSourceId() == 0)
            video.setName(album.getAlbumName());
        else
            video.setName(album.getSource());
        video.setNowNumber("1");
        video.setOrderby("0" + "");
        video.setPicture(album.getPicUrl());
      // info.setPlayPicture(info.getPicture().replace(".jpg",
      // "_480_270.jpg"));
        // info.setPlayPicture(info.getPicture().replace(".jpg",
        // "_480_270.jpg"));
      video.setVpicture(IqiyiUtil.getVPicture(album.getPicUrl()));
      video.setHpicture(   IqiyiUtil.getHPicture( album.getPicUrl()));
        video.setVpicture(IqiyiUtil.getVPicture(album.getPicUrl()));
        video.setHpicture(IqiyiUtil.getHPicture(album.getPicUrl()));
      video.setScore(album.getScore());
      video.setShare("0");
      video.setShow("1");
      if (session != null)
         video.setTag(IqiyiUtil.getAlbumTag(album, session));
      else
         video.setTag(getAlbumTag(album));
      video.setThirdType("1");
      video.setTotalNumber("0");
      List<IqiyiVideoInfo> infolist = session
            .createQuery("from IqiyiVideoInfo vi where vi.albumId=? order by UNIX_TIMESTAMP(vi.updateTime) desc")
            .setFirstResult(0).setMaxResults(1).setParameter(0, album.getAlbumId() + "").list();
      if (infolist != null && infolist.size() > 0) {
         if (infolist.get(0).getTvYear().length() > 5)
            video.setUpdatetime(TimeUtil.convertGernalTime(infolist.get(0).getTvYear(), "yyyyMMdd") + "");
         else
            video.setUpdatetime(TimeUtil.convertDateToTemp2(infolist.get(0).getUpdateTime()) + "");
      } else {
         video.setUpdatetime(TimeUtil.convertDateToTemp2(album.getCreatedTime()) + "");
      }
      video.setWatchCount(0 + "");
      video.setYear(year + "");
      video.setAdmin(new AdminInfo("1"));
      video.setContentType(album.getContentType());
      video.setCommentCount(0);
      if (infolist.size() > 0) {
         video.setLatestHpicture(infolist.get(0).getVideoImage());
         video.setVideocount(infolist.size());
         video.setLatestHpicture(IqiyiUtil.getHPicture( infolist.get(0).getVideoImage()));
         video.setLatestVpicture(IqiyiUtil.getVPicture(infolist.get(0).getVideoImage()));
      }
        video.setScore(album.getScore());
        video.setShare("0");
        video.setShow("1");
        if (session != null)
            video.setTag(IqiyiUtil.getAlbumTag(album, session));
        else
            video.setTag(getAlbumTag(album));
        video.setThirdType("1");
        video.setTotalNumber("0");
        List<IqiyiVideoInfo> infolist = session
                .createQuery("from IqiyiVideoInfo vi where vi.albumId=? order by UNIX_TIMESTAMP(vi.updateTime) desc")
                .setFirstResult(0).setMaxResults(1).setParameter(0, album.getAlbumId() + "").list();
        if (infolist != null && infolist.size() > 0) {
            if (infolist.get(0).getTvYear().length() > 5)
                video.setUpdatetime(TimeUtil.convertGernalTime(infolist.get(0).getTvYear(), "yyyyMMdd") + "");
            else
                video.setUpdatetime(TimeUtil.convertDateToTemp2(infolist.get(0).getUpdateTime()) + "");
        } else {
            video.setUpdatetime(TimeUtil.convertDateToTemp2(album.getCreatedTime()) + "");
        }
        video.setWatchCount(0 + "");
        video.setYear(year + "");
        video.setAdmin(new AdminInfo("1"));
        video.setContentType(album.getContentType());
        video.setCommentCount(0);
        if (infolist.size() > 0) {
            video.setLatestHpicture(infolist.get(0).getVideoImage());
            video.setVideocount(infolist.size());
            video.setLatestHpicture(IqiyiUtil.getHPicture(infolist.get(0).getVideoImage()));
            video.setLatestVpicture(IqiyiUtil.getVPicture(infolist.get(0).getVideoImage()));
        }
      return video;
   }
        return video;
    }
   // 添加播放统计
   public void addPlayStatistic(String detailSystemId, IqiyiVideoInfo video) {
      List list = videoIqiyiDao.sqlList(
            "SELECT i.`videoid` FROM wk_video_iqiyi i WHERE i.`albumid`=(SELECT a.`id` FROM wk_iqiyi_album a WHERE a.`albumId`=?)",
            new Serializable[] { Long.parseLong(video.getAlbumId()) });
      if (list != null && list.size() > 0) {
         statisticsService.addStatistics(detailSystemId, list.get(0) + "");
      }
   }
    // 添加播放统计
    public void addPlayStatistic(String detailSystemId, IqiyiVideoInfo video) {
        List list = videoIqiyiDao.sqlList(
                "SELECT i.`videoid` FROM wk_video_iqiyi i WHERE i.`albumid`=(SELECT a.`id` FROM wk_iqiyi_album a WHERE a.`albumId`=?)",
                new Serializable[]{Long.parseLong(video.getAlbumId())});
        if (list != null && list.size() > 0) {
            statisticsService.addStatistics(detailSystemId, list.get(0) + "");
        }
    }
   /**
    * 删除指定的iqiyi源视频
    */
   public void deleteIqiyiVideoByVideoId(final String videoId) {
      // 删除VideoIqiyi
      List<VideoIqiyi> list = videoIqiyiDao.list("from VideoIqiyi i where i.video.id=" + videoId);
      for (VideoIqiyi iqiyi : list)
         videoIqiyiDao.delete(iqiyi);
      // 删除ResourceVideo
      List<ResourceVideo> resourceVideoList = resourceVideoDao
            .list("from ResourceVideo rv where rv.video.id=" + videoId + " and rv.resource.id=19");
      for (ResourceVideo rv : resourceVideoList)
         resourceVideoDao.delete(rv);
      // 判读是否删除相关VideoInfo
      resourceVideoList = resourceVideoDao.list("from ResourceVideo rv where rv.video.id=" + videoId);
      // 需要隐藏视频
      if (resourceVideoList.size() <= 0) {
         videoIqiyiDao.excute(new HibernateCallback() {
            @Override
            public Object doInHibernate(Session session) throws HibernateException {
               session.getTransaction().begin();
               session.createSQLQuery("update wk_video_video v set v.show=0 where v.id=" + videoId)
                     .executeUpdate();
               session.flush();
               session.getTransaction().commit();
               return null;
            }
         });
      }
    /**
     * 删除指定的iqiyi源视频
     */
    public void deleteIqiyiVideoByVideoId(final String videoId) {
        // 删除VideoIqiyi
        List<VideoIqiyi> list = videoIqiyiDao.list("from VideoIqiyi i where i.video.id=" + videoId);
        for (VideoIqiyi iqiyi : list)
            videoIqiyiDao.delete(iqiyi);
        // 删除ResourceVideo
        List<ResourceVideo> resourceVideoList = resourceVideoDao
                .list("from ResourceVideo rv where rv.video.id=" + videoId + " and rv.resource.id=19");
        for (ResourceVideo rv : resourceVideoList)
            resourceVideoDao.delete(rv);
        // 判读是否删除相关VideoInfo
        resourceVideoList = resourceVideoDao.list("from ResourceVideo rv where rv.video.id=" + videoId);
        // 需要隐藏视频
        if (resourceVideoList.size() <= 0) {
            videoIqiyiDao.excute(new HibernateCallback() {
                @Override
                public Object doInHibernate(Session session) throws HibernateException {
                    session.getTransaction().begin();
                    session.createSQLQuery("update wk_video_video v set v.show=0 where v.id=" + videoId)
                            .executeUpdate();
                    session.flush();
                    session.getTransaction().commit();
                    return null;
                }
            });
        }
   }
    }
}