class PackagesServiceImpl extends SonicServiceImpl<PackagesMapper, Packages> implements PackagesService {

    @Override
    public String findOne(int projectId, String branch, String platform) {
        Packages packages = lambdaQuery().eq(Packages::getProjectId, projectId)
                .eq(StringUtils.isNotBlank(platform), Packages::getPlatform, platform)
                .like(StringUtils.isNotBlank(branch), Packages::getBranch, branch)
                .orderByDesc(Packages::getId).last("LIMIT 1").one();
        if (packages != null) {
            return packages.getUrl();
        } else {
            return "";
        }
    }

    @Override
    public CommentPage<PackageDTO> findByProjectId(int projectId, String branch, String platform, String packageName,
                                                   Page<Packages> pageable) {<FILL_FUNCTION_BODY>}
}

        Page<Packages> page = lambdaQuery().eq(Packages::getProjectId, projectId)
                .eq(StringUtils.isNotBlank(platform), Packages::getPlatform, platform)
                .like(StringUtils.isNotBlank(branch), Packages::getBranch, branch)
                .like(StringUtils.isNotBlank(packageName), Packages::getPkgName, packageName)
                .orderByDesc(Packages::getId)
                .page(pageable);

        List<PackageDTO> packageDTOList = page.getRecords()
                .stream().map(TypeConverter::convertTo).collect(Collectors.toList());

        return CommentPage.convertFrom(page, packageDTOList);
    
<methods>public non-sealed void <init>() ,public boolean save(org.cloud.sonic.controller.models.domain.Packages) <variables>