diff --git a/litemall-db/src/main/java/org/linlinjava/litemall/db/service/LitemallCollectService.java b/litemall-db/src/main/java/org/linlinjava/litemall/db/service/LitemallCollectService.java index 6386944b..05e9c851 100644 --- a/litemall-db/src/main/java/org/linlinjava/litemall/db/service/LitemallCollectService.java +++ b/litemall-db/src/main/java/org/linlinjava/litemall/db/service/LitemallCollectService.java @@ -16,9 +16,9 @@ public class LitemallCollectService { @Resource private LitemallCollectMapper collectMapper; - public int count(int uid, Integer gid) { + public int count(int uid, byte type, Integer gid) { LitemallCollectExample example = new LitemallCollectExample(); - example.or().andUserIdEqualTo(uid).andValueIdEqualTo(gid).andDeletedEqualTo(false); + example.or().andUserIdEqualTo(uid).andTypeEqualTo(type).andValueIdEqualTo(gid).andDeletedEqualTo(false); return (int) collectMapper.countByExample(example); } diff --git a/litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/web/WxCollectController.java b/litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/web/WxCollectController.java index 41bbae4f..55641b26 100644 --- a/litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/web/WxCollectController.java +++ b/litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/web/WxCollectController.java @@ -1,5 +1,12 @@ package org.linlinjava.litemall.wx.web; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import javax.validation.constraints.NotNull; + import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -9,18 +16,19 @@ import org.linlinjava.litemall.core.validator.Order; import org.linlinjava.litemall.core.validator.Sort; import org.linlinjava.litemall.db.domain.LitemallCollect; import org.linlinjava.litemall.db.domain.LitemallGoods; +import org.linlinjava.litemall.db.domain.LitemallTopic; import org.linlinjava.litemall.db.service.LitemallCollectService; import org.linlinjava.litemall.db.service.LitemallGoodsService; +import org.linlinjava.litemall.db.service.LitemallTopicService; import org.linlinjava.litemall.wx.annotation.LoginUser; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import javax.validation.constraints.NotNull; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; /** * 用户收藏服务 @@ -35,6 +43,8 @@ public class WxCollectController { private LitemallCollectService collectService; @Autowired private LitemallGoodsService goodsService; + @Autowired + private LitemallTopicService topicService; /** * 用户收藏列表 @@ -64,13 +74,21 @@ public class WxCollectController { c.put("id", collect.getId()); c.put("type", collect.getType()); c.put("valueId", collect.getValueId()); - - LitemallGoods goods = goodsService.findById(collect.getValueId()); - c.put("name", goods.getName()); - c.put("brief", goods.getBrief()); - c.put("picUrl", goods.getPicUrl()); - c.put("retailPrice", goods.getRetailPrice()); - + if (type == (byte)0){ + //查询商品信息 + LitemallGoods goods = goodsService.findById(collect.getValueId()); + c.put("name", goods.getName()); + c.put("brief", goods.getBrief()); + c.put("picUrl", goods.getPicUrl()); + c.put("retailPrice", goods.getRetailPrice()); + } else { + //查询专题信息 + LitemallTopic topic = topicService.findById(collect.getValueId()); + c.put("title", topic.getTitle()); + c.put("subtitle", topic.getTitle()); + c.put("price", topic.getPrice()); + c.put("picUrl", topic.getPicUrl()); + } collects.add(c); } diff --git a/litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/web/WxGoodsController.java b/litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/web/WxGoodsController.java index ff8c352f..ae53efa5 100644 --- a/litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/web/WxGoodsController.java +++ b/litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/web/WxGoodsController.java @@ -147,7 +147,7 @@ public class WxGoodsController { // 用户收藏 int userHasCollect = 0; if (userId != null) { - userHasCollect = collectService.count(userId, id); + userHasCollect = collectService.count(userId, (byte)0, id); } // 记录用户的足迹 异步处理 diff --git a/litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/web/WxTopicController.java b/litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/web/WxTopicController.java index f97093c5..c009e1be 100644 --- a/litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/web/WxTopicController.java +++ b/litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/web/WxTopicController.java @@ -7,8 +7,10 @@ import org.linlinjava.litemall.core.validator.Order; import org.linlinjava.litemall.core.validator.Sort; import org.linlinjava.litemall.db.domain.LitemallGoods; import org.linlinjava.litemall.db.domain.LitemallTopic; +import org.linlinjava.litemall.db.service.LitemallCollectService; import org.linlinjava.litemall.db.service.LitemallGoodsService; import org.linlinjava.litemall.db.service.LitemallTopicService; +import org.linlinjava.litemall.wx.annotation.LoginUser; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.GetMapping; @@ -35,6 +37,8 @@ public class WxTopicController { private LitemallTopicService topicService; @Autowired private LitemallGoodsService goodsService; + @Autowired + private LitemallCollectService collectService; /** * 专题列表 @@ -59,7 +63,7 @@ public class WxTopicController { * @return 专题详情 */ @GetMapping("detail") - public Object detail(@NotNull Integer id) { + public Object detail(@LoginUser Integer userId, @NotNull Integer id) { LitemallTopic topic = topicService.findById(id); List goods = new ArrayList<>(); for (Integer i : topic.getGoods()) { @@ -67,10 +71,17 @@ public class WxTopicController { if (null != good) goods.add(good); } + + // 用户收藏 + int userHasCollect = 0; + if (userId != null) { + userHasCollect = collectService.count(userId, (byte)1, id); + } Map entity = new HashMap(); entity.put("topic", topic); entity.put("goods", goods); + entity.put("userHasCollect", userHasCollect); return ResponseUtil.ok(entity); } diff --git a/litemall-wx/pages/topicDetail/topicDetail.js b/litemall-wx/pages/topicDetail/topicDetail.js index 8ce88327..b6494a54 100644 --- a/litemall-wx/pages/topicDetail/topicDetail.js +++ b/litemall-wx/pages/topicDetail/topicDetail.js @@ -10,7 +10,9 @@ Page({ topicList: [], commentCount: 0, commentList: [], - topicGoods: [] + topicGoods: [], + collect: false, + userHasCollect: 0 }, onLoad: function(options) { // 页面初始化 options为页面跳转所带来的参数 @@ -25,7 +27,9 @@ Page({ if (res.errno === 0) { that.setData({ topic: res.data.topic, - topicGoods: res.data.goods + topicGoods: res.data.goods, + userHasCollect: res.data.userHasCollect, + collect: res.data.userHasCollect == 1 }); WxParse.wxParse('topicDetail', 'html', res.data.topic.content, that); @@ -59,6 +63,31 @@ Page({ } }); }, + + //添加或是取消收藏 + addCollectOrNot: function() { + let that = this; + util.request(api.CollectAddOrDelete, { + type: 1, + valueId: this.data.id + }, "POST") + .then(function(res) { + if (that.data.userHasCollect == 1) { + that.setData({ + collect: false, + userHasCollect: 0 + }); + } else { + that.setData({ + collect: true, + userHasCollect: 1 + }); + } + + }); + + }, + postComment() { if (!app.globalData.hasLogin) { wx.navigateTo({ diff --git a/litemall-wx/pages/topicDetail/topicDetail.wxml b/litemall-wx/pages/topicDetail/topicDetail.wxml index cbf25a4f..cd1eef89 100644 --- a/litemall-wx/pages/topicDetail/topicDetail.wxml +++ b/litemall-wx/pages/topicDetail/topicDetail.wxml @@ -6,7 +6,9 @@ - 专题商品 + 专题商品 + + diff --git a/litemall-wx/pages/topicDetail/topicDetail.wxss b/litemall-wx/pages/topicDetail/topicDetail.wxss index 68e79165..a7a10b03 100644 --- a/litemall-wx/pages/topicDetail/topicDetail.wxss +++ b/litemall-wx/pages/topicDetail/topicDetail.wxss @@ -144,6 +144,13 @@ border-bottom: 1px solid #d9d9d9; } +.topic-goods .h .i { + display: block; + float: right; + width: 33rpx; + height: 33rpx; +} + .topic-goods .h .t { display: block; float: left; diff --git a/litemall-wx/pages/ucenter/collect/collect.js b/litemall-wx/pages/ucenter/collect/collect.js index a81222ad..25b591a8 100644 --- a/litemall-wx/pages/ucenter/collect/collect.js +++ b/litemall-wx/pages/ucenter/collect/collect.js @@ -27,9 +27,21 @@ Page({ totalPages: res.data.pages }); } + }).finally(() => { wx.hideLoading(); }); }, + switchTab: function(event) { + let type = event.currentTarget.dataset.index; + this.setData({ + collectList: [], + type, + page: 1, + limit: 10, + totalPages: 1 + }); + this.getCollectList(); + }, onLoad: function(options) { this.getCollectList(); }, @@ -61,15 +73,13 @@ Page({ onUnload: function() { // 页面关闭 }, - openGoods(event) { - + openCollect(event) { let that = this; let index = event.currentTarget.dataset.index; - let goodsId = this.data.collectList[index].valueId; + let valueId = this.data.collectList[index].valueId; //触摸时间距离页面打开的毫秒数 var touchTime = that.data.touchEnd - that.data.touchStart; - console.log(touchTime); //如果按下时间大于350为长按 if (touchTime > 350) { wx.showModal({ @@ -80,10 +90,9 @@ Page({ util.request(api.CollectAddOrDelete, { type: that.data.type, - valueId: goodsId + valueId: valueId }, 'POST').then(function(res) { if (res.errno === 0) { - console.log(res.data); wx.showToast({ title: '删除成功', icon: 'success', @@ -99,9 +108,12 @@ Page({ } }) } else { - + var prefix = '/pages/goods/goods?id=' + if(this.data.type == 1){ + prefix = "/pages/topicDetail/topicDetail?id=" + } wx.navigateTo({ - url: '/pages/goods/goods?id=' + goodsId, + url: prefix + valueId, }); } }, diff --git a/litemall-wx/pages/ucenter/collect/collect.wxml b/litemall-wx/pages/ucenter/collect/collect.wxml index 4bbb7c94..1daf6bf0 100644 --- a/litemall-wx/pages/ucenter/collect/collect.wxml +++ b/litemall-wx/pages/ucenter/collect/collect.wxml @@ -1,17 +1,30 @@ + + + 商品收藏 + + + 专题收藏 + + 还没有收藏 - - + + - + {{item.name}} {{item.brief}} ¥{{item.retailPrice}} + + {{item.title}} + {{item.subtitle}} + {{item.price}}元起 + diff --git a/litemall-wx/pages/ucenter/collect/collect.wxss b/litemall-wx/pages/ucenter/collect/collect.wxss index 49e44f72..6a5c6af7 100644 --- a/litemall-wx/pages/ucenter/collect/collect.wxss +++ b/litemall-wx/pages/ucenter/collect/collect.wxss @@ -10,6 +10,34 @@ page { height: auto; overflow: hidden; } +.collect-switch { + width: 100%; + background: #fff; + height: 84rpx; +} + +.collect-switch .item { + display: inline-block; + height: 82rpx; + width: 50%; + padding: 0 15rpx; + text-align: center; +} + +.collect-switch .item .txt { + display: inline-block; + height: 82rpx; + padding: 0 20rpx; + line-height: 82rpx; + color: #9a9ba1; + font-size: 30rpx; + width: 170rpx; +} + +.collect-switch .item.active .txt { + color: #ab956d; + border-bottom: 4rpx solid #ab956d; +} .no-collect { width: 100%; @@ -34,7 +62,8 @@ page { color: #999; } -.collect-list { +/*商品收藏列表样式*/ +.goods-list { width: 100%; height: auto; overflow: hidden; @@ -43,7 +72,7 @@ page { border-top: 1px solid #e1e1e1; } -.item { +.goods-list .item { height: 212rpx; width: 720rpx; background: #fff; @@ -51,17 +80,17 @@ page { border-bottom: 1px solid #e1e1e1; } -.item:last-child { +.goods-list .item:last-child { border-bottom: 1px solid #fff; } -.item .img { +.goods-list .item .img { float: left; width: 150rpx; height: 150rpx; } -.item .info { +.goods-list .item .info { float: right; width: 540rpx; height: 150rpx; @@ -71,22 +100,87 @@ page { padding-left: 20rpx; } -.item .info .name { +.goods-list .item .info .name { font-size: 28rpx; color: #333; line-height: 40rpx; } -.item .info .subtitle { +.goods-list .item .info .subtitle { margin-top: 8rpx; font-size: 24rpx; color: #888; line-height: 40rpx; } -.item .info .price { +.goods-list .item .info .price { margin-top: 8rpx; font-size: 28rpx; color: #333; line-height: 40rpx; } + +/*专题收藏列表样式*/ + +.topic-list{ + width: 750rpx; + height: 100%; + overflow: hidden; + background: #f4f4f4; +} + +.topic-list .item{ + width: 100%; + height: 625rpx; + overflow: hidden; + background: #fff; + margin-bottom: 20rpx; +} + +.topic-list .img{ + width: 100%; + height: 415rpx; +} + +.topic-list .info{ + width: 100%; + height: 210rpx; + overflow: hidden; +} + +.topic-list .title{ + display: block; + text-align: center; + width: 100%; + height: 33rpx; + line-height: 35rpx; + color: #333; + overflow: hidden; + font-size: 35rpx; + margin-top: 30rpx; +} + +.topic-list .desc{ + display: block; + text-align: center; + position: relative; + width: auto; + height: 24rpx; + line-height: 24rpx; + overflow: hidden; + color: #999; + font-size: 24rpx; + margin-top: 16rpx; + margin-bottom: 30rpx; +} + +.topic-list .price{ + display: block; + text-align: center; + width: 100%; + height: 27rpx; + line-height: 27rpx; + overflow: hidden; + color: #b4282d; + font-size: 27rpx; +} \ No newline at end of file diff --git a/litemall-wx/pages/ucenter/index/index.wxml b/litemall-wx/pages/ucenter/index/index.wxml index 8c98774a..d6eeb69c 100644 --- a/litemall-wx/pages/ucenter/index/index.wxml +++ b/litemall-wx/pages/ucenter/index/index.wxml @@ -55,7 +55,7 @@ - 商品收藏 + 收藏夹