package com.fdkankan.fusion.service.impl; import java.util.Arrays; import java.util.Date; import java.util.List; import java.util.stream.Collectors; import cn.dev33.satoken.stp.StpUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.fdkankan.fusion.common.ResultCode; import com.fdkankan.fusion.common.ResultData; import com.fdkankan.fusion.entity.CaseEntity; import com.fdkankan.fusion.entity.CaseLive; import com.fdkankan.fusion.entity.CaseNumEntity; import com.fdkankan.fusion.exception.BusinessException; import com.fdkankan.fusion.httpClient.FdService; import com.fdkankan.fusion.httpClient.request.FdRoomAddParam; import com.fdkankan.fusion.httpClient.response.FdRoomVo; import com.fdkankan.fusion.httpClient.response.FdkkResponse; import com.fdkankan.fusion.mapper.ICaseLiveMapper; import com.fdkankan.fusion.service.ICaseLiveService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.fdkankan.fusion.service.ICaseNumService; import com.fdkankan.fusion.service.ICaseService; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.ListUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; /** *

* 服务实现类 *

* * @author * @since 2023-08-10 */ @Service public class CaseLiveServiceImpl extends ServiceImpl implements ICaseLiveService { @Autowired FdService fdService; @Autowired ICaseNumService caseNumService; @Autowired ICaseService caseService; @Override public Object getByCaseId(Integer caseId,String userName) { CaseEntity caseEntity = caseService.getById(caseId); if(caseEntity == null ){ throw new BusinessException(ResultCode.CASE_NOT_EXITS); } LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(CaseLive::getCaseId,caseId); wrapper.eq(CaseLive::getUserName,userName); CaseLive caseLive = this.getOne(wrapper); List caseNumEntities = caseNumService.getByCaseId(caseId); if(caseNumEntities == null || caseNumEntities.size() <=0 ){ throw new BusinessException(ResultCode.PROJECT_SCENE_NOT_EXITS); } List numList = caseNumEntities.stream().map(CaseNumEntity::getNum).collect(Collectors.toList()); if(caseLive == null){ caseLive = new CaseLive(); caseLive.setCaseId(caseId); caseLive.setUserName(userName); } Boolean flag = this.getCheckCreateRoom(caseLive.getNumList(),numList); if(!flag){ ResultData fdkkResponse = fdService.fdCreateTakeLookRoom(caseEntity.getCaseTitle(),numList,caseLive.getTakeRoomId()); if(fdkkResponse.getCode() != 0){ throw new BusinessException(fdkkResponse.getCode(),fdkkResponse.getMessage()); } caseLive.setTakeRoomId(fdkkResponse.getData().getRoomId()); List numList1 = fdkkResponse.getData().getNumList(); caseLive.setNumList(JSONArray.parseArray(JSON.toJSONString(numList1))); this.saveOrUpdate(caseLive); } fdService.fdOpenTakeLookRoom(caseLive.getTakeRoomId()); return caseLive.getTakeRoomId(); } private Boolean getCheckCreateRoom(JSONArray array,List numList) { if(array == null || array.isEmpty() ){ return false; } List lists = array.toJavaList(String.class); if(lists.size() != numList.size()){ return false; } Boolean flag = true; for (String list : lists) { if(!numList.contains(list)){ flag = false; } } for (String list : numList) { if(!lists.contains(list)){ flag = false; } } return flag; } }