package cn.com.goldenwater.dcproj.service.impl.meeting; import cn.com.goldenwater.dcproj.dao.BisInspAllRlationPersDao; import cn.com.goldenwater.dcproj.dao.BisInspMeetMntsCustomsDao; import cn.com.goldenwater.dcproj.dao.BisInspMeetMntsSmsDao; import cn.com.goldenwater.dcproj.dao.BisInspMeetRecodeDao; import cn.com.goldenwater.dcproj.model.*; import cn.com.goldenwater.dcproj.param.BisInspMeetMntsCustomsParam; import cn.com.goldenwater.dcproj.param.BisInspMeetRecodeParam; import cn.com.goldenwater.dcproj.service.BisInspMeetRecodeService; import cn.com.goldenwater.core.service.AbstractCrudService; import cn.com.goldenwater.dcproj.utils.HttpClientUtils; import cn.com.goldenwater.dcproj.utils.gwxy.MeetData; import cn.com.goldenwater.dcproj.utils.gwxy.MeetUtil; import cn.com.goldenwater.dcproj.utils.gwxy.MeetingReminders; import cn.com.goldenwater.id.util.UuidUtil; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.xylink.util.HttpUtil; import com.xylink.util.Result; import net.sf.json.JSONObject; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.*; /** * @author lhc * @date 2019-5-27 */ @Service @Transactional public class BisInspMeetRecodeServiceImpl extends AbstractCrudService implements BisInspMeetRecodeService { @Autowired private BisInspMeetRecodeDao bisInspMeetRecodeDao; @Value("${ylink.enterpriseId}") public String enterpriseId; @Value("${ylink.token}") public String token; @Value("${ylink.ip}") public String ylinkIp; @Autowired private BisInspAllRlationPersDao bisInspAllRlationPersDao; @Autowired private BisInspMeetMntsCustomsDao bisInspMeetMntsCustomsDao; @Value("${api.key}") private String apiKey; @Value("${api.url}") private String apiUrl; @Value("${api.secrect}") private String apiSecrect; @Autowired private BisInspMeetMntsSmsDao bisInspMeetMntsSmsDao; public BisInspMeetRecodeServiceImpl(BisInspMeetRecodeDao bisInspMeetRecodeDao) { super(bisInspMeetRecodeDao); this.bisInspMeetRecodeDao = bisInspMeetRecodeDao; } @Override public int add(BisInspMeetRecode bisInspMeetRecode) throws IOException { int effrow = 0; //添加到小鱼sdk String uuid = UuidUtil.uuid(); // 生成uuid bisInspMeetRecode.setId(uuid); Map jsonEntity = new HashMap<>(); jsonEntity.put("title", bisInspMeetRecode.getTitle()); jsonEntity.put("startTime", bisInspMeetRecode.getStartTime().getTime()); jsonEntity.put("endTime", bisInspMeetRecode.getEndTime().getTime()); List phones = new ArrayList<>(); for (int i = 0; i < bisInspMeetRecode.getParticipantsList().size(); i++) { //提取参会人员的手机号信息 BisInspAllRlationPers bisInspAllRlationPers = bisInspAllRlationPersDao.get(bisInspMeetRecode.getParticipantsList().get(i).getPersId()); bisInspMeetRecode.getParticipantsList().get(i).setPersName(bisInspAllRlationPers.getPersName()); bisInspMeetRecode.getParticipantsList().get(i).setMeetRecodeId(uuid); bisInspMeetRecode.getParticipantsList().get(i).setFlagValid("1"); bisInspMeetRecode.getParticipantsList().get(i).setIntm(new Date()); bisInspMeetRecode.getParticipantsList().get(i).setUptm(new Date()); String phone = bisInspAllRlationPers.getMobilenumb(); bisInspMeetRecode.getParticipantsList().get(i).setCallnumber(phone); phones.add(phone); } if (phones.size() > 0) { String participants = org.apache.commons.lang3.StringUtils.join(phones, ","); jsonEntity.put("participants", phones); bisInspMeetRecode.setParticipants(participants); } jsonEntity.put("address", bisInspMeetRecode.getAddress()); jsonEntity.put("details", bisInspMeetRecode.getDetails()); jsonEntity.put("autoInvite", bisInspMeetRecode.getAutoinvite()); jsonEntity.put("password", bisInspMeetRecode.getPassword()); jsonEntity.put("conferenceControlPassword", bisInspMeetRecode.getControlPassword()); jsonEntity.put("meetingRoomType", bisInspMeetRecode.getMeetingroomtype()); jsonEntity.put("conferenceNumber", bisInspMeetRecode.getConferencenumber()); jsonEntity.put("autoRecord", bisInspMeetRecode.getAutorecord()); if (bisInspMeetRecode.getMainimage() != null) { jsonEntity.put("mainImage", bisInspMeetRecode.getMainimage()); } JSONObject json = JSONObject.fromObject(jsonEntity); String method = "POST"; String reqPath = ylinkIp + "/api/rest/external/v1/meetingreminders?enterpriseId=" + enterpriseId; String requestUriPrefix = ylinkIp + "/api/rest/external/v1/"; String signature = MeetUtil.computeSignature(json.toString(), method, token, reqPath, requestUriPrefix); reqPath += "&signature=" + signature; MeetingReminders meetingReminders = new MeetingReminders(); Result result = HttpUtil.getResponse(reqPath, method, json.toString(), meetingReminders.getClass()); if (result.isSuccess()) { meetingReminders = (MeetingReminders) result.getData(); bisInspMeetRecode.setMeetingId(meetingReminders.getMeetingId()); bisInspMeetRecode.setConferencenumber(meetingReminders.getMeetingRoomNumber()); bisInspMeetRecode.setIntm(new Date()); bisInspMeetRecode.setUptm(new Date()); bisInspMeetRecode.setFlagValid("1"); bisInspMeetRecode.setSms("0"); BisInspAllRlationPers bisInspAllRlationPers = bisInspAllRlationPersDao.get(bisInspMeetRecode.getPersId()); bisInspMeetRecode.setPersName(bisInspAllRlationPers.getPersName()); bisInspMeetRecode.setOrgId(bisInspAllRlationPers.getOrgId()); bisInspMeetRecode.setOrgNm(bisInspAllRlationPers.getOrgNm()); BisInspAllRlationPers bisInspAllRlationPersControl = bisInspAllRlationPersDao.get(bisInspMeetRecode.getControlPersId()); bisInspMeetRecode.setControlPersName(bisInspAllRlationPersControl.getPersName()); effrow = bisInspMeetRecodeDao.insert(bisInspMeetRecode); //插入参会人员信息 for (BisInspMeetMntsCustoms item : bisInspMeetRecode.getParticipantsList()) { item.setId(UuidUtil.uuid()); effrow = bisInspMeetMntsCustomsDao.insert(item); } return effrow; } else { return result.getErrorStatus(); } } @Override public int edit(BisInspMeetRecode bisInspMeetRecode) throws IOException { int effrow; BisInspMeetRecode bisInspMeetRecode1 = bisInspMeetRecodeDao.get(bisInspMeetRecode.getId()); Map jsonEntity = new HashMap<>(); jsonEntity.put("title", bisInspMeetRecode.getTitle()); jsonEntity.put("startTime", bisInspMeetRecode.getStartTime().getTime()); jsonEntity.put("endTime", bisInspMeetRecode.getEndTime().getTime()); List phones = new ArrayList<>(); for (int i = 0; i < bisInspMeetRecode.getParticipantsList().size(); i++) { //提取参会人员的手机号信息 BisInspAllRlationPers bisInspAllRlationPers = bisInspAllRlationPersDao.get(bisInspMeetRecode.getParticipantsList().get(i).getPersId()); bisInspMeetRecode.getParticipantsList().get(i).setPersName(bisInspAllRlationPers.getPersName()); bisInspMeetRecode.getParticipantsList().get(i).setMeetRecodeId(bisInspMeetRecode.getId()); bisInspMeetRecode.getParticipantsList().get(i).setFlagValid("1"); bisInspMeetRecode.getParticipantsList().get(i).setIntm(new Date()); bisInspMeetRecode.getParticipantsList().get(i).setUptm(new Date()); String phone = bisInspAllRlationPers.getMobilenumb(); bisInspMeetRecode.getParticipantsList().get(i).setCallnumber(phone); phones.add(phone); } if (phones.size() > 0) { String participants = org.apache.commons.lang3.StringUtils.join(phones, ","); jsonEntity.put("participants", phones); bisInspMeetRecode.setParticipants(participants); } if (bisInspMeetRecode.getConferencenumber() != null) { jsonEntity.put("conferenceNumber", bisInspMeetRecode.getConferencenumber()); } jsonEntity.put("address", bisInspMeetRecode.getAddress()); jsonEntity.put("details", bisInspMeetRecode.getDetails()); jsonEntity.put("autoInvite", bisInspMeetRecode.getAutoinvite()); if (bisInspMeetRecode.getMainimage() != null) { jsonEntity.put("mainImage", bisInspMeetRecode.getMainimage()); } if (bisInspMeetRecode.getParticipantsList() != null) { bisInspMeetRecode.setParticipants(org.apache.commons.lang3.StringUtils.join(phones, ",")); } JSONObject json = JSONObject.fromObject(jsonEntity); String method = "PUT"; String reqPath = ylinkIp + "/api/rest/external/v1/meetingreminders/" + bisInspMeetRecode1.getMeetingId() + "?enterpriseId=" + enterpriseId; String requestUriPrefix = ylinkIp + "/api/rest/external/v1/"; String signature = MeetUtil.computeSignature(json.toString(), method, token, reqPath, requestUriPrefix); reqPath += "&signature=" + signature; MeetData meetData = new MeetData(); Result result = HttpUtil.getResponse(reqPath, method, json.toString(), meetData.getClass()); if (result.isSuccess()) { //先删除下面的人员 然后添加人员 BisInspMeetMntsCustomsParam bisInspMeetMntsCustomsParam = new BisInspMeetMntsCustomsParam(); bisInspMeetMntsCustomsParam.setMeetRecodeId(bisInspMeetRecode.getId()); List bisInspMeetMntsCustoms = bisInspMeetMntsCustomsDao.findList(bisInspMeetMntsCustomsParam); for (int i = 0; i < bisInspMeetMntsCustoms.size(); i++) { effrow = bisInspMeetMntsCustomsDao.delete(bisInspMeetMntsCustoms.get(i).getId()); } //插入相关人员信息 for (BisInspMeetMntsCustoms item : bisInspMeetRecode.getParticipantsList()) { item.setId(UuidUtil.uuid()); effrow = bisInspMeetMntsCustomsDao.insert(item); } return bisInspMeetRecodeDao.update(bisInspMeetRecode); } else { return result.getErrorStatus(); } } @Override public int del(String id) throws IOException { BisInspMeetRecode bisInspMeetRecode1 = bisInspMeetRecodeDao.get(id); if (bisInspMeetRecode1 != null && bisInspMeetRecode1.getMeetingId() != null) { String method = "DELETE"; String reqPath = ylinkIp + "/api/rest/external/v1/meetingreminders/" + bisInspMeetRecode1.getMeetingId() + "?enterpriseId=" + enterpriseId; String requestUriPrefix = ylinkIp + "/api/rest/external/v1/"; String signature = MeetUtil.computeSignature("", method, token, reqPath, requestUriPrefix); reqPath += "&signature=" + signature; MeetData meetData = new MeetData(); Result result = HttpUtil.getResponse(reqPath, method, "", meetData.getClass()); if (result.isSuccess()) { //先删除 预约会议下的人员 BisInspMeetMntsCustomsParam bisInspMeetMntsCustomsParam = new BisInspMeetMntsCustomsParam(); bisInspMeetMntsCustomsParam.setMeetRecodeId(id); List bisInspMeetMntsCustoms = bisInspMeetMntsCustomsDao.findList(bisInspMeetMntsCustomsParam); for (int i = 0; i < bisInspMeetMntsCustoms.size(); i++) { bisInspMeetMntsCustomsDao.delete(bisInspMeetMntsCustoms.get(i).getId()); } //删除预约会议 return bisInspMeetRecodeDao.delete(id); } else { return result.getErrorStatus(); } } else { return 6001; } } @Override public int sendSms(String id) throws Exception { //根据ID 提取参加会议的人,如果是主持会议的人短信内容添加会控密码 SimpleDateFormat simpleDateFormat = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); BisInspMeetRecode bisInspMeetRecode = bisInspMeetRecodeDao.get(id); BisInspMeetMntsCustomsParam bisInspMeetMntsCustomsParam = new BisInspMeetMntsCustomsParam(); bisInspMeetMntsCustomsParam.setMeetRecodeId(id); List bisInspMeetMntsCustoms = bisInspMeetMntsCustomsDao.findList(bisInspMeetMntsCustomsParam); String persons = getPersons(bisInspMeetMntsCustoms); for (BisInspMeetMntsCustoms item : bisInspMeetMntsCustoms) { Map params = new HashMap(); Random rand = new Random(); int num = rand.nextInt(900000) + 100000; String code = "yuyue"; params.put("apiKey", apiKey); params.put("apiSecrect", apiSecrect); params.put("templateParam", "{\"title\":\"" + bisInspMeetRecode.getTitle() + "\",\"tm\":\"" + simpleDateFormat.format(bisInspMeetRecode.getStartTime()) + "\",\"persons\":\"" + persons + "\",\"meetNum\":\"" + bisInspMeetRecode.getConferencenumber() + "\",\"pwd\":\"" + bisInspMeetRecode.getPassword() + "\"}"); params.put("signName", "金水云平台"); params.put("templeteCode", "SMS_166778434"); params.put("mobile", item.getCallnumber()); String content = HttpClientUtils.simplePostInvoke(apiUrl+"/gateway/api/sms/send", params); BisInspMeetMntsSms bisInspMeetMntsSms = new BisInspMeetMntsSms(); bisInspMeetMntsSms.setId(UuidUtil.uuid()); bisInspMeetMntsSms.setFlagValid("1"); bisInspMeetMntsSms.setMeetRecodeId(id); bisInspMeetMntsSms.setIntm(new Date()); bisInspMeetMntsSms.setUptm(new Date()); bisInspMeetMntsSms.setPersId(item.getPersId()); bisInspMeetMntsSms.setSms(params.get("templateParam").toString()); bisInspMeetMntsSmsDao.insert(bisInspMeetMntsSms); } //更新发送短信状态 bisInspMeetRecode.setSms("1"); return bisInspMeetRecodeDao.update(bisInspMeetRecode); } public String getPersons(List bisInspMeetMntsCustoms) { String peresons = ""; for (BisInspMeetMntsCustoms item : bisInspMeetMntsCustoms) { peresons += item.getPersName() + ","; } if (peresons.length() > 0) { peresons = peresons.substring(0, peresons.length() - 1); } return peresons; } @Override public PageInfo getRecodeInfo(BisInspMeetRecodeParam bisInspMeetRecodeParam) throws IOException { SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); BisInspAllRlationPers bisInspAllRlationPers = bisInspAllRlationPersDao.get(bisInspMeetRecodeParam.getPersId()); String orgId = bisInspAllRlationPers.getOrgId(); if ("029".equals(orgId) || "027".equals(orgId)) { bisInspMeetRecodeParam.setPersId(null); } else { Date dt = new Date(); bisInspMeetRecodeParam.setTm(formatter.format(dt)); } PageHelper.startPage(bisInspMeetRecodeParam); List bisInspMeetRecodes = bisInspMeetRecodeDao.getRecodeInfo(bisInspMeetRecodeParam); PageInfo pageInfo = new PageInfo(bisInspMeetRecodes); return pageInfo; } }