174f7f524ea5ec335c95a4437c8cb946a3c7eac5.svn-base 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310
  1. package cn.com.goldenwater.dcproj.service.impl.meeting;
  2. import cn.com.goldenwater.dcproj.dao.BisInspAllRlationPersDao;
  3. import cn.com.goldenwater.dcproj.dao.BisInspMeetMntsCustomsDao;
  4. import cn.com.goldenwater.dcproj.dao.BisInspMeetMntsSmsDao;
  5. import cn.com.goldenwater.dcproj.dao.BisInspMeetRecodeDao;
  6. import cn.com.goldenwater.dcproj.model.*;
  7. import cn.com.goldenwater.dcproj.param.BisInspMeetMntsCustomsParam;
  8. import cn.com.goldenwater.dcproj.param.BisInspMeetRecodeParam;
  9. import cn.com.goldenwater.dcproj.service.BisInspMeetRecodeService;
  10. import cn.com.goldenwater.core.service.AbstractCrudService;
  11. import cn.com.goldenwater.dcproj.utils.HttpClientUtils;
  12. import cn.com.goldenwater.dcproj.utils.gwxy.MeetData;
  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.github.pagehelper.PageHelper;
  17. import com.github.pagehelper.PageInfo;
  18. import com.xylink.util.HttpUtil;
  19. import com.xylink.util.Result;
  20. import net.sf.json.JSONObject;
  21. import org.springframework.beans.factory.annotation.Autowired;
  22. import org.springframework.beans.factory.annotation.Value;
  23. import org.springframework.stereotype.Service;
  24. import org.springframework.transaction.annotation.Transactional;
  25. import java.io.IOException;
  26. import java.text.SimpleDateFormat;
  27. import java.util.*;
  28. /**
  29. * @author lhc
  30. * @date 2019-5-27
  31. */
  32. @Service
  33. @Transactional
  34. public class BisInspMeetRecodeServiceImpl extends AbstractCrudService<BisInspMeetRecode, BisInspMeetRecodeParam> implements BisInspMeetRecodeService {
  35. @Autowired
  36. private BisInspMeetRecodeDao bisInspMeetRecodeDao;
  37. @Value("${ylink.enterpriseId}")
  38. public String enterpriseId;
  39. @Value("${ylink.token}")
  40. public String token;
  41. @Value("${ylink.ip}")
  42. public String ylinkIp;
  43. @Autowired
  44. private BisInspAllRlationPersDao bisInspAllRlationPersDao;
  45. @Autowired
  46. private BisInspMeetMntsCustomsDao bisInspMeetMntsCustomsDao;
  47. @Value("${api.key}")
  48. private String apiKey;
  49. @Value("${api.url}")
  50. private String apiUrl;
  51. @Value("${api.secrect}")
  52. private String apiSecrect;
  53. @Autowired
  54. private BisInspMeetMntsSmsDao bisInspMeetMntsSmsDao;
  55. public BisInspMeetRecodeServiceImpl(BisInspMeetRecodeDao bisInspMeetRecodeDao) {
  56. super(bisInspMeetRecodeDao);
  57. this.bisInspMeetRecodeDao = bisInspMeetRecodeDao;
  58. }
  59. @Override
  60. public int add(BisInspMeetRecode bisInspMeetRecode) throws IOException {
  61. int effrow = 0;
  62. //添加到小鱼sdk
  63. String uuid = UuidUtil.uuid(); // 生成uuid
  64. bisInspMeetRecode.setId(uuid);
  65. Map<String, Object> jsonEntity = new HashMap<>();
  66. jsonEntity.put("title", bisInspMeetRecode.getTitle());
  67. jsonEntity.put("startTime", bisInspMeetRecode.getStartTime().getTime());
  68. jsonEntity.put("endTime", bisInspMeetRecode.getEndTime().getTime());
  69. List<String> phones = new ArrayList<>();
  70. for (int i = 0; i < bisInspMeetRecode.getParticipantsList().size(); i++) {
  71. //提取参会人员的手机号信息
  72. BisInspAllRlationPers bisInspAllRlationPers = bisInspAllRlationPersDao.get(bisInspMeetRecode.getParticipantsList().get(i).getPersId());
  73. bisInspMeetRecode.getParticipantsList().get(i).setPersName(bisInspAllRlationPers.getPersName());
  74. bisInspMeetRecode.getParticipantsList().get(i).setMeetRecodeId(uuid);
  75. bisInspMeetRecode.getParticipantsList().get(i).setFlagValid("1");
  76. bisInspMeetRecode.getParticipantsList().get(i).setIntm(new Date());
  77. bisInspMeetRecode.getParticipantsList().get(i).setUptm(new Date());
  78. String phone = bisInspAllRlationPers.getMobilenumb();
  79. bisInspMeetRecode.getParticipantsList().get(i).setCallnumber(phone);
  80. phones.add(phone);
  81. }
  82. if (phones.size() > 0) {
  83. String participants = org.apache.commons.lang3.StringUtils.join(phones, ",");
  84. jsonEntity.put("participants", phones);
  85. bisInspMeetRecode.setParticipants(participants);
  86. }
  87. jsonEntity.put("address", bisInspMeetRecode.getAddress());
  88. jsonEntity.put("details", bisInspMeetRecode.getDetails());
  89. jsonEntity.put("autoInvite", bisInspMeetRecode.getAutoinvite());
  90. jsonEntity.put("password", bisInspMeetRecode.getPassword());
  91. jsonEntity.put("conferenceControlPassword", bisInspMeetRecode.getControlPassword());
  92. jsonEntity.put("meetingRoomType", bisInspMeetRecode.getMeetingroomtype());
  93. jsonEntity.put("conferenceNumber", bisInspMeetRecode.getConferencenumber());
  94. jsonEntity.put("autoRecord", bisInspMeetRecode.getAutorecord());
  95. if (bisInspMeetRecode.getMainimage() != null) {
  96. jsonEntity.put("mainImage", bisInspMeetRecode.getMainimage());
  97. }
  98. JSONObject json = JSONObject.fromObject(jsonEntity);
  99. String method = "POST";
  100. String reqPath = ylinkIp + "/api/rest/external/v1/meetingreminders?enterpriseId=" + enterpriseId;
  101. String requestUriPrefix = ylinkIp + "/api/rest/external/v1/";
  102. String signature = MeetUtil.computeSignature(json.toString(), method, token, reqPath, requestUriPrefix);
  103. reqPath += "&signature=" + signature;
  104. MeetingReminders meetingReminders = new MeetingReminders();
  105. Result result = HttpUtil.getResponse(reqPath, method, json.toString(), meetingReminders.getClass());
  106. if (result.isSuccess()) {
  107. meetingReminders = (MeetingReminders) result.getData();
  108. bisInspMeetRecode.setMeetingId(meetingReminders.getMeetingId());
  109. bisInspMeetRecode.setConferencenumber(meetingReminders.getMeetingRoomNumber());
  110. bisInspMeetRecode.setIntm(new Date());
  111. bisInspMeetRecode.setUptm(new Date());
  112. bisInspMeetRecode.setFlagValid("1");
  113. bisInspMeetRecode.setSms("0");
  114. BisInspAllRlationPers bisInspAllRlationPers = bisInspAllRlationPersDao.get(bisInspMeetRecode.getPersId());
  115. bisInspMeetRecode.setPersName(bisInspAllRlationPers.getPersName());
  116. bisInspMeetRecode.setOrgId(bisInspAllRlationPers.getOrgId());
  117. bisInspMeetRecode.setOrgNm(bisInspAllRlationPers.getOrgNm());
  118. BisInspAllRlationPers bisInspAllRlationPersControl = bisInspAllRlationPersDao.get(bisInspMeetRecode.getControlPersId());
  119. bisInspMeetRecode.setControlPersName(bisInspAllRlationPersControl.getPersName());
  120. effrow = bisInspMeetRecodeDao.insert(bisInspMeetRecode);
  121. //插入参会人员信息
  122. for (BisInspMeetMntsCustoms item : bisInspMeetRecode.getParticipantsList()) {
  123. item.setId(UuidUtil.uuid());
  124. effrow = bisInspMeetMntsCustomsDao.insert(item);
  125. }
  126. return effrow;
  127. } else {
  128. return result.getErrorStatus();
  129. }
  130. }
  131. @Override
  132. public int edit(BisInspMeetRecode bisInspMeetRecode) throws IOException {
  133. int effrow;
  134. BisInspMeetRecode bisInspMeetRecode1 = bisInspMeetRecodeDao.get(bisInspMeetRecode.getId());
  135. Map<String, Object> jsonEntity = new HashMap<>();
  136. jsonEntity.put("title", bisInspMeetRecode.getTitle());
  137. jsonEntity.put("startTime", bisInspMeetRecode.getStartTime().getTime());
  138. jsonEntity.put("endTime", bisInspMeetRecode.getEndTime().getTime());
  139. List<String> phones = new ArrayList<>();
  140. for (int i = 0; i < bisInspMeetRecode.getParticipantsList().size(); i++) {
  141. //提取参会人员的手机号信息
  142. BisInspAllRlationPers bisInspAllRlationPers = bisInspAllRlationPersDao.get(bisInspMeetRecode.getParticipantsList().get(i).getPersId());
  143. bisInspMeetRecode.getParticipantsList().get(i).setPersName(bisInspAllRlationPers.getPersName());
  144. bisInspMeetRecode.getParticipantsList().get(i).setMeetRecodeId(bisInspMeetRecode.getId());
  145. bisInspMeetRecode.getParticipantsList().get(i).setFlagValid("1");
  146. bisInspMeetRecode.getParticipantsList().get(i).setIntm(new Date());
  147. bisInspMeetRecode.getParticipantsList().get(i).setUptm(new Date());
  148. String phone = bisInspAllRlationPers.getMobilenumb();
  149. bisInspMeetRecode.getParticipantsList().get(i).setCallnumber(phone);
  150. phones.add(phone);
  151. }
  152. if (phones.size() > 0) {
  153. String participants = org.apache.commons.lang3.StringUtils.join(phones, ",");
  154. jsonEntity.put("participants", phones);
  155. bisInspMeetRecode.setParticipants(participants);
  156. }
  157. if (bisInspMeetRecode.getConferencenumber() != null) {
  158. jsonEntity.put("conferenceNumber", bisInspMeetRecode.getConferencenumber());
  159. }
  160. jsonEntity.put("address", bisInspMeetRecode.getAddress());
  161. jsonEntity.put("details", bisInspMeetRecode.getDetails());
  162. jsonEntity.put("autoInvite", bisInspMeetRecode.getAutoinvite());
  163. if (bisInspMeetRecode.getMainimage() != null) {
  164. jsonEntity.put("mainImage", bisInspMeetRecode.getMainimage());
  165. }
  166. if (bisInspMeetRecode.getParticipantsList() != null) {
  167. bisInspMeetRecode.setParticipants(org.apache.commons.lang3.StringUtils.join(phones, ","));
  168. }
  169. JSONObject json = JSONObject.fromObject(jsonEntity);
  170. String method = "PUT";
  171. String reqPath = ylinkIp + "/api/rest/external/v1/meetingreminders/" + bisInspMeetRecode1.getMeetingId() + "?enterpriseId=" + enterpriseId;
  172. String requestUriPrefix = ylinkIp + "/api/rest/external/v1/";
  173. String signature = MeetUtil.computeSignature(json.toString(), method, token, reqPath, requestUriPrefix);
  174. reqPath += "&signature=" + signature;
  175. MeetData meetData = new MeetData();
  176. Result result = HttpUtil.getResponse(reqPath, method, json.toString(), meetData.getClass());
  177. if (result.isSuccess()) {
  178. //先删除下面的人员 然后添加人员
  179. BisInspMeetMntsCustomsParam bisInspMeetMntsCustomsParam = new BisInspMeetMntsCustomsParam();
  180. bisInspMeetMntsCustomsParam.setMeetRecodeId(bisInspMeetRecode.getId());
  181. List<BisInspMeetMntsCustoms> bisInspMeetMntsCustoms = bisInspMeetMntsCustomsDao.findList(bisInspMeetMntsCustomsParam);
  182. for (int i = 0; i < bisInspMeetMntsCustoms.size(); i++) {
  183. effrow = bisInspMeetMntsCustomsDao.delete(bisInspMeetMntsCustoms.get(i).getId());
  184. }
  185. //插入相关人员信息
  186. for (BisInspMeetMntsCustoms item : bisInspMeetRecode.getParticipantsList()) {
  187. item.setId(UuidUtil.uuid());
  188. effrow = bisInspMeetMntsCustomsDao.insert(item);
  189. }
  190. return bisInspMeetRecodeDao.update(bisInspMeetRecode);
  191. } else {
  192. return result.getErrorStatus();
  193. }
  194. }
  195. @Override
  196. public int del(String id) throws IOException {
  197. BisInspMeetRecode bisInspMeetRecode1 = bisInspMeetRecodeDao.get(id);
  198. if (bisInspMeetRecode1 != null && bisInspMeetRecode1.getMeetingId() != null) {
  199. String method = "DELETE";
  200. String reqPath = ylinkIp + "/api/rest/external/v1/meetingreminders/" + bisInspMeetRecode1.getMeetingId() + "?enterpriseId=" + enterpriseId;
  201. String requestUriPrefix = ylinkIp + "/api/rest/external/v1/";
  202. String signature = MeetUtil.computeSignature("", method, token, reqPath, requestUriPrefix);
  203. reqPath += "&signature=" + signature;
  204. MeetData meetData = new MeetData();
  205. Result result = HttpUtil.getResponse(reqPath, method, "", meetData.getClass());
  206. if (result.isSuccess()) {
  207. //先删除 预约会议下的人员
  208. BisInspMeetMntsCustomsParam bisInspMeetMntsCustomsParam = new BisInspMeetMntsCustomsParam();
  209. bisInspMeetMntsCustomsParam.setMeetRecodeId(id);
  210. List<BisInspMeetMntsCustoms> bisInspMeetMntsCustoms = bisInspMeetMntsCustomsDao.findList(bisInspMeetMntsCustomsParam);
  211. for (int i = 0; i < bisInspMeetMntsCustoms.size(); i++) {
  212. bisInspMeetMntsCustomsDao.delete(bisInspMeetMntsCustoms.get(i).getId());
  213. }
  214. //删除预约会议
  215. return bisInspMeetRecodeDao.delete(id);
  216. } else {
  217. return result.getErrorStatus();
  218. }
  219. } else {
  220. return 6001;
  221. }
  222. }
  223. @Override
  224. public int sendSms(String id) throws Exception {
  225. //根据ID 提取参加会议的人,如果是主持会议的人短信内容添加会控密码
  226. SimpleDateFormat simpleDateFormat = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  227. BisInspMeetRecode bisInspMeetRecode = bisInspMeetRecodeDao.get(id);
  228. BisInspMeetMntsCustomsParam bisInspMeetMntsCustomsParam = new BisInspMeetMntsCustomsParam();
  229. bisInspMeetMntsCustomsParam.setMeetRecodeId(id);
  230. List<BisInspMeetMntsCustoms> bisInspMeetMntsCustoms = bisInspMeetMntsCustomsDao.findList(bisInspMeetMntsCustomsParam);
  231. String persons = getPersons(bisInspMeetMntsCustoms);
  232. for (BisInspMeetMntsCustoms item : bisInspMeetMntsCustoms) {
  233. Map<String, String> params = new HashMap<String, String>();
  234. Random rand = new Random();
  235. int num = rand.nextInt(900000) + 100000;
  236. String code = "yuyue";
  237. params.put("apiKey", apiKey);
  238. params.put("apiSecrect", apiSecrect);
  239. params.put("templateParam", "{\"title\":\"" + bisInspMeetRecode.getTitle() + "\",\"tm\":\"" + simpleDateFormat.format(bisInspMeetRecode.getStartTime()) + "\",\"persons\":\"" + persons + "\",\"meetNum\":\"" + bisInspMeetRecode.getConferencenumber() + "\",\"pwd\":\"" + bisInspMeetRecode.getPassword() + "\"}");
  240. params.put("signName", "金水云平台");
  241. params.put("templeteCode", "SMS_166778434");
  242. params.put("mobile", item.getCallnumber());
  243. String content = HttpClientUtils.simplePostInvoke(apiUrl+"/gateway/api/sms/send", params);
  244. BisInspMeetMntsSms bisInspMeetMntsSms = new BisInspMeetMntsSms();
  245. bisInspMeetMntsSms.setId(UuidUtil.uuid());
  246. bisInspMeetMntsSms.setFlagValid("1");
  247. bisInspMeetMntsSms.setMeetRecodeId(id);
  248. bisInspMeetMntsSms.setIntm(new Date());
  249. bisInspMeetMntsSms.setUptm(new Date());
  250. bisInspMeetMntsSms.setPersId(item.getPersId());
  251. bisInspMeetMntsSms.setSms(params.get("templateParam").toString());
  252. bisInspMeetMntsSmsDao.insert(bisInspMeetMntsSms);
  253. }
  254. //更新发送短信状态
  255. bisInspMeetRecode.setSms("1");
  256. return bisInspMeetRecodeDao.update(bisInspMeetRecode);
  257. }
  258. public String getPersons(List<BisInspMeetMntsCustoms> bisInspMeetMntsCustoms) {
  259. String peresons = "";
  260. for (BisInspMeetMntsCustoms item : bisInspMeetMntsCustoms) {
  261. peresons += item.getPersName() + ",";
  262. }
  263. if (peresons.length() > 0) {
  264. peresons = peresons.substring(0, peresons.length() - 1);
  265. }
  266. return peresons;
  267. }
  268. @Override
  269. public PageInfo getRecodeInfo(BisInspMeetRecodeParam bisInspMeetRecodeParam) throws IOException {
  270. SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  271. BisInspAllRlationPers bisInspAllRlationPers = bisInspAllRlationPersDao.get(bisInspMeetRecodeParam.getPersId());
  272. String orgId = bisInspAllRlationPers.getOrgId();
  273. if ("029".equals(orgId) || "027".equals(orgId)) {
  274. bisInspMeetRecodeParam.setPersId(null);
  275. } else {
  276. Date dt = new Date();
  277. bisInspMeetRecodeParam.setTm(formatter.format(dt));
  278. }
  279. PageHelper.startPage(bisInspMeetRecodeParam);
  280. List<BisInspMeetRecode> bisInspMeetRecodes = bisInspMeetRecodeDao.getRecodeInfo(bisInspMeetRecodeParam);
  281. PageInfo<BisInspMeetRecode> pageInfo = new PageInfo(bisInspMeetRecodes);
  282. return pageInfo;
  283. }
  284. }