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.ConfigService;
import org.jeecg.modules.studytourCategory.entity.StudytourCategory;
import org.jeecg.modules.studytourCategory.service.IStudytourCategoryService;
import org.jeecg.modules.studytourCollection.service.IStudytourCollectionService;
import org.jeecg.modules.studytourConfig.entity.StudytourConfig;
import org.jeecg.modules.studytourConfig.service.IStudytourConfigService;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;

@Service
@Slf4j
public class ConfigServiceImpl implements ConfigService {

    /******************************************************************************************************************/
    //研学活动分类信息
    @Resource
    private IStudytourCategoryService studytourCategoryService;
    //研学活动分类信息
    @Resource
    private IStudytourConfigService studytourConfigService;
    /******************************************************************************************************************/

    //查询系统配置列表
    @Override
    public Result<?> queryConfigList(PageBean pageBean) {
        log.info("开始查询系统配置列表");
        //返回信息
        String massege = "";
        //分页信息
        Page<StudytourConfig> page = null;
        //查询信息
        LambdaQueryChainWrapper<StudytourConfig> query = null;
        //返回信息
        Page<StudytourConfig> pageList = null;

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

            //组装查询条件
            //按照创建时间降序排列
            query.orderByDesc(StudytourConfig::getCreateTime);

            //获取系统配置列表信息
            pageList = query.page(page);

            log.info("系统配置查询结束");
            return Result.OK("系统配置列表", pageList);
        }catch (Exception e){
            log.error("系统配置查询失败");
            e.printStackTrace();
            return Result.error("系统配置列表查询失败");
        }
    }

    //查询系统配置详情
    @Override
    public Result<?> queryConfigByParamCode(String paramCode) {
        log.info("开始查询系统配置详情");
        //返回信息
        String massege = "";

        try{
            StudytourConfig config = studytourConfigService
                    .lambdaQuery()
                    .eq(StudytourConfig::getParamCode, paramCode)
                    .one();

            log.info("系统配置详情查询结束");
            return Result.OK("配置详情", config);
        }catch (Exception e){
            log.error("系统配置详情查询失败");
            e.printStackTrace();
            return Result.error("配置详情查询失败");
        }
    }

    //系统配置-查询研学活动分类列表
    @Override
    public Result<?> queryCategoryList(StudytourCategory studytourCategory, PageBean pageBean) {
        log.info("开始查询研学活动分类列表");
        //返回信息
        String massege = "";
        //分页信息
        Page<StudytourCategory> page = null;
        //查询信息
        LambdaQueryChainWrapper<StudytourCategory> query = null;
        //返回信息
        Page<StudytourCategory> pageList = null;

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

            //组装查询条件
            //父id
            if(StringUtils.isNotEmpty(studytourCategory.getPid())){
                query.eq(StudytourCategory::getPid, studytourCategory.getPid());
            }else {
                query.eq(StudytourCategory::getPid, "0");
            }

            if(StringUtils.isNotEmpty(studytourCategory.getIsShow())){
                query.eq(StudytourCategory::getIsShow, studytourCategory.getIsShow());
            }

            //按照排序编号升序排列
            query.orderByDesc(StudytourCategory::getCreateTime);

            //获取研学活动分类列表信息
            pageList = query.page(page);

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