SpringBoot实现物品收藏功能

 更新时间:2021年04月28日 11:09:16   作者:古墓派学子  
这篇文章主要介绍了SpringBoot实现物品收藏功能,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

前后端分离项目–二手交易平台小程序

SpringBoot----物品点赞功能实现
SpringBoot----评论回复功能实现(数据库设计)
SpringBoot----文件(图片)上传与显示(下载)

收藏

数据库设计:使用了第三张表来存储哪个用户收藏了哪个物品

在这里插入图片描述

写这个的时候压根没想到怎么判断用户是否已经收藏,一开始是前端发一次请求我后台就添加数据到数据表中。这样只是用户可以在我的收藏中查看到收藏了的物品,但是点击进去无法让收藏按钮亮起来。

在这里插入图片描述

第一次点击以后会亮,之后第二次进来怎么判断是否收藏这是个问题。
解决:在全局js中写了一个请求,就是小程序刚进入就发请求获取当前用户收藏信息(是一个数组)。然后进入详情页时进行判断。并且当用户再次收藏或者取消收藏后更改数组信息。当用户退出详情页切换到我的界面将这个数组发送到后台更新数据库

在这里插入图片描述

后台代码:这个你就必须去判断前端返回的数组和你数据库当前数组有哪些区别,你是增加还是删除信息,或者既要新增又要删除
数据库原有id【1,2,3】
前端返回id【1,4,5】
这个时候你既要找出2,3去删除,又要找出4,5去新增。

@Override
    public int addGoodsInCar(@RequestBody JSONObject sums) {
        String openid = sums.getString("openid");
        JSONArray gid = sums.getJSONArray("gid");
        if (openid==null||gid==null){
            return 0;
        }
        JSONArray  gidf = (JSONArray)gid.clone();//深拷贝
        ArrayList<Integer> integers = shoppingCarMapper.selectByOpenid(openid);
        int a = 1;
        if (integers.size()==0 ){
            ShoppingCar car = new ShoppingCar();
            car.setOpenid(openid);
            car.setGid(gid.getInteger(0));
            a = shoppingCarMapper.insert(car);
        }
        if (!integers.isEmpty()){
            //去重

                Iterator<Object> it = gid.iterator();
                while(it.hasNext()){
                    Integer gid1 =(Integer) it.next();

                    integers.forEach(item -> {
                        if(item == gid1){
                            it.remove();
                        }
                    });
                }

                Iterator<Object> it1 = gid.iterator();

                while (it1.hasNext() && a==1){
                    int next = (int)it1.next();
                    ShoppingCar car = new ShoppingCar();
                    car.setOpenid(openid);
                    car.setGid(next);
                    a = shoppingCarMapper.insert(car);
                }

                Iterator<Integer> integers0 = integers.iterator();

                while(integers0.hasNext()){
                    Integer gid1 =integers0.next();
                    gidf.forEach(item -> {
                        if(item == gid1){
                            integers0.remove();
                        }
                    });
                }
                Iterator<Integer> iterator2 = integers.iterator();

                while (iterator2.hasNext() && a==1){
                    int next = iterator2.next();
                    ShoppingCar car = new ShoppingCar();
                    car.setOpenid(openid);
                    car.setGid(next);
                    a = shoppingCarMapper.deleteCar(car);
                }


            if (a==0){
                return 0;
            }else {
                return 1;
            }
        }
       return 0;

    }

到此这篇关于SpringBoot实现物品收藏功能的文章就介绍到这了,更多相关SpringBoot物品收藏内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Spring Boot 访问安全之认证和鉴权详解

    Spring Boot 访问安全之认证和鉴权详解

    这篇文章主要介绍了Spring Boot 访问安全之认证和鉴权,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-11-11
  • Spring MVC 4.1.3 + MyBatis零基础搭建Web开发框架(注解模式)

    Spring MVC 4.1.3 + MyBatis零基础搭建Web开发框架(注解模式)

    本篇文章主要介绍了Spring MVC 4.1.3 + MyBatis零基础搭建Web开发框架(注解模式),具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
    2017-03-03
  • Java并发编程中的ConcurrentLinkedQueue详解

    Java并发编程中的ConcurrentLinkedQueue详解

    这篇文章主要介绍了Java并发编程中的ConcurrentLinkedQueue详解,GetThread线程不会因为ConcurrentLinkedQueue队列为空而等待,而是直接返回null,所以当实现队列不空时,等待时,则需要用户自己实现等待逻辑,需要的朋友可以参考下
    2023-12-12
  • SpringBoot Actuator未授权访问漏洞的排查和解决方法

    SpringBoot Actuator未授权访问漏洞的排查和解决方法

    Spring Boot Actuator 是开发和管理生产级 Spring Boot 应用程序的重要工具,它可以帮助你确保应用程序的稳定性和性能,本文给大家介绍了SpringBoot Actuator未授权访问漏洞的排查和解决方法,需要的朋友可以参考下
    2024-05-05
  • Java Scanner类的使用示例

    Java Scanner类的使用示例

    这篇文章主要介绍了Java Scanner类的使用示例,帮助大家更好的理解和学习java,感兴趣的朋友可以了解下
    2020-08-08
  • Java中break、continue、return语句的使用区别对比

    Java中break、continue、return语句的使用区别对比

    这篇文章主要介绍了Java中break、continue、return语句的使用区别对比,本文用非常清爽简明的语言总结了这三个关键字的使用技巧,并用一个实例对比使用结果,需要的朋友可以参考下
    2015-06-06
  • Spring Boot利用@Async如何实现异步调用:自定义线程池

    Spring Boot利用@Async如何实现异步调用:自定义线程池

    这篇文章主要给大家介绍了关于Spring Boot利用@Async如何实现异步调用:自定义线程池的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2018-05-05
  • java 字符串转化为字符数组的3种实现案例

    java 字符串转化为字符数组的3种实现案例

    这篇文章主要介绍了java 字符串转化为字符数组的3种实现案例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-10-10
  • Java线性表的顺序表示及实现

    Java线性表的顺序表示及实现

    这篇文章主要介绍了Java线性表的顺序表示及实现,顺序表是在计算机内存中以数组的形式保存的线性表,线性表的顺序存储是指用一组地址连续的存储单元依次存储线性表中的各个元素、使得线性表中在逻辑结构上相邻的数据元素存储在相邻的物理存储单元中
    2022-07-07
  • Tomcat+JDK安装和配置教程

    Tomcat+JDK安装和配置教程

    这篇文章主要为大家详细介绍了Tomcat+JDK安装和配置教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-03-03

最新评论