Browse Source

Merge remote-tracking branch 'origin/task-lyh-21989'

# Conflicts:
#	src/main/java/com/fdkankan/ucenter/common/BaseController.java
lyhzzz 2 years ago
parent
commit
791778d147
25 changed files with 336 additions and 44 deletions
  1. 21 0
      src/main/java/com/fdkankan/ucenter/common/BaseController.java
  2. 1 1
      src/main/java/com/fdkankan/ucenter/controller/CameraController.java
  3. 1 1
      src/main/java/com/fdkankan/ucenter/controller/DeviceSceneController.java
  4. 1 1
      src/main/java/com/fdkankan/ucenter/controller/SceneController.java
  5. 4 0
      src/main/java/com/fdkankan/ucenter/controller/SceneCooperationController.java
  6. 21 0
      src/main/java/com/fdkankan/ucenter/controller/SceneDelLogController.java
  7. 3 2
      src/main/java/com/fdkankan/ucenter/controller/app/AppSceneController.java
  8. 64 0
      src/main/java/com/fdkankan/ucenter/entity/SceneDelLog.java
  9. 1 1
      src/main/java/com/fdkankan/ucenter/generate/AutoGenerate.java
  10. 18 0
      src/main/java/com/fdkankan/ucenter/mapper/ISceneDelLogMapper.java
  11. 1 1
      src/main/java/com/fdkankan/ucenter/service/ICameraService.java
  12. 1 1
      src/main/java/com/fdkankan/ucenter/service/IFolderSceneService.java
  13. 13 0
      src/main/java/com/fdkankan/ucenter/service/IMailTemplateService.java
  14. 17 0
      src/main/java/com/fdkankan/ucenter/service/ISceneDelLogService.java
  15. 3 3
      src/main/java/com/fdkankan/ucenter/service/ISceneProService.java
  16. 2 5
      src/main/java/com/fdkankan/ucenter/service/impl/AppSceneService.java
  17. 33 19
      src/main/java/com/fdkankan/ucenter/service/impl/CameraServiceImpl.java
  18. 2 2
      src/main/java/com/fdkankan/ucenter/service/impl/FolderSceneServiceImpl.java
  19. 1 1
      src/main/java/com/fdkankan/ucenter/service/impl/FolderServiceImpl.java
  20. 75 1
      src/main/java/com/fdkankan/ucenter/service/impl/MailTemplateServiceImpl.java
  21. 6 0
      src/main/java/com/fdkankan/ucenter/service/impl/SceneCooperationServiceImpl.java
  22. 31 0
      src/main/java/com/fdkankan/ucenter/service/impl/SceneDelLogServiceImpl.java
  23. 9 5
      src/main/java/com/fdkankan/ucenter/service/impl/SceneProServiceImpl.java
  24. 2 0
      src/main/java/com/fdkankan/ucenter/vo/request/SceneCooperationParam.java
  25. 5 0
      src/main/resources/mapper/ucenter/SceneDelLogMapper.xml

+ 21 - 0
src/main/java/com/fdkankan/ucenter/common/BaseController.java

@@ -2,7 +2,10 @@ package com.fdkankan.ucenter.common;
 
 import com.fdkankan.common.exception.BusinessException;
 import com.fdkankan.common.util.DateEditor;
+import com.fdkankan.common.util.JwtUtil;
 import com.fdkankan.ucenter.common.constants.NacosProperty;
+import com.fdkankan.ucenter.entity.User;
+import com.fdkankan.ucenter.service.IUserService;
 import com.fdkankan.ucenter.constant.LoginConstant;
 import com.fdkankan.ucenter.util.DateUserUtil;
 import lombok.extern.slf4j.Slf4j;
@@ -29,6 +32,9 @@ public class BaseController {
     @Autowired
     protected HttpServletResponse response;
 
+    @Autowired
+    IUserService userService;
+
     @InitBinder
     protected void initBinder(WebDataBinder webDataBinder) {
         webDataBinder.registerCustomEditor(String.class, new StringTrimmerEditor(true));
@@ -89,6 +95,21 @@ public class BaseController {
     protected String getToken(){
         return request.getHeader("token");
     }
+    protected Long getUserId(){
+        String token = request.getHeader("token");
+        if(StringUtils.isEmpty(token)){
+            return null;
+        }
+        String username = JwtUtil.getUsername(token);
+        User user = userService.getByUserName(username);
+        if(user == null){
+            return null;
+        }
+        return user.getId();
+    }
+    protected String getLang(){
+        return StringUtils.isEmpty(request.getHeader("lang")) ? "en":request.getHeader("lang");
+    }
     protected String getSign(){
         return request.getHeader("sign");
     }

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

@@ -107,7 +107,7 @@ public class CameraController extends BaseController {
             throw new BusinessException(LoginConstant.FAILURE_CODE_3025, LoginConstant.FAILURE_MSG_3025);
         }
         cameraService.saveCooperationUser(jsonObject.getString("ids"),
-                jsonObject.getLong("cameraId"),jsonObject.getString("resourceIds"),jsonObject.getString("userName"));
+                jsonObject.getLong("cameraId"),jsonObject.getString("resourceIds"),jsonObject.getString("userName"), getLang());
         return Result.success();
     }
 

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

@@ -55,7 +55,7 @@ public class DeviceSceneController extends BaseController {
     @RequestMapping(value = "/delete", method = RequestMethod.POST)
     public Result deleteScene(@RequestBody AppSceneParam param) throws Exception {
         param.setCameraType(null);
-        sceneProService.delete(param.getSceneNum());
+        sceneProService.delete(param.getSceneNum(),getUserId());
         return Result.success();
     }
 

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

@@ -103,7 +103,7 @@ public class SceneController extends BaseController {
     }
     @PostMapping("/delete")
     public Result delete(@RequestBody SceneParam param) throws Exception {
-        sceneProService.delete(param.getSceneNum());
+        sceneProService.delete(param.getSceneNum(),getUserId());
         return Result.success();
     }
 

+ 4 - 0
src/main/java/com/fdkankan/ucenter/controller/SceneCooperationController.java

@@ -8,6 +8,7 @@ import com.fdkankan.ucenter.entity.SceneCooperation;
 import com.fdkankan.ucenter.service.ISceneCooperationService;
 import com.fdkankan.ucenter.vo.request.SceneCooperationParam;
 import com.fdkankan.ucenter.vo.request.SceneParam;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
@@ -53,6 +54,9 @@ public class SceneCooperationController extends BaseController {
     @PostMapping("/save")
     public Result save(@RequestBody SceneCooperationParam param){
         String username = JwtUtil.getUsername(getToken());
+        if(StringUtils.isNotBlank(getLang())){
+            param.setLang(getLang());
+        }
         sceneCooperationService.saveCooperation(param,username);
         return Result.success();
     }

+ 21 - 0
src/main/java/com/fdkankan/ucenter/controller/SceneDelLogController.java

@@ -0,0 +1,21 @@
+package com.fdkankan.ucenter.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author 
+ * @since 2023-03-15
+ */
+@RestController
+@RequestMapping("/ucenter/sceneDelLog")
+public class SceneDelLogController {
+
+}
+

+ 3 - 2
src/main/java/com/fdkankan/ucenter/controller/app/AppSceneController.java

@@ -1,6 +1,7 @@
 package com.fdkankan.ucenter.controller.app;
 
 import com.alibaba.fastjson.JSONObject;
+import com.fdkankan.ucenter.common.BaseController;
 import com.fdkankan.ucenter.common.Result;
 import com.fdkankan.ucenter.service.ISceneProService;
 import com.fdkankan.ucenter.service.impl.AppSceneService;
@@ -14,7 +15,7 @@ import org.springframework.web.bind.annotation.RestController;
 
 @RestController
 @RequestMapping("/ucenter/app/scene")
-public class AppSceneController {
+public class AppSceneController extends BaseController {
 
     @Autowired
     AppSceneService appSceneService;
@@ -60,7 +61,7 @@ public class AppSceneController {
     public Result deleteForCameraName(@RequestBody JSONObject param){
         Long cameraId = param.get("cameraId") == null ? null : param.getLong("cameraId");
         String sceneNum = param.get("sceneNum") == null ? null : param.getString("sceneNum");
-        appSceneService.deleteForCameraName(cameraId,sceneNum);
+        appSceneService.deleteForCameraName(cameraId,sceneNum,getUserId());
         return Result.success();
     }
 }

+ 64 - 0
src/main/java/com/fdkankan/ucenter/entity/SceneDelLog.java

@@ -0,0 +1,64 @@
+package com.fdkankan.ucenter.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.util.Date;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author 
+ * @since 2023-03-15
+ */
+@Getter
+@Setter
+@TableName("t_scene_del_log")
+public class SceneDelLog implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 场景删除日志
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 文件夹Id
+     */
+    @TableField("folder_id")
+    private Integer folderId;
+
+    /**
+     * 场景码
+     */
+    @TableField("num")
+    private String num;
+
+    /**
+     * 操作人Id
+     */
+    @TableField("user_id")
+    private Long userId;
+
+    /**
+     * 操作人Id
+     */
+    @TableField("sys_user_id")
+    private Long sysUserId;
+
+    @TableField("create_time")
+    private Date createTime;
+
+    @TableField("update_time")
+    private Date updateTime;
+
+
+}

+ 1 - 1
src/main/java/com/fdkankan/ucenter/generate/AutoGenerate.java

@@ -18,7 +18,7 @@ public class AutoGenerate {
         String path =System.getProperty("user.dir") ;
 
         generate(path,"ucenter", getTables(new String[]{
-                "t_camera_increment_log",
+                "t_scene_del_log",
         }));
 
 //        generate(path,"goods", getTables(new String[]{

+ 18 - 0
src/main/java/com/fdkankan/ucenter/mapper/ISceneDelLogMapper.java

@@ -0,0 +1,18 @@
+package com.fdkankan.ucenter.mapper;
+
+import com.fdkankan.ucenter.entity.SceneDelLog;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author 
+ * @since 2023-03-15
+ */
+@Mapper
+public interface ISceneDelLogMapper extends BaseMapper<SceneDelLog> {
+
+}

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

@@ -32,7 +32,7 @@ public interface ICameraService extends IService<Camera> {
 
     void bind(Integer cameraType, String snCode, String username);
 
-    void saveCooperationUser(String ids, Long cameraId,String resourceIds, String username);
+    void saveCooperationUser(String ids, Long cameraId,String resourceIds, String username,String lang);
 
     HashMap<Long, Camera> getByIds(List<Long> cameraIds);
 

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

@@ -17,7 +17,7 @@ import java.util.List;
  */
 public interface IFolderSceneService extends IService<FolderScene> {
 
-    void deleteByFolderIds(List<Long> delIds);
+    void deleteByFolderIds(List<Long> delIds,Long userId);
 
     FolderScene getByType(Long sceneId, Integer type);
 

+ 13 - 0
src/main/java/com/fdkankan/ucenter/service/IMailTemplateService.java

@@ -1,7 +1,13 @@
 package com.fdkankan.ucenter.service;
 
+import com.fdkankan.ucenter.entity.Camera;
 import com.fdkankan.ucenter.entity.MailTemplate;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.fdkankan.ucenter.entity.ScenePlus;
+import com.fdkankan.ucenter.entity.ScenePro;
+
+import java.util.HashMap;
+import java.util.List;
 
 /**
  * <p>
@@ -34,4 +40,11 @@ public interface IMailTemplateService extends IService<MailTemplate> {
      * 发送会员权益今天过期
      */
     Boolean sendPeTodayExMail(String email);
+
+    /**
+     * 发送协作邮件
+     */
+    Boolean sendSceneCooperation(List<ScenePro> proList, List<ScenePlus> plusList, String username,String lang);
+
+    Boolean sendCameraCooperation(HashMap<Long, Camera> cameraMap, String username, String lang);
 }

+ 17 - 0
src/main/java/com/fdkankan/ucenter/service/ISceneDelLogService.java

@@ -0,0 +1,17 @@
+package com.fdkankan.ucenter.service;
+
+import com.fdkankan.ucenter.entity.SceneDelLog;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author 
+ * @since 2023-03-15
+ */
+public interface ISceneDelLogService extends IService<SceneDelLog> {
+
+    void saveLog(String num, Long userId);
+}

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

@@ -47,7 +47,7 @@ public interface ISceneProService extends IService<ScenePro> {
 
     Long getCountByUserId(Long id, Integer cameraType);
 
-    void deleteByIds(List<Long> sceneIds);
+    void deleteByIds(List<Long> sceneIds,Long userId);
 
     JSONObject newList(SceneParam param, String username);
 
@@ -58,11 +58,11 @@ public interface ISceneProService extends IService<ScenePro> {
     Long copyV3Scene(ScenePro scenePro, String newNum, CameraDetail cameraDetail, String time) throws Exception;
 
 
-    void delete(String sceneNum);
+    void delete(String sceneNum,Long userId);
 
     ScenePro getByUnicode(String unicode);
 
-    void deleteByList(List<ScenePro> proList, List<ScenePlus> plusList);
+    void deleteByList(List<ScenePro> proList, List<ScenePlus> plusList,Long userId);
 
     SceneInfoVo getInfo(String num);
 

+ 2 - 5
src/main/java/com/fdkankan/ucenter/service/impl/AppSceneService.java

@@ -241,7 +241,7 @@ public class AppSceneService {
 
     }
 
-    public void deleteForCameraName(Long cameraId, String sceneNum) {
+    public void deleteForCameraName(Long cameraId, String sceneNum,Long userId) {
         if( StringUtils.isEmpty(sceneNum)){
             throw new BusinessException(LoginConstant.FAILURE_CODE_3001,LoginConstant.FAILURE_MSG_3001);
         }
@@ -273,14 +273,11 @@ public class AppSceneService {
             plusList.add(scenePlus);
             sceneSource = scenePlus.getSceneSource();
         }
-        sceneProService.deleteByList(proList,plusList);
+        sceneProService.deleteByList(proList,plusList,userId);
 
         if(sceneSource != null && sceneSource == 4){
             laserService.delete(sceneNum);
         }
     }
 
-    public void deleteScene(String sceneNum) {
-        sceneProService.delete(sceneNum);
-    }
 }

+ 33 - 19
src/main/java/com/fdkankan/ucenter/service/impl/CameraServiceImpl.java

@@ -68,6 +68,8 @@ public class CameraServiceImpl extends ServiceImpl<ICameraMapper, Camera> implem
     ISceneCooperationService sceneCooperationService;
     @Autowired
     ICameraIncrementLogService cameraIncrementLogService;
+    @Autowired
+    IMailTemplateService mailTemplateService;
 
     @Override
     public Camera getBySnCode(String snCode) {
@@ -79,6 +81,15 @@ public class CameraServiceImpl extends ServiceImpl<ICameraMapper, Camera> implem
         }
         return null;
     }
+    public Camera getByWfiName(String snCode) {
+        LambdaQueryWrapper<Camera> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(Camera::getWifiName,snCode);
+        List<Camera> list = this.list(wrapper);
+        if(list !=null && list.size() > 0){
+            return list.get(0);
+        }
+        return null;
+    }
 
     @Override
     public List<Camera> getCameraLikeSnCode(String snCode) {
@@ -248,26 +259,26 @@ public class CameraServiceImpl extends ServiceImpl<ICameraMapper, Camera> implem
     public void bind(Integer cameraType, String snCodes, String username) {
         User user = userService.getByUserName(username);
         String[] snCodeArr = snCodes.split(",");
-        List<String> snCodeList = Arrays.asList(snCodeArr);
-        LambdaUpdateWrapper<Camera> wrapper = new LambdaUpdateWrapper<>();
-        wrapper.in(Camera::getSnCode,snCodeList);
-        List<Camera> list = this.list(wrapper);
-        if(list.size() <=0){
-            throw new BusinessException(AppConstant.FAILURE_CODE_4010, snCodes +"-"+ AppConstant.FAILURE_MSG_4010);
-        }
-        List<String> dbSnCode = list.stream().map(Camera::getSnCode).collect(Collectors.toList());
-        for (String code : snCodeList) {
-            if(!dbSnCode.contains(code)){
-                throw new BusinessException(AppConstant.FAILURE_CODE_4010, code +"-"+ AppConstant.FAILURE_MSG_4010);
+        List<Long> cameraIds = new ArrayList<>();
+        for (String wifiName : snCodeArr) {
+            Camera camera = null;
+            if(wifiName.contains("_")){
+                camera = this.getByWfiName(wifiName);
+            }else {
+                camera = this.getBySnCode(wifiName);
             }
-        }
-        Map<Long, Camera> cameraHashMap = list.stream().collect(Collectors.toMap(Camera::getId, camera -> camera, (o1, o2) -> o1));
-        List<Long> cameraIds = new ArrayList<>(cameraHashMap.keySet());
-        HashMap<Long, CameraDetail> detailHashMap = cameraDetailService.getByCameraIds(cameraIds);
-        for (CameraDetail detail : detailHashMap.values()) {
-            if(detail.getUserId() != null){
-                throw new BusinessException(CameraConstant.FAILURE_CODE_6010, cameraHashMap.get(detail.getCameraId()).getSnCode() +"-"+ CameraConstant.FAILURE_MSG_6010);
+
+            if(camera == null){
+                throw new BusinessException(AppConstant.FAILURE_CODE_4010, wifiName +"-"+ AppConstant.FAILURE_MSG_4010);
+            }
+            CameraDetail cameraDetail = cameraDetailService.getByCameraId(camera.getId());
+            if(cameraDetail == null){
+                throw new BusinessException(AppConstant.FAILURE_CODE_4010, wifiName +"-"+ AppConstant.FAILURE_MSG_4010);
             }
+            if( cameraDetail.getUserId() != null){
+                throw new BusinessException(CameraConstant.FAILURE_CODE_6010, wifiName +"-"+ CameraConstant.FAILURE_MSG_6010);
+            }
+            cameraIds.add(camera.getId());
         }
 
         cameraIncrementLogService.saveLog(cameraIds,null,user.getId(),2);
@@ -283,7 +294,7 @@ public class CameraServiceImpl extends ServiceImpl<ICameraMapper, Camera> implem
     }
 
     @Override
-    public void saveCooperationUser(String ids, Long id,String resourceIds, String username) {
+    public void saveCooperationUser(String ids, Long id,String resourceIds, String username,String lang) {
         User user = userService.getByUserName(username);
         if(user == null){
             throw new BusinessException(LoginConstant.FAILURE_CODE_3021, LoginConstant.FAILURE_MSG_3021);
@@ -339,6 +350,9 @@ public class CameraServiceImpl extends ServiceImpl<ICameraMapper, Camera> implem
 
         fdkkLaserService.disableCooperation(detailMap, cameraMap);
         fdkkLaserService.enableCameraCooperation(detailMap, cameraMap, username);
+        if("aws".equals(NacosProperty.uploadType)){
+            mailTemplateService.sendCameraCooperation(cameraMap,username,lang);
+        }
     }
 
     @Override

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

@@ -35,13 +35,13 @@ public class FolderSceneServiceImpl extends ServiceImpl<IFolderSceneMapper, Fold
     private IFolderService folderService;
 
     @Override
-    public void deleteByFolderIds(List<Long> delIds) {
+    public void deleteByFolderIds(List<Long> delIds,Long userId) {
         LambdaQueryWrapper<FolderScene> wrapper = new LambdaQueryWrapper<>();
         wrapper.in(FolderScene::getFolderId,delIds);
         List<FolderScene> list = this.list(wrapper);
         List<Long> sceneIds = list.parallelStream().map(FolderScene::getSceneId).collect(Collectors.toList());
         if(sceneIds.size() >0){
-            sceneProService.deleteByIds(sceneIds);
+            sceneProService.deleteByIds(sceneIds,userId);
         }
         List<Long> ids = list.parallelStream().map(FolderScene::getId).collect(Collectors.toList());
         this.removeByIds(ids);

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

@@ -90,7 +90,7 @@ public class FolderServiceImpl extends ServiceImpl<IFolderMapper, Folder> implem
         getAllFolder(id,list);
         list.add(folder);
         List<Long> delIds = list.parallelStream().map(Folder::getId).collect(Collectors.toList());
-        folderSceneService.deleteByFolderIds(delIds);
+        folderSceneService.deleteByFolderIds(delIds,user.getId());
         this.removeByIds(delIds);
     }
 

+ 75 - 1
src/main/java/com/fdkankan/ucenter/service/impl/MailTemplateServiceImpl.java

@@ -3,14 +3,20 @@ package com.fdkankan.ucenter.service.impl;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.fdkankan.common.exception.BusinessException;
 import com.fdkankan.ucenter.common.constants.ResultCode;
-import com.fdkankan.ucenter.entity.MailTemplate;
+import com.fdkankan.ucenter.entity.*;
 import com.fdkankan.ucenter.mapper.IMailTemplateMapper;
 import com.fdkankan.ucenter.service.IMailTemplateService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fdkankan.ucenter.service.IScenePlusExtService;
 import com.fdkankan.ucenter.util.SendMailUtils;
+import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.HashMap;
+import java.util.List;
+
 /**
  * <p>
  *  服务实现类
@@ -20,8 +26,12 @@ import org.springframework.stereotype.Service;
  * @since 2023-01-10
  */
 @Service
+@Slf4j
 public class MailTemplateServiceImpl extends ServiceImpl<IMailTemplateMapper, MailTemplate> implements IMailTemplateService {
 
+    @Autowired
+    IScenePlusExtService scenePlusExtService;
+
     @Override
     public Boolean sendMail(String email , MailTemplate mailTemplate, String file) {
         if(mailTemplate == null){
@@ -77,4 +87,68 @@ public class MailTemplateServiceImpl extends ServiceImpl<IMailTemplateMapper, Ma
         MailTemplate mailTemplate = this.getTemplate(5,"en");
         return sendMail(email,mailTemplate,null);
     }
+
+    @Override
+    public Boolean sendSceneCooperation(List<ScenePro> proList, List<ScenePlus> plusList, String username,String lang) {
+        try {
+            if(proList.size()<=0 && plusList.size() <=0){
+                return false;
+            }
+            StringBuilder webSites = new StringBuilder();
+            for (ScenePro scenePro : proList) {
+                webSites.append(scenePro.getWebSite()).append("<br>");
+            }
+            for (ScenePlus scenePlus : plusList) {
+                ScenePlusExt scenePlusExt = scenePlusExtService.getByPlusId(scenePlus.getId());
+                if(scenePlusExt != null){
+                    webSites.append(scenePlusExt.getWebSite()).append("<br>");
+                }
+            }
+            if(StringUtils.isBlank(webSites)){
+                return false;
+            }
+            MailTemplate mailTemplate = this.getTemplate(6,lang);
+            if(mailTemplate != null){
+                String msg = mailTemplate.getMsg();
+                if(StringUtils.isNotBlank(webSites)){
+                    msg = msg.replace("{sceneWebSites}",webSites.toString());
+                }
+                mailTemplate.setMsg(msg);
+            }
+            return sendMail(username,mailTemplate,null);
+        }catch (Exception e){
+            log.error("邮件发送失败,type:{},error:{}","协作场景邮件",e);
+        }
+        return false;
+    }
+
+    @Override
+    public Boolean sendCameraCooperation(HashMap<Long, Camera> cameraMap, String username, String lang) {
+        try {
+            if(cameraMap.size()<=0 ){
+                return false;
+            }
+            StringBuilder snCodes = new StringBuilder();
+            for (Long cameraId : cameraMap.keySet()) {
+                if(cameraMap.get(cameraId) != null){
+                    snCodes.append(cameraMap.get(cameraId).getWifiName()).append("<br>");
+                }
+            }
+            if(StringUtils.isBlank(snCodes)){
+                return false;
+            }
+            MailTemplate mailTemplate = this.getTemplate(8,lang);
+            if(mailTemplate != null){
+                String msg = mailTemplate.getMsg();
+                if(StringUtils.isNotBlank(snCodes)){
+                    msg = msg.replace("{snCodes}",snCodes.toString());
+                }
+                mailTemplate.setMsg(msg);
+            }
+            return sendMail(username,mailTemplate,null);
+        }catch (Exception e){
+            log.error("邮件发送失败,type:{},error:{}","协作场景邮件",e);
+        }
+        return false;
+    }
 }

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

@@ -7,6 +7,7 @@ import com.fdkankan.common.exception.BusinessException;
 import com.fdkankan.redis.util.RedisUtil;
 import com.fdkankan.ucenter.common.PageInfo;
 import com.fdkankan.ucenter.common.RedisKeyUtil;
+import com.fdkankan.ucenter.common.constants.NacosProperty;
 import com.fdkankan.ucenter.constant.LoginConstant;
 import com.fdkankan.ucenter.entity.*;
 import com.fdkankan.ucenter.httpClient.service.LaserService;
@@ -57,6 +58,8 @@ public class SceneCooperationServiceImpl extends ServiceImpl<ISceneCooperationMa
     IUserService userService;
     @Autowired
     RedisUtil redisUtil;
+    @Autowired
+    IMailTemplateService mailTemplateService;
 
     @Override
     public Long getCooperationSceneNum(Long userId, List<Integer> sceneSourceList) {
@@ -241,6 +244,9 @@ public class SceneCooperationServiceImpl extends ServiceImpl<ISceneCooperationMa
             }
         }
         this.saveBatchByList(proList,plusList,user.getId(),resourceIdList);
+        if("aws".equals(NacosProperty.uploadType)){
+            mailTemplateService.sendSceneCooperation(proList,plusList,param.getUserName(),param.getLang());
+        }
     }
 
     @Override

+ 31 - 0
src/main/java/com/fdkankan/ucenter/service/impl/SceneDelLogServiceImpl.java

@@ -0,0 +1,31 @@
+package com.fdkankan.ucenter.service.impl;
+
+import com.fdkankan.ucenter.entity.SceneDelLog;
+import com.fdkankan.ucenter.mapper.ISceneDelLogMapper;
+import com.fdkankan.ucenter.service.ISceneDelLogService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author 
+ * @since 2023-03-15
+ */
+@Service
+public class SceneDelLogServiceImpl extends ServiceImpl<ISceneDelLogMapper, SceneDelLog> implements ISceneDelLogService {
+
+    @Override
+    public void saveLog(String num, Long userId) {
+        try {
+            SceneDelLog sceneDelLog = new SceneDelLog();
+            sceneDelLog.setNum(num);
+            sceneDelLog.setUserId(userId);
+            this.save(sceneDelLog);
+        }catch (Exception e){
+
+        }
+    }
+}

+ 9 - 5
src/main/java/com/fdkankan/ucenter/service/impl/SceneProServiceImpl.java

@@ -119,6 +119,8 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
     private IInnerService innerService;
     @Autowired
     LaserService laserService;
+    @Autowired
+    ISceneDelLogService sceneDelLogService;
 
     @Value("${scene.pro.url}")
     private String sceneProUrl;
@@ -452,7 +454,7 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
     }
 
     @Override
-    public void deleteByIds(List<Long> sceneIds) {
+    public void deleteByIds(List<Long> sceneIds,Long userId) {
         if(sceneIds.size() >0){
             LambdaQueryWrapper<ScenePro> wrapper = new LambdaQueryWrapper<>();
             wrapper.in(ScenePro::getId,sceneIds)
@@ -463,7 +465,7 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
             plusWr.in(ScenePlus::getId,sceneIds);
             List<ScenePlus> plusList = scenePlusService.list(plusWr);
 
-            this.deleteByList(proList,plusList);
+            this.deleteByList(proList,plusList,userId);
         }
 
     }
@@ -952,7 +954,7 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
     }
 
     @Override
-    public void delete(String sceneNum) {
+    public void delete(String sceneNum,Long userId) {
         if(StringUtils.isEmpty(sceneNum)){
             throw  new BusinessException(LoginConstant.FAILURE_CODE_3001,LoginConstant.FAILURE_MSG_3001);
         }
@@ -960,15 +962,16 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
         List<String> numList = Arrays.asList(nums);
         List<ScenePro> proList = this.getListByNums(numList);
         List<ScenePlus> plusList = scenePlusService.getListByNums(numList);
-        this.deleteByList(proList,plusList);
+        this.deleteByList(proList,plusList,userId);
     }
 
     @Override
-    public void deleteByList(List<ScenePro> proList,List<ScenePlus> plusList) {
+    public void deleteByList(List<ScenePro> proList,List<ScenePlus> plusList,Long userId) {
         HashMap<Long ,Long >cameraMap = new HashMap<>();
         if(proList.size() >0){
             for (ScenePro scenePro : proList) {
                 cameraMap.merge(scenePro.getCameraId(), scenePro.getSpace(), Long::sum);
+                sceneDelLogService.saveLog(scenePro.getNum(),userId);
             }
             List<Long> proIds = proList.parallelStream().map(ScenePro::getId).collect(Collectors.toList());
             this.removeByIds(proIds);
@@ -982,6 +985,7 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
                 if(scenePlus.getCameraId()!= null && plusMap.get(scenePlus.getId())!=null){
                     cameraMap.merge(scenePlus.getCameraId(), plusMap.get(scenePlus.getId()).getSpace(), Long::sum);
                 }
+                sceneDelLogService.saveLog(scenePlus.getNum(),userId);
             }
             scenePlusService.removeByIds(plusIds);
             scenePlusExtService.removeByPlusIds(plusIds);

+ 2 - 0
src/main/java/com/fdkankan/ucenter/vo/request/SceneCooperationParam.java

@@ -14,4 +14,6 @@ public class SceneCooperationParam {
 
     private String userName;
     private String resourceIds;
+
+    private String lang = "en";
 }

+ 5 - 0
src/main/resources/mapper/ucenter/SceneDelLogMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.fdkankan.ucenter.mapper.ISceneDelLogMapper">
+
+</mapper>