package cn.huge.module.meet.service; import cn.huge.base.common.exception.ServiceException; import cn.huge.base.common.utils.DateUtils; import cn.huge.base.common.utils.IdUtils; import cn.huge.module.client.api.impl.UtilsClientImpl; import cn.huge.module.constant.BaseConsts; import cn.huge.module.meet.dao.mapper.MeetCloudMapper; import cn.huge.module.meet.domain.po.MeetCloud; import cn.huge.module.meet.domain.po.MeetInfo; import cn.huge.module.xylink.domain.dto.XylinkMeetDTO; import cn.huge.module.xylink.utils.XylinkUtils; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.apache.commons.collections.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import lombok.extern.slf4j.Slf4j; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageImpl; import org.springframework.data.domain.PageRequest; import org.springframework.transaction.annotation.Transactional; import java.util.Date; import java.util.List; import java.util.Map; /** * @title: 云会议室表业务逻辑处理 * @Description JPA的单表数据查询以由BaseService完成 * @company hugeinfo * @author liyj * @Time 2022-05-07 15:56:38 * @version 1.0.0 */ @Slf4j @Service @Transactional(rollbackFor = Exception.class) public class MeetCloudService extends ServiceImpl{ @Autowired private MeetCloudMapper mapper; @Autowired private MeetInfoService meetInfoService; @Autowired private UtilsClientImpl utilsClient; /** * 更新对象 * @param entity 对象 */ public void updateMeetCloud(MeetCloud entity){ try{ mapper.updateMeetCloud(entity); }catch (Exception e){ log.error("service方法[MeetCloudService.updateMeetCloud]调用异常:"+e, e); throw new ServiceException("MeetCloudService.updateMeetCloud", e); } } /** * 条件更新对象 * @param entity 对象 * @param terms 条件 */ public void updateMeetCloudTerms(MeetCloud entity, Map terms){ try{ mapper.updateMeetCloudTerms(entity, terms); }catch (Exception e){ log.error("service方法[MeetCloudService.updateMeetCloudTerms]调用异常:"+e, e); throw new ServiceException("MeetCloudService.updateMeetCloudTerms", e); } } /** * 根据编号物理删除 * @param id 查询条件集合 */ public void deleteMeetCloud(String id){ try{ mapper.deleteMeetCloud(id); }catch (Exception e){ log.error("service方法[MeetCloudService.deleteMeetCloud]调用异常:"+e, e); throw new ServiceException("MeetCloudService.deleteMeetCloud", e); } } /** * 按条件查询 * @param terms 条件 * @return List */ public List listTerms(Map terms){ return mapper.listTerms(terms); } /** * 按条件统计 * @param terms 条件 * @return long */ public long countTerms(Map terms){ return mapper.countTerms(terms); } /** * 按条件分页查询 * @param page 分页对象 * @param terms 条件 * @return Page */ public Page pageQuery(PageRequest page, Map terms){ long total = mapper.countTerms(terms); List content = mapper.pageTerms(page, terms); return new PageImpl(content, page, total); } /** * 新增或更新对象 * @param meetCloud 实体对象 */ public void saveMeetCloud(MeetCloud meetCloud){ try{ Date nowDate = DateUtils.getNowDate(); // 判断是否新增 if (IdUtils.checkNewId(meetCloud.getId())){ meetCloud.setId(utilsClient.getNewTimeId()); meetCloud.setCreateTime(nowDate); } meetCloud.setUpdateTime(nowDate); this.saveOrUpdate(meetCloud); }catch (Exception e){ log.error("service方法[MeetCloudService.saveMeetCloud]调用异常:"+e, e); throw new ServiceException("MeetCloudService.saveMeetCloud", e); } } /** * 新增云会议室信息-小鱼易连 * @param meetInfo 会议信息 * @return MeetCloud */ public MeetCloud createCloudXylink(MeetInfo meetInfo, String roomName){ try{ Date nowDate = DateUtils.getNowDate(); // 创建云会议室信息 MeetCloud meetCloud = new MeetCloud(); meetCloud.setId(utilsClient.getNewTimeId()); meetCloud.setCloudSource(utilsClient.getNewTimeId()); meetCloud.setCaseId(meetInfo.getCaseId()); meetCloud.setMeetId(meetInfo.getId()); meetCloud.setMeetType(meetInfo.getMeetType()); meetCloud.setMeetTypeName(meetInfo.getMeetTypeName()); meetCloud.setRoomName(roomName); meetCloud.setCustId(meetInfo.getCustId()); meetCloud.setCreateTime(nowDate); meetCloud.setUpdateTime(nowDate); // 线上会议时,沿用上一次预约的云会议号 List meetCloudList = this.listByCaseId(meetInfo.getCaseId(), meetInfo.getMeetType()); if (CollectionUtils.isNotEmpty(meetCloudList)){ MeetCloud meetCloudVo = meetCloudList.get(0); meetCloud.setRoomNo(meetCloudVo.getRoomNo()); meetCloud.setHostCipher(meetCloudVo.getHostCipher()); meetCloud.setJoinCipher(meetCloudVo.getJoinCipher()); meetCloud.setShareUrl(meetCloudVo.getShareUrl()); meetCloud.setPcJoinUrl("xylink://joinMeeting?number="+meetCloudVo.getRoomNo()+ "&topic=&pwd=&displayName=&autoAudioMute=true&auoVideoMute=true&contentOnlyMode=true&quitWhenCallFinish=true;/"); meetCloud.setStartTime(meetCloudVo.getStartTime()); meetCloud.setEndTime(meetCloudVo.getEndTime()); }else{ // 创建云会议室-小鱼易连 XylinkMeetDTO xylinkMeetDTO = XylinkUtils.createMeet(roomName, BaseConsts.CLOUD_CIPHER_HOST, null); meetCloud.setRoomNo(xylinkMeetDTO.getMeetingNumber()); meetCloud.setHostCipher(xylinkMeetDTO.getControlPassword()); meetCloud.setJoinCipher(xylinkMeetDTO.getPassword()); meetCloud.setShareUrl(xylinkMeetDTO.getShareUrl()); meetCloud.setPcJoinUrl("xylink://joinMeeting?number="+xylinkMeetDTO.getMeetingNumber()+ "&topic=&pwd=&displayName=&autoAudioMute=true&auoVideoMute=true&contentOnlyMode=true&quitWhenCallFinish=true;/"); meetCloud.setStartTime(nowDate); meetCloud.setEndTime(DateUtils.addMonth(nowDate, 3)); } mapper.insert(meetCloud); return meetCloud; }catch (Exception e) { log.error("service方法[MeetCloudService.createCloudXylink]调用异常:" + e, e); throw new ServiceException("MeetCloudService.createCloudXylink", e); } } /** * 根据云会议室的会议编号 * @param oldMeetId 旧会议编号 * @param newMeetId 新会议编号 */ public void updateMeetId(String oldMeetId, String newMeetId){ try{ UpdateWrapper meetCloudUpdateWrapper = new UpdateWrapper<>(); meetCloudUpdateWrapper.eq("meet_id", oldMeetId); meetCloudUpdateWrapper.set("meet_id", newMeetId); this.update(meetCloudUpdateWrapper); }catch (Exception e){ log.error("service方法[MeetCloudService.updateMeetId]调用异常:" + e, e); throw new ServiceException("MeetCloudService.updateMeetId", e); } } /** * 按纠纷编号和会议类型查询 * @param caseId 纠纷编号 * @param meetType 会议类型 * @return List */ public List listByCaseId(String caseId, String meetType){ QueryWrapper meetCloudQueryWrapper = new QueryWrapper<>(); meetCloudQueryWrapper.eq("case_id", caseId).eq("meet_type", meetType). orderByDesc("create_time"); return mapper.selectList(meetCloudQueryWrapper); } /** * 按会议信息编号类型查询 * @param meetId 会议信息编号 * @return MeetCloud */ public MeetCloud getByMeetId(String meetId){ QueryWrapper meetCloudQueryWrapper = new QueryWrapper<>(); meetCloudQueryWrapper.eq("meet_id", meetId); return mapper.selectOne(meetCloudQueryWrapper); } /** * 根据会议编号删除 * @param meetId 会议编号 */ public void removeByMeetId(String meetId){ try{ QueryWrapper meetCloudQueryWrapper = new QueryWrapper<>(); meetCloudQueryWrapper.eq("meet_id", meetId); mapper.delete(meetCloudQueryWrapper); }catch (Exception e){ log.error("service方法[MeetCloudService.removeByMeetId]调用异常:"+e, e); throw new ServiceException("MeetCloudService.removeByMeetId", e); } } }