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 MVC 4.1.3 + MyBatis零基础搭建Web开发框架(注解模式)
本篇文章主要介绍了Spring MVC 4.1.3 + MyBatis零基础搭建Web开发框架(注解模式),具有一定的参考价值,感兴趣的小伙伴们可以参考一下。2017-03-03Java并发编程中的ConcurrentLinkedQueue详解
这篇文章主要介绍了Java并发编程中的ConcurrentLinkedQueue详解,GetThread线程不会因为ConcurrentLinkedQueue队列为空而等待,而是直接返回null,所以当实现队列不空时,等待时,则需要用户自己实现等待逻辑,需要的朋友可以参考下2023-12-12SpringBoot Actuator未授权访问漏洞的排查和解决方法
Spring Boot Actuator 是开发和管理生产级 Spring Boot 应用程序的重要工具,它可以帮助你确保应用程序的稳定性和性能,本文给大家介绍了SpringBoot Actuator未授权访问漏洞的排查和解决方法,需要的朋友可以参考下2024-05-05Java中break、continue、return语句的使用区别对比
这篇文章主要介绍了Java中break、continue、return语句的使用区别对比,本文用非常清爽简明的语言总结了这三个关键字的使用技巧,并用一个实例对比使用结果,需要的朋友可以参考下2015-06-06Spring Boot利用@Async如何实现异步调用:自定义线程池
这篇文章主要给大家介绍了关于Spring Boot利用@Async如何实现异步调用:自定义线程池的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下2018-05-05
最新评论