|
@@ -1,9 +1,36 @@
|
|
package com.fdkankan.tk.service.impl;
|
|
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.entity.Room;
|
|
|
|
+import com.fdkankan.tk.exception.BusinessException;
|
|
import com.fdkankan.tk.mapper.IRoomMapper;
|
|
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.fdkankan.tk.service.IRoomService;
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
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;
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -17,4 +44,112 @@ import org.springframework.stereotype.Service;
|
|
@Service
|
|
@Service
|
|
public class RoomServiceImpl extends ServiceImpl<IRoomMapper, Room> implements IRoomService {
|
|
public class RoomServiceImpl extends ServiceImpl<IRoomMapper, Room> 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<Room> wrapper = new LambdaQueryWrapper<>();
|
|
|
|
+ wrapper.eq(Room::getRoomUserName,userName);
|
|
|
|
+ if (StringUtils.isNotBlank(param.getRoomTitle()) ) {
|
|
|
|
+ wrapper.like(Room::getRoomTitle,param.getRoomTitle());
|
|
|
|
+ }
|
|
|
|
+ wrapper.orderByDesc(Room::getCreateTime);
|
|
|
|
+
|
|
|
|
+ Page<Room> 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<String> numList = roomNumService.getListByRoomId(roomId);
|
|
|
|
+ List<SceneVo> 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<Room> 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.getRoomShareUrl())){
|
|
|
|
+ if(uploadToOssUtil.existKey(room.getRoomShareUrl())){
|
|
|
|
+ return room.getRoomShareUrl();
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ 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.setRoomShareUrl(queryPath + ossPath);
|
|
|
|
+ this.updateById(room);
|
|
|
|
+ FileUtil.del(localPath);
|
|
|
|
+ return queryPath + ossPath;
|
|
|
|
+ }
|
|
}
|
|
}
|