From 1bb2d1d1f4ed5cd0409d17180844b445bf63f213 Mon Sep 17 00:00:00 2001
From: wangpengfei <274878379@qq.com>
Date: 星期六, 26 八月 2023 15:27:18 +0800
Subject: [PATCH] add

---
 log/2023-08-26/info.log |    4 
 router/test/product.go  |    5 
 config.yaml             |  381 +++++++++++++++---------------
 main.go                 |    4 
 docs/swagger.yaml       |   72 ++++++
 api/v1/test/product.go  |   19 
 config/system.go        |    1 
 docs/docs.go            |  117 +++++++++
 docs/swagger.json       |  117 +++++++++
 9 files changed, 519 insertions(+), 201 deletions(-)

diff --git a/api/v1/test/product.go b/api/v1/test/product.go
index fcec2e1..da50427 100644
--- a/api/v1/test/product.go
+++ b/api/v1/test/product.go
@@ -5,6 +5,7 @@
 	"github.com/spf13/cast"
 	"go.uber.org/zap"
 	"google.golang.org/grpc"
+	"google.golang.org/grpc/credentials/insecure"
 	"srm/global"
 	"srm/model/common/request"
 	"srm/model/common/response"
@@ -172,14 +173,14 @@
 	productServiceConn *grpc.ClientConn
 )
 
-//func InitProductServiceConn() {
-//	var err error
-//	productServiceConn, err = grpc.Dial(conf.Conf.GrpcServiceAddr.Aps, grpc.WithTransportCredentials(insecure.NewCredentials()))
-//	if err != nil {
-//		logx.Errorf("grpc dial product service error: %v", err.Error())
-//		return
-//	}
-//}
+func InitProductServiceConn() {
+	var err error
+	productServiceConn, err = grpc.Dial(global.GVA_CONFIG.System.GrpcUrl, grpc.WithTransportCredentials(insecure.NewCredentials()))
+	if err != nil {
+		//logx.Errorf("grpc dial product service error: %v", err.Error())
+		return
+	}
+}
 
 func CloseProductServiceConn() {
 	if productServiceConn != nil {
@@ -233,7 +234,7 @@
 
 	response.OkWithDetailed(response.PageResult{
 		List:     productList,
-		Total:    0,
+		Total:    int64(len(productList)),
 		Page:     pageInfo.Page,
 		PageSize: pageInfo.PageSize,
 	}, "鑾峰彇鎴愬姛", c)
diff --git a/config.yaml b/config.yaml
index 2a23c43..56e2f29 100644
--- a/config.yaml
+++ b/config.yaml
@@ -1,212 +1,213 @@
 aliyun-oss:
-    endpoint: yourEndpoint
-    access-key-id: yourAccessKeyId
-    access-key-secret: yourAccessKeySecret
-    bucket-name: yourBucketName
-    bucket-url: yourBucketUrl
-    base-path: yourBasePath
+  endpoint: yourEndpoint
+  access-key-id: yourAccessKeyId
+  access-key-secret: yourAccessKeySecret
+  bucket-name: yourBucketName
+  bucket-url: yourBucketUrl
+  base-path: yourBasePath
 autocode:
-    server-model: /model/%s
-    server-router: /router/%s
-    server: /server
-    server-api: /api/v1/%s
-    server-plug: /plugin/%s
-    server-initialize: /initialize
-    root: D:\basic.com\gin-vue-admin
-    web-table: /view
-    web: /web/src
-    server-service: /service/%s
-    server-request: /model/%s/request/
-    web-api: /api
-    web-form: /view
-    transfer-restart: true
+  server-model: /model/%s
+  server-router: /router/%s
+  server: /server
+  server-api: /api/v1/%s
+  server-plug: /plugin/%s
+  server-initialize: /initialize
+  root: D:\basic.com\gin-vue-admin
+  web-table: /view
+  web: /web/src
+  server-service: /service/%s
+  server-request: /model/%s/request/
+  web-api: /api
+  web-form: /view
+  transfer-restart: true
 aws-s3:
-    bucket: xxxxx-10005608
-    region: ap-shanghai
-    endpoint: ""
-    secret-id: your-secret-id
-    secret-key: your-secret-key
-    base-url: https://gin.vue.admin
-    path-prefix: srm
-    s3-force-path-style: false
-    disable-ssl: false
+  bucket: xxxxx-10005608
+  region: ap-shanghai
+  endpoint: ""
+  secret-id: your-secret-id
+  secret-key: your-secret-key
+  base-url: https://gin.vue.admin
+  path-prefix: srm
+  s3-force-path-style: false
+  disable-ssl: false
 captcha:
-    key-long: 6
-    img-width: 240
-    img-height: 80
-    open-captcha: 0
-    open-captcha-timeout: 3600
+  key-long: 6
+  img-width: 240
+  img-height: 80
+  open-captcha: 0
+  open-captcha-timeout: 3600
 cors:
-    mode: strict-whitelist
-    whitelist:
-        - allow-origin: example1.com
-          allow-methods: POST, GET
-          allow-headers: Content-Type,AccessToken,X-CSRF-Token, Authorization, Token,X-Token,X-User-Id
-          expose-headers: Content-Length, Access-Control-Allow-Origin, Access-Control-Allow-Headers, Content-Type
-          allow-credentials: true
-        - allow-origin: example2.com
-          allow-methods: GET, POST
-          allow-headers: content-type
-          expose-headers: Content-Length, Access-Control-Allow-Origin, Access-Control-Allow-Headers, Content-Type
-          allow-credentials: true
+  mode: strict-whitelist
+  whitelist:
+    - allow-origin: example1.com
+      allow-methods: POST, GET
+      allow-headers: Content-Type,AccessToken,X-CSRF-Token, Authorization, Token,X-Token,X-User-Id
+      expose-headers: Content-Length, Access-Control-Allow-Origin, Access-Control-Allow-Headers, Content-Type
+      allow-credentials: true
+    - allow-origin: example2.com
+      allow-methods: GET, POST
+      allow-headers: content-type
+      expose-headers: Content-Length, Access-Control-Allow-Origin, Access-Control-Allow-Headers, Content-Type
+      allow-credentials: true
 db-list:
-    - type: ""
-      alias-name: ""
-      prefix: ""
-      port: ""
-      config: ""
-      db-name: ""
-      username: ""
-      password: ""
-      path: ""
-      engine: ""
-      log-mode: ""
-      max-idle-conns: 10
-      max-open-conns: 100
-      singular: false
-      log-zap: false
-      disable: true
+  - type: ""
+    alias-name: ""
+    prefix: ""
+    port: ""
+    config: ""
+    db-name: ""
+    username: ""
+    password: ""
+    path: ""
+    engine: ""
+    log-mode: ""
+    max-idle-conns: 10
+    max-open-conns: 100
+    singular: false
+    log-zap: false
+    disable: true
 email:
-    to: xxx@qq.com
-    from: xxx@163.com
-    host: smtp.163.com
-    secret: xxx
-    nickname: test
-    port: 465
-    is-ssl: true
+  to: xxx@qq.com
+  from: xxx@163.com
+  host: smtp.163.com
+  secret: xxx
+  nickname: test
+  port: 465
+  is-ssl: true
 excel:
-    dir: ./resource/excel/
+  dir: ./resource/excel/
 hua-wei-obs:
-    path: you-path
-    bucket: you-bucket
-    endpoint: you-endpoint
-    access-key: you-access-key
-    secret-key: you-secret-key
+  path: you-path
+  bucket: you-bucket
+  endpoint: you-endpoint
+  access-key: you-access-key
+  secret-key: you-secret-key
 jwt:
-    signing-key: 3791a68f-f9e6-40db-8095-31877f22c9c7
-    expires-time: 7d
-    buffer-time: 1d
-    issuer: qmPlus
+  signing-key: 3791a68f-f9e6-40db-8095-31877f22c9c7
+  expires-time: 7d
+  buffer-time: 1d
+  issuer: qmPlus
 local:
-    path: uploads/file
-    store-path: uploads/file
+  path: uploads/file
+  store-path: uploads/file
 mssql:
-    prefix: ""
-    port: ""
-    config: ""
-    db-name: ""
-    username: ""
-    password: ""
-    path: ""
-    engine: ""
-    log-mode: ""
-    max-idle-conns: 10
-    max-open-conns: 100
-    singular: false
-    log-zap: false
+  prefix: ""
+  port: ""
+  config: ""
+  db-name: ""
+  username: ""
+  password: ""
+  path: ""
+  engine: ""
+  log-mode: ""
+  max-idle-conns: 10
+  max-open-conns: 100
+  singular: false
+  log-zap: false
 mysql:
-    prefix: ""
-    port: "3306"
-    config: charset=utf8mb4&parseTime=True&loc=Local
-    db-name: aps_srm
-    username: root
-    password: c++java123
-    path: 192.168.20.119
-    engine: ""
-    log-mode: error
-    max-idle-conns: 10
-    max-open-conns: 100
-    singular: false
-    log-zap: false
+  prefix: ""
+  port: "3306"
+  config: charset=utf8mb4&parseTime=True&loc=Local
+  db-name: aps_srm
+  username: root
+  password: c++java123
+  path: 192.168.20.119
+  engine: ""
+  log-mode: error
+  max-idle-conns: 10
+  max-open-conns: 100
+  singular: false
+  log-zap: false
 oracle:
-    prefix: ""
-    port: ""
-    config: ""
-    db-name: ""
-    username: ""
-    password: ""
-    path: ""
-    engine: ""
-    log-mode: ""
-    max-idle-conns: 10
-    max-open-conns: 100
-    singular: false
-    log-zap: false
+  prefix: ""
+  port: ""
+  config: ""
+  db-name: ""
+  username: ""
+  password: ""
+  path: ""
+  engine: ""
+  log-mode: ""
+  max-idle-conns: 10
+  max-open-conns: 100
+  singular: false
+  log-zap: false
 pgsql:
-    prefix: ""
-    port: ""
-    config: ""
-    db-name: ""
-    username: ""
-    password: ""
-    path: ""
-    engine: ""
-    log-mode: ""
-    max-idle-conns: 10
-    max-open-conns: 100
-    singular: false
-    log-zap: false
+  prefix: ""
+  port: ""
+  config: ""
+  db-name: ""
+  username: ""
+  password: ""
+  path: ""
+  engine: ""
+  log-mode: ""
+  max-idle-conns: 10
+  max-open-conns: 100
+  singular: false
+  log-zap: false
 qiniu:
-    zone: ZoneHuaDong
-    bucket: ""
-    img-path: ""
-    access-key: ""
-    secret-key: ""
-    use-https: false
-    use-cdn-domains: false
+  zone: ZoneHuaDong
+  bucket: ""
+  img-path: ""
+  access-key: ""
+  secret-key: ""
+  use-https: false
+  use-cdn-domains: false
 redis:
-    addr: 127.0.0.1:6379
-    password: ""
-    db: 0
+  addr: 127.0.0.1:6379
+  password: ""
+  db: 0
 sqlite:
-    prefix: ""
-    port: ""
-    config: ""
-    db-name: ""
-    username: ""
-    password: ""
-    path: ""
-    engine: ""
-    log-mode: ""
-    max-idle-conns: 10
-    max-open-conns: 100
-    singular: false
-    log-zap: false
+  prefix: ""
+  port: ""
+  config: ""
+  db-name: ""
+  username: ""
+  password: ""
+  path: ""
+  engine: ""
+  log-mode: ""
+  max-idle-conns: 10
+  max-open-conns: 100
+  singular: false
+  log-zap: false
 system:
-    env: public
-    db-type: mysql
-    oss-type: local
-    router-prefix: "/api"
-    addr: 8889
-    iplimit-count: 15000
-    iplimit-time: 3600
-    use-multipoint: false
-    use-redis: false
+  env: public
+  db-type: mysql
+  oss-type: local
+  router-prefix: "/api"
+  addr: 8889
+  iplimit-count: 15000
+  iplimit-time: 3600
+  use-multipoint: false
+  use-redis: false
+  grpc-url: 192.168.20.119:9091
 tencent-cos:
-    bucket: xxxxx-10005608
-    region: ap-shanghai
-    secret-id: your-secret-id
-    secret-key: your-secret-key
-    base-url: https://gin.vue.admin
-    path-prefix: srm
+  bucket: xxxxx-10005608
+  region: ap-shanghai
+  secret-id: your-secret-id
+  secret-key: your-secret-key
+  base-url: https://gin.vue.admin
+  path-prefix: srm
 timer:
-    spec: '@daily'
-    detail:
-        - tableName: sys_operation_records
-          compareField: created_at
-          interval: 2160h
-        - tableName: jwt_blacklists
-          compareField: created_at
-          interval: 168h
-    start: true
-    with_seconds: false
+  spec: '@daily'
+  detail:
+    - tableName: sys_operation_records
+      compareField: created_at
+      interval: 2160h
+    - tableName: jwt_blacklists
+      compareField: created_at
+      interval: 168h
+  start: true
+  with_seconds: false
 zap:
-    level: info
-    prefix: '[srm]'
-    format: console
-    director: log
-    encode-level: LowercaseColorLevelEncoder
-    stacktrace-key: stacktrace
-    max-age: 0
-    show-line: true
-    log-in-console: true
+  level: info
+  prefix: '[srm]'
+  format: console
+  director: log
+  encode-level: LowercaseColorLevelEncoder
+  stacktrace-key: stacktrace
+  max-age: 0
+  show-line: true
+  log-in-console: true
diff --git a/config/system.go b/config/system.go
index bb1cfce..6f35d0a 100644
--- a/config/system.go
+++ b/config/system.go
@@ -10,4 +10,5 @@
 	LimitTimeIP   int    `mapstructure:"iplimit-time" json:"iplimit-time" yaml:"iplimit-time"`
 	UseMultipoint bool   `mapstructure:"use-multipoint" json:"use-multipoint" yaml:"use-multipoint"` // 澶氱偣鐧诲綍鎷︽埅
 	UseRedis      bool   `mapstructure:"use-redis" json:"use-redis" yaml:"use-redis"`                // 浣跨敤redis
+	GrpcUrl       string `mapstructure:"grpc-url" json:"grpc-url" yaml:"grpc-url"`                   // grpc鏈嶅姟鍦板潃
 }
diff --git a/docs/docs.go b/docs/docs.go
index 6290ec0..3475348 100644
--- a/docs/docs.go
+++ b/docs/docs.go
@@ -3912,6 +3912,119 @@
                 }
             }
         },
+        "/p/getProductListFromGrpc": {
+            "get": {
+                "security": [
+                    {
+                        "ApiKeyAuth": []
+                    }
+                ],
+                "consumes": [
+                    "application/json"
+                ],
+                "produces": [
+                    "application/json"
+                ],
+                "tags": [
+                    "Product"
+                ],
+                "summary": "鍒嗛〉鑾峰彇Product鍒楄〃",
+                "parameters": [
+                    {
+                        "type": "integer",
+                        "name": "deliveryTime",
+                        "in": "query"
+                    },
+                    {
+                        "type": "string",
+                        "name": "endCreatedAt",
+                        "in": "query"
+                    },
+                    {
+                        "type": "integer",
+                        "description": "涓婚敭ID",
+                        "name": "id",
+                        "in": "query"
+                    },
+                    {
+                        "type": "string",
+                        "description": "鍏抽敭瀛�",
+                        "name": "keyword",
+                        "in": "query"
+                    },
+                    {
+                        "type": "integer",
+                        "name": "maximumStock",
+                        "in": "query"
+                    },
+                    {
+                        "type": "integer",
+                        "name": "minimumStock",
+                        "in": "query"
+                    },
+                    {
+                        "type": "string",
+                        "name": "name",
+                        "in": "query"
+                    },
+                    {
+                        "type": "string",
+                        "name": "number",
+                        "in": "query"
+                    },
+                    {
+                        "type": "integer",
+                        "description": "椤电爜",
+                        "name": "page",
+                        "in": "query"
+                    },
+                    {
+                        "type": "integer",
+                        "description": "姣忛〉澶у皬",
+                        "name": "pageSize",
+                        "in": "query"
+                    },
+                    {
+                        "type": "string",
+                        "name": "productType",
+                        "in": "query"
+                    },
+                    {
+                        "type": "number",
+                        "name": "purchasePrice",
+                        "in": "query"
+                    },
+                    {
+                        "type": "string",
+                        "name": "remark",
+                        "in": "query"
+                    },
+                    {
+                        "type": "integer",
+                        "name": "shippingDuration",
+                        "in": "query"
+                    },
+                    {
+                        "type": "string",
+                        "name": "startCreatedAt",
+                        "in": "query"
+                    },
+                    {
+                        "type": "string",
+                        "name": "unit",
+                        "in": "query"
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "{\"success\":true,\"data\":{},\"msg\":\"鑾峰彇鎴愬姛\"}",
+                        "schema": {
+                            "type": "string"
+                        }
+                    }
+                }
+            }
+        },
         "/p/updateProduct": {
             "put": {
                 "security": [
@@ -7078,6 +7191,10 @@
                     "description": "鐜鍊�",
                     "type": "string"
                 },
+                "grpc-url": {
+                    "description": "grpc鏈嶅姟鍦板潃",
+                    "type": "string"
+                },
                 "iplimit-count": {
                     "type": "integer"
                 },
diff --git a/docs/swagger.json b/docs/swagger.json
index b0e64f4..dbe95a6 100644
--- a/docs/swagger.json
+++ b/docs/swagger.json
@@ -3903,6 +3903,119 @@
                 }
             }
         },
+        "/p/getProductListFromGrpc": {
+            "get": {
+                "security": [
+                    {
+                        "ApiKeyAuth": []
+                    }
+                ],
+                "consumes": [
+                    "application/json"
+                ],
+                "produces": [
+                    "application/json"
+                ],
+                "tags": [
+                    "Product"
+                ],
+                "summary": "鍒嗛〉鑾峰彇Product鍒楄〃",
+                "parameters": [
+                    {
+                        "type": "integer",
+                        "name": "deliveryTime",
+                        "in": "query"
+                    },
+                    {
+                        "type": "string",
+                        "name": "endCreatedAt",
+                        "in": "query"
+                    },
+                    {
+                        "type": "integer",
+                        "description": "涓婚敭ID",
+                        "name": "id",
+                        "in": "query"
+                    },
+                    {
+                        "type": "string",
+                        "description": "鍏抽敭瀛�",
+                        "name": "keyword",
+                        "in": "query"
+                    },
+                    {
+                        "type": "integer",
+                        "name": "maximumStock",
+                        "in": "query"
+                    },
+                    {
+                        "type": "integer",
+                        "name": "minimumStock",
+                        "in": "query"
+                    },
+                    {
+                        "type": "string",
+                        "name": "name",
+                        "in": "query"
+                    },
+                    {
+                        "type": "string",
+                        "name": "number",
+                        "in": "query"
+                    },
+                    {
+                        "type": "integer",
+                        "description": "椤电爜",
+                        "name": "page",
+                        "in": "query"
+                    },
+                    {
+                        "type": "integer",
+                        "description": "姣忛〉澶у皬",
+                        "name": "pageSize",
+                        "in": "query"
+                    },
+                    {
+                        "type": "string",
+                        "name": "productType",
+                        "in": "query"
+                    },
+                    {
+                        "type": "number",
+                        "name": "purchasePrice",
+                        "in": "query"
+                    },
+                    {
+                        "type": "string",
+                        "name": "remark",
+                        "in": "query"
+                    },
+                    {
+                        "type": "integer",
+                        "name": "shippingDuration",
+                        "in": "query"
+                    },
+                    {
+                        "type": "string",
+                        "name": "startCreatedAt",
+                        "in": "query"
+                    },
+                    {
+                        "type": "string",
+                        "name": "unit",
+                        "in": "query"
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "{\"success\":true,\"data\":{},\"msg\":\"鑾峰彇鎴愬姛\"}",
+                        "schema": {
+                            "type": "string"
+                        }
+                    }
+                }
+            }
+        },
         "/p/updateProduct": {
             "put": {
                 "security": [
@@ -7069,6 +7182,10 @@
                     "description": "鐜鍊�",
                     "type": "string"
                 },
+                "grpc-url": {
+                    "description": "grpc鏈嶅姟鍦板潃",
+                    "type": "string"
+                },
                 "iplimit-count": {
                     "type": "integer"
                 },
diff --git a/docs/swagger.yaml b/docs/swagger.yaml
index 477fa41..6f41570 100644
--- a/docs/swagger.yaml
+++ b/docs/swagger.yaml
@@ -510,6 +510,9 @@
       env:
         description: 鐜鍊�
         type: string
+      grpc-url:
+        description: grpc鏈嶅姟鍦板潃
+        type: string
       iplimit-count:
         type: integer
       iplimit-time:
@@ -3829,6 +3832,75 @@
       summary: 鍒嗛〉鑾峰彇Product鍒楄〃
       tags:
       - Product
+  /p/getProductListFromGrpc:
+    get:
+      consumes:
+      - application/json
+      parameters:
+      - in: query
+        name: deliveryTime
+        type: integer
+      - in: query
+        name: endCreatedAt
+        type: string
+      - description: 涓婚敭ID
+        in: query
+        name: id
+        type: integer
+      - description: 鍏抽敭瀛�
+        in: query
+        name: keyword
+        type: string
+      - in: query
+        name: maximumStock
+        type: integer
+      - in: query
+        name: minimumStock
+        type: integer
+      - in: query
+        name: name
+        type: string
+      - in: query
+        name: number
+        type: string
+      - description: 椤电爜
+        in: query
+        name: page
+        type: integer
+      - description: 姣忛〉澶у皬
+        in: query
+        name: pageSize
+        type: integer
+      - in: query
+        name: productType
+        type: string
+      - in: query
+        name: purchasePrice
+        type: number
+      - in: query
+        name: remark
+        type: string
+      - in: query
+        name: shippingDuration
+        type: integer
+      - in: query
+        name: startCreatedAt
+        type: string
+      - in: query
+        name: unit
+        type: string
+      produces:
+      - application/json
+      responses:
+        "200":
+          description: '{"success":true,"data":{},"msg":"鑾峰彇鎴愬姛"}'
+          schema:
+            type: string
+      security:
+      - ApiKeyAuth: []
+      summary: 鍒嗛〉鑾峰彇Product鍒楄〃
+      tags:
+      - Product
   /p/updateProduct:
     put:
       consumes:
diff --git a/log/2023-08-26/info.log b/log/2023-08-26/info.log
index fb3d226..56fb7bc 100644
--- a/log/2023-08-26/info.log
+++ b/log/2023-08-26/info.log
@@ -10,3 +10,7 @@
 [srm]2023/08/26 - 13:44:25.708	info	D:/basic.com/srm/initialize/router.go:37	register swagger handler
 [srm]2023/08/26 - 13:44:25.729	info	D:/basic.com/srm/initialize/router.go:83	router register success
 [srm]2023/08/26 - 13:44:25.742	info	D:/basic.com/srm/core/server.go:36	server run success on 	{"address": ":8889"}
+[srm]2023/08/26 - 15:04:13.291	info	D:/basic.com/srm/initialize/gorm.go:60	register table success
+[srm]2023/08/26 - 15:04:13.295	info	D:/basic.com/srm/initialize/router.go:37	register swagger handler
+[srm]2023/08/26 - 15:04:13.312	info	D:/basic.com/srm/initialize/router.go:83	router register success
+[srm]2023/08/26 - 15:04:13.324	info	D:/basic.com/srm/core/server.go:36	server run success on 	{"address": ":8889"}
diff --git a/main.go b/main.go
index d3816ec..266e282 100644
--- a/main.go
+++ b/main.go
@@ -2,6 +2,7 @@
 
 import (
 	"go.uber.org/zap"
+	"srm/api/v1/test"
 
 	"srm/core"
 	"srm/global"
@@ -34,5 +35,8 @@
 		db, _ := global.GVA_DB.DB()
 		defer db.Close()
 	}
+
+	go test.InitProductServiceConn()
+
 	core.RunWindowsServer()
 }
diff --git a/router/test/product.go b/router/test/product.go
index 4a98419..d3658b6 100644
--- a/router/test/product.go
+++ b/router/test/product.go
@@ -21,7 +21,8 @@
 		pRouter.PUT("updateProduct", pApi.UpdateProduct)              // 鏇存柊Product
 	}
 	{
-		pRouterWithoutRecord.GET("findProduct", pApi.FindProduct)       // 鏍规嵁ID鑾峰彇Product
-		pRouterWithoutRecord.GET("getProductList", pApi.GetProductList) // 鑾峰彇Product鍒楄〃
+		pRouterWithoutRecord.GET("findProduct", pApi.FindProduct)                       // 鏍规嵁ID鑾峰彇Product
+		pRouterWithoutRecord.GET("getProductList", pApi.GetProductList)                 // 鑾峰彇Product鍒楄〃
+		pRouterWithoutRecord.GET("getProductListFromGrpc", pApi.GetProductListFromGrpc) // 閫氳繃grpc鑾峰彇Product鍒楄〃
 	}
 }

--
Gitblit v1.8.0