class ClientVersionServiceImpl implements ClientVersionService {

    private final Logger logger = LoggerFactory.getLogger(ClientVersionServiceImpl.class);

    private AppClientVersionDao appClientVersionDao;

    @Override
    public void saveOrUpdateClientVersion(long appId, String appClientIp, String clientVersion) {
        try {
            AppClientVersion appClientVersion = new AppClientVersion();
            appClientVersion.setAppId(appId);
            appClientVersion.setClientIp(appClientIp);
            appClientVersion.setClientVersion(clientVersion);
            appClientVersion.setReportTime(new Date());
            appClientVersionDao.saveOrUpdateClientVersion(appClientVersion);
        } catch (Exception e) {
            logger.error(e.getMessage(), e);
        }
    }

    @Override
    public List<AppClientVersion> getAppAllClientVersion(long appId) {<FILL_FUNCTION_BODY>}

    public String getAppMaxClientVersion(long appId) {
        try {
            return appClientVersionDao.getAppMaxClientVersion(appId);
        } catch (Exception e) {
            logger.error(e.getMessage(), e);
            return null;
        }
    }

    @Override
    public List<Map<String, Object>> getAllMaxClientVersion() {
        try {
            return appClientVersionDao.getAllMaxClientVersion();
        } catch (Exception e) {
            logger.error(e.getMessage(), e);
            return Collections.emptyList();
        }
    }

    @Override
    public List<AppClientVersion> getAll(long appId) {
        try {
            return appClientVersionDao.getAll(appId);
        } catch (Exception e) {
            logger.error(e.getMessage(), e);
            return Collections.emptyList();
        }
    }

    public void setAppClientVersionDao(AppClientVersionDao appClientVersionDao) {
        this.appClientVersionDao = appClientVersionDao;
    }

}

        try {
            return appClientVersionDao.getAppAllClientVersion(appId);
        } catch (Exception e) {
            logger.error(e.getMessage(), e);
            return Collections.emptyList();
        }
    
<no_super_class>