Explorar o código

脆球邮箱多域名

zoujiajian %!s(int64=2) %!d(string=hai) anos
pai
achega
14b8d9f718

+ 13 - 0
netflix-dao/src/main/java/com/cyksj/mapper/CuiqiuEmailConfigMapper.java

@@ -0,0 +1,13 @@
+package com.cyksj.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.cyksj.model.entity.CuiqiuEmailConfig;
+
+/**
+ * 项目名: yhlxj2
+ * 文件名: CuiqiuEmailConfigMapper
+ * 创建者: JavaZou
+ * 创建时间:2024/7/22 15:31
+ */
+public interface CuiqiuEmailConfigMapper extends BaseMapper<CuiqiuEmailConfig> {
+}

+ 24 - 0
netflix-dao/src/main/java/com/cyksj/model/entity/CuiqiuEmailConfig.java

@@ -0,0 +1,24 @@
+package com.cyksj.model.entity;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 项目名: yhlxj2
+ * 文件名: CuiqiuEmailConfig
+ * 创建者: JavaZou
+ * 创建时间:2024/7/22 15:29
+ */
+@Getter
+@Setter
+public class CuiqiuEmailConfig {
+	/**
+	 * 域名前缀
+	 */
+	private String domainPrefix;
+
+	/**
+	 * 接受主邮件id
+	 */
+	private String mailId;
+}

+ 2 - 0
netflix-service/src/main/java/com/cyksj/service/mail/CuiQiuMailService.java

@@ -12,4 +12,6 @@ public interface CuiQiuMailService {
 	 * 获取最新邮箱 返回验证码
 	 */
 	String getVerifyCode(String email, Long goodsId, Integer type, Boolean sync, Integer linkType) throws Exception;
+
+	boolean isCuiQiuEmail(String account);
 }

+ 42 - 7
netflix-service/src/main/java/com/cyksj/service/mail/impl/CuiQiuMailServiceImpl.java

@@ -11,15 +11,18 @@ import com.cyksj.common.exception.BusinessRuntimeException;
 import com.cyksj.common.util.Jsons;
 import com.cyksj.common.util.StringUtil;
 import com.cyksj.common.util.TicketCodeCommonUtil;
+import com.cyksj.mapper.CuiqiuEmailConfigMapper;
 import com.cyksj.model.dto.CuiQiuEmailDetailDto;
 import com.cyksj.model.dto.CuiQiuEmailDto;
 import com.cyksj.model.dto.CuiQiuEmailResultDto;
+import com.cyksj.model.entity.CuiqiuEmailConfig;
 import com.cyksj.service.mail.CuiQiuMailService;
 import com.cyksj.service.relation.GroupsRelationNetflixService;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 
+import javax.annotation.PostConstruct;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -42,9 +45,6 @@ public class CuiQiuMailServiceImpl implements CuiQiuMailService {
 	//脆球域名id
 	private final static String DOMAIN_ID = "1696913058045050661";
 
-	//代收管理员邮件id
-	private final static String ADMIN_MAIL_ID = "1696913058063659217";
-
 	//PS 验证码官方
 	private final static String PS_ADOBE = "Adobe";
 
@@ -52,6 +52,15 @@ public class CuiQiuMailServiceImpl implements CuiQiuMailService {
 
 	private final static String NETFLIX = "Netflix";
 
+	private static List<CuiqiuEmailConfig> cuiqiuEmailConfigs;
+
+	private final CuiqiuEmailConfigMapper cuiqiuEmailConfigMapper;
+
+	@PostConstruct
+	public void getCuiQiuEmailConfig() {
+		cuiqiuEmailConfigs = cuiqiuEmailConfigMapper.selectList(null);
+	}
+
 	@Override
 	public String getVerifyCode(String email, Long goodsId, Integer type, Boolean sync, Integer linkType) throws Exception {
 		//获取近二十封邮件
@@ -63,7 +72,11 @@ public class CuiQiuMailServiceImpl implements CuiQiuMailService {
 		//维度是天
 		DateTime now = DateTime.now();
 		params.put("token", CUI_QIU_TOKEN);
-		params.put("mail_id", ADMIN_MAIL_ID);
+		String mailId = getAdmainMailId(email);
+		if (StrUtil.isEmpty(mailId)) {
+			throw BusinessRuntimeException.getInstance("系统异常,请联系客服..");
+		}
+		params.put("mail_id", mailId);
 		params.put("start_time", DateUtil.offsetDay(now, -1).toDateStr());
 		params.put("end_time", DateUtil.offsetDay(now, 1).toDateStr());
 		params.put("to", email);
@@ -101,7 +114,7 @@ public class CuiQiuMailServiceImpl implements CuiQiuMailService {
 			for (CuiQiuEmailDto cuiQiuEmailDto : list) {
 				Long messageId = cuiQiuEmailDto.getId();
 				try {
-					String code = getVerifyCodeByEmail(messageId, goodsId, type, sync, linkType);
+					String code = getVerifyCodeByEmail(messageId, goodsId, type, sync, linkType, mailId);
 					if (StrUtil.isNotBlank(code)) {
 						return code;
 					}
@@ -112,11 +125,21 @@ public class CuiQiuMailServiceImpl implements CuiQiuMailService {
 		return null;
 	}
 
-	public String getVerifyCodeByEmail(Long messageId, Long goodsId, Integer type, Boolean sync, Integer linkType) throws Exception {
+	@Override
+	public boolean isCuiQiuEmail(String account) {
+		for (CuiqiuEmailConfig cuiqiuEmailConfig : cuiqiuEmailConfigs) {
+			if (account.contains(cuiqiuEmailConfig.getDomainPrefix())) {
+				return true;
+			}
+		}
+		return false;
+	}
+
+	public String getVerifyCodeByEmail(Long messageId, Long goodsId, Integer type, Boolean sync, Integer linkType, String mailId) throws Exception {
 		String url = "https://domain-open-api.cuiqiu.com/v1/message/detail";
 		Map<String, Object> params = new HashMap<>();
 		params.put("token", CUI_QIU_TOKEN);
-		params.put("mail_id", ADMIN_MAIL_ID);
+		params.put("mail_id", mailId);
 		params.put("message_id", messageId);
 		HttpRequest post = HttpUtil.createPost(url);
 		post.form(params);
@@ -169,4 +192,16 @@ public class CuiQiuMailServiceImpl implements CuiQiuMailService {
 		}
 		return StringUtil.getVerifyCodePattern(code, length);
 	}
+
+	/**
+	 * 获取接受邮件邮箱id
+	 */
+	private String getAdmainMailId(String email) {
+		for (CuiqiuEmailConfig cuiqiuEmailConfig : cuiqiuEmailConfigs) {
+			if (email.contains(cuiqiuEmailConfig.getDomainPrefix())) {
+				return cuiqiuEmailConfig.getMailId();
+			}
+		}
+		return null;
+	}
 }

+ 1 - 4
netflix-service/src/main/java/com/cyksj/service/relation/impl/GroupRelationFrontServiceImpl.java

@@ -123,9 +123,6 @@ public class GroupRelationFrontServiceImpl implements GroupRelationFrontService
 
 	private final ChatGptAccountService chatGptAccountService;
 
-	//脆球邮箱后缀
-	private final static String CUI_QIU_EMAIL_SUFFIX = "@kindvd.com";
-
 	private final UpgradePackageMapper upgradePackageMapper;
 
 	private final GoodsDonQaRelateMapper goodsDonQaRelateMapper;
@@ -535,7 +532,7 @@ public class GroupRelationFrontServiceImpl implements GroupRelationFrontService
 		if (StrUtil.hasEmpty(account, password)) {
 			throw BusinessRuntimeException.getInstance("您的车票账号密码异常,请联系客服...");
 		}
-		if (renewalView.getAccount().contains(CUI_QIU_EMAIL_SUFFIX)) {
+		if (cuiQiuMailService.isCuiQiuEmail(renewalView.getAccount())) {
 			return cuiQiuMailService.getVerifyCode(renewalView.getAccount(), renewalView.getGoodsId(), type, sync, loginReq.getLinkType());
 		}
 		//获取邮箱密码