AudioController.java 9.75 KB
package com.cnlive.shenhe.controller;

import com.alibaba.fastjson.JSON;
import com.cnlive.shenhe.bean.ErrorEnum;
import com.cnlive.shenhe.bean.ResponseBean;
import com.cnlive.shenhe.bean.SessionUser;
import com.cnlive.shenhe.entity.ShyAudio;
import com.cnlive.shenhe.entity.ShySites;
import com.cnlive.shenhe.entity.ShyUsers;
import com.cnlive.shenhe.entity.ShyVideos;
import com.cnlive.shenhe.serviceImpl.AudioServiceImpl;
import com.cnlive.shenhe.serviceImpl.SitesServiceImpl;
import com.cnlive.shenhe.serviceImpl.UsersServiceImpl;
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.beans.factory.annotation.Value;
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;

/**
 * @Author: xujincheng
 * @Date: 2020/6/9 9:35
 */
@Controller
@RequestMapping("/audio")
public class AudioController extends BaseController {

    private static Logger logger = LoggerFactory.getLogger(AudioController.class);

    @Autowired
    SitesServiceImpl sitesService;

    @Autowired
    AudioServiceImpl audioService;

    @Autowired
    UsersServiceImpl usersService;

    @Value("${qn_domain}")
    String qn_domain;

    @Value("${ks_domain}")
    String ks_domain;

    /**
     * 音频数据分页获取
     *
     * @param model
     * @param video_title
     * @param start_date
     * @param end_date
     * @param state
     * @param receive
     * @param page
     * @param pageSize
     * @param video_priority
     * @param orderByClause
     * @param sp_desc
     * @param sp_Id
     * @param session
     * @return
     */
    @GetMapping("/page")
    public Object getListVideos(Model model, String video_title, String start_date, String end_date, Integer state, Integer receive, Integer page, Integer pageSize, String video_priority, String orderByClause, String sp_desc, String sp_Id, HttpSession session) {
        SessionUser sessionUser = (SessionUser) session.getAttribute(SessionUser.getSessionKey());
        if (CommonUtils.isNull(sessionUser)) {
            return "redirect:/users/login";
        }
        Integer spid = sessionUser.getSpid();
        logger.info("sp_Id:{},spid:{}", sp_Id, spid);
        String userId = sessionUser.getUserId();
        if (CommonUtils.isNull(page)) page = 1;
        if (CommonUtils.isNull(pageSize)) pageSize = 10;
        if (CommonUtils.isNotEmpty(sp_desc) && spid == 0) {
            ShySites shySite = sitesService.findspidBySpdesc(sp_desc);
            if (CommonUtils.isNotNull(shySite)) {
                spid = shySite.getSpid();
            } else {
                setmodel_site(model);
                return "error.html";
            }
        } else if (CommonUtils.isEmpty(sp_desc) && spid == 0) {
            spid = null;
        }

        PageInfo<ShyAudio> audioPage = audioService.getListContent(video_title, start_date, end_date, state, receive, page, pageSize, video_priority, orderByClause, spid, userId, sp_Id);
        if (audioPage != null && audioPage.getSize() > 0) {
            List<ShyAudio> list = audioPage.getList();
            if (list != null && list.size() > 0) {
                for (ShyAudio shyAudio : list) {
                    //审核状态 0-未审核 1-已审核 2-拒绝
                    //已审+已拒绝
                    if (CommonConst.AUDIT_INTT.equals(shyAudio.getState())) {
                        String updater = CommonUtils.isEmpty(shyAudio.getUploader()) ? "白名单" : shyAudio.getUploader();
                        String audioId = shyAudio.getAudioId();
                        if (CommonUtils.isNotEmpty(audioId)) {
                            ShyUsers user = new ShyUsers();
                            user.setUser_id(audioId);
                            user = usersService.select(user);
                            if (CommonUtils.isNotNull(user)) {
                                String email = CommonUtils.isEmpty(user.getEmail()) ? "" : user.getEmail();
                                String userName = CommonUtils.isEmpty(user.getUsername()) ? email : user.getUsername();
                                updater = userName;
                            }
                        }
                        shyAudio.setUploader(updater);
                    }
                    //显示spid简称
                    ShySites shySites = sitesService.findspidDescByspid(shyAudio.getSpId());
                    if (CommonUtils.isNotNull(shySites)) {
                        shyAudio.setSpid_desc(shySites.getName());
                    }
                }
            }
        }

        //获取参数值给前台 用来判断是否需要把查看显示出来 state recive
        String state1 = state == null ? "" : state.toString();
        String receive1 = "";
        if (CommonUtils.isNotNull(receive)) {
            receive1 = receive == CommonConst.RECEIVE_AFTER ? "true" : "false";
        } else {
            receive1 = "";
        }
        model.addAttribute("state1", state1);
        model.addAttribute("receive1", receive1);
        model.addAttribute("pageSize", pageSize);
        model.addAttribute("audioPage", audioPage);
        return "page/audio.html";
    }


    /**
     * 认领
     *
     * @param ids
     * @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) {
                ShyAudio shyAudio = audioService.selectByPrimaryKey(Integer.parseInt(cid));
                if (CommonUtils.isNotNull(shyAudio)) {
                    if (shyAudio.getState() != CommonConst.AUDIT_INTT || shyAudio.getReceive()==CommonConst.RECEIVE_AFTER) {
                        return new ResponseBean(ErrorEnum.ERROR.getErrorCode(), "您领取的内容中有已被领取或者已经被审核,请检查并重试");
                    }
                } else {
                    return new ResponseBean(ErrorEnum.ERROR.getErrorCode(), "您领取的内容不存在,请检查并重试");

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


    /**
     * 退领
     *
     * @param ids
     * @param session
     * @return
     */
    @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) {
            ShyAudio shyAudio = audioService.selectByPrimaryKey(Integer.parseInt(cid));
            if (shyAudio.getState() != CommonConst.AUDIT_INTT || shyAudio.getReceive()==CommonConst.RECEIVE_BEFORE || !shyAudio.getReceive_user_id().equals(userId)) {
                return new ResponseBean(ErrorEnum.ERROR.getErrorCode(), "退领失败,您选中的内容包含已退领的或已经审核的");
            }
        }
        return audioService.retReceive(ids, userId);
    }

    /**
     * 打回(审核拒绝,应要求不加权限、状态等限制)
     *
     * @param ids
     * @param msg
     * @param session
     * @return
     */
    @PostMapping("/repulse")
    @ResponseBody
    public ResponseBean repulse(String ids, String msg, HttpSession session) {
        SessionUser sessionUser = (SessionUser) session.getAttribute(SessionUser.getSessionKey());
        String userId = sessionUser.getUserId();
        ResponseBean responseBean = new ResponseBean();
        String[] shyAudiods = ids.split(",");
        String showMsg = "";
        for (String shyAudioId : shyAudiods) {
            showMsg = audioService.repulse(shyAudioId, msg, userId);
        }
        if (CommonUtils.isNotEmpty(showMsg)) {
            responseBean.setErrorCode(ErrorEnum.ERROR.getErrorCode());
            responseBean.setErrorMessage(showMsg);
        }
        return responseBean;
    }


    /**
     * 音频详情页
     *
     * @param model
     * @param id
     * @return
     */
    @GetMapping("/details")
    public Object getDetailsVideo(Model model, Integer id) {
        ShyAudio detailsContent = audioService.getDetailsContent(id);
        Object images = JSON.parse(detailsContent.getAudioCoverUrl());
        String yuming = "";
        Integer plat = detailsContent.getBucketType();
        if (plat == CommonConst.QINIU_PLAT) {
            yuming = qn_domain + "/";
        } else if (plat == CommonConst.KS_PLAT) {
            yuming = ks_domain + "/";
        }
        detailsContent.setAttr_tags(CommonUtils.isEmpty(detailsContent.getAttr_tags())?"":detailsContent.getAttr_tags());
        model.addAttribute("images", images);
        model.addAttribute("audio", detailsContent);
        model.addAttribute("yuming", yuming);

        return "page/audioDetail.html";
    }
}