package ${package.ServiceImpl};

import ${package.Entity}.${entity};
import ${package.Mapper}.${table.mapperName};
import ${package.Service}.${table.serviceName};
import ${superServiceImplClassPackage};

import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.beans.factory.annotation.Autowired;

/**
 * <pre>
 * $!{table.comment} 服务实现类
 * </pre>
 *
 * @author ${author}
 * @since ${date}
 */
@Slf4j
@Service
#if(${kotlin})
open class ${table.serviceImplName} : ${superServiceImplClass}<${table.mapperName}, ${entity}>(), ${table.serviceName} {

}
#else
public class ${table.serviceImplName} extends ServiceImpl<${table.mapperName}, ${entity}> implements ${table.serviceName} {

    @Autowired
    private ${table.mapperName} ${cfg.mapperObjectName};
#if(${cfg.generatorStrategy} != 'SIMPLE')
#if(${cfg.generatorStrategy} == 'ALL')

    @Transactional(rollbackFor = Exception.class)
    @Override
    public boolean save${entity}(${entity} ${cfg.entityObjectName}) throws Exception {
        return super.save(${cfg.entityObjectName});
    }

    @Transactional(rollbackFor = Exception.class)
    @Override
    public boolean update${entity}(${entity} ${cfg.entityObjectName}) throws Exception {
        return super.updateById(${cfg.entityObjectName});
    }

    @Transactional(rollbackFor = Exception.class)
    @Override
    public boolean delete${entity}(Long id) throws Exception {
        return super.removeById(id);
    }
#end
#end

}
#end