package com.fdkankan.tk.service.impl; import java.io.File; import java.util.ArrayList; import java.util.Date; import java.util.List; import cn.hutool.core.io.FileUtil; import cn.hutool.jwt.JWTUtil; import com.auth0.jwt.JWT; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.fdkankan.tk.common.FilePath; import com.fdkankan.tk.common.PageInfo; import com.fdkankan.tk.common.ResultCode; import com.fdkankan.tk.common.util.JwtUtil; import com.fdkankan.tk.common.util.UploadToOssUtil; import com.fdkankan.tk.entity.Room; import com.fdkankan.tk.exception.BusinessException; import com.fdkankan.tk.mapper.IRoomMapper; import com.fdkankan.tk.request.RoomAddParam; import com.fdkankan.tk.request.RoomListParam; import com.fdkankan.tk.response.RoomVo; import com.fdkankan.tk.response.SceneVo; import com.fdkankan.tk.service.IRoomNumService; import com.fdkankan.tk.service.IRoomService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.fdkankan.tk.service.ISceneService; import com.fdkankan.tk.service.IWxService; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; /** *

* 服务实现类 *

* * @author * @since 2022-09-19 */ @Service public class RoomServiceImpl extends ServiceImpl implements IRoomService { @Autowired IRoomNumService roomNumService; @Autowired ISceneService sceneService; @Autowired UploadToOssUtil uploadToOssUtil; @Autowired IWxService wxService; @Value("${upload.query-path}") private String queryPath; @Override public PageInfo pageList(RoomListParam param, String token) { String userName = JwtUtil.getUserName(token); LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(Room::getRoomUserName,userName); if (StringUtils.isNotBlank(param.getRoomTitle()) ) { wrapper.like(Room::getRoomTitle,param.getRoomTitle()); } wrapper.orderByDesc(Room::getCreateTime); Page page = this.page(new Page<>(param.getPageNum(), param.getPageSize()), wrapper); return PageInfo.PageInfo(page); } @Override public Room addOrUpdate(RoomAddParam param, String token) { if(param.getNumList() == null || param.getNumList().size() <=0){ throw new BusinessException(ResultCode.PARAM_MISS); } if(StringUtils.isEmpty(param.getRoomTitle()) ){ throw new BusinessException(ResultCode.PARAM_MISS); } Room room = new Room(); BeanUtils.copyProperties(param,room); room.setRoomUserName(JwtUtil.getUserName(token)); if(StringUtils.isEmpty(room.getRoomHostName())){ room.setRoomHostName(room.getRoomUserName()); } if(param.getRoomId() != null){ room.setUpdateTime(null); } this.saveOrUpdate(room); roomNumService.addBatch(room.getRoomId(),param.getNumList()); param.setRoomId(room.getRoomId()); return param; } @Override public void deleteById(Integer roomId) { roomNumService.deleteByRoomId(roomId); Room room = this.getById(roomId); if(StringUtils.isNotBlank(room.getRoomShareUrl())){ uploadToOssUtil.delete(room.getRoomShareUrl()); } this.removeById(roomId); } @Override public RoomVo getRoomInfo(Integer roomId) { Room room = this.getById(roomId); List numList = roomNumService.getListByRoomId(roomId); List list = new ArrayList<>(); if(numList.size() >0){ list = sceneService.getListByNumList(numList); } RoomVo roomVo = new RoomVo(); BeanUtils.copyProperties(room,roomVo); roomVo.setSceneData(list); return roomVo; } @Override public void roomAddView(Integer roomId) { LambdaUpdateWrapper wrapper = new LambdaUpdateWrapper<>(); wrapper.setSql("room_view_count = room_view_count +1"); wrapper.eq(Room::getRoomId,roomId); this.update(wrapper); } @Override public String getWxQrCode(Integer roomId) { Room room = this.getById(roomId); if(StringUtils.isNotBlank(room.getRoomQrCode())){ if(uploadToOssUtil.existKey(room.getRoomQrCode())){ return room.getRoomQrCode(); } } String localPath = String.format(FilePath.LOCAL_QRCODE_PATH, roomId); String ossPath = String.format(FilePath.OSS_QRCODE_PATH, roomId); wxService.getWxQRCode("roomId="+roomId,String.format(FilePath.LOCAL_QRCODE_PATH,roomId),0); if(!new File(localPath).exists()){ throw new BusinessException(ResultCode.QRCODE_MISS); } uploadToOssUtil.uploadOss(localPath,ossPath); if(!uploadToOssUtil.existKey(ossPath)){ FileUtil.del(localPath); throw new BusinessException(ResultCode.QRCODE_MISS); } room.setRoomQrCode(queryPath + ossPath); this.updateById(room); FileUtil.del(localPath); return queryPath + ossPath; } }