CaseLiveServiceImpl.java 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. package com.fdkankan.fusion.service.impl;
  2. import java.util.Arrays;
  3. import java.util.Date;
  4. import java.util.List;
  5. import java.util.stream.Collectors;
  6. import cn.dev33.satoken.stp.StpUtil;
  7. import com.alibaba.fastjson.JSON;
  8. import com.alibaba.fastjson.JSONArray;
  9. import com.alibaba.fastjson.JSONObject;
  10. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  11. import com.fdkankan.fusion.common.ResultCode;
  12. import com.fdkankan.fusion.common.ResultData;
  13. import com.fdkankan.fusion.entity.CaseEntity;
  14. import com.fdkankan.fusion.entity.CaseLive;
  15. import com.fdkankan.fusion.entity.CaseNumEntity;
  16. import com.fdkankan.fusion.exception.BusinessException;
  17. import com.fdkankan.fusion.httpClient.FdService;
  18. import com.fdkankan.fusion.httpClient.request.FdRoomAddParam;
  19. import com.fdkankan.fusion.httpClient.response.FdRoomVo;
  20. import com.fdkankan.fusion.httpClient.response.FdkkResponse;
  21. import com.fdkankan.fusion.mapper.ICaseLiveMapper;
  22. import com.fdkankan.fusion.service.ICaseLiveService;
  23. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  24. import com.fdkankan.fusion.service.ICaseNumService;
  25. import com.fdkankan.fusion.service.ICaseService;
  26. import org.apache.commons.collections4.CollectionUtils;
  27. import org.apache.commons.collections4.ListUtils;
  28. import org.springframework.beans.factory.annotation.Autowired;
  29. import org.springframework.stereotype.Service;
  30. /**
  31. * <p>
  32. * 服务实现类
  33. * </p>
  34. *
  35. * @author
  36. * @since 2023-08-10
  37. */
  38. @Service
  39. public class CaseLiveServiceImpl extends ServiceImpl<ICaseLiveMapper, CaseLive> implements ICaseLiveService {
  40. @Autowired
  41. FdService fdService;
  42. @Autowired
  43. ICaseNumService caseNumService;
  44. @Autowired
  45. ICaseService caseService;
  46. @Override
  47. public Object getByCaseId(Integer caseId,String userName) {
  48. CaseEntity caseEntity = caseService.getById(caseId);
  49. if(caseEntity == null ){
  50. throw new BusinessException(ResultCode.CASE_NOT_EXITS);
  51. }
  52. LambdaQueryWrapper<CaseLive> wrapper = new LambdaQueryWrapper<>();
  53. wrapper.eq(CaseLive::getCaseId,caseId);
  54. wrapper.eq(CaseLive::getUserName,userName);
  55. CaseLive caseLive = this.getOne(wrapper);
  56. List<CaseNumEntity> caseNumEntities = caseNumService.getByCaseId(caseId);
  57. if(caseNumEntities == null || caseNumEntities.size() <=0 ){
  58. throw new BusinessException(ResultCode.PROJECT_SCENE_NOT_EXITS);
  59. }
  60. List<String> numList = caseNumEntities.stream().map(CaseNumEntity::getNum).collect(Collectors.toList());
  61. if(caseLive == null){
  62. caseLive = new CaseLive();
  63. caseLive.setCaseId(caseId);
  64. caseLive.setUserName(userName);
  65. }
  66. Boolean flag = this.getCheckCreateRoom(caseLive.getNumList(),numList);
  67. if(!flag){
  68. ResultData<FdRoomAddParam> fdkkResponse = fdService.fdCreateTakeLookRoom(caseEntity.getCaseTitle(),numList,caseLive.getTakeRoomId());
  69. if(fdkkResponse.getCode() != 0){
  70. throw new BusinessException(fdkkResponse.getCode(),fdkkResponse.getMessage());
  71. }
  72. caseLive.setTakeRoomId(fdkkResponse.getData().getRoomId());
  73. List<String> numList1 = fdkkResponse.getData().getNumList();
  74. caseLive.setNumList(JSONArray.parseArray(JSON.toJSONString(numList1)));
  75. this.saveOrUpdate(caseLive);
  76. }
  77. fdService.fdOpenTakeLookRoom(caseLive.getTakeRoomId());
  78. return caseLive.getTakeRoomId();
  79. }
  80. private Boolean getCheckCreateRoom(JSONArray array,List<String> numList) {
  81. if(array == null || array.isEmpty() ){
  82. return false;
  83. }
  84. List<String> lists = array.toJavaList(String.class);
  85. if(lists.size() != numList.size()){
  86. return false;
  87. }
  88. Boolean flag = true;
  89. for (String list : lists) {
  90. if(!numList.contains(list)){
  91. flag = false;
  92. }
  93. }
  94. for (String list : numList) {
  95. if(!lists.contains(list)){
  96. flag = false;
  97. }
  98. }
  99. return flag;
  100. }
  101. }