package com.jzlife.servantequity.compent.publisher;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;
import com.aliyuncs.CommonResponse;
import com.jzlife.servantequity.compent.SendSms;
import com.jzlife.servantequity.constant.RedisConstant;
import com.jzlife.servantequity.constant.SmsEnum;
import com.jzlife.servantequity.entity.BpSmslog;
import com.jzlife.servantequity.service.BpSmslogService;
import com.jzlife.servantequity.util.JsonUtil;
import com.jzlife.servantequity.vo.SmsVo;
import lombok.extern.slf4j.Slf4j;
@Slf4j
@Component
public class RedisMessage implements Runnable {
@Autowired
RedisTemplate redisTemplate;
@Autowired
SendSms sendSms;
@Autowired
BpSmslogService bpSmslogService;
@SuppressWarnings("unchecked")
public synchronized void sendMessage(SmsVo sv) {
redisTemplate.opsForList().leftPush(RedisConstant.SMS_PREFIX, sv);
}
@SuppressWarnings("unchecked")
public synchronized Object getMessage() {
Object object = redisTemplate.opsForList().rightPop(RedisConstant.SMS_PREFIX);
return object;
}
@Override
public void run() {
SmsVo sv = new SmsVo();
while (true){
Object message = getMessage();
if(null!=message) {
sv=(SmsVo) message;
log.info("获取发送信息:"+JsonUtil.getJson(sv));
String templateNo=SmsEnum.getValue(sv.getSendType());//获取模板
CommonResponse response = sendSms.sendAliMs(sv.getPhonenumber(), sv.getParm(),templateNo);
log.info("返回短信信息:"+JsonUtil.getJson(response));
bpSmslogService.insertSmsLog(response, sv);
}
try {
Thread.sleep(50);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}