本短链接网站系统,短链接指将长链接网址转换固定长度的短链接。
短链接: http://8.134.130.51:9999/material_short_link/7bEvim
前端:Vue2、element-ui
后端:Spring boot 、Mybatis-plus、Jwt、Redis
public Map<String,Object> authLogin(String account, String password) {
SysUser sysUser = userService.getOne(Wrappers.lambdaQuery(SysUser.class)
.eq(SysUser::getAccount, account)
.eq(SysUser::getPassword, password));
if (sysUser != null && sysUser.getStatus()) {
Map<String,Object> map = new HashMap<>(2);
String tokenFormat = StringUtils.format(RedisConstants.TOKEN_CATALOG, sysUser.getId());
String menuFormat = StringUtils.format(RedisConstants.MENU_CATALOG, sysUser.getId());
if (redisUtils.exists(tokenFormat) && redisUtils.exists(tokenFormat)) {
threadPoolTaskExecutor.execute(()->{
log.info("----------- Redis token 续命 -----------");
redisUtils.expire(tokenFormat,RedisConstants.TOKEN_OVERDUE_TIME);
redisUtils.expire(menuFormat,RedisConstants.TOKEN_OVERDUE_TIME);
});
String token = redisUtils.get(tokenFormat).toString();
List<SysMenu> menus = (List<SysMenu>) redisUtils.get(menuFormat);
map.put("token",token);
map.put("menu",menus);
} else {
String token = TokenUtil.doGenerateToken(sysUser.getId().toString());
List<SysMenu> menus = sysMenuService.getMenuByUserId(sysUser.getId());
if (menus != null) {
threadPoolTaskExecutor.execute(()->{
log.info("----------- Redis token 存储 -----------");
redisUtils.set(tokenFormat,token ,RedisConstants.TOKEN_OVERDUE_TIME);
redisUtils.set(menuFormat,menus ,RedisConstants.TOKEN_OVERDUE_TIME);
});
map.put("token",token);
map.put("menu",menus);
}
}
return map;
}
return null;
}
/**
* 生成短连接接口
* @param url URL
* @return 短连接
*/
@Override
public String generateShortLink(String url) {
lock.lock();
try {
if (url != null) {
String key = EncryptionLinkConstants.MD5_KEY;
String shortCode = ShortUrlUtils.genShortCode(url);
if (redisUtils.contain(shortCode)){
return this.baseMapper.selectOne(new LambdaQueryWrapper<ShortLinkInfo>().eq(ShortLinkInfo::getCode, shortCode)).getNewUrl();
}
String newUrl = baseProperties.getUrl()+shortCode;
ShortLinkInfo shortLinkInfo = new ShortLinkInfo();
// 雪花算法
shortLinkInfo.setId(SnowflakeIdWorkerUtils.getUUID()).
setOldUrl(url).setNewUrl(newUrl).setUrlKey(key).setCode(shortCode);
this.baseMapper.insert(shortLinkInfo);
redisUtils.put(shortCode);
return newUrl;
}
}catch (Exception e){
log.error("生成URL数据异常:",e);
} finally {
lock.unlock();
}
return null;
}
地址:http://8.134.130.51:8086/#/
账号: admin
密码: 123456
短链接的系统由本人开发,最近正在加急完善小功能,由于第一版功能简洁,在设计上可能不够完善,可能会出现些问题,欢迎大家在评论区留言指出,也可以提出问题和建议。
地址:https://gitee.com/sdsdaasdad/material_cloud
网站设计参考文章:https://juejin.cn/post/7024055300449632269