afb572f0a8f6822a24af23d46310282923eccb6d.svn-base 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322
  1. package cn.com.goldenwater.dcproj.service.impl.meeting;
  2. import cn.com.goldenwater.dcproj.dao.BisInspAllRlationPersDao;
  3. import cn.com.goldenwater.dcproj.dao.BisInspMeetRoomDao;
  4. import cn.com.goldenwater.dcproj.dao.BisInspOrgBaseDao;
  5. import cn.com.goldenwater.dcproj.dao.BisInspOrgDao;
  6. import cn.com.goldenwater.dcproj.dto.BisInspMeetRoomDto;
  7. import cn.com.goldenwater.dcproj.dto.MeetRoomConfigsSetDto;
  8. import cn.com.goldenwater.dcproj.model.BisInspAllRlationPers;
  9. import cn.com.goldenwater.dcproj.model.BisInspMeetRoom;
  10. import cn.com.goldenwater.dcproj.model.BisInspOrg;
  11. import cn.com.goldenwater.dcproj.model.BisInspOrgBase;
  12. import cn.com.goldenwater.dcproj.param.BisInspMeetRoomParam;
  13. import cn.com.goldenwater.dcproj.param.BisInspOrgBaseParam;
  14. import cn.com.goldenwater.dcproj.param.BisInspOrgParam;
  15. import cn.com.goldenwater.dcproj.service.BisInspMeetRoomService;
  16. import cn.com.goldenwater.core.service.AbstractCrudService;
  17. import cn.com.goldenwater.dcproj.utils.gwxy.MeetData;
  18. import cn.com.goldenwater.dcproj.utils.gwxy.MeetUtil;
  19. import cn.com.goldenwater.id.util.UuidUtil;
  20. import com.github.pagehelper.PageHelper;
  21. import com.github.pagehelper.PageInfo;
  22. import com.xylink.util.HttpUtil;
  23. import com.xylink.util.Result;
  24. import net.sf.json.JSONObject;
  25. import org.slf4j.Logger;
  26. import org.slf4j.LoggerFactory;
  27. import org.springframework.beans.factory.annotation.Autowired;
  28. import org.springframework.beans.factory.annotation.Value;
  29. import org.springframework.stereotype.Service;
  30. import org.springframework.transaction.annotation.Transactional;
  31. import java.io.IOException;
  32. import java.util.*;
  33. /**
  34. * @author lhc
  35. * @date 2019-5-27
  36. */
  37. @Service
  38. @Transactional
  39. public class BisInspMeetRoomServiceImpl extends AbstractCrudService<BisInspMeetRoom, BisInspMeetRoomParam> implements BisInspMeetRoomService {
  40. private Logger logger = LoggerFactory.getLogger(this.getClass());
  41. @Autowired
  42. private BisInspMeetRoomDao bisInspMeetRoomDao;
  43. @Value("${ylink.enterpriseId}")
  44. public String enterpriseId;
  45. @Value("${ylink.token}")
  46. public String token;
  47. @Value("${ylink.ip}")
  48. public String ylinkIp;
  49. @Autowired
  50. private BisInspAllRlationPersDao bisInspAllRlationPersDao;
  51. @Autowired
  52. private BisInspOrgDao bisInspOrgDao;
  53. public BisInspMeetRoomServiceImpl(BisInspMeetRoomDao bisInspMeetRoomDao) {
  54. super(bisInspMeetRoomDao);
  55. this.bisInspMeetRoomDao = bisInspMeetRoomDao;
  56. }
  57. public BisInspMeetRoom addXylink(BisInspMeetRoom bisInspMeetRoom) throws IOException {
  58. Map<String, Object> jsonEntity = new HashMap<>();
  59. jsonEntity.put("meetingName", bisInspMeetRoom.getMeetingName());
  60. if (bisInspMeetRoom.getMaxParticipant() != null) {
  61. jsonEntity.put("maxParticipant", bisInspMeetRoom.getMaxParticipant());
  62. }
  63. jsonEntity.put("requirePassword", !"0".equals(bisInspMeetRoom.getRequirePassword()) );
  64. jsonEntity.put("password", bisInspMeetRoom.getInPassword() == null ? "" : bisInspMeetRoom.getInPassword());
  65. jsonEntity.put("controlPassword", bisInspMeetRoom.getControlPassword());
  66. if (bisInspMeetRoom.getAutoMute() != null) {
  67. jsonEntity.put("autoMute", bisInspMeetRoom.getAutoMute());
  68. }
  69. if (bisInspMeetRoom.getStartTime() != null && bisInspMeetRoom.getEndTime() != null) {
  70. jsonEntity.put("startTime", bisInspMeetRoom.getStartTime().getTime());
  71. jsonEntity.put("endTime", bisInspMeetRoom.getEndTime().getTime());
  72. }
  73. MeetRoomConfigsSetDto meetRoomConfigsDto = new MeetRoomConfigsSetDto();
  74. if (bisInspMeetRoom.getAutoRecord() != null) {
  75. meetRoomConfigsDto.setAutoRecord("0".equals(bisInspMeetRoom.getAutoRecord()) ? false : true);
  76. }
  77. if (bisInspMeetRoom.getSmartMuteperson() != null) {
  78. meetRoomConfigsDto.setSmartMutePerson(bisInspMeetRoom.getSmartMuteperson());
  79. }
  80. if (bisInspMeetRoom.getSmartMuteperson() != null && bisInspMeetRoom.getAutoRecord() != null) {
  81. jsonEntity.put("configs", meetRoomConfigsDto);
  82. }
  83. String json = JSONObject.fromObject(jsonEntity).toString();
  84. String method = "POST";
  85. String reqPath = ylinkIp + "/api/rest/external/v2/create_meeting?enterpriseId=" + enterpriseId;
  86. String requestUriPrefix = ylinkIp + "/api/rest/external/v2/";
  87. //获取签名
  88. String signature = MeetUtil.computeSignature(json, method, token, reqPath, requestUriPrefix);
  89. reqPath += "&signature=" + signature;
  90. MeetData meetData = new MeetData();
  91. Result result = HttpUtil.getResponse(reqPath, "POST", json.toString(), meetData.getClass());
  92. meetData = (MeetData) result.getData();
  93. if (result.isSuccess()) {
  94. bisInspMeetRoom.setMeetingNumber(meetData.getMeetingNumber());
  95. return bisInspMeetRoom;
  96. } else {
  97. return null;
  98. }
  99. }
  100. @Override
  101. public BisInspMeetRoom add(BisInspMeetRoom bisInspMeetRoom) throws IOException {
  102. //首先调用小鱼sdk 创建会议室,成功后,再添加到数据库表里
  103. //调用小鱼sdk
  104. if (bisInspMeetRoom.getMeetingNumber() == null || "".equals(bisInspMeetRoom.getMeetingNumber())) {
  105. Map<String, Object> jsonEntity = new HashMap<>();
  106. jsonEntity.put("meetingName", bisInspMeetRoom.getMeetingName());
  107. if (bisInspMeetRoom.getMaxParticipant() != null) {
  108. jsonEntity.put("maxParticipant", bisInspMeetRoom.getMaxParticipant());
  109. }
  110. jsonEntity.put("requirePassword", "0".equals(bisInspMeetRoom.getRequirePassword()) ? false : true);
  111. jsonEntity.put("password", bisInspMeetRoom.getInPassword() == null ? "" : bisInspMeetRoom.getInPassword());
  112. jsonEntity.put("controlPassword", bisInspMeetRoom.getControlPassword());
  113. if (bisInspMeetRoom.getAutoMute() != null) {
  114. jsonEntity.put("autoMute", bisInspMeetRoom.getAutoMute());
  115. }
  116. if (bisInspMeetRoom.getStartTime() != null && bisInspMeetRoom.getEndTime() != null) {
  117. jsonEntity.put("startTime", bisInspMeetRoom.getStartTime().getTime());
  118. jsonEntity.put("endTime", bisInspMeetRoom.getEndTime().getTime());
  119. }
  120. MeetRoomConfigsSetDto meetRoomConfigsDto = new MeetRoomConfigsSetDto();
  121. if (bisInspMeetRoom.getAutoRecord() != null) {
  122. meetRoomConfigsDto.setAutoRecord("0".equals(bisInspMeetRoom.getAutoRecord()) ? false : true);
  123. }
  124. if (bisInspMeetRoom.getSmartMuteperson() != null) {
  125. meetRoomConfigsDto.setSmartMutePerson(bisInspMeetRoom.getSmartMuteperson());
  126. }
  127. if (bisInspMeetRoom.getSmartMuteperson() != null && bisInspMeetRoom.getAutoRecord() != null) {
  128. jsonEntity.put("configs", meetRoomConfigsDto);
  129. }
  130. String json = JSONObject.fromObject(jsonEntity).toString();
  131. String method = "POST";
  132. String reqPath = ylinkIp + "/api/rest/external/v2/create_meeting?enterpriseId=" + enterpriseId;
  133. String requestUriPrefix = ylinkIp + "/api/rest/external/v2/";
  134. //获取签名
  135. String signature = MeetUtil.computeSignature(json, method, token, reqPath, requestUriPrefix);
  136. reqPath += "&signature=" + signature;
  137. MeetData meetData = new MeetData();
  138. Result result = HttpUtil.getResponse(reqPath, "POST", json.toString(), meetData.getClass());
  139. meetData = (MeetData) result.getData();
  140. if (result.isSuccess()) {
  141. try {
  142. String uuid = UuidUtil.uuid(); // 生成uuid
  143. bisInspMeetRoom.setId(uuid);
  144. bisInspMeetRoom.setIntm(new Date());
  145. bisInspMeetRoom.setUptm(new Date());
  146. bisInspMeetRoom.setMeetingNumber(meetData.getMeetingNumber());
  147. bisInspMeetRoom.setShareUrl(meetData.getShareUrl());
  148. bisInspMeetRoom.setInPassword(meetData.getPassword());
  149. bisInspMeetRoom.setControlPassword(meetData.getControlPassword());
  150. bisInspMeetRoom.setFlagValid("1");
  151. //根据人员获取人员所在机构
  152. BisInspAllRlationPers bisInspAllRlationPers = bisInspAllRlationPersDao.get(bisInspMeetRoom.getPersId());
  153. bisInspMeetRoom.setPersName(bisInspAllRlationPers.getPersName());
  154. bisInspMeetRoom.setOrgNm(bisInspAllRlationPers.getOrgNm());
  155. bisInspMeetRoom.setOrgId(bisInspAllRlationPers.getOrgId());
  156. if (bisInspMeetRoom.getUsOrgId() != null) {
  157. BisInspOrgParam bisInspOrgParam = new BisInspOrgParam();
  158. bisInspOrgParam.setOrgId(bisInspMeetRoom.getUsOrgId());
  159. List<BisInspOrg> bisInspOrgs = bisInspOrgDao.findList(bisInspOrgParam);
  160. if (bisInspOrgs.size() == 1) {
  161. bisInspMeetRoom.setUsOrgNm(bisInspOrgs.get(0).getOrgNm());
  162. }
  163. }
  164. bisInspMeetRoomDao.insert(bisInspMeetRoom);
  165. } catch (Exception ex) {
  166. ex.printStackTrace();
  167. }
  168. } else {
  169. logger.info(String.valueOf(result.getErrorStatus()));
  170. }
  171. } else {
  172. String uuid = UuidUtil.uuid(); // 生成uuid
  173. bisInspMeetRoom.setId(uuid);
  174. bisInspMeetRoom.setIntm(new Date());
  175. bisInspMeetRoom.setUptm(new Date());
  176. bisInspMeetRoom.setMeetingNumber(bisInspMeetRoom.getMeetingNumber());
  177. bisInspMeetRoom.setShareUrl(bisInspMeetRoom.getShareUrl());
  178. bisInspMeetRoom.setInPassword(bisInspMeetRoom.getInPassword());
  179. bisInspMeetRoom.setControlPassword(bisInspMeetRoom.getControlPassword());
  180. bisInspMeetRoom.setFlagValid("1");
  181. //根据人员获取人员所在机构
  182. BisInspAllRlationPers bisInspAllRlationPers = bisInspAllRlationPersDao.get(bisInspMeetRoom.getPersId());
  183. bisInspMeetRoom.setPersName(bisInspAllRlationPers.getPersName());
  184. bisInspMeetRoom.setOrgNm(bisInspAllRlationPers.getOrgNm());
  185. bisInspMeetRoom.setOrgId(bisInspAllRlationPers.getOrgId());
  186. if (bisInspMeetRoom.getUsOrgId() != null) {
  187. BisInspOrgParam bisInspOrgParam = new BisInspOrgParam();
  188. bisInspOrgParam.setOrgId(bisInspMeetRoom.getUsOrgId());
  189. List<BisInspOrg> bisInspOrgs = bisInspOrgDao.findList(bisInspOrgParam);
  190. if (bisInspOrgs.size() == 1) {
  191. bisInspMeetRoom.setUsOrgNm(bisInspOrgs.get(0).getOrgNm());
  192. }
  193. }
  194. bisInspMeetRoomDao.insert(bisInspMeetRoom);
  195. }
  196. return bisInspMeetRoom;
  197. }
  198. @Override
  199. public int del(String id) throws IOException {
  200. String json = "";
  201. BisInspMeetRoom bisInspMeetRoom = bisInspMeetRoomDao.get(id);
  202. if (bisInspMeetRoom != null) {
  203. //调用小鱼sdk 删除会议号
  204. String method = "DELETE";
  205. String reqPath = ylinkIp + "/api/rest/external/v1/meetingInfo/" + bisInspMeetRoom.getMeetingNumber() + "?enterpriseId=" + enterpriseId;
  206. String requestUriPrefix = ylinkIp + "/api/rest/external/v1/";
  207. String signature = MeetUtil.computeSignature(json, method, token, reqPath, requestUriPrefix);
  208. reqPath += "&signature=" + signature;
  209. Result result = HttpUtil.getResponse(reqPath, method, json, null);
  210. if (result.isSuccess()) {
  211. return bisInspMeetRoomDao.delete(bisInspMeetRoom.getId());
  212. } else {
  213. return result.getErrorStatus();
  214. }
  215. } else {
  216. return 6001;
  217. }
  218. }
  219. @Override
  220. public int edit(BisInspMeetRoom bisInspMeetRoom) throws IOException {
  221. Map<String, Object> jsonEntity = new HashMap<>();
  222. jsonEntity.put("meettingRoomName", bisInspMeetRoom.getMeetingName());
  223. if (bisInspMeetRoom.getAutoMute() != null) {
  224. jsonEntity.put("autoMute", bisInspMeetRoom.getAutoMute());
  225. }
  226. if (bisInspMeetRoom.getSmartMuteperson() != null) {
  227. jsonEntity.put("smartMutePerson", bisInspMeetRoom.getSmartMuteperson());
  228. }
  229. jsonEntity.put("autoRecord", bisInspMeetRoom.getAutoRecord() == null ? false : true);
  230. jsonEntity.put("expireTime", bisInspMeetRoom.getEndTime().getTime());
  231. jsonEntity.put("password", bisInspMeetRoom.getInPassword());
  232. jsonEntity.put("meetingControlPwd", bisInspMeetRoom.getControlPassword());
  233. JSONObject json = JSONObject.fromObject(jsonEntity);
  234. String method = "PUT";
  235. String reqPath = ylinkIp + "/api/rest/external/v1/meetingInfo/" + bisInspMeetRoom.getMeetingNumber() + "?enterpriseId=" + enterpriseId;
  236. String requestUriPrefix = ylinkIp + "/api/rest/external/v1/";
  237. String signature = MeetUtil.computeSignature(json.toString(), method, token, reqPath, requestUriPrefix);
  238. reqPath += "&signature=" + signature;
  239. MeetData meetData = new MeetData();
  240. Result result = HttpUtil.getResponse(reqPath, method, json.toString(), meetData.getClass());
  241. if (result.isSuccess()) {
  242. bisInspMeetRoom.setUptm(new Date());
  243. return bisInspMeetRoomDao.update(bisInspMeetRoom);
  244. } else {
  245. return result.getErrorStatus();
  246. }
  247. }
  248. @Override
  249. public PageInfo getRoomByPersId(BisInspMeetRoomParam bisInspMeetRoomParam) throws IOException {
  250. //根据人员获取人员所在机构
  251. String orgId = bisInspAllRlationPersDao.get(bisInspMeetRoomParam.getPersId()).getOrgId();
  252. if ("027".equals(orgId) || "029".equals(orgId) || "041".equals(orgId) || "042".equals(orgId)) {
  253. bisInspMeetRoomParam.setPersId(null);
  254. } else {
  255. bisInspMeetRoomParam.setUsOrgId(orgId);
  256. }
  257. PageHelper.startPage(bisInspMeetRoomParam);
  258. List<BisInspMeetRoomDto> bisInspMeetRooms = bisInspMeetRoomDao.getRoomByPersId(bisInspMeetRoomParam);
  259. PageInfo page = new PageInfo(bisInspMeetRooms);
  260. return page;
  261. }
  262. @Override
  263. public List<BisInspMeetRoomDto> meetingStatus(String callNumber) throws IOException {
  264. String method = "GET";
  265. String json = "";
  266. String reqPath = ylinkIp + "/api/rest/external/v1/meetingInfo/" + enterpriseId + "/meetingRoomInfo?enterpriseId=" + enterpriseId;
  267. String requestUriPrefix = ylinkIp + "/api/rest/external/v1/";
  268. String signature = MeetUtil.computeSignature(json, method, token, reqPath, requestUriPrefix);
  269. reqPath += "&signature=" + signature;
  270. MeetData meetData = new MeetData();
  271. Result result = HttpUtil.getResponse(reqPath, method, json, meetData.getClass());
  272. if (result.isSuccess()) {
  273. return null;
  274. } else {
  275. return null;
  276. }
  277. }
  278. @Override
  279. public int deleteByCode(String meetId) throws IOException {
  280. //调用小鱼sdk 删除会议号
  281. String json = "";
  282. String method = "DELETE";
  283. String reqPath = ylinkIp + "/api/rest/external/v1/meetingInfo/" + meetId + "?enterpriseId=" + enterpriseId;
  284. String requestUriPrefix = ylinkIp + "/api/rest/external/v1/";
  285. String signature = MeetUtil.computeSignature(json, method, token, reqPath, requestUriPrefix);
  286. reqPath += "&signature=" + signature;
  287. Result result = HttpUtil.getResponse(reqPath, method, json, null);
  288. if (result.isSuccess()) {
  289. return result.getErrorStatus();
  290. } else {
  291. return result.getErrorStatus();
  292. }
  293. }
  294. }