RoomServiceImpl.java 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  1. package com.fdkankan.tk.service.impl;
  2. import java.io.File;
  3. import java.util.ArrayList;
  4. import java.util.Date;
  5. import java.util.List;
  6. import cn.hutool.core.io.FileUtil;
  7. import cn.hutool.jwt.JWTUtil;
  8. import com.auth0.jwt.JWT;
  9. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  10. import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
  11. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  12. import com.fdkankan.tk.common.FilePath;
  13. import com.fdkankan.tk.common.PageInfo;
  14. import com.fdkankan.tk.common.ResultCode;
  15. import com.fdkankan.tk.common.util.JwtUtil;
  16. import com.fdkankan.tk.common.util.UploadToOssUtil;
  17. import com.fdkankan.tk.entity.Room;
  18. import com.fdkankan.tk.exception.BusinessException;
  19. import com.fdkankan.tk.mapper.IRoomMapper;
  20. import com.fdkankan.tk.request.RoomAddParam;
  21. import com.fdkankan.tk.request.RoomListParam;
  22. import com.fdkankan.tk.response.RoomVo;
  23. import com.fdkankan.tk.response.SceneVo;
  24. import com.fdkankan.tk.service.IRoomNumService;
  25. import com.fdkankan.tk.service.IRoomService;
  26. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  27. import com.fdkankan.tk.service.ISceneService;
  28. import com.fdkankan.tk.service.IWxService;
  29. import org.apache.commons.lang3.StringUtils;
  30. import org.springframework.beans.BeanUtils;
  31. import org.springframework.beans.factory.annotation.Autowired;
  32. import org.springframework.beans.factory.annotation.Value;
  33. import org.springframework.stereotype.Service;
  34. /**
  35. * <p>
  36. * 服务实现类
  37. * </p>
  38. *
  39. * @author
  40. * @since 2022-09-19
  41. */
  42. @Service
  43. public class RoomServiceImpl extends ServiceImpl<IRoomMapper, Room> implements IRoomService {
  44. @Autowired
  45. IRoomNumService roomNumService;
  46. @Autowired
  47. ISceneService sceneService;
  48. @Autowired
  49. UploadToOssUtil uploadToOssUtil;
  50. @Autowired
  51. IWxService wxService;
  52. @Value("${upload.query-path}")
  53. private String queryPath;
  54. @Override
  55. public PageInfo pageList(RoomListParam param, String token) {
  56. String userName = JwtUtil.getUserName(token);
  57. LambdaQueryWrapper<Room> wrapper = new LambdaQueryWrapper<>();
  58. wrapper.eq(Room::getRoomUserName,userName);
  59. if (StringUtils.isNotBlank(param.getRoomTitle()) ) {
  60. wrapper.like(Room::getRoomTitle,param.getRoomTitle());
  61. }
  62. wrapper.orderByDesc(Room::getCreateTime);
  63. Page<Room> page = this.page(new Page<>(param.getPageNum(), param.getPageSize()), wrapper);
  64. return PageInfo.PageInfo(page);
  65. }
  66. @Override
  67. public Room addOrUpdate(RoomAddParam param, String token) {
  68. if(param.getNumList() == null || param.getNumList().size() <=0){
  69. throw new BusinessException(ResultCode.PARAM_MISS);
  70. }
  71. if(StringUtils.isEmpty(param.getRoomTitle()) ){
  72. throw new BusinessException(ResultCode.PARAM_MISS);
  73. }
  74. Room room = new Room();
  75. BeanUtils.copyProperties(param,room);
  76. room.setRoomUserName(JwtUtil.getUserName(token));
  77. if(StringUtils.isEmpty(room.getRoomHostName())){
  78. room.setRoomHostName(room.getRoomUserName());
  79. }
  80. if(param.getRoomId() != null){
  81. room.setUpdateTime(null);
  82. }
  83. this.saveOrUpdate(room);
  84. roomNumService.addBatch(room.getRoomId(),param.getNumList());
  85. param.setRoomId(room.getRoomId());
  86. return param;
  87. }
  88. @Override
  89. public void deleteById(Integer roomId) {
  90. roomNumService.deleteByRoomId(roomId);
  91. Room room = this.getById(roomId);
  92. if(StringUtils.isNotBlank(room.getRoomShareUrl())){
  93. uploadToOssUtil.delete(room.getRoomShareUrl());
  94. }
  95. this.removeById(roomId);
  96. }
  97. @Override
  98. public RoomVo getRoomInfo(Integer roomId) {
  99. Room room = this.getById(roomId);
  100. List<String> numList = roomNumService.getListByRoomId(roomId);
  101. List<SceneVo> list = new ArrayList<>();
  102. if(numList.size() >0){
  103. list = sceneService.getListByNumList(numList);
  104. }
  105. RoomVo roomVo = new RoomVo();
  106. BeanUtils.copyProperties(room,roomVo);
  107. roomVo.setSceneData(list);
  108. return roomVo;
  109. }
  110. @Override
  111. public void roomAddView(Integer roomId) {
  112. LambdaUpdateWrapper<Room> wrapper = new LambdaUpdateWrapper<>();
  113. wrapper.setSql("room_view_count = room_view_count +1");
  114. wrapper.eq(Room::getRoomId,roomId);
  115. this.update(wrapper);
  116. }
  117. @Override
  118. public String getWxQrCode(Integer roomId) {
  119. Room room = this.getById(roomId);
  120. if(StringUtils.isNotBlank(room.getRoomQrCode())){
  121. if(uploadToOssUtil.existKey(room.getRoomQrCode())){
  122. return room.getRoomQrCode();
  123. }
  124. }
  125. String localPath = String.format(FilePath.LOCAL_QRCODE_PATH, roomId);
  126. String ossPath = String.format(FilePath.OSS_QRCODE_PATH, roomId);
  127. wxService.getWxQRCode("roomId="+roomId,String.format(FilePath.LOCAL_QRCODE_PATH,roomId),0);
  128. if(!new File(localPath).exists()){
  129. throw new BusinessException(ResultCode.QRCODE_MISS);
  130. }
  131. uploadToOssUtil.uploadOss(localPath,ossPath);
  132. if(!uploadToOssUtil.existKey(ossPath)){
  133. FileUtil.del(localPath);
  134. throw new BusinessException(ResultCode.QRCODE_MISS);
  135. }
  136. room.setRoomQrCode(queryPath + ossPath);
  137. this.updateById(room);
  138. FileUtil.del(localPath);
  139. return queryPath + ossPath;
  140. }
  141. }