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

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

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

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

