搜索模块实现从mq中消费写日志消息+优化黑名单校验功能

main
heqijun 3 months ago
parent 89a22c85a8
commit d23283da92

@ -24,6 +24,16 @@
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.12.5</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
<version>2.12.5</version>
</dependency>
</dependencies>
</project>

@ -1,5 +1,9 @@
package com.mashibing.common.pojo;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
import com.mashibing.common.annotation.Description;
import lombok.AllArgsConstructor;
import lombok.Data;
@ -44,6 +48,8 @@ public class StandardSubmit implements Serializable {
@Description("短信内容")
private String text;
@JsonSerialize(using = LocalDateTimeSerializer.class)
@JsonDeserialize(using = LocalDateTimeDeserializer.class)
@Description("短信的发送时间")
private LocalDateTime sendTime;

@ -0,0 +1,24 @@
package com.mashibing.common.utils;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
/**
* @author heqijun
* @ClassName: JsonUtil
* @Description: TODO()
* @date 2025/6/12 18:46
*/
public class JsonUtil {
private static ObjectMapper objectMapper = new ObjectMapper();
public static String obj2Json(Object obj) {
try {
return objectMapper.writeValueAsString(obj);
} catch (JsonProcessingException e) {
throw new RuntimeException("转换JSON失败");
}
}
}

@ -2,13 +2,17 @@ package com.mashibing.search.mq;
import com.mashibing.common.constant.RabbitMQConstant;
import com.mashibing.common.pojo.StandardSubmit;
import com.mashibing.common.utils.JsonUtil;
import com.mashibing.search.service.SearchService;
import com.rabbitmq.client.Channel;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.io.IOException;
import java.time.LocalDateTime;
/**
* @author heqijun
@ -21,10 +25,21 @@ import java.io.IOException;
@Component
public class SmsWriteLogListener {
@Autowired
SearchService searchService;
private final String INDEX = "sms_submit_log_";
@RabbitListener(queues = {RabbitMQConstant.SMS_WRITE_LOG})
public void process(StandardSubmit submit, Channel channel, Message message) throws IOException {
log.info("接收到存储日志的信息submit={}", submit);
String sequenceId = submit.getSequenceId().toString();
String json = JsonUtil.obj2Json(submit);
String year = LocalDateTime.now().getYear() + "";
searchService.index(INDEX + year, sequenceId, json);
//手动ack
channel.basicAck(message.getMessageProperties().getDeliveryTag(), false);

@ -40,6 +40,7 @@ public class BlackClientStrategyFilter implements StrategyFilter {
String value = cacheClient.get(CacheConstant.BLACK + clientId + CacheConstant.COLON + mobile);
if (IN_BLACK.equals(value)) {
log.info("【策略模块-客户黑名单校验】当前手机号:{}是客户黑名单!", mobile);
submit.setErrorMsg(ExceptionEnums.BLACK_CLIENT.getMsg());
strategyCheckFailedUtil.smsSendLog(submit, STRATEGY_NAME);
strategyCheckFailedUtil.smsPushReport(submit, STRATEGY_NAME);
throw new StrategyException(ExceptionEnums.BLACK_CLIENT);

@ -40,6 +40,7 @@ public class BlackGlobalStrategyFilter implements StrategyFilter {
String value = cacheClient.get(CacheConstant.BLACK + mobile);
if (IN_BLACK.equals(value)) {
log.info("【策略模块-全局黑名单校验】当前手机号:{}是全局黑名单!", mobile);
submit.setErrorMsg(ExceptionEnums.BLACK_GLOBAL.getMsg());
strategyCheckFailedUtil.smsSendLog(submit, STRATEGY_NAME);
strategyCheckFailedUtil.smsPushReport(submit, STRATEGY_NAME);
throw new StrategyException(ExceptionEnums.BLACK_GLOBAL);

Loading…
Cancel
Save