package com.ruoyi.system.service.impl;

import java.util.Date;
import java.util.List;
import com.ruoyi.common.utils.DateUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.system.mapper.PostNoticeMapper;
import com.ruoyi.system.domain.PostNotice;
import com.ruoyi.system.service.IPostNoticeService;

import javax.xml.crypto.Data;

/**
 * 公告Service业务层处理
 *
 * @author ruoyi
 * @date 2023-01-14
 */
@Service
public class PostNoticeServiceImpl implements IPostNoticeService
{
    @Autowired
    private PostNoticeMapper postNoticeMapper;

    /**
     * 查询公告
     *
     * @param noticeId 公告主键
     * @return 公告
     */
    @Override
    public PostNotice selectPostNoticeByNoticeId(Long noticeId)
    {
        return postNoticeMapper.selectPostNoticeByNoticeId(noticeId);
    }

    /**
     * 查询公告列表
     *
     * @param postNotice 公告
     * @return 公告
     */
    @Override
    public List<PostNotice> selectPostNoticeList(PostNotice postNotice)
    {
        return postNoticeMapper.selectPostNoticeList(postNotice);
    }


    @Override
    public String selectDetailByNoticeId(Long noticeId) {
        return postNoticeMapper.selectDetailByNoticeId(noticeId);
    }


    /**
     * 搜索公告列表
     * @param title
     * @param noticeTimeLeft
     * @param noticeTimeRight
     * @return
     */
    @Override
    public List<PostNotice> selectList(String title, Date noticeTimeLeft, Date noticeTimeRight) {
        if (title != null) {
            //标题不为空则判断时间
            if (noticeTimeLeft != null && noticeTimeRight != null) {
                //时间不为空 ，且左时间在右时间之前
                //确保查询到的公告为已发布的公告
                if (DateUtils.getNowDate().before(noticeTimeRight)){
                    noticeTimeRight = DateUtils.getNowDate();
                }
                if( noticeTimeLeft.before(noticeTimeRight)) {
                    return postNoticeMapper.selectPostNoticeListByTitleOrNoticeTime(title, noticeTimeLeft, noticeTimeRight);
                }else {
                    return null;
                }
            }else {
                //时间为空
                return postNoticeMapper.selectPostNoticeListByTitleOrNoticeTime(title, noticeTimeLeft, noticeTimeRight);

            }
        } else {
            //标题为空
            //确保查询到的公告为已发布的公告
            if (DateUtils.getNowDate().before(noticeTimeRight)){
                noticeTimeRight = DateUtils.getNowDate();
            }
            if (noticeTimeLeft != null && noticeTimeRight != null) {
                //时间不为空 ，且左时间在右时间之前
                if( noticeTimeLeft.before(noticeTimeRight)) {
                    return postNoticeMapper.selectPostNoticeListByTitleOrNoticeTime(title, noticeTimeLeft, noticeTimeRight);
                }else {
                    return null;
                }
            }
        }
        PostNotice postNotice = new PostNotice();
        return postNoticeMapper.selectPostNoticeList(postNotice);
    }


    /**
     * 新增公告
     *
     * @param postNotice 公告
     * @return 结果
     */
    @Override
    public int insertPostNotice(PostNotice postNotice)
    {
        postNotice.setCreateTime(DateUtils.getNowDate());
        return postNoticeMapper.insertPostNotice(postNotice);
    }

    /**
     * 修改公告
     *
     * @param postNotice 公告
     * @return 结果
     */
    @Override
    public int updatePostNotice(PostNotice postNotice)
    {
        postNotice.setUpdateTime(DateUtils.getNowDate());
        return postNoticeMapper.updatePostNotice(postNotice);
    }

    /**
     * 批量删除公告
     *
     * @param noticeIds 需要删除的公告主键
     * @return 结果
     */

    @Override
    public int deletePostNoticeByNoticeIds(Long[] noticeIds)
    {
        return postNoticeMapper.deletePostNoticeByNoticeIds(noticeIds);
    }

    /**
     * 删除公告信息
     *
     * @param noticeId 公告主键
     * @return 结果
     */
    @Override
    public int deletePostNoticeByNoticeId(Long noticeId)
    {
        return postNoticeMapper.deletePostNoticeByNoticeId(noticeId);
    }

}
