package org.jeecg.modules.api.service.Impl;

import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
import org.jeecg.common.api.vo.Result;
import org.jeecg.modules.api.bean.PageBean;
import org.jeecg.modules.api.service.IndexService;
import org.jeecg.modules.studytourActivity.entity.StudytourActivity;
import org.jeecg.modules.studytourBanner.entity.StudytourBanner;
import org.jeecg.modules.studytourBanner.service.IStudytourBannerService;
import org.jeecg.modules.studytourNews.entity.StudytourNews;
import org.jeecg.modules.studytourNews.service.IStudytourNewsService;
import org.jeecg.modules.studytourPolicy.entity.StudytourPolicy;
import org.jeecg.modules.studytourPolicy.service.IStudytourPolicyService;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;

@Service
@Slf4j
public class IndexServiceImpl implements IndexService {

    /******************************************************************************************************************/
    //轮播图列表
    @Resource
    private IStudytourBannerService studytourBannerService;
    //研学政策列表
    @Resource
    private IStudytourPolicyService studytourPolicyService;
    //公司动态列表
    @Resource
    private IStudytourNewsService studytourNewsService;
    /******************************************************************************************************************/

    //首页-查询banner图列表
    @Override
    public Result<?> queryBannerList(StudytourBanner studytourBanner, PageBean pageBean) {
        log.info("开始查询轮播图列表");
        //返回信息
        String massege = "";
        //分页信息
        Page<StudytourBanner> page = null;
        //查询信息
        LambdaQueryChainWrapper<StudytourBanner> query = null;
        //返回信息
        Page<StudytourBanner> pageList = null;

        try{
            //分页
            page = new Page<StudytourBanner>(pageBean.getPageNo(), pageBean.getPageSize());
            query = studytourBannerService
                    .lambdaQuery();

            //组装查询条件
            if(StringUtils.isNotBlank(studytourBanner.getTitle())){
                //标题
                query.like(StudytourBanner::getTitle, studytourBanner.getTitle());
            }
            if(StringUtils.isNotBlank(studytourBanner.getType())){
                //分类
                query.eq(StudytourBanner::getType, studytourBanner.getType());
            }

            //按照排序编号升序排列
            query.orderByAsc(StudytourBanner::getOrderNo);

            //获取轮播图列表
            pageList = query.page(page);

            log.info("轮播图列表查询结束");
            return Result.OK("轮播图列表", pageList);
        }catch (Exception e){
            log.info("轮播图列表查询失败");
            e.printStackTrace();
            return Result.error("轮播图列表查询失败");
        }
    }

    //首页-查询研学政策列表
    @Override
    public Result<?> queryPolicyList(StudytourPolicy studytourPolicy, PageBean pageBean) {
        log.info("开始查询研学政策列表");
        //返回信息
        String massege = "";
        //分页信息
        Page<StudytourPolicy> page = null;
        //查询信息
        LambdaQueryChainWrapper<StudytourPolicy> query = null;
        //返回信息
        Page<StudytourPolicy> pageList = null;

        try{
            //分页
            page = new Page<StudytourPolicy>(pageBean.getPageNo(), pageBean.getPageSize());
            query = studytourPolicyService
                    .lambdaQuery();

            //组装查询条件
            if(StringUtils.isNotBlank(studytourPolicy.getTitle())){
                //标题
                query.like(StudytourPolicy::getTitle, studytourPolicy.getTitle());
            }

            //按照创建时间降序排列
            query.orderByDesc(StudytourPolicy::getCreateTime);

            //获取研学政策列表
            pageList = query.page(page);

            log.info("研学政策列表查询结束");
            return Result.OK("研学政策列表", pageList);
        }catch (Exception e){
            log.info("研学政策列表查询失败");
            e.printStackTrace();
            return Result.error("研学政策列表查询失败");
        }
    }

    //首页-查询研学政策详情
    @Override
    public Result<?> queryPolicyById(String policyId) {
        log.info("开始查询研学政策详情");
        //返回信息
        String massege = "";

        try{
            StudytourPolicy one = studytourPolicyService
                    .lambdaQuery()
                    .eq(StudytourPolicy::getId, policyId)
                    .one();
            if(null == one){
                log.info("研学政策不存在，请检查政策id：{}", policyId);
                return Result.error("研学政策不存在，请检查政策id："+policyId);
            }

            log.info("研学政策详情查询结束");
            return Result.OK("研学政策详情", one);
        }catch (Exception e){
            log.info("研学政策详情查询失败");
            e.printStackTrace();
            return Result.error("研学政策详情查询失败");
        }
    }

    //首页-查询公司动态详情
    @Override
    public Result<?> queryNewsList(StudytourNews studytourNews, PageBean pageBean) {
        log.info("开始查询公司动态列表");
        //返回信息
        String massege = "";
        //分页信息
        Page<StudytourNews> page = null;
        //查询信息
        LambdaQueryChainWrapper<StudytourNews> query = null;
        //返回信息
        Page<StudytourNews> pageList = null;

        try{
            //分页
            page = new Page<StudytourNews>(pageBean.getPageNo(), pageBean.getPageSize());
            query = studytourNewsService
                    .lambdaQuery();

            //组装查询条件
            if(StringUtils.isNotBlank(studytourNews.getTitle())){
                //标题
                query.like(StudytourNews::getTitle, studytourNews.getTitle());
            }

            //按照创建时间降序排列
            query.orderByDesc(StudytourNews::getCreateTime);

            //获取公司动态列表
            pageList = query.page(page);

            log.info("公司动态列表查询结束");
            return Result.OK("公司动态列表", pageList);
        }catch (Exception e){
            log.info("公司动态列表查询失败");
            e.printStackTrace();
            return Result.error("公司动态列表查询失败");
        }
    }

    //首页-查询公司动态详情
    @Override
    public Result<?> queryNewsById(String newsId) {
        log.info("开始查询公司动态详情");
        //返回信息
        String massege = "";

        try{
            StudytourNews one = studytourNewsService
                    .lambdaQuery()
                    .eq(StudytourNews::getId, newsId)
                    .one();
            if(null == one){
                log.info("公司动态不存在，请检查动态id：{}", newsId);
                return Result.error("公司动态不存在，请检查动态id："+newsId);
            }

            log.info("公司动态详情查询结束");
            return Result.OK("公司动态详情", one);
        }catch (Exception e){
            log.info("公司动态详情查询失败");
            e.printStackTrace();
            return Result.error("公司动态详情查询失败");
        }
    }
}
