首页>代码>springboot+layui简单易懂的短网址服务搭建,提供源码>/src/main/java/com/yutons/service/ShortUrlConvertService.java
package com.yutons.service; import com.yutons.response.ResultBean; import com.yutons.response.ResultCode; import com.yutons.utils.MyShortUrlUtil; import com.yutons.utils.RedisUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import java.util.concurrent.TimeUnit; /** * @Title 短网址转换服务 * @Author yutons * @Date 2019/7/12 22:50 * @Desc */ @Service public class ShortUrlConvertService { @Value("${domain}") private String domain; @Autowired private RedisUtil redisUtil; /** * 短网址加密生成(为空默认有效期7天,可自定义时长) * * @param urlLong * @param days * @return */ public ResultBean shorten(String urlLong, Integer days) { days = days == null ? 7 : days; //加密短网址,返回短网址URL数组 String shortUrl = generateUrl(urlLong, days, TimeUnit.DAYS); domain = domain.endsWith("/") ? domain : domain + "/"; shortUrl = domain + shortUrl; ResultBean resultBean = new ResultBean<>(shortUrl); if (shortUrl==null){ resultBean=new ResultBean(ResultCode.FAIL,"网址非法,转换失败!"); } return resultBean; } /** * 短网址解密 * * @param shortUrl * @return */ public ResultBean shortde(String shortUrl) { shortUrl = shortUrl.replaceAll(domain, ""); //判断网址是否存在 String url = redisUtil.get("shortUrl:" + shortUrl); ResultBean resultBean = new ResultBean<>(url); if (url==null){ resultBean=new ResultBean(ResultCode.FAIL,"短网址非法,解析失败!"); } return resultBean; } private String generateUrl(String urlLong, Integer times, TimeUnit timeUnit) { //加密短网址,返回短网址URL数组 String[] shortUrls = MyShortUrlUtil.shortUrl(urlLong); //循环获取加密url for (String shortUrl : shortUrls) { //判断短网址是否存在 Boolean exists = redisUtil.exists("shortUrl:" + shortUrl); if (exists) { //判断网址是否存在 String url = redisUtil.get("shortUrl:" + shortUrl); if (urlLong.equals(url)) { redisUtil.set("shortUrl:" + shortUrl, urlLong); if (times!=0){ redisUtil.expire("shortUrl:" + shortUrl, times, timeUnit); } return shortUrl; } continue; } redisUtil.set("shortUrl:" + shortUrl, urlLong); if (times!=0){ redisUtil.expire("shortUrl:" + shortUrl, times, timeUnit); } return shortUrl; } return null; } }
最近下载更多
尹恒yingying LV18
2021年10月23日
yutons LV9
2021年3月27日
910353504 LV14
2020年12月20日
ck1744 LV3
2020年1月14日
Retuen LV7
2019年12月18日
robin123456 LV5
2019年10月11日
jp6863655 LV13
2019年9月2日
我本葬花人葬花亦葬人 LV16
2019年8月30日
janiter LV15
2019年8月28日
乞丐哥哥 LV23
2019年8月22日
最近浏览更多
TY0165 LV20
6月24日
admin_z LV22
1月28日
cwb6357123 LV6
2023年9月21日
淡心伤 LV11
2023年8月2日
Lamber
2023年2月28日
暂无贡献等级
gala209 LV3
2023年2月4日
微信网友_6256859815333888
2022年12月11日
暂无贡献等级
123456asdczx LV1
2022年12月4日
内心向阳 LV4
2022年11月30日
wl010101 LV9
2022年10月22日