Преглед изворни кода

:elephant: 商品服务重构,改log,controller加注释

nnkwrik пре 6 година
родитељ
комит
78701b6fdc
48 измењених фајлова са 456 додато и 505 уклоњено
  1. 4 0
      common/src/main/java/io/github/nnkwrik/common/dto/SimpleUser.java
  2. 6 3
      goods-service/src/main/java/io/github/nnkwrik/goodsservice/cache/BrowseCache.java
  3. 10 1
      goods-service/src/main/java/io/github/nnkwrik/goodsservice/cache/SearchCache.java
  4. 11 0
      goods-service/src/main/java/io/github/nnkwrik/goodsservice/client/UserClient.java
  5. 60 26
      goods-service/src/main/java/io/github/nnkwrik/goodsservice/controller/GoodsController.java
  6. 53 21
      goods-service/src/main/java/io/github/nnkwrik/goodsservice/controller/IndexController.java
  7. 28 11
      goods-service/src/main/java/io/github/nnkwrik/goodsservice/controller/SearchController.java
  8. 11 4
      goods-service/src/main/java/io/github/nnkwrik/goodsservice/controller/TestController.java
  9. 35 8
      goods-service/src/main/java/io/github/nnkwrik/goodsservice/controller/UserController.java
  10. 0 7
      goods-service/src/main/java/io/github/nnkwrik/goodsservice/dao/CategoryMapper.java
  11. 3 1
      goods-service/src/main/java/io/github/nnkwrik/goodsservice/dao/GoodsMapper.java
  12. 3 1
      goods-service/src/main/java/io/github/nnkwrik/goodsservice/model/po/Ad.java
  13. 3 0
      goods-service/src/main/java/io/github/nnkwrik/goodsservice/model/po/Goods.java
  14. 1 1
      goods-service/src/main/java/io/github/nnkwrik/goodsservice/model/po/GoodsComment.java
  15. 3 1
      goods-service/src/main/java/io/github/nnkwrik/goodsservice/model/po/SearchHistory.java
  16. 3 1
      goods-service/src/main/java/io/github/nnkwrik/goodsservice/model/po/UserPreference.java
  17. 4 5
      goods-service/src/main/java/io/github/nnkwrik/goodsservice/model/vo/CatalogPageVo.java
  18. 4 4
      goods-service/src/main/java/io/github/nnkwrik/goodsservice/model/vo/CategoryPageVo.java
  19. 18 0
      goods-service/src/main/java/io/github/nnkwrik/goodsservice/model/vo/CommentVo.java
  20. 9 5
      goods-service/src/main/java/io/github/nnkwrik/goodsservice/model/vo/GoodsDetailPageVo.java
  21. 0 19
      goods-service/src/main/java/io/github/nnkwrik/goodsservice/model/vo/GoodsRelatedVo.java
  22. 23 0
      goods-service/src/main/java/io/github/nnkwrik/goodsservice/model/vo/IndexPageVO.java
  23. 0 24
      goods-service/src/main/java/io/github/nnkwrik/goodsservice/model/vo/IndexVO.java
  24. 1 1
      goods-service/src/main/java/io/github/nnkwrik/goodsservice/model/vo/SearchPageVo.java
  25. 0 14
      goods-service/src/main/java/io/github/nnkwrik/goodsservice/model/vo/inner/BannerVo.java
  26. 0 21
      goods-service/src/main/java/io/github/nnkwrik/goodsservice/model/vo/inner/CategoryVo.java
  27. 0 15
      goods-service/src/main/java/io/github/nnkwrik/goodsservice/model/vo/inner/ChannelVo.java
  28. 0 25
      goods-service/src/main/java/io/github/nnkwrik/goodsservice/model/vo/inner/CommentVo.java
  29. 0 13
      goods-service/src/main/java/io/github/nnkwrik/goodsservice/model/vo/inner/GalleryVo.java
  30. 0 28
      goods-service/src/main/java/io/github/nnkwrik/goodsservice/model/vo/inner/GoodsDetailVo.java
  31. 0 18
      goods-service/src/main/java/io/github/nnkwrik/goodsservice/model/vo/inner/GoodsSimpleVo.java
  32. 12 8
      goods-service/src/main/java/io/github/nnkwrik/goodsservice/service/GoodsService.java
  33. 5 5
      goods-service/src/main/java/io/github/nnkwrik/goodsservice/service/IndexService.java
  34. 2 2
      goods-service/src/main/java/io/github/nnkwrik/goodsservice/service/SearchService.java
  35. 5 5
      goods-service/src/main/java/io/github/nnkwrik/goodsservice/service/UserService.java
  36. 45 47
      goods-service/src/main/java/io/github/nnkwrik/goodsservice/service/impl/GoodsServiceImpl.java
  37. 11 31
      goods-service/src/main/java/io/github/nnkwrik/goodsservice/service/impl/IndexServiceImpl.java
  38. 2 7
      goods-service/src/main/java/io/github/nnkwrik/goodsservice/service/impl/SearchServiceImpl.java
  39. 8 15
      goods-service/src/main/java/io/github/nnkwrik/goodsservice/service/impl/UserServiceImpl.java
  40. 36 0
      goods-service/src/main/java/io/github/nnkwrik/goodsservice/util/BeanListUtils.java
  41. 0 87
      goods-service/src/main/java/io/github/nnkwrik/goodsservice/util/PO2VO.java
  42. 7 1
      goods-service/src/main/resources/application.yml
  43. 13 5
      wx-front/pages/catalog/catalog.js
  44. 3 3
      wx-front/pages/catalog/catalog.wxml
  45. 1 1
      wx-front/pages/category/category.js
  46. 9 6
      wx-front/pages/goods/goods.js
  47. 3 3
      wx-front/pages/goods/goods.wxml
  48. 1 1
      wx-front/pages/ucenter/about/about.wxml

+ 4 - 0
common/src/main/java/io/github/nnkwrik/common/dto/SimpleUser.java

@@ -1,5 +1,7 @@
 package io.github.nnkwrik.common.dto;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.databind.util.StdDateFormat;
 import lombok.Data;
 
 import java.util.Date;
@@ -13,5 +15,7 @@ public class SimpleUser {
     private String openId;
     private String nickName;
     private String avatarUrl;
+
+    @JsonFormat(pattern = StdDateFormat.DATE_FORMAT_STR_ISO8601)
     private Date registerTime;
 }

+ 6 - 3
goods-service/src/main/java/io/github/nnkwrik/goodsservice/cache/BrowseCache.java

@@ -15,7 +15,6 @@ import java.util.concurrent.atomic.AtomicInteger;
 
 /**
  * 商品浏览量的缓存,过期(10天)/超出缓存大小/超过10个时更新数据库
- * 由于需要在非静态的RemovalListener才能调用mapper,做成单例
  *
  * @author nnkwrik
  * @date 18/11/20 12:03
@@ -29,7 +28,7 @@ public class BrowseCache {
 
 
     //过期(1天)/超出缓存队列大小(1000)/缓存超过10个时 会触发
-    RemovalListener<Integer, AtomicInteger> listener =
+    private RemovalListener<Integer, AtomicInteger> listener =
             notification -> {
                 log.info("BrowseCache缓存刷入数据库,原因 :【{}】,数据 :【key={} , value={}】",
                         notification.getCause(), notification.getKey(), notification.getValue().get());
@@ -50,6 +49,10 @@ public class BrowseCache {
                     .build();
 
 
+    /**
+     * 在缓存中增加某商品的浏览次数
+     * @param goodsId
+     */
     public void add(Integer goodsId) {
         int count = 0;
         AtomicInteger browseCount = cache.getIfPresent(goodsId);
@@ -64,7 +67,7 @@ public class BrowseCache {
             cache.put(goodsId, new AtomicInteger(1));
         }
         log.debug("BrowseCache更新商品id【{}】的浏览次数为【{}】", goodsId, count);
-        //检查过期的缓存,让他触发removalListener
+        //用cleanUp()检查过期的缓存,让他触发removalListener
         //必须执行这个cache才会去检查是否过期, 否则尽管过期他也不会触发removalListener
         cache.cleanUp();
     }

+ 10 - 1
goods-service/src/main/java/io/github/nnkwrik/goodsservice/cache/SearchCache.java

@@ -31,6 +31,10 @@ public class SearchCache {
                     .expireAfterWrite(30, TimeUnit.DAYS)
                     .build();
 
+    /**
+     * 增加某个关键字在缓存中的次数
+     * @param keyword
+     */
     public void add(String keyword) {
         int count = 0;
         AtomicInteger browseCount = cache.getIfPresent(keyword);
@@ -44,8 +48,13 @@ public class SearchCache {
         log.debug("SearchCache更新关键字【{}】的搜索次数为【{}】", keyword, count);
     }
 
+    /**
+     * 获取热门的关键字列表
+     * @param num
+     * @return
+     */
     public List<String> getHot(int num) {
-        log.debug("从SearchCache获取热门关键字列表");
+        log.info("从SearchCache获取热门关键字列表");
         return cache.asMap().entrySet().stream()
                 .sorted(Comparator.comparingInt(entry -> -entry.getValue().get()))
                 .limit(num)

+ 11 - 0
goods-service/src/main/java/io/github/nnkwrik/goodsservice/client/UserClient.java

@@ -12,6 +12,7 @@ import java.util.List;
 import java.util.Map;
 
 /**
+ * 使用user-service的api
  * @author nnkwrik
  * @date 18/11/23 18:06
  */
@@ -25,10 +26,20 @@ public interface UserClient {
         return getSimpleUser(json);
     }
 
+    /**
+     * 获取用户openId的相关信息
+     * @param openId
+     * @return
+     */
     //json 只包含 openId = "..." 这一项。但由于是String,直接传输会变成text/plain。索性包装成map
     @PostMapping("/simpleUser")
     Response<SimpleUser> getSimpleUser(@RequestBody Map<String, String> openId);
 
+    /**
+     * 获取用户openIdList的相关信息
+     * @param openIdList
+     * @return
+     */
     @PostMapping("/simpleUserList")
     Response<HashMap<String, SimpleUser>> getSimpleUserList(@RequestBody List<String> openIdList);
 }

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

@@ -2,16 +2,14 @@ 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.cache.BrowseCache;
 import io.github.nnkwrik.goodsservice.model.po.Goods;
+import io.github.nnkwrik.goodsservice.model.po.GoodsGallery;
 import io.github.nnkwrik.goodsservice.model.vo.CategoryPageVo;
 import io.github.nnkwrik.goodsservice.model.vo.GoodsDetailPageVo;
-import io.github.nnkwrik.goodsservice.model.vo.GoodsRelatedVo;
-import io.github.nnkwrik.goodsservice.model.vo.inner.CategoryVo;
-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.model.vo.CommentVo;
 import io.github.nnkwrik.goodsservice.service.GoodsService;
 import io.github.nnkwrik.goodsservice.service.UserService;
 import lombok.extern.slf4j.Slf4j;
@@ -20,7 +18,6 @@ import org.springframework.util.StringUtils;
 import org.springframework.web.bind.annotation.*;
 
 import java.util.List;
-import java.util.Map;
 
 /**
  * @author nnkwrik
@@ -41,67 +38,104 @@ public class GoodsController {
     private BrowseCache browseCache;
 
     /**
-     * 获取选定的子目录下的商品列表和同一个父目录下的兄弟目录
+     * 通过分类浏览商品,获取选定目录下的商品列表和同级的兄弟目录
      *
      * @param categoryId
      * @return
      */
     @GetMapping("/category/{categoryId}")
 
-    public Response<CategoryVo> getCategoryPage(@PathVariable("categoryId") int categoryId,
+    public Response<CategoryPageVo> getCategoryPage(@PathVariable("categoryId") int categoryId,
                                                 @RequestParam(value = "page", defaultValue = "1") int page,
                                                 @RequestParam(value = "limit", defaultValue = "10") int size) {
 
 
         CategoryPageVo vo = goodsService.getGoodsAndBrotherCateById(categoryId, page, size);
-        log.debug("通过分类浏览商品 : 商品={}", vo.getGoodsList());
+        log.info("通过分类浏览商品 : 分类id = {},展示{}个商品", categoryId, vo.getGoodsList().size());
 
         return Response.ok(vo);
     }
 
+    /**
+     * 通过分类浏览商品,获取选定目录下的商品列表
+     *
+     * @param categoryId
+     * @param page
+     * @param size
+     * @return
+     */
     @GetMapping("/list/{categoryId}")
-    public Response<CategoryVo> getGoodsByCategory(@PathVariable("categoryId") int categoryId,
-                                                   @RequestParam(value = "page", defaultValue = "1") int page,
-                                                   @RequestParam(value = "limit", defaultValue = "10") int size) {
-        CategoryPageVo vo = goodsService.getGoodsByCateId(categoryId, page, size);
-        log.debug("通过分类浏览商品 : 商品={}", vo.getGoodsList());
-        return Response.ok(vo);
+    public Response<Goods> getGoodsByCategory(@PathVariable("categoryId") int categoryId,
+                                              @RequestParam(value = "page", defaultValue = "1") int page,
+                                              @RequestParam(value = "limit", defaultValue = "10") int size) {
+
+        List<Goods> goodsList = goodsService.getGoodsByCateId(categoryId, page, size);
+        log.info("通过分类浏览商品 : 分类id = {},展示{}个商品", categoryId, goodsList.size());
+        return Response.ok(goodsList);
 
     }
 
+    /**
+     * 获取商品的详细信息,包括:商品信息,商品图片,商品评论,卖家信息,用户是否收藏了该商品
+     *
+     * @param goodsId
+     * @param jwtUser
+     * @return
+     */
     @GetMapping("/detail/{goodsId}")
     public Response<GoodsDetailPageVo> getGoodsDetail(@PathVariable("goodsId") int goodsId,
                                                       @JWT JWTUser jwtUser) {
         //更新浏览次数
         browseCache.add(goodsId);
-        GoodsDetailVo goodsDetail = goodsService.getGoodsDetail(goodsId);
-        if (goodsDetail == null) {
+        //获取商品详情
+        Goods goods = goodsService.getGoodsDetail(goodsId);
+        //获取买家信息
+        SimpleUser seller = goodsService.getSellerInfo(goods.getSellerId());
+        if (seller == null) {
             log.info("搜索goodsId = 【{}】的详情时出错", goodsId);
             return Response.fail(Response.USER_IS_NOT_EXIST, "无法搜索到商品卖家的信息");
         }
-        List<GalleryVo> goodsGallery = goodsService.getGoodsGallery(goodsId);
+        //卖家出售过的商品数
+        int sellerHistory = goodsService.getSellerHistory(goods.getSellerId());
+
+        List<GoodsGallery> goodsGallery = goodsService.getGoodsGallery(goodsId);
         List<CommentVo> comment = goodsService.getGoodsComment(goodsId);
 
+        //用户是否收藏
         boolean userHasCollect = false;
         if (jwtUser != null)
             userHasCollect = userService.userHasCollect(jwtUser.getOpenId(), goodsId);
-        GoodsDetailPageVo vo = new GoodsDetailPageVo(goodsDetail, goodsGallery, comment, userHasCollect);
-        log.debug("浏览商品详情 : 商品id={},商品名={}", vo.getInfo().getId(), vo.getInfo().getName());
+
+        GoodsDetailPageVo vo = new GoodsDetailPageVo(goods, goodsGallery, seller, sellerHistory, comment, userHasCollect);
+        log.info("浏览商品详情 : 商品id={},商品名={}", vo.getInfo().getId(), vo.getInfo().getName());
 
         return Response.ok(vo);
     }
 
+    /**
+     * 获取与id商品相关的商品
+     *
+     * @param goodsId
+     * @return
+     */
     @GetMapping("/related/{goodsId}")
-    public Response<GoodsRelatedVo> getGoodsRelated(@PathVariable("goodsId") int goodsId) {
-        GoodsRelatedVo vo = goodsService.getGoodsRelated(goodsId);
-        log.debug("与 goodsId=[] 相关的商品 : {}", goodsId, vo);
+    public Response<List<Goods>> getGoodsRelated(@PathVariable("goodsId") int goodsId) {
+        List<Goods> goodsList = goodsService.getGoodsRelated(goodsId);
+        log.info("获取与 goodsId=[{}] 相关的商品 : 展示{}个商品", goodsId, goodsList.size());
 
-        return Response.ok(vo);
+        return Response.ok(goodsList);
     }
 
 
+    /**
+     * 发布商品
+     *
+     * @param goods
+     * @param user
+     * @return
+     */
     @PostMapping("/post")
-    public Response PostGoods(@RequestBody Goods goods,
+    public Response postGoods(@RequestBody Goods goods,
                               @JWT(required = true) JWTUser user) {
 
         if (StringUtils.isEmpty(goods.getName()) ||
@@ -117,7 +151,7 @@ public class GoodsController {
         }
         goods.setSellerId(user.getOpenId());
         goodsService.postGoods(goods);
-        log.info("用户发布商品:用户昵称=【{}】,商品名=【{}】,详情=【{}】", user.getNickName(),goods.getName(),goods);
+        log.info("用户发布商品:用户昵称=【{}】,商品名=【{}】,详情=【{}】", user.getNickName(), goods.getName(), goods);
 
         return Response.ok();
     }

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

@@ -4,10 +4,10 @@ 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.po.Category;
+import io.github.nnkwrik.goodsservice.model.po.GoodsComment;
 import io.github.nnkwrik.goodsservice.model.po.Region;
-import io.github.nnkwrik.goodsservice.model.vo.CatalogVo;
-import io.github.nnkwrik.goodsservice.model.vo.IndexVO;
-import io.github.nnkwrik.goodsservice.model.vo.inner.CommentVo;
+import io.github.nnkwrik.goodsservice.model.vo.CatalogPageVo;
+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;
@@ -27,36 +27,58 @@ public class IndexController {
     @Autowired
     private IndexService indexService;
 
+    /**
+     * 展示首页,包括:广告,首页分类,首页商品
+     *
+     * @return
+     */
     @GetMapping("/index/index")
-    public Response<IndexVO> index() {
+    public Response<IndexPageVO> index() {
 
-        IndexVO vo = indexService.getIndex();
-        log.debug("浏览首页 : 广告 = {},分类 = {}, 商品 = {}", vo.getBanner(), vo.getChannel(), vo.getIndexGoodsList());
+        IndexPageVO vo = indexService.getIndex();
+        log.info("浏览首页 : 展示{}个广告, {}个分类, {}个商品", vo.getBanner().size(), vo.getChannel().size(), vo.getIndexGoodsList().size());
 
         return Response.ok(vo);
     }
 
+    /**
+     * 分类页,展示:所有主分类,排名第一的主分类包含的子分类
+     *
+     * @return
+     */
     @GetMapping("/catalog/index")
-    public Response<CatalogVo> catalog() {
+    public Response<CatalogPageVo> catalog() {
 
-        CatalogVo vo = indexService.getCatalogIndex();
-        log.debug("浏览分类页 : 主分类 = {}, 展示子分类 = {}", vo.getCategoryList(), vo.getCurrentCategory());
+        CatalogPageVo vo = indexService.getCatalogIndex();
+        log.info("浏览分类页 : 展示{}个主分类, 展示{}个子分类", vo.getAllCategory().size(), vo.getSubCategory().size());
 
         return Response.ok(vo);
     }
 
+    /**
+     * 分类页, 获取选定主分类下的子分类
+     * @param id
+     * @return
+     */
     @GetMapping("/catalog/{id}")
-    public Response<CatalogVo> subCatalog(@PathVariable("id") int id) {
+    public Response<List<Category>> subCatalog(@PathVariable("id") int id) {
 
-        CatalogVo vo = indexService.getCatalogById(id);
-        log.debug("筛选分类 : 获取子分类 = {}", vo.getCurrentCategory());
+        List<Category> subCatalog = indexService.getSubCatalogById(id);
+        log.info("浏览分类页,筛选分类 : 展示{}个子分类", subCatalog.size());
 
-        return Response.ok(vo);
+        return Response.ok(subCatalog);
     }
 
+    /**
+     * 发表评论
+     * @param goodsId
+     * @param comment
+     * @param user
+     * @return
+     */
     @PostMapping("/comment/post/{goodsId}")
     public Response postComment(@PathVariable("goodsId") int goodsId,
-                                @RequestBody CommentVo comment,
+                                @RequestBody GoodsComment comment,
                                 @JWT(required = true) JWTUser user) {
         if (StringUtils.isEmpty(user.getOpenId()) ||
                 StringUtils.isEmpty(comment.getReplyUserId()) ||
@@ -64,30 +86,40 @@ public class IndexController {
                 comment.getReplyCommentId() == null) {
             String msg = "用户发表评论失败,信息不完整";
             log.info(msg);
-            return Response.fail(Response.COMMENT_INFO_INCOMPLETE,msg);
+            return Response.fail(Response.COMMENT_INFO_INCOMPLETE, msg);
         }
 
         indexService.addComment(goodsId, user.getOpenId(), comment.getReplyCommentId(), comment.getReplyUserId(), comment.getContent());
 
-        log.info("用户添加评论:用户id=【{}】,回复评论id=【{}】,回复内容=【{}】", user.getOpenId(),comment.getReplyCommentId(),comment.getReplyUserName());
+        log.info("用户添加评论:用户昵称=【{}】,回复评论id=【{}】,回复内容=【{}】", user.getNickName(), comment.getReplyCommentId(), comment.getContent());
         return Response.ok();
 
     }
+
+    /**
+     * 获取发布商品时需要填选的发货地区
+     * @param regionId
+     * @return
+     */
     @GetMapping("/region/list/{regionId}")
-    public Response getRegionList(@PathVariable("regionId") int regionId){
+    public Response getRegionList(@PathVariable("regionId") int regionId) {
         List<Region> regionList = indexService.getRegionList(regionId);
-        log.debug("通过地区id=【{}】,搜索地区子列表。搜索结果为:{}",regionId,regionList);
+        log.info("通过地区id=【{}】,搜索地区子列表。搜索到{}个结果", regionId, regionList.size());
         return Response.ok(regionList);
 
     }
 
+    /**
+     * 获取发布商品时需要填选的分类
+     * @param cateId
+     * @return
+     */
     @GetMapping("/category/post/{cateId}")
-    public Response getPostCateList(@PathVariable("cateId")int cateId){
+    public Response getPostCateList(@PathVariable("cateId") int cateId) {
         List<Category> cateList = indexService.getPostCateList(cateId);
-        log.debug("通过分类id=【{}】,搜索分类子列表。搜索结果为:{}",cateId,cateList);
+        log.info("通过分类id=【{}】,搜索分类子列表。搜索到{}个结果", cateId, cateList.size());
         return Response.ok(cateList);
     }
 
 
-
 }

+ 28 - 11
goods-service/src/main/java/io/github/nnkwrik/goodsservice/controller/SearchController.java

@@ -4,8 +4,8 @@ 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.cache.SearchCache;
-import io.github.nnkwrik.goodsservice.model.vo.SearchIndexPageVo;
-import io.github.nnkwrik.goodsservice.model.vo.inner.GoodsSimpleVo;
+import io.github.nnkwrik.goodsservice.model.po.Goods;
+import io.github.nnkwrik.goodsservice.model.vo.SearchPageVo;
 import io.github.nnkwrik.goodsservice.service.SearchService;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang.StringUtils;
@@ -35,8 +35,13 @@ public class SearchController {
     private SearchService searchService;
 
 
+    /**
+     * 搜索页,展示热门关键字和当前用户的搜索历史
+     * @param jwtUser
+     * @return
+     */
     @GetMapping("/index")
-    public Response<SearchIndexPageVo> searchIndex(@JWT JWTUser jwtUser) {
+    public Response<SearchPageVo> searchIndex(@JWT JWTUser jwtUser) {
         List<String> historyKeyword = null;
         String openId = null;
         if (jwtUser != null) {
@@ -45,27 +50,39 @@ public class SearchController {
         }
 
         List<String> hotKeyword = searchCache.getHot(10);
-        SearchIndexPageVo vo = new SearchIndexPageVo(historyKeyword, hotKeyword);
+        SearchPageVo vo = new SearchPageVo(historyKeyword, hotKeyword);
         log.info("用户openId= 【{}】获取搜索历史和热门关键词,搜索历史 = 【{}】,热门关键词 = 【{}】", openId, historyKeyword, hotKeyword);
 
         return Response.ok(vo);
     }
 
+    /**
+     * 清空搜索历史
+     * @param jwtUser
+     * @return
+     */
     @GetMapping("/clearhistory")
-    public Response clearHistory(@JWT JWTUser jwtUser) {
-        if (jwtUser == null) return Response.fail(Response.OPEN_ID_IS_EMPTY, "用户id为空,请登陆后再尝试");
+    public Response clearHistory(@JWT(required = true) JWTUser jwtUser) {
         searchService.clearUserHistory(jwtUser.getOpenId());
         log.info("用户openId= 【{}】清空搜索历史", jwtUser.getOpenId());
         return Response.ok();
     }
 
+    /**
+     * 获取搜索结果,并把关键字加入SearchCache
+     * @param keyword 搜索的关键字,可以用空格分割多个关键字
+     * @param page
+     * @param size
+     * @param jwtUser
+     * @return
+     */
     @GetMapping("/result/{keyword}")
-    public Response<List<GoodsSimpleVo>> searchGoods(@PathVariable("keyword") String keyword,
-                                                     @RequestParam(value = "page", defaultValue = "1") int page,
-                                                     @RequestParam(value = "limit", defaultValue = "10") int size,
-                                                     @JWT JWTUser jwtUser) {
+    public Response<List<Goods>> searchGoods(@PathVariable("keyword") String keyword,
+                                             @RequestParam(value = "page", defaultValue = "1") int page,
+                                             @RequestParam(value = "limit", defaultValue = "10") int size,
+                                             @JWT JWTUser jwtUser) {
         List<String> keywordList = Arrays.asList(StringUtils.split(keyword));
-        List<GoodsSimpleVo> goodsListVo = searchService.searchByKeyword(keywordList, page, size);
+        List<Goods> goodsListVo = searchService.searchByKeyword(keywordList, page, size);
 
         //数据库改openid的搜索历史
         String openId = null;

+ 11 - 4
goods-service/src/main/java/io/github/nnkwrik/goodsservice/controller/TestController.java

@@ -5,14 +5,12 @@ import io.github.nnkwrik.common.dto.Response;
 import io.github.nnkwrik.common.token.TokenSolver;
 import io.github.nnkwrik.common.token.injection.JWT;
 import io.github.nnkwrik.goodsservice.client.UserClient;
+import io.github.nnkwrik.goodsservice.model.po.Goods;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RestController;
 
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 /**
  * @author nnkwrik
@@ -80,4 +78,13 @@ public class TestController {
         System.out.println(solve);
         return solve;
     }
+
+    //testNOT_NULL_JSON
+    @GetMapping("/testJson")
+    public Object testNOT_NULL_JSON(){
+        Goods goods = new Goods();
+        goods.setId(1);
+        goods.setLastEdit(new Date());
+        return goods;
+    }
 }

+ 35 - 8
goods-service/src/main/java/io/github/nnkwrik/goodsservice/controller/UserController.java

@@ -3,7 +3,7 @@ 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.model.po.Goods;
 import io.github.nnkwrik.goodsservice.service.UserService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -25,6 +25,13 @@ public class UserController {
     @Autowired
     private UserService userService;
 
+    /**
+     * 收藏或取消收藏某个商品
+     * @param goodsId
+     * @param hasCollect
+     * @param user
+     * @return
+     */
     @PostMapping("/collect/addordelete/{goodsId}/{userHasCollect}")
     public Response collectAddOrDelete(@PathVariable("goodsId") int goodsId,
                                        @PathVariable("userHasCollect") boolean hasCollect,
@@ -36,30 +43,50 @@ public class UserController {
     }
 
 
+    /**
+     * 获取用户收藏的商品列表
+     * @param user
+     * @return
+     */
     @GetMapping("/collect/list")
-    public Response getCollectList(@JWT(required = true) JWTUser user) {
-        List<GoodsSimpleVo> vo = userService.getUserCollectList(user.getOpenId());
+    public Response<List<Goods>> getCollectList(@JWT(required = true) JWTUser user) {
+        List<Goods> vo = userService.getUserCollectList(user.getOpenId());
         log.info("用户【{}】查询收藏的商品,总数:{}", user.getNickName(), vo.size());
         return Response.ok(vo);
     }
 
+    /**
+     * 获取用户买过的商品列表
+     * @param user
+     * @return
+     */
     @GetMapping("goods/bought")
-    public Response getUserBought(@JWT(required = true) JWTUser user) {
-        List<GoodsSimpleVo> vo = userService.getUserBought(user.getOpenId());
+    public Response<List<Goods>> getUserBought(@JWT(required = true) JWTUser user) {
+        List<Goods> vo = userService.getUserBought(user.getOpenId());
         log.info("用户【{}】查询买过的商品,总数:{}", user.getNickName(), vo.size());
         return Response.ok(vo);
     }
 
+    /**
+     * 获取用户卖出的商品列表
+     * @param user
+     * @return
+     */
     @GetMapping("goods/sold")
-    public Response getUserSold(@JWT(required = true) JWTUser user) {
-        List<GoodsSimpleVo> vo = userService.getUserSold(user.getOpenId());
+    public Response<List<Goods>> getUserSold(@JWT(required = true) JWTUser user) {
+        List<Goods> vo = userService.getUserSold(user.getOpenId());
         log.info("用户【{}】查询卖出的商品,总数:{}", user.getNickName(), vo.size());
         return Response.ok(vo);
     }
 
+    /**
+     * 获取用户发布但还没卖出的商品列表
+     * @param user
+     * @return
+     */
     @GetMapping("goods/posted")
     public Response getUserPosted(@JWT(required = true) JWTUser user) {
-        List<GoodsSimpleVo> vo = userService.getUserPosted(user.getOpenId());
+        List<Goods> vo = userService.getUserPosted(user.getOpenId());
         log.info("用户【{}】查询发布的商品,总数:{}", user.getNickName(), vo.size());
         return Response.ok(vo);
     }

+ 0 - 7
goods-service/src/main/java/io/github/nnkwrik/goodsservice/dao/CategoryMapper.java

@@ -29,13 +29,6 @@ public interface CategoryMapper {
     @Select("select id,name,icon_url from category where parent_id = #{parentId} order by sort_order asc")
     List<Category> findSubCategory(@Param("parentId") int parentId);
 
-    /**
-     * 通过id查找分类名
-     * @param id
-     * @return
-     */
-    @Select("select id,name from category where id = #{id}")
-    Category findCategoryById(@Param("id") int id);
 
     /**
      * 查找同一父分类下的兄弟分类

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

@@ -64,6 +64,8 @@ public interface GoodsMapper {
             "       want_count,\n" +
             "       browse_count,\n" +
             "       is_selling,\n" +
+            "       is_delete,\n" +
+            "       post_time,\n" +
             "       last_edit,\n" +
             "       postage,\n" +
             "       region,\n" +
@@ -167,5 +169,5 @@ public interface GoodsMapper {
             "where seller_id = #{seller_id}\n" +
             "  and is_selling = false\n" +
             "  and is_delete = false;")
-    Integer getGellerHistory(@Param("seller_id") String sellerId);
+    Integer getSellerHistory(@Param("seller_id") String sellerId);
 }

+ 3 - 1
goods-service/src/main/java/io/github/nnkwrik/goodsservice/model/po/Ad.java

@@ -2,6 +2,8 @@ package io.github.nnkwrik.goodsservice.model.po;
 
 import lombok.Data;
 
+import java.util.Date;
+
 /**
  * @author nnkwrik
  * @date 18/11/16 20:01
@@ -14,5 +16,5 @@ public class Ad {
     private String link;
     private Integer sortOrder;
     private Boolean enable;
-    private Data data;
+    private Date create;
 }

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

@@ -1,5 +1,7 @@
 package io.github.nnkwrik.goodsservice.model.po;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.databind.util.StdDateFormat;
 import lombok.Data;
 
 import java.util.Date;
@@ -22,6 +24,7 @@ public class Goods {
     private Integer browseCount;
     private Boolean isSelling;
     private Boolean isDelete;
+    private Date postTime;
     private Date lastEdit;
 
     private Integer regionId;

+ 1 - 1
goods-service/src/main/java/io/github/nnkwrik/goodsservice/model/po/GoodsComment.java

@@ -16,6 +16,6 @@ public class GoodsComment {
     private Integer replyCommentId;
     private String replyUserId;
     private String content;
-    private boolean isDelete;
+    private Boolean isDelete;
     private Date createTime;
 }

+ 3 - 1
goods-service/src/main/java/io/github/nnkwrik/goodsservice/model/po/SearchHistory.java

@@ -2,6 +2,8 @@ package io.github.nnkwrik.goodsservice.model.po;
 
 import lombok.Data;
 
+import java.util.Date;
+
 /**
  * @author nnkwrik
  * @date 18/11/20 18:58
@@ -11,5 +13,5 @@ public class SearchHistory {
     private Integer id;
     private String userId;
     private String keyword;
-    private Data searchTime;
+    private Date searchTime;
 }

+ 3 - 1
goods-service/src/main/java/io/github/nnkwrik/goodsservice/model/po/UserPreference.java

@@ -2,6 +2,8 @@ package io.github.nnkwrik.goodsservice.model.po;
 
 import lombok.Data;
 
+import java.util.Date;
+
 /**
  * @author nnkwrik
  * @date 18/11/23 21:32
@@ -11,5 +13,5 @@ public class UserPreference {
     private Integer id;
     private String userId;
     private Integer type;   //1:收藏,2:想要
-    private Data createTime;
+    private Date createTime;
 }

+ 4 - 5
goods-service/src/main/java/io/github/nnkwrik/goodsservice/model/vo/CatalogVo.java → goods-service/src/main/java/io/github/nnkwrik/goodsservice/model/vo/CatalogPageVo.java

@@ -1,6 +1,6 @@
 package io.github.nnkwrik.goodsservice.model.vo;
 
-import io.github.nnkwrik.goodsservice.model.vo.inner.CategoryVo;
+import io.github.nnkwrik.goodsservice.model.po.Category;
 import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.NoArgsConstructor;
@@ -14,10 +14,9 @@ import java.util.List;
 @Data
 @NoArgsConstructor
 @AllArgsConstructor
-public class CatalogVo {
-    private List<CategoryVo> categoryList;   //所有主分类
-    private  CategoryVo currentCategory;    //当前主分类的名字和它的子分类
-
+public class CatalogPageVo {
+    private List<Category> allCategory;   //其他所有和这个同级的分类
+    private List<Category> subCategory;   //它的所有子分类
 }
 
 

+ 4 - 4
goods-service/src/main/java/io/github/nnkwrik/goodsservice/model/vo/CategoryPageVo.java

@@ -1,7 +1,7 @@
 package io.github.nnkwrik.goodsservice.model.vo;
 
-import io.github.nnkwrik.goodsservice.model.vo.inner.CategoryVo;
-import io.github.nnkwrik.goodsservice.model.vo.inner.GoodsSimpleVo;
+import io.github.nnkwrik.goodsservice.model.po.Category;
+import io.github.nnkwrik.goodsservice.model.po.Goods;
 import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.NoArgsConstructor;
@@ -16,8 +16,8 @@ import java.util.List;
 @AllArgsConstructor
 @NoArgsConstructor
 public class CategoryPageVo {
-    private List<CategoryVo> brotherCategory; //同一个父分类下的兄弟分类
-    private List<GoodsSimpleVo> goodsList;    //当前分类的商品列表
+    private List<Category> brotherCategory; //同一个父分类下的兄弟分类
+    private List<Goods> goodsList;    //当前分类的商品列表
 }
 
 

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

@@ -0,0 +1,18 @@
+package io.github.nnkwrik.goodsservice.model.vo;
+
+import io.github.nnkwrik.common.dto.SimpleUser;
+import io.github.nnkwrik.goodsservice.model.po.GoodsComment;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author nnkwrik
+ * @date 18/11/23 16:09
+ */
+@Data
+public class CommentVo extends GoodsComment {
+    private SimpleUser simpleUser;
+    private String replyUserName;
+    private List<CommentVo> replyList;
+}

+ 9 - 5
goods-service/src/main/java/io/github/nnkwrik/goodsservice/model/vo/GoodsDetailPageVo.java

@@ -1,8 +1,8 @@
 package io.github.nnkwrik.goodsservice.model.vo;
 
-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.common.dto.SimpleUser;
+import io.github.nnkwrik.goodsservice.model.po.Goods;
+import io.github.nnkwrik.goodsservice.model.po.GoodsGallery;
 import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.NoArgsConstructor;
@@ -17,8 +17,12 @@ import java.util.List;
 @AllArgsConstructor
 @NoArgsConstructor
 public class GoodsDetailPageVo {
-    private GoodsDetailVo info;
-    private List<GalleryVo> gallery;
+    private Goods info;
+    private List<GoodsGallery> gallery;
+
+    private SimpleUser seller;
+    private Integer sellerHistory;
+
     private List<CommentVo> comment;
     private Boolean userHasCollect;
 }

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

@@ -1,19 +0,0 @@
-package io.github.nnkwrik.goodsservice.model.vo;
-
-import io.github.nnkwrik.goodsservice.model.vo.inner.GoodsSimpleVo;
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-import java.util.List;
-
-/**
- * @author nnkwrik
- * @date 18/11/18 8:43
- */
-@Data
-@NoArgsConstructor
-@AllArgsConstructor
-public class GoodsRelatedVo {
-    private List<GoodsSimpleVo> goodsList;
-}

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

@@ -0,0 +1,23 @@
+package io.github.nnkwrik.goodsservice.model.vo;
+
+import io.github.nnkwrik.goodsservice.model.po.Ad;
+import io.github.nnkwrik.goodsservice.model.po.Channel;
+import io.github.nnkwrik.goodsservice.model.po.Goods;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+/**
+ * @author nnkwrik
+ * @date 18/11/14 20:57
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class IndexPageVO {
+    private List<Goods> indexGoodsList;
+    private List<Ad> banner;
+    private List<Channel> channel;
+}

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

@@ -1,24 +0,0 @@
-package io.github.nnkwrik.goodsservice.model.vo;
-
-import io.github.nnkwrik.goodsservice.model.vo.inner.BannerVo;
-import io.github.nnkwrik.goodsservice.model.vo.inner.ChannelVo;
-import io.github.nnkwrik.goodsservice.model.vo.inner.GoodsSimpleVo;
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-import java.util.List;
-
-/**
- * @author nnkwrik
- * @date 18/11/14 20:57
- */
-@Data
-@AllArgsConstructor
-@NoArgsConstructor
-public class IndexVO {
-    private List<GoodsSimpleVo> indexGoodsList;
-    private List<BannerVo> banner;
-    private List<ChannelVo> channel;
-}
-

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

@@ -13,7 +13,7 @@ import java.util.List;
 @Data
 @NoArgsConstructor
 @AllArgsConstructor
-public class SearchIndexPageVo {
+public class SearchPageVo {
     private List<String> historyKeywordList;
     private List<String> hotKeywordList;
 }

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

@@ -1,14 +0,0 @@
-package io.github.nnkwrik.goodsservice.model.vo.inner;
-
-import lombok.Data;
-
-/**
- * @author nnkwrik
- * @date 18/11/16 20:00
- */
-@Data
-public class BannerVo {
-    private Integer id;
-    private String imageUrl;
-    private String link;
-}

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

@@ -1,21 +0,0 @@
-package io.github.nnkwrik.goodsservice.model.vo.inner;
-
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-import java.util.List;
-
-/**
- * @author nnkwrik
- * @date 18/11/16 15:25
- */
-@Data
-@NoArgsConstructor
-@AllArgsConstructor
-public class CategoryVo {
-    private Integer id;
-    private String name;
-    private String iconUrl;
-    private List<CategoryVo> subCategoryList;
-}

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

@@ -1,15 +0,0 @@
-package io.github.nnkwrik.goodsservice.model.vo.inner;
-
-import lombok.Data;
-
-/**
- * @author nnkwrik
- * @date 18/11/16 15:28
- */
-@Data
-public class ChannelVo {
-    private Integer id;
-    private String name;
-    private String url;
-    private String iconUrl;
-}

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

@@ -1,25 +0,0 @@
-package io.github.nnkwrik.goodsservice.model.vo.inner;
-
-import io.github.nnkwrik.common.dto.SimpleUser;
-import lombok.Data;
-
-import java.util.List;
-
-/**
- * @author nnkwrik
- * @date 18/11/23 16:09
- */
-@Data
-public class CommentVo {
-    private Integer id;
-    private Integer goodsId;
-    private String userId;
-    private Integer replyCommentId;
-    private String replyUserId;
-    private String content;
-    private String createTime;
-
-    private SimpleUser simpleUser;
-    private String replyUserName;
-    private List<CommentVo> replyList;
-}

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

@@ -1,13 +0,0 @@
-package io.github.nnkwrik.goodsservice.model.vo.inner;
-
-import lombok.Data;
-
-/**
- * @author nnkwrik
- * @date 18/11/17 21:53
- */
-@Data
-public class GalleryVo {
-    private Integer id;
-    private String imgUrl;
-}

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

@@ -1,28 +0,0 @@
-package io.github.nnkwrik.goodsservice.model.vo.inner;
-
-import io.github.nnkwrik.common.dto.SimpleUser;
-import lombok.Data;
-
-/**
- * @author nnkwrik
- * @date 18/11/17 21:45
- */
-@Data
-public class GoodsDetailVo extends GoodsSimpleVo {
-
-    private String desc;
-    private Double marketPrice;
-    private Integer wantCount;
-    private Integer browseCount;
-
-    private Double postage;
-    private String region;
-
-    private Boolean ableExpress;
-    private Boolean ableMeet;
-    private Boolean ableSelfTake;
-
-
-    private SimpleUser seller;
-    private Integer sellerHistory;
-}

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

@@ -1,18 +0,0 @@
-package io.github.nnkwrik.goodsservice.model.vo.inner;
-
-import lombok.Data;
-
-/**
- * @author nnkwrik
- * @date 18/11/16 19:05
- */
-@Data
-public class GoodsSimpleVo {
-    private Integer id;
-    private String name;
-    private String primaryPicUrl;
-    private Double price;
-    private Boolean isSelling;
-    private String soldTime;
-    private String lastEdit;
-}

+ 12 - 8
goods-service/src/main/java/io/github/nnkwrik/goodsservice/service/GoodsService.java

@@ -1,11 +1,10 @@
 package io.github.nnkwrik.goodsservice.service;
 
+import io.github.nnkwrik.common.dto.SimpleUser;
 import io.github.nnkwrik.goodsservice.model.po.Goods;
+import io.github.nnkwrik.goodsservice.model.po.GoodsGallery;
 import io.github.nnkwrik.goodsservice.model.vo.CategoryPageVo;
-import io.github.nnkwrik.goodsservice.model.vo.GoodsRelatedVo;
-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.model.vo.CommentVo;
 
 import java.util.List;
 
@@ -17,15 +16,20 @@ public interface GoodsService {
 
     CategoryPageVo getGoodsAndBrotherCateById(int id, int page, int size);
 
-    CategoryPageVo getGoodsByCateId(int id, int page, int size);
+    List<Goods> getGoodsByCateId(int id, int page, int size);
 
-    GoodsDetailVo getGoodsDetail(int id);
+    Goods getGoodsDetail(int goodsId);
 
-    List<GalleryVo> getGoodsGallery(int goodsId);
+    SimpleUser getSellerInfo(String sellerId);
 
-    GoodsRelatedVo getGoodsRelated(int goodsId);
+    int getSellerHistory(String sellerId);
+
+    List<GoodsGallery> getGoodsGallery(int goodsId);
+
+    List<Goods> getGoodsRelated(int goodsId);
 
     List<CommentVo> getGoodsComment(int goodsId);
 
     void postGoods(Goods goods);
+
 }

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

@@ -2,8 +2,8 @@ package io.github.nnkwrik.goodsservice.service;
 
 import io.github.nnkwrik.goodsservice.model.po.Category;
 import io.github.nnkwrik.goodsservice.model.po.Region;
-import io.github.nnkwrik.goodsservice.model.vo.CatalogVo;
-import io.github.nnkwrik.goodsservice.model.vo.IndexVO;
+import io.github.nnkwrik.goodsservice.model.vo.CatalogPageVo;
+import io.github.nnkwrik.goodsservice.model.vo.IndexPageVO;
 
 import java.util.List;
 
@@ -13,11 +13,11 @@ import java.util.List;
  */
 public interface IndexService {
 
-    IndexVO getIndex();
+    IndexPageVO getIndex();
 
-    CatalogVo getCatalogIndex();
+    CatalogPageVo getCatalogIndex();
 
-    CatalogVo getCatalogById(int id);
+    List<Category> getSubCatalogById(int id);
 
 
     void addComment(int goodsId, String userId, int replyCommentId, String replyUserId, String content);

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

@@ -1,6 +1,6 @@
 package io.github.nnkwrik.goodsservice.service;
 
-import io.github.nnkwrik.goodsservice.model.vo.inner.GoodsSimpleVo;
+import io.github.nnkwrik.goodsservice.model.po.Goods;
 
 import java.util.List;
 
@@ -10,7 +10,7 @@ import java.util.List;
  */
 public interface SearchService {
 
-    List<GoodsSimpleVo> searchByKeyword(List<String> keywordList, int page, int size);
+    List<Goods> searchByKeyword(List<String> keywordList, int page, int size);
 
     List<String> getUserHistory(String openId);
 

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

@@ -1,6 +1,6 @@
 package io.github.nnkwrik.goodsservice.service;
 
-import io.github.nnkwrik.goodsservice.model.vo.inner.GoodsSimpleVo;
+import io.github.nnkwrik.goodsservice.model.po.Goods;
 
 import java.util.List;
 
@@ -14,11 +14,11 @@ public interface UserService {
 
     void collectAddOrDelete(int goodsId, String userId, boolean hasCollect);
 
-    List<GoodsSimpleVo> getUserCollectList(String userId);
+    List<Goods> getUserCollectList(String userId);
 
-    List<GoodsSimpleVo> getUserBought(String buyerId);
+    List<Goods> getUserBought(String buyerId);
 
-    List<GoodsSimpleVo> getUserSold(String sellerId);
+    List<Goods> getUserSold(String sellerId);
 
-    List<GoodsSimpleVo> getUserPosted(String userId);
+    List<Goods> getUserPosted(String userId);
 }

+ 45 - 47
goods-service/src/main/java/io/github/nnkwrik/goodsservice/service/impl/GoodsServiceImpl.java

@@ -11,16 +11,14 @@ import io.github.nnkwrik.goodsservice.model.po.Goods;
 import io.github.nnkwrik.goodsservice.model.po.GoodsComment;
 import io.github.nnkwrik.goodsservice.model.po.GoodsGallery;
 import io.github.nnkwrik.goodsservice.model.vo.CategoryPageVo;
-import io.github.nnkwrik.goodsservice.model.vo.GoodsRelatedVo;
-import io.github.nnkwrik.goodsservice.model.vo.inner.*;
+import io.github.nnkwrik.goodsservice.model.vo.CommentVo;
 import io.github.nnkwrik.goodsservice.service.GoodsService;
-import io.github.nnkwrik.goodsservice.util.PO2VO;
+import io.github.nnkwrik.goodsservice.util.BeanListUtils;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.util.*;
-import java.util.stream.Collectors;
 
 /**
  * @author nnkwrik
@@ -44,52 +42,49 @@ public class GoodsServiceImpl implements GoodsService {
     public CategoryPageVo getGoodsAndBrotherCateById(int id, int page, int size) {
 
         List<Category> brotherCategory = categoryMapper.findBrotherCategory(id);
-        List<CategoryVo> brotherCategoryVo = PO2VO.convertList(brotherCategory, CategoryVo.class);
-        CategoryPageVo vo = getGoodsByCateId(id, page, size);
-        vo.setBrotherCategory(brotherCategoryVo);
+        List<Goods> goodsList = getGoodsByCateId(id, page, size);
+        CategoryPageVo vo = new CategoryPageVo(brotherCategory, goodsList);
 
         return vo;
     }
 
     @Override
-    public CategoryPageVo getGoodsByCateId(int id, int page, int size) {
+    public List<Goods> getGoodsByCateId(int id, int page, int size) {
         //紧跟在这个方法后的第一个MyBatis 查询方法会被进行分页
         PageHelper.startPage(page, size);
-        List<Goods> simpleGoods = goodsMapper.findSimpleGoodsByCateId(id);
-        List<GoodsSimpleVo> goodsSimpleVo = PO2VO.convertList(simpleGoods, GoodsSimpleVo.class);
-
-        return new CategoryPageVo(null, goodsSimpleVo);
+        List<Goods> goodsList = goodsMapper.findSimpleGoodsByCateId(id);
+        return goodsList;
     }
 
     @Override
-    public GoodsDetailVo getGoodsDetail(int id) {
-        Goods detailGoods = goodsMapper.findDetailGoodsByGoodsId(id);
-        GoodsDetailVo goodsDetailVo = PO2VO.convert(detailGoods, GoodsDetailVo.class);
+    public Goods getGoodsDetail(int goodsId) {
+        return goodsMapper.findDetailGoodsByGoodsId(goodsId);
+    }
 
-        Response<SimpleUser> response = userClient.getSimpleUser(detailGoods.getSellerId());
+    @Override
+    public SimpleUser getSellerInfo(String sellerId) {
+                Response<SimpleUser> response = userClient.getSimpleUser(sellerId);
         if (response.getErrno() == Response.USER_IS_NOT_EXIST) {
             log.info("没有搜索到商品卖家的相关信息");
             return null;
         }
-        goodsDetailVo.setSeller(response.getData());
-
-        //卖家出售过的商品数
-        Integer sellerHistory = goodsMapper.getGellerHistory(detailGoods.getSellerId());
-        goodsDetailVo.setSellerHistory(sellerHistory);
+        return response.getData();
+    }
 
-        return goodsDetailVo;
+    @Override
+    public int getSellerHistory(String sellerId) {
+        return goodsMapper.getSellerHistory(sellerId);
     }
 
+
     @Override
-    public List<GalleryVo> getGoodsGallery(int goodsId) {
-        List<GoodsGallery> gallery = goodsMapper.findGalleryByGoodsId(goodsId);
-        List<GalleryVo> galleryVo = PO2VO.convertList(gallery, GalleryVo.class);
+    public List<GoodsGallery> getGoodsGallery(int goodsId) {
 
-        return galleryVo;
+        return goodsMapper.findGalleryByGoodsId(goodsId);
     }
 
     @Override
-    public GoodsRelatedVo getGoodsRelated(int goodsId) {
+    public List<Goods> getGoodsRelated(int goodsId) {
         //获取同一子分类下
         int pageNum = 1;
         int pageSize = 10;
@@ -102,8 +97,7 @@ public class GoodsServiceImpl implements GoodsService {
             simpleGoods = goodsMapper.findSimpleGoodsInSameParentCate(goodsId);
         }
 
-        List<GoodsSimpleVo> goodsSimpleVo = PO2VO.convertList(simpleGoods, GoodsSimpleVo.class);
-        return new GoodsRelatedVo(goodsSimpleVo);
+        return simpleGoods;
     }
 
     @Override
@@ -113,33 +107,38 @@ public class GoodsServiceImpl implements GoodsService {
 
     @Override
     public List<CommentVo> getGoodsComment(int goodsId) {
-        List<GoodsComment> baseComment = goodsMapper.findBaseComment(goodsId);
-        if (baseComment == null || baseComment.size() <= 0) return null;
+        List<GoodsComment> baseCommentPo = goodsMapper.findBaseComment(goodsId);
+        if (baseCommentPo == null || baseCommentPo.size() <= 0) return null;
+
+//        List<CommentVo> baseComment = createCommentVoList(baseCommentPo);
+        List<CommentVo> baseComment = BeanListUtils.copyListProperties(baseCommentPo, CommentVo.class);
         Set<String> userIdSet = new HashSet<>();
-        List<CommentVo> voList = baseComment.stream()
+
+
+        baseComment.stream()
                 .map(base -> {
-                    CommentVo baseVo = PO2VO.convert(base, CommentVo.class);
-                    userIdSet.add(baseVo.getUserId());
-                    return baseVo;
-                }).map(baseVo -> {
+                    //待会通过用户服务查找评论的用户信息
+                    userIdSet.add(base.getUserId());
                     //查找回复评论的评论
-                    List<GoodsComment> replyComment = goodsMapper.findReplyComment(baseVo.getId());
-                    List<CommentVo> replyCommentVo = PO2VO.convertList(replyComment, CommentVo.class);
-                    replyCommentVo.stream()
-                            .forEach(reply -> userIdSet.add(reply.getUserId()));
-                    baseVo.setReplyList(replyCommentVo);
-                    return baseVo;
+                    List<GoodsComment> replyListPo = goodsMapper.findReplyComment(base.getId());
+                    List<CommentVo> replyList = BeanListUtils.copyListProperties(replyListPo, CommentVo.class);
+                    base.setReplyList(replyList);
+                    return replyList;
                 })
-                .collect(Collectors.toList());
+                .flatMap(reply -> reply.stream())
+                //待会通过用户服务查找回复评论的用户信息
+                .forEach(reply -> userIdSet.add(reply.getUserId()));
+
 
         Map<String, SimpleUser> simpleUserMap
-                = getSimpleUserList(userIdSet.stream().collect(Collectors.toList()));
+                = getSimpleUserList(new ArrayList<>(userIdSet));
 
-        voList.stream().map(base -> setUser4Comment(simpleUserMap, base).getReplyList())
+        //加入评论中的用户信息
+        baseComment.stream().map(base -> setUser4Comment(simpleUserMap, base).getReplyList())
                 .flatMap(List::stream)
                 .forEach(reply -> setUser4Comment(simpleUserMap, reply));
 
-        return voList;
+        return baseComment;
     }
 
 
@@ -176,5 +175,4 @@ public class GoodsServiceImpl implements GoodsService {
         return unknownUser;
     }
 
-
 }

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

@@ -5,14 +5,9 @@ import io.github.nnkwrik.goodsservice.dao.CategoryMapper;
 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.CatalogVo;
-import io.github.nnkwrik.goodsservice.model.vo.IndexVO;
-import io.github.nnkwrik.goodsservice.model.vo.inner.BannerVo;
-import io.github.nnkwrik.goodsservice.model.vo.inner.CategoryVo;
-import io.github.nnkwrik.goodsservice.model.vo.inner.ChannelVo;
-import io.github.nnkwrik.goodsservice.model.vo.inner.GoodsSimpleVo;
+import io.github.nnkwrik.goodsservice.model.vo.CatalogPageVo;
+import io.github.nnkwrik.goodsservice.model.vo.IndexPageVO;
 import io.github.nnkwrik.goodsservice.service.IndexService;
-import io.github.nnkwrik.goodsservice.util.PO2VO;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -32,49 +27,34 @@ public class IndexServiceImpl implements IndexService {
     private GoodsMapper goodsMapper;
 
     @Override
-    public IndexVO getIndex() {
+    public IndexPageVO getIndex() {
         //广告
         List<Ad> adList = otherMapper.findAd();
-        List<BannerVo> bannerVoList = PO2VO.convertList(adList, BannerVo.class);
 
         //分类
         List<Channel> channelList = otherMapper.findChannel();
-        List<ChannelVo> channelVoList = PO2VO.convertList(channelList, ChannelVo.class);
 
         //推荐商品
         int pageNum = 1;
         int pageSize = 10;
         PageHelper.startPage(pageNum, pageSize);
         List<Goods> goodsList = goodsMapper.findSimpleGoods();
-        List<GoodsSimpleVo> goodsSimpleVOList = PO2VO.convertList(goodsList, GoodsSimpleVo.class);
 
-        return new IndexVO(goodsSimpleVOList, bannerVoList, channelVoList);
+        return new IndexPageVO(goodsList, adList, channelList);
     }
 
     @Override
-    public CatalogVo getCatalogIndex() {
-        List<Category> mainCategory = categoryMapper.findMainCategory();
-        Category currentCate = mainCategory.get(0);
-        List<Category> subCategory = categoryMapper.findSubCategory(currentCate.getId());
+    public CatalogPageVo getCatalogIndex() {
+        List<Category> allCategory = categoryMapper.findMainCategory();
+        Category topCategory = allCategory.get(0);
+        List<Category> subCategory = categoryMapper.findSubCategory(topCategory.getId());
 
-
-        List<CategoryVo> mainCategoryVo = PO2VO.convertList(mainCategory, CategoryVo.class);
-        List<CategoryVo> subCategoryVo = PO2VO.convertList(subCategory, CategoryVo.class);
-        CategoryVo currentCategoryVo =
-                new CategoryVo(currentCate.getId(), currentCate.getName(), currentCate.getIconUrl(), subCategoryVo);
-
-        return new CatalogVo(mainCategoryVo, currentCategoryVo);
+        return new CatalogPageVo(allCategory,subCategory);
     }
 
     @Override
-    public CatalogVo getCatalogById(int id) {
-        List<Category> subCategory = categoryMapper.findSubCategory(id);
-        List<CategoryVo> subCategoryVo = PO2VO.convertList(subCategory, CategoryVo.class);
-        Category currentCategory = categoryMapper.findCategoryById(id);
-        CategoryVo currentCategoryVo = PO2VO.convert(currentCategory, CategoryVo.class);
-        currentCategoryVo.setSubCategoryList(subCategoryVo);
-
-        return new CatalogVo(null, currentCategoryVo);
+    public List<Category> getSubCatalogById(int id) {
+        return categoryMapper.findSubCategory(id);
     }
 
     @Override

+ 2 - 7
goods-service/src/main/java/io/github/nnkwrik/goodsservice/service/impl/SearchServiceImpl.java

@@ -4,15 +4,11 @@ import com.github.pagehelper.PageHelper;
 import io.github.nnkwrik.goodsservice.dao.SearchMapper;
 import io.github.nnkwrik.goodsservice.model.po.Goods;
 import io.github.nnkwrik.goodsservice.model.po.SearchHistory;
-import io.github.nnkwrik.goodsservice.model.vo.inner.GoodsSimpleVo;
 import io.github.nnkwrik.goodsservice.service.SearchService;
-import io.github.nnkwrik.goodsservice.util.PO2VO;
-import org.apache.commons.lang.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-import java.util.Arrays;
 import java.util.List;
 import java.util.stream.Collectors;
 
@@ -28,10 +24,9 @@ public class SearchServiceImpl implements SearchService {
 
 
     @Override
-    public List<GoodsSimpleVo> searchByKeyword(List<String> keywordList, int page, int size) {
+    public List<Goods> searchByKeyword(List<String> keywordList, int page, int size) {
         PageHelper.startPage(page, size);
-        List<Goods> goodsList = searchMapper.findGoodsByKeywords(keywordList);
-        return PO2VO.convertList(goodsList,GoodsSimpleVo.class);
+        return searchMapper.findGoodsByKeywords(keywordList);
     }
 
     @Override

+ 8 - 15
goods-service/src/main/java/io/github/nnkwrik/goodsservice/service/impl/UserServiceImpl.java

@@ -2,9 +2,7 @@ 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;
 
@@ -35,29 +33,24 @@ public class UserServiceImpl implements UserService {
     }
 
     @Override
-    public List<GoodsSimpleVo> getUserCollectList(String userId) {
-        List<Goods> goodsList = userMapper.getUserCollect(userId);
-
-        return PO2VO.convertList(goodsList, GoodsSimpleVo.class);
+    public List<Goods> getUserCollectList(String userId) {
+        return userMapper.getUserCollect(userId);
     }
 
     @Override
-    public List<GoodsSimpleVo> getUserBought(String buyerId) {
-        List<Goods> goodsList = userMapper.getUserBought(buyerId);
-        return PO2VO.convertList(goodsList, GoodsSimpleVo.class);
+    public List<Goods> getUserBought(String buyerId) {
+        return userMapper.getUserBought(buyerId);
     }
 
     @Override
-    public List<GoodsSimpleVo> getUserSold(String sellerId) {
-        List<Goods> goodsList = userMapper.getUserSold(sellerId);
-        return PO2VO.convertList(goodsList, GoodsSimpleVo.class);
+    public List<Goods> getUserSold(String sellerId) {
+        return userMapper.getUserSold(sellerId);
 
     }
 
     @Override
-    public List<GoodsSimpleVo> getUserPosted(String userId) {
-        List<Goods> goodsList = userMapper.getUserPosted(userId);
-        return PO2VO.convertList(goodsList, GoodsSimpleVo.class);
+    public List<Goods> getUserPosted(String userId) {
+        return userMapper.getUserPosted(userId);
     }
 
 

+ 36 - 0
goods-service/src/main/java/io/github/nnkwrik/goodsservice/util/BeanListUtils.java

@@ -0,0 +1,36 @@
+package io.github.nnkwrik.goodsservice.util;
+
+import org.springframework.beans.BeanUtils;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author nnkwrik
+ * @date 18/11/30 16:28
+ */
+public class BeanListUtils {
+
+    /**
+     * BeanUtils.copyProperties()的List增强版
+     * 对List的每个元素进行拷贝,生成target类型的List
+     * @param sourceList
+     * @param targetClazz 要生成的target List<T>的Class对象
+     * @param <T>
+     * @return
+     */
+    public static <T,R> List<R> copyListProperties(List<T> sourceList, Class<R> targetClazz) {
+        List<R> result = new ArrayList<>();
+        sourceList.stream().forEach(source -> {
+            try {
+                R target = targetClazz.newInstance();
+                BeanUtils.copyProperties(source, target);
+                result.add(target);
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+        });
+        return result;
+    }
+
+}

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

@@ -1,87 +0,0 @@
-package io.github.nnkwrik.goodsservice.util;
-
-import org.springframework.beans.BeanUtils;
-import org.springframework.beans.BeanWrapper;
-import org.springframework.beans.BeanWrapperImpl;
-
-import java.beans.PropertyDescriptor;
-import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.List;
-import java.util.stream.Collectors;
-
-/**
- * po转vo
- *
- * @author nnkwrik
- * @date 18/11/15 18:00
- */
-public class PO2VO {
-
-    /**
-     * po转vo
-     *
-     * @param po
-     * @param voClass vo的类型
-     * @param <T>
-     * @param <R>
-     * @return
-     */
-    public static <T, R> R convert(T po, Class<R> voClass) {
-        R vo = null;
-        try {
-            vo = voClass.newInstance();
-            BeanUtils.copyProperties(po, vo);
-            PO2VO.checkDate(po, vo);
-        } catch (Exception e) {
-            e.printStackTrace();
-
-        }
-        return vo;
-    }
-
-    /**
-     * poList转voList
-     *
-     * @param poList
-     * @param voClass vo的类型
-     * @param <T>
-     * @param <R>
-     * @return
-     */
-    public static <T, R> List<R> convertList(List<T> poList, Class<R> voClass) {
-        return poList.stream()
-                .map(po -> PO2VO.convert(po, voClass)).collect(Collectors.toList());
-    }
-
-
-    /**
-     * 把po中的Date对象转换成String,并对vo进行赋值
-     * 不存在Date对象时则什么都不做
-     *
-     * @param po
-     * @param vo
-     * @param <T>
-     * @param <R>
-     */
-    private static <T, R> void checkDate(T po, R vo) {
-        BeanWrapper poWrapper = new BeanWrapperImpl(po);
-        BeanWrapper voWrapper = new BeanWrapperImpl(vo);
-
-
-        for (PropertyDescriptor pd : voWrapper.getPropertyDescriptors()) {
-            Object date;
-            String fieldName = pd.getDisplayName();
-            if (pd.getPropertyType() == Date.class
-                    && (date = poWrapper.getPropertyValue(fieldName)) != null) {
-
-                SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm");
-                String formatted = formatter.format(date);
-
-                voWrapper.setPropertyValue(fieldName, formatted);
-
-            }
-        }
-    }
-
-}

+ 7 - 1
goods-service/src/main/resources/application.yml

@@ -10,6 +10,12 @@ spring:
     username: root
     password: 1234
     driver-class-name: com.mysql.cj.jdbc.Driver
+  jackson:
+    default-property-inclusion: non_null  #如果值为null,构造json时不加入
+    date-format: yyyy-MM-dd HH:mm    #指定Json中Date对象的传输格式.对于DTO还是使用以往的方式
+    locale: zh_CN
+    time-zone: Asia/Shanghai
+
 server:
   port: 8804
 
@@ -22,4 +28,4 @@ logging:
     org.springframework.web: info
     io.github.nnkwrik.goodsservice: debug
 jwt:
-  pub-key-file-name: RSA.pub
+  pub-key-file-name: RSA.pub

+ 13 - 5
wx-front/pages/catalog/catalog.js

@@ -6,6 +6,8 @@ Page({
     navList: [],
     categoryList: [],
     currentCategory: {},
+    currentCategoryId: 0,
+    currentCategoryName: '',
     scrollLeft: 0,
     scrollTop: 0,
     goodsCount: 0,
@@ -22,19 +24,25 @@ Page({
     });
     util.request(api.CatalogList).then(function(res) {
       that.setData({
-        navList: res.data.categoryList,
-        currentCategory: res.data.currentCategory
+        navList: res.data.allCategory,
+        currentCategory: res.data.subCategory,
+        currentCategoryId: res.data.allCategory[0].id,
+        currentCategoryName: res.data.allCategory[0].name
       });
       wx.hideLoading();
     });
 
   },
-  getCurrentCategory: function(id) {
+  getCurrentCategory: function(id,name) {
     let that = this;
+    this.setData({
+      currentCategoryId: id,
+      currentCategoryName: name
+    })
     util.request(api.CatalogCurrent + "/" + id)
       .then(function(res) {
         that.setData({
-          currentCategory: res.data.currentCategory
+          currentCategory: res.data,
         });
       });
   },
@@ -56,6 +64,6 @@ Page({
     if (this.data.currentCategory.id == event.currentTarget.dataset.id) {
       return false;
     }
-    this.getCurrentCategory(event.currentTarget.dataset.id);
+    this.getCurrentCategory(event.currentTarget.dataset.id, event.currentTarget.dataset.name);
   }
 })

+ 3 - 3
wx-front/pages/catalog/catalog.wxml

@@ -7,7 +7,7 @@
   </view>
   <view class="catalog">
     <scroll-view class="nav" scroll-y="true">
-        <view class="item {{ currentCategory.id == item.id ? 'active' : ''}}" wx:for="{{navList}}"  data-id="{{item.id}}" data-index="{{index}}" bindtap="switchCate"  wx:key="{{item.id}}">{{item.name}}</view>
+        <view class="item {{ currentCategoryId == item.id ? 'active' : ''}}" wx:for="{{navList}}"  data-id="{{item.id}}" data-name="{{item.name}}" data-index="{{index}}" bindtap="switchCate"  wx:key="{{item.id}}">{{item.name}}</view>
     </scroll-view>
     <scroll-view class="cate" scroll-y="true">
         <view class="banner">
@@ -15,11 +15,11 @@
         </view>
         <view class="hd">
             <text class="line"></text>
-            <text class="txt">{{currentCategory.name}}分类</text>
+            <text class="txt">{{currentCategoryName}}分类</text>
             <text class="line"></text>
         </view>
         <view class="bd">
-            <navigator url="/pages/category/category?id={{item.id}}" class="item {{(index+1) % 3 == 0 ? 'last' : ''}}" wx:for="{{currentCategory.subCategoryList}}" wx:key="{{item.id}}">
+            <navigator url="/pages/category/category?id={{item.id}}" class="item {{(index+1) % 3 == 0 ? 'last' : ''}}" wx:for="{{currentCategory}}" wx:key="{{item.id}}">
                 <image class="icon" src="{{item.iconUrl}}"></image>
                 <text class="txt">{{item.name}}</text>
             </navigator>

+ 1 - 1
wx-front/pages/category/category.js

@@ -84,7 +84,7 @@ Page({
     util.request(api.GoodsList + "/" + that.data.id, { page: that.data.page, size: that.data.size})
       .then(function (res) {
         that.setData({
-          goodsList: res.data.goodsList,
+          goodsList: res.data,
         });
       });
   },

+ 9 - 6
wx-front/pages/goods/goods.js

@@ -15,7 +15,9 @@ Page({
     // brand: {},
     // specificationList: [],
     // productList: [],
+    seller: {},
     sellerDates: 0,
+    sellerHistory: 0,
     relatedGoods: [],
     cartGoodsCount: 0,
     userHasCollect: 0,
@@ -38,12 +40,14 @@ Page({
       if (res.errno === 0) {
 
         //计算卖家来平台第几天
-        let registerTime = res.data.info.seller.registerTime
-        let duration = new Date().getTime() - new Date(registerTime).getTime() ;
+        let registerTime = res.data.seller.registerTime
+        let duration = new Date().getTime() - new Date(registerTime).getTime();
         let dates = parseInt(Math.floor(duration) / (1000 * 60 * 60 * 24));
         that.setData({
           goods: res.data.info,
           gallery: res.data.gallery,
+          seller: res.data.seller,
+          sellerHistory: res.data.sellerHistory,
           sellerDates: dates,
           // attribute: res.data.attribute,
           // issueList: res.data.issue,
@@ -76,7 +80,7 @@ Page({
     util.request(api.GoodsRelated + '/' + that.data.id, ).then(function(res) {
       if (res.errno === 0) {
         that.setData({
-          relatedGoods: res.data.goodsList,
+          relatedGoods: res.data,
         });
       }
     });
@@ -263,9 +267,8 @@ Page({
       return false;
     }
     util.request(api.CommentPost + '/' + this.data.id, {
-      reply_comment_id: this.data.replyId,
-      reply_user_id: this.data.replyUserId,
-      reply_user_name: this.data.replyUserName,
+      replyCommentId: this.data.replyId,
+      replyUserId: this.data.replyUserId,
       content: event.detail.value
     }, "POST").then(function(res) {
       if (res.errno === 0) {

+ 3 - 3
wx-front/pages/goods/goods.wxml

@@ -56,12 +56,12 @@
   <!-- history -->
   <view class="seller-nav section-act">
     <view class="seller-t">
-      <image class="seller-avatar" src="{{goods.seller.avatarUrl}}"></image>
+      <image class="seller-avatar" src="{{seller.avatarUrl}}"></image>
     </view>
 
     <view class="seller-info">
-      <view class="name">{{goods.seller.nickName}}</view>
-      <view class="history">加入平台第{{sellerDates}}天,出售过{{goods.sellerHistory}}件宝贝</view>
+      <view class="name">{{seller.nickName}}</view>
+      <view class="history">加入平台第{{sellerDates}}天,出售过{{sellerHistory}}件宝贝</view>
     </view>
 
     <image class="i" src="../../static/images/address_right.png" background-size="cover"></image>

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

@@ -2,7 +2,7 @@
   <text class='txt'>
 哈喽! 玩得开心吗? 
 
-我是这个开源项目的作者曾生一个在日本的大学生。
+我是这个开源项目的作者曾生一个在日本的大学生。
 
 这是我第一次尝试用SpringCloud搭建的微信小程序。今后会不定期更新,逐步完善功能。
 如果你觉得这个项目有不足的地方或意见,欢迎在issue中给我留言,也可以通过下面的微信二维码找到我。