123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148 |
- package com.ym.controller;
- import com.alibaba.fastjson.JSON;
- import com.google.common.collect.Lists;
- import com.microsvc.toolkit.middleware.common.http.ImageUtil;
- import com.microsvc.toolkit.middleware.im.ImPluginContext;
- import com.microsvc.toolkit.middleware.im.impl.RongCloudImPlugin;
- import com.microsvc.toolkit.middleware.im.message.ETencentMessage;
- import com.microsvc.toolkit.middleware.im.message.MessageWrapper;
- import com.microsvc.toolkit.middleware.im.message.TencentRequest;
- import com.ym.mec.common.entity.ImMessageDto;
- import com.ym.service.MessageService;
- import io.rong.messages.FileMessage;
- import io.rong.messages.ImgMessage;
- import io.rong.messages.TxtMessage;
- import io.rong.messages.UserInfo;
- import io.rong.models.message.PrivateMessage;
- import io.rong.models.message.RecallMessage;
- import io.rong.models.message.TemplateMessage;
- import lombok.extern.slf4j.Slf4j;
- import org.apache.commons.lang3.StringUtils;
- import org.springframework.beans.BeanUtils;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.web.bind.annotation.RequestBody;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.bind.annotation.RequestMethod;
- import org.springframework.web.bind.annotation.RestController;
- /**
- * Created by weiqinxiao on 2019/2/25.
- */
- @Slf4j
- @RestController
- @RequestMapping("/private")
- public class PrivateController {
- @Autowired
- MessageService messageService;
- @Autowired
- private ImPluginContext imPluginContext;
- @RequestMapping(value = "/send", method = RequestMethod.POST)
- public Object send(@RequestBody ImMessageDto imMessageDto) throws Exception {
- // 消息对象
- MessageWrapper.PrivateMessage build = MessageWrapper.PrivateMessage.builder()
- .senderId(imMessageDto.getSenderId())
- .targetIds(Lists.newArrayList(imMessageDto.getTargetIds()))
- .objectName(imMessageDto.getObjectName())
- //.rongCloueMessage(txtMessage)
- .pushExt("")
- .includeSender(1)
- .cloudCustomData(imMessageDto.getExtra())
- .syncOtherMachine(1) // 1:消息同步到 From_Account 在线终端和漫游上;2:消息不同步至 From_Account
- .build();
- String objectName = imMessageDto.getObjectName();
- if (RongCloudImPlugin.PLUGIN_NAME.equals(imPluginContext.defaultService())) {
- // 融云消息体
- PrivateMessage privateMessage = new PrivateMessage();
- UserInfo userInfo = new UserInfo();
- if(imMessageDto.getUserInfo() != null){
- BeanUtils.copyProperties(imMessageDto.getUserInfo(),userInfo);
- }
- if("RC:ImgMsg".equals(objectName)){
- ImgMessage imgMessage = new ImgMessage(imMessageDto.getMessageContent(),imMessageDto.getExtra(),imMessageDto.getFileUrl());
- imgMessage.setUser(userInfo);
- privateMessage.setContent(imgMessage);
- }else if("RC:FileMsg".equals(objectName)){
- FileMessage imgMessage = new FileMessage(imMessageDto.getFileName(),imMessageDto.getFileSize(),imMessageDto.getFileUrl(),imMessageDto.getExtra());
- privateMessage.setContent(imgMessage);
- }else {
- TxtMessage txtMessage = new TxtMessage(imMessageDto.getMessageContent(),imMessageDto.getExtra());
- txtMessage.setUser(userInfo);
- privateMessage.setContent(txtMessage);
- }
- privateMessage.setTargetId(imMessageDto.getTargetIds());
- privateMessage.setSenderId(imMessageDto.getSenderId());
- privateMessage.setObjectName(imMessageDto.getObjectName());
- privateMessage.setIsIncludeSender(1);
- //messageService.privateSend(privateMessage);
- build.rongCloueMessage(privateMessage.getContent());
- } else {
- // 腾讯云消息体
- if("RC:ImgMsg".equals(objectName)){
- // 图片消息
- ImageUtil.ImageInfo imageReq = ImageUtil.ImageInfo.builder()
- .imgUrl(imMessageDto.getFileUrl())
- .suffix(imMessageDto.getFileUrl().substring(imMessageDto.getFileUrl().lastIndexOf(".") + 1))
- .build();
- // 获取图片基本信息
- ImageUtil.imageToBase64(imageReq);
- // 图片消息
- build.objectName(ETencentMessage.TIMImageElem.name())
- .tencentMessage(TencentRequest.getTIMImageElem(imageReq));
- } else if ("RC:FileMsg".equals(objectName)) {
- // 文件消息
- build.objectName(ETencentMessage.TIMFileElem.name())
- .tencentMessage(TencentRequest.getTIMFileElem(imMessageDto.getFileUrl(), imMessageDto.getFileSize().intValue(), imMessageDto.getFileName()));
- } else {
- // 文本消息
- build.objectName(ETencentMessage.TIMTextElem.name())
- .tencentMessage(TencentRequest.MessageBody.builder()
- .msgType(ETencentMessage.TIMTextElem.name())
- .msgContent(TencentRequest.TextMessageBody.builder().text(imMessageDto.getMessageContent()).build())
- .build());
- // 普通文本消息,若是超链接地址,则需要转换成腾讯云的消息格式
- if (imMessageDto.getMessageContent().startsWith("http") && StringUtils.isBlank(imMessageDto.getExtra())) {
- // 自动填充为拓展消息内容
- build.setCloudCustomData(imMessageDto.getMessageContent());
- }
- }
- }
- String ret = imPluginContext.getPluginService().sendPrivateMessage(build);
- log.info("privateMessage send ret:{}, service={}, content={}", ret, imPluginContext.defaultService(), JSON.toJSONString(build));
- return true;
- }
- /*@RequestMapping(value = "/sendCustom", method = RequestMethod.POST)
- public Object sendCustom(@RequestBody ImGroupMessage imGroupMessage) throws Exception {
- GroupMessage groupMessage = new GroupMessage();
- ImTxtMessage content = (ImTxtMessage)imGroupMessage.getContent();
- CustomMessage customMessage = new CustomMessage(content.getContent(),content.getExtra());
- customMessage.setTYPE(imGroupMessage.getType());
- groupMessage.setContent(customMessage);
- groupMessage.setTargetId(imGroupMessage.getTargetId());
- groupMessage.setSenderId(imGroupMessage.getSenderId());
- groupMessage.setObjectName(imGroupMessage.getType());
- return messageService.groupSend(groupMessage);
- }*/
- @RequestMapping(value = "/recall", method = RequestMethod.POST)
- public Object recall(@RequestBody RecallMessage recallMessage) throws Exception {
- return messageService.privateRecall(recallMessage);
- }
- @RequestMapping(value = "/sendTemplate", method = RequestMethod.POST)
- public Object sendTemplate(@RequestBody TemplateMessage templateMessage) throws Exception {
- return messageService.privateSendTemplate(templateMessage);
- }
- }
|