LiveServiceImpl.java 11.7 KB
package com.cnlive.shenhe.service.serviceImpl;

import com.alibaba.fastjson.JSON;
import com.cnlive.shenhe.bean.ErrorEnum;
import com.cnlive.shenhe.bean.ResponseBean;
import com.cnlive.shenhe.dto.LiveDTO;
import com.cnlive.shenhe.entity.ShyLive;
import com.cnlive.shenhe.entity.ShyUsers;
import com.cnlive.shenhe.mapper.ShyLiveMapper;
import com.cnlive.shenhe.mapper.ShyUsersMapper;
import com.cnlive.shenhe.service.LiveService;
import com.cnlive.shenhe.utils.CommonConst;
import com.cnlive.shenhe.utils.CommonConstStates;
import com.cnlive.shenhe.utils.CommonUtils;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.apache.ibatis.session.RowBounds;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import tk.mybatis.mapper.entity.Example;

import java.sql.Timestamp;
import java.text.ParseException;
import java.util.List;

/**
 * @Auther: chenhao
 * @Date: 2018/11/30 14:23
 * @Description:
 */
@Service
public class LiveServiceImpl implements LiveService {

    private static Logger logger = LoggerFactory.getLogger(LiveServiceImpl.class);
    @Autowired
    ShyLiveMapper shyLiveMapper;
    @Autowired
    ShyUsersMapper shyUsersMapper;


    /**
     * 直播导入
     *
     * @param shyLive
     * @return
     */
    @Override
    public boolean impotVideo(ShyLive shyLive) {
        int result = shyLiveMapper.insertSelective(shyLive);
        return result != 0;
    }

    /**
     * 根据id查询  返回直播对象
     *
     * @param id
     * @return
     */
    @Override
    public ShyLive selectByPrimaryKey(Integer id) {
        return shyLiveMapper.selectByPrimaryKey(id);
    }

    /**
     * 根据条件查询  返回直播对象集合
     *
     * @param shyLive
     * @return
     */
    @Override
    public List<ShyLive> findShyLive(ShyLive shyLive) {
        return shyLiveMapper.selectByRowBounds(shyLive, new RowBounds(0, 100));
    }

    /**
     * 修改直播对象 返回boolean类型
     *
     * @param shyLive
     * @return
     */
    @Override
    public boolean updateShyLive(ShyLive shyLive) {
        int i = shyLiveMapper.updateByPrimaryKey(shyLive);
        return i != 0;
    }

    /**
     * 根据id查询,修改对象的关键信息 返回int类型
     *
     * @param id
     * @param auditorId
     * @param updater
     * @param activityStatus
     * @param msg
     * @return
     */
    @Override
    public int updateLive(Integer id, String auditorId, String updater, Integer activityStatus, String msg) {
        ShyLive shyLive = shyLiveMapper.selectByPrimaryKey(id);
        shyLive.setAuditor(auditorId);
        shyLive.setShenhe_state(CommonConst.RECEIVE_AUDIT);
        shyLive.setActivity_status(activityStatus);
        shyLive.setShenhe_msg(msg);
        shyLive.setUpdater(updater);
        shyLive.setIs_hot(CommonConstStates.SHIFOU_REDIANNO);
        return shyLiveMapper.updateByPrimaryKey(shyLive);
    }

    /**
     * 分页、条件查询、返回分页结果集合
     *
     * @param liveDTO
     * @return
     */
    @Override
    public PageInfo<ShyLive> getListLive(LiveDTO liveDTO) {
        logger.info("接受参数对象,LiveDTO:{}", JSON.toJSONString(liveDTO));
        Example example = new Example(ShyLive.class);
        example.setOrderByClause("`created_at` desc");
        Example.Criteria criteria = example.createCriteria();
        if (CommonUtils.isNotEmpty(liveDTO.getOrderByClause())) {
            example.setOrderByClause(liveDTO.getOrderByClause());
        }
        if (CommonUtils.isNotEmpty(liveDTO.getStart_date())) {
            Timestamp startdate = null;
            try {
                startdate = CommonUtils.parseDate(liveDTO.getStart_date(), "yyyy-MM-dd");
            } catch (ParseException e) {
                e.printStackTrace();
            }
            criteria.andGreaterThanOrEqualTo("activity_start_time", startdate);
        }
        if (CommonUtils.isNotEmpty(liveDTO.getEnd_date())) {
            Timestamp enddate = null;
            try {
                enddate = CommonUtils.parseDate(liveDTO.getEnd_date(), "yyyy-MM-dd");
            } catch (ParseException e) {
                e.printStackTrace();
            }
            criteria.andLessThanOrEqualTo("activity_start_time", enddate);
        }
        if (CommonUtils.isNotEmpty(liveDTO.getActivity_name())) {
            criteria.andLike("activity_name", "%" + liveDTO.getActivity_name() + "%");
        }

        if (CommonUtils.isNotEmpty(liveDTO.getActivity_id())) {
            criteria.andEqualTo("activity_id", liveDTO.getActivity_id());
        }
        if (CommonUtils.isNotNull(liveDTO.getSpid())) {
            criteria.andEqualTo("sp_id", liveDTO.getSpid());
        }
        if (CommonUtils.isNotNull(liveDTO.getShenhe_state())) {
            criteria.andEqualTo("shenhe_state", liveDTO.getShenhe_state());
            if (!liveDTO.getShenhe_state().equals(CommonConst.RECEIVE_BEFORE)) {
                criteria.andEqualTo("auditor", liveDTO.getUserId());
            }
        }
        if (CommonUtils.isNotNull(liveDTO.getActivity_status())) {
            criteria.andEqualTo("activity_status", liveDTO.getActivity_status());
        }
        criteria.andEqualTo("is_show", CommonConstStates.SHIFOU_XIANSHIYES);
        PageHelper.startPage(liveDTO.getPage(), liveDTO.getPageSize(), true);
        List<ShyLive> shyLiveList = shyLiveMapper.selectByExample(example);
        PageInfo<ShyLive> pageInfo = new PageInfo<>(shyLiveList);
        return pageInfo;
    }

    /**
     * 根据id获取直播详情信息
     *
     * @param id
     * @return
     */
    @Override
    public ShyLive getDetailsLive(Integer id, Integer spId) {
        ShyLive shyLive = shyLiveMapper.selectBySpId(id, spId);
        //ShyLive shyLive = shyLiveMapper.selectByPrimaryKey(id);
        if (CommonUtils.isNotNull(shyLive)) {
            if (!shyLive.getShenhe_state().equals(CommonConst.RECEIVE_BEFORE)) {
                String updater = CommonUtils.isEmpty(shyLive.getUpdater()) || "null".equals(shyLive.getUpdater()) ? "自动通过" : shyLive.getUpdater();

                String auditorId = shyLive.getAuditor();

                if (CommonUtils.isNotEmpty(auditorId)) {
                    ShyUsers user = new ShyUsers();
                    user.setUser_id(auditorId);
                    user = shyUsersMapper.selectOne(user);
                    String email = CommonUtils.isEmpty(user.getEmail()) || "null".equals(user.getEmail()) ? "" : user.getEmail();
                    updater = CommonUtils.isEmpty(user.getUsername()) ? email : user.getUsername();
                }
                shyLive.setUpdater(updater);
            }
        }
        return shyLive;
    }

    /**
     * 认领
     *
     * @param ids
     * @param num
     * @param userId
     * @param spid
     * @return
     */
    @Override
    public Integer receive(String ids, Integer num, String userId, Integer spid) {
        Integer n = 0;
        if (CommonUtils.isNotEmpty(ids)) {
            String[] cids = ids.split(",");
            for (String cid : cids) {
                ShyLive shyLive = shyLiveMapper.selectByPrimaryKey(Integer.parseInt(cid));
                if (CommonUtils.isNotNull(shyLive) && shyLive.getShenhe_state().equals(CommonConst.RECEIVE_BEFORE)) {
                    shyLive.setAuditor(userId);
                    shyLive.setShenhe_state(CommonConst.RECEIVE_AFTER);
                    shyLiveMapper.updateByPrimaryKeySelective(shyLive);
                    n++;
                }
            }
        } else if (CommonUtils.isNotNull(num) && num > 0) {
            Example example = new Example(ShyLive.class);
            example.setOrderByClause("is_hot desc, activity_start_time asc");
            example.and().andEqualTo("shenhe_state", CommonConst.RECEIVE_BEFORE);
            if (CommonUtils.isNotNull(spid) && spid != 0) {
                example.and().andEqualTo("spid", spid);
            }
            List<ShyLive> shyLiveList = shyLiveMapper.selectByExampleAndRowBounds(example, new RowBounds(0, num));
            if (!shyLiveList.isEmpty()) {
                for (ShyLive shyLive : shyLiveList) {
                    shyLive.setAuditor(userId);
                    shyLive.setShenhe_state(CommonConst.RECEIVE_AFTER);
                    shyLiveMapper.updateByPrimaryKeySelective(shyLive);
                    n++;
                }
            }
        }
        return n;
    }

    /**
     * 退领
     *
     * @param ids
     * @param userId
     * @return
     */
    @Override
    public ResponseBean retReceive(String ids, String userId) {
        String[] cids = ids.split(",");
        for (String cid : cids) {
            ShyLive shyLive = shyLiveMapper.selectByPrimaryKey(Integer.parseInt(cid));
            if (shyLive.getShenhe_state().equals(CommonConst.RECEIVE_AFTER) && shyLive.getAuditor().equals(userId)) {
                shyLive.setShenhe_state(CommonConst.RECEIVE_BEFORE);
                shyLive.setAuditor(null);
                int i = shyLiveMapper.updateByPrimaryKey(shyLive);
                if (i != 1) {
                    return new ResponseBean(ErrorEnum.ERROR.getErrorCode(), "退领失败,请重试");
                }
            } else {
                return new ResponseBean(ErrorEnum.ERROR.getErrorCode(), "退领失败,您选中的内容包含已退领的或已经审核的");
            }
        }
        return new ResponseBean(ErrorEnum.SUCCESS.getErrorCode(), "已退领");
    }

    /**
     * 根据条件导出数据excel
     *
     * @return
     */
    @Override
    public List<ShyLive> findByCondition(LiveDTO liveDTO) {
        Example example = new Example(ShyLive.class);
        Example.Criteria criteria = example.createCriteria();
        if (CommonUtils.isNotEmpty(liveDTO.getOrderByClause())) {
            example.setOrderByClause(liveDTO.getOrderByClause());
        } else {
            example.setOrderByClause("activity_start_time");
        }
        if (CommonUtils.isNotEmpty(liveDTO.getStart_date())) {
            Timestamp startdate = null;
            try {
                startdate = CommonUtils.parseDate(liveDTO.getStart_date(), "yyyy-MM-dd");
            } catch (ParseException e) {
                e.printStackTrace();
            }
            criteria.andGreaterThanOrEqualTo("activity_start_time", startdate);
        }
        if (CommonUtils.isNotEmpty(liveDTO.getEnd_date())) {
            Timestamp enddate = null;
            try {
                enddate = CommonUtils.parseDate(liveDTO.getEnd_date(), "yyyy-MM-dd");
            } catch (ParseException e) {
                e.printStackTrace();
            }
            criteria.andLessThanOrEqualTo("activity_start_time", enddate);
        }
        if (CommonUtils.isNotEmpty(liveDTO.getActivity_name())) {
            criteria.andLike("activity_name", "%" + liveDTO.getActivity_name() + "%");
        }

        if (CommonUtils.isNotEmpty(liveDTO.getActivity_id())) {
            criteria.andEqualTo("activity_id", liveDTO.getActivity_id());
        }
        if (CommonUtils.isNotNull(liveDTO.getSpid())) {
            criteria.andEqualTo("sp_id", liveDTO.getSpid());
        }
        if (CommonUtils.isNotNull(liveDTO.getShenhe_state())) {
            criteria.andEqualTo("shenhe_state", liveDTO.getShenhe_state());
            if (!liveDTO.getShenhe_state().equals(CommonConst.RECEIVE_BEFORE)) {
                criteria.andEqualTo("auditor", liveDTO.getUserId());
            }
        }
        if (CommonUtils.isNotNull(liveDTO.getActivity_status())) {
            criteria.andEqualTo("activity_status", liveDTO.getActivity_status());
        }
        criteria.andEqualTo("is_show", CommonConstStates.SHIFOU_XIANSHIYES);
        return shyLiveMapper.selectByExample(example);
    }
}