SpringBoot實現(xiàn)物品收藏功能
前后端分離項目–二手交易平臺小程序
SpringBoot----物品點贊功能實現(xiàn)
SpringBoot----評論回復(fù)功能實現(xiàn)(數(shù)據(jù)庫設(shè)計)
SpringBoot----文件(圖片)上傳與顯示(下載)
收藏
數(shù)據(jù)庫設(shè)計:使用了第三張表來存儲哪個用戶收藏了哪個物品

寫這個的時候壓根沒想到怎么判斷用戶是否已經(jīng)收藏,一開始是前端發(fā)一次請求我后臺就添加數(shù)據(jù)到數(shù)據(jù)表中。這樣只是用戶可以在我的收藏中查看到收藏了的物品,但是點擊進去無法讓收藏按鈕亮起來。

第一次點擊以后會亮,之后第二次進來怎么判斷是否收藏這是個問題。
解決:在全局js中寫了一個請求,就是小程序剛進入就發(fā)請求獲取當(dāng)前用戶收藏信息(是一個數(shù)組)。然后進入詳情頁時進行判斷。并且當(dāng)用戶再次收藏或者取消收藏后更改數(shù)組信息。當(dāng)用戶退出詳情頁切換到我的界面將這個數(shù)組發(fā)送到后臺更新數(shù)據(jù)庫

后臺代碼:這個你就必須去判斷前端返回的數(shù)組和你數(shù)據(jù)庫當(dāng)前數(shù)組有哪些區(qū)別,你是增加還是刪除信息,或者既要新增又要刪除
數(shù)據(jù)庫原有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;
}
到此這篇關(guān)于SpringBoot實現(xiàn)物品收藏功能的文章就介紹到這了,更多相關(guān)SpringBoot物品收藏內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java中Optional.of()方法及源碼解析(非常詳細!)
這篇文章主要給大家介紹了關(guān)于Java中Optional.of()方法及源碼解析的相關(guān)資料,Java中java.util .Optional類的of()方法用于獲得該Optional類中具有指定類型的指定值的一個實例,文中通過代碼介紹的非常詳細,需要的朋友可以參考下2024-06-06
Java中轉(zhuǎn)義字符反斜杠\的代替方法及repalceAll內(nèi)涵解析
這篇文章主要介紹了Java中轉(zhuǎn)義字符反斜杠\的代替方法及repalceAll內(nèi)涵解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08
IDEA中將SpringBoot項目提交到git倉庫的方法步驟
本文主要介紹了IDEA中將SpringBoot項目提交到git倉庫的方法步驟,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-12-12
RabbitMQ中的Connection和Channel信道詳解
這篇文章主要介紹了RabbitMQ中的Connection和Channel信道詳解,信道是建立在 Connection 之上的虛擬連接,RabbitMQ 處理的每條 AMQP 指令都是通過信道完成的,需要的朋友可以參考下2023-08-08
Java接收text/event-stream格式數(shù)據(jù)的詳細代碼
這篇文章主要介紹了java接收text/event-stream格式數(shù)據(jù),本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-07-07

