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.config.shiro.ShiroRealm;
import org.jeecg.modules.api.bean.PageBean;
import org.jeecg.modules.api.service.ImageService;
import org.jeecg.modules.hanHaiMember.entity.HanHaiMember;
import org.jeecg.modules.studytourImage.entity.StudytourImage;
import org.jeecg.modules.studytourImage.entity.StudytourImageContent;
import org.jeecg.modules.studytourImage.service.IStudytourImageContentService;
import org.jeecg.modules.studytourImage.service.IStudytourImageService;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;

@Service
@Slf4j
public class ImageServiceImpl implements ImageService {

    /******************************************************************************************************************/
    //权限验证
    @Resource
    private ShiroRealm shiroRealm;
    //图片直播信息
    @Resource
    private IStudytourImageService studytourImageService;
    //图片直播内容信息
    @Resource
    private IStudytourImageContentService studytourImageContentService;
    /******************************************************************************************************************/


    //图片直播-查询图片直播列表
    @Override
    public Result<?> queryImageList(PageBean pageBean) {
        log.info("开始查询图片直播信息列表");
        //返回信息
        String massege = "";
        //分页信息
        Page<StudytourImage> page = null;
        //查询信息
        LambdaQueryChainWrapper<StudytourImage> query = null;
        //返回信息
        Page<StudytourImage> pageList = null;

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

            //组装查询条件

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

            //获取图片直播信息列表
            pageList = query.page(page);

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

    //图片直播-新增图片直播信息
    @Override
    public Result<?> addImage(String token, StudytourImage studytourImage) {
        log.info("开始新增图片直播信息");
        //权限验证
        HanHaiMember hanHaiMember = shiroRealm.checkUserTokenIsEffectHanHaiOpenId(token);
        //HanHaiMember hanHaiMember = hanHaiMemberService.getById(token);
        //返回信息
        String massege = "";

        try{

            //1、新增图片直播信息
            studytourImage.setUserId(hanHaiMember.getId());
            boolean result =  studytourImageService.save(studytourImage);

            if(result){
                log.info("图片直播信息新增成功");
                return Result.OK("图片直播信息新增成功");
            }else {
                log.info("图片直播信息新增失败");
                return Result.error("图片直播信息新增失败");
            }

        }catch (Exception e){
            log.info("图片直播信息新增失败");
            e.printStackTrace();
            return Result.error("图片直播信息新增失败");
        }
    }

    //图片直播-查询图片直播内容列表
    @Override
    public Result<?> queryImageContentList(String imageId, PageBean pageBean) {
        log.info("开始查询图片直播内容信息列表");
        //返回信息
        String massege = "";
        //分页信息
        Page<StudytourImageContent> page = null;
        //查询信息
        LambdaQueryChainWrapper<StudytourImageContent> query = null;
        //返回信息
        Page<StudytourImageContent> pageList = null;

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

            //组装查询条件
            if(StringUtils.isNotEmpty(imageId)){
                query.eq(StudytourImageContent::getImageId, imageId);
            }

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

            //获取图片直播信息列表
            pageList = query.page(page);

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

    //图片直播-新增图片直播内容信息
    @Override
    public Result<?> addImageContent(String token, StudytourImageContent studytourImageContent) {
        log.info("开始新增图片直播内容信息");
        //权限验证
        HanHaiMember hanHaiMember = shiroRealm.checkUserTokenIsEffectHanHaiOpenId(token);
        //HanHaiMember hanHaiMember = hanHaiMemberService.getById(token);
        //返回信息
        String massege = "";

        try{

            //1、新增图片直播信息
            studytourImageContent.setUserId(hanHaiMember.getId());
            boolean result =  studytourImageContentService.save(studytourImageContent);

            if(result){
                log.info("图片直播内容信息新增成功");
                return Result.OK("图片直播内容信息新增成功");
            }else {
                log.info("图片直播内容信息新增失败");
                return Result.error("图片直播内容信息新增失败");
            }

        }catch (Exception e){
            log.info("图片直播内容信息新增失败");
            e.printStackTrace();
            return Result.error("图片直播内容信息新增失败");
        }
    }

    //图片直播-标记有我
    @Override
    public Result<?> queryMarkmeList(String token, String imagePath) {
        return null;
    }
}
