瀏覽代碼

:rabbit: 展示收藏页,显示商品是否已出售

nnkwrik 6 年之前
父節點
當前提交
f5faf830b1
共有 22 個文件被更改,包括 259 次插入79 次删除
  1. 5 1
      goods-service/src/main/java/io/github/nnkwrik/goodsservice/controller/GoodsController.java
  2. 0 10
      goods-service/src/main/java/io/github/nnkwrik/goodsservice/controller/IndexController.java
  3. 45 0
      goods-service/src/main/java/io/github/nnkwrik/goodsservice/controller/UserController.java
  4. 1 0
      goods-service/src/main/java/io/github/nnkwrik/goodsservice/dao/GoodsMapper.java
  5. 0 30
      goods-service/src/main/java/io/github/nnkwrik/goodsservice/dao/OtherMapper.java
  6. 52 0
      goods-service/src/main/java/io/github/nnkwrik/goodsservice/dao/UserMapper.java
  7. 1 0
      goods-service/src/main/java/io/github/nnkwrik/goodsservice/model/vo/inner/GoodsSimpleVo.java
  8. 0 2
      goods-service/src/main/java/io/github/nnkwrik/goodsservice/service/GoodsService.java
  9. 0 1
      goods-service/src/main/java/io/github/nnkwrik/goodsservice/service/IndexService.java
  10. 18 0
      goods-service/src/main/java/io/github/nnkwrik/goodsservice/service/UserService.java
  11. 0 5
      goods-service/src/main/java/io/github/nnkwrik/goodsservice/service/impl/GoodsServiceImpl.java
  12. 0 9
      goods-service/src/main/java/io/github/nnkwrik/goodsservice/service/impl/IndexServiceImpl.java
  13. 45 0
      goods-service/src/main/java/io/github/nnkwrik/goodsservice/service/impl/UserServiceImpl.java
  14. 1 0
      goods-service/src/main/java/io/github/nnkwrik/goodsservice/util/PO2VO.java
  15. 0 1
      wx-front/pages/goods/goods.js
  16. 6 2
      wx-front/pages/goods/goods.wxml
  17. 22 6
      wx-front/pages/goods/goods.wxss
  18. 5 5
      wx-front/pages/ucenter/collect/collect.js
  19. 11 3
      wx-front/pages/ucenter/collect/collect.wxml
  20. 43 1
      wx-front/pages/ucenter/collect/collect.wxss
  21. 2 2
      wx-front/pages/ucenter/index/index.js
  22. 2 1
      wx-front/pages/ucenter/index/index.wxml

+ 5 - 1
goods-service/src/main/java/io/github/nnkwrik/goodsservice/controller/GoodsController.java

@@ -12,6 +12,7 @@ import io.github.nnkwrik.goodsservice.model.vo.inner.CommentVo;
 import io.github.nnkwrik.goodsservice.model.vo.inner.GalleryVo;
 import io.github.nnkwrik.goodsservice.model.vo.inner.GoodsDetailVo;
 import io.github.nnkwrik.goodsservice.service.GoodsService;
+import io.github.nnkwrik.goodsservice.service.UserService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.util.StringUtils;
@@ -32,6 +33,9 @@ public class GoodsController {
     @Autowired
     private GoodsService goodsService;
 
+    @Autowired
+    private UserService userService;
+
     /**
      * 获取选定的子目录下的商品列表和同一个父目录下的兄弟目录
      *
@@ -75,7 +79,7 @@ public class GoodsController {
 
         boolean userHasCollect = false;
         if (jwtUser != null)
-            userHasCollect = goodsService.userHasCollect(jwtUser.getOpenId(), goodsId);
+            userHasCollect = userService.userHasCollect(jwtUser.getOpenId(), goodsId);
         GoodsDetailPageVo vo = new GoodsDetailPageVo(goodsDetail, goodsGallery, comment, userHasCollect);
         log.debug("浏览商品详情 : 商品id={},商品名={}", vo.getInfo().getId(), vo.getInfo().getName());
 

+ 0 - 10
goods-service/src/main/java/io/github/nnkwrik/goodsservice/controller/IndexController.java

@@ -54,16 +54,6 @@ public class IndexController {
         return Response.ok(vo);
     }
 
-    @PostMapping("/collect/addordelete/{goodsId}/{userHasCollect}")
-    public Response collectAddOrDelete(@PathVariable("goodsId") int goodsId,
-                                       @PathVariable("userHasCollect") boolean hasCollect,
-                                       @JWT(required = true) JWTUser user) {
-        indexService.collectAddOrDelete(goodsId, user.getOpenId(), hasCollect);
-        log.info("用户【{}】添加或删除收藏商品,商品id={},是否是添加?{}", user.getNickName(), goodsId, !hasCollect);
-        return Response.ok();
-
-    }
-
     @PostMapping("/comment/post/{goodsId}")
     public Response postComment(@PathVariable("goodsId") int goodsId,
                                 @RequestBody CommentVo comment,

+ 45 - 0
goods-service/src/main/java/io/github/nnkwrik/goodsservice/controller/UserController.java

@@ -0,0 +1,45 @@
+package io.github.nnkwrik.goodsservice.controller;
+
+import io.github.nnkwrik.common.dto.JWTUser;
+import io.github.nnkwrik.common.dto.Response;
+import io.github.nnkwrik.common.token.injection.JWT;
+import io.github.nnkwrik.goodsservice.model.vo.inner.GoodsSimpleVo;
+import io.github.nnkwrik.goodsservice.service.UserService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+/**
+ * @author nnkwrik
+ * @date 18/11/27 20:33
+ */
+@RestController
+@Slf4j
+public class UserController {
+
+    @Autowired
+    private UserService userService;
+
+    @PostMapping("/collect/addordelete/{goodsId}/{userHasCollect}")
+    public Response collectAddOrDelete(@PathVariable("goodsId") int goodsId,
+                                       @PathVariable("userHasCollect") boolean hasCollect,
+                                       @JWT(required = true) JWTUser user) {
+        userService.collectAddOrDelete(goodsId, user.getOpenId(), hasCollect);
+        log.info("用户【{}】添加或删除收藏商品,商品id={},是否是添加?{}", user.getNickName(), goodsId, !hasCollect);
+        return Response.ok();
+
+    }
+
+
+    @GetMapping("/collect/list")
+    public Response getCollectList(@JWT(required = true)JWTUser user){
+        List<GoodsSimpleVo> vo = userService.getUserCollectList(user.getOpenId());
+        log.info("用户【{}】查询收藏的商品,总数:{}", user.getNickName(), vo.size());
+        return Response.ok(vo);
+    }
+}

+ 1 - 0
goods-service/src/main/java/io/github/nnkwrik/goodsservice/dao/GoodsMapper.java

@@ -63,6 +63,7 @@ public interface GoodsMapper {
             "       `desc`,\n" +
             "       want_count,\n" +
             "       browse_count,\n" +
+            "       is_on_sale,\n" +
             "       last_edit,\n" +
             "       postage,\n" +
             "       region,\n" +

+ 0 - 30
goods-service/src/main/java/io/github/nnkwrik/goodsservice/dao/OtherMapper.java

@@ -25,36 +25,6 @@ public interface OtherMapper {
             "limit 5")
     List<Ad> findAd();
 
-    @Select("SELECT EXISTS(SELECT 1 FROM user_preference WHERE type = 1 and user_id = #{user_id} and goods_id = #{goods_id})")
-    Boolean userHasCollect(@Param("user_id") String userId, @Param("goods_id") int goodsId);
-
-
-    @Insert("insert into user_preference (goods_id, user_id, type)\n" +
-            "values (#{goods_id}, #{user_id}, 1);\n")
-    void setUserCollect(@Param("user_id") String userId, @Param("goods_id") int goodsId);
-
-    @Delete("delete\n" +
-            "from user_preference\n" +
-            "where goods_id = #{goods_id}\n" +
-            "  and user_id = #{user_id}\n" +
-            "  and type = 1;")
-    void deleteUserCollect(@Param("user_id") String userId, @Param("goods_id") int goodsId);
-
-
-    @Select("SELECT EXISTS(SELECT 1 FROM user_preference WHERE type = 2 and user_id = #{user_id} and goods_id = #{goods_id})")
-    Boolean userHasWant(@Param("user_id") String userId, @Param("goods_id") int goodsId);
-
-    @Insert("insert into user_preference (goods_id, user_id, type)\n" +
-            "values (#{goods_id}, #{user_id}, 2);\n")
-    void setUserWant(@Param("user_id") String userId, @Param("goods_id") int goodsId);
-
-    @Delete("delete\n" +
-            "from user_preference\n" +
-            "where goods_id = #{goods_id}\n" +
-            "  and user_id = #{user_id}\n" +
-            "  and type = 2;")
-    void deleteUserWant(@Param("user_id") String userId, @Param("goods_id") int goodsId);
-
 
     @Insert("insert into goods_comment (goods_id, user_id, reply_comment_id, reply_user_id, content)\n" +
             "values (#{goods_id}, #{user_id}, #{reply_comment_id}, #{reply_user_id}, #{content});")

+ 52 - 0
goods-service/src/main/java/io/github/nnkwrik/goodsservice/dao/UserMapper.java

@@ -0,0 +1,52 @@
+package io.github.nnkwrik.goodsservice.dao;
+
+import io.github.nnkwrik.goodsservice.model.po.Goods;
+import org.apache.ibatis.annotations.*;
+
+import java.util.List;
+
+/**
+ * @author nnkwrik
+ * @date 18/11/27 20:38
+ */
+@Mapper
+public interface UserMapper {
+
+    @Select("SELECT EXISTS(SELECT 1 FROM user_preference WHERE type = 1 and user_id = #{user_id} and goods_id = #{goods_id})")
+    Boolean userHasCollect(@Param("user_id") String userId, @Param("goods_id") int goodsId);
+
+
+    @Insert("insert into user_preference (goods_id, user_id, type)\n" +
+            "values (#{goods_id}, #{user_id}, 1);\n")
+    void setUserCollect(@Param("user_id") String userId, @Param("goods_id") int goodsId);
+
+    @Delete("delete\n" +
+            "from user_preference\n" +
+            "where goods_id = #{goods_id}\n" +
+            "  and user_id = #{user_id}\n" +
+            "  and type = 1;")
+    void deleteUserCollect(@Param("user_id") String userId, @Param("goods_id") int goodsId);
+
+
+    @Select("SELECT EXISTS(SELECT 1 FROM user_preference WHERE type = 2 and user_id = #{user_id} and goods_id = #{goods_id})")
+    Boolean userHasWant(@Param("user_id") String userId, @Param("goods_id") int goodsId);
+
+    @Insert("insert into user_preference (goods_id, user_id, type)\n" +
+            "values (#{goods_id}, #{user_id}, 2);\n")
+    void setUserWant(@Param("user_id") String userId, @Param("goods_id") int goodsId);
+
+    @Delete("delete\n" +
+            "from user_preference\n" +
+            "where goods_id = #{goods_id}\n" +
+            "  and user_id = #{user_id}\n" +
+            "  and type = 2;")
+    void deleteUserWant(@Param("user_id") String userId, @Param("goods_id") int goodsId);
+
+
+    @Select("select goods.id, name, primary_pic_url, price, is_on_sale\n" +
+            "from goods\n" +
+            "       inner join user_preference as u \n" +
+            "         on goods.id = u.goods_id and u.user_id = #{user_id} and u.type = 1 and is_delete = false\n" +
+            "order by u.create_time desc;")
+    List<Goods> getUserCollect(@Param("user_id")String userId);
+}

+ 1 - 0
goods-service/src/main/java/io/github/nnkwrik/goodsservice/model/vo/inner/GoodsSimpleVo.java

@@ -12,4 +12,5 @@ public class GoodsSimpleVo {
     private String name;
     private String list_pic_url;
     private Double price;
+    private Boolean is_on_sale;
 }

+ 0 - 2
goods-service/src/main/java/io/github/nnkwrik/goodsservice/service/GoodsService.java

@@ -27,7 +27,5 @@ public interface GoodsService {
 
     List<CommentVo> getGoodsComment(int goodsId);
 
-    Boolean userHasCollect(String userId, int goodsId);
-
     void postGoods(Goods goods);
 }

+ 0 - 1
goods-service/src/main/java/io/github/nnkwrik/goodsservice/service/IndexService.java

@@ -19,7 +19,6 @@ public interface IndexService {
 
     CatalogVo getCatalogById(int id);
 
-    void collectAddOrDelete(int goodsId, String userId, boolean hasCollect);
 
     void addComment(int goodsId, String userId, int replyCommentId, String replyUserId, String content);
 

+ 18 - 0
goods-service/src/main/java/io/github/nnkwrik/goodsservice/service/UserService.java

@@ -0,0 +1,18 @@
+package io.github.nnkwrik.goodsservice.service;
+
+import io.github.nnkwrik.goodsservice.model.vo.inner.GoodsSimpleVo;
+
+import java.util.List;
+
+/**
+ * @author nnkwrik
+ * @date 18/11/27 20:37
+ */
+public interface UserService {
+
+    Boolean userHasCollect(String userId, int goodsId);
+
+    void collectAddOrDelete(int goodsId, String userId, boolean hasCollect);
+
+    List<GoodsSimpleVo> getUserCollectList(String userId);
+}

+ 0 - 5
goods-service/src/main/java/io/github/nnkwrik/goodsservice/service/impl/GoodsServiceImpl.java

@@ -111,11 +111,6 @@ public class GoodsServiceImpl implements GoodsService {
         return new GoodsRelatedVo(goodsSimpleVo);
     }
 
-    @Override
-    public Boolean userHasCollect(String userId, int goodsId) {
-        return otherMapper.userHasCollect(userId, goodsId);
-    }
-
     @Override
     public void postGoods(Goods goods) {
         goodsMapper.addGoods(goods);

+ 0 - 9
goods-service/src/main/java/io/github/nnkwrik/goodsservice/service/impl/IndexServiceImpl.java

@@ -77,15 +77,6 @@ public class IndexServiceImpl implements IndexService {
         return new CatalogVo(null, currentCategoryVo);
     }
 
-    @Override
-    public void collectAddOrDelete(int goodsId, String userId, boolean hasCollect) {
-        if (hasCollect) {
-            otherMapper.deleteUserCollect(userId, goodsId);
-        } else {
-            otherMapper.setUserCollect(userId, goodsId);
-        }
-    }
-
     @Override
     public void addComment(int goodsId, String userId, int replyCommentId, String replyUserId, String content) {
         otherMapper.addComment(goodsId,userId,replyCommentId,replyUserId,content);

+ 45 - 0
goods-service/src/main/java/io/github/nnkwrik/goodsservice/service/impl/UserServiceImpl.java

@@ -0,0 +1,45 @@
+package io.github.nnkwrik.goodsservice.service.impl;
+
+import io.github.nnkwrik.goodsservice.dao.UserMapper;
+import io.github.nnkwrik.goodsservice.model.po.Goods;
+import io.github.nnkwrik.goodsservice.model.vo.inner.GoodsSimpleVo;
+import io.github.nnkwrik.goodsservice.service.UserService;
+import io.github.nnkwrik.goodsservice.util.PO2VO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * @author nnkwrik
+ * @date 18/11/27 20:37
+ */
+@Service
+public class UserServiceImpl implements UserService {
+
+    @Autowired
+    private UserMapper userMapper;
+
+    @Override
+    public Boolean userHasCollect(String userId, int goodsId) {
+        return userMapper.userHasCollect(userId, goodsId);
+    }
+
+    @Override
+    public void collectAddOrDelete(int goodsId, String userId, boolean hasCollect) {
+        if (hasCollect) {
+            userMapper.deleteUserCollect(userId, goodsId);
+        } else {
+            userMapper.setUserCollect(userId, goodsId);
+        }
+    }
+
+    @Override
+    public List<GoodsSimpleVo> getUserCollectList(String userId) {
+        List<Goods> goodsList = userMapper.getUserCollect(userId);
+
+        return PO2VO.convertList(PO2VO.goodsSimple,goodsList);
+    }
+
+
+}

+ 1 - 0
goods-service/src/main/java/io/github/nnkwrik/goodsservice/util/PO2VO.java

@@ -47,6 +47,7 @@ public class PO2VO {
                 GoodsSimpleVo vo = new GoodsSimpleVo();
                 BeanUtils.copyProperties(po, vo);
                 vo.setList_pic_url(po.getPrimaryPicUrl());
+                vo.setIs_on_sale(po.getIsOnSale());
                 return vo;
             };
 

+ 0 - 1
wx-front/pages/goods/goods.js

@@ -36,7 +36,6 @@ Page({
     let that = this;
     util.request(api.GoodsDetail + '/' + that.data.id).then(function(res) {
       if (res.errno === 0) {
-        console.log(res.data.info.seller.registerTime)
 
         //计算卖家来平台第几天
         let registerTime = res.data.info.seller.registerTime

+ 6 - 2
wx-front/pages/goods/goods.wxml

@@ -11,7 +11,10 @@
   <view class="goods-info">
     <view class="c">
       <text class="name">{{goods.name}}</text>
-      <text class="price">¥{{goods.price}}</text>
+      <view class='flex'>
+        <text class="price">¥{{goods.price}}</text>
+        <view wx:if='{{!goods.is_on_sale}}' class='tag'>已出售</view>
+      </view>
       <text wx:if="{{goods.market_price}}" class="market-price">原价 : ¥{{goods.market_price}}</text>
 
       <text class="desc">{{goods.goods_brief}}</text>
@@ -274,5 +277,6 @@
     </view>
   </view> -->
   <!-- <view class="c">立即购买</view> -->
-  <view class="r" bindtap="addToCart">想要</view>
+  <view class="r" wx:if='{{!goods.is_on_sale}}' bindtap="addToCart">该商品已出售</view>
+  <view class="r" wx:else bindtap="addToCart">想要</view>
 </view>

+ 22 - 6
wx-front/pages/goods/goods.wxss

@@ -80,6 +80,23 @@
   text-align: center;
 }
 
+.goods-info .flex {
+  display: flex;
+}
+
+.goods-info .tag {
+  position: absolute;
+  align-items: center;
+  padding: 0 10rpx;
+  border-radius: 3px;
+  width: auto;
+  color: #f94b4b;
+  overflow: hidden;
+  border: 1px solid #f94b4b;
+  font-size: 30rpx;
+  right: 100rpx;
+}
+
 .goods-info .market-price {
   font-size: 29rpx;
   line-height: 35rpx;
@@ -113,8 +130,7 @@
   width: 750rpx;
   background: #fff;
   margin-bottom: 20rpx;
-  padding:5px;
-
+  padding: 5px;
 }
 
 .section-nav .t {
@@ -166,13 +182,13 @@
   margin: 0 10rpx;
 }
 
-.section-act  .y{
-    color: #f48f18;
+.section-act  .y {
+  color: #f48f18;
   border: 1px solid #f48f18;
 }
 
-.section-act  .r{
-    color: #f94b4b;
+.section-act  .r {
+  color: #f94b4b;
   border: 1px solid #f94b4b;
 }
 

+ 5 - 5
wx-front/pages/ucenter/collect/collect.js

@@ -5,16 +5,15 @@ var app = getApp();
 
 Page({
   data: {
-    typeId: 0,
     collectList: []
   },
   getCollectList() {
     let that = this;
-    util.request(api.CollectList, { typeId: that.data.typeId}).then(function (res) {
+    util.request(api.CollectList).then(function (res) {
       if (res.errno === 0) {
         console.log(res.data);
         that.setData({
-          collectList: res.data.data
+          collectList: res.data
         });
       }
     });
@@ -38,8 +37,9 @@ Page({
   openGoods(event) {
     
     let that = this;
-    let goodsId = this.data.collectList[event.currentTarget.dataset.index].value_id;
+    let goodsId = this.data.collectList[event.currentTarget.dataset.index].id;
 
+    
     //触摸时间距离页面打开的毫秒数  
     var touchTime = that.data.touch_end - that.data.touch_start;
     console.log(touchTime);
@@ -51,7 +51,7 @@ Page({
         success: function (res) {
           if (res.confirm) {
             
-            util.request(api.CollectAddOrDelete, { typeId: that.data.typeId, valueId: goodsId}, 'POST').then(function (res) {
+            util.request(api.CollectAddOrDelete + '/' + goodsId + '/' + true, {}, "POST").then(function (res) {
               if (res.errno === 0) {
                 console.log(res.data);
                 wx.showToast({

+ 11 - 3
wx-front/pages/ucenter/collect/collect.wxml

@@ -1,12 +1,20 @@
 <view class="container">
-  <view class="collect-list">
-    <view class="item" bindtap="openGoods"  bindtouchstart="touchStart" bindtouchend="touchEnd" wx:for="{{collectList}}" wx:key="{{item.id}}" data-index="{{index}}">
+  <view class="collect-list" wx:if='{{collectList.length}}'>
+    <view class="item" bindtap="openGoods" bindtouchstart="touchStart" bindtouchend="touchEnd" wx:for="{{collectList}}" wx:key="{{item.id}}" data-index="{{index}}">
       <image class="img" src="{{item.list_pic_url}}"></image>
       <view class="info">
         <view class="name">{{item.name}}</view>
         <view class="subtitle">{{item.goods_brief}}</view>
-        <view class="price">¥{{item.retail_price}}</view>
+        <view class="flex">
+          <view class="price">¥{{item.price}}</view>
+          <view class='tag' wx:if='{{!item.is_on_sale}}'>已出售</view>
+        </view>
       </view>
     </view>
   </view>
+
+  <view class="result-empty" wx:else>
+    <image class="icon" src="http://yanxuan.nosdn.127.net/hxm/yanxuan-wap/p/20161201/style/img/icon-normal/noSearchResult-7572a94f32.png"></image>
+    <text class="text">您还没有收藏宝贝</text>
+  </view>
 </view>

+ 43 - 1
wx-front/pages/ucenter/collect/collect.wxss

@@ -62,6 +62,48 @@ page{
 .item .info .price{
   margin-top: 8rpx;
   font-size: 28rpx;
-  color: #333;
+  color: #f94b4b;
   line-height: 40rpx;
+  width:200rpx;
+
+}
+.item .info .flex{
+  display: flex;
+}
+
+.item .info .tag {
+  display: flex;
+  align-items: center;
+  padding: 0 10rpx;
+  border-radius: 3px;
+  height: 37rpx;
+  width: auto;
+  color: #999;
+  overflow: hidden;
+  border: 1px solid #999;
+  font-size: 25rpx;
+  margin-left:170rpx;
+
+}
+
+.result-empty{
+    width: 100%;
+    height: 100%;
+    padding-top: 300rpx;
 }
+
+.result-empty .icon{
+    margin: 0 auto;
+    display: block;
+    width: 240rpx;
+    height: 240rpx;
+}
+
+.result-empty .text{
+    display: block;
+    width: 100%;
+    height: 40rpx;
+    font-size: 28rpx;
+    text-align: center;
+    color: #999;
+}

+ 2 - 2
wx-front/pages/ucenter/index/index.js

@@ -23,8 +23,8 @@ Page({
 
     // 页面显示
     if (userInfo && token) {
-      // app.globalData.userInfo = userInfo;
-      // app.globalData.token = token;
+      app.globalData.userInfo = userInfo;
+      app.globalData.token = token;
       this.setData({
         isLogin: true
       });

+ 2 - 1
wx-front/pages/ucenter/index/index.wxml

@@ -30,7 +30,8 @@
       </navigator>
     </view>
     <view class="item">
-      <navigator url="/pages/ucenter/collect/collect" class="a">
+      <navigator url="{{isLogin?'/pages/ucenter/collect/collect':'/pages/auth/auth'}}" class="a">
+
         <text class="icon download"></text>
         <text class="txt">我的收藏</text>
       </navigator>