xiongzhu 3 лет назад
Родитель
Сommit
ed90e7dd99

+ 1 - 0
src/main/java/com/izouma/nineth/domain/AppVersion.java

@@ -18,4 +18,5 @@ public class AppVersion extends BaseEntity {
     private String  platform;
     private boolean review;
     private String  downloadUrl;
+    private int     versionNum;
 }

+ 2 - 0
src/main/java/com/izouma/nineth/repo/AppVersionRepo.java

@@ -16,4 +16,6 @@ public interface AppVersionRepo extends JpaRepository<AppVersion, Long>, JpaSpec
     void softDelete(Long id);
 
     Optional<AppVersion> findByPlatformAndVersion(String platform, String version);
+
+    Optional<AppVersion> findFirstByPlatformOrderByVersionNumDesc(String platform);
 }

+ 1 - 2
src/main/java/com/izouma/nineth/security/WebSecurityConfig.java

@@ -107,8 +107,6 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
                 .antMatchers("/mintActivity/get/**").permitAll()
                 .antMatchers("/purchaseLevel/all").permitAll()
                 .antMatchers("/purchaseLevel/get/**").permitAll()
-                .antMatchers("/appVersion/checkIosReview").permitAll()
-                .antMatchers("/appVersion/checkAndroidReview").permitAll()
                 .antMatchers("/news/all").permitAll()
                 .antMatchers("/news/get/**").permitAll()
                 .antMatchers("/druid/**").permitAll()
@@ -117,6 +115,7 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
                 .antMatchers("/showroom/all").permitAll()
                 .antMatchers("/showroom/get/**").permitAll()
                 .antMatchers("/testClass/**").permitAll()
+                .antMatchers("/appVersion/**").permitAll()
                 // all other requests need to be authenticated
                 .anyRequest().authenticated().and()
                 // make sure we use stateless session; session won't be used to

+ 27 - 2
src/main/java/com/izouma/nineth/web/AppVersionController.java

@@ -8,7 +8,9 @@ import com.izouma.nineth.service.AppVersionService;
 import com.izouma.nineth.utils.ObjUtils;
 import com.izouma.nineth.utils.excel.ExcelUtils;
 import lombok.AllArgsConstructor;
+import org.springframework.cache.annotation.Cacheable;
 import org.springframework.data.domain.Page;
+import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletResponse;
@@ -22,9 +24,10 @@ public class AppVersionController extends BaseController {
     private AppVersionService appVersionService;
     private AppVersionRepo    appVersionRepo;
 
-    //@PreAuthorize("hasRole('ADMIN')")
+    @PreAuthorize("hasRole('ADMIN')")
     @PostMapping("/save")
     public AppVersion save(@RequestBody AppVersion record) {
+        record.setVersionNum(convertVersion(record.getVersion()));
         if (record.getId() != null) {
             AppVersion orig = appVersionRepo.findById(record.getId()).orElseThrow(new BusinessException("无记录"));
             ObjUtils.merge(orig, record);
@@ -33,8 +36,16 @@ public class AppVersionController extends BaseController {
         return appVersionRepo.save(record);
     }
 
+    private int convertVersion(String version) {
+        String[] arr = version.split("\\.");
+        StringBuilder str = new StringBuilder();
+        for (int i = 0; i < arr.length; i++) {
+            str.insert(0, String.format("%03d", Integer.parseInt(arr[arr.length - 1 - i])));
+        }
+        return Integer.parseInt(str.toString());
+    }
 
-    //@PreAuthorize("hasRole('ADMIN')")
+    @PreAuthorize("hasRole('ADMIN')")
     @PostMapping("/all")
     public Page<AppVersion> all(@RequestBody PageQuery pageQuery) {
         return appVersionService.all(pageQuery);
@@ -45,6 +56,7 @@ public class AppVersionController extends BaseController {
         return appVersionRepo.findById(id).orElseThrow(new BusinessException("无记录"));
     }
 
+    @PreAuthorize("hasRole('ADMIN')")
     @PostMapping("/del/{id}")
     public void del(@PathVariable Long id) {
         appVersionRepo.softDelete(id);
@@ -66,5 +78,18 @@ public class AppVersionController extends BaseController {
     public AppVersion checkAndroidReview(@RequestParam String version) {
         return appVersionRepo.findByPlatformAndVersion("Android", version).orElseThrow(new BusinessException("版本不存在"));
     }
+
+    @GetMapping("/getVersion")
+    public AppVersion checkReview(@RequestParam String platform, @RequestParam String version) {
+        return appVersionRepo.findByPlatformAndVersion(platform, version).orElseThrow(new BusinessException("版本不存在"));
+    }
+
+    @GetMapping("/checkUpdate")
+    @Cacheable(value = "checkUpdate", key = "#platform+'@'+#version")
+    public AppVersion checkUpdate(@RequestParam String platform, @RequestParam String version) {
+
+        return appVersionRepo.findFirstByPlatformOrderByVersionNumDesc(platform)
+                .orElseThrow(new BusinessException("版本不存在"));
+    }
 }
 

+ 13 - 1
src/test/java/com/izouma/nineth/CommonTest.java

@@ -35,7 +35,7 @@ import org.bouncycastle.util.encoders.Base64;
 import org.bytedeco.javacv.FFmpegFrameGrabber;
 import org.bytedeco.javacv.Frame;
 import org.bytedeco.javacv.Java2DFrameConverter;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 import org.libjpegturbo.turbojpeg.processor.api.ImageProcessException;
 import org.libjpegturbo.turbojpeg.processor.api.ImageProcessInfo;
 import org.libjpegturbo.turbojpeg.processor.api.ImageProcessor;
@@ -542,4 +542,16 @@ public class CommonTest {
 
         System.out.println(System.currentTimeMillis() - t);
     }
+
+    @Test
+    public void testversion() {
+        String version = "1.2.321";
+        String[] arr = version.split("\\.");
+        StringBuilder str = new StringBuilder();
+        for (int i = 0; i < arr.length; i++) {
+            str.insert(0, String.format("%03d", Integer.parseInt(arr[arr.length - 1 - i])));
+        }
+        System.out.println(Integer.parseInt(str.toString()));
+
+    }
 }