package com.ebts.generator.service.impl;

import com.ebts.common.constant.ReturnConstants;
import com.ebts.common.core.entity.Result;
import com.ebts.common.utils.SecurityUtils;
import com.ebts.generator.dao.ModuleDao;
import com.ebts.generator.entity.Module;
import com.ebts.generator.service.ModuleService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

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

/**
 * 模块管理Service业务层处理
 *
 * @author binlin
 * @date 2021-01-24
 */
@Service
public class ModuleServiceImpl implements ModuleService {

    @Resource
    private ModuleDao moduleDao;

    /**
     * 查询模块管理
     *
     * @param id 模块管理ID
     * @return 模块管理
     */
    @Override
    @Transactional(propagation = Propagation.SUPPORTS)
    public Result<Module> selectModuleById(Long id) {
        Module module = moduleDao.selectModuleById(id);
        if (module != null) {
            return Result.ok(module);
        } else {
            return Result.error(ReturnConstants.RESULT_EMPTY);
        }
    }

    /**
     * 查询模块管理列表
     *
     * @param module 模块管理
     * @return 模块管理
     */
    @Override
    @Transactional(propagation = Propagation.SUPPORTS)
    public Result<List<Module>> selectModuleList(Module module) {
        List<Module> moduleList = moduleDao.selectModuleList(module);
        if (moduleList.size() > 0) {
            return Result.ok(moduleList);
        } else {
            return Result.info(ReturnConstants.RESULT_EMPTY);
        }
    }

    /**
     * 新增模块管理
     *
     * @param module 模块管理
     * @return 结果
     */
    @Override
    @Transactional(propagation = Propagation.REQUIRED,rollbackFor = Exception.class)
    public Result<Integer> insertModule(Module module) {
        module.setCreateBy(SecurityUtils.getUserId());
        moduleDao.insertModule(module);
        return Result.ok();
    }

    /**
     * 修改模块管理
     *
     * @param module 模块管理
     * @return 结果
     */
    @Override
    @Transactional(propagation = Propagation.REQUIRED,rollbackFor = Exception.class)
    public Result<Integer> updateModule(Module module) {
        module.setUpdateBy(SecurityUtils.getUserId());
        moduleDao.updateModule(module);
        return Result.ok();
    }

    /**
     * 批量删除模块管理
     *
     * @param ids 需要删除的模块管理ID
     * @return 结果
     */
    @Override
    @Transactional(propagation = Propagation.REQUIRED,rollbackFor = Exception.class)
    public Result<Integer> deleteModuleByIds(Long[] ids) {
        moduleDao.deleteModuleByIds(ids);
        return Result.ok();
    }

    /**
     * 删除模块管理信息
     *
     * @param id 模块管理ID
     * @return 结果
     */
    @Override
    @Transactional(propagation = Propagation.REQUIRED,rollbackFor = Exception.class)
    public Result<Integer> deleteModuleById(Long id) {
        moduleDao.deleteModuleById(id);
        return Result.ok();
    }
}
