Преглед на файлове

修改各个服务对内部提供的api

nnkwrik преди 6 години
родител
ревизия
f0f55cc07c
променени са 16 файла, в които са добавени 285 реда и са изтрити 68 реда
  1. 0 45
      common/src/main/java/io/github/nnkwrik/common/client/UserClient.java
  2. 2 0
      common/src/main/java/io/github/nnkwrik/common/dto/Response.java
  3. 15 0
      common/src/main/java/io/github/nnkwrik/common/dto/SimpleGoods.java
  4. 4 4
      goods-service/pom.xml
  5. 42 0
      goods-service/src/main/java/io/github/nnkwrik/goodsservice/client/UserClient.java
  6. 66 0
      goods-service/src/main/java/io/github/nnkwrik/goodsservice/controller/GoodsServiceController.java
  7. 3 4
      goods-service/src/main/java/io/github/nnkwrik/goodsservice/controller/TestController.java
  8. 33 0
      goods-service/src/main/java/io/github/nnkwrik/goodsservice/dao/GoodsServiceMapper.java
  9. 2 2
      goods-service/src/main/java/io/github/nnkwrik/goodsservice/service/impl/GoodsServiceImpl.java
  10. 1 1
      goods-service/src/main/java/io/github/nnkwrik/goodsservice/service/impl/UserServiceImpl.java
  11. 4 4
      im-service/pom.xml
  12. 4 0
      im-service/src/main/java/io/github/nnkwrik/imservice/ImServiceApplication.java
  13. 27 0
      im-service/src/main/java/io/github/nnkwrik/imservice/client/GoodsClient.java
  14. 42 0
      im-service/src/main/java/io/github/nnkwrik/imservice/client/UserClient.java
  15. 33 0
      im-service/src/main/java/io/github/nnkwrik/imservice/controller/TestController.java
  16. 7 8
      user-service/src/main/java/io/github/nnkwrik/userservice/controller/UserServiceController.java

+ 0 - 45
common/src/main/java/io/github/nnkwrik/common/client/UserClient.java

@@ -1,45 +0,0 @@
-package io.github.nnkwrik.common.client;
-
-import io.github.nnkwrik.common.dto.Response;
-import io.github.nnkwrik.common.dto.SimpleUser;
-import org.springframework.cloud.openfeign.FeignClient;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-/**
- * 使用user-service的api
- * @author nnkwrik
- * @date 18/11/23 18:06
- */
-@FeignClient(name = "user-service")
-@RequestMapping("/user-service")
-public interface UserClient {
-
-    default Response<SimpleUser> getSimpleUser(String userId) {
-        Map<String, String> json = new HashMap<>();
-        json.put("openId", userId);
-        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);
-}

+ 2 - 0
common/src/main/java/io/github/nnkwrik/common/dto/Response.java

@@ -21,6 +21,7 @@ public class Response<T> {
     public static final int COMMENT_INFO_INCOMPLETE = 4002;
     public static final int POST_INFO_INCOMPLETE = 4003;
     public static final int SELLER_AND_GOODS_IS_NOT_MATCH = 4004;
+    public static final int GOODS_IN_NOT_EXIST = 4005;
 
     //user
     public static final int USER_IS_NOT_EXIST = 2001;
@@ -51,6 +52,7 @@ public class Response<T> {
     public static Response ok() {
         return new Response();
     }
+
     public static <T> Response ok(T data) {
         return new Response(data);
     }

+ 15 - 0
common/src/main/java/io/github/nnkwrik/common/dto/SimpleGoods.java

@@ -0,0 +1,15 @@
+package io.github.nnkwrik.common.dto;
+
+import lombok.Data;
+
+/**
+ * @author nnkwrik
+ * @date 18/12/07 15:58
+ */
+@Data
+public class SimpleGoods {
+    private Integer id;
+    private String name;
+    private String primaryPicUrl;
+    private Double price;
+}

+ 4 - 4
goods-service/pom.xml

@@ -31,10 +31,10 @@
             <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
         </dependency>
 
-        <!--<dependency>-->
-            <!--<groupId>org.springframework.cloud</groupId>-->
-            <!--<artifactId>spring-cloud-starter-openfeign</artifactId>-->
-        <!--</dependency>-->
+        <dependency>
+            <groupId>org.springframework.cloud</groupId>
+            <artifactId>spring-cloud-starter-openfeign</artifactId>
+        </dependency>
 
         <dependency>
             <groupId>org.springframework.boot</groupId>

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

@@ -0,0 +1,42 @@
+package io.github.nnkwrik.goodsservice.client;
+
+import io.github.nnkwrik.common.dto.Response;
+import io.github.nnkwrik.common.dto.SimpleUser;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 使用user-service的api
+ *
+ * @author nnkwrik
+ * @date 18/11/23 18:06
+ */
+@FeignClient(name = "user-service")
+@RequestMapping("/user-service")
+public interface UserClient {
+
+    /**
+     * 获取用户openId的相关信息
+     *
+     * @param openId
+     * @return
+     */
+    @GetMapping("/simpleUser/{openId}")
+    Response<SimpleUser> getSimpleUser(@PathVariable("openId") String openId);
+
+    /**
+     * 获取用户openIdList的相关信息
+     *
+     * @param openIdList
+     * @return
+     */
+    @GetMapping("/simpleUserList")
+    Response<Map<String, SimpleUser>> getSimpleUserList(@RequestParam List<String> openIdList);
+}
+

+ 66 - 0
goods-service/src/main/java/io/github/nnkwrik/goodsservice/controller/GoodsServiceController.java

@@ -0,0 +1,66 @@
+package io.github.nnkwrik.goodsservice.controller;
+
+import io.github.nnkwrik.common.dto.Response;
+import io.github.nnkwrik.common.dto.SimpleGoods;
+import io.github.nnkwrik.goodsservice.dao.GoodsServiceMapper;
+import io.github.nnkwrik.goodsservice.model.po.Goods;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 对其他服务开放的api
+ *
+ * @author nnkwrik
+ * @date 18/12/07 20:43
+ */
+@RestController
+@RequestMapping("/goods-service")
+@Slf4j
+public class GoodsServiceController {
+
+    @Autowired
+    private GoodsServiceMapper goodsServiceMapper;
+
+
+    @GetMapping("/simpleGoods/{goodsId}")
+    Response<SimpleGoods> getSimpleGoods(@PathVariable("goodsId") Integer goodsId) {
+        Goods goods = goodsServiceMapper.getSimpleGoods(goodsId);
+
+        if (goods == null) {
+            log.info("其他服务通过goodsId : [{}] 查询商品基本信息,没有查询到该商品", goodsId);
+            return Response.fail(Response.GOODS_IN_NOT_EXIST, "不存在的商品");
+        }
+
+        SimpleGoods dto = new SimpleGoods();
+        BeanUtils.copyProperties(goods, dto);
+        log.info("其他服务通过goodsId : [{}] 查询商品基本信息,查询结果={}", goodsId, dto);
+        return Response.ok(dto);
+    }
+
+
+    @GetMapping("/simpleGoodsList")
+    Response<Map<Integer, SimpleGoods>> getSimpleGoodsList(@RequestParam List<Integer> goodsIdList) {
+        List<Goods> godosList = goodsServiceMapper.getSimpleGoodsList(goodsIdList);
+        Map<Integer, SimpleGoods> dtoMap = new HashMap<>();
+        godosList.stream().forEach(goods -> {
+            SimpleGoods simpleGoods = new SimpleGoods();
+            BeanUtils.copyProperties(goods, simpleGoods);
+            dtoMap.put(goods.getId(), simpleGoods);
+        });
+
+        if (dtoMap == null) {
+            log.info("其他服务通过goodsId : [{}] 查询商品基本信息,没有查询到该商品", goodsIdList);
+            return Response.fail(Response.GOODS_IN_NOT_EXIST, "不存在的商品");
+        }
+
+        log.info("其他服务通过goodsId : [{}] 查询用户基本信息,查询结果:{}", goodsIdList, dtoMap);
+        return Response.ok(dtoMap);
+    }
+
+}

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

@@ -4,7 +4,7 @@ import io.github.nnkwrik.common.dto.JWTUser;
 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.common.client.UserClient;
+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;
@@ -24,9 +24,8 @@ public class TestController {
 
     @GetMapping("/testFeign")
     public Response testFeign() {
-        Map<String, String> map = new HashMap<>();
-        map.put("openId", "1");
-        return client.getSimpleUser(map);
+
+        return client.getSimpleUser("1");
     }
 
     @GetMapping("/testFeign2")

+ 33 - 0
goods-service/src/main/java/io/github/nnkwrik/goodsservice/dao/GoodsServiceMapper.java

@@ -0,0 +1,33 @@
+package io.github.nnkwrik.goodsservice.dao;
+
+import io.github.nnkwrik.goodsservice.model.po.Goods;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+
+import java.util.List;
+
+/**
+ * @author nnkwrik
+ * @date 18/12/07 20:48
+ */
+@Mapper
+public interface GoodsServiceMapper {
+
+    @Select("select id, name, primary_pic_url, price\n" +
+            "from goods\n" +
+            "where is_delete = 0\n" +
+            "  and id = #{goodsId}")
+    Goods getSimpleGoods(@Param("goodsId") Integer goodsId);
+
+    @Select("<script>\n" +
+            "select id, name, primary_pic_url, price\n" +
+            "from goods\n" +
+            "where is_delete = 0\n" +
+            "  and id in " +
+            "    <foreach item='item' collection='goodsIdList' open='(' separator=',' close=')'>\n" +
+            "    #{item}\n" +
+            "    </foreach>\n" +
+            "</script>")
+    List<Goods> getSimpleGoodsList(@Param("goodsIdList") List<Integer> goodsIdList);
+}

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

@@ -3,7 +3,7 @@ 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.common.client.UserClient;
+import io.github.nnkwrik.goodsservice.client.UserClient;
 import io.github.nnkwrik.goodsservice.dao.CategoryMapper;
 import io.github.nnkwrik.goodsservice.dao.GoodsMapper;
 import io.github.nnkwrik.goodsservice.model.po.*;
@@ -156,7 +156,7 @@ public class GoodsServiceImpl implements GoodsService {
 
     private Map<String, SimpleUser> getSimpleUserList(List<String> openIdList) {
         log.info("从用户服务查询用户的简单信息");
-        Response<HashMap<String, SimpleUser>> response = userClient.getSimpleUserList(openIdList);
+        Response<Map<String, SimpleUser>> response = userClient.getSimpleUserList(openIdList);
         if (response.getErrno() == Response.USER_IS_NOT_EXIST) {
             log.info("没有查到匹配openId的用户");
             return new HashMap<>();

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

@@ -3,7 +3,7 @@ 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.common.client.UserClient;
+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;

+ 4 - 4
im-service/pom.xml

@@ -30,10 +30,10 @@
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-websocket</artifactId>
         </dependency>
-        <!--<dependency>-->
-        <!--<groupId>org.springframework.cloud</groupId>-->
-        <!--<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>-->
-        <!--</dependency>-->
+        <dependency>
+        <groupId>org.springframework.cloud</groupId>
+        <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
+        </dependency>
 
         <dependency>
             <groupId>org.springframework.boot</groupId>

+ 4 - 0
im-service/src/main/java/io/github/nnkwrik/imservice/ImServiceApplication.java

@@ -2,8 +2,12 @@ package io.github.nnkwrik.imservice;
 
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
+import org.springframework.cloud.openfeign.EnableFeignClients;
 
 @SpringBootApplication(scanBasePackages = "io.github.nnkwrik")
+@EnableEurekaClient
+@EnableFeignClients
 public class ImServiceApplication {
 
     public static void main(String[] args) {

+ 27 - 0
im-service/src/main/java/io/github/nnkwrik/imservice/client/GoodsClient.java

@@ -0,0 +1,27 @@
+package io.github.nnkwrik.imservice.client;
+
+import io.github.nnkwrik.common.dto.Response;
+import io.github.nnkwrik.common.dto.SimpleGoods;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author nnkwrik
+ * @date 18/12/07 21:08
+ */
+@FeignClient(name = "goods-service")
+@RequestMapping("/goods-service")
+public interface GoodsClient {
+
+
+    @GetMapping("/simpleGoods/{goodsId}")
+    Response<SimpleGoods> getSimpleGoods(@PathVariable("goodsId") Integer goodsId);
+
+
+    @GetMapping("/simpleGoodsList")
+    Response<Map<Integer, SimpleGoods>> getSimpleGoodsList(@RequestParam List<Integer> goodsIdList);
+}

+ 42 - 0
im-service/src/main/java/io/github/nnkwrik/imservice/client/UserClient.java

@@ -0,0 +1,42 @@
+package io.github.nnkwrik.imservice.client;
+
+import io.github.nnkwrik.common.dto.Response;
+import io.github.nnkwrik.common.dto.SimpleUser;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * TODO: 与goods-service中的重复
+ * 使用user-service的api
+ *
+ * @author nnkwrik
+ * @date 18/11/23 18:06
+ */
+@FeignClient(name = "user-service")
+@RequestMapping("/user-service")
+public interface UserClient {
+
+    /**
+     * 获取用户openId的相关信息
+     *
+     * @param openId
+     * @return
+     */
+    @GetMapping("/simpleUser/{openId}")
+    Response<SimpleUser> getSimpleUser(@PathVariable("openId") String openId);
+
+    /**
+     * 获取用户openIdList的相关信息
+     *
+     * @param openIdList
+     * @return
+     */
+    @GetMapping("/simpleUserList")
+    Response<Map<String, SimpleUser>> getSimpleUserList(@RequestParam List<String> openIdList);
+}

+ 33 - 0
im-service/src/main/java/io/github/nnkwrik/imservice/controller/TestController.java

@@ -1,10 +1,15 @@
 package io.github.nnkwrik.imservice.controller;
 
+import io.github.nnkwrik.common.dto.Response;
+import io.github.nnkwrik.imservice.client.GoodsClient;
+import io.github.nnkwrik.imservice.client.UserClient;
 import io.github.nnkwrik.imservice.service.WebSocketService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.util.Arrays;
+
 /**
  * @author nnkwrik
  * @date 18/12/05 12:08
@@ -17,6 +22,12 @@ public class TestController {
     @Autowired
     private WebSocketService webSocketService;
 
+    @Autowired
+    private GoodsClient goodsClient;
+
+    @Autowired
+    private UserClient userClient;
+
 //    @RequestMapping("/testsend/{openId}")
 //    public void testsend(@PathVariable("openId") String openId) {
 //        webSocket.sendMessage(openId, Response.ok("success to send"));
@@ -27,5 +38,27 @@ public class TestController {
         return "webSocketService == null?true:false " + (webSocketService == null ? true : false);
     }
 
+    @GetMapping("/testGoods")
+    public Response testGoods(){
+        return goodsClient.getSimpleGoods(12);
+    }
+
+    @GetMapping("/testGoodsList")
+    public Response testGoodsList(){
+        return goodsClient.getSimpleGoodsList(Arrays.asList(13,14,16));
+
+    }
+
+    @GetMapping("/testUser")
+    public Response testUser(){
+        return userClient.getSimpleUser(1+"");
+    }
+
+    @GetMapping("/testUserList")
+    public Response testUserList(){
+        return userClient.getSimpleUserList(Arrays.asList("1","2"));
+
+    }
+
 
 }

+ 7 - 8
user-service/src/main/java/io/github/nnkwrik/userservice/controller/UserServiceController.java

@@ -8,7 +8,6 @@ import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
-import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
@@ -26,20 +25,20 @@ public class UserServiceController {
     private UserService userService;
 
 
-    @PostMapping("/simpleUser")
-    public Response<SimpleUser> getSimpleUser(@RequestBody Map<String, String> openId) {
-        SimpleUser dto = userService.getSimpleUser(openId.get("openId"));
-        log.info("【商品服务】通过openId : [{}] 查询用户基本信息,查询结果:{}", openId.get("openId"), dto);
+    @GetMapping("/simpleUser/{openId}")
+    Response<SimpleUser> getSimpleUser(@PathVariable("openId") String openId) {
+        SimpleUser dto = userService.getSimpleUser(openId);
+        log.info("其他服务通过openId : [{}] 查询用户基本信息,查询结果:{}", openId, dto);
         if (dto == null)
             return Response.fail(Response.USER_IS_NOT_EXIST, "不存在的用户");
         return Response.ok(dto);
     }
 
-    @PostMapping("/simpleUserList")
-    public Response<HashMap<String, SimpleUser>> getSimpleUserList(@RequestBody List<String> openIdList) {
+    @GetMapping("/simpleUserList")
+    Response<Map<String, SimpleUser>> getSimpleUserList(@RequestParam List<String> openIdList) {
 
         Map<String, SimpleUser> dtoMap = userService.getSimpleUserList(openIdList);
-        log.info("【商品服务】通过openId : [{}] 查询用户基本信息,查询结果:{}", openIdList, dtoMap);
+        log.info("其他服务通过openId : [{}] 查询用户基本信息,查询结果:{}", openIdList, dtoMap);
         if (dtoMap == null)
             return Response.fail(Response.USER_IS_NOT_EXIST, "不存在的用户");
         return Response.ok(dtoMap);