package com.ruoyi.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.domain.entity.EsModel; import com.ruoyi.common.utils.MapUtils; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.domain.*; import com.ruoyi.mapper.LiveStreamingMapper; import com.ruoyi.service.EsService; import com.ruoyi.service.LiveStreamingService; import com.ruoyi.service.ZAuthorityService; import com.ruoyi.service.ZInfoUserService; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.*; @Slf4j @Service public class LiveStreamingServiceImpl extends ServiceImpl implements LiveStreamingService { @Resource private EsService esSer; private LambdaQueryWrapper buildCondition(LiveStreaming liveStreaming) throws ParseException { LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); // lqw.in(LiveStreaming::getFamilyId,familyIdList); lqw.orderByDesc(LiveStreaming::getId); lqw.like(StringUtils.isNotEmpty(liveStreaming.getTitle()), LiveStreaming::getTitle, liveStreaming.getTitle()) .eq(LiveStreaming::getStatus,0); List liveStreamingList = list(lqw); for (LiveStreaming liveStreaming1: liveStreamingList) { SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Calendar nowTime = Calendar.getInstance(); String currentTime = df.format(nowTime.getTime()); Date date = df.parse(currentTime); if(liveStreaming1.getStartTime() != null && liveStreaming1.getEndTime() != null){ if (!belongCalendar(date,liveStreaming1.getStartTime(),liveStreaming1.getEndTime())){ liveStreaming1.setStatus(1); updateById(liveStreaming1); }} } return lqw; } /**MaNongXF * 判断时间是否处于某个时间段内 * * @param time 需要比较的时间 * @param from 起始时间 * @param to 结束时间 * @return */ public static boolean belongCalendar(Date time, Date from, Date to) { System.out.println("11111"+time+"222"+from+"333"+to); Calendar date = Calendar.getInstance(); date.setTime(time); Calendar after = Calendar.getInstance(); after.setTime(from); Calendar before = Calendar.getInstance(); before.setTime(to); if (date.after(after) && date.before(before)) { return true; } else { return false; } } private LambdaQueryWrapper uniqueCondition(LiveStreaming liveStreaming){ LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); lqw.eq(!StringUtils.isEmpty(liveStreaming.getTitle()), LiveStreaming::getTitle, liveStreaming.getTitle()); lqw.eq(!StringUtils.isEmpty(liveStreaming.getContactPhone()), LiveStreaming::getContactPhone, liveStreaming.getContactPhone()); lqw.eq(!StringUtils.isEmpty(liveStreaming.getApplyPerson()), LiveStreaming::getApplyPerson, liveStreaming.getApplyPerson()); lqw.eq(!StringUtils.isEmpty(liveStreaming.getContactPerson()), LiveStreaming::getContactPerson, liveStreaming.getContactPerson()); lqw.eq(!StringUtils.isEmpty(liveStreaming.getRoomId()), LiveStreaming::getRoomId, liveStreaming.getRoomId()); return lqw; } @Override public AjaxResult selectDataList(LiveStreaming liveStreaming, Integer pageNum, Integer pageSize) throws ParseException { //要查自己家庭的 // ZInfoUser myself = zInfoUserService.getMyself(); // if(myself==null) // { // // System.out.println("ssssss"); // return AjaxResult.success("您没加入到对应的家庭,请联系管理员"); // } // Long familyId = myself.getFamilyId(); // //也要查别人授权的 // List authority = zAuthorityService.getAuthority(); // List idList = authority.stream().filter(auth -> auth.getAuthority().toString().equals(DOCTOR_LIST)).map(ZAuthority::getFid).collect(Collectors.toList()); // //加上自己家庭的id // idList.add(familyId); // String familyIds = listFamilyIds(); // String secondFamilyAuthority = listSecondFamilyIds(); LambdaQueryWrapper lqw = buildCondition(liveStreaming); Page liveStreamingPage = new Page<>(pageNum, pageSize); Page pageResult = page(liveStreamingPage, lqw); List beanRecords = pageResult.getRecords();//得到查询出来的数据 // List dtoResult = markOwnData(familyId, beanRecords); HashMap data = MapUtils.getResult(pageResult, beanRecords); return AjaxResult.success(data); } @Override public List selectByIds(Long[] ids) { List list = new ArrayList<>(); if (ids.length != 0) list = listByIds(Arrays.asList(ids)); else list = list(); return list; } private Date getEndTime1(LiveStreaming liveStreaming) throws ParseException{ System.out.println(liveStreaming.getStartTime()); SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Calendar nowTime = Calendar.getInstance(); nowTime.setTime(liveStreaming.getStartTime()); nowTime.add(Calendar.MINUTE, liveStreaming.getDuration()); String currentTime = df.format(nowTime.getTime()); return df.parse(currentTime); } @Override public AjaxResult addData(LiveStreaming liveStreaming) throws ParseException { LambdaQueryWrapper lqw = uniqueCondition(liveStreaming); List list = list(lqw); if(list.size()>0){ throw new RuntimeException("请勿新增重复数据"); } if (liveStreaming.getMaxPerson() > 120){ throw new RuntimeException("可容纳人数暂时最多为120人"); } liveStreaming.setStatus(0); liveStreaming.setEndTime(getEndTime1(liveStreaming)); if (save(liveStreaming)) { EsModel esModel = new EsModel(); Long inte =liveStreaming.getId(); String uuid = UUID.randomUUID().toString().replace("-",""); esModel.setId(uuid); esModel.setCtId(Long.valueOf(inte)); esModel.setCtTableName("直播"); esModel.setBy1(liveStreaming.getTitle()); esModel.setBy2(liveStreaming.getApplyPerson()); esModel.setBy3(liveStreaming.getRoomId()); //取当前的时分-30 System.out.println(liveStreaming.getEndTime()); // esModel.setBy4(liveStreaming.getEndTime()); //这里存储查询详情的路径 esModel.setBy5("/zLiveStreaming"); // esModel.setFid(familyId); esSer.insertTable(esModel); // System.out.println(esModel); return AjaxResult.success(); } else { return AjaxResult.error(); } } @Override public AjaxResult deleteData(Long[] ids) { List liveStreaming = selectByIds(ids); for (LiveStreaming liveStreaming1:liveStreaming) { liveStreaming1.setStatus(1); updateById(liveStreaming1); } return AjaxResult.success(); } }