package cn.com.goldenwater.dcproj.service.impl.meeting; import cn.com.goldenwater.dcproj.dao.BisInspAllRlationPersDao; import cn.com.goldenwater.dcproj.dao.BisInspMeetDiscussDao; import cn.com.goldenwater.dcproj.dao.BisInspMeetDiscussPersDao; import cn.com.goldenwater.dcproj.dao.BisInspMeetMntsSmsDao; import cn.com.goldenwater.dcproj.model.*; import cn.com.goldenwater.dcproj.param.BisInspMeetDiscussParam; import cn.com.goldenwater.dcproj.param.BisInspMeetDiscussPersParam; import cn.com.goldenwater.dcproj.param.DeviceList; import cn.com.goldenwater.dcproj.service.BisInspMeetDiscussService; import cn.com.goldenwater.core.service.AbstractCrudService; import cn.com.goldenwater.dcproj.utils.HttpClientUtils; 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.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.util.*; /** * @author lhc * @date 2019-5-30 */ @Service @Transactional public class BisInspMeetDiscussServiceImpl extends AbstractCrudService implements BisInspMeetDiscussService { @Autowired private BisInspMeetDiscussDao bisInspMeetDiscussDao; @Autowired private BisInspAllRlationPersDao bisInspAllRlationPersDao; @Autowired private BisInspMeetDiscussPersDao bisInspMeetDiscussPersDao; @Autowired private BisInspMeetMntsSmsDao bisInspMeetMntsSmsDao; @Value("${ylink.enterpriseId}") public String enterpriseId; @Value("${ylink.token}") public String token; @Value("${ylink.ip}") public String ylinkIp; @Value("${api.key}") private String apiKey; @Value("${api.url}") private String apiUrl; @Value("${api.secrect}") private String apiSecrect; public BisInspMeetDiscussServiceImpl(BisInspMeetDiscussDao bisInspMeetDiscussDao) { super(bisInspMeetDiscussDao); this.bisInspMeetDiscussDao = bisInspMeetDiscussDao; } @Autowired BisInspMeetRoomServiceImpl bisInspMeetRoomService; /** * 根据名称创建1年的会议号,返回会议号 * * @param name 会议室名称 * @return */ public BisInspMeetRoom createMeetNumber(String name, String persId) throws IOException { Date startTime = new Date(); Date endTime = new Date(); Calendar cal = Calendar.getInstance(); cal.setTime(endTime);//设置起时间 cal.add(Calendar.YEAR, 1);//增加一年 endTime = cal.getTime(); BisInspMeetRoom bisInspMeetRoom = new BisInspMeetRoom(); bisInspMeetRoom.setMeetingName(name); bisInspMeetRoom.setStartTime(startTime); bisInspMeetRoom.setEndTime(endTime); bisInspMeetRoom.setRequirePassword("0"); bisInspMeetRoom.setControlPassword("63204617"); bisInspMeetRoom.setPersId(persId); return bisInspMeetRoomService.addXylink(bisInspMeetRoom); } @Override public int add(BisInspMeetDiscuss bisInspMeetDiscuss) throws IOException { //创建讨论组会议号 String meetNumber = createMeetNumber(bisInspMeetDiscuss.getDisNm(), bisInspMeetDiscuss.getPersId()).getMeetingNumber(); bisInspMeetDiscuss.setMeetingNumber(meetNumber); String uuid = UuidUtil.uuid(); // 生成uuid bisInspMeetDiscuss.setId(uuid); bisInspMeetDiscuss.setFlagValid("1"); bisInspMeetDiscuss.setIntm(new Date()); bisInspMeetDiscuss.setUptm(new Date()); bisInspMeetDiscuss.setFlagValid("1"); BisInspAllRlationPers bisInspAllRlationPers1 = bisInspAllRlationPersDao.get(bisInspMeetDiscuss.getPersId()); bisInspMeetDiscuss.setPersName(bisInspAllRlationPers1.getPersName()); bisInspMeetDiscuss.setOrgId(bisInspAllRlationPers1.getOrgId()); bisInspMeetDiscuss.setOrgNm(bisInspAllRlationPers1.getOrgNm()); int i = bisInspMeetDiscussDao.insert(bisInspMeetDiscuss); //循环添加讨论组人员 List bisInspMeetDiscussPers = bisInspMeetDiscuss.getBisInspMeetDiscussPersList(); for (BisInspMeetDiscussPers item : bisInspMeetDiscussPers) { String persIduuid = UuidUtil.uuid(); // 生成uuid //根据人员id获取姓名及小鱼账号 BisInspAllRlationPers bisInspAllRlationPers = bisInspAllRlationPersDao.get(item.getPersId()); item.setPersName(bisInspAllRlationPers.getPersName()); item.setImgurl(bisInspAllRlationPers.getImgurl()); item.setIntm(new Date()); item.setUptm(new Date()); item.setDisId(uuid); item.setId(persIduuid); item.setFlagValid("1"); item.setCallnumber(bisInspAllRlationPers.getMobilenumb()); bisInspMeetDiscussPersDao.insert(item); } return i; } @Override public int del(String id) throws IOException { //先删除讨论组下的人员 再删除讨论组 BisInspMeetDiscussPersParam bisInspMeetDiscussPersParam = new BisInspMeetDiscussPersParam(); bisInspMeetDiscussPersParam.setDisId(id); List bisInspMeetDiscussPers = bisInspMeetDiscussPersDao.findList(bisInspMeetDiscussPersParam); for (BisInspMeetDiscussPers item : bisInspMeetDiscussPers) { bisInspMeetDiscussPersDao.delete(item.getId()); } //根据讨论组删除会议号 BisInspMeetDiscuss bisInspMeetDiscuss = bisInspMeetDiscussDao.get(id); if (delRoom(bisInspMeetDiscuss.getMeetingNumber()) == 200) { return bisInspMeetDiscussDao.delete(id); } else { return 0; } } public int delRoom(String meetingNumber) throws IOException { String json = ""; //调用小鱼sdk 删除会议号 String method = "DELETE"; String reqPath = ylinkIp + "/api/rest/external/v1/meetingInfo/" + meetingNumber + "?enterpriseId=" + enterpriseId; String requestUriPrefix = ylinkIp + "/api/rest/external/v1/"; String signature = MeetUtil.computeSignature(json, method, token, reqPath, requestUriPrefix); reqPath += "&signature=" + signature; Result result = HttpUtil.getResponse(reqPath, method, json, null); return result.getErrorStatus(); } @Override public int invitation(String id) throws IOException { BisInspMeetDiscussPersParam bisInspMeetDiscussPersParam = new BisInspMeetDiscussPersParam(); bisInspMeetDiscussPersParam.setDisId(id); List bisInspMeetDisCussPers = bisInspMeetDiscussPersDao.findList(bisInspMeetDiscussPersParam); BisInspMeetDiscuss bisInspMeetDiscuss = bisInspMeetDiscussDao.get(id); List deviceLists = new ArrayList<>(); for (int i = 0; i < bisInspMeetDisCussPers.size(); i++) { DeviceList deviceList = new DeviceList(); deviceList.setNumber(bisInspMeetDisCussPers.get(i).getCallnumber()); deviceLists.add(deviceList); } //调用小鱼邀请入会,采用临时会议号 List nmber = new ArrayList(); Map jsonEntity = new HashMap<>(); jsonEntity.put("callNumber", bisInspMeetDiscuss.getMeetingNumber()); jsonEntity.put("deviceList", deviceLists); JSONObject json = JSONObject.fromObject(jsonEntity); String method = "PUT"; String reqPath = ylinkIp + "/api/rest/external/v1/conferenceControl/invitation?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()) { return 0; } else { return result.getErrorStatus(); } } @Override public int sendSms(String id) throws Exception { BisInspMeetDiscuss bisInspMeetDiscuss = bisInspMeetDiscussDao.get(id); BisInspMeetDiscussPersParam bisInspMeetDiscussPersParam = new BisInspMeetDiscussPersParam(); bisInspMeetDiscussPersParam.setDisId(id); List bisInspMeetDiscussPers = bisInspMeetDiscussPersDao.findList(bisInspMeetDiscussPersParam); for (BisInspMeetDiscussPers item : bisInspMeetDiscussPers) { //发短信 Map params = new HashMap(); params.put("apiKey", apiKey); params.put("apiSecrect", apiSecrect); params.put("templateParam", "{\"depnm\":\"" + bisInspMeetDiscuss.getDisNm() + "\"}"); params.put("signName", "金水云平台"); params.put("templeteCode", "SMS_166778623"); 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); } return 0; } @Override public List findDiscuss(String persId) { return bisInspMeetDiscussDao.findDiscuss(persId); } @Override public int edit(BisInspMeetDiscuss bisInspMeetDiscuss) { bisInspMeetDiscuss.setUptm(new Date()); return bisInspMeetDiscussDao.update(bisInspMeetDiscuss); } }