dengsixing 3 năm trước cách đây
mục cha
commit
9eac42f2c9

+ 1 - 0
4dkankan-common-utils/src/main/java/com/fdkankan/common/constant/ErrorCode.java

@@ -143,6 +143,7 @@ public enum ErrorCode {
     FAILURE_CODE_7006(7006, "目录不存在!"),
     FAILURE_CODE_7007(7007, "文件格式不正确, 只能是%s格式"),
     FAILURE_CODE_7008(7008, "场景编辑数据不存在"),
+    FAILURE_CODE_7009(7009, "球幕视频文件不存在"),
 
 
 

+ 2 - 1
4dkankan-common-utils/src/main/java/com/fdkankan/common/constant/SceneSource.java

@@ -8,7 +8,8 @@ public enum SceneSource {
     BM(1, "八目"),
     SM(2, "双目"),
     ZT(3, "转台"),
-    JG(4, "激光");
+    JG(4, "激光"),
+    YJHZ(11, "一键换装");
 
     private Integer code;
     private String message;

+ 2 - 0
4dkankan-common-utils/src/main/java/com/fdkankan/common/constant/UploadFilePath.java

@@ -36,5 +36,7 @@ public class UploadFilePath {
     public static final String IMG_CACHES_PATH =  "scene/%s/caches/images/";
     public static final String VIDEOS_CACHES_PATH =  "scene/%s/caches/videos/";
 
+    public static final String DOWNLOADS_QRCODE = "downloads/scene/%s/QRcode/";
+
 
 }

+ 11 - 14
4dkankan-common-utils/src/main/java/com/fdkankan/common/response/PageInfo.java

@@ -1,25 +1,22 @@
 package com.fdkankan.common.response;
 
+import lombok.AllArgsConstructor;
+import lombok.Builder;
 import lombok.Data;
+import lombok.NoArgsConstructor;
 
 @Data
-public class PageInfo {
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class PageInfo<T> {
 
-    private int page;
+    private long pageNum;
 
-    private int pageSize;
+    private long pageSize;
 
-    private int total;
+    private long total;
 
-    private Object list;
-
-    public static PageInfo pageInfo (int page ,int pageSize,int total,Object data){
-        PageInfo pageInfo = new PageInfo();
-        pageInfo.setPage(page);
-        pageInfo.setPageSize(pageSize);
-        pageInfo.setTotal(total);
-        pageInfo.setList(data);
-        return  pageInfo;
-    }
+    private T list;
 
 }

+ 1 - 6
4dkankan-common-utils/src/main/java/com/fdkankan/common/response/ResultData.java

@@ -45,12 +45,7 @@ public class ResultData<T> implements Serializable {
     }
 
     public static ResultData ok(int page,int pageSize,int total,Object data){
-        PageInfo pageInfo = new PageInfo();
-        pageInfo.setPage(page);
-        pageInfo.setPageSize(pageSize);
-        pageInfo.setTotal(total);
-        pageInfo.setList(data);
-        return  ok(pageInfo);
+        return  ok(new PageInfo(page, pageSize, total, data));
     }
 
     public static ResultData error(int code, String msg) {

+ 10 - 6
4dkankan-common-utils/src/main/java/com/fdkankan/common/util/FileUtils.java

@@ -3,6 +3,7 @@ package com.fdkankan.common.util;
 import com.alibaba.fastjson.JSONObject;
 import it.sauronsoftware.jave.*;
 import java.net.MalformedURLException;
+import java.util.stream.Collectors;
 import org.apache.tools.zip.ZipEntry;
 import org.apache.tools.zip.ZipFile;
 import org.apache.tools.zip.ZipOutputStream;
@@ -1072,13 +1073,16 @@ public class FileUtils {
 //                System.out.println(s);
 //            }
 
-            byte[] bytesFromUrl = FileUtils.getBytesFromUrl(
-                "https://4dkankan.oss-cn-shenzhen.aliyuncs.com/"
-                    + "data/datat-ieXdyGl6Md/mesh/texture1.jpg");
-            FileOutputStream out = new FileOutputStream(new File("F:\\texture1.jpg"));
-            out.write(bytesFromUrl);
-
+//            byte[] bytesFromUrl = FileUtils.getBytesFromUrl(
+//                "https://4dkankan.oss-cn-shenzhen.aliyuncs.com/"
+//                    + "data/datat-ieXdyGl6Md/mesh/texture1.jpg");
+//            FileOutputStream out = new FileOutputStream(new File("F:\\texture1.jpg"));
+//            out.write(bytesFromUrl);
 
+            List<String> test = null;
+            List<String> collect = test.stream().map(t -> {
+                return t;
+            }).collect(Collectors.toList());
 
 
         }catch (Exception e){

+ 9 - 3
4dkankan-common-utils/src/main/java/com/fdkankan/common/util/LogoConfig.java

@@ -1,5 +1,6 @@
 package com.fdkankan.common.util;
 
+import cn.hutool.core.util.StrUtil;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.core.io.ClassPathResource;
 
@@ -30,14 +31,19 @@ public class LogoConfig {
          /**
           * 读取Logo图片
           */
+         ClassPathResource classPathResource = null;
          if(logoPath == null){
 //             logoPath = this.getClass().getResource("/static/img/logo.png").getPath();
-             ClassPathResource classPathResource = new ClassPathResource("static/img/logo.jpg");
-             logoPath  =classPathResource.getURL().getPath();
+             classPathResource = new ClassPathResource("static/img/logo.jpg");
+//             logoPath  =classPathResource.getURL().getPath();
          }
          BufferedImage logo = null;
          try {
-             logo = ImageIO.read(new File(logoPath));
+             if(StrUtil.isNotEmpty(logoPath)){
+                 logo = ImageIO.read(new File(logoPath));
+             }else{
+                 logo = ImageIO.read(classPathResource.getFile());
+             }
          }catch (IOException e){
             log.info("读取图片流失败,path="+ logoPath, e);
          }

+ 12 - 0
4dkankan-utils-redis/pom.xml

@@ -16,9 +16,21 @@
        <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-data-redis</artifactId>
+           <exclusions>
+             <exclusion>
+               <groupId>io.lettuce</groupId>
+               <artifactId>lettuce-core</artifactId>
+             </exclusion>
+           </exclusions>
            <version>2.3.12.RELEASE</version>
         </dependency>
 
+      <dependency>
+        <groupId>redis.clients</groupId>
+        <artifactId>jedis</artifactId>
+        <version>2.9.0</version>
+      </dependency>
+
         <dependency>
             <groupId>org.apache.commons</groupId>
             <artifactId>commons-lang3</artifactId>

+ 33 - 4
4dkankan-utils-redis/src/main/java/com/fdkankan/redis/config/RedisConfig.java

@@ -6,6 +6,8 @@ import org.springframework.boot.autoconfigure.AutoConfigureAfter;
 import org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
+import org.springframework.data.redis.connection.RedisConnectionFactory;
+import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;
 import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
 import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.data.redis.serializer.StringRedisSerializer;
@@ -14,11 +16,38 @@ import org.springframework.data.redis.serializer.StringRedisSerializer;
 @AutoConfigureAfter(RedisAutoConfiguration.class)
 public class RedisConfig {
 
-    @Autowired
-    LettuceConnectionFactory lettuceConnectionFactory;
+//    @Autowired
+//    LettuceConnectionFactory lettuceConnectionFactory;
+
+//    @Bean
+//    public RedisTemplate<String, Object> redisTemplate(LettuceConnectionFactory redisConnectionFactory) {
+//        RedisTemplate template = new RedisTemplate();
+//        template.setConnectionFactory(redisConnectionFactory);
+////        Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
+//        StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();
+//
+//        /*
+//         * Jackson对象映射器(Object Mapper)可以把JSON解析为用户自定义类对象, 或者解析为JSON内置的树模型的对象
+//         * DefaultTyping.NON_FINAL,将会为(String、Boolean、Integer、Double)除外的其他类型及非final类型的数组添加反序列化所需要的类型。
+//         * JsonTypeInfo.As.PROPERTY,它将包含@class属性,作为序列化的一个属性,值就是完全限定名类型。当前类及其属性都会添加这个名为@class的属性。
+//         */
+////        ObjectMapper om = new ObjectMapper();
+////        om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
+////        om.activateDefaultTyping(LaissezFaireSubTypeValidator.instance , ObjectMapper.DefaultTyping.NON_FINAL, JsonTypeInfo.As.PROPERTY);
+////        jackson2JsonRedisSerializer.setObjectMapper(om);
+//        template.setKeySerializer(stringRedisSerializer);
+//        template.setValueSerializer(stringRedisSerializer);
+//        template.setHashKeySerializer(stringRedisSerializer);
+//        template.setHashValueSerializer(stringRedisSerializer);
+//
+//        template.afterPropertiesSet();
+//        template.setEnableTransactionSupport(true);
+//        return template;
+//    }
+
 
     @Bean
-    public RedisTemplate<String, Object> redisTemplate(LettuceConnectionFactory redisConnectionFactory) {
+    public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
         RedisTemplate template = new RedisTemplate();
         template.setConnectionFactory(redisConnectionFactory);
 //        Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
@@ -39,7 +68,7 @@ public class RedisConfig {
         template.setHashValueSerializer(stringRedisSerializer);
 
         template.afterPropertiesSet();
-        template.setEnableTransactionSupport(true);
+//        template.setEnableTransactionSupport(true);
         return template;
     }
 }

+ 5 - 0
4dkankan-utils-redis/src/main/java/com/fdkankan/redis/constant/RedisKey.java

@@ -88,6 +88,11 @@ public class RedisKey {
      */
     public static final String SCENE_HOT_DATA = "scene:hotdata:num:%s";
 
+    /**
+     * 热点icons数据列表
+     */
+    public static final String SCENE_HOT_ICONS = "scene:hoticons:num:%s";
+
 
 
 

+ 15 - 0
4dkankan-utils-redis/src/main/java/com/fdkankan/redis/constant/RedisLockKey.java

@@ -63,6 +63,21 @@ public class RedisLockKey {
      */
     public static String LOCK_SCENE_SYNC = "lock:scene:sync:num:%s";
 
+    /**
+     * 热点数据恢复锁
+     */
+    public static String LOCK_HOT_DATA_SYNC = "lock:hot:data:sync:num:%s";
+
+    /**
+     * icons数据恢复锁
+     */
+    public static String LOCK_HOT_ICONS_SYNC = "lock:hot:icons:sync:num:%s";
+
+    /**
+     * 热点数据写文件锁
+     */
+    public static String LOCK_HOT_JSON = "lock:hot:json:num:%s";
+
 
 
 }