a34a919436199c4ac43834b1fa11b687fca4f69e.svn-base 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231
  1. package cn.com.goldenwater.dcproj.service.impl.meeting;
  2. import cn.com.goldenwater.dcproj.dao.BisInspAllRlationPersDao;
  3. import cn.com.goldenwater.dcproj.dao.BisInspMeetDiscussDao;
  4. import cn.com.goldenwater.dcproj.dao.BisInspMeetDiscussPersDao;
  5. import cn.com.goldenwater.dcproj.dao.BisInspMeetMntsSmsDao;
  6. import cn.com.goldenwater.dcproj.model.*;
  7. import cn.com.goldenwater.dcproj.param.BisInspMeetDiscussParam;
  8. import cn.com.goldenwater.dcproj.param.BisInspMeetDiscussPersParam;
  9. import cn.com.goldenwater.dcproj.param.DeviceList;
  10. import cn.com.goldenwater.dcproj.service.BisInspMeetDiscussService;
  11. import cn.com.goldenwater.core.service.AbstractCrudService;
  12. import cn.com.goldenwater.dcproj.utils.HttpClientUtils;
  13. import cn.com.goldenwater.dcproj.utils.gwxy.MeetUtil;
  14. import cn.com.goldenwater.dcproj.utils.gwxy.MeetingReminders;
  15. import cn.com.goldenwater.id.util.UuidUtil;
  16. import com.xylink.util.HttpUtil;
  17. import com.xylink.util.Result;
  18. import net.sf.json.JSONObject;
  19. import org.springframework.beans.factory.annotation.Autowired;
  20. import org.springframework.beans.factory.annotation.Value;
  21. import org.springframework.stereotype.Service;
  22. import org.springframework.transaction.annotation.Transactional;
  23. import java.io.IOException;
  24. import java.util.*;
  25. /**
  26. * @author lhc
  27. * @date 2019-5-30
  28. */
  29. @Service
  30. @Transactional
  31. public class BisInspMeetDiscussServiceImpl extends AbstractCrudService<BisInspMeetDiscuss, BisInspMeetDiscussParam> implements BisInspMeetDiscussService {
  32. @Autowired
  33. private BisInspMeetDiscussDao bisInspMeetDiscussDao;
  34. @Autowired
  35. private BisInspAllRlationPersDao bisInspAllRlationPersDao;
  36. @Autowired
  37. private BisInspMeetDiscussPersDao bisInspMeetDiscussPersDao;
  38. @Autowired
  39. private BisInspMeetMntsSmsDao bisInspMeetMntsSmsDao;
  40. @Value("${ylink.enterpriseId}")
  41. public String enterpriseId;
  42. @Value("${ylink.token}")
  43. public String token;
  44. @Value("${ylink.ip}")
  45. public String ylinkIp;
  46. @Value("${api.key}")
  47. private String apiKey;
  48. @Value("${api.url}")
  49. private String apiUrl;
  50. @Value("${api.secrect}")
  51. private String apiSecrect;
  52. public BisInspMeetDiscussServiceImpl(BisInspMeetDiscussDao bisInspMeetDiscussDao) {
  53. super(bisInspMeetDiscussDao);
  54. this.bisInspMeetDiscussDao = bisInspMeetDiscussDao;
  55. }
  56. @Autowired
  57. BisInspMeetRoomServiceImpl bisInspMeetRoomService;
  58. /**
  59. * 根据名称创建1年的会议号,返回会议号
  60. *
  61. * @param name 会议室名称
  62. * @return
  63. */
  64. public BisInspMeetRoom createMeetNumber(String name, String persId) throws IOException {
  65. Date startTime = new Date();
  66. Date endTime = new Date();
  67. Calendar cal = Calendar.getInstance();
  68. cal.setTime(endTime);//设置起时间
  69. cal.add(Calendar.YEAR, 1);//增加一年
  70. endTime = cal.getTime();
  71. BisInspMeetRoom bisInspMeetRoom = new BisInspMeetRoom();
  72. bisInspMeetRoom.setMeetingName(name);
  73. bisInspMeetRoom.setStartTime(startTime);
  74. bisInspMeetRoom.setEndTime(endTime);
  75. bisInspMeetRoom.setRequirePassword("0");
  76. bisInspMeetRoom.setControlPassword("63204617");
  77. bisInspMeetRoom.setPersId(persId);
  78. return bisInspMeetRoomService.addXylink(bisInspMeetRoom);
  79. }
  80. @Override
  81. public int add(BisInspMeetDiscuss bisInspMeetDiscuss) throws IOException {
  82. //创建讨论组会议号
  83. String meetNumber = createMeetNumber(bisInspMeetDiscuss.getDisNm(), bisInspMeetDiscuss.getPersId()).getMeetingNumber();
  84. bisInspMeetDiscuss.setMeetingNumber(meetNumber);
  85. String uuid = UuidUtil.uuid(); // 生成uuid
  86. bisInspMeetDiscuss.setId(uuid);
  87. bisInspMeetDiscuss.setFlagValid("1");
  88. bisInspMeetDiscuss.setIntm(new Date());
  89. bisInspMeetDiscuss.setUptm(new Date());
  90. bisInspMeetDiscuss.setFlagValid("1");
  91. BisInspAllRlationPers bisInspAllRlationPers1 = bisInspAllRlationPersDao.get(bisInspMeetDiscuss.getPersId());
  92. bisInspMeetDiscuss.setPersName(bisInspAllRlationPers1.getPersName());
  93. bisInspMeetDiscuss.setOrgId(bisInspAllRlationPers1.getOrgId());
  94. bisInspMeetDiscuss.setOrgNm(bisInspAllRlationPers1.getOrgNm());
  95. int i = bisInspMeetDiscussDao.insert(bisInspMeetDiscuss);
  96. //循环添加讨论组人员
  97. List<BisInspMeetDiscussPers> bisInspMeetDiscussPers = bisInspMeetDiscuss.getBisInspMeetDiscussPersList();
  98. for (BisInspMeetDiscussPers item : bisInspMeetDiscussPers) {
  99. String persIduuid = UuidUtil.uuid(); // 生成uuid
  100. //根据人员id获取姓名及小鱼账号
  101. BisInspAllRlationPers bisInspAllRlationPers = bisInspAllRlationPersDao.get(item.getPersId());
  102. item.setPersName(bisInspAllRlationPers.getPersName());
  103. item.setImgurl(bisInspAllRlationPers.getImgurl());
  104. item.setIntm(new Date());
  105. item.setUptm(new Date());
  106. item.setDisId(uuid);
  107. item.setId(persIduuid);
  108. item.setFlagValid("1");
  109. item.setCallnumber(bisInspAllRlationPers.getMobilenumb());
  110. bisInspMeetDiscussPersDao.insert(item);
  111. }
  112. return i;
  113. }
  114. @Override
  115. public int del(String id) throws IOException {
  116. //先删除讨论组下的人员 再删除讨论组
  117. BisInspMeetDiscussPersParam bisInspMeetDiscussPersParam = new BisInspMeetDiscussPersParam();
  118. bisInspMeetDiscussPersParam.setDisId(id);
  119. List<BisInspMeetDiscussPers> bisInspMeetDiscussPers = bisInspMeetDiscussPersDao.findList(bisInspMeetDiscussPersParam);
  120. for (BisInspMeetDiscussPers item : bisInspMeetDiscussPers) {
  121. bisInspMeetDiscussPersDao.delete(item.getId());
  122. }
  123. //根据讨论组删除会议号
  124. BisInspMeetDiscuss bisInspMeetDiscuss = bisInspMeetDiscussDao.get(id);
  125. if (delRoom(bisInspMeetDiscuss.getMeetingNumber()) == 200) {
  126. return bisInspMeetDiscussDao.delete(id);
  127. } else {
  128. return 0;
  129. }
  130. }
  131. public int delRoom(String meetingNumber) throws IOException {
  132. String json = "";
  133. //调用小鱼sdk 删除会议号
  134. String method = "DELETE";
  135. String reqPath = ylinkIp + "/api/rest/external/v1/meetingInfo/" + meetingNumber + "?enterpriseId=" + enterpriseId;
  136. String requestUriPrefix = ylinkIp + "/api/rest/external/v1/";
  137. String signature = MeetUtil.computeSignature(json, method, token, reqPath, requestUriPrefix);
  138. reqPath += "&signature=" + signature;
  139. Result result = HttpUtil.getResponse(reqPath, method, json, null);
  140. return result.getErrorStatus();
  141. }
  142. @Override
  143. public int invitation(String id) throws IOException {
  144. BisInspMeetDiscussPersParam bisInspMeetDiscussPersParam = new BisInspMeetDiscussPersParam();
  145. bisInspMeetDiscussPersParam.setDisId(id);
  146. List<BisInspMeetDiscussPers> bisInspMeetDisCussPers = bisInspMeetDiscussPersDao.findList(bisInspMeetDiscussPersParam);
  147. BisInspMeetDiscuss bisInspMeetDiscuss = bisInspMeetDiscussDao.get(id);
  148. List<DeviceList> deviceLists = new ArrayList<>();
  149. for (int i = 0; i < bisInspMeetDisCussPers.size(); i++) {
  150. DeviceList deviceList = new DeviceList();
  151. deviceList.setNumber(bisInspMeetDisCussPers.get(i).getCallnumber());
  152. deviceLists.add(deviceList);
  153. }
  154. //调用小鱼邀请入会,采用临时会议号
  155. List nmber = new ArrayList<String>();
  156. Map<String, Object> jsonEntity = new HashMap<>();
  157. jsonEntity.put("callNumber", bisInspMeetDiscuss.getMeetingNumber());
  158. jsonEntity.put("deviceList", deviceLists);
  159. JSONObject json = JSONObject.fromObject(jsonEntity);
  160. String method = "PUT";
  161. String reqPath = ylinkIp + "/api/rest/external/v1/conferenceControl/invitation?enterpriseId=" + enterpriseId;
  162. String requestUriPrefix = ylinkIp + "/api/rest/external/v1/";
  163. String signature = MeetUtil.computeSignature(json.toString(), method, token, reqPath, requestUriPrefix);
  164. reqPath += "&signature=" + signature;
  165. MeetingReminders meetingReminders = new MeetingReminders();
  166. Result result = HttpUtil.getResponse(reqPath, method, json.toString(), meetingReminders.getClass());
  167. if (result.isSuccess()) {
  168. return 0;
  169. } else {
  170. return result.getErrorStatus();
  171. }
  172. }
  173. @Override
  174. public int sendSms(String id) throws Exception {
  175. BisInspMeetDiscuss bisInspMeetDiscuss = bisInspMeetDiscussDao.get(id);
  176. BisInspMeetDiscussPersParam bisInspMeetDiscussPersParam = new BisInspMeetDiscussPersParam();
  177. bisInspMeetDiscussPersParam.setDisId(id);
  178. List<BisInspMeetDiscussPers> bisInspMeetDiscussPers = bisInspMeetDiscussPersDao.findList(bisInspMeetDiscussPersParam);
  179. for (BisInspMeetDiscussPers item : bisInspMeetDiscussPers) {
  180. //发短信
  181. Map<String, String> params = new HashMap<String, String>();
  182. params.put("apiKey", apiKey);
  183. params.put("apiSecrect", apiSecrect);
  184. params.put("templateParam", "{\"depnm\":\"" + bisInspMeetDiscuss.getDisNm() + "\"}");
  185. params.put("signName", "金水云平台");
  186. params.put("templeteCode", "SMS_166778623");
  187. params.put("mobile", item.getCallnumber());
  188. String content = HttpClientUtils.simplePostInvoke(apiUrl+"/gateway/api/sms/send", params);
  189. BisInspMeetMntsSms bisInspMeetMntsSms = new BisInspMeetMntsSms();
  190. bisInspMeetMntsSms.setId(UuidUtil.uuid());
  191. bisInspMeetMntsSms.setFlagValid("1");
  192. bisInspMeetMntsSms.setMeetRecodeId(id);
  193. bisInspMeetMntsSms.setIntm(new Date());
  194. bisInspMeetMntsSms.setUptm(new Date());
  195. bisInspMeetMntsSms.setPersId(item.getPersId());
  196. bisInspMeetMntsSms.setSms(params.get("templateParam").toString());
  197. bisInspMeetMntsSmsDao.insert(bisInspMeetMntsSms);
  198. }
  199. return 0;
  200. }
  201. @Override
  202. public List<BisInspMeetDiscuss> findDiscuss(String persId) {
  203. return bisInspMeetDiscussDao.findDiscuss(persId);
  204. }
  205. @Override
  206. public int edit(BisInspMeetDiscuss bisInspMeetDiscuss) {
  207. bisInspMeetDiscuss.setUptm(new Date());
  208. return bisInspMeetDiscussDao.update(bisInspMeetDiscuss);
  209. }
  210. }