RenewalSwitchProducer.kt 2.07 KB
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<SettingVO?> = 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)
        }
    }
}