Procházet zdrojové kódy

Merge branch 'test' of http://192.168.0.115:3000/lyhzzz/4dkankan-center-user into test

lyhzzz před 2 roky
rodič
revize
756ea86944

+ 110 - 0
src/main/java/com/fdkankan/ucenter/entity/Company.java

@@ -0,0 +1,110 @@
+package com.fdkankan.ucenter.entity;
+
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Getter;
+import lombok.Setter;
+import lombok.ToString;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ * 客户企业logo信息
+ * </p>
+ *
+ * @author 
+ * @since 2021-12-24
+ */
+@Getter
+@Setter
+@ToString
+@TableName("t_company")
+public class Company implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 公司名称
+     */
+    @TableField("company_name")
+    private String companyName;
+
+    /**
+     * 顶部logo
+     */
+    @TableField("top_logo")
+    private String topLogo;
+
+    /**
+     * 地面logo
+     */
+    @TableField("floor_logo")
+    private String floorLogo;
+
+    /**
+     * 地面点位logo
+     */
+    @TableField("marker_logo")
+    private String markerLogo;
+
+    /**
+     * 二维码logo
+     */
+    @TableField("qr_logo")
+    private String qrLogo;
+
+    /**
+     * 是否显示初始logo,0隐藏,1显示
+     */
+    @TableField("show_logo")
+    private Integer showLogo;
+
+    /**
+     * 新增的相机是否注册,0否,1删
+     */
+    @TableField("camera_delete")
+    private Integer cameraDelete;
+
+    /**
+     * 数据同步类型
+     */
+    @TableField("data_sync")
+    private String dataSync;
+
+//    /**
+//     * 数据同步方式
+//     */
+//    @TableField("data_sync_action")
+//    private Integer dataSyncAction;
+
+    @TableField("calculate_flexibility")
+    private Boolean calculateFlexibility;
+
+    /**
+     * 创建时间
+     */
+    @TableField("create_time")
+    private Date createTime;
+
+    /**
+     * 更新时间
+     */
+    @TableField("update_time")
+    private Date updateTime;
+
+
+    @TableField("scene_version")
+    private String sceneVersion;
+
+    /**
+     * A正常,I删除
+     */
+    @TableField("rec_status")
+    @TableLogic("A")
+    private String recStatus;
+
+}

+ 6 - 0
src/main/java/com/fdkankan/ucenter/entity/SceneEditInfoExt.java

@@ -77,6 +77,12 @@ public class SceneEditInfoExt implements Serializable {
     private Integer links;
 
     /**
+     * 分享二维码logo
+     */
+    @TableField("share_logo_img")
+    private String shareLogoImg;
+
+    /**
      * 创建时间
      */
     @TableField("create_time")

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

@@ -0,0 +1,18 @@
+package com.fdkankan.ucenter.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.fdkankan.ucenter.entity.Company;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ * 客户企业logo信息 Mapper 接口
+ * </p>
+ *
+ * @author 
+ * @since 2021-12-24
+ */
+@Mapper
+public interface ICompanyMapper extends BaseMapper<Company> {
+
+}

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

@@ -0,0 +1,16 @@
+package com.fdkankan.ucenter.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.fdkankan.ucenter.entity.Company;
+
+/**
+ * <p>
+ * 客户企业logo信息 服务类
+ * </p>
+ *
+ * @author 
+ * @since 2021-12-24
+ */
+public interface ICompanyService extends IService<Company> {
+
+}

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

@@ -46,4 +46,6 @@ public interface IScenePlusService extends IService<ScenePlus> {
     Result pageSceneWithHouseType(RequestScene param, String token);
 
     Result getArPathByNum(String num);
+
+    public void createQrCode(String num, Long cameraId, String website, String shareLogoImg, String sceneVersion);
 }

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

@@ -70,7 +70,7 @@ public interface ISceneProService extends IService<ScenePro> {
 
     ScenePro findByFileId(String fileId);
 
-    void setQrCode(String buildType, String num) throws Exception;
+    void setQrCode(String buildType, String num, Long cameraId, String shareLogo) throws Exception;
 
     String setDataSource(String preDataSource, String time) throws Exception;
 

+ 21 - 0
src/main/java/com/fdkankan/ucenter/service/impl/CompanyServiceImpl.java

@@ -0,0 +1,21 @@
+package com.fdkankan.ucenter.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fdkankan.ucenter.entity.Company;
+import com.fdkankan.ucenter.mapper.ICompanyMapper;
+import com.fdkankan.ucenter.service.ICompanyService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 客户企业logo信息 服务实现类
+ * </p>
+ *
+ * @author 
+ * @since 2021-12-24
+ */
+@Service
+public class CompanyServiceImpl extends ServiceImpl<ICompanyMapper, Company> implements ICompanyService {
+
+
+}

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

@@ -1,7 +1,11 @@
 package com.fdkankan.ucenter.service.impl;
 
 import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.io.FileUtil;
 import cn.hutool.core.util.StrUtil;
+import cn.hutool.extra.qrcode.QrCodeUtil;
+import cn.hutool.extra.qrcode.QrConfig;
+import cn.hutool.http.HttpUtil;
 import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
@@ -9,6 +13,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fdkankan.common.constant.CommonStatus;
 import com.fdkankan.common.constant.ErrorCode;
+import com.fdkankan.common.constant.SceneVersionType;
 import com.fdkankan.common.util.FileUtils;
 import com.fdkankan.fyun.face.FYunFileServiceInterface;
 import com.fdkankan.image.MatrixToImageWriterUtil;
@@ -39,6 +44,7 @@ import com.fdkankan.ucenter.vo.SceneEditControlsVO;
 import com.fdkankan.ucenter.vo.request.RequestScene;
 import com.fdkankan.ucenter.vo.response.SceneVo;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.ObjectUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
@@ -84,6 +90,8 @@ public class ScenePlusServiceImpl extends ServiceImpl<IScenePlusMapper, ScenePlu
     ISceneCopyLogService sceneCopyLogService;
     @Autowired
     private IUserService userService;
+    @Autowired
+    private ICompanyService companyService;
 
 
     @Override
@@ -296,12 +304,8 @@ public class ScenePlusServiceImpl extends ServiceImpl<IScenePlusMapper, ScenePlu
                 redisUtil.del(String.format(RedisKey.SCENE_JSON, num));
 
                 // 生成二维码
-                String outPathZh = ConstantFilePath.BASE_PATH + File.separator + "sceneQRcode/" + newNum + ".png";
-                String outPathEn = ConstantFilePath.BASE_PATH + File.separator + "sceneQRcode/" + newNum + "_en.png";
-                MatrixToImageWriterUtil.createQRCode(plusExt.getWebSite(), outPathZh, false,null);
-                MatrixToImageWriterUtil.createQRCode(plusExt.getWebSite() + "&lang=en", outPathEn, false, null);
-                fYunFileServiceInterface.uploadFile(outPathZh, String.format(UploadFilePath.DOWNLOADS_QRCODE, newNum) + newNum + ".png");
-                fYunFileServiceInterface.uploadFile(outPathEn, String.format(UploadFilePath.DOWNLOADS_QRCODE, newNum) + newNum + "_en.png");
+                this.createQrCode(newNum, scenePlus.getCameraId(), plusExt.getWebSite(), sceneEditInfoExt.getShareLogoImg(), SceneVersionType.V4.code());
+
                 scenePlus.setSceneStatus(-2);
                 this.updateById(scenePlus);
 
@@ -331,6 +335,60 @@ public class ScenePlusServiceImpl extends ServiceImpl<IScenePlusMapper, ScenePlu
         return scenePlus.getId();
     }
 
+    public void createQrCode(String num, Long cameraId, String website, String shareLogoImg, String sceneVersion) {
+
+        String localLogoPath = null;
+        String qrLogo = StrUtil.isEmpty(shareLogoImg) ? null : shareLogoImg;
+        if(sceneVersion.equals(SceneVersionType.V3.code()) && StrUtil.isNotEmpty(qrLogo) && FileUtil.exist(ConstantFilePath.SCENE_PATH + qrLogo)){
+            localLogoPath = ConstantFilePath.SCENE_PATH + qrLogo;
+        }else{
+            if(StrUtil.isEmpty(qrLogo)){
+                CameraDetail cameraDetail = null;
+                Company company = null;
+                if(Objects.nonNull(cameraId)){
+                    cameraDetail = cameraDetailService.getByCameraId(cameraId);
+                    if(Objects.nonNull(cameraDetail)){
+                        company = !ObjectUtils.isEmpty(cameraDetail.getCompanyId()) ? companyService.getById(cameraDetail.getCompanyId()) : null;
+                    }
+                }
+                qrLogo = !ObjectUtils.isEmpty(company) && !ObjectUtils.isEmpty(company.getQrLogo()) ? company.getQrLogo() : null;
+            }
+
+            if (!ObjectUtils.isEmpty(qrLogo)) {
+                try {
+                    localLogoPath = ConstantFilePath.SCENE_PATH + "qrLogo/" + qrLogo.substring(qrLogo.lastIndexOf("//") + 1);
+                    HttpUtil.downloadFile(qrLogo, localLogoPath);
+                } catch (Exception e) {
+                    log.error("logo下载失败:{}", qrLogo);
+                    localLogoPath = null;
+                }
+            }
+        }
+
+
+        //生成二维码
+        String outPathZh = com.fdkankan.model.constants.ConstantFilePath.BASE_PATH + File.separator + "sceneQRcode/"+ num +".png";
+        String outPathEn = com.fdkankan.model.constants.ConstantFilePath.BASE_PATH + File.separator + "sceneQRcode/"+ num +"_en.png";
+        QrConfig qrConfig = QrConfig.create();
+        qrConfig.setWidth(512);
+        qrConfig.setHeight(512);
+        if(!ObjectUtils.isEmpty(localLogoPath)){
+            qrConfig.setImg(localLogoPath);
+        }
+        QrCodeUtil.generate(website, qrConfig, FileUtil.file(outPathZh));
+        QrCodeUtil.generate(website + "&lang=en", qrConfig, FileUtil.file(outPathEn));
+
+        //上传二维码
+        if(sceneVersion.equals(SceneVersionType.V4.code())){
+            fYunFileServiceInterface.uploadFile(outPathZh, String.format(com.fdkankan.model.constants.UploadFilePath.DOWNLOADS_QRCODE, num) + num + ".png");
+            fYunFileServiceInterface.uploadFile(outPathEn, String.format(com.fdkankan.model.constants.UploadFilePath.DOWNLOADS_QRCODE, num) + num + "_en.png");
+        }
+
+        if(!ObjectUtils.isEmpty(localLogoPath)){
+            FileUtils.deleteFile(localLogoPath);
+        }
+    }
+
     @Override
     public Result pageSceneWithHouseType(RequestScene param, String token) {
         User ssoUser = userService.getByToken(token);

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

@@ -10,6 +10,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fdkankan.common.constant.SceneConstant;
 import com.fdkankan.common.constant.SceneKind;
+import com.fdkankan.common.constant.SceneVersionType;
 import com.fdkankan.common.exception.BusinessException;
 import com.fdkankan.common.util.*;
 import com.fdkankan.model.constants.UploadFilePath;
@@ -791,7 +792,7 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
         oldEditScene.setFloorPlanPng(oldEditScene.getFloorPlanPng() == null ? null : oldEditScene.getFloorPlanPng().replace(oldNum, newNum));
         sceneProEditService.save(oldEditScene);
 
-        this.setQrCode(oldScene.getBuildType(), oldScene.getNum());
+        this.setQrCode(oldScene.getBuildType(), oldScene.getNum(), oldScene.getCameraId(), oldEditScene.getShareLogo());
         CompletableFuture.runAsync(() -> {
             try {
                 log.info("开始复制场景-{}", new Date());
@@ -1138,7 +1139,7 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
     }
 
     @Override
-    public void setQrCode(String buildType,String num) throws Exception {
+    public void setQrCode(String buildType,String num, Long cameraId, String shareLogoImg) throws Exception {
         String basePath = NacosProperty.getMainUrl();
         if("V2".equals(buildType)){
             basePath += sceneProUrl;
@@ -1146,9 +1147,9 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
         if("V3".equals(buildType)){
             basePath += sceneProNewUrl;
         }
-        MatrixToImageWriterUtil.createQRCode(basePath + num, ConstantFilePath.BASE_PATH + File.separator + "sceneQRcode/"+num+".png", false,null);
-        MatrixToImageWriterUtil.createQRCode(basePath + num + "&lang=en", ConstantFilePath.BASE_PATH + File.separator + "sceneQRcode/"+num+"_en.png", false,null);
 
+        // 生成二维码
+        scenePlusService.createQrCode(num, cameraId, basePath + num, shareLogoImg, SceneVersionType.V3.code());
     }
 
     @Override