package com.app.mvc.shortUrl; import com.app.mvc.acl.enums.Status; import org.springframework.stereotype.Service; import javax.annotation.Resource; /** * Created by jimin on 16/4/7. */ @Service public class ShortUrlService { @Resource private ShortUrlDao shortUrlDao; public String generate(String url) { String newUrl = ShortUrlUtil.generate(url); ShortUrl shortUrl = shortUrlDao.findByNewUrl(url); if (shortUrl != null) { return shortUrl.getCurrent(); } shortUrl = ShortUrl.builder().origin(url).current(newUrl).status(Status.AVAILABLE.getCode()).build(); shortUrlDao.save(shortUrl); return newUrl; } public String getOriginUrl(String url) { ShortUrl shortUrl = shortUrlDao.findByNewUrl(url); if (shortUrl == null) { throw new RuntimeException("未查到该短链接"); } if (shortUrl.getStatus() != Status.AVAILABLE.getCode()) { throw new RuntimeException("该短链接已失效"); } if (shortUrl.getInvalidTime() != null && shortUrl.getInvalidTime().getTime() < System.currentTimeMillis()) { throw new RuntimeException("该短链接已过期"); } return shortUrl.getOrigin(); } public String getOriginUrlWithoutException(String url) { try { return getOriginUrl(url); } catch (Throwable t) { return "/index.jsp"; } } }