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物品收藏内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
SpringCloud网关(Zuul)如何给多个微服务之间传递共享参数
这篇文章主要介绍了SpringCloud网关(Zuul)如何给多个微服务之间传递共享参数,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2022-03-03java高级用法之绑定CPU的线程Thread Affinity简介
java线程thread affinity是用来将java代码中的线程绑定到CPU特定的核上,用来提升程序运行的性能,这篇文章主要介绍了java高级用法之绑定CPU的线程thread affinity的相关知识,需要的朋友可以参考下2022-05-05idea在用Mybatis时xml文件sql不提示解决办法(提示后背景颜色去除)
mybatis的xml文件配置的时候,有时候会没有提示,这让我们很头疼,下面这篇文章主要给大家介绍了关于idea在用Mybatis时xml文件sql不提示的解决办法,提示后背景颜色去除的相关资料,需要的朋友可以参考下2023-03-03Spring Security 自动踢掉前一个登录用户的实现代码
这篇文章主要介绍了Spring Security 自动踢掉前一个登录用户的实现代码,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2020-05-05
最新评论