From cd9d9ff0e645606b7a0a47a14c420792f7306bdf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A6=BE=E5=87=A0=E6=B5=B7?= Date: Sat, 1 Aug 2020 01:00:47 +0800 Subject: [PATCH] ... --- .../serviceimpl/PartnerSiteServiceImpl.java | 41 +++++++++++++++---- 1 file changed, 34 insertions(+), 7 deletions(-) diff --git a/src/main/java/cn/celess/blog/service/serviceimpl/PartnerSiteServiceImpl.java b/src/main/java/cn/celess/blog/service/serviceimpl/PartnerSiteServiceImpl.java index 5ca637c..ad192f8 100644 --- a/src/main/java/cn/celess/blog/service/serviceimpl/PartnerSiteServiceImpl.java +++ b/src/main/java/cn/celess/blog/service/serviceimpl/PartnerSiteServiceImpl.java @@ -10,18 +10,22 @@ import cn.celess.blog.mapper.PartnerMapper; import cn.celess.blog.service.MailService; import cn.celess.blog.service.PartnerSiteService; import cn.celess.blog.util.HttpUtil; +import cn.celess.blog.util.RedisUtil; import cn.celess.blog.util.RegexUtil; +import com.fasterxml.jackson.databind.ObjectMapper; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; +import lombok.SneakyThrows; import org.apache.commons.lang.StringUtils; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.mail.SimpleMailMessage; import org.springframework.stereotype.Service; -import javax.validation.constraints.Email; import java.util.Date; import java.util.List; +import java.util.UUID; +import java.util.concurrent.TimeUnit; /** * @author : xiaohai @@ -33,6 +37,8 @@ public class PartnerSiteServiceImpl implements PartnerSiteService { PartnerMapper partnerMapper; @Autowired MailService mailService; + @Autowired + RedisUtil redisUtil; private static final String SITE_NAME = "小海博客"; private static final String SITE_URL = "celess.cn"; private static final String SITE_EMAIL = "a@celess.cn"; @@ -120,28 +126,36 @@ public class PartnerSiteServiceImpl implements PartnerSiteService { return all; } + @SneakyThrows @Override public PartnerSite apply(LinkApplyReq linkApplyReq) { + // 空值字段 if (StringUtils.isEmpty(linkApplyReq.getName()) || StringUtils.isEmpty(linkApplyReq.getUrl()) || StringUtils.isEmpty(linkApplyReq.getEmail()) || StringUtils.isEmpty(linkApplyReq.getLinkUrl())) { throw new MyException(ResponseEnum.PARAMETERS_ERROR); } - if (RegexUtil.emailMatch(linkApplyReq.getEmail())) { + // 链接不合法 + if (!RegexUtil.emailMatch(linkApplyReq.getEmail())) { throw new MyException(ResponseEnum.PARAMETERS_EMAIL_ERROR); } - if (RegexUtil.urlMatch(linkApplyReq.getLinkUrl()) || RegexUtil.urlMatch(linkApplyReq.getUrl()) - || (!StringUtils.isEmpty(linkApplyReq.getIconPath()) && RegexUtil.urlMatch(linkApplyReq.getIconPath()))) { + if (!RegexUtil.urlMatch(linkApplyReq.getLinkUrl()) || !RegexUtil.urlMatch(linkApplyReq.getUrl())) { throw new MyException(ResponseEnum.PARAMETERS_URL_ERROR); } + if (!StringUtils.isEmpty(linkApplyReq.getIconPath()) && !RegexUtil.urlMatch(linkApplyReq.getIconPath())) { + throw new MyException(ResponseEnum.PARAMETERS_URL_ERROR); + } + // 非强制字段 设置空 if (StringUtils.isEmpty(linkApplyReq.getIconPath())) { linkApplyReq.setIconPath(""); } + // 抓取页面 String resp = HttpUtil.getAfterRendering(linkApplyReq.getLinkUrl()); assert resp != null; + PartnerSite ps = new PartnerSite(); if (resp.contains(SITE_URL)) { - PartnerSite ps = new PartnerSite(); + //包含站点 BeanUtils.copyProperties(linkApplyReq, ps); ps.setOpen(false); partnerMapper.insert(ps); @@ -152,8 +166,21 @@ public class PartnerSiteServiceImpl implements PartnerSiteService { smm.setSentDate(new Date()); mailService.send(smm); } else { - throw new MyException(ResponseEnum.APPLY_LINK_NO_ADD_THIS_SITE); + // 不包含站点 + String uuid; + ObjectMapper mapper = new ObjectMapper(); + if (redisUtil.hasKey(linkApplyReq.getUrl())) { + uuid = redisUtil.get(linkApplyReq.getUrl()); + if (!redisUtil.hasKey(uuid)) { + redisUtil.setEx(uuid, mapper.writeValueAsString(linkApplyReq), 10, TimeUnit.MINUTES); + } + } else { + uuid = UUID.randomUUID().toString().replaceAll("-", ""); + redisUtil.setEx(uuid, mapper.writeValueAsString(linkApplyReq), 10, TimeUnit.MINUTES); + redisUtil.setEx(linkApplyReq.getUrl(), uuid, 10, TimeUnit.MINUTES); + } + throw new MyException(ResponseEnum.APPLY_LINK_NO_ADD_THIS_SITE, null, uuid); } - return null; + return ps; } }