添加收藏(头歌)

第1关:添加收藏

任务描述

本关任务:实现查询用户收藏的商品功能。

相关知识

为了完成本关任务,你需要掌握:

  1. 添加用户收藏的商品;
  2. 功能实现。
添加用户收藏的商品

如下图是商品页面的展示:如果我们喜欢该商品那么就可以收藏该商品。

一般流程为:点击收藏—>前端携带用户 id 与商品 id 请求服务器—>服务器判断用户是否收藏该商品—>添加数据库。

功能实现
  1. dao 层写好查询用户是否收藏了该商品和添加数据至收藏表的方法。 CollectDao:

     
      
    1. //根据用户id,商品id 查询收藏表是否有数据
    2. @Select("select count(1) from collect where user_id=#{user_id} and product_id=#{product_id}")
    3. int findCollect(int user_id,int product_id);
    4. //添加收藏表
    5. @Insert("insert into collect(user_id,product_id,collect_time) values(#{user_id},#{product_id},now())")
    6. void addCollect(int user_id,int product_id);
  2. service 层定义接口且 Impl 实现类调用 dao 接口方法。 CollectService:

     
      
    1. //定义 service 接口,查询该收藏是否存在
    2. int findCollect(int user_id,int product_id);
    3. //定义 service 接口,添加收藏
    4. void addCollect(int user_id,int product_id);

    CollectServiceImpl:

     
      
    1. /**
    2. * 添加收藏
    3. * @param user_id 用户id
    4. * @param product_id 商品id
    5. */
    6. @Override
    7. public void addCollect(int user_id, int product_id) {
    8. collectDao.addCollect(user_id,product_id);
    9. }
    10. /**
    11. * 查询收藏是否存在
    12. * @param user_id 用户id
    13. * @param product_id 商品id
    14. * @return
    15. */
    16. @Override
    17. public int findCollect(int user_id, int product_id) {
    18. return collectDao.findCollect(user_id,product_id);
    19. }
  3. controller 层:判断用户是否收藏商品,收藏了就直接返回结果集,没收藏就添加收藏返回结果集。

     
      
    1. /**
    2. * 添加收藏
    3. * @param paramMap
    4. * @return
    5. */
    6. @RequestMapping(value = "/addCollect")
    7. public Map addCollect(@RequestBody Map<String,Integer> paramMap){
    8. //接收用户 id
    9. Integer user_id = paramMap.get("user_id");
    10. //接收商品 id
    11. Integer product_id = paramMap.get("product_id");
    12. //定义 map 集合
    13. HashMap<String, Object> map = new HashMap<>();
    14. //查询该用户是否收藏该商品
    15. if(collectService.findCollect(user_id,product_id)<1){
    16. //未收藏,就调用 service 的收藏表
    17. collectService.addCollect(user_id,product_id);
    18. //收藏成功后返回map集合 "code":"001","msg":"收藏成功"
    19. map.put("code","001");
    20. map.put("msg","收藏成功");
    21. }else{
    22. //已收藏就返回map集合 "code":"003","msg":"该商品已经添加收藏,请到我的收藏查看"
    23. map.put("code","003");
    24. map.put("msg","该商品已经添加收藏,请到我的收藏查看");
    25. }
    26. return map;
    27. }

1.数据库如下: 商品表:

字段名称类型备注
product_idint(11)NOT NULL AUTO_INCREMENT'商品id'
product_namechar(100)NOT NULL'商品名'
category_idint(11)NOT NULL'类型id'
product_titlechar(30)NOT NULL'商品标题'
product_introtextNOT NULL'商品描述'
product_picturechar(200)DEFAULT NULL'商品图片'
product_pricedecimal(10,2)NOT NULL'商品价格'
product_selling_pricedecimal(10,2)NOT NULL'商品售价'
product_numint(11)NOT NULL'商品存量'
product_salesint(11)NOT NULL'商品销售数量'
statusint(11)DEFAULT NULL'商品状态'
收藏表:
字段名称类型备注
------------------------------------------------
idint(11)NOT NULL AUTO_INCREMENT'收藏表主键id'
user_idint(11)NOT NULL'用户id'
product_idint(11)NOT NULL'商品id'
collect_timedatetimeNOT NULL'收藏时间'

编程要求

在右侧 CollectDao.java、CollectService.java、CollectServiceImpl.ava、CollectController.java 文件里 Begin-End 处根据提示补充代码。

测试说明

平台会对你编写的代码进行测试:发送请求检验结果集是否正确。

测试输入:

 
  1. {
  2. "user_id":"1018",
  3. "product_id":"1"
  4. }

预期输出:

 
  1. {"msg":"该商品已经添加收藏,请到我的收藏查看","code":"003"}

开始你的任务吧,祝你成功!

测试要求

这句话一定注意!!!

从任务描述里我们能看到平台是需要我们将输入参数的类型更改为整数而不是字符串,所以我们仅需将CollectController.java中的代码进行修改即可。

CollectController.java

package com.www.controller;

import com.www.service.CollectService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.HashMap;
import java.util.Map;

@RestController
@RequestMapping(value = "/collect")
public class CollectController {

    @Autowired
    private CollectService collectService;

    /**
     * 添加收藏
     * @param paramMap
     * @return
     */
    @PostMapping(value = "/addCollect")
    public Map<String, Object> addCollect(@RequestBody Map<String,Integer> paramMap){
        //接收用户 id
        Integer user_id = paramMap.get("user_id");
        //接收商品 id
        Integer product_id = paramMap.get("product_id");
        //定义 map 集合
        HashMap<String, Object> map = new HashMap<>();
        //查询该用户是否收藏该商品
        if(collectService.findCollect(user_id,product_id)<1){
            //未收藏,就调用 service 的收藏表
            collectService.addCollect(user_id,product_id);
            //收藏成功后返回map集合 "code":"001","msg":"收藏成功"
            map.put("code","001");
            map.put("msg","收藏成功");
        }else{
            //已收藏就返回map集合 "code":"003","msg":"该商品已经添加收藏,请到我的收藏查看"
            map.put("code","003");
            map.put("msg","该商品已经添加收藏,请到我的收藏查看");
        }
        return map;
    }
}

最后还是那句话,喜欢的别忘了你们的小心心哦。你们的小心心能让我快乐一整天呢!

  • 6
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值