VideosController.java 8.55 KB
package com.cnlive.shenhe.controller;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.cnlive.shenhe.bean.ErrorEnum;
import com.cnlive.shenhe.bean.ResponseBean;
import com.cnlive.shenhe.bean.SessionUser;
import com.cnlive.shenhe.entity.ShyUsers;
import com.cnlive.shenhe.entity.ShyVideos;
import com.cnlive.shenhe.serviceImpl.UsersServiceImpl;
import com.cnlive.shenhe.serviceImpl.VideosServiceImpl;
import com.cnlive.shenhe.utils.AuditPass;
import com.cnlive.shenhe.utils.CommonConst;
import com.cnlive.shenhe.utils.CommonUtils;
import com.github.pagehelper.PageInfo;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.servlet.http.HttpSession;
import java.util.List;

@Controller
@RequestMapping("/videos")
public class VideosController {
    private static Logger logger = LoggerFactory.getLogger(VideosController.class);
    @Autowired
    AuditPass Pass;
    @Autowired
    VideosServiceImpl videosService;
    @Autowired
    UsersServiceImpl usersService;


    /**
     * 审核信息返回接口
     *
     * @param activity_id 视频id
     * @param state       状态码
     * @param attr_tags   标签
     * @param msg         备注信息
     * @return
     */
    @PostMapping("/shenheVideo")
    @ResponseBody
    public ResponseBean shenheInfo(Integer id, String activity_id, Integer state, String attr_tags, String msg, String callback, HttpSession session) {
        SessionUser sessionUser = (SessionUser) session.getAttribute(SessionUser.getSessionKey());
        String userId = sessionUser.getUserId();
        ShyVideos shyVideos = videosService.selectByPrimaryKey(id);
        if (shyVideos.getReceive() && CommonUtils.isNotEmpty(shyVideos.getReceive_user_id()) && userId.equals(shyVideos.getReceive_user_id())) {
            JSONObject result = null;
            try {
                result = Pass.auditPass(activity_id, state, attr_tags, msg, callback);
            } catch (Exception e) {
                e.printStackTrace();
                System.out.println("视频审核失败");
                return new ResponseBean(ErrorEnum.ERROR);
            }
            if (result == null) {
                System.out.println("视频审核失败且接口错误没有返回信息");
                return new ResponseBean(ErrorEnum.ERROR);
            }
            Integer code = result.getInteger("code");
            if (code != 0) {
                System.out.println("审核失败,code==" + code);
                return new ResponseBean(code, result.getString("msg"));
            }
            state = state == 4 ? 2 : 1;
            int i = videosService.updateVideo(id, userId, state, msg);
            if (i == 0) {
                return new ResponseBean(ErrorEnum.ERROR);
            }
            return new ResponseBean(ErrorEnum.SUCCESS);
        }
        logger.error("领取逻辑不符,不能审核,Video_id:{}", shyVideos.getVideo_id());
        return new ResponseBean(ErrorEnum.ERROR.getErrorCode(), "领取逻辑不符,不能审核");
    }

    /**
     * 内容分页列表接口
     *
     * @param video_title
     * @param start_date
     * @param end_date
     * @param state
     * @param page
     * @param pageSize
     * @param orderByClause
     * @return
     */
    @GetMapping("/page")
    public Object getListVideos(Model model, String video_title, String start_date, String end_date, Integer state, Boolean receive, Integer page, Integer pageSize, String video_priority, String orderByClause, HttpSession session) {
        SessionUser sessionUser = (SessionUser) session.getAttribute(SessionUser.getSessionKey());
        Integer spid = sessionUser.getSpid();
        String userId = sessionUser.getUserId();
        if (CommonUtils.isNull(page)) page = 1;
        if (CommonUtils.isNull(pageSize)) pageSize = 10;
        if (spid == 0) spid = null;
        PageInfo<ShyVideos> videoPage = videosService.getListContent(video_title, start_date, end_date, state, receive, page, pageSize, video_priority, orderByClause, spid, userId);
        List<ShyVideos> list = videoPage.getList();
        if (!list.isEmpty()) {
            for (ShyVideos videos : list) {
                if (videos.getState() != CommonConst.AUDIT_INTT) {
                    String auditor = "白名单";
                    String auditor_id = videos.getAuditor_id();
                    if (CommonUtils.isNotEmpty(auditor_id)) {
                        ShyUsers user = new ShyUsers();
                        user.setUser_id(auditor_id);
                        user = usersService.select(user);
                        if (CommonUtils.isNotNull(user)) {
                            String userName = CommonUtils.isEmpty(user.getUsername()) ? "" : user.getUsername();
                            String email = CommonUtils.isEmpty(user.getEmail()) ? "" : user.getEmail();
                            auditor = userName + email;
                        }
                    }
                    videos.setAuditor(auditor);
                }
            }
        }
        model.addAttribute("videoPage", videoPage);
        return "page/video.html";
    }

    /**
     * 内容详情页接口(查看)
     *
     * @param id
     * @return
     */
    @GetMapping("/details")
    public Object getDetailsVideo(Model model, Integer id) {
        ShyVideos detailsContent = videosService.getDetailsContent(id);
        Object images = JSON.parse(detailsContent.getVideo_imgs());
        Object avsampleImgs = JSON.parse(detailsContent.getAvsample_imgs());
        String url = detailsContent.getVideo_url().replace("http://", "");
        String yuming = "http://" + url.substring(0, url.indexOf("/") + 1);
        model.addAttribute("images", images);
        model.addAttribute("avsampleImgs", avsampleImgs);
        model.addAttribute("video", detailsContent);
        model.addAttribute("yuming", yuming);

        return "page/videoDetail.html";
    }

    /**
     * 认领
     *
     * @param ids     根据id认领
     * @param num     认领条数
     * @param session
     * @return
     */
    @PostMapping("/receive")
    @ResponseBody
    public ResponseBean receive(String ids, Integer num, HttpSession session) {
        SessionUser sessionUser = (SessionUser) session.getAttribute(SessionUser.getSessionKey());
        String userId = sessionUser.getUserId();
        Integer spid = sessionUser.getSpid();
        //领取时要检查领取的数据是否可以领
        if (CommonUtils.isNotEmpty(ids)) {
            String[] cids = ids.split(",");
            for (String cid : cids) {
                ShyVideos shyVideos = videosService.selectByPrimaryKey(Integer.parseInt(cid));
                if (CommonUtils.isNotNull(shyVideos)) {
                    if (shyVideos.getState() != CommonConst.AUDIT_INTT || shyVideos.getReceive()) {
                        return new ResponseBean(ErrorEnum.ERROR.getErrorCode(), "您领取的内容中有已被领取或者已经被审核,请检查并重试");
                    }
                } else {
                    return new ResponseBean(ErrorEnum.ERROR.getErrorCode(), "您领取的内容不存在,请检查并重试");

                }
            }
        }
        Integer n = videosService.receive(ids, num, userId, spid);
        return new ResponseBean(ErrorEnum.SUCCESS.getErrorCode(), "认领到" + n + "条内容");
    }


    @PostMapping("/retReceive")
    @ResponseBody
    public ResponseBean retReceive(String ids, HttpSession session) {
        SessionUser sessionUser = (SessionUser) session.getAttribute(SessionUser.getSessionKey());
        String userId = sessionUser.getUserId();
        //在退领操作前先判断是否包含已退领或者已经审核的数据,有则退回检查并重新退领
        String[] cids = ids.split(",");
        for (String cid : cids) {
            ShyVideos shyVideos = videosService.selectByPrimaryKey(Integer.parseInt(cid));
            if (shyVideos.getState() != CommonConst.AUDIT_INTT || !shyVideos.getReceive() || !shyVideos.getReceive_user_id().equals(userId)) {
                return new ResponseBean(ErrorEnum.ERROR.getErrorCode(), "退领失败,您选中的内容包含已退领的或已经审核的");
            }
        }
        return videosService.retReceive(ids, userId);
    }
}