package com.persagy.server.jms

import com.persagy.server.jms.bean.MessageNotice
import com.persagy.server.jms.bean.SBaseNotice
import com.persagy.service.utils.SJsonUtil
import org.springframework.amqp.rabbit.annotation.RabbitHandler
import org.springframework.amqp.rabbit.annotation.RabbitListener
import org.springframework.stereotype.Component
import org.springframework.stereotype.Service

/**
 * 消息
 *
 * @author wx  <zhangweixin@sagacloud.com>
 * @date  2020/10/28 8:43
 */
@Component
@Service
class RabbitMqService: RabbitMqBaseService() {

    /**
     * 接收消息
     *
     * @param
     */
    @RabbitListener(queues = ["queue-adm"])
    @RabbitHandler
    fun receiveMessage(message: String) {
        println("我是监听queue-adm的,仅满足queue-adm的过来 ， $message")
        val messageNotice = SJsonUtil.fromJson(message, MessageNotice::class.java)
        if (messageNotice!=null){
            when(messageNotice.objOrRel){
                    "objects" ->{

                    }
                    "" ->{

                    }
            }
        }

    }


    /**
     * 合并重新
     *
     * @param lastNotice 最后一条消息对象
     * @param notice     当前消息对象
     * @return 是否合并
     */
    override fun mergeNotice(lastNotice: SBaseNotice, notice: SBaseNotice): Boolean {
        // 对象消息合并
        if (notice is MessageNotice) {
            // 如果最后发送对象不是对象消息，则返回false
            val last = lastNotice as? MessageNotice ?: return false
            // 操作不同，对象不同，项目不同的通知不合并
            if (notice.ops != notice.ops || notice.type != last.type || notice.projectId != last.projectId) {
                return false
            }
            // 合并消息
            last.idList.addAll(notice.idList)
            return true
        }
//        else if (notice is RelationNotice) {  // 关系消息合并
//            // TODO: 补 关系类型通知合并代码
//            return true
//        }
        return false
    }



}