Kaynağa Gözat

展厅浏览

licailing 3 yıl önce
ebeveyn
işleme
e13918b78d

+ 6 - 0
src/main/java/com/izouma/nineth/domain/Showroom.java

@@ -75,4 +75,10 @@ public class Showroom extends BaseEntity {
     @Transient
     private boolean liked;
 
+    private int views;
+
+    private int buys;
+
+    private int registers;
+
 }

+ 26 - 0
src/main/java/com/izouma/nineth/domain/ViewInfo.java

@@ -0,0 +1,26 @@
+package com.izouma.nineth.domain;
+
+import io.swagger.annotations.ApiModel;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import javax.persistence.Entity;
+import javax.persistence.Index;
+import javax.persistence.Table;
+
+@Data
+@Entity
+@Table(name = "view_info", indexes =
+        {@Index(columnList = "userId"), @Index(columnList = "showroomId")})
+@AllArgsConstructor
+@NoArgsConstructor
+@Builder
+@ApiModel("浏览")
+public class ViewInfo extends BaseEntity {
+
+    private Long userId;
+
+    private Long showroomId;
+}

+ 6 - 0
src/main/java/com/izouma/nineth/repo/ShowroomRepo.java

@@ -36,4 +36,10 @@ public interface ShowroomRepo extends JpaRepository<Showroom, Long>, JpaSpecific
     @Cacheable(value = "showroom", key = "#id")
     Optional<Showroom> findById(@Nonnull Long id);
 
+    @Query("update Showroom t set t.views = t.views + ?2 where t.id = ?1")
+    @Modifying
+    @Transactional
+    void addView(Long id, int num);
+
+
 }

+ 13 - 0
src/main/java/com/izouma/nineth/repo/ViewInfoRepo.java

@@ -0,0 +1,13 @@
+package com.izouma.nineth.repo;
+
+import com.izouma.nineth.domain.ViewInfo;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+
+import java.util.List;
+
+public interface ViewInfoRepo extends JpaRepository<ViewInfo, Long>, JpaSpecificationExecutor<ViewInfo> {
+
+    List<ViewInfo> findByUserIdAndShowroomId(Long userId, Long showroomId);
+
+}

+ 21 - 8
src/main/java/com/izouma/nineth/web/ShowroomController.java

@@ -1,18 +1,12 @@
 package com.izouma.nineth.web;
 
 import cn.hutool.core.collection.CollUtil;
+import com.izouma.nineth.domain.*;
 import com.izouma.nineth.domain.Collection;
-import com.izouma.nineth.domain.NewsLike;
-import com.izouma.nineth.domain.ShowCollection;
-import com.izouma.nineth.domain.Showroom;
-import com.izouma.nineth.domain.User;
 import com.izouma.nineth.dto.PageQuery;
 import com.izouma.nineth.enums.AuthStatus;
 import com.izouma.nineth.exception.BusinessException;
-import com.izouma.nineth.repo.CollectionRepo;
-import com.izouma.nineth.repo.NewsLikeRepo;
-import com.izouma.nineth.repo.ShowCollectionRepo;
-import com.izouma.nineth.repo.ShowroomRepo;
+import com.izouma.nineth.repo.*;
 import com.izouma.nineth.service.ShowroomService;
 import com.izouma.nineth.utils.SecurityUtils;
 import com.izouma.nineth.utils.excel.ExcelUtils;
@@ -36,6 +30,7 @@ public class ShowroomController extends BaseController {
     private ShowCollectionRepo showCollectionRepo;
     private NewsLikeRepo       newsLikeRepo;
     private CollectionRepo     collectionRepo;
+    private ViewInfoRepo       viewInfoRepo;
 
     @PostMapping("/save")
     public Showroom save(@RequestBody Showroom record) {
@@ -137,6 +132,24 @@ public class ShowroomController extends BaseController {
         showroomRepo.addShare(id, 1);
     }
 
+    @GetMapping("/{id}/view")
+    public void addView(@PathVariable Long id) {
+        //增加浏览量
+        Long userId = SecurityUtils.getAuthenticatedUser().getId();
+
+        if (ObjectUtils.isEmpty(userId)) {
+            return;
+        }
+        List<ViewInfo> list = viewInfoRepo.findByUserIdAndShowroomId(userId, id);
+        if (!list.isEmpty()) return;
+        viewInfoRepo.save(ViewInfo.builder()
+                .userId(userId)
+                .showroomId(id)
+                .build());
+        showroomRepo.addLike(id, 1);
+    }
+
+
     @PostMapping("/pass")
     public void pass(@RequestParam Long id) {
         showroomService.audit(id, AuthStatus.SUCCESS, null);