package cn.api.system;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import cn.facade.pojo.BusMessageDTO;
import cn.facade.pojo.BusTemplateMessageDTO;
import cn.facade.pojo.MessageDTO;
import cn.facade.pojo.TemplateDTO;
import cn.facade.pojo.TemplateMessageDTO;
import cn.service.system.ISysBaseAPI;

import javax.annotation.Resource;

/**
 * 服务化 system模块 对外接口请求类
 */
@RestController
@RequestMapping("/api/sys/api")
public class SysAPICtrl  
{
	@Resource
	private ISysBaseAPI sysBaseService;
	
	  /** 将会议签到信息推动到预览 */
    @GetMapping("/meetingSignWebsocket")
    public void meetingSignWebsocket(@RequestParam("userId")String userId)
    {
    	sysBaseService.meetingSignWebsocket(userId);
    }
	  /**
     * 发送系统消息
     * @param message 使用构造器赋值参数 如果不设置category(消息类型)则默认为2 发送系统消息
     */
    @PostMapping("/sendSysAnnouncement")
    public void sendSysAnnouncement(@RequestBody MessageDTO message){
    	sysBaseService.sendSysAnnouncement(message);
    }
	 /**
     * 根据业务类型busType及业务busId修改消息已读
    */
    @GetMapping("/updateSysAnnounReadFlag")
    public void updateSysAnnounReadFlag(@RequestParam("busType") String busType, @RequestParam("busId")String busId){
    	sysBaseService.updateSysAnnounReadFlag(busType, busId);
    }
	/**
     * 发送消息 附带业务参数
     * @param message 使用构造器赋值参数
     */
    @PostMapping("/sendBusAnnouncement")
    public void sendBusAnnouncement(@RequestBody BusMessageDTO message){
    	sysBaseService.sendBusAnnouncement(message);
    }

    /**
     * 通过模板发送消息
     * @param message 使用构造器赋值参数
     */
    @PostMapping("/sendTemplateAnnouncement")
    public void sendTemplateAnnouncement(@RequestBody TemplateMessageDTO message){
    	sysBaseService.sendTemplateAnnouncement(message);
    }

    /**
     * 通过模板发送消息 附带业务参数
     * @param message 使用构造器赋值参数
     */
    @PostMapping("/sendBusTemplateAnnouncement")
    public void sendBusTemplateAnnouncement(@RequestBody BusTemplateMessageDTO message){
    	sysBaseService.sendBusTemplateAnnouncement(message);
    }

    /**通过消息中心模板，生成推送内容*/
    @PostMapping("/parseTemplateByCode")
    public String parseTemplateByCode(@RequestBody TemplateDTO templateDTO){
        return sysBaseService.parseTemplateByCode(templateDTO);
    }

}
