package cn.ezhizao.project.system.service.impl;

import cn.ezhizao.project.system.domain.SysModule;
import cn.ezhizao.project.system.domain.SysModuleDetail;
import cn.ezhizao.project.system.mapper.SysModuleMapper;
import cn.ezhizao.project.system.service.ISysModuleDetailService;
import cn.ezhizao.project.system.service.ISysModuleService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.List;

/**
 * 模块管理Service业务层处理
 *
 * @author ruoyi
 * @date 2023-10-24
 */
@Service
public class SysModuleServiceImpl  extends ServiceImpl<SysModuleMapper, SysModule> implements ISysModuleService
{
    @Resource
    private SysModuleMapper sysModuleMapper;
    @Resource
    private ISysModuleDetailService sysModuleDetailService;

    /**
     * 查询模块管理列表
     *
     * @param sysModule 模块管理
     * @return 模块管理
     */
    @Override
    public List<SysModule> getList(SysModule sysModule)
    {
        return sysModuleMapper.getList(sysModule);
    }

    /**
     * 物理删除
     * @param sysModule
     * @return 删除结果
     */
    @Override
    public int physicalDelete(SysModule sysModule){ return sysModuleMapper.physicalDelete(sysModule); }

    @Override
    public boolean save(SysModule sysModule) {
        boolean saveStatus = super.save(sysModule);
        SysModuleDetail sysModuleDetail = new SysModuleDetail();
        sysModuleDetail.setModuleId(sysModule.getId());
        sysModuleDetailService.physicalDelete(sysModuleDetail);
        sysModule.getDetails().forEach(v -> {
            v.setModuleId(sysModule.getId());
//            sysModuleDetailMapper.insert(v);
        });
        sysModuleDetailService.saveBatch(sysModule.getDetails());
        return saveStatus;
    }

    @Override
    public boolean updateById(SysModule sysModule) {
        boolean saveStatus = super.updateById(sysModule);
        SysModuleDetail sysModuleDetail = new SysModuleDetail();
        sysModuleDetail.setModuleId(sysModule.getId());
        sysModuleDetailService.physicalDelete(sysModuleDetail);
        sysModule.getDetails().forEach(v -> {
            v.setModuleId(sysModule.getId());
        });
        sysModuleDetailService.saveBatch(sysModule.getDetails());
        return saveStatus;
    }
}
