Răsfoiți Sursa

用户个人主页

nnkwrik 6 ani în urmă
părinte
comite
a372aaa4ed
23 a modificat fișierele cu 599 adăugiri și 64 ștergeri
  1. 1 1
      goods-service/src/main/java/io/github/nnkwrik/goodsservice/controller/GoodsController.java
  2. 3 3
      goods-service/src/main/java/io/github/nnkwrik/goodsservice/controller/IndexController.java
  3. 38 0
      goods-service/src/main/java/io/github/nnkwrik/goodsservice/controller/UserController.java
  4. 18 0
      goods-service/src/main/java/io/github/nnkwrik/goodsservice/dao/UserMapper.java
  5. 14 0
      goods-service/src/main/java/io/github/nnkwrik/goodsservice/model/po/GoodsExample.java
  6. 1 1
      goods-service/src/main/java/io/github/nnkwrik/goodsservice/model/vo/IndexPageVo.java
  7. 23 0
      goods-service/src/main/java/io/github/nnkwrik/goodsservice/model/vo/UserPageVo.java
  8. 0 2
      goods-service/src/main/java/io/github/nnkwrik/goodsservice/service/GoodsService.java
  9. 2 2
      goods-service/src/main/java/io/github/nnkwrik/goodsservice/service/IndexService.java
  10. 6 0
      goods-service/src/main/java/io/github/nnkwrik/goodsservice/service/UserService.java
  11. 1 9
      goods-service/src/main/java/io/github/nnkwrik/goodsservice/service/impl/GoodsServiceImpl.java
  12. 3 3
      goods-service/src/main/java/io/github/nnkwrik/goodsservice/service/impl/IndexServiceImpl.java
  13. 63 0
      goods-service/src/main/java/io/github/nnkwrik/goodsservice/service/impl/UserServiceImpl.java
  14. 2 1
      wx-front/app.json
  15. 19 13
      wx-front/pages/goods/goods.js
  16. 22 18
      wx-front/pages/goods/goods.wxml
  17. 13 9
      wx-front/pages/goods/goods.wxss
  18. 7 1
      wx-front/pages/ucenter/index/index.js
  19. 1 1
      wx-front/pages/ucenter/index/index.wxml
  20. 134 0
      wx-front/pages/user/user.js
  21. 1 0
      wx-front/pages/user/user.json
  22. 38 0
      wx-front/pages/user/user.wxml
  23. 189 0
      wx-front/pages/user/user.wxss

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

@@ -90,7 +90,7 @@ public class GoodsController {
         //获取商品详情
         Goods goods = goodsService.getGoodsDetail(goodsId);
         //获取买家信息
-        SimpleUser seller = goodsService.getSellerInfo(goods.getSellerId());
+        SimpleUser seller = userService.getUserInfo(goods.getSellerId());
         if (seller == null) {
             log.info("搜索goodsId = 【{}】的详情时出错", goodsId);
             return Response.fail(Response.USER_IS_NOT_EXIST, "无法搜索到商品卖家的信息");

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

@@ -8,7 +8,7 @@ import io.github.nnkwrik.goodsservice.model.po.Goods;
 import io.github.nnkwrik.goodsservice.model.po.GoodsComment;
 import io.github.nnkwrik.goodsservice.model.po.Region;
 import io.github.nnkwrik.goodsservice.model.vo.CatalogPageVo;
-import io.github.nnkwrik.goodsservice.model.vo.IndexPageVO;
+import io.github.nnkwrik.goodsservice.model.vo.IndexPageVo;
 import io.github.nnkwrik.goodsservice.service.IndexService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -34,10 +34,10 @@ public class IndexController {
      * @return
      */
     @GetMapping("/index/index")
-    public Response<IndexPageVO> index(@RequestParam(value = "page", defaultValue = "1") int page,
+    public Response<IndexPageVo> index(@RequestParam(value = "page", defaultValue = "1") int page,
                                        @RequestParam(value = "size", defaultValue = "10") int size) {
 
-        IndexPageVO vo = indexService.getIndex(page, size);
+        IndexPageVo vo = indexService.getIndex(page, size);
         log.info("浏览首页 : 展示{}个广告, {}个分类, {}个商品", vo.getBanner().size(), vo.getChannel().size(), vo.getIndexGoodsList().size());
 
         return Response.ok(vo);

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

@@ -2,13 +2,17 @@ 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.dto.SimpleUser;
 import io.github.nnkwrik.common.token.injection.JWT;
 import io.github.nnkwrik.goodsservice.model.po.Goods;
+import io.github.nnkwrik.goodsservice.model.vo.UserPageVo;
+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.web.bind.annotation.*;
 
+import java.util.LinkedHashMap;
 import java.util.List;
 
 /**
@@ -22,6 +26,9 @@ public class UserController {
     @Autowired
     private UserService userService;
 
+    @Autowired
+    private GoodsService goodsService;
+
     /**
      * 收藏或取消收藏某个商品
      *
@@ -100,4 +107,35 @@ public class UserController {
         log.info("用户【{}】查询发布的商品,总数:{}", user.getNickName(), vo.size());
         return Response.ok(vo);
     }
+
+    @GetMapping("goods/user/{userId}")
+    public Response getUserPage(@PathVariable("userId") String userId,
+                                @RequestParam(value = "page", defaultValue = "1") int page,
+                                @RequestParam(value = "size", defaultValue = "10") int size) {
+        SimpleUser user = userService.getUserInfo(userId);
+        if (user == null) {
+            log.info("搜索goodsId = 【{}】的详情时出错", userId);
+            return Response.fail(Response.USER_IS_NOT_EXIST, "无法搜索到商品卖家的信息");
+        }
+
+        Integer soldCount = goodsService.getSellerHistory(userId);
+        LinkedHashMap<String, List<Goods>> userHistory = userService.getUserHistoryList(userId, page, size);
+        UserPageVo vo = new UserPageVo(user, userHistory,soldCount);
+        log.info("浏览用户id=[{}],昵称=[{}]的首页,搜索到{}天的记录", user.getOpenId(), user.getNickName(), userHistory.size());
+
+        return Response.ok(vo);
+    }
+
+    @GetMapping("goods/user/more/{userId}")
+    public Response<LinkedHashMap<String, List<Goods>>> getUserPageMore(@PathVariable("userId") String userId,
+                                                                        @RequestParam(value = "page", defaultValue = "1") int page,
+                                                                        @RequestParam(value = "size", defaultValue = "10") int size) {
+
+        LinkedHashMap<String, List<Goods>> userHistory = userService.getUserHistoryList(userId, page, size);
+        log.info("浏览用户id=[{}]的首页,搜索到{}天的记录", userId, userHistory.size());
+
+        return Response.ok(userHistory);
+    }
+
+
 }

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

@@ -1,6 +1,7 @@
 package io.github.nnkwrik.goodsservice.dao;
 
 import io.github.nnkwrik.goodsservice.model.po.Goods;
+import io.github.nnkwrik.goodsservice.model.po.GoodsExample;
 import org.apache.ibatis.annotations.*;
 
 import java.util.List;
@@ -71,4 +72,21 @@ public interface UserMapper {
             "  and is_delete = 0\n" +
             "order by last_edit desc")
     List<Goods> getUserPosted(@Param("seller_id") String sellerId);
+
+
+    @Select("select goods.id,\n" +
+            "       name,\n" +
+            "       primary_pic_url,\n" +
+            "       price,\n" +
+            "       is_selling,\n" +
+            "       post_time,\n" +
+            "       sold_time,\n" +
+            "       time\n" +
+            "from goods\n" +
+            "       inner join (select id, post_time as time from goods\n" +
+            "                   UNION\n" +
+            "                   select id, sold_time as time from goods where sold_time is not null) as ids\n" +
+            "         on goods.id = ids.id and seller_id = #{user_id}\n" +
+            "order by time desc")
+    List<GoodsExample> getUserHistoryList(@Param("user_id") String userId);
 }

+ 14 - 0
goods-service/src/main/java/io/github/nnkwrik/goodsservice/model/po/GoodsExample.java

@@ -0,0 +1,14 @@
+package io.github.nnkwrik.goodsservice.model.po;
+
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @author nnkwrik
+ * @date 18/12/02 14:18
+ */
+@Data
+public class GoodsExample extends Goods {
+    private Date time;
+}

+ 1 - 1
goods-service/src/main/java/io/github/nnkwrik/goodsservice/model/vo/IndexPageVO.java → goods-service/src/main/java/io/github/nnkwrik/goodsservice/model/vo/IndexPageVo.java

@@ -16,7 +16,7 @@ import java.util.List;
 @Data
 @AllArgsConstructor
 @NoArgsConstructor
-public class IndexPageVO {
+public class IndexPageVo {
     private List<Goods> indexGoodsList;
     private List<Ad> banner;
     private List<Channel> channel;

+ 23 - 0
goods-service/src/main/java/io/github/nnkwrik/goodsservice/model/vo/UserPageVo.java

@@ -0,0 +1,23 @@
+package io.github.nnkwrik.goodsservice.model.vo;
+
+import io.github.nnkwrik.common.dto.SimpleUser;
+import io.github.nnkwrik.goodsservice.model.po.Goods;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.LinkedHashMap;
+import java.util.List;
+
+/**
+ * @author nnkwrik
+ * @date 18/12/02 15:12
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class UserPageVo {
+    private SimpleUser user;
+    private LinkedHashMap<String, List<Goods>> userHistory;
+    private Integer soldCount;
+}

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

@@ -20,8 +20,6 @@ public interface GoodsService {
 
     Goods getGoodsDetail(int goodsId);
 
-    SimpleUser getSellerInfo(String sellerId);
-
     int getSellerHistory(String sellerId);
 
     List<GoodsGallery> getGoodsGallery(int goodsId);

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

@@ -4,7 +4,7 @@ import io.github.nnkwrik.goodsservice.model.po.Category;
 import io.github.nnkwrik.goodsservice.model.po.Goods;
 import io.github.nnkwrik.goodsservice.model.po.Region;
 import io.github.nnkwrik.goodsservice.model.vo.CatalogPageVo;
-import io.github.nnkwrik.goodsservice.model.vo.IndexPageVO;
+import io.github.nnkwrik.goodsservice.model.vo.IndexPageVo;
 
 import java.util.List;
 
@@ -14,7 +14,7 @@ import java.util.List;
  */
 public interface IndexService {
 
-    IndexPageVO getIndex(int page, int size);
+    IndexPageVo getIndex(int page, int size);
 
     List<Goods> getIndexMore(int page, int size);
 

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

@@ -1,7 +1,9 @@
 package io.github.nnkwrik.goodsservice.service;
 
+import io.github.nnkwrik.common.dto.SimpleUser;
 import io.github.nnkwrik.goodsservice.model.po.Goods;
 
+import java.util.LinkedHashMap;
 import java.util.List;
 
 /**
@@ -21,4 +23,8 @@ public interface UserService {
     List<Goods> getUserSold(String sellerId, int page, int size);
 
     List<Goods> getUserPosted(String userId, int page, int size);
+
+    SimpleUser getUserInfo(String userId);
+
+    LinkedHashMap<String, List<Goods>> getUserHistoryList(String userId, int page, int size);
 }

+ 1 - 9
goods-service/src/main/java/io/github/nnkwrik/goodsservice/service/impl/GoodsServiceImpl.java

@@ -61,15 +61,7 @@ public class GoodsServiceImpl implements GoodsService {
         return goodsMapper.findDetailGoodsByGoodsId(goodsId);
     }
 
-    @Override
-    public SimpleUser getSellerInfo(String sellerId) {
-        Response<SimpleUser> response = userClient.getSimpleUser(sellerId);
-        if (response.getErrno() == Response.USER_IS_NOT_EXIST) {
-            log.info("没有搜索到商品卖家的相关信息");
-            return null;
-        }
-        return response.getData();
-    }
+
 
     @Override
     public int getSellerHistory(String sellerId) {

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

@@ -6,7 +6,7 @@ import io.github.nnkwrik.goodsservice.dao.GoodsMapper;
 import io.github.nnkwrik.goodsservice.dao.OtherMapper;
 import io.github.nnkwrik.goodsservice.model.po.*;
 import io.github.nnkwrik.goodsservice.model.vo.CatalogPageVo;
-import io.github.nnkwrik.goodsservice.model.vo.IndexPageVO;
+import io.github.nnkwrik.goodsservice.model.vo.IndexPageVo;
 import io.github.nnkwrik.goodsservice.service.IndexService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -27,7 +27,7 @@ public class IndexServiceImpl implements IndexService {
     private GoodsMapper goodsMapper;
 
     @Override
-    public IndexPageVO getIndex(int page, int size) {
+    public IndexPageVo getIndex(int page, int size) {
         //广告
         List<Ad> adList = otherMapper.findAd();
 
@@ -37,7 +37,7 @@ public class IndexServiceImpl implements IndexService {
         //推荐商品
         List<Goods> goodsList = getIndexMore(page,size);
 
-        return new IndexPageVO(goodsList, adList, channelList);
+        return new IndexPageVo(goodsList, adList, channelList);
     }
 
     @Override

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

@@ -1,12 +1,23 @@
 package io.github.nnkwrik.goodsservice.service.impl;
 
 import com.github.pagehelper.PageHelper;
+import io.github.nnkwrik.common.dto.Response;
+import io.github.nnkwrik.common.dto.SimpleUser;
+import io.github.nnkwrik.goodsservice.client.UserClient;
 import io.github.nnkwrik.goodsservice.dao.UserMapper;
 import io.github.nnkwrik.goodsservice.model.po.Goods;
+import io.github.nnkwrik.goodsservice.model.po.GoodsExample;
 import io.github.nnkwrik.goodsservice.service.UserService;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.time.LocalDate;
+import java.time.ZoneId;
+import java.time.format.DateTimeFormatter;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.LinkedHashMap;
 import java.util.List;
 
 /**
@@ -14,11 +25,15 @@ import java.util.List;
  * @date 18/11/27 20:37
  */
 @Service
+@Slf4j
 public class UserServiceImpl implements UserService {
 
     @Autowired
     private UserMapper userMapper;
 
+    @Autowired
+    private UserClient userClient;
+
     @Override
     public Boolean userHasCollect(String userId, int goodsId) {
         return userMapper.userHasCollect(userId, goodsId);
@@ -58,5 +73,53 @@ public class UserServiceImpl implements UserService {
         return userMapper.getUserPosted(userId);
     }
 
+    @Override
+    public SimpleUser getUserInfo(String userId) {
+        Response<SimpleUser> response = userClient.getSimpleUser(userId);
+        if (response.getErrno() == Response.USER_IS_NOT_EXIST) {
+            log.info("没有搜索到用户的相关信息");
+            return null;
+        }
+        return response.getData();
+    }
+
+
+    @Override
+    public LinkedHashMap<String, List<Goods>> getUserHistoryList(String userId, int page, int size) {
+        PageHelper.startPage(page, size);
+        List<GoodsExample> userHistoryList = userMapper.getUserHistoryList(userId);
+
+        LinkedHashMap<String, List<Goods>> result = new LinkedHashMap<>();
+
+        LocalDate lastDay = getDay(userHistoryList.get(0).getTime());
+        List<Goods> lastValue = new ArrayList<>();
+
+        for (GoodsExample goods : userHistoryList) {
+            if (lastDay.equals(getDay(goods.getTime()))) {
+                lastValue.add(goods);
+            } else {
+                String key = dateFormat(lastDay);
+                result.put(key, lastValue);
+                lastDay = getDay(goods.getTime());
+                lastValue = new ArrayList<>();
+
+                lastValue.add(goods);
+            }
+        }
+        result.put(dateFormat(lastDay), lastValue);
+
+        return result;
+    }
+
+    private LocalDate getDay(Date date) {
+        return date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
+    }
+
+    private String dateFormat(LocalDate localDate) {
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+        String formattedString = localDate.format(formatter);
+        return formattedString;
+    }
+
 
 }

+ 2 - 1
wx-front/app.json

@@ -37,7 +37,8 @@
     "pages/ucenter/bought/bought",
     "pages/ucenter/sold/sold",
     "pages/ucenter/posted/posted",
-    "pages/ucenter/about/about"
+    "pages/ucenter/about/about",
+    "pages/user/user"
   ],
   "window": {
     "backgroundTextStyle": "dark",

+ 19 - 13
wx-front/pages/goods/goods.js

@@ -273,22 +273,28 @@ Page({
   },
 
   switchCommentPop: function(event) {
-    let that = this
+    if(event.currentTarget.dataset.disable){
+      console.log("disable")
+      return
+    }
+      let that = this
 
-    this.setData({
-      replyId: event.currentTarget.dataset.replyId,
-      replyUserId: event.currentTarget.dataset.replyUserId,
-      replyUserName: event.currentTarget.dataset.replyUserName
+      this.setData({
+        replyId: event.currentTarget.dataset.replyId,
+        replyUserId: event.currentTarget.dataset.replyUserId,
+        replyUserName: event.currentTarget.dataset.replyUserName
 
-    })
+      })
+
+      user.checkLoginAndNav().then(() => {
+        if (this.data.openComment == false) {
+          this.setData({
+            openComment: !this.data.openComment
+          });
+        }
+      })
+    
 
-    user.checkLoginAndNav().then(() => {
-      if (this.data.openComment == false) {
-        this.setData({
-          openComment: !this.data.openComment
-        });
-      }
-    })
 
   },
 

+ 22 - 18
wx-front/pages/goods/goods.wxml

@@ -54,18 +54,18 @@
   <!-- seller avater -->
   <!-- day -->
   <!-- history -->
-  <view class="seller-nav section-act">
+  <navigator url="/pages/user/user?userId={{seller.openId}}" class="seller-nav section-act">
     <view class="seller-t">
       <image class="seller-avatar" src="{{seller.avatarUrl}}"></image>
     </view>
 
     <view class="seller-info">
       <view class="name">{{seller.nickName}}</view>
-      <view class="history">加入平台第{{sellerDates}}天,出过{{sellerHistory}}件宝贝</view>
+      <view class="history">加入平台第{{sellerDates}}天,出过{{sellerHistory}}件宝贝</view>
     </view>
 
     <image class="i" src="../../static/images/address_right.png" background-size="cover"></image>
-  </view>
+  </navigator>
 
 
 
@@ -104,28 +104,32 @@
       <view wx:for="{{comment}}" wx:for-index="index" wx:for-item="item" wx:key="{{item.id}}">
         <!-- comment -->
         <view class="item">
-          <view bindtap="switchCommentPop" data-reply-id="{{item.id}}" data-reply-user-id="{{item.simpleUser.openId}}" data-reply-user-name='{{item.simpleUser.nickName}}'>
-            <view class="info">
-              <view class="user">
-                <image src="{{item.simpleUser.avatarUrl}}"></image>
-                <text>{{item.simpleUser.nickName}}</text>
-              </view>
-              <view class="time">{{item.createTime}}</view>
-            </view>
-            <view class="content">
-              {{item.content}}
+
+          <view class="info">
+            <view class="user">
+
+              <navigator class='navimg' url="/pages/user/user?userId={{item.simpleUser.openId}}" wx: style="background-image: url('{{item.simpleUser.avatarUrl}}')">
+              </navigator>
+
+              <text>{{item.simpleUser.nickName}}</text>
             </view>
+            <view class="time">{{item.createTime}}</view>
+          </view>
+          <view class="content" bindtap="switchCommentPop" data-reply-id="{{item.id}}" data-reply-user-id="{{item.simpleUser.openId}}" data-reply-user-name='{{item.simpleUser.nickName}}'>
+            {{item.content}}
           </view>
+
           <!-- reply -->
-          <view wx:for="{{item.replyList}}" wx:for-index="iindex" wx:for-item="iitem" wx:key="{{iitem.id}}" bindtap="switchCommentPop" data-reply-id="{{iitem.id}}" data-reply-user-id="{{iitem.simpleUser.openId}}" data-reply-user-name='{{iitem.simpleUser.nickName}}'>
+          <view wx:for="{{item.replyList}}" wx:for-index="iindex" wx:for-item="iitem" wx:key="{{iitem.id}}">
             <view class="reply-info">
               <view class="reply-user">
-                <image src="{{iitem.simpleUser.avatarUrl}}"></image>
+                <navigator class='navimg-reply' url="/pages/user/user?userId={{iitem.simpleUser.openId}}" wx: style="background-image: url('{{item.simpleUser.avatarUrl}}')"></navigator>
+
                 <text>{{iitem.simpleUser.nickName}}</text>
               </view>
               <view class="time">{{iitem.createTime}}</view>
             </view>
-            <view class="reply-content">
+            <view class="reply-content" bindtap="switchCommentPop" data-reply-id="{{iitem.id}}" data-reply-user-id="{{iitem.simpleUser.openId}}" data-reply-user-name='{{iitem.simpleUser.nickName}}'>
               回复@{{iitem.replyUserName}}:{{iitem.content}}
             </view>
           </view>
@@ -262,7 +266,7 @@
     <view class="close" bindtap="closeDelete">
       <image class="icon" src="/static/images/clear_input.png"></image>
     </view>
-    <button class='delete-btn' bindtap="deleteGoods" >确定删除</button>
+    <button class='delete-btn' bindtap="deleteGoods">确定删除</button>
   </view>
 </view>
 
@@ -290,5 +294,5 @@
   <view class="r" wx:if='{{!goods.isSelling}}' bindtap="addToCart">该商品已出售</view>
   <view class="r" wx:elif="{{isSeller && !goods.isDelete && goods.isSelling}}" bindtap="switchDeletetPop">删除该商品</view>
   <view class="r" wx:else bindtap="addToCart">想要</view>
-  
+
 </view>

+ 13 - 9
wx-front/pages/goods/goods.wxss

@@ -275,14 +275,7 @@
   overflow: hidden;
 }
 
-.comments .reply-user  image {
-  float: left;
-  width: 50rpx;
-  height: 50rpx;
-  margin-right: 17rpx;
-  margin-top: 5rpx;
-  border-radius: 50%;
-}
+
 
 .comments .reply-user text {
   display: inline-block;
@@ -294,12 +287,23 @@
   font-weight: bold;
 }
 
-.comments .user  image {
+.navimg {
   float: left;
   width: 67rpx;
   height: 67rpx;
   margin-right: 17rpx;
   border-radius: 50%;
+  background-size:cover;
+}
+
+.navimg-reply {
+  float: left;
+  width: 50rpx;
+  height: 50rpx;
+  margin-right: 17rpx;
+  margin-top: 5rpx;
+  border-radius: 50%;
+  background-size:cover;
 }
 
 .comments .user text {

+ 7 - 1
wx-front/pages/ucenter/index/index.js

@@ -21,6 +21,7 @@ Page({
     let userInfo = wx.getStorageSync('userInfo');
     let token = wx.getStorageSync('token');
 
+  
     // 页面显示
     if (userInfo && token) {
       app.globalData.userInfo = userInfo;
@@ -43,10 +44,15 @@ Page({
     // 页面关闭
   },
   goLogin() {
-    if (!this.isLogin) {
+
+    if (!this.data.isLogin) {
       wx.navigateTo({
         url: '/pages/auth/auth'
       })
+    }else{
+      wx.navigateTo({
+        url: '/pages/user/user?userId=' + app.globalData.userInfo.openId,
+      })
     }
   },
   exitLogin: function() {

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

@@ -1,5 +1,5 @@
 <view class="container">
-<!-- TODO 点击,查看个人主页 -->
+
   <view class="profile-info" op bindtap="goLogin">
     <image class="avatar" src="{{userInfo.avatarUrl}}"></image>
     <view class="info">

+ 134 - 0
wx-front/pages/user/user.js

@@ -0,0 +1,134 @@
+var util = require('../../utils/util.js');
+var api = require('../../config/api.js');
+var user = require('../../services/user.js');
+var app = getApp();
+Page({
+
+  /**
+   * 页面的初始数据
+   */
+  data: {
+    userId: '',
+    page: 1,
+    size: 10000,
+    userInfo: {},
+    historyList: {},
+    soldCount: 0,
+    userDates:0
+  },
+  getUserPage() {
+    let that = this;
+    util.request(api.UserPage + '/' + this.data.userId, {
+      page: this.data.page,
+      size: this.data.size
+    }).then(function(res) {
+      if (res.errno === 0) {
+        console.log(res.data);
+
+
+        for (var list in res.data.userHistory) {
+          for (var i = 0; i < res.data.userHistory[list].length; i++) {
+            var goods = res.data.userHistory[list][i];
+            if (goods.time) {
+              res.data.userHistory[list][i].time = goods.time.split(' ')[0]
+            }
+            if (goods.postTime) {
+              res.data.userHistory[list][i].postTime = goods.postTime.split(' ')[0]
+            }
+            if (goods.soldTime) {
+              res.data.userHistory[list][i].soldTime = goods.soldTime.split(' ')[0]
+            }
+          }
+
+          
+        }
+
+        //计算卖家来平台第几天
+        let registerTime = res.data.user.registerTime
+        let duration = new Date().getTime() - new Date(registerTime).getTime();
+        let dates = parseInt(Math.floor(duration) / (1000 * 60 * 60 * 24));
+
+        that.setData({
+          userInfo: res.data.user,
+          historyList: res.data.userHistory,
+          soldCount: res.data.soldCount,
+          userDates: dates
+        });
+
+      } else {
+        console.log(res.errmsg)
+      }
+    });
+  },
+
+
+  /**
+   * 生命周期函数--监听页面加载
+   */
+  onLoad: function(options) {
+    // 页面初始化 options为页面跳转所带来的参数
+    this.setData({
+      userId: options.userId
+    });
+    this.getUserPage();
+  },
+
+  /**
+   * 生命周期函数--监听页面初次渲染完成
+   */
+  onReady: function() {
+
+  },
+
+  /**
+   * 生命周期函数--监听页面显示
+   */
+  onShow: function() {
+
+  },
+
+  /**
+   * 生命周期函数--监听页面隐藏
+   */
+  onHide: function() {
+
+  },
+
+  /**
+   * 生命周期函数--监听页面卸载
+   */
+  onUnload: function() {
+
+  },
+
+  /**
+   * 页面相关事件处理函数--监听用户下拉动作
+   */
+  onPullDownRefresh: function() {
+
+  },
+
+
+  /**
+   * 用户点击右上角分享
+   */
+  onShareAppMessage: function() {
+
+  },
+
+  openGoods(event) {
+    let goodsId = event.currentTarget.dataset.id
+
+    wx.navigateTo({
+      url: '/pages/goods/goods?id=' + goodsId,
+    });
+  },
+  onReachBottom: function() {
+    console.log("拉到底")
+    this.setData({
+      page: this.data.page + 1
+    })
+    // this.getUserPageMore()
+  },
+
+})

+ 1 - 0
wx-front/pages/user/user.json

@@ -0,0 +1 @@
+{}

+ 38 - 0
wx-front/pages/user/user.wxml

@@ -0,0 +1,38 @@
+<view class="container">
+<view class='top'>
+  <view class='bg' style="background-image: url('https://i.postimg.cc/8z1C1k82/2144.jpg')">   </view>
+    <view class="profile-info">
+      <view class='img'>
+        <image class="avatar" src="{{userInfo.avatarUrl}}"></image>
+      </view>
+      <view class="info">
+      <text class="name">{{userInfo.nickName}}</text>
+      <text class='desc'>加入平台第{{userDates}}天,卖出过{{soldCount}}件宝贝</text>
+    </view>
+ 
+  </view>
+  </view>
+
+  <view class="userhis" wx:if='{{historyList}}'>
+    <view class="day-item" wx:for="{{historyList}}" wx:key="{{index}}">
+      <view class="day-hd">{{index}}</view>
+      <view class="day-list">
+        <view class="item" bindtap="openGoods" data-id="{{iitem.id}}"  wx:for="{{item}}" wx:for-item="iitem" wx:key="{{iitem.id}}">
+          <image class="img" src="{{iitem.primaryPicUrl}}"></image>
+          <view class="info">
+            <view class="name">{{iitem.name}}</view>
+            <view class="flex">
+              <view class="price">¥{{iitem.price}}</view>
+              <view class='msg' wx:if="{{iitem.postTime == iitem.time}}">发布了这件商品</view>
+              <view class='msg' wx:elif="{{iitem.soldTime == iitem.time}}">卖出了这件商品</view>
+            </view>
+          </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>

+ 189 - 0
wx-front/pages/user/user.wxss

@@ -0,0 +1,189 @@
+page {
+  background: #f4f4f4;
+  min-height: 100%;
+}
+
+.container {
+  background: #f4f4f4;
+  min-height: 100%;
+}
+
+.top {
+  height: 350rpx;
+  border-bottom: 4rpx solid #ddd;
+}
+
+.bg {
+  /* filter: blur(7px) brightness(90%) contrast(70%); */
+  width: 100%;
+  height: 345rpx;
+  position: absolute;
+  background-repeat: no-repeat;
+  background-size: cover;
+  background-position: center;
+}
+
+.profile-info {
+  width: 100%;
+  height: 350rpx;
+  align-items: center;
+  padding: 0 30.25rpx;
+  position: absolute;
+}
+
+.profile-info .img {
+  display: block;
+  margin-left: auto;
+  margin-right: auto;
+  width: 50%;
+  margin-top: 50rpx;
+}
+
+.profile-info .avatar {
+  display: block;
+  height: 148rpx;
+  width: 148rpx;
+  border-radius: 50%;
+  margin-left: auto;
+  margin-right: auto;
+}
+
+.profile-info .info {
+  height: 85rpx;
+  text-align: center;
+  margin-top: 20rpx;
+}
+
+.profile-info .name {
+  display: block;
+  height: 45rpx;
+  line-height: 45rpx;
+  color: #555;
+  font-size: 37.5rpx;
+  /* margin-bottom: 10rpx; */
+  margin-top: 20rpx;
+}
+
+.profile-info .desc {
+  color: #555;
+}
+
+.userhis {
+  height: auto;
+  overflow: hidden;
+  width: 100%;
+  border-top: 1px solid #e1e1e1;
+}
+
+.day-item {
+  height: auto;
+  overflow: hidden;
+  width: 100%;
+  margin-bottom: 20rpx;
+}
+
+.day-hd {
+  height: 94rpx;
+  width: 100%;
+  line-height: 94rpx;
+  background: #fff;
+  padding-left: 30rpx;
+  color: #333;
+  font-size: 28rpx;
+}
+
+.day-list {
+  width: 100%;
+  height: auto;
+  overflow: hidden;
+  background: #fff;
+  padding-left: 30rpx;
+  border-top: 1px solid #e1e1e1;
+}
+
+.item {
+  height: 212rpx;
+  width: 720rpx;
+  background: #fff;
+  padding: 30rpx 30rpx 30rpx 0;
+  border-bottom: 1px solid #e1e1e1;
+}
+
+.item:last-child {
+  border-bottom: 1px solid #fff;
+}
+
+.item .img {
+  float: left;
+  width: 150rpx;
+  height: 150rpx;
+}
+
+.item .info {
+  float: right;
+  width: 540rpx;
+  height: 150rpx;
+  display: flex;
+  flex-direction: column;
+  justify-content: center;
+  padding-left: 20rpx;
+}
+
+.item .info .name {
+  font-size: 28rpx;
+  color: #333;
+  line-height: 40rpx;
+}
+
+.item .info .subtitle {
+  margin-top: 8rpx;
+  font-size: 24rpx;
+  color: #888;
+  line-height: 40rpx;
+}
+
+.item .info .price {
+  margin-top: 8rpx;
+  font-size: 28rpx;
+  color: #f94b4b;
+  line-height: 40rpx;
+  width: 160rpx;
+}
+
+.item .info .flex {
+  display: flex;
+}
+
+.item .info .msg {
+  display: flex;
+  align-items: center;
+  padding: 0 10rpx;
+  width: auto;
+  color: #999;
+  overflow: hidden;
+  font-size: 26rpx;
+  line-height: 55rpx;
+  margin-left: 100rpx;
+}
+
+.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;
+}