Bläddra i källkod

Merge branch 'test'

# Conflicts:
#	src/main/java/com/fdkankan/ucenter/service/impl/AppSceneService.java
lyhzzz 1 dag sedan
förälder
incheckning
1b51a56066
31 ändrade filer med 266 tillägg och 135 borttagningar
  1. 1 0
      src/main/java/com/fdkankan/ucenter/common/RedisKeyUtil.java
  2. 4 4
      src/main/java/com/fdkankan/ucenter/config/UcenterConfig.java
  3. 1 2
      src/main/java/com/fdkankan/ucenter/controller/SceneApplyController.java
  4. 8 0
      src/main/java/com/fdkankan/ucenter/controller/SceneController.java
  5. 6 0
      src/main/java/com/fdkankan/ucenter/controller/app/AppController.java
  6. 8 3
      src/main/java/com/fdkankan/ucenter/entity/FeedbackOption.java
  7. 13 6
      src/main/java/com/fdkankan/ucenter/entity/Invoice.java
  8. 10 0
      src/main/java/com/fdkankan/ucenter/entity/ScenePlus.java
  9. 10 0
      src/main/java/com/fdkankan/ucenter/exception/GlobalExceptionHandler.java
  10. 2 1
      src/main/java/com/fdkankan/ucenter/interceptor/AppInterceptor.java
  11. 3 0
      src/main/java/com/fdkankan/ucenter/mapper/IScenePlusMapper.java
  12. 1 0
      src/main/java/com/fdkankan/ucenter/service/IScene3dNumService.java
  13. 1 1
      src/main/java/com/fdkankan/ucenter/service/ISceneCooperationService.java
  14. 3 0
      src/main/java/com/fdkankan/ucenter/service/IScenePlusService.java
  15. 4 1
      src/main/java/com/fdkankan/ucenter/service/ISceneProService.java
  16. 8 9
      src/main/java/com/fdkankan/ucenter/service/impl/AppSceneService.java
  17. 9 0
      src/main/java/com/fdkankan/ucenter/service/impl/AppService.java
  18. 26 1
      src/main/java/com/fdkankan/ucenter/service/impl/InnerServiceImpl.java
  19. 5 3
      src/main/java/com/fdkankan/ucenter/service/impl/InvoiceServiceImpl.java
  20. 23 37
      src/main/java/com/fdkankan/ucenter/service/impl/LoginService.java
  21. 16 0
      src/main/java/com/fdkankan/ucenter/service/impl/Scene3dNumServiceImpl.java
  22. 10 10
      src/main/java/com/fdkankan/ucenter/service/impl/SceneCommonService.java
  23. 2 1
      src/main/java/com/fdkankan/ucenter/service/impl/SceneCooperationServiceImpl.java
  24. 6 0
      src/main/java/com/fdkankan/ucenter/service/impl/ScenePlusServiceImpl.java
  25. 48 52
      src/main/java/com/fdkankan/ucenter/service/impl/SceneProServiceImpl.java
  26. 13 0
      src/main/java/com/fdkankan/ucenter/vo/request/DemoSceneParam.java
  27. 5 0
      src/main/java/com/fdkankan/ucenter/vo/response/LaserSceneInfoVo.java
  28. 1 0
      src/main/java/com/fdkankan/ucenter/vo/response/SceneVo.java
  29. 18 3
      src/main/resources/mapper/ucenter/ScenePlusMapper.xml
  30. 1 1
      src/main/resources/mapper/ucenter/SceneProMapper.xml
  31. BIN
      src/main/resources/template/invoiceTemplate.xlsx

+ 1 - 0
src/main/java/com/fdkankan/ucenter/common/RedisKeyUtil.java

@@ -12,6 +12,7 @@ public class RedisKeyUtil {
     public static final String V4_SCENE_VISIT_CNT = "scene:visit:cnt";
 
     public static final String QRCODE= "4dkankan:qr_code:";
+    public static final String QRCODE_LOGIN= "4dkankan:qr_code:login:";
 
     public static final String SCENE_COOPERATION_NUM_USERID = "scene:cooperation:num:userId";
     public static final String SCENE_VERSION = "scenejson:num:%s";

+ 4 - 4
src/main/java/com/fdkankan/ucenter/config/UcenterConfig.java

@@ -25,9 +25,9 @@ public class UcenterConfig {
     @Value("${ucenter.contactUs.emailExTime}")
     private Long emailExTime;
 
-    @Value("${ucenter.register.cooperation-mesh-num: }")
-    private String registerCooperationMeshNum;
+    @Value("${ucenter.register.cp-num: }")
+    private String registerCpNum;
 
-    @Value("${ucenter.register.cooperation-laser-num: }")
-    private String registerCooperationLaserNum;
+    @Value("${queue.scene.copy:ucenter-copy-scene}")
+    private String copySceneQueue;
 }

+ 1 - 2
src/main/java/com/fdkankan/ucenter/controller/SceneApplyController.java

@@ -36,8 +36,7 @@ public class SceneApplyController {
     @PostMapping("/save")
     public ResultData save(@RequestBody SceneApply param){
         if(StringUtils.isEmpty(param.getName()) || StringUtils.isEmpty(param.getPhone())
-         || StringUtils.isEmpty(param.getCompany()) || StringUtils.isEmpty(param.getJob())
-        || StringUtils.isEmpty(param.getCountry())){
+         || StringUtils.isEmpty(param.getCompany()) || StringUtils.isEmpty(param.getEmail())){
             throw new BusinessException(ErrorCode.MISSING_REQUIRED_PARAMETERS);
         }
         if(param.getName().length() >50 || param.getCompany().length() >200){

+ 8 - 0
src/main/java/com/fdkankan/ucenter/controller/SceneController.java

@@ -23,6 +23,7 @@ import com.fdkankan.ucenter.httpClient.param.FdRoomVo;
 import com.fdkankan.ucenter.httpClient.param.UploadEditSceneParam;
 import com.fdkankan.ucenter.service.*;
 import com.fdkankan.ucenter.service.impl.TakeLookService;
+import com.fdkankan.ucenter.vo.request.DemoSceneParam;
 import com.fdkankan.ucenter.vo.request.RequestScene;
 import com.fdkankan.ucenter.vo.request.SceneParam;
 import com.fdkankan.ucenter.vo.response.DownloadProcessVo;
@@ -351,5 +352,12 @@ public class SceneController extends BaseController {
         }
         return Result.success();
     }
+
+
+    @PostMapping("/demoSceneList")
+    public Result demoSceneList(@RequestBody DemoSceneParam param) {
+        param.setUserId(getUserId());
+        return Result.success(sceneProService.demoSceneList(param));
+    }
 }
 

+ 6 - 0
src/main/java/com/fdkankan/ucenter/controller/app/AppController.java

@@ -44,6 +44,12 @@ public class AppController extends BaseController {
         appService.appLogin(param);
         return Result.success();
     }
+
+    @GetMapping("/qrCodeLogin")
+    public Result qrCodeLogin(@RequestParam(required = false) String uuid){
+        appService.qrCodeLogin(getUserName(),uuid);
+        return Result.success();
+    }
     /**
      * app登录
      * appUserName  相机设备嘛

+ 8 - 3
src/main/java/com/fdkankan/ucenter/entity/FeedbackOption.java

@@ -1,5 +1,6 @@
 package com.fdkankan.ucenter.entity;
 
+import com.alibaba.fastjson.JSONArray;
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
@@ -7,6 +8,8 @@ import com.baomidou.mybatisplus.annotation.TableLogic;
 import com.baomidou.mybatisplus.annotation.TableName;
 import java.io.Serializable;
 import java.util.Date;
+
+import com.fdkankan.ucenter.typehandle.JsonArrayTypeHandler;
 import lombok.Getter;
 import lombok.Setter;
 
@@ -20,7 +23,7 @@ import lombok.Setter;
  */
 @Getter
 @Setter
-@TableName("t_feedback_option")
+@TableName(value = "t_feedback_option",autoResultMap = true)
 public class FeedbackOption implements Serializable {
 
     private static final long serialVersionUID = 1L;
@@ -53,8 +56,8 @@ public class FeedbackOption implements Serializable {
     @TableField("sys_user_id")
     private Integer sysUserId;
 
-    @TableField("ai_option")
-    private String aiOption;
+    @TableField(typeHandler= JsonArrayTypeHandler.class)
+    private JSONArray aiOption;
 
     @TableField("model_api")
     private String modelApi;
@@ -65,5 +68,7 @@ public class FeedbackOption implements Serializable {
     @TableField("update_time")
     private Date updateTime;
 
+    @TableField("confidence_level")
+    private String confidenceLevel;
 
 }

+ 13 - 6
src/main/java/com/fdkankan/ucenter/entity/Invoice.java

@@ -259,17 +259,24 @@ public class Invoice implements Serializable {
     @TableField(exist = false)
     private String productName;
     @TableField(exist = false)
-    private BigDecimal productMoney;
-    @TableField(exist = false)
     private String payType;
+    @TableField(exist = false)
+    private String productMoneyStr;
+    @TableField(exist = false)
+    private String moneyStr;
 
 
-    public BigDecimal getProductMoney() {
+    public String getProductMoneyStr() {
         if(money != null && productCount != null){
-            return money.divide(BigDecimal.valueOf(productCount),2, RoundingMode.UP);
+            return  "US$ " + money.divide(BigDecimal.valueOf(productCount),2, RoundingMode.UP);
         }
-        return productMoney;
+        return productMoneyStr;
     }
 
-
+    public String getMoneyStr() {
+        if(money != null){
+            return "US$ " + money;
+        }
+        return moneyStr;
+    }
 }

+ 10 - 0
src/main/java/com/fdkankan/ucenter/entity/ScenePlus.java

@@ -121,4 +121,14 @@ public class ScenePlus implements Serializable {
     @TableField("rec_status")
     @TableLogic(value = "A",delval = "I")
     private String recStatus;
+
+
+    /**
+     * 是否示例场景,0否,1是
+     */
+    @TableField("demo")
+    private Integer demo;
+
+    @TableField("feedback_option_id")
+    private Integer feedbackOptionId;
 }

+ 10 - 0
src/main/java/com/fdkankan/ucenter/exception/GlobalExceptionHandler.java

@@ -3,8 +3,11 @@ package com.fdkankan.ucenter.exception;
 import com.fdkankan.common.exception.BusinessException;
 import com.fdkankan.ucenter.common.Result;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.catalina.connector.ClientAbortException;
+import org.springframework.http.HttpStatus;
 import org.springframework.web.bind.annotation.ExceptionHandler;
 import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.ResponseStatus;
 import org.springframework.web.bind.annotation.RestControllerAdvice;
 
 /**
@@ -41,4 +44,11 @@ public class GlobalExceptionHandler {
     public Result businessExceptionHandler2(com.fdkankan.ucenter.exception.BusinessException e) {
         return Result.failure(e.getCode(), e.getMessage());
     }
+
+    @ResponseBody
+    @ExceptionHandler(ClientAbortException.class)
+    public Result handleClientAbortException(ClientAbortException e) {
+        log.warn("客户端提前断开连接: {}", e.getMessage());
+        return Result.failure(200, "");
+    }
 }

+ 2 - 1
src/main/java/com/fdkankan/ucenter/interceptor/AppInterceptor.java

@@ -46,7 +46,8 @@ public class AppInterceptor implements HandlerInterceptor {
 				if(redisUtil.hasKey(redisKey2)){
 					redisUtil.expire(redisKey2,21800L);
 				}else {
-					redisUtil.set(redisKey2,token,21800L);
+					this.needLogin(request,response);
+					return false;
 				}
 				return true;
 			}

+ 3 - 0
src/main/java/com/fdkankan/ucenter/mapper/IScenePlusMapper.java

@@ -5,6 +5,7 @@ import com.fdkankan.ucenter.entity.ScenePlus;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.fdkankan.ucenter.vo.RelicsSceneInitQueueDTO;
 import com.fdkankan.ucenter.vo.request.AppSceneParam;
+import com.fdkankan.ucenter.vo.request.DemoSceneParam;
 import com.fdkankan.ucenter.vo.request.LaserSceneParam;
 import com.fdkankan.ucenter.vo.response.AppSceneVo;
 import com.fdkankan.ucenter.vo.response.SceneNumVo;
@@ -41,4 +42,6 @@ public interface IScenePlusMapper extends BaseMapper<ScenePlus> {
     Long getCountByAndIsObj(@Param("userId")Long userId, @Param("sceneSourceList")List<String> sourceList, @Param("isObj")Integer isObj,@Param("isLaser")Integer isLaser);
 
     List<SceneVo> getVoByNumList(@Param("numList")List<String> numList);
+
+    Page<SceneVo> domeSceneList(Page<Object> objectPage, DemoSceneParam param);
 }

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

@@ -14,4 +14,5 @@ import com.baomidou.mybatisplus.extension.service.IService;
 public interface IScene3dNumService extends IService<Scene3dNum> {
 
     String generateSceneNum(Integer type);
+    String generateSceneNumByOldNum(String oldNum);
 }

+ 1 - 1
src/main/java/com/fdkankan/ucenter/service/ISceneCooperationService.java

@@ -38,7 +38,7 @@ public interface ISceneCooperationService extends IService<SceneCooperation> {
 
     List<SceneResource> getResourceByNum(String sceneNum);
 
-    List<String> getNumByUserIds(List<Long> userIds);
+    List<String> getNumByUserIds(List<Long> userIds ,String sceneType );
 
     HashMap<String, List<User>> getByNumList(List<String> numList,String sceneType);
 

+ 3 - 0
src/main/java/com/fdkankan/ucenter/service/IScenePlusService.java

@@ -9,6 +9,7 @@ import com.fdkankan.ucenter.entity.ScenePlus;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.fdkankan.ucenter.vo.RelicsSceneInitQueueDTO;
 import com.fdkankan.ucenter.vo.ResponseScene;
+import com.fdkankan.ucenter.vo.request.DemoSceneParam;
 import com.fdkankan.ucenter.vo.request.LaserSceneParam;
 import com.fdkankan.ucenter.vo.request.RequestScene;
 import com.fdkankan.ucenter.vo.response.SceneNumVo;
@@ -69,4 +70,6 @@ public interface IScenePlusService extends IService<ScenePlus> {
     Long getCountByAndIsObj(Long userId, List<String> sourceList, Integer isObj,Integer isLaser);
 
     List<SceneVo> getVoByNumList(List<String> numList);
+
+    Page<SceneVo> domeSceneList(Page<Object> objectPage, DemoSceneParam param);
 }

+ 4 - 1
src/main/java/com/fdkankan/ucenter/service/ISceneProService.java

@@ -10,6 +10,7 @@ import com.fdkankan.ucenter.entity.ScenePlus;
 import com.fdkankan.ucenter.entity.ScenePro;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.fdkankan.ucenter.vo.ResponseScene;
+import com.fdkankan.ucenter.vo.request.DemoSceneParam;
 import com.fdkankan.ucenter.vo.request.RequestScene;
 import com.fdkankan.ucenter.vo.request.SceneParam;
 import com.fdkankan.ucenter.vo.response.*;
@@ -60,7 +61,7 @@ public interface ISceneProService extends IService<ScenePro> {
 
     Long copyV3Scene(ScenePro scenePro, String newNum, CameraDetail cameraDetail, CameraType cameraType) throws Exception;
 
-
+    void copyScene(String oldNum,Long userId);
     void delete(String sceneNum,Long userId,String platform);
 
     ScenePro getByUnicode(String unicode);
@@ -95,4 +96,6 @@ public interface ISceneProService extends IService<ScenePro> {
     Long getSpaceSumByCameraId(Long cameraId);
 
     void removePortrait(String num);
+
+    PageInfo demoSceneList(DemoSceneParam param);
 }

+ 8 - 9
src/main/java/com/fdkankan/ucenter/service/impl/AppSceneService.java

@@ -80,6 +80,13 @@ public class AppSceneService extends BaseController {
         if(StringUtils.isEmpty(param.getAppUserName()) && StringUtils.isEmpty(param.getPhoneNum())){
             throw new BusinessException(LoginConstant.FAILURE_CODE_3001, LoginConstant.FAILURE_MSG_3001);
         }
+
+        CameraTypelEnum cameraTypelEnum = CameraTypelEnum.getByCameraType(param.getCameraType());
+        if(cameraTypelEnum == null){
+            throw new BusinessException(CameraConstant.FAILURE_CODE_6028, CameraConstant.FAILURE_MSG_6028);
+        }
+        param.setIsLaser(cameraTypelEnum.getLaser());
+
         if(!StringUtils.isEmpty(param.getAppUserName())){
             Camera camera = cameraService.getByChildName(param.getAppUserName());
             if(camera == null){
@@ -99,7 +106,7 @@ public class AppSceneService extends BaseController {
             if(user == null){
                 throw new BusinessException(LoginConstant.FAILURE_CODE_3015, LoginConstant.FAILURE_MSG_3015);
             }
-            cooperationNumList = sceneCooperationService.getNumByUserIds(Arrays.asList(user.getId()));
+            cooperationNumList = sceneCooperationService.getNumByUserIds(Arrays.asList(user.getId()),param.getIsLaser()?"laser":"mesh");
             if(cooperationNumList.size() >0){
                 param.setCooperationNumList(cooperationNumList );
             }
@@ -109,19 +116,11 @@ public class AppSceneService extends BaseController {
         Set<String> copyNumSet = sceneCopyLogService.getCopyNumSet();
         param.setCopyNumSet(copyNumSet);
 
-        CameraTypelEnum cameraTypelEnum = CameraTypelEnum.getByCameraType(param.getCameraType());
-        if(cameraTypelEnum == null){
-            throw new BusinessException(CameraConstant.FAILURE_CODE_6028, CameraConstant.FAILURE_MSG_6028);
-        }
-
-        param.setIsLaser(cameraTypelEnum.getLaser());
 
         Page<AppSceneVo> page =  scenePlusMapper.pageList(new Page<>(param.getPageNum(),param.getPageSize()),param);
         List<String> numList = page.getRecords().stream().map(AppSceneVo::getNum).collect(Collectors.toList());
 
 
-
-
         HashMap<String, JSONObject> ssSceneMap = new HashMap<>();
         if(cameraTypelEnum.getLaser() ){  //深时
             ssSceneMap = laserService.list(numList,cameraTypelEnum.getSceneSource().get(0));

+ 9 - 0
src/main/java/com/fdkankan/ucenter/service/impl/AppService.java

@@ -122,6 +122,14 @@ public class AppService {
         redisUtil.set(param.getUuid(),param.getAppUserName(),60 * 5);
     }
 
+    public void qrCodeLogin(String userName, String uuid) {
+        if(StringUtils.isEmpty(userName) || StringUtils.isEmpty(uuid)){
+            throw new BusinessException(LoginConstant.FAILURE_CODE_3001, LoginConstant.FAILURE_MSG_3001);
+        }
+        redisUtil.set( RedisKeyUtil.QRCODE_LOGIN + uuid,userName,60 * 5);
+
+    }
+
     private Long commonCheckCamera(AppLoginParam param){
         Camera camera = cameraService.getBySnCodeAndPassword(param.getAppUserName(),param.getAppPassword());
         if(camera == null){
@@ -170,6 +178,7 @@ public class AppService {
         if(redisUtil.hasKey(redisKey)){
             redisUtil.del(redisKey);
         }
+        loginService.logout(token);
     }
 
     public JSONObject getNickName() {

+ 26 - 1
src/main/java/com/fdkankan/ucenter/service/impl/InnerServiceImpl.java

@@ -1,6 +1,7 @@
 package com.fdkankan.ucenter.service.impl;
 
 import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -67,6 +68,8 @@ public class InnerServiceImpl implements IInnerService {
 
     @Autowired
     private FYunFileServiceInterface fYunFileService;
+    @Autowired
+    IFeedbackOptionService feedbackOptionService;
 
     @Override
     public Result createTokenByNum(String num) {
@@ -210,8 +213,30 @@ public class InnerServiceImpl implements IInnerService {
                 if(sceneEditInfo != null){
                     vo.setImgVersion(sceneEditInfo.getImgVersion());
                 }
-                return vo;
             }
+            if(plus.getFeedbackOptionId() != null){
+                FeedbackOption feedbackOption = feedbackOptionService.getById(plus.getFeedbackOptionId());
+                JSONArray aiOption = feedbackOption.getAiOption();
+                if(aiOption == null || aiOption.isEmpty()){
+                    return vo;
+                }
+                List<HashMap<String,Object>> list = new ArrayList<>();
+                for (Object object : aiOption) {
+                    Integer id  = (Integer) object;
+                    FeedbackOption feedbackOption1 = feedbackOptionService.getById(id);
+                    if(feedbackOption1 != null && StringUtils.isNotBlank(feedbackOption1.getModelApi())){
+                        HashMap<String, Object> map2 = new HashMap<>();
+                        map2.put("name",feedbackOption1.getNameCn());
+                        map2.put("url",feedbackOption1.getModelApi());
+                        map2.put("confidenceLevel",feedbackOption1.getConfidenceLevel());
+                        list.add(map2);
+                    }
+                }
+                if(!list.isEmpty()){
+                    vo.setModels(list);
+                }
+            }
+            return vo;
         }
         throw new BusinessException(ResultCodeMsg.FAILURE_CODE_400002, ResultCodeMsg.FAILURE_MSG_400002);
     }

+ 5 - 3
src/main/java/com/fdkankan/ucenter/service/impl/InvoiceServiceImpl.java

@@ -16,7 +16,6 @@ import com.fdkankan.ucenter.common.OssPath;
 import com.fdkankan.ucenter.common.PageInfo;
 import com.fdkankan.ucenter.common.RandomCodeUtil;
 import com.fdkankan.ucenter.common.constants.NacosProperty;
-import com.fdkankan.ucenter.config.ThreadPoolConfig;
 import com.fdkankan.ucenter.entity.*;
 import com.fdkankan.ucenter.mapper.IInvoiceMapper;
 import com.fdkankan.ucenter.service.*;
@@ -31,6 +30,7 @@ import org.apache.commons.lang3.StringUtils;
 import org.aspectj.weaver.ast.Or;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.stereotype.Service;
 
 import java.math.BigDecimal;
@@ -39,6 +39,7 @@ import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Set;
+import java.util.concurrent.Executor;
 
 /**
  * <p>
@@ -251,11 +252,12 @@ public class InvoiceServiceImpl extends ServiceImpl<IInvoiceMapper, Invoice> imp
     }
 
     @Autowired
-    ThreadPoolConfig threadPoolConfig;
+    @Qualifier("taskExecutor")
+    private Executor taskExecutor;
 
     private void sendEmail(Invoice dbEntity) {
         //国际服直接发送邮件
-        threadPoolConfig.taskExecutor().execute(() -> {
+        taskExecutor.execute(() -> {
             log.info("异步任务执行,当前线程:" + Thread.currentThread().getName());
             if("aws".equals(NacosProperty.uploadType)  && dbEntity.getEmailAddress() != null){
                 MailTemplate mailTemplate = mailTemplateService.getTemplate(14, "en");

+ 23 - 37
src/main/java/com/fdkankan/ucenter/service/impl/LoginService.java

@@ -6,6 +6,7 @@ import com.fdkankan.common.exception.BusinessException;
 import com.fdkankan.common.util.*;
 import com.fdkankan.fyun.face.FYunFileServiceInterface;
 import com.fdkankan.image.MatrixToImageWriterUtil;
+import com.fdkankan.rabbitmq.util.RabbitMqProducer;
 import com.fdkankan.sign.AesUtil;
 import com.fdkankan.sms.SmsService;
 import com.fdkankan.ucenter.common.MailUtil;
@@ -17,9 +18,7 @@ import com.fdkankan.ucenter.common.constants.NacosProperty;
 import com.fdkankan.ucenter.config.UcenterConfig;
 import com.fdkankan.ucenter.constant.LoginConstant;
 import com.fdkankan.ucenter.constant.QrCodeFilePath;
-import com.fdkankan.ucenter.entity.Camera;
-import com.fdkankan.ucenter.entity.CameraDetail;
-import com.fdkankan.ucenter.entity.User;
+import com.fdkankan.ucenter.entity.*;
 import com.fdkankan.ucenter.service.*;
 import com.fdkankan.ucenter.vo.request.LoginParam;
 import com.fdkankan.ucenter.vo.request.RegisterParam;
@@ -66,6 +65,8 @@ public class LoginService {
     UcenterConfig ucenterConfig;
     @Autowired
     ISceneCooperationService sceneCooperationService;
+    @Autowired
+    ISceneProService sceneProService;
 
 
     public LoginVo login(User user){
@@ -196,26 +197,27 @@ public class LoginService {
         }
         param.setPassword(password);
         User register = userService.register(param);
-        sceneCooperationService.saveByRegister(register,ucenterConfig.getRegisterCooperationMeshNum(),"mesh");
-        sceneCooperationService.saveByRegister(register,ucenterConfig.getRegisterCooperationLaserNum(),"laser");
+        //sceneCooperationService.saveByRegister(register,ucenterConfig.getRegisterCooperationMeshNum(),"mesh");
+        //sceneCooperationService.saveByRegister(register,ucenterConfig.getRegisterCooperationLaserNum(),"laser");
+        sceneProService.copyScene(ucenterConfig.getRegisterCpNum(),register.getId());
     }
 
     public JSONObject createLoginQrCode() throws Exception {
-        String uuid = NumberUtils.getUUID();
-        String filePath = QrCodeFilePath.LOGIN_QR_CODE_PATH + uuid + ".png";
-        File file = new File(QrCodeFilePath.LOGO_IMAGE_LOCAL);
-        if(!file.exists()){
-            fYunFileServiceInterface.downloadFile(QrCodeFilePath.LOGO_IMAGE_OSS,QrCodeFilePath.LOGO_IMAGE_LOCAL);
-        }
-        MatrixToImageWriterUtil.createQRCode(NacosProperty.getMainUrl() + "app/index.html?m="+uuid, filePath,true,QrCodeFilePath.LOGO_IMAGE_LOCAL);
+        String uuid = "4dkankan_"+NumberUtils.getUUID();
+//        String filePath = QrCodeFilePath.LOGIN_QR_CODE_PATH + uuid + ".png";
+//        File file = new File(QrCodeFilePath.LOGO_IMAGE_LOCAL);
+//        if(!file.exists()){
+//            fYunFileServiceInterface.downloadFile(QrCodeFilePath.LOGO_IMAGE_OSS,QrCodeFilePath.LOGO_IMAGE_LOCAL);
+//        }
+//        MatrixToImageWriterUtil.createQRCode(NacosProperty.getMainUrl() + "app/index.html?m="+uuid, filePath,true,QrCodeFilePath.LOGO_IMAGE_LOCAL);
         JSONObject json = new JSONObject();
-        json.put("url", filePath.replace(ConstantFilePath.BASE_PATH, ""));
+//       json.put("url", filePath.replace(ConstantFilePath.BASE_PATH, ""));
         json.put("uuid", uuid);
         redisUtil.set(RedisKeyUtil.QRCODE+uuid,uuid,5*60);
         return json;
     }
 
-    public JSONObject sendUserInfo(String uuid) {
+    public Object sendUserInfo(String uuid) {
         if (StringUtils.isEmpty(uuid)){
             throw new BusinessException(LoginConstant.FAILURE_CODE_3001, LoginConstant.FAILURE_MSG_3001);
         }
@@ -224,31 +226,18 @@ public class LoginService {
             FileUtils.delFile(QrCodeFilePath.LOGIN_QR_CODE_PATH + uuid + ".png");
             throw new BusinessException(LoginConstant.FAILURE_CODE_3035, LoginConstant.FAILURE_MSG_3035);
         }
-        if(!redisUtil.hasKey(uuid)){
-            throw new BusinessException(LoginConstant.FAILURE_CODE_3004, LoginConstant.FAILURE_MSG_3004);
-        }
-        String childName = redisUtil.get(uuid);
-        Camera camera = cameraService.getBySnCode(childName);
-        if(camera == null){
+        if(!redisUtil.hasKey(RedisKeyUtil.QRCODE_LOGIN +uuid)){
             throw new BusinessException(LoginConstant.FAILURE_CODE_3004, LoginConstant.FAILURE_MSG_3004);
         }
-        CameraDetail cameraDetail = cameraDetailService.getByCameraId(camera.getId());
-        if(cameraDetail == null){
+
+        String userName = redisUtil.get(RedisKeyUtil.QRCODE_LOGIN +uuid);
+        User user = userService.getByUserName(userName);
+        if(user == null){
             throw new BusinessException(LoginConstant.FAILURE_CODE_3004, LoginConstant.FAILURE_MSG_3004);
         }
-        UserVo userVo = new UserVo();
-        userVo.setUserName(childName);
-        userVo.setId(cameraDetail.getUserId());
-        userVo.setCameraId(camera.getId());
-        userVo.setCameraLogin(1);
-        String token = this.redisLogin(childName,JSONObject.toJSONString(userVo),"camera");
-        JSONObject obj = new JSONObject();
-        obj.put("token",token);
-        obj.put("childName",childName);
-        obj.put("to",1);
-        redisUtil.del(uuid);
+        redisUtil.del(RedisKeyUtil.QRCODE_LOGIN +uuid);
         FileUtils.deleteFile(QrCodeFilePath.LOGIN_QR_CODE_PATH +uuid +".png");
-        return obj;
+        return this.login(userService.getByUserName(userName));
     }
 
 
@@ -349,7 +338,4 @@ public class LoginService {
         return login(param);
     }
 
-    public static void main(String[] args) throws Exception{
-        System.out.println(AesUtil.encrypt("Zkturing@2025!"));
-    }
 }

+ 16 - 0
src/main/java/com/fdkankan/ucenter/service/impl/Scene3dNumServiceImpl.java

@@ -50,4 +50,20 @@ public class Scene3dNumServiceImpl extends ServiceImpl<IScene3dNumMapper, Scene3
 
     }
 
+    @Override
+    public String generateSceneNumByOldNum(String oldNum) {
+        String sceneNum = redisUtil.lLeftPop(RedisKeyUtil.SCENE_UNUSED_NUMS);
+        if(StringUtils.isEmpty(sceneNum)){
+            throw new BusinessException(ResultCodeMsg.FAILURE_CODE_400001, ResultCodeMsg.FAILURE_MSG_400001);
+        }
+        if(StringUtils.isEmpty(oldNum)){
+            throw new BusinessException(ResultCodeMsg.FAILURE_CODE_400002, ResultCodeMsg.FAILURE_MSG_400002);
+        }
+        if(!oldNum.contains("-")){
+            throw new BusinessException(ResultCodeMsg.FAILURE_CODE_400002, ResultCodeMsg.FAILURE_MSG_400002);
+        }
+        String[] split = oldNum.split("-");
+        return split[0] +"-"+ sceneNum;
+    }
+
 }

+ 10 - 10
src/main/java/com/fdkankan/ucenter/service/impl/SceneCommonService.java

@@ -281,23 +281,23 @@ public class SceneCommonService {
         if(scenePro != null){
             space = scenePro.getSpace();
         }
-        CameraDetail cameraDetail = cameraDetailService.getByCameraId(cameraId);
-        CameraType cameraType = cameraTypeService.getByCameraType(cameraDetail.getType());
-
-        Boolean checkSpace = cameraDetailService.checkSpace(cameraDetail,cameraType);
-        if(!checkSpace && (location == null || location != 7)){
-            sceneProService.lockOrUnLockScenes(new ArrayList<>(), Arrays.asList(newNum),-2,cameraType.getIsLaser(),null);
+        if(cameraId != null){
+            CameraDetail cameraDetail = cameraDetailService.getByCameraId(cameraId);
+            CameraType cameraType = cameraTypeService.getByCameraType(cameraDetail.getType());
+            Boolean checkSpace = cameraDetailService.checkSpace(cameraDetail,cameraType);
+            if(!checkSpace && (location == null || location != 7)){
+                sceneProService.lockOrUnLockScenes(new ArrayList<>(), Arrays.asList(newNum),-2,cameraType.getIsLaser(),null);
+            }
+            cameraDetailService.addUsedSpace(cameraDetail,space);
         }
-        cameraDetailService.addUsedSpace(cameraDetail,space);
-
 
-        if(cameraType.getIsLaser() == 1 && scenePlus != null){
+        if(scenePlus != null){
             LambdaUpdateWrapper<ScenePlus> wrapper = new LambdaUpdateWrapper<>();
             wrapper.eq(ScenePlus::getId,scenePlus.getId());
             wrapper.set(ScenePlus::getSceneStatus,-2);
             scenePlusService.update(wrapper);
         }
-        if(cameraType.getIsLaser() == 1 && scenePro != null){
+        if(scenePro != null){
             LambdaUpdateWrapper<ScenePro> wrapper = new LambdaUpdateWrapper<>();
             wrapper.eq(ScenePro::getId,scenePro.getId());
             wrapper.set(ScenePro::getStatus,-2);

+ 2 - 1
src/main/java/com/fdkankan/ucenter/service/impl/SceneCooperationServiceImpl.java

@@ -611,9 +611,10 @@ public class SceneCooperationServiceImpl extends ServiceImpl<ISceneCooperationMa
     }
 
     @Override
-    public List<String> getNumByUserIds(List<Long> userIds) {
+    public List<String> getNumByUserIds(List<Long> userIds,String sceneType ) {
         LambdaQueryWrapper<SceneCooperation> wrapper = new LambdaQueryWrapper<>();
         wrapper.in(SceneCooperation::getUserId,userIds);
+        wrapper.eq(SceneCooperation::getSceneType,sceneType);
         Set<String> collect = this.list(wrapper).parallelStream().map(SceneCooperation::getSceneNum).collect(Collectors.toSet());
         return new ArrayList<>(collect);
     }

+ 6 - 0
src/main/java/com/fdkankan/ucenter/service/impl/ScenePlusServiceImpl.java

@@ -36,6 +36,7 @@ import java.util.stream.Collectors;
 import com.fdkankan.ucenter.util.RoamingPointUtil;
 import com.fdkankan.ucenter.util.SceneResourcePath;
 import com.fdkankan.ucenter.vo.RelicsSceneInitQueueDTO;
+import com.fdkankan.ucenter.vo.request.DemoSceneParam;
 import com.fdkankan.ucenter.vo.request.LaserSceneParam;
 import com.fdkankan.ucenter.vo.request.RequestScene;
 import com.fdkankan.ucenter.vo.response.SceneNumVo;
@@ -451,4 +452,9 @@ public class ScenePlusServiceImpl extends ServiceImpl<IScenePlusMapper, ScenePlu
     public List<SceneVo> getVoByNumList(List<String> numList) {
         return this.getBaseMapper().getVoByNumList(numList);
     }
+
+    @Override
+    public Page<SceneVo> domeSceneList(Page<Object> objectPage, DemoSceneParam param) {
+        return this.getBaseMapper().domeSceneList(objectPage,param);
+    }
 }

+ 48 - 52
src/main/java/com/fdkankan/ucenter/service/impl/SceneProServiceImpl.java

@@ -9,6 +9,7 @@ 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.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fdkankan.common.constant.ErrorCode;
 import com.fdkankan.common.constant.SceneConstant;
 import com.fdkankan.common.constant.SceneKind;
 import com.fdkankan.common.constant.SceneVersionType;
@@ -38,6 +39,7 @@ import com.fdkankan.ucenter.service.*;
 import com.fdkankan.ucenter.util.DateUserUtil;
 import com.fdkankan.ucenter.util.SceneResourcePath;
 import com.fdkankan.ucenter.vo.ResponseScene;
+import com.fdkankan.ucenter.vo.request.DemoSceneParam;
 import com.fdkankan.ucenter.vo.request.RequestScene;
 import com.fdkankan.ucenter.vo.request.SceneParam;
 import com.fdkankan.ucenter.vo.response.*;
@@ -45,6 +47,7 @@ import com.fdkankan.ucenter.vo.response.*;
 import java.io.File;
 import java.util.*;
 import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.Executor;
 import java.util.concurrent.ExecutorService;
 import java.util.stream.Collectors;
 
@@ -53,6 +56,7 @@ import org.apache.commons.lang3.StringUtils;
 import org.joda.time.DateTime;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.util.ObjectUtils;
@@ -130,33 +134,6 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
     public HashMap<String, SceneNumVo> findSceneNumber(String token) {
         HashMap<String, SceneNumVo> hashMap = new HashMap<>();
         User user = userService.getByUserName(JwtUtil.getUsername(token));
-//        SceneNumVo sceneNumVoKk = getSceneNumVoByType(Arrays.asList(1,2,12,13,14), user.getId());
-//        Integer oldNum = sceneService.getCountByUserId(user.getId());
-//        sceneNumVoKk.setSceneNum( oldNum + sceneNumVoKk.getSceneNum());
-//        sceneNumVoKk.setTotalNum(oldNum + sceneNumVoKk.getTotalNum());
-//
-//        SceneNumVo sceneNumVoKj = getSceneNumVoByType(Collections.singletonList(3), user.getId());
-//
-//        SceneNumVo sceneNumVoSS = fdkkLaserService.getLaserSceneNumByUser(token,4);
-//        SceneNumVo sceneNumVoSSObj = getSceneNumVoByObjType(Arrays.asList(4), user.getId());
-//
-//        SceneNumVo sceneNumVoSG = fdkkLaserService.getLaserSceneNumByUser(token,5);
-//        SceneNumVo sceneNumVoSGObj = getSceneNumVoByObjType(Arrays.asList(5), user.getId());
-//
-//        SceneNumVo sceneNumVoE57 = fdkkLaserService.getLaserSceneNumByUser(token,57);
-//        SceneNumVo sceneNumVoE57Obj = getSceneNumVoByObjType(Arrays.asList(57), user.getId());
-//
-//        SceneNumVo sceneNumVoSX = fdkkLaserService.getLaserSceneNumByUser(token,7);
-//        hashMap.put("kk",sceneNumVoKk);
-//        hashMap.put("kJ",sceneNumVoKj);
-//        hashMap.put("SS",sceneNumVoSS);
-//        hashMap.put("SS_OBJ",sceneNumVoSSObj);
-//        hashMap.put("SG",sceneNumVoSG);
-//        hashMap.put("SG_OBJ",sceneNumVoSGObj);
-//        hashMap.put("e57",sceneNumVoE57);
-//        hashMap.put("e57_OBJ",sceneNumVoE57Obj);
-//        hashMap.put("sx",sceneNumVoSX);
-
 
         List<SceneNumVo> groupBySceneSouceV3 = scenePlusService.getGroupBySceneSouceV3(user.getId());
         List<SceneNumVo> groupBySceneSouceV4 = scenePlusService.getGroupBySceneSouceV4(user.getId());
@@ -227,24 +204,6 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
         sceneNumVo.setTotalNum(sceneNumVo.getSceneNum() + sceneNumVo.getCooperationSceneNum());
         return sceneNumVo;
     }
-    private SceneNumVo getSceneNumVoByObjType(List<Integer> sceneSourceList, Long userId){
-        SceneNumVo sceneNumVo = new SceneNumVo();
-        LambdaQueryWrapper<ScenePro> queryWrapper = new LambdaQueryWrapper<>();
-        queryWrapper.eq(ScenePro::getUserId, userId);
-        queryWrapper.in(ScenePro::getSceneSource, sceneSourceList);
-        queryWrapper.eq(ScenePro::getIsUpgrade, 0);
-        queryWrapper.eq(ScenePro::getIsObj,1);
-        Integer sceneNum = Math.toIntExact(this.count(queryWrapper));
-        List<ScenePlus> scenePlusList = scenePlusService.getCountByUserIdAndSceneSource(userId,sceneSourceList,1);
-
-        long plusCount = scenePlusList.size();
-        Long cooperNum = sceneCooperationService.getCooperationSceneNum(userId, sceneSourceList);
-
-        sceneNumVo.setCooperationSceneNum(cooperNum);
-        sceneNumVo.setSceneNum(sceneNum + plusCount);
-        sceneNumVo.setTotalNum(sceneNumVo.getSceneNum() + sceneNumVo.getCooperationSceneNum());
-        return sceneNumVo;
-    }
 
 
     @Override
@@ -288,10 +247,11 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
     }
 
     @Autowired
-    ThreadPoolConfig threadPoolConfig;
+    @Qualifier("taskExecutor")
+    private Executor taskExecutor;
     @Override
     public void lockOrUnLockBySpace(CameraDetail cameraDetail, Long cameraId) {
-        threadPoolConfig.taskExecutor().execute(() -> {
+        taskExecutor.execute(() -> {
             log.info("异步任务执行,当前线程:" + Thread.currentThread().getName());
             List<SimpleSceneVo> voList = this.getSimpleSceneVo(cameraDetail);
             if(voList .size() <=0){
@@ -554,7 +514,7 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
         if(StringUtils.isNotEmpty(param.getSearchKey()) && !"11".equals(param.getType())){
             List<Long> userIds = userService.getLikeUserName(param.getSearchKey());
             if(userIds.size() > 0){
-                List<String> cooperationList = sceneCooperationService.getNumByUserIds(userIds);
+                List<String> cooperationList = sceneCooperationService.getNumByUserIds(userIds,"mesh");
                 param.setNumList(cooperationList);
             }
         }
@@ -801,9 +761,6 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
     @Autowired
     RabbitMqProducer rabbitMqProducer;
 
-    @Value("${queue.scene.copy:ucenter-copy-scene}")
-    private String copySceneQueue;
-
     private void copyScene(String oldNum,CameraDetail detailEntity,ScenePro scenePro,ScenePlus scenePlus,CameraType cameraType) throws Exception {
         String newNum = scene3dNumService.generateSceneNum(detailEntity.getType());
         Long userId = scenePro == null ? scenePlus.getUserId() :scenePro.getUserId();
@@ -811,7 +768,23 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
         HashMap<String,String > map = new HashMap<>();
         map.put("oldNum",oldNum);
         map.put("newNum",newNum);
-        rabbitMqProducer.sendByWorkQueue(copySceneQueue,map);
+        rabbitMqProducer.sendByWorkQueue(ucenterConfig.getCopySceneQueue(),map);
+    }
+
+    public void copyScene(String num,Long userId) {
+        if(StringUtils.isBlank(num)){
+            return;
+        }
+        String[] split = num.split(",");
+        for (String oldNum : split) {
+            String newNum = scene3dNumService.generateSceneNumByOldNum(oldNum);
+            sceneCopyLogService.saveByNum(oldNum,newNum,userId);
+            HashMap<String,Object > map = new HashMap<>();
+            map.put("oldNum",oldNum);
+            map.put("newNum",newNum);
+            map.put("userId",userId);
+            rabbitMqProducer.sendByWorkQueue(ucenterConfig.getCopySceneQueue(),map);
+        }
     }
 
     @Override
@@ -1418,4 +1391,27 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
 
 
     }
+
+    @Override
+    public PageInfo demoSceneList(DemoSceneParam param) {
+        if(param.getUserId() == null){
+            throw new BusinessException(ErrorCode.USER_NOT_LOGIN);
+        }
+        if(param.getIsObj() == 0){  //点云列表
+            param.setSceneSourceList(SceneSourceUtil.LaserSceneSource);
+        }
+        Page<SceneVo> page = scenePlusService.domeSceneList(new Page<>(param.getPageNum(),param.getPageSize()),param);
+        if(param.getIsObj() == 0){  //点云列表
+            for (SceneVo record : page.getRecords()) {
+                if(ucenterConfig.getActive().contains("prod")){
+                    record.setWebSite(ucenterConfig.getBasePath() +"/index.html?m="+record.getNum());
+                }else {
+                    record.setWebSite(ucenterConfig.getBasePath() +"/uat/index.html?m="+record.getNum());
+                }
+                record.setSceneName(record.getLaserTitle());
+                record.setIsLaser(true);
+            }
+        }
+        return PageInfo.PageInfo(page);
+    }
 }

+ 13 - 0
src/main/java/com/fdkankan/ucenter/vo/request/DemoSceneParam.java

@@ -0,0 +1,13 @@
+package com.fdkankan.ucenter.vo.request;
+
+import com.fdkankan.ucenter.common.RequestBase;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class DemoSceneParam extends RequestBase {
+    private Integer isObj = 0;
+    private Long userId;
+    private List<Integer> sceneSourceList;
+}

+ 5 - 0
src/main/java/com/fdkankan/ucenter/vo/response/LaserSceneInfoVo.java

@@ -2,6 +2,9 @@ package com.fdkankan.ucenter.vo.response;
 
 import lombok.Data;
 
+import java.util.HashMap;
+import java.util.List;
+
 @Data
 public class LaserSceneInfoVo {
     private String num;
@@ -17,4 +20,6 @@ public class LaserSceneInfoVo {
     private Integer status;
     private Integer payStatus;
     private String title;
+
+    private List<HashMap<String,Object>> models;
 }

+ 1 - 0
src/main/java/com/fdkankan/ucenter/vo/response/SceneVo.java

@@ -22,6 +22,7 @@ public class SceneVo {
     private List<Long> cooperationUserIdList;
     private List<String> cooperationUserNameList;         //协作者
     private Integer isFolder;                   //0 场景,1文件夹
+    private Boolean isLaser = false;
     private String num;
     private String sceneName;
     private String sceneDec;

+ 18 - 3
src/main/resources/mapper/ucenter/ScenePlusMapper.xml

@@ -112,13 +112,13 @@
 
     <select id="getGroupBySceneSouceV4" resultType="com.fdkankan.ucenter.vo.response.SceneNumVo">
         SELECT scene_source as type,count(1) as sceneNum,e.is_obj from t_scene_plus s LEFT JOIN t_scene_plus_ext e on s.id = e.plus_id
-        WHERE s.rec_status = 'A' and s.user_id = #{userId}
+        WHERE s.rec_status = 'A' and s.user_id = #{userId} and s.demo =0
         GROUP BY scene_source,is_obj
     </select>
 
     <select id="getCountByUserIdAndSceneSource" resultType="com.fdkankan.ucenter.entity.ScenePlus">
         select s.* from t_scene_plus s LEFT JOIN t_scene_plus_ext e on s.id = e.plus_id
-        WHERE s.rec_status = 'A' and s.user_id = #{userId}
+        WHERE s.rec_status = 'A' and s.user_id = #{userId} and s.demo =0
         <if test="sceneSourceList !=null and sceneSourceList.size >0">
             and s.scene_source in
             <foreach collection="sceneSourceList" item="sceneSource" open="(" separator="," close=")">
@@ -134,7 +134,7 @@
     <select id="getCountByAndIsObj" resultType="java.lang.Long">
         SELECT
         (select count(s.id) from t_scene_plus s LEFT JOIN t_scene_plus_ext e on s.id = e.plus_id
-        WHERE s.rec_status = 'A' and s.user_id = #{userId}
+        WHERE s.rec_status = 'A' and s.user_id = #{userId} and s.demo =0
         <if test="sceneSourceList !=null and sceneSourceList.size >0">
             and s.scene_source in
             <foreach collection="sceneSourceList" item="sceneSource" open="(" separator="," close=")">
@@ -185,4 +185,19 @@
             #{num}
         </foreach>
     </select>
+
+    <select id="domeSceneList" resultType="com.fdkankan.ucenter.vo.response.SceneVo">
+        select *,s.scene_status as status,s.title as scene_name,1 as isUpgrade from t_scene_plus s left join  t_scene_plus_ext e on s.id = e.plus_id
+        where s.rec_status= 'A' and demo = 1
+        and s.user_id = #{param.userId}
+        <if test="param.sceneSourceList !=null and param.sceneSourceList.size >0">
+            and s.scene_source in
+            <foreach collection="param.sceneSourceList" item="sceneSource" open="(" separator="," close=")">
+                #{sceneSource}
+            </foreach>
+        </if>
+        <if test="param.isObj !=null and param.isObj == 1">
+            and e.is_obj =1
+        </if>
+    </select>
 </mapper>

+ 1 - 1
src/main/resources/mapper/ucenter/SceneProMapper.xml

@@ -43,7 +43,7 @@
         FROM t_scene_plus p
         LEFT JOIN t_scene_plus_ext e on p.id = e.plus_id
         <include refid="sceneJoinCamera"></include>
-        WHERE p.rec_status = 'A'
+        WHERE p.rec_status = 'A' and p.demo =0
         <include refid="commonWhere"></include>
         <include refid="commonSceneWhere"></include>
         <if test="param.sceneName !=null and param.sceneName !=''">

BIN
src/main/resources/template/invoiceTemplate.xlsx