package cn.fw.valhalla.component.producer import cn.fw.valhalla.common.utils.DateUtil import cn.fw.valhalla.domain.enums.FollowTypeEnum import cn.fw.valhalla.domain.enums.SettingTypeEnum import cn.fw.valhalla.domain.vo.setting.SettingVO import cn.fw.valhalla.sdk.result.RenewalSwitchMQ import cn.fw.valhalla.service.bus.setting.SettingBizService import cn.fw.valhalla.service.bus.setting.strategy.SettingStrategy import org.apache.rocketmq.spring.core.RocketMQTemplate import org.slf4j.Logger import org.slf4j.LoggerFactory import org.springframework.stereotype.Component import org.springframework.web.bind.annotation.RequestMapping import java.time.LocalDate import java.util.* /** * 续保跟进切换mq生产者 * * @author : kurisu * @version : 1.0 * @className : RenewalSwitchProducer * @description : 续保跟进切换mq生产者 * @date : 2023-03-15 15:37 */ @Component class RenewalSwitchProducer( private val rocketMQTemplate: RocketMQTemplate, private val settingBizService: SettingBizService ) { private val log: Logger = LoggerFactory.getLogger(this.javaClass) @RequestMapping(value = ["send"]) fun send(vin: String, deadline: LocalDate, groupId: Long) { val settingVO: Optional = settingBizService.querySettingByType( FollowTypeEnum.IR, SettingTypeEnum.MODE, groupId, SettingStrategy.COMMON_BRAND_ID ) // 模式 1、续保角色 2、续保角色+服务接待/新车销售 val mode = settingVO.map { obj: SettingVO? -> obj?.detailValue }.orElse(1) if (mode == 1) { return } if (!LocalDate.now().plusDays(2L).isBefore(deadline)) { return } log.info("发送续保跟进切换mq消息。vin:{}", vin) try { val mq = RenewalSwitchMQ(FollowTypeEnum.IR.value, vin, DateUtil.localDate2Date(deadline), groupId) rocketMQTemplate.syncSend(RenewalSwitchMQ.TOPIC + ":*", mq) } catch (e: Exception) { log.info("发送保有客分配结束mq消息失败!", e) } } }