package com.goomood.phm.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;


import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.goomood.common.core.domain.AjaxResult;
import com.goomood.common.core.domain.entity.SysUser;
import com.goomood.common.utils.SecurityUtils;
import com.goomood.common.utils.StringUtils;
import com.goomood.phm.domain.AlsAtlasFileT;
import com.goomood.phm.mapper.AlsAtlasFileTMapper;
import com.goomood.phm.service.IAlsAtlasFileTService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.Date;
import java.util.List;

/**
 * 文件管理Service实现类
 */
@Service
public class AlsAtlasFileTServiceImpl implements IAlsAtlasFileTService {
    @Resource
    private AlsAtlasFileTMapper alsAtlasFileTMapper;

    /**
     * 查询文件管理列表
     *
     * @param alsAtlasFileT 文件管理
     * @return 文件管理
     */
    @Override
    public List<AlsAtlasFileT> selectAlsAtlasFileTList(AlsAtlasFileT alsAtlasFileT) {
        QueryWrapper<AlsAtlasFileT> wrapper = new QueryWrapper<>();
        wrapper.lambda().like(StringUtils.isNotEmpty(alsAtlasFileT.getFileName()), AlsAtlasFileT::getFileName, alsAtlasFileT.getFileName())
                .eq(StringUtils.isNotEmpty(alsAtlasFileT.getFileType()), AlsAtlasFileT::getFileType, alsAtlasFileT.getFileType())
                .eq(alsAtlasFileT.getUrl() != null, AlsAtlasFileT::getUrl, alsAtlasFileT.getUrl())
                .eq(StringUtils.isNotEmpty(alsAtlasFileT.getStatus()), AlsAtlasFileT::getStatus, alsAtlasFileT.getStatus())
                .eq(alsAtlasFileT.getDelFlag() != null, AlsAtlasFileT::getDelFlag, alsAtlasFileT.getDelFlag())
                .eq(alsAtlasFileT.getCreateBy() != null, AlsAtlasFileT::getCreateBy, alsAtlasFileT.getCreateBy())
                .ge(alsAtlasFileT.getCreateTime() != null, AlsAtlasFileT::getCreateTime, alsAtlasFileT.getCreateTime())
                .le(alsAtlasFileT.getUpdateTime() != null, AlsAtlasFileT::getUpdateTime, alsAtlasFileT.getUpdateTime())
                .orderByDesc(AlsAtlasFileT::getCreateTime);
        return alsAtlasFileTMapper.selectList(wrapper);
    }

    /**
     * 新增文件管理
     *
     * @param alsAtlasFileT 文件管理
     * @return 结果
     */
    @Override
    public int insertAlsAtlasFileT(AlsAtlasFileT alsAtlasFileT) {
        SysUser user = SecurityUtils.getLoginUser().getUser();
        alsAtlasFileT.setCreateBy(user.getUserId().toString());
        alsAtlasFileT.setCreateTime(new Date());
        alsAtlasFileT.setUpdateBy(user.getUserId().toString());
        alsAtlasFileT.setUpdateTime(new Date());
        alsAtlasFileT.setDelFlag(false);
        alsAtlasFileT.setVersion(1);
        return alsAtlasFileTMapper.insert(alsAtlasFileT);
    }

    /**
     * 修改文件管理
     *
     * @param alsAtlasFileT 文件管理
     * @return 结果
     */
    @Override
    public int updateAlsAtlasFileT(AlsAtlasFileT alsAtlasFileT) {
        alsAtlasFileT.setUpdateBy(SecurityUtils.getUserId().toString());
        alsAtlasFileT.setUpdateTime(new Date());
        return alsAtlasFileTMapper.updateById(alsAtlasFileT);
    }
    /**
     * 批量删除文件管理
     *
     * @param ids 需要删除的文件ID数组
     * @return 结果
     */
    @Override
    public int deleteAlsAtlasFileTByIds(String[] ids) {
        if (ids == null || ids.length == 0) {
            return 0;
        }

        // 获取当前用户ID作为更新人
        String updateBy = SecurityUtils.getUserId().toString();
        Date updateTime = new Date();

        // 构建更新条件和更新内容
        UpdateWrapper<AlsAtlasFileT> updateWrapper = new UpdateWrapper<>();
        updateWrapper.lambda()
                .in(AlsAtlasFileT::getId, ids)
                .set(AlsAtlasFileT::getDelFlag, true)
                .set(AlsAtlasFileT::getUpdateBy, updateBy)
                .set(AlsAtlasFileT::getUpdateTime, updateTime);

        // 执行更新操作（逻辑删除）
        return alsAtlasFileTMapper.update(null, updateWrapper);
    }

    /**
     * 删除文件管理
     *
     * @param id 需要删除的文件ID
     * @return 结果
     */
    @Override
    public int deleteAlsAtlasFileTById(String id) {
        if (StringUtils.isEmpty(id)) {
            return 0;
        }

        // 获取当前用户ID作为更新人
        String updateBy = SecurityUtils.getUserId().toString();
        Date updateTime = new Date();

        // 构建更新条件和更新内容
        UpdateWrapper<AlsAtlasFileT> updateWrapper = new UpdateWrapper<>();
        updateWrapper.lambda()
                .eq(AlsAtlasFileT::getId, id)
                .set(AlsAtlasFileT::getDelFlag, true)
                .set(AlsAtlasFileT::getUpdateBy, updateBy)
                .set(AlsAtlasFileT::getUpdateTime, updateTime);

        // 执行更新操作（逻辑删除）
        return alsAtlasFileTMapper.update(null, updateWrapper);
    }

    @Override
    public AlsAtlasFileT getById(String id) {
        QueryWrapper<AlsAtlasFileT> wrapper = new QueryWrapper<>();
        wrapper.lambda().eq(StringUtils.isNotEmpty(id),AlsAtlasFileT::getId,id);
        return alsAtlasFileTMapper.selectOne(wrapper);
    }
}