|
@@ -1,52 +1,56 @@
|
|
|
package com.backendsys.modules.sdk.tencentcloud.ems.service.impl;
|
|
|
|
|
|
+import cn.hutool.core.lang.Validator;
|
|
|
+import cn.hutool.core.util.StrUtil;
|
|
|
import com.backendsys.modules.sdk.tencentcloud.ems.dao.TencentEmsCallbackDao;
|
|
|
-import com.backendsys.modules.sdk.tencentcloud.ems.entity.TencentEmsCallbackEntity;
|
|
|
-import com.backendsys.modules.sdk.tencentcloud.ems.entity.TencentEmsCallbackNew;
|
|
|
+import com.backendsys.modules.sdk.tencentcloud.ems.entity.TencentEmsCallback;
|
|
|
+import com.backendsys.modules.sdk.tencentcloud.ems.entity.TencentEmsCallbackParams;
|
|
|
import com.backendsys.modules.sdk.tencentcloud.ems.service.TencentEmsCallbackService;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.dao.DuplicateKeyException;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
-import java.util.List;
|
|
|
-
|
|
|
@Service
|
|
|
public class TencentEmsCallbackServiceImpl implements TencentEmsCallbackService {
|
|
|
@Autowired
|
|
|
private TencentEmsCallbackDao tencentEmsCallbackDao;
|
|
|
|
|
|
@Override
|
|
|
- public void receiveCallback(List<TencentEmsCallbackNew> emsCallbackList) {
|
|
|
- for (TencentEmsCallbackNew dto : emsCallbackList) {
|
|
|
- String messageId = dto.getMessageId();
|
|
|
- try {
|
|
|
- // 幂等检查(根据 messageId)
|
|
|
- if (tencentEmsCallbackDao.selectById(messageId) != null) {
|
|
|
- continue;
|
|
|
- }
|
|
|
+ public void receiveCallback(TencentEmsCallbackParams tencentEmsCallbackParams) {
|
|
|
+ String messageId = tencentEmsCallbackParams.getMessageId();
|
|
|
+ try {
|
|
|
+
|
|
|
+ // 判断邮箱地址非空
|
|
|
+ String email = tencentEmsCallbackParams.getEmail();
|
|
|
+ if (!StrUtil.isBlank(email) && Validator.isEmail(email)) {
|
|
|
+
|
|
|
+ // 这里可能需要做更多的条件判断?
|
|
|
+
|
|
|
// 构建实体
|
|
|
- TencentEmsCallbackEntity entity = new TencentEmsCallbackEntity();
|
|
|
- entity.setEvent(dto.getEvent());
|
|
|
- entity.setEmail(dto.getEmail());
|
|
|
- entity.setBulk_id(dto.getBulkId());
|
|
|
- entity.setTimestamp(dto.getTimestamp());
|
|
|
- entity.setReason(dto.getReason());
|
|
|
- entity.setBounce_type(dto.getBounceType());
|
|
|
- entity.setUsername(dto.getUsername());
|
|
|
- entity.setSender(dto.getFrom());
|
|
|
- entity.setFrom_domain(dto.getFromDomain());
|
|
|
- entity.setTemplate_id(dto.getTemplateId());
|
|
|
- entity.setSubject(dto.getSubject());
|
|
|
+ TencentEmsCallback entity = new TencentEmsCallback();
|
|
|
+ entity.setEvent(tencentEmsCallbackParams.getEvent());
|
|
|
+ entity.setEmail(email);
|
|
|
+ entity.setBulk_id(tencentEmsCallbackParams.getBulkId());
|
|
|
+ entity.setTimestamp(tencentEmsCallbackParams.getTimestamp());
|
|
|
+ entity.setReason(tencentEmsCallbackParams.getReason());
|
|
|
+ entity.setBounce_type(tencentEmsCallbackParams.getBounceType());
|
|
|
+ entity.setUsername(tencentEmsCallbackParams.getUsername());
|
|
|
+ entity.setSender(tencentEmsCallbackParams.getFrom());
|
|
|
+ entity.setFrom_domain(tencentEmsCallbackParams.getFromDomain());
|
|
|
+ entity.setTemplate_id(tencentEmsCallbackParams.getTemplateId());
|
|
|
+ entity.setSubject(tencentEmsCallbackParams.getSubject());
|
|
|
entity.setMessage_id(messageId);
|
|
|
// 保存记录
|
|
|
tencentEmsCallbackDao.insert(entity);
|
|
|
+ System.out.println("邮件推送回调成功");
|
|
|
|
|
|
- } catch (DuplicateKeyException e) {
|
|
|
- // 数据库唯一索引冲突兜底幂等
|
|
|
- System.out.println("重复插入数据:" + messageId);
|
|
|
- } catch (Exception e) {
|
|
|
- e.printStackTrace();
|
|
|
}
|
|
|
+
|
|
|
+ } catch (DuplicateKeyException e) {
|
|
|
+ // 数据库唯一索引冲突兜底幂等
|
|
|
+ System.out.println("重复插入数据:" + messageId);
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
}
|
|
|
}
|
|
|
}
|