252535409 2 years ago
parent 3ce13a024c
commit 02560b4696

@ -2,6 +2,7 @@ package org.jeecg.modules.ai.service;
import org.jeecg.modules.ai.entity.Room;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.extension.service.IService;
/**
@ -16,6 +17,6 @@ public interface IRoomService extends IService<Room> {
*
* @return
*/
public String saveRoom(String userId);
public JSONObject saveRoom(String userId);
}

@ -1,12 +1,15 @@
package org.jeecg.modules.ai.service.impl;
import java.io.StringReader;
import java.net.URL;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import javax.annotation.Resource;
import javax.xml.namespace.QName;
import javax.xml.ws.Service;
import org.dom4j.Document;
import org.dom4j.Element;
@ -20,9 +23,9 @@ import org.jeecg.modules.system.entity.SysAnnouncement;
import org.jeecg.modules.system.entity.SysAnnouncementSend;
import org.jeecg.modules.system.service.ISysAnnouncementSendService;
import org.jeecg.modules.system.service.ISysAnnouncementService;
import org.jeecg.modules.system.util.WebServiceUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.dynamic.datasource.annotation.DS;
@ -37,18 +40,20 @@ import cn.hutool.http.webservice.SoapUtil;
* @Date: 2023-11-30
* @Version: V1.0
*/
@Service
@org.springframework.stereotype.Service
@DS("multi-datasource1")
public class RoomServiceImpl extends ServiceImpl<RoomMapper, Room> implements IRoomService {
@Resource
private RoomMapper roomMapper;
@Value(value = "${openmeetings_url}")
private static String OPENMEETINGS_URL;
/**
*
* @return
*/
public String saveRoom(String userId) {
public JSONObject saveRoom(String userId) {
Room room = new Room();
room.setName("远程协助"+userId);
room.setDeleted(0);
@ -71,53 +76,11 @@ public class RoomServiceImpl extends ServiceImpl<RoomMapper, Room> implements IR
room.setChatModerated(0);
roomMapper.insert(room);
//生成房间地址
//请求地址
String soapUrl = "http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl";
HashMap<String, Object> map = new HashMap<>();
map.put("theCityName", "武汉");
SoapClient soapClient = SoapClient.create(soapUrl)
//请求方法,命名空间
.setMethod("web:getWeatherbyCityName", "http://WebXml.com.cn/")
.setParams(map);
String sendSoap = soapClient.send(true);
System.out.println(sendSoap);
Map<String, String> map1 = new HashMap<String, String>();
Map<String, String> soapMap = XmlMap(sendSoap, map1);
System.out.println(JSONObject.toJSONString(soapMap));
String roomUrl = "";
return roomUrl;
String result = WebServiceUtil.send("请求人", room.getId());
String roomUrl = OPENMEETINGS_URL + JSONObject.parseObject(result).getString("message");
JSONObject json = new JSONObject();
json.put("roomUrl", roomUrl);
json.put("roomId", room.getId());
return json;
}
public static Map<String, String> XmlMap(String xml, Map<String, String> map) {
try {
SAXReader reader = new SAXReader();
Document doc = reader.read(new StringReader(xml));
Element root = doc.getRootElement();
String path = "";
if (map.containsKey(root.getName().trim())) {
path = map.get(root.getName().trim());
map.remove(root.getName().trim());
}
for (Iterator i = root.elementIterator(); i.hasNext(); ) {
Element element = (Element) i.next();
if (element.isTextOnly()) {
if (path.length() > 0) {
map.put(path + element.getName().trim(), element.getTextTrim());
} else {
map.put(element.getName().trim(), element.getTextTrim());
}
} else {
map.put(element.getName().trim(), path + element.getName().trim() + ".");
XmlMap(element.asXML(), map);
}
}
} catch (Exception e) {
e.printStackTrace();
}
return map;
}
}

@ -32,6 +32,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
@ -152,10 +153,10 @@ public class AiAPIController {
*/
@GetMapping(value = "/createRoom")
public Result<?> createRoom(@RequestParam(name = "userId", required = true) String userId) {
String roomUrl = iRoomService.saveRoom(userId);
JSONObject json = iRoomService.saveRoom(userId);
//发送系统消息
iSysAnnouncementService.saveRoomAnnouncement(roomUrl);
return Result.OK(roomUrl);
iSysAnnouncementService.saveRoomAnnouncement(json.getLong("roomId"));
return Result.OK(json.getString("roomUrl"));
}
/**

@ -22,5 +22,5 @@ public interface ISysAnnouncementService extends IService<SysAnnouncement> {
public Page<SysAnnouncement> querySysCementPageByUserId(Page<SysAnnouncement> page,String userId,String msgCategory);
public boolean saveRoomAnnouncement(String roomUrl);
public boolean saveRoomAnnouncement(Long roomId);
}

@ -13,6 +13,7 @@ import org.jeecg.modules.system.entity.SysAnnouncementSend;
import org.jeecg.modules.system.mapper.SysAnnouncementMapper;
import org.jeecg.modules.system.mapper.SysAnnouncementSendMapper;
import org.jeecg.modules.system.service.ISysAnnouncementService;
import org.jeecg.modules.system.util.WebServiceUtil;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@ -42,6 +43,8 @@ public class SysAnnouncementServiceImpl extends ServiceImpl<SysAnnouncementMappe
private String messageReceiveId;
@Resource
private WebSocket webSocket;
@Value(value = "${openmeetings_url}")
private static String OPENMEETINGS_URL;
@Transactional
@Override
@ -126,10 +129,14 @@ public class SysAnnouncementServiceImpl extends ServiceImpl<SysAnnouncementMappe
}
@Override
public boolean saveRoomAnnouncement(String roomUrl) {
public boolean saveRoomAnnouncement(Long roomId) {
//生成房间地址
String result = WebServiceUtil.send("协助人", roomId);
String roomUrl = OPENMEETINGS_URL + JSONObject.parseObject(result).getString("message");
SysAnnouncement sysAnnouncement = new SysAnnouncement();
sysAnnouncement.setTitile("远程协助请求");
sysAnnouncement.setMsgContent("有用户请求远程协助,请登录:"+roomUrl+",密码是111111");
sysAnnouncement.setMsgContent("有用户请求远程协助,请登录:"+roomUrl);
sysAnnouncement.setSender("admin");
sysAnnouncement.setMsgCategory("2");
sysAnnouncement.setMsgType("USER");

@ -0,0 +1,51 @@
package org.jeecg.modules.system.util;
import org.apache.cxf.endpoint.Client;
import org.apache.cxf.endpoint.Endpoint;
import org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory;
import org.apache.cxf.service.model.BindingInfo;
import org.apache.cxf.service.model.BindingOperationInfo;
import com.alibaba.fastjson.JSONObject;
import java.util.HashMap;
import javax.xml.namespace.QName;
public class TestCase {
public static void main(String[] args) {
//wsdl地址
String url = "http://gxb.v1.idcfengye.com/openmeetings/services/ApiRoomService?wsdl";
//命名空间
String namespace = "http://gxb.v1.idcfengye.com";
//方法名
String methodName = "getRoomUrl";
JaxWsDynamicClientFactory factory = JaxWsDynamicClientFactory.newInstance();
Client client = factory.createClient(url);
Endpoint endpoint = client.getEndpoint();
QName opName = new QName(namespace, methodName);
BindingInfo bindingInfo = endpoint.getEndpointInfo().getBinding();
if (bindingInfo.getOperation(opName) == null) {
for (BindingOperationInfo operationInfo : bindingInfo.getOperations()) {
if (methodName.equals(operationInfo.getName().getLocalPart())) {
opName = operationInfo.getName();
break;
}
}
}
try {
Object[] objects = client.invoke(opName, "admin",11L);
Object object = objects[0];
String resultMsg = JSONObject.toJSONString(object) ;
System.out.println("获取返回结果 " + resultMsg);
} catch (java.lang.Exception e) {
e.printStackTrace();
System.out.println("异常信息 " + e.getMessage());
}
}
}

@ -0,0 +1,54 @@
package org.jeecg.modules.system.util;
import javax.xml.namespace.QName;
import org.apache.cxf.endpoint.Client;
import org.apache.cxf.endpoint.Endpoint;
import org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory;
import org.apache.cxf.service.model.BindingInfo;
import org.apache.cxf.service.model.BindingOperationInfo;
import com.alibaba.fastjson.JSONObject;
public class WebServiceUtil {
/**
* openmeeting
* @param username
* @param roomId
* @return
*/
public static String send(String username,Long roomId) {
//wsdl地址
String url = "http://gxb.v1.idcfengye.com/openmeetings/services/ApiRoomService?wsdl";
//命名空间
String namespace = "http://gxb.v1.idcfengye.com";
//方法名
String methodName = "getRoomUrl";
JaxWsDynamicClientFactory factory = JaxWsDynamicClientFactory.newInstance();
Client client = factory.createClient(url);
Endpoint endpoint = client.getEndpoint();
QName opName = new QName(namespace, methodName);
BindingInfo bindingInfo = endpoint.getEndpointInfo().getBinding();
if (bindingInfo.getOperation(opName) == null) {
for (BindingOperationInfo operationInfo : bindingInfo.getOperations()) {
if (methodName.equals(operationInfo.getName().getLocalPart())) {
opName = operationInfo.getName();
break;
}
}
}
try {
Object[] objects = client.invoke(opName, username,roomId);
Object object = objects[0];
String resultMsg = JSONObject.toJSONString(object);
return resultMsg;
} catch (java.lang.Exception e) {
e.printStackTrace();
System.out.println("异常信息 " + e.getMessage());
}
return null;
}
}

@ -261,3 +261,4 @@ aliyun:
accessKey: 123
accessKeySecret: 456
message_receive_id: 1000000
openmeetings_url: http://gxb.v1.idcfengye.com/openmeetings/hash?secure=
Loading…
Cancel
Save