詹子聪 hace 5 años
padre
commit
abd1f4c059

+ 73 - 0
src/main/java/com/miekir/shibei/controller/api/FavController.java

@@ -0,0 +1,73 @@
+package com.miekir.shibei.controller.api;
+
+import com.alibaba.fastjson.JSON;
+import com.miekir.shibei.bean.ResponseResult;
+import com.miekir.shibei.bean.ResultCode;
+import com.miekir.shibei.bean.db.*;
+import com.miekir.shibei.constants.ServerConstants;
+import com.miekir.shibei.repository.*;
+import com.miekir.shibei.tool.RequestTool;
+import com.miekir.shibei.tool.email.EmailTool;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestHeader;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import javax.servlet.http.HttpServletRequest;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+
+@Controller
+public class FavController {
+    @Autowired
+    private UserRepository userRepository;
+
+    @Autowired
+    private GoodsRepository goodsRepository;
+
+    @Autowired
+    private FavRepository favRepository;
+
+    /**
+     * 设置API是否为会员专属
+     */
+    @RequestMapping(value = "/api/favGoods", method = RequestMethod.POST, produces = "application/json; charset=utf-8")
+    @ResponseBody
+    public String favGoods(@RequestHeader HttpHeaders header, long goodsId) {
+        ResponseResult<String> responseResult = new ResponseResult<String>();
+        responseResult.setMessage("操作失败");
+
+        if (!RequestTool.isRequestValid(header, userRepository)) {
+            responseResult.setMessage("登录过期或没有权限");
+            return JSON.toJSONString(responseResult);
+        }
+
+        String email = header.getFirst("email");
+        FavBean favBean = favRepository.findFavByEmailAndGoodsId(email, goodsId);
+        GoodsBean goodsBean = goodsRepository.findGoodsById(goodsId);
+        if (favBean == null) {
+            favBean = new FavBean();
+            favBean.email = email;
+            favBean.goodsId = goodsId;
+            favRepository.save(favBean);
+            responseResult.setContent("收藏成功");
+            goodsBean.favNum = goodsBean.favNum+1;
+        } else {
+            favRepository.delete(favBean);
+            responseResult.setContent("取消收藏成功");
+            goodsBean.favNum = goodsBean.favNum-1;
+        }
+
+        goodsRepository.save(goodsBean);
+
+        responseResult.setCode(ResultCode.SUCCESS);
+        return JSON.toJSONString(responseResult);
+    }
+}

+ 30 - 7
src/main/java/com/miekir/shibei/controller/api/GoodsController.java

@@ -130,14 +130,17 @@ public class GoodsController {
         ResponseResult<List<GoodsBean>> responseResult = new ResponseResult<List<GoodsBean>>();
         responseResult.setMessage("获取失败");
 
+        if (!RequestTool.isRequestValid(header, userRepository)) {
+            responseResult.setMessage("请重新登录");
+            return JSON.toJSONString(responseResult);
+        }
+
         // 关闭通道
         SystemBean systemBean = systemRepository.findSystemBean();
         if (systemBean != null && systemBean.isVipLimit) {
             responseResult.setMessage("休息时间到");
             return JSON.toJSONString(responseResult);
         }
-        String email = header.getFirst("email");
-        List<Long> favBeanList = favRepository.findFavListByEmail(email);
 
         // 自带的分页查询。这里不使用分页查询,而是返回随机的数据
         List<GoodsBean> goodsBeanList;
@@ -150,10 +153,14 @@ public class GoodsController {
             Sort sort = new Sort(Sort.Direction.DESC,"updateTimeMillis");
             goodsBeanList = goodsRepository.findAll(new PageRequest(randomPageNum, pageSize, sort)).getContent();
 
-            // 当前商品是否已收藏
-            for (GoodsBean goodsBean : goodsBeanList) {
-                if (favBeanList.contains(goodsBean.id)) {
-                    goodsBean.isFavorite = true;
+            if (goodsBeanList != null) {
+                String email = header.getFirst("email");
+                List<Long> favBeanList = favRepository.findFavListByEmail(email);
+                // 当前商品是否已收藏
+                for (GoodsBean goodsBean : goodsBeanList) {
+                    if (favBeanList.contains(goodsBean.id)) {
+                        goodsBean.isFavorite = true;
+                    }
                 }
             }
         } catch (Exception e) {
@@ -178,12 +185,17 @@ public class GoodsController {
      */
     @RequestMapping(value = "/api/getGoodsListByKeyword", method = RequestMethod.GET, produces = "application/json; charset=utf-8")
     @ResponseBody
-    public String getGoodsListByKeyword(String keywords, int pageNum, int pageSize) {
+    public String getGoodsListByKeyword(@RequestHeader HttpHeaders header, String keywords, int pageNum, int pageSize) {
         String keywordsUtf8 = StringTool.getUtf8String(keywords);
 
         ResponseResult<List<GoodsBean>> responseResult = new ResponseResult<List<GoodsBean>>();
         responseResult.setMessage("获取失败");
 
+        if (!RequestTool.isRequestValid(header, userRepository)) {
+            responseResult.setMessage("请重新登录");
+            return JSON.toJSONString(responseResult);
+        }
+
         // 关闭通道
         SystemBean systemBean = systemRepository.findSystemBean();
         if (systemBean != null && systemBean.isVipLimit) {
@@ -198,6 +210,17 @@ public class GoodsController {
             // 模糊查询,要拼上%%
             keywordsUtf8 = "%"+keywordsUtf8+"%";
             goodsBeanList = goodsRepository.getGoodsListByKeyword(keywordsUtf8, pageNum*pageSize, pageSize);
+
+            if (goodsBeanList != null) {
+                String email = header.getFirst("email");
+                List<Long> favBeanList = favRepository.findFavListByEmail(email);
+                // 当前商品是否已收藏
+                for (GoodsBean goodsBean : goodsBeanList) {
+                    if (favBeanList.contains(goodsBean.id)) {
+                        goodsBean.isFavorite = true;
+                    }
+                }
+            }
         } catch (Exception e) {
             e.printStackTrace();
             return JSON.toJSONString(responseResult);

+ 4 - 0
src/main/java/com/miekir/shibei/repository/FavRepository.java

@@ -19,4 +19,8 @@ public interface FavRepository extends JpaRepository<FavBean, Long> {
     @Transactional
     @Query(value="select favBean.goodsId from FavBean favBean where favBean.email=:email")
     public List<Long> findFavListByEmail(@Param("email") String email);
+
+    @Transactional
+    @Query(value="select favBean from FavBean favBean where favBean.email=:email and favBean.goodsId=:goodsId")
+    public FavBean findFavByEmailAndGoodsId(@Param("email") String email, @Param("goodsId") long goodsId);
 }