Bläddra i källkod

Merge remote-tracking branch 'origin/tk-room'

lyhzzz 1 år sedan
förälder
incheckning
853cd950fd

+ 6 - 0
src/main/java/com/fdkankan/ucenter/common/constants/ResultCode.java

@@ -17,4 +17,10 @@ public class ResultCode {
     public static final String FAILURE_MSG_400006  = "复制失败,场景资源文件不对" ;
     public static final int FAILURE_CODE_400007  = 400007 ;
     public static final String FAILURE_MSG_400007  = "该会员正在订阅中" ;
+
+    public static final int FAILURE_CODE_400008  = 400008 ;
+    public static final String FAILURE_MSG_400008  = "带看失败" ;
+
+    public static final int FAILURE_CODE_400009  = 400009 ;
+    public static final String FAILURE_MSG_400009  = "计算中场景无法带看" ;
 }

+ 22 - 1
src/main/java/com/fdkankan/ucenter/controller/SceneController.java

@@ -8,9 +8,13 @@ import com.fdkankan.common.util.JwtUtil;
 import com.fdkankan.ucenter.common.BaseController;
 import com.fdkankan.ucenter.common.DownloadStatusEnum;
 import com.fdkankan.ucenter.common.Result;
+import com.fdkankan.ucenter.common.constants.ResultCode;
 import com.fdkankan.ucenter.constant.LoginConstant;
+import com.fdkankan.ucenter.entity.ScenePlus;
 import com.fdkankan.ucenter.entity.User;
+import com.fdkankan.ucenter.httpClient.param.FdRoomVo;
 import com.fdkankan.ucenter.service.*;
+import com.fdkankan.ucenter.service.impl.TakeLookService;
 import com.fdkankan.ucenter.vo.request.RequestScene;
 import com.fdkankan.ucenter.vo.request.SceneParam;
 import com.fdkankan.ucenter.vo.response.DownloadProcessVo;
@@ -46,6 +50,8 @@ public class SceneController extends BaseController {
     ISceneService sceneService;
     @Autowired
     IScenePlusService scenePlusService;
+    @Autowired
+    TakeLookService takeLookService;
 
     @PostMapping("/findSceneNumber")
     public Result findSceneNumber(){
@@ -178,6 +184,21 @@ public class SceneController extends BaseController {
     }
 
 
-
+    /**
+     * 发起带看获取带看房间号
+     */
+    @GetMapping("/getTakeLookRoomId")
+    public Result getTakeLookRoomId(@RequestParam(value = "num") String num){
+        ScenePlus scenePlus = scenePlusService.getByNum(num);
+        if(scenePlus  == null){
+            throw new BusinessException(ResultCode.FAILURE_CODE_400002,ResultCode.FAILURE_MSG_400002);
+        }
+        if(scenePlus.getSceneStatus() != -2){
+            throw new BusinessException(ResultCode.FAILURE_CODE_400009,ResultCode.FAILURE_MSG_400009);
+        }
+        FdRoomVo fdRoomVo = takeLookService.getRoomIdByNum(num, scenePlus.getTitle(), getToken());
+        takeLookService.openRoom(fdRoomVo.getRoomId(),getToken());
+        return Result.success(fdRoomVo);
+    }
 }
 

+ 20 - 0
src/main/java/com/fdkankan/ucenter/httpClient/address/FdkkTakeLookAddressSource.java

@@ -0,0 +1,20 @@
+package com.fdkankan.ucenter.httpClient.address;
+
+import com.dtflys.forest.callback.AddressSource;
+import com.dtflys.forest.http.ForestAddress;
+import com.dtflys.forest.http.ForestRequest;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+
+@Component
+public class FdkkTakeLookAddressSource implements AddressSource {
+
+    @Value("${4dkk.takeLookService.basePath}")
+    private String basePath;
+
+
+    @Override
+    public ForestAddress getAddress(ForestRequest forestRequest) {
+        return new ForestAddress("","",null,basePath);
+    }
+}

+ 23 - 0
src/main/java/com/fdkankan/ucenter/httpClient/client/TakeLookClient.java

@@ -0,0 +1,23 @@
+package com.fdkankan.ucenter.httpClient.client;
+
+import com.dtflys.forest.annotation.*;
+import com.fdkankan.ucenter.common.ResultData;
+import com.fdkankan.ucenter.httpClient.address.FdkkTakeLookAddressSource;
+import com.fdkankan.ucenter.httpClient.param.FdRoomAddParam;
+import com.fdkankan.ucenter.httpClient.param.FdRoomVo;
+
+@Address(source = FdkkTakeLookAddressSource.class)
+public interface TakeLookClient {
+
+    /**
+     * 获取相机详情
+     */
+    @Post("/roomAddOrUpdate")
+    ResultData<FdRoomVo> roomAddOrUpdate(@JSONBody FdRoomAddParam param, @Header("token")  String token);
+
+    @Get("/openTheRoom")
+    void openRoom(@Query("roomId") String takeRoomId, @Header("token") String fdToken);
+
+    @Get("/getRoomIdByNum")
+    ResultData<FdRoomVo> getRoomIdByNum(@Query("num") String num, @Header("token") String fdToken);
+}

+ 14 - 0
src/main/java/com/fdkankan/ucenter/httpClient/param/FdRoomAddParam.java

@@ -0,0 +1,14 @@
+package com.fdkankan.ucenter.httpClient.param;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class FdRoomAddParam extends FdRoomVo {
+
+    private List<String> numList;   //场景码列表
+
+
+
+}

+ 108 - 0
src/main/java/com/fdkankan/ucenter/httpClient/param/FdRoomVo.java

@@ -0,0 +1,108 @@
+package com.fdkankan.ucenter.httpClient.param;
+
+import com.alibaba.fastjson.JSONArray;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.fdkankan.ucenter.typehandle.JsonArrayTypeHandler;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class FdRoomVo {
+
+    /**
+     * 房间id
+     */
+    private String roomId;
+
+    /**
+     * 房间标题
+     */
+    private String roomTitle;
+
+    /**
+     * 房间简介
+     */
+    private String roomInfo;
+
+    /**
+     * 房间主持人昵称
+     */
+    private String roomHostName;
+
+    /**
+     * 房间主持人用户名
+     */
+    private String roomUserName;
+
+    /**
+     * 房间封面图
+     */
+    private String roomCoverUrl;
+
+    /**
+     * 房间分享二维码
+     */
+    private String roomShareCode;
+    /**
+     * 房间主持人二维码
+     */
+    private String roomHostCode;
+    /**
+     * 房间分享链接
+     */
+    private String roomShareUrl;
+
+    private Integer tbStatus;
+
+    private String createTime;
+
+    private String updateTime;
+    //房间状态 ,0 未开启,1进行中,2已关闭
+    private Integer roomStatus;
+
+    private String lastLookTime;
+
+    //房间状态 ,0 不显示,1显示
+    private Integer isShow;
+
+    //使用开始时间    v1.1.0添加字段
+    private Date useStartTime;
+
+    //使用结束时间    v1.1.0添加字段
+    private Date useEndTime;
+
+    //房间密码  v1.1.0添加字段
+    private String visitPassword;
+
+    //带看锁,0没密码,1有密码  v1.1.0添加字段
+    private Integer takeLookLock;
+
+    //自由漫游锁,0没密码,1有密码  v1.1.0添加字段
+    private Integer freeRoamLock;
+
+    //房间最大人数设置
+    private Integer maxMan;
+    //分享次数
+    //主持人状态,0未进入房间,1已进入房间
+    private Integer hostStatus;
+
+    private String head;
+
+    private String gps;
+
+    private String platform;
+
+    @TableField(typeHandler = JsonArrayTypeHandler.class)
+    private JSONArray image;
+
+    @TableField(typeHandler = JsonArrayTypeHandler.class)
+    private JSONArray video;
+
+    @TableField(exist = false)
+    private Integer roomUserId;
+
+    @TableField(exist = false)
+    private Long roomViewCount;
+
+}

+ 1 - 0
src/main/java/com/fdkankan/ucenter/service/impl/SceneProServiceImpl.java

@@ -266,6 +266,7 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
         List<SimpleSceneVo> sceneVos = voList.stream().sorted(Comparator.comparing(SimpleSceneVo::getCreateTime).reversed()).collect(Collectors.toList());
 
         if(totalSpace == -1){  //  无限容量 全部解封
+            sceneVos =  sceneVos.stream().filter(e -> e.getPayStatus() !=1).collect(Collectors.toList());
             lockOrUnLockScenes(sceneVos,1,cameraType);
             return;
         }

+ 54 - 0
src/main/java/com/fdkankan/ucenter/service/impl/TakeLookService.java

@@ -0,0 +1,54 @@
+package com.fdkankan.ucenter.service.impl;
+
+import com.fdkankan.common.exception.BusinessException;
+import com.fdkankan.ucenter.common.ResultData;
+import com.fdkankan.ucenter.common.constants.ResultCode;
+import com.fdkankan.ucenter.httpClient.client.TakeLookClient;
+import com.fdkankan.ucenter.httpClient.param.FdRoomAddParam;
+import com.fdkankan.ucenter.httpClient.param.FdRoomVo;
+import com.fdkankan.ucenter.util.DateUserUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Date;
+import java.util.List;
+
+@Service
+public class TakeLookService {
+
+    @Autowired
+    TakeLookClient takeLookClient;
+
+    public ResultData<FdRoomVo> fdCreateTakeLookRoom(String roomTitle, List<String> numList, String roomId,String token) {
+        FdRoomAddParam param = new FdRoomAddParam();
+        param.setRoomTitle(roomTitle);
+        param.setNumList(numList);
+        param.setRoomId(roomId);
+        param.setMaxMan(30);
+        param.setUseStartTime(new Date());
+        param.setUseEndTime(DateUserUtil.getHoursTime(new Date()));
+        param.setPlatform("ucenter");
+        return takeLookClient.roomAddOrUpdate(param,token);
+    }
+    public FdRoomVo getRoomIdByNum(String num,String title,String token) {
+        ResultData<FdRoomVo> response = takeLookClient.getRoomIdByNum(num, token);
+        if(response.getCode() !=0){
+            ResultData<FdRoomVo> fdRoomAddParamResultData = fdCreateTakeLookRoom(title, Arrays.asList(num), null, token);
+            if(fdRoomAddParamResultData.getCode() !=0){
+                throw new BusinessException(fdRoomAddParamResultData.getCode(),fdRoomAddParamResultData.getMessage());
+            }
+            return fdRoomAddParamResultData.getData();
+        }else {
+            return response.getData();
+        }
+
+    }
+
+    public void openRoom(String roomId,String token) {
+
+         takeLookClient.openRoom(roomId, token);
+    }
+
+}

+ 43 - 0
src/main/java/com/fdkankan/ucenter/typehandle/ArrayStringTypeHandler.java

@@ -0,0 +1,43 @@
+package com.fdkankan.ucenter.typehandle;
+
+import cn.hutool.json.JSONUtil;
+import org.apache.ibatis.type.BaseTypeHandler;
+import org.apache.ibatis.type.JdbcType;
+import org.apache.ibatis.type.MappedJdbcTypes;
+import org.apache.ibatis.type.MappedTypes;
+
+import java.sql.CallableStatement;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+
+/**
+ *  存储到数据库, 将String数组转换成字符串;
+ *  从数据库获取数据, 将字符串转为LONG数组.
+ */
+@MappedTypes({String[].class})
+@MappedJdbcTypes({JdbcType.VARCHAR})
+public class ArrayStringTypeHandler extends BaseTypeHandler<String[]> {
+    private static String[] l = new String[]{};
+    @Override
+    public void setNonNullParameter(PreparedStatement ps, int i,
+                                    String[] parameter, JdbcType jdbcType) throws SQLException {
+        ps.setString(i, JSONUtil.toJsonStr(parameter));
+    }
+    @Override
+    public String[] getNullableResult(ResultSet rs, String columnName)
+            throws SQLException {
+        return JSONUtil.parseArray(rs.getString(columnName)).toArray(l);
+    }
+    @Override
+    public String[] getNullableResult(ResultSet rs, int columnIndex)
+            throws SQLException {
+        return JSONUtil.parseArray(rs.getString(columnIndex)).toArray(l);
+    }
+    @Override
+    public String[] getNullableResult(CallableStatement cs, int columnIndex)
+            throws SQLException {
+        return JSONUtil.parseArray(cs.getString(columnIndex)).toArray(l);
+    }
+}
+

+ 54 - 0
src/main/java/com/fdkankan/ucenter/typehandle/JsonArrayTypeHandler.java

@@ -0,0 +1,54 @@
+package com.fdkankan.ucenter.typehandle;
+
+import com.alibaba.fastjson.JSONArray;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.ibatis.type.BaseTypeHandler;
+import org.apache.ibatis.type.JdbcType;
+import org.apache.ibatis.type.MappedJdbcTypes;
+import org.apache.ibatis.type.MappedTypes;
+
+import java.sql.CallableStatement;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+
+/**
+ *  存储到数据库, 将JSON数组对象转换成字符串;
+ *  从数据库获取数据, 将字符串转为JSON数组对象.
+ */
+@MappedTypes({JSONArray.class})
+@MappedJdbcTypes({JdbcType.VARCHAR})
+public class JsonArrayTypeHandler extends BaseTypeHandler<JSONArray> {
+    @Override
+    public void setNonNullParameter(PreparedStatement ps, int i, JSONArray parameter,
+                                    JdbcType jdbcType) throws SQLException {
+        ps.setString(i, JSONArray.toJSONString(parameter));
+    }
+    @Override
+    public JSONArray getNullableResult(ResultSet rs, String columnName)
+            throws SQLException {
+        return parseArray(rs.getString(columnName));
+    }
+    @Override
+    public JSONArray getNullableResult(ResultSet rs, int columnIndex) throws SQLException {
+        return parseArray(rs.getString(columnIndex));
+    }
+    @Override
+    public JSONArray getNullableResult(CallableStatement cs, int columnIndex)
+            throws SQLException {
+        return parseArray(cs.getString(columnIndex));
+    }
+
+    public static JSONArray parseArray(String content) {
+        if(StringUtils.isBlank(content)){
+            return new JSONArray();
+        }
+        try {
+            return JSONArray.parseArray(content);
+        } catch (Exception e) {
+            return new JSONArray();
+        }
+    }
+
+}
+

+ 7 - 0
src/main/java/com/fdkankan/ucenter/util/DateUserUtil.java

@@ -137,4 +137,11 @@ public class DateUserUtil {
     public static void main(String[] args) {
         System.out.println(getLastZeroTime("2023-03-01 00:00:00"));
     }
+
+    public static Date getHoursTime(Date date){
+        Calendar calendar = Calendar.getInstance();
+        calendar.setTime(date);
+        calendar.add(Calendar.HOUR, 1);
+        return calendar.getTime();
+    }
 }