瀏覽代碼

1.商品收藏/取消
2.商品收藏列表

plf 3 年之前
父節點
當前提交
0c4e35514b

+ 66 - 0
src/main/java/com/caimei365/commodity/controller/UserLikeApi.java

@@ -0,0 +1,66 @@
+package com.caimei365.commodity.controller;
+
+import com.caimei365.commodity.model.ResponseJson;
+import com.caimei365.commodity.model.vo.PaginationVo;
+import com.caimei365.commodity.model.vo.ProductItemVo;
+import com.caimei365.commodity.service.UserLikeService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import lombok.RequiredArgsConstructor;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @author zzj 2021/9/17
+ */
+@Api(tags = "用户收藏API")
+@RestController
+@RequiredArgsConstructor
+@RequestMapping("/commodity/userLike")
+public class UserLikeApi {
+
+    private final UserLikeService userLikeService;
+
+    /**
+     * 商品收藏(单个商品)
+     */
+    @ApiOperation("单个商品收藏/取消收藏")
+    @ApiImplicitParams({
+            @ApiImplicitParam(required = true, name = "userID", value = "当前用户id"),
+            @ApiImplicitParam(required = true, name = "productID", value = "收藏商品id"),
+    })
+    @GetMapping("/likeOne")
+    public ResponseJson<String> like(Integer userID, Integer productID) {
+        if (userID == null || productID == null) {
+            return ResponseJson.error("非法参数");
+        }
+        return userLikeService.likeOne(userID, productID);
+    }
+
+    /**
+     * 个人中心收藏商品列表
+     *
+     * @param userID 用户Id
+     */
+    @ApiOperation("收藏商品列表")
+    @ApiImplicitParams({
+            @ApiImplicitParam(required = false, name = "userId", value = "用户Id"),
+            @ApiImplicitParam(required = false, name = "pageNum", value = "页码"),
+            @ApiImplicitParam(required = false, name = "pageSize", value = "每页数量")
+    })
+    @GetMapping("/likeList")
+    public ResponseJson<PaginationVo<ProductItemVo>> likes(Integer userID,
+                                                           @RequestParam(value = "pageNum", defaultValue = "1") int pageNum,
+                                                           @RequestParam(value = "pageSize", defaultValue = "10") int pageSize) {
+        if(userID==null){
+            return ResponseJson.error("非法参数");
+        }
+        return userLikeService.findLikeList(userID, pageNum, pageSize);
+    }
+
+
+}

+ 56 - 0
src/main/java/com/caimei365/commodity/mapper/UserLikeMapper.java

@@ -0,0 +1,56 @@
+package com.caimei365.commodity.mapper;
+
+import com.caimei365.commodity.model.vo.ProductItemVo;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * @author zzj 2021/9/17
+ */
+@Mapper
+public interface UserLikeMapper {
+
+    /**
+     * 用户收藏
+     * @param userID
+     * @param productID
+     * @param userLike
+     * @return
+     */
+    Integer like(Integer userID, Integer productID,Integer userLike);
+
+    /**
+     * 取消收藏
+     * @param userID
+     * @param productID
+     * @param userLike
+     * @return
+     */
+    Integer disLike(Integer userID, Integer productID,Integer userLike);
+
+    /**
+     * 查找用户收藏情况
+     * @param userID
+     * @param productID
+     * @return
+     */
+    Integer findLike(Integer userID, Integer productID);
+
+    /**
+     * 新用户收藏
+     * @param userID
+     * @param productID
+     */
+    void insert(Integer userID, Integer productID);
+
+    /**
+     * 用户收藏列表
+     * @param userID
+     * @return
+     */
+    List<ProductItemVo> findLikeList(@Param("userID") Integer userID);
+
+
+}

+ 28 - 0
src/main/java/com/caimei365/commodity/service/UserLikeService.java

@@ -0,0 +1,28 @@
+package com.caimei365.commodity.service;
+
+import com.caimei365.commodity.model.ResponseJson;
+import com.caimei365.commodity.model.vo.PaginationVo;
+import com.caimei365.commodity.model.vo.ProductItemVo;
+
+/**
+ * zzj 2021/9/17
+ * @author zzj
+ */
+public interface UserLikeService {
+    /**
+     * 收藏
+     * @param userID
+     * @param productID
+     * @return
+     */
+    ResponseJson<String> likeOne(Integer userID, Integer productID);
+
+    /**
+     * 收藏列表
+     * @param userID
+     * @param pageNum
+     * @param pageSize
+     * @return
+     */
+    ResponseJson<PaginationVo<ProductItemVo>> findLikeList(Integer userID, int pageNum, int pageSize);
+}

+ 68 - 0
src/main/java/com/caimei365/commodity/service/impl/UserLikeServiceImpl.java

@@ -0,0 +1,68 @@
+package com.caimei365.commodity.service.impl;
+
+import com.caimei365.commodity.components.PriceUtilService;
+import com.caimei365.commodity.mapper.UserLikeMapper;
+import com.caimei365.commodity.model.ResponseJson;
+import com.caimei365.commodity.model.vo.PaginationVo;
+import com.caimei365.commodity.model.vo.ProductItemVo;
+import com.caimei365.commodity.service.PageService;
+import com.caimei365.commodity.service.UserLikeService;
+import com.github.pagehelper.PageHelper;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+
+/**
+ * @author zzj 2021/9/17
+ */
+@Service
+public class UserLikeServiceImpl implements UserLikeService {
+
+    @Resource
+    private UserLikeMapper likeMapper;
+
+    @Resource
+    private PriceUtilService priceUtilService;
+
+    @Resource
+    private PageService pageService;
+
+    @Override
+    public ResponseJson<String> likeOne(Integer userID, Integer productID) {
+        //findLike为空则添加收藏,1取消,0收藏。
+        Integer flag = likeMapper.findLike(userID, productID);
+        if (flag == null) {
+            likeMapper.insert(userID, productID);
+            return ResponseJson.success("收藏成功");
+        }
+        if (flag.equals(1)) {
+            likeMapper.disLike(userID, productID, 0);
+            return ResponseJson.success("取消收藏成功");
+        }
+        if (flag.equals(0)) {
+            likeMapper.like(userID, productID, 1);
+            return ResponseJson.success("收藏成功");
+        }
+        return ResponseJson.error("收藏失败");
+    }
+
+    @Override
+    public ResponseJson<PaginationVo<ProductItemVo>> findLikeList(Integer userID, int pageNum, int pageSize) {
+        if (null == userID) {
+            return ResponseJson.error("参数错误:用户Id不能为空!", null);
+        }
+        PageHelper.startPage(pageNum, pageSize);
+        List<ProductItemVo> productList = likeMapper.findLikeList(userID);
+        productList.forEach(product -> {
+            // 设置商品主图及价格
+            priceUtilService.setProductDetails(userID, product);
+            //优惠券标识
+            Boolean couponsLogo = pageService.setCouponsLogo(userID, product.getProductId(), 2);
+            product.setCouponsLogo(couponsLogo);
+        });
+        PaginationVo<ProductItemVo> pageData = new PaginationVo<>(productList);
+        return ResponseJson.success(pageData);
+    }
+}

+ 71 - 0
src/main/resources/mapper/UserLikeMapper.xml

@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.caimei365.commodity.mapper.UserLikeMapper">
+
+    <insert id="insert">
+        INSERT INTO cm_product_userlike (userID, productID, userLike, likeTime)
+        VALUES (#{userID}, #{productID}, 1, now())
+    </insert>
+
+    <update id="like">
+        UPDATE cm_product_userlike
+        SET userLike=#{userLike},
+            likeTime=now()
+        WHERE userID = #{userID}
+          AND productID = #{productID}
+    </update>
+
+    <update id="disLike">
+        UPDATE cm_product_userlike
+        SET userLike=#{userLike}
+        WHERE userID = #{userID}
+          AND productID = #{productID}
+    </update>
+
+
+    <select id="findLike" resultType="java.lang.Integer">
+        SELECT userLike
+        FROM cm_product_userlike
+        WHERE userId = #{userID}
+          AND productID = #{productID}
+    </select>
+
+    <select id="findLikeList" resultType="com.caimei365.commodity.model.vo.ProductItemVo">
+        SELECT p.productID       AS productId,
+               p.actStatus,
+               p.name,
+               p.aliasName,
+               p.mainImage       AS image,
+               p.unit,
+               p.productCode     AS CODE,
+               p.price1TextFlag  AS priceFlag,
+               p.price1          AS price,
+               p.searchKey       AS keyword,
+               p.price8Text      AS beautyActFlag,
+               p.minBuyNumber    AS minBuyNumber,
+               p.maxBuyNumber    AS maxBuyNumber,
+               p.ladderPriceFlag,
+               p.normalPrice,
+               p.step,
+               p.shopID          AS shopId,
+               p.taxPoint        AS taxRate,
+               p.includedTax,
+               p.invoiceType,
+               p.productCategory AS productCategory,
+               p.validFlag,
+               p.featuredFlag,
+               p.commodityType,
+               p.bigTypeID       AS bigTypeId,
+               p.smallTypeID     AS smallTypeId,
+               p.tinyTypeID      AS tinyTypeId,
+               p.visibility      AS visibility
+        FROM product p
+                 LEFT JOIN cm_product_userlike cpu ON p.productID = cpu.productID
+        WHERE p.validFlag = '2'
+          AND cpu.userLike = '1'
+          AND cpu.userID = #{userID}
+        ORDER BY cpu.likeTime DESC
+    </select>
+</mapper>