Full Code of aliliin/kratos-shop for AI

main d1d5a83aa99d cached
525 files
3.3 MB
885.0k tokens
5872 symbols
1 requests
Download .txt
Showing preview only (3,568K chars total). Download the full file or copy to clipboard to get everything.
Repository: aliliin/kratos-shop
Branch: main
Commit: d1d5a83aa99d
Files: 525
Total size: 3.3 MB

Directory structure:
gitextract_r9kzrcto/

├── .gitignore
├── LICENSE
├── README.md
├── admin/
│   ├── .gitignore
│   ├── Dockerfile
│   ├── LICENSE
│   ├── Makefile
│   ├── api/
│   │   ├── admin/
│   │   │   └── v1/
│   │   │       ├── admin.pb.go
│   │   │       ├── admin.pb.validate.go
│   │   │       ├── admin.proto
│   │   │       ├── admin_grpc.pb.go
│   │   │       ├── admin_http.pb.go
│   │   │       ├── error_reason.pb.go
│   │   │       ├── error_reason.pb.validate.go
│   │   │       ├── error_reason.proto
│   │   │       └── error_reason_errors.pb.go
│   │   └── service/
│   │       └── user/
│   │           └── v1/
│   │               ├── user.pb.go
│   │               ├── user.pb.validate.go
│   │               ├── user.proto
│   │               └── user_grpc.pb.go
│   ├── cmd/
│   │   └── admin/
│   │       ├── main.go
│   │       ├── wire.go
│   │       └── wire_gen.go
│   ├── configs/
│   │   ├── config.yaml
│   │   └── registry.yaml
│   ├── generate.go
│   ├── go.mod
│   ├── go.sum
│   ├── internal/
│   │   ├── biz/
│   │   │   ├── README.md
│   │   │   ├── address.go
│   │   │   ├── biz.go
│   │   │   └── user.go
│   │   ├── conf/
│   │   │   ├── conf.pb.go
│   │   │   └── conf.proto
│   │   ├── data/
│   │   │   ├── README.md
│   │   │   ├── address.go
│   │   │   ├── data.go
│   │   │   └── user.go
│   │   ├── pkg/
│   │   │   ├── captcha/
│   │   │   │   └── captcha.go
│   │   │   └── middleware/
│   │   │       └── auth/
│   │   │           └── auth.go
│   │   ├── server/
│   │   │   ├── http.go
│   │   │   └── server.go
│   │   └── service/
│   │       ├── README.md
│   │       ├── service.go
│   │       └── user.go
│   ├── openapi.yaml
│   └── third_party/
│       ├── README.md
│       ├── errors/
│       │   └── errors.proto
│       ├── google/
│       │   ├── api/
│       │   │   ├── annotations.proto
│       │   │   ├── client.proto
│       │   │   ├── field_behavior.proto
│       │   │   ├── http.proto
│       │   │   └── httpbody.proto
│       │   └── protobuf/
│       │       └── descriptor.proto
│       ├── protoc-gen-openapiv2/
│       │   └── options/
│       │       ├── annotations.proto
│       │       └── openapiv2.proto
│       └── validate/
│           ├── README.md
│           └── validate.proto
├── service/
│   ├── cart/
│   │   ├── .gitignore
│   │   ├── Dockerfile
│   │   ├── LICENSE
│   │   ├── Makefile
│   │   ├── README.md
│   │   ├── api/
│   │   │   └── cart/
│   │   │       └── v1/
│   │   │           ├── cart.pb.go
│   │   │           ├── cart.pb.validate.go
│   │   │           ├── cart.proto
│   │   │           └── cart_grpc.pb.go
│   │   ├── cmd/
│   │   │   └── cart/
│   │   │       ├── main.go
│   │   │       ├── wire.go
│   │   │       └── wire_gen.go
│   │   ├── configs/
│   │   │   ├── config.yaml
│   │   │   └── registry.yaml
│   │   ├── go.mod
│   │   ├── go.sum
│   │   ├── internal/
│   │   │   ├── biz/
│   │   │   │   ├── README.md
│   │   │   │   ├── biz.go
│   │   │   │   └── cart.go
│   │   │   ├── conf/
│   │   │   │   ├── conf.pb.go
│   │   │   │   └── conf.proto
│   │   │   ├── data/
│   │   │   │   ├── README.md
│   │   │   │   ├── cart.go
│   │   │   │   ├── cart_test.go
│   │   │   │   ├── data.go
│   │   │   │   ├── data_suite_test.go
│   │   │   │   └── docker_mysql.go
│   │   │   ├── domain/
│   │   │   │   └── cart.go
│   │   │   ├── server/
│   │   │   │   ├── grpc.go
│   │   │   │   └── server.go
│   │   │   └── service/
│   │   │       ├── README.md
│   │   │       ├── cart.go
│   │   │       └── service.go
│   │   ├── openapi.yaml
│   │   └── third_party/
│   │       ├── README.md
│   │       ├── errors/
│   │       │   └── errors.proto
│   │       ├── google/
│   │       │   ├── api/
│   │       │   │   ├── annotations.proto
│   │       │   │   ├── client.proto
│   │       │   │   ├── field_behavior.proto
│   │       │   │   ├── http.proto
│   │       │   │   └── httpbody.proto
│   │       │   └── protobuf/
│   │       │       ├── any.proto
│   │       │       ├── api.proto
│   │       │       ├── compiler/
│   │       │       │   └── plugin.proto
│   │       │       ├── descriptor.proto
│   │       │       ├── duration.proto
│   │       │       ├── empty.proto
│   │       │       ├── field_mask.proto
│   │       │       ├── source_context.proto
│   │       │       ├── struct.proto
│   │       │       ├── timestamp.proto
│   │       │       ├── type.proto
│   │       │       └── wrappers.proto
│   │       ├── openapi/
│   │       │   └── v3/
│   │       │       ├── annotations.proto
│   │       │       └── openapi.proto
│   │       └── validate/
│   │           ├── README.md
│   │           └── validate.proto
│   ├── goods/
│   │   ├── Dockerfile
│   │   ├── LICENSE
│   │   ├── Makefile
│   │   ├── README.md
│   │   ├── api/
│   │   │   └── goods/
│   │   │       └── v1/
│   │   │           ├── error_reason.pb.go
│   │   │           ├── error_reason.pb.validate.go
│   │   │           ├── error_reason.proto
│   │   │           ├── goods.pb.go
│   │   │           ├── goods.pb.validate.go
│   │   │           ├── goods.proto
│   │   │           └── goods_grpc.pb.go
│   │   ├── cmd/
│   │   │   └── goods/
│   │   │       ├── main.go
│   │   │       ├── wire.go
│   │   │       └── wire_gen.go
│   │   ├── configs/
│   │   │   ├── config.yaml
│   │   │   └── registry.yaml
│   │   ├── generate.go
│   │   ├── go.mod
│   │   ├── go.sum
│   │   ├── internal/
│   │   │   ├── biz/
│   │   │   │   ├── README.md
│   │   │   │   ├── biz.go
│   │   │   │   ├── brand.go
│   │   │   │   ├── category.go
│   │   │   │   ├── es_goods.go
│   │   │   │   ├── goods.go
│   │   │   │   ├── goods_attr.go
│   │   │   │   ├── goods_image.go
│   │   │   │   ├── goods_sku.go
│   │   │   │   ├── goods_type.go
│   │   │   │   ├── inventory.go
│   │   │   │   └── specifications.go
│   │   │   ├── conf/
│   │   │   │   ├── conf.pb.go
│   │   │   │   └── conf.proto
│   │   │   ├── data/
│   │   │   │   ├── README.md
│   │   │   │   ├── base.go
│   │   │   │   ├── brand.go
│   │   │   │   ├── category.go
│   │   │   │   ├── data.go
│   │   │   │   ├── entity/
│   │   │   │   │   └── goods.go
│   │   │   │   ├── es_goods.go
│   │   │   │   ├── good_type.go
│   │   │   │   ├── goods.go
│   │   │   │   ├── goods_attr.go
│   │   │   │   ├── goods_image.go
│   │   │   │   ├── goods_sku.go
│   │   │   │   ├── inventory.go
│   │   │   │   └── specifications.go
│   │   │   ├── domain/
│   │   │   │   ├── brand.go
│   │   │   │   ├── es_goods.go
│   │   │   │   ├── goods.go
│   │   │   │   ├── goods_attr.go
│   │   │   │   ├── goods_sku.go
│   │   │   │   ├── goods_type.go
│   │   │   │   ├── inventory.go
│   │   │   │   └── specification.go
│   │   │   ├── server/
│   │   │   │   ├── grpc.go
│   │   │   │   └── server.go
│   │   │   └── service/
│   │   │       ├── README.md
│   │   │       ├── brand.go
│   │   │       ├── category.go
│   │   │       ├── goods.go
│   │   │       ├── goods_attr.go
│   │   │       ├── goods_type.go
│   │   │       ├── service.go
│   │   │       └── specifications.go
│   │   ├── openapi.yaml
│   │   └── third_party/
│   │       ├── README.md
│   │       ├── errors/
│   │       │   └── errors.proto
│   │       ├── google/
│   │       │   ├── api/
│   │       │   │   ├── annotations.proto
│   │       │   │   ├── client.proto
│   │       │   │   ├── field_behavior.proto
│   │       │   │   ├── http.proto
│   │       │   │   └── httpbody.proto
│   │       │   └── protobuf/
│   │       │       ├── any.proto
│   │       │       ├── api.proto
│   │       │       ├── compiler/
│   │       │       │   └── plugin.proto
│   │       │       ├── descriptor.proto
│   │       │       ├── duration.proto
│   │       │       ├── empty.proto
│   │       │       ├── field_mask.proto
│   │       │       ├── source_context.proto
│   │       │       ├── struct.proto
│   │       │       ├── timestamp.proto
│   │       │       ├── type.proto
│   │       │       └── wrappers.proto
│   │       ├── openapi/
│   │       │   └── v3/
│   │       │       ├── annotations.proto
│   │       │       └── openapi.proto
│   │       └── validate/
│   │           ├── README.md
│   │           └── validate.proto
│   ├── order/
│   │   ├── .gitignore
│   │   ├── Dockerfile
│   │   ├── LICENSE
│   │   ├── Makefile
│   │   ├── api/
│   │   │   ├── cart/
│   │   │   │   └── v1/
│   │   │   │       ├── cart.pb.go
│   │   │   │       ├── cart.pb.validate.go
│   │   │   │       ├── cart.proto
│   │   │   │       └── cart_grpc.pb.go
│   │   │   ├── goods/
│   │   │   │   └── v1/
│   │   │   │       ├── error_reason.pb.go
│   │   │   │       ├── error_reason.pb.validate.go
│   │   │   │       ├── error_reason.proto
│   │   │   │       ├── goods.pb.go
│   │   │   │       ├── goods.pb.validate.go
│   │   │   │       ├── goods.proto
│   │   │   │       └── goods_grpc.pb.go
│   │   │   ├── order/
│   │   │   │   └── v1/
│   │   │   │       ├── error_reason.pb.go
│   │   │   │       ├── error_reason.pb.validate.go
│   │   │   │       ├── error_reason.proto
│   │   │   │       ├── order.pb.go
│   │   │   │       ├── order.pb.validate.go
│   │   │   │       ├── order.proto
│   │   │   │       └── order_grpc.pb.go
│   │   │   └── user/
│   │   │       └── v1/
│   │   │           ├── user.pb.go
│   │   │           ├── user.pb.validate.go
│   │   │           ├── user.proto
│   │   │           └── user_grpc.pb.go
│   │   ├── cmd/
│   │   │   └── order/
│   │   │       ├── main.go
│   │   │       ├── wire.go
│   │   │       └── wire_gen.go
│   │   ├── configs/
│   │   │   ├── config.yaml
│   │   │   └── registry.yaml
│   │   ├── go.mod
│   │   ├── go.sum
│   │   ├── internal/
│   │   │   ├── biz/
│   │   │   │   ├── README.md
│   │   │   │   ├── biz.go
│   │   │   │   └── order.go
│   │   │   ├── conf/
│   │   │   │   ├── conf.pb.go
│   │   │   │   └── conf.proto
│   │   │   ├── data/
│   │   │   │   ├── data.go
│   │   │   │   ├── data_suite_test.go
│   │   │   │   ├── docker_mysql.go
│   │   │   │   ├── order.go
│   │   │   │   ├── orderaddress.go
│   │   │   │   ├── ordergoods.go
│   │   │   │   └── orderpay.go
│   │   │   ├── domain/
│   │   │   │   ├── order.go
│   │   │   │   └── orderaddress.go
│   │   │   ├── mocks/
│   │   │   │   └── mrepo/
│   │   │   │       └── order.go
│   │   │   ├── server/
│   │   │   │   ├── grpc.go
│   │   │   │   └── server.go
│   │   │   └── service/
│   │   │       ├── README.md
│   │   │       ├── order.go
│   │   │       └── service.go
│   │   ├── openapi.yaml
│   │   └── third_party/
│   │       ├── README.md
│   │       ├── errors/
│   │       │   └── errors.proto
│   │       ├── google/
│   │       │   ├── api/
│   │       │   │   ├── annotations.proto
│   │       │   │   ├── client.proto
│   │       │   │   ├── field_behavior.proto
│   │       │   │   ├── http.proto
│   │       │   │   └── httpbody.proto
│   │       │   └── protobuf/
│   │       │       ├── any.proto
│   │       │       ├── api.proto
│   │       │       ├── compiler/
│   │       │       │   └── plugin.proto
│   │       │       ├── descriptor.proto
│   │       │       ├── duration.proto
│   │       │       ├── empty.proto
│   │       │       ├── field_mask.proto
│   │       │       ├── source_context.proto
│   │       │       ├── struct.proto
│   │       │       ├── timestamp.proto
│   │       │       ├── type.proto
│   │       │       └── wrappers.proto
│   │       ├── openapi/
│   │       │   └── v3/
│   │       │       ├── annotations.proto
│   │       │       └── openapi.proto
│   │       └── validate/
│   │           ├── README.md
│   │           └── validate.proto
│   └── user/
│       ├── .gitignore
│       ├── Dockerfile
│       ├── LICENSE
│       ├── Makefile
│       ├── README.md
│       ├── api/
│       │   └── user/
│       │       └── v1/
│       │           ├── error_reason.pb.go
│       │           ├── error_reason.pb.validate.go
│       │           ├── error_reason.proto
│       │           ├── error_reason_errors.pb.go
│       │           ├── user.pb.go
│       │           ├── user.pb.validate.go
│       │           ├── user.proto
│       │           └── user_grpc.pb.go
│       ├── cmd/
│       │   └── user/
│       │       ├── main.go
│       │       ├── wire.go
│       │       └── wire_gen.go
│       ├── configs/
│       │   ├── config.yaml
│       │   └── registry.yaml
│       ├── generate.go
│       ├── go.mod
│       ├── go.sum
│       ├── internal/
│       │   ├── biz/
│       │   │   ├── README.md
│       │   │   ├── address.go
│       │   │   ├── address_test.go
│       │   │   ├── biz.go
│       │   │   ├── biz_suite_test.go
│       │   │   ├── user.go
│       │   │   └── user_test.go
│       │   ├── conf/
│       │   │   ├── conf.pb.go
│       │   │   └── conf.proto
│       │   ├── data/
│       │   │   ├── README.md
│       │   │   ├── address.go
│       │   │   ├── address_test.go
│       │   │   ├── data.go
│       │   │   ├── data_suite_test.go
│       │   │   ├── docker_mysql.go
│       │   │   ├── entity/
│       │   │   │   └── user.go
│       │   │   ├── user.go
│       │   │   └── user_test.go
│       │   ├── domain/
│       │   │   └── address.go
│       │   ├── mocks/
│       │   │   ├── mrepo/
│       │   │   │   ├── address.go
│       │   │   │   └── user.go
│       │   │   └── usecase/
│       │   │       └── biz.go
│       │   ├── server/
│       │   │   ├── grpc.go
│       │   │   └── server.go
│       │   ├── service/
│       │   │   ├── README.md
│       │   │   ├── address.go
│       │   │   ├── service.go
│       │   │   └── user.go
│       │   └── testdata/
│       │       └── user.go
│       ├── openapi.yaml
│       ├── test/
│       │   └── user.go
│       └── third_party/
│           ├── README.md
│           ├── errors/
│           │   └── errors.proto
│           ├── google/
│           │   ├── api/
│           │   │   ├── annotations.proto
│           │   │   ├── client.proto
│           │   │   ├── field_behavior.proto
│           │   │   ├── http.proto
│           │   │   └── httpbody.proto
│           │   └── protobuf/
│           │       ├── any.proto
│           │       ├── api.proto
│           │       ├── compiler/
│           │       │   └── plugin.proto
│           │       ├── descriptor.proto
│           │       ├── duration.proto
│           │       ├── empty.proto
│           │       ├── field_mask.proto
│           │       ├── source_context.proto
│           │       ├── struct.proto
│           │       ├── timestamp.proto
│           │       ├── type.proto
│           │       └── wrappers.proto
│           ├── openapi/
│           │   └── v3/
│           │       ├── annotations.proto
│           │       └── openapi.proto
│           └── validate/
│               ├── README.md
│               └── validate.proto
├── shop/
│   ├── .gitignore
│   ├── Dockerfile
│   ├── LICENSE
│   ├── Makefile
│   ├── README.md
│   ├── api/
│   │   ├── service/
│   │   │   └── user/
│   │   │       └── v1/
│   │   │           ├── user.pb.go
│   │   │           ├── user.pb.validate.go
│   │   │           ├── user.proto
│   │   │           └── user_grpc.pb.go
│   │   └── shop/
│   │       └── v1/
│   │           ├── error_reason.pb.go
│   │           ├── error_reason.pb.validate.go
│   │           ├── error_reason.proto
│   │           ├── error_reason_errors.pb.go
│   │           ├── shop.pb.go
│   │           ├── shop.pb.validate.go
│   │           ├── shop.proto
│   │           ├── shop_grpc.pb.go
│   │           └── shop_http.pb.go
│   ├── cmd/
│   │   └── shop/
│   │       ├── main.go
│   │       ├── wire.go
│   │       └── wire_gen.go
│   ├── configs/
│   │   ├── config.yaml
│   │   └── registry.yaml
│   ├── generate.go
│   ├── go.mod
│   ├── go.sum
│   ├── internal/
│   │   ├── biz/
│   │   │   ├── README.md
│   │   │   ├── address.go
│   │   │   ├── biz.go
│   │   │   └── user.go
│   │   ├── conf/
│   │   │   ├── conf.pb.go
│   │   │   └── conf.proto
│   │   ├── data/
│   │   │   ├── README.md
│   │   │   ├── address.go
│   │   │   ├── data.go
│   │   │   └── user.go
│   │   ├── pkg/
│   │   │   ├── captcha/
│   │   │   │   └── captcha.go
│   │   │   └── middleware/
│   │   │       └── auth/
│   │   │           └── auth.go
│   │   ├── server/
│   │   │   ├── grpc.go
│   │   │   ├── http.go
│   │   │   └── server.go
│   │   └── service/
│   │       ├── README.md
│   │       ├── service.go
│   │       └── user.go
│   ├── openapi.yaml
│   └── third_party/
│       ├── README.md
│       ├── errors/
│       │   └── errors.proto
│       ├── google/
│       │   ├── api/
│       │   │   ├── annotations.proto
│       │   │   ├── client.proto
│       │   │   ├── field_behavior.proto
│       │   │   ├── http.proto
│       │   │   └── httpbody.proto
│       │   └── protobuf/
│       │       └── descriptor.proto
│       ├── protoc-gen-openapiv2/
│       │   └── options/
│       │       ├── annotations.proto
│       │       └── openapiv2.proto
│       └── validate/
│           ├── README.md
│           └── validate.proto
└── web/
    └── admin/
        ├── config/
        │   ├── config.dev.js
        │   ├── config.js
        │   ├── defaultSettings.js
        │   ├── oneapi.json
        │   ├── proxy.js
        │   └── routes.js
        ├── jest.config.js
        ├── jsconfig.json
        ├── package.json
        ├── public/
        │   └── CNAME
        ├── src/
        │   ├── access.js
        │   ├── app.jsx
        │   ├── components/
        │   │   ├── Footer/
        │   │   │   └── index.jsx
        │   │   ├── HeaderDropdown/
        │   │   │   ├── index.jsx
        │   │   │   └── index.less
        │   │   ├── HeaderSearch/
        │   │   │   ├── index.jsx
        │   │   │   └── index.less
        │   │   ├── NoticeIcon/
        │   │   │   ├── NoticeIcon.jsx
        │   │   │   ├── NoticeList.jsx
        │   │   │   ├── NoticeList.less
        │   │   │   ├── index.jsx
        │   │   │   └── index.less
        │   │   ├── RightContent/
        │   │   │   ├── AvatarDropdown.jsx
        │   │   │   ├── index.jsx
        │   │   │   └── index.less
        │   │   └── index.md
        │   ├── e2e/
        │   │   └── baseLayout.e2e.spec.js
        │   ├── global.jsx
        │   ├── global.less
        │   ├── locales/
        │   │   ├── bn-BD/
        │   │   │   ├── component.js
        │   │   │   ├── globalHeader.js
        │   │   │   ├── menu.js
        │   │   │   ├── pages.js
        │   │   │   ├── pwa.js
        │   │   │   ├── settingDrawer.js
        │   │   │   └── settings.js
        │   │   ├── bn-BD.js
        │   │   ├── en-US/
        │   │   │   ├── component.js
        │   │   │   ├── globalHeader.js
        │   │   │   ├── menu.js
        │   │   │   ├── pages.js
        │   │   │   ├── pwa.js
        │   │   │   ├── settingDrawer.js
        │   │   │   └── settings.js
        │   │   ├── en-US.js
        │   │   ├── fa-IR/
        │   │   │   ├── component.js
        │   │   │   ├── globalHeader.js
        │   │   │   ├── menu.js
        │   │   │   ├── pages.js
        │   │   │   ├── pwa.js
        │   │   │   ├── settingDrawer.js
        │   │   │   └── settings.js
        │   │   ├── fa-IR.js
        │   │   ├── id-ID/
        │   │   │   ├── component.js
        │   │   │   ├── globalHeader.js
        │   │   │   ├── menu.js
        │   │   │   ├── pages.js
        │   │   │   ├── pwa.js
        │   │   │   ├── settingDrawer.js
        │   │   │   └── settings.js
        │   │   ├── id-ID.js
        │   │   ├── ja-JP/
        │   │   │   ├── component.js
        │   │   │   ├── globalHeader.js
        │   │   │   ├── menu.js
        │   │   │   ├── pages.js
        │   │   │   ├── pwa.js
        │   │   │   ├── settingDrawer.js
        │   │   │   └── settings.js
        │   │   ├── ja-JP.js
        │   │   ├── pt-BR/
        │   │   │   ├── component.js
        │   │   │   ├── globalHeader.js
        │   │   │   ├── menu.js
        │   │   │   ├── pages.js
        │   │   │   ├── pwa.js
        │   │   │   ├── settingDrawer.js
        │   │   │   └── settings.js
        │   │   ├── pt-BR.js
        │   │   ├── zh-CN/
        │   │   │   ├── component.js
        │   │   │   ├── globalHeader.js
        │   │   │   ├── menu.js
        │   │   │   ├── pages.js
        │   │   │   ├── pwa.js
        │   │   │   ├── settingDrawer.js
        │   │   │   └── settings.js
        │   │   ├── zh-CN.js
        │   │   ├── zh-TW/
        │   │   │   ├── component.js
        │   │   │   ├── globalHeader.js
        │   │   │   ├── menu.js
        │   │   │   ├── pwa.js
        │   │   │   ├── settingDrawer.js
        │   │   │   └── settings.js
        │   │   └── zh-TW.js
        │   ├── manifest.json
        │   ├── pages/
        │   │   ├── 404.jsx
        │   │   ├── Admin.jsx
        │   │   ├── TableList/
        │   │   │   ├── components/
        │   │   │   │   └── UpdateForm.jsx
        │   │   │   └── index.jsx
        │   │   ├── Welcome.jsx
        │   │   ├── Welcome.less
        │   │   ├── document.ejs
        │   │   └── user/
        │   │       └── Login/
        │   │           ├── index.jsx
        │   │           └── index.less
        │   ├── service-worker.js
        │   └── services/
        │       ├── ant-design-pro/
        │       │   ├── api.js
        │       │   ├── index.js
        │       │   └── login.js
        │       └── swagger/
        │           ├── index.js
        │           ├── pet.js
        │           ├── store.js
        │           └── user.js
        └── tests/
            ├── run-tests.js
            └── setupTests.js

================================================
FILE CONTENTS
================================================

================================================
FILE: .gitignore
================================================
.idea/

================================================
FILE: LICENSE
================================================
MIT License

Copyright (c) 2022 高永立

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.


================================================
FILE: README.md
================================================
# kratos-shop
kratos 框架写商品微服务

本项目是一个使用 Kratos 框架创建的很简单的微服务商城项目。
> 注: 本项目中但凡 kratos 提供包,就不会自己封装第三方的包。

主要是为了学习 kratos 如何使用,尤其各种中间件之间的调用,包括微服务的一些技术点。

项目具体目录结构初步设计如下:

```
|-- kratos-shop
    |-- service
        |-- user // 用户服务 grpc
        |-- goods // 商品服务 grpc
        |-- cart // 购物车服务 grpc
        |-- order // 订单服务 grpc
        |-- inventory // 库存服务服务 grpc
    |-- shop // shop 商城服务 http (后期会考虑把订单单独拆出来)
        ├── api  // 商城 api
        │   ├── service
        │   │   └── user 
        │   │       └── v1 // 用户服务的 proto
        │   │   └── goods
        │   │       └── v1 // 商品服务的 proto
        │   │           
        │   └── shop
        │       └── v1
        │           ├── error_reason.proto 
        │           ├── shop.proto
        │── cmd 
        │── internal
        │.....  
    |-- admin // 后端管理系统 web 
```


* 有任何建议,请扫码添加我微信进行交流。

![扫码提建议](https://cdn.jsdelivr.net/gh/aliliin/blog-image@main/uPic/扫码_搜索联合传播样式-白色版.png)





================================================
FILE: admin/.gitignore
================================================
# Reference https://github.com/github/gitignore/blob/master/Go.gitignore
# Binaries for programs and plugins
*.exe
*.exe~
*.dll
*.so
*.dylib

# Test binary, built with `go test -c`
*.test

# Output of the go coverage tool, specifically when used with LiteIDE
*.out

# Dependency directories (remove the comment below to include it)
vendor/

# Compiled Object files, Static and Dynamic libs (Shared Objects)
*.o
*.a
*.so

# OS General
Thumbs.db
.DS_Store

# project
*.cert
*.key
*.log
bin/

# Develop tools
.vscode/
.idea/
*.swp


================================================
FILE: admin/Dockerfile
================================================
FROM golang:1.16 AS builder

COPY . /src
WORKDIR /src

RUN GOPROXY=https://goproxy.cn make build

FROM debian:stable-slim

RUN apt-get update && apt-get install -y --no-install-recommends \
		ca-certificates  \
        netbase \
        && rm -rf /var/lib/apt/lists/ \
        && apt-get autoremove -y && apt-get autoclean -y

COPY --from=builder /src/bin /app

WORKDIR /app

EXPOSE 8000
EXPOSE 9000
VOLUME /data/conf

CMD ["./server", "-conf", "/data/conf"]


================================================
FILE: admin/LICENSE
================================================
MIT License

Copyright (c) 2020 go-kratos

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.


================================================
FILE: admin/Makefile
================================================
GOPATH:=$(shell go env GOPATH)
VERSION=$(shell git describe --tags --always)
INTERNAL_PROTO_FILES=$(shell find internal -name *.proto)
API_PROTO_FILES=$(shell find api -name *.proto)

.PHONY: init
# init env
init:
	go install google.golang.org/protobuf/cmd/protoc-gen-go@latest
	go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest
	go install github.com/go-kratos/kratos/cmd/kratos/v2@latest
	go install github.com/go-kratos/kratos/cmd/protoc-gen-go-http/v2@latest
	go install github.com/go-kratos/kratos/cmd/protoc-gen-go-errors/v2@latest
	go install github.com/google/gnostic/cmd/protoc-gen-openapi@v0.6.1

.PHONY: errors
# generate errors code
errors:
	protoc --proto_path=. \
               --proto_path=./third_party \
               --go_out=paths=source_relative:. \
               --go-errors_out=paths=source_relative:. \
               $(API_PROTO_FILES)

.PHONY: config
# generate internal proto
config:
	protoc --proto_path=. \
	       --proto_path=./third_party \
 	       --go_out=paths=source_relative:. \
	       $(INTERNAL_PROTO_FILES)

.PHONY: api
# generate api proto
api:
	protoc --proto_path=. \
	       --proto_path=./third_party \
 	       --go_out=paths=source_relative:. \
 	       --go-http_out=paths=source_relative:. \
 	       --go-grpc_out=paths=source_relative:. \
 	       --openapi_out==paths=source_relative:. \
 	       --validate_out=paths=source_relative,lang=go:. \
	       $(API_PROTO_FILES)

.PHONY: build
# build
build:
	mkdir -p bin/ && go build -ldflags "-X main.Version=$(VERSION)" -o ./bin/ ./...

.PHONY: generate
# generate
generate:
	go generate ./...

# wire
wire:
	cd cmd/admin/ && wire

.PHONY: test # 快速测试,运行repo以外的所有测试
test:
	ginkgo -r -cover -v .

.PHONY: all
# generate all
all:
	make api;
	make errors;
	make config;
	make generate;

# show help
help:
	@echo ''
	@echo 'Usage:'
	@echo ' make [target]'
	@echo ''
	@echo 'Targets:'
	@awk '/^[a-zA-Z\-\_0-9]+:/ { \
	helpMessage = match(lastLine, /^# (.*)/); \
		if (helpMessage) { \
			helpCommand = substr($$1, 0, index($$1, ":")-1); \
			helpMessage = substr(lastLine, RSTART + 2, RLENGTH); \
			printf "\033[36m%-22s\033[0m %s\n", helpCommand,helpMessage; \
		} \
	} \
	{ lastLine = $$0 }' $(MAKEFILE_LIST)

.DEFAULT_GOAL := help


================================================
FILE: admin/api/admin/v1/admin.pb.go
================================================
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// 	protoc-gen-go v1.27.1
// 	protoc        v3.17.3
// source: api/admin/v1/admin.proto

package v1

import (
	_ "github.com/envoyproxy/protoc-gen-validate/validate"
	_ "google.golang.org/genproto/googleapis/api/annotations"
	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
	emptypb "google.golang.org/protobuf/types/known/emptypb"
	reflect "reflect"
	sync "sync"
)

const (
	// Verify that this generated code is sufficiently up-to-date.
	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
	// Verify that runtime/protoimpl is sufficiently up-to-date.
	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)

type CreateAddressReq struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Uid       int64  `protobuf:"varint,1,opt,name=uid,proto3" json:"uid,omitempty"`
	Name      string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
	Mobile    string `protobuf:"bytes,3,opt,name=mobile,proto3" json:"mobile,omitempty"`
	Province  string `protobuf:"bytes,4,opt,name=Province,proto3" json:"Province,omitempty"`
	City      string `protobuf:"bytes,5,opt,name=City,proto3" json:"City,omitempty"`
	Districts string `protobuf:"bytes,6,opt,name=Districts,proto3" json:"Districts,omitempty"`
	Address   string `protobuf:"bytes,7,opt,name=address,proto3" json:"address,omitempty"`
	PostCode  string `protobuf:"bytes,8,opt,name=post_code,json=postCode,proto3" json:"post_code,omitempty"`
	IsDefault int32  `protobuf:"varint,9,opt,name=is_default,json=isDefault,proto3" json:"is_default,omitempty"`
}

func (x *CreateAddressReq) Reset() {
	*x = CreateAddressReq{}
	if protoimpl.UnsafeEnabled {
		mi := &file_api_admin_v1_admin_proto_msgTypes[0]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *CreateAddressReq) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*CreateAddressReq) ProtoMessage() {}

func (x *CreateAddressReq) ProtoReflect() protoreflect.Message {
	mi := &file_api_admin_v1_admin_proto_msgTypes[0]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use CreateAddressReq.ProtoReflect.Descriptor instead.
func (*CreateAddressReq) Descriptor() ([]byte, []int) {
	return file_api_admin_v1_admin_proto_rawDescGZIP(), []int{0}
}

func (x *CreateAddressReq) GetUid() int64 {
	if x != nil {
		return x.Uid
	}
	return 0
}

func (x *CreateAddressReq) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

func (x *CreateAddressReq) GetMobile() string {
	if x != nil {
		return x.Mobile
	}
	return ""
}

func (x *CreateAddressReq) GetProvince() string {
	if x != nil {
		return x.Province
	}
	return ""
}

func (x *CreateAddressReq) GetCity() string {
	if x != nil {
		return x.City
	}
	return ""
}

func (x *CreateAddressReq) GetDistricts() string {
	if x != nil {
		return x.Districts
	}
	return ""
}

func (x *CreateAddressReq) GetAddress() string {
	if x != nil {
		return x.Address
	}
	return ""
}

func (x *CreateAddressReq) GetPostCode() string {
	if x != nil {
		return x.PostCode
	}
	return ""
}

func (x *CreateAddressReq) GetIsDefault() int32 {
	if x != nil {
		return x.IsDefault
	}
	return 0
}

type UpdateAddressReq struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Uid       int64  `protobuf:"varint,1,opt,name=uid,proto3" json:"uid,omitempty"`
	Name      string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
	Mobile    string `protobuf:"bytes,3,opt,name=mobile,proto3" json:"mobile,omitempty"`
	Province  string `protobuf:"bytes,4,opt,name=Province,proto3" json:"Province,omitempty"`
	City      string `protobuf:"bytes,5,opt,name=City,proto3" json:"City,omitempty"`
	Districts string `protobuf:"bytes,6,opt,name=Districts,proto3" json:"Districts,omitempty"`
	Address   string `protobuf:"bytes,7,opt,name=address,proto3" json:"address,omitempty"`
	PostCode  string `protobuf:"bytes,8,opt,name=post_code,json=postCode,proto3" json:"post_code,omitempty"`
	IsDefault int32  `protobuf:"varint,9,opt,name=is_default,json=isDefault,proto3" json:"is_default,omitempty"`
	Id        int64  `protobuf:"varint,10,opt,name=id,proto3" json:"id,omitempty"`
}

func (x *UpdateAddressReq) Reset() {
	*x = UpdateAddressReq{}
	if protoimpl.UnsafeEnabled {
		mi := &file_api_admin_v1_admin_proto_msgTypes[1]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *UpdateAddressReq) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*UpdateAddressReq) ProtoMessage() {}

func (x *UpdateAddressReq) ProtoReflect() protoreflect.Message {
	mi := &file_api_admin_v1_admin_proto_msgTypes[1]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use UpdateAddressReq.ProtoReflect.Descriptor instead.
func (*UpdateAddressReq) Descriptor() ([]byte, []int) {
	return file_api_admin_v1_admin_proto_rawDescGZIP(), []int{1}
}

func (x *UpdateAddressReq) GetUid() int64 {
	if x != nil {
		return x.Uid
	}
	return 0
}

func (x *UpdateAddressReq) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

func (x *UpdateAddressReq) GetMobile() string {
	if x != nil {
		return x.Mobile
	}
	return ""
}

func (x *UpdateAddressReq) GetProvince() string {
	if x != nil {
		return x.Province
	}
	return ""
}

func (x *UpdateAddressReq) GetCity() string {
	if x != nil {
		return x.City
	}
	return ""
}

func (x *UpdateAddressReq) GetDistricts() string {
	if x != nil {
		return x.Districts
	}
	return ""
}

func (x *UpdateAddressReq) GetAddress() string {
	if x != nil {
		return x.Address
	}
	return ""
}

func (x *UpdateAddressReq) GetPostCode() string {
	if x != nil {
		return x.PostCode
	}
	return ""
}

func (x *UpdateAddressReq) GetIsDefault() int32 {
	if x != nil {
		return x.IsDefault
	}
	return 0
}

func (x *UpdateAddressReq) GetId() int64 {
	if x != nil {
		return x.Id
	}
	return 0
}

type AddressInfo struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Id        int64  `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"`
	Name      string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
	Mobile    string `protobuf:"bytes,3,opt,name=mobile,proto3" json:"mobile,omitempty"`
	Province  string `protobuf:"bytes,4,opt,name=Province,proto3" json:"Province,omitempty"`
	City      string `protobuf:"bytes,5,opt,name=City,proto3" json:"City,omitempty"`
	Districts string `protobuf:"bytes,6,opt,name=Districts,proto3" json:"Districts,omitempty"`
	Address   string `protobuf:"bytes,7,opt,name=address,proto3" json:"address,omitempty"`
	PostCode  string `protobuf:"bytes,8,opt,name=post_code,json=postCode,proto3" json:"post_code,omitempty"`
	IsDefault int32  `protobuf:"varint,9,opt,name=is_default,json=isDefault,proto3" json:"is_default,omitempty"`
}

func (x *AddressInfo) Reset() {
	*x = AddressInfo{}
	if protoimpl.UnsafeEnabled {
		mi := &file_api_admin_v1_admin_proto_msgTypes[2]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *AddressInfo) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*AddressInfo) ProtoMessage() {}

func (x *AddressInfo) ProtoReflect() protoreflect.Message {
	mi := &file_api_admin_v1_admin_proto_msgTypes[2]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use AddressInfo.ProtoReflect.Descriptor instead.
func (*AddressInfo) Descriptor() ([]byte, []int) {
	return file_api_admin_v1_admin_proto_rawDescGZIP(), []int{2}
}

func (x *AddressInfo) GetId() int64 {
	if x != nil {
		return x.Id
	}
	return 0
}

func (x *AddressInfo) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

func (x *AddressInfo) GetMobile() string {
	if x != nil {
		return x.Mobile
	}
	return ""
}

func (x *AddressInfo) GetProvince() string {
	if x != nil {
		return x.Province
	}
	return ""
}

func (x *AddressInfo) GetCity() string {
	if x != nil {
		return x.City
	}
	return ""
}

func (x *AddressInfo) GetDistricts() string {
	if x != nil {
		return x.Districts
	}
	return ""
}

func (x *AddressInfo) GetAddress() string {
	if x != nil {
		return x.Address
	}
	return ""
}

func (x *AddressInfo) GetPostCode() string {
	if x != nil {
		return x.PostCode
	}
	return ""
}

func (x *AddressInfo) GetIsDefault() int32 {
	if x != nil {
		return x.IsDefault
	}
	return 0
}

type ListAddressReq struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Uid int64 `protobuf:"varint,1,opt,name=uid,proto3" json:"uid,omitempty"`
}

func (x *ListAddressReq) Reset() {
	*x = ListAddressReq{}
	if protoimpl.UnsafeEnabled {
		mi := &file_api_admin_v1_admin_proto_msgTypes[3]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ListAddressReq) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ListAddressReq) ProtoMessage() {}

func (x *ListAddressReq) ProtoReflect() protoreflect.Message {
	mi := &file_api_admin_v1_admin_proto_msgTypes[3]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ListAddressReq.ProtoReflect.Descriptor instead.
func (*ListAddressReq) Descriptor() ([]byte, []int) {
	return file_api_admin_v1_admin_proto_rawDescGZIP(), []int{3}
}

func (x *ListAddressReq) GetUid() int64 {
	if x != nil {
		return x.Uid
	}
	return 0
}

type ListAddressReply struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Results []*AddressInfo `protobuf:"bytes,1,rep,name=results,proto3" json:"results,omitempty"`
}

func (x *ListAddressReply) Reset() {
	*x = ListAddressReply{}
	if protoimpl.UnsafeEnabled {
		mi := &file_api_admin_v1_admin_proto_msgTypes[4]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ListAddressReply) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ListAddressReply) ProtoMessage() {}

func (x *ListAddressReply) ProtoReflect() protoreflect.Message {
	mi := &file_api_admin_v1_admin_proto_msgTypes[4]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ListAddressReply.ProtoReflect.Descriptor instead.
func (*ListAddressReply) Descriptor() ([]byte, []int) {
	return file_api_admin_v1_admin_proto_rawDescGZIP(), []int{4}
}

func (x *ListAddressReply) GetResults() []*AddressInfo {
	if x != nil {
		return x.Results
	}
	return nil
}

type AddressReq struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Id  int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"`
	Uid int64 `protobuf:"varint,2,opt,name=uid,proto3" json:"uid,omitempty"`
}

func (x *AddressReq) Reset() {
	*x = AddressReq{}
	if protoimpl.UnsafeEnabled {
		mi := &file_api_admin_v1_admin_proto_msgTypes[5]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *AddressReq) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*AddressReq) ProtoMessage() {}

func (x *AddressReq) ProtoReflect() protoreflect.Message {
	mi := &file_api_admin_v1_admin_proto_msgTypes[5]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use AddressReq.ProtoReflect.Descriptor instead.
func (*AddressReq) Descriptor() ([]byte, []int) {
	return file_api_admin_v1_admin_proto_rawDescGZIP(), []int{5}
}

func (x *AddressReq) GetId() int64 {
	if x != nil {
		return x.Id
	}
	return 0
}

func (x *AddressReq) GetUid() int64 {
	if x != nil {
		return x.Uid
	}
	return 0
}

type CheckResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"`
}

func (x *CheckResponse) Reset() {
	*x = CheckResponse{}
	if protoimpl.UnsafeEnabled {
		mi := &file_api_admin_v1_admin_proto_msgTypes[6]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *CheckResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*CheckResponse) ProtoMessage() {}

func (x *CheckResponse) ProtoReflect() protoreflect.Message {
	mi := &file_api_admin_v1_admin_proto_msgTypes[6]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use CheckResponse.ProtoReflect.Descriptor instead.
func (*CheckResponse) Descriptor() ([]byte, []int) {
	return file_api_admin_v1_admin_proto_rawDescGZIP(), []int{6}
}

func (x *CheckResponse) GetSuccess() bool {
	if x != nil {
		return x.Success
	}
	return false
}

// Data returned by registration and login
type RegisterReply struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Id        int64  `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"`
	Mobile    string `protobuf:"bytes,3,opt,name=mobile,proto3" json:"mobile,omitempty"`
	Username  string `protobuf:"bytes,4,opt,name=username,proto3" json:"username,omitempty"`
	Token     string `protobuf:"bytes,5,opt,name=token,proto3" json:"token,omitempty"`
	ExpiredAt int64  `protobuf:"varint,6,opt,name=expiredAt,proto3" json:"expiredAt,omitempty"`
}

func (x *RegisterReply) Reset() {
	*x = RegisterReply{}
	if protoimpl.UnsafeEnabled {
		mi := &file_api_admin_v1_admin_proto_msgTypes[7]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *RegisterReply) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*RegisterReply) ProtoMessage() {}

func (x *RegisterReply) ProtoReflect() protoreflect.Message {
	mi := &file_api_admin_v1_admin_proto_msgTypes[7]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use RegisterReply.ProtoReflect.Descriptor instead.
func (*RegisterReply) Descriptor() ([]byte, []int) {
	return file_api_admin_v1_admin_proto_rawDescGZIP(), []int{7}
}

func (x *RegisterReply) GetId() int64 {
	if x != nil {
		return x.Id
	}
	return 0
}

func (x *RegisterReply) GetMobile() string {
	if x != nil {
		return x.Mobile
	}
	return ""
}

func (x *RegisterReply) GetUsername() string {
	if x != nil {
		return x.Username
	}
	return ""
}

func (x *RegisterReply) GetToken() string {
	if x != nil {
		return x.Token
	}
	return ""
}

func (x *RegisterReply) GetExpiredAt() int64 {
	if x != nil {
		return x.ExpiredAt
	}
	return 0
}

type RegisterReq struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Mobile   string `protobuf:"bytes,1,opt,name=mobile,proto3" json:"mobile,omitempty"`
	Username string `protobuf:"bytes,2,opt,name=username,proto3" json:"username,omitempty"`
	Password string `protobuf:"bytes,3,opt,name=password,proto3" json:"password,omitempty"`
}

func (x *RegisterReq) Reset() {
	*x = RegisterReq{}
	if protoimpl.UnsafeEnabled {
		mi := &file_api_admin_v1_admin_proto_msgTypes[8]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *RegisterReq) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*RegisterReq) ProtoMessage() {}

func (x *RegisterReq) ProtoReflect() protoreflect.Message {
	mi := &file_api_admin_v1_admin_proto_msgTypes[8]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use RegisterReq.ProtoReflect.Descriptor instead.
func (*RegisterReq) Descriptor() ([]byte, []int) {
	return file_api_admin_v1_admin_proto_rawDescGZIP(), []int{8}
}

func (x *RegisterReq) GetMobile() string {
	if x != nil {
		return x.Mobile
	}
	return ""
}

func (x *RegisterReq) GetUsername() string {
	if x != nil {
		return x.Username
	}
	return ""
}

func (x *RegisterReq) GetPassword() string {
	if x != nil {
		return x.Password
	}
	return ""
}

type LoginReq struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Username string `protobuf:"bytes,1,opt,name=username,proto3" json:"username,omitempty"`
	Password string `protobuf:"bytes,2,opt,name=password,proto3" json:"password,omitempty"`
}

func (x *LoginReq) Reset() {
	*x = LoginReq{}
	if protoimpl.UnsafeEnabled {
		mi := &file_api_admin_v1_admin_proto_msgTypes[9]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *LoginReq) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*LoginReq) ProtoMessage() {}

func (x *LoginReq) ProtoReflect() protoreflect.Message {
	mi := &file_api_admin_v1_admin_proto_msgTypes[9]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use LoginReq.ProtoReflect.Descriptor instead.
func (*LoginReq) Descriptor() ([]byte, []int) {
	return file_api_admin_v1_admin_proto_rawDescGZIP(), []int{9}
}

func (x *LoginReq) GetUsername() string {
	if x != nil {
		return x.Username
	}
	return ""
}

func (x *LoginReq) GetPassword() string {
	if x != nil {
		return x.Password
	}
	return ""
}

// user Detail returned
type UserDetailResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Id       int64  `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"`
	Mobile   string `protobuf:"bytes,2,opt,name=mobile,proto3" json:"mobile,omitempty"`
	NickName string `protobuf:"bytes,3,opt,name=nickName,proto3" json:"nickName,omitempty"`
	Birthday int64  `protobuf:"varint,4,opt,name=birthday,proto3" json:"birthday,omitempty"`
	Gender   string `protobuf:"bytes,5,opt,name=gender,proto3" json:"gender,omitempty"`
	Role     int32  `protobuf:"varint,6,opt,name=role,proto3" json:"role,omitempty"`
}

func (x *UserDetailResponse) Reset() {
	*x = UserDetailResponse{}
	if protoimpl.UnsafeEnabled {
		mi := &file_api_admin_v1_admin_proto_msgTypes[10]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *UserDetailResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*UserDetailResponse) ProtoMessage() {}

func (x *UserDetailResponse) ProtoReflect() protoreflect.Message {
	mi := &file_api_admin_v1_admin_proto_msgTypes[10]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use UserDetailResponse.ProtoReflect.Descriptor instead.
func (*UserDetailResponse) Descriptor() ([]byte, []int) {
	return file_api_admin_v1_admin_proto_rawDescGZIP(), []int{10}
}

func (x *UserDetailResponse) GetId() int64 {
	if x != nil {
		return x.Id
	}
	return 0
}

func (x *UserDetailResponse) GetMobile() string {
	if x != nil {
		return x.Mobile
	}
	return ""
}

func (x *UserDetailResponse) GetNickName() string {
	if x != nil {
		return x.NickName
	}
	return ""
}

func (x *UserDetailResponse) GetBirthday() int64 {
	if x != nil {
		return x.Birthday
	}
	return 0
}

func (x *UserDetailResponse) GetGender() string {
	if x != nil {
		return x.Gender
	}
	return ""
}

func (x *UserDetailResponse) GetRole() int32 {
	if x != nil {
		return x.Role
	}
	return 0
}

type CaptchaReply struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	CaptchaId string `protobuf:"bytes,1,opt,name=captchaId,proto3" json:"captchaId,omitempty"`
	PicPath   string `protobuf:"bytes,2,opt,name=picPath,proto3" json:"picPath,omitempty"`
}

func (x *CaptchaReply) Reset() {
	*x = CaptchaReply{}
	if protoimpl.UnsafeEnabled {
		mi := &file_api_admin_v1_admin_proto_msgTypes[11]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *CaptchaReply) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*CaptchaReply) ProtoMessage() {}

func (x *CaptchaReply) ProtoReflect() protoreflect.Message {
	mi := &file_api_admin_v1_admin_proto_msgTypes[11]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use CaptchaReply.ProtoReflect.Descriptor instead.
func (*CaptchaReply) Descriptor() ([]byte, []int) {
	return file_api_admin_v1_admin_proto_rawDescGZIP(), []int{11}
}

func (x *CaptchaReply) GetCaptchaId() string {
	if x != nil {
		return x.CaptchaId
	}
	return ""
}

func (x *CaptchaReply) GetPicPath() string {
	if x != nil {
		return x.PicPath
	}
	return ""
}

var File_api_admin_v1_admin_proto protoreflect.FileDescriptor

var file_api_admin_v1_admin_proto_rawDesc = []byte{
	0x0a, 0x18, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2f, 0x76, 0x31, 0x2f, 0x61,
	0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0e, 0x61, 0x64, 0x6d, 0x69,
	0x6e, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x1a, 0x17, 0x76, 0x61, 0x6c, 0x69,
	0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72,
	0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f,
	0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74,
	0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
	0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xab,
	0x02, 0x0a, 0x10, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73,
	0x52, 0x65, 0x71, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03,
	0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x1b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x04, 0x6e, 0x61,
	0x6d, 0x65, 0x12, 0x20, 0x0a, 0x06, 0x6d, 0x6f, 0x62, 0x69, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01,
	0x28, 0x09, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x98, 0x01, 0x0b, 0x52, 0x06, 0x6d, 0x6f,
	0x62, 0x69, 0x6c, 0x65, 0x12, 0x23, 0x0a, 0x08, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x6e, 0x63, 0x65,
	0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52,
	0x08, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x6e, 0x63, 0x65, 0x12, 0x1b, 0x0a, 0x04, 0x43, 0x69, 0x74,
	0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01,
	0x52, 0x04, 0x43, 0x69, 0x74, 0x79, 0x12, 0x25, 0x0a, 0x09, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69,
	0x63, 0x74, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02,
	0x10, 0x01, 0x52, 0x09, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x73, 0x12, 0x21, 0x0a,
	0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07,
	0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73,
	0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x73, 0x74, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x08, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x73, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x1d, 0x0a,
	0x0a, 0x69, 0x73, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28,
	0x05, 0x52, 0x09, 0x69, 0x73, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x22, 0xbb, 0x02, 0x0a,
	0x10, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x65,
	0x71, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03,
	0x75, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x06, 0x6d, 0x6f, 0x62, 0x69, 0x6c,
	0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x98, 0x01,
	0x0b, 0x52, 0x06, 0x6d, 0x6f, 0x62, 0x69, 0x6c, 0x65, 0x12, 0x23, 0x0a, 0x08, 0x50, 0x72, 0x6f,
	0x76, 0x69, 0x6e, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04,
	0x72, 0x02, 0x10, 0x01, 0x52, 0x08, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x6e, 0x63, 0x65, 0x12, 0x1b,
	0x0a, 0x04, 0x43, 0x69, 0x74, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42,
	0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x04, 0x43, 0x69, 0x74, 0x79, 0x12, 0x25, 0x0a, 0x09, 0x44,
	0x69, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07,
	0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x09, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x63,
	0x74, 0x73, 0x12, 0x21, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x07, 0x20,
	0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x07, 0x61, 0x64,
	0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x73, 0x74, 0x5f, 0x63, 0x6f,
	0x64, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x73, 0x74, 0x43, 0x6f,
	0x64, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x73, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74,
	0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x69, 0x73, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c,
	0x74, 0x12, 0x17, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x42, 0x07, 0xfa,
	0x42, 0x04, 0x22, 0x02, 0x28, 0x01, 0x52, 0x02, 0x69, 0x64, 0x22, 0x80, 0x02, 0x0a, 0x0b, 0x41,
	0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1b, 0x0a, 0x04, 0x6e, 0x61,
	0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10,
	0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x06, 0x6d, 0x6f, 0x62, 0x69, 0x6c,
	0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x98, 0x01,
	0x0b, 0x52, 0x06, 0x6d, 0x6f, 0x62, 0x69, 0x6c, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x72, 0x6f,
	0x76, 0x69, 0x6e, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x72, 0x6f,
	0x76, 0x69, 0x6e, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x69, 0x74, 0x79, 0x18, 0x05, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x04, 0x43, 0x69, 0x74, 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x44, 0x69, 0x73,
	0x74, 0x72, 0x69, 0x63, 0x74, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x44, 0x69,
	0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65,
	0x73, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73,
	0x73, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x73, 0x74, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x08,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x73, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x1d,
	0x0a, 0x0a, 0x69, 0x73, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x18, 0x09, 0x20, 0x01,
	0x28, 0x05, 0x52, 0x09, 0x69, 0x73, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x22, 0x22, 0x0a,
	0x0e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x12,
	0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x75, 0x69,
	0x64, 0x22, 0x49, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73,
	0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x35, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73,
	0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x61,
	0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x49,
	0x6e, 0x66, 0x6f, 0x52, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x22, 0x37, 0x0a, 0x0a,
	0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x12, 0x17, 0x0a, 0x02, 0x69, 0x64,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x22, 0x02, 0x28, 0x01, 0x52,
	0x02, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03,
	0x52, 0x03, 0x75, 0x69, 0x64, 0x22, 0x29, 0x0a, 0x0d, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65,
	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73,
	0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73,
	0x22, 0x87, 0x01, 0x0a, 0x0d, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x70,
	0x6c, 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02,
	0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x6f, 0x62, 0x69, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x06, 0x6d, 0x6f, 0x62, 0x69, 0x6c, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73,
	0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73,
	0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18,
	0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1c, 0x0a, 0x09,
	0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x41, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52,
	0x09, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x41, 0x74, 0x22, 0x7b, 0x0a, 0x0b, 0x52, 0x65,
	0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x12, 0x20, 0x0a, 0x06, 0x6d, 0x6f, 0x62,
	0x69, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x72, 0x03,
	0x98, 0x01, 0x0b, 0x52, 0x06, 0x6d, 0x6f, 0x62, 0x69, 0x6c, 0x65, 0x12, 0x25, 0x0a, 0x08, 0x75,
	0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x09, 0xfa,
	0x42, 0x06, 0x72, 0x04, 0x10, 0x03, 0x18, 0x0f, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61,
	0x6d, 0x65, 0x12, 0x23, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x03,
	0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x08, 0x52, 0x08, 0x70,
	0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x22, 0x54, 0x0a, 0x08, 0x4c, 0x6f, 0x67, 0x69, 0x6e,
	0x52, 0x65, 0x71, 0x12, 0x23, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x03, 0x52, 0x08,
	0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73,
	0x77, 0x6f, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72,
	0x02, 0x10, 0x08, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x22, 0xa0, 0x01,
	0x0a, 0x12, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x73, 0x70,
	0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03,
	0x52, 0x02, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x6f, 0x62, 0x69, 0x6c, 0x65, 0x18, 0x02,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x6f, 0x62, 0x69, 0x6c, 0x65, 0x12, 0x1a, 0x0a, 0x08,
	0x6e, 0x69, 0x63, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08,
	0x6e, 0x69, 0x63, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x62, 0x69, 0x72, 0x74,
	0x68, 0x64, 0x61, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x62, 0x69, 0x72, 0x74,
	0x68, 0x64, 0x61, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x67, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x05,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x67, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04,
	0x72, 0x6f, 0x6c, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65,
	0x22, 0x46, 0x0a, 0x0c, 0x43, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x52, 0x65, 0x70, 0x6c, 0x79,
	0x12, 0x1c, 0x0a, 0x09, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x49, 0x64, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x49, 0x64, 0x12, 0x18,
	0x0a, 0x07, 0x70, 0x69, 0x63, 0x50, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x07, 0x70, 0x69, 0x63, 0x50, 0x61, 0x74, 0x68, 0x32, 0xb2, 0x07, 0x0a, 0x05, 0x61, 0x64, 0x6d,
	0x69, 0x6e, 0x12, 0x66, 0x0a, 0x08, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x12, 0x1b,
	0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e,
	0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x1a, 0x1d, 0x2e, 0x61, 0x64,
	0x6d, 0x69, 0x6e, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x67,
	0x69, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x1e, 0x82, 0xd3, 0xe4, 0x93,
	0x02, 0x18, 0x22, 0x13, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x72,
	0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x3a, 0x01, 0x2a, 0x12, 0x5d, 0x0a, 0x05, 0x4c, 0x6f,
	0x67, 0x69, 0x6e, 0x12, 0x18, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x61, 0x64, 0x6d, 0x69,
	0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x1d, 0x2e,
	0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x52,
	0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x1b, 0x82, 0xd3,
	0xe4, 0x93, 0x02, 0x15, 0x22, 0x10, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73,
	0x2f, 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x3a, 0x01, 0x2a, 0x12, 0x5b, 0x0a, 0x07, 0x43, 0x61, 0x70,
	0x74, 0x63, 0x68, 0x61, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
	0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x1c, 0x2e, 0x61,
	0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61,
	0x70, 0x74, 0x63, 0x68, 0x61, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x1a, 0x82, 0xd3, 0xe4, 0x93,
	0x02, 0x14, 0x12, 0x12, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x63,
	0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x12, 0x5f, 0x0a, 0x06, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c,
	0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
	0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x22, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e,
	0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65,
	0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x19, 0x82, 0xd3,
	0xe4, 0x93, 0x02, 0x13, 0x12, 0x11, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73,
	0x2f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x6e, 0x0a, 0x0d, 0x43, 0x72, 0x65, 0x61, 0x74,
	0x65, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x20, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e,
	0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65,
	0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x1b, 0x2e, 0x61, 0x64, 0x6d,
	0x69, 0x6e, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x64, 0x64, 0x72,
	0x65, 0x73, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x1e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x22,
	0x13, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x2f, 0x63, 0x72,
	0x65, 0x61, 0x74, 0x65, 0x3a, 0x01, 0x2a, 0x12, 0x6b, 0x0a, 0x10, 0x41, 0x64, 0x64, 0x72, 0x65,
	0x73, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x79, 0x55, 0x69, 0x64, 0x12, 0x16, 0x2e, 0x67, 0x6f,
	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d,
	0x70, 0x74, 0x79, 0x1a, 0x20, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x61, 0x64, 0x6d, 0x69,
	0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73,
	0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x1d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x12, 0x15, 0x2f,
	0x61, 0x70, 0x69, 0x2f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x2f, 0x6c, 0x69, 0x73, 0x74,
	0x2f, 0x75, 0x69, 0x64, 0x12, 0x70, 0x0a, 0x0d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x64,
	0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x20, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x61, 0x64,
	0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x64, 0x64,
	0x72, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x1d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e,
	0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65,
	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x1a, 0x13,
	0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x2f, 0x75, 0x70, 0x64,
	0x61, 0x74, 0x65, 0x3a, 0x01, 0x2a, 0x12, 0x6c, 0x0a, 0x0e, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c,
	0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x1a, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e,
	0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73,
	0x73, 0x52, 0x65, 0x71, 0x1a, 0x1d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x61, 0x64, 0x6d,
	0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f,
	0x6e, 0x73, 0x65, 0x22, 0x1f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x19, 0x1a, 0x14, 0x2f, 0x61, 0x70,
	0x69, 0x2f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x2f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c,
	0x74, 0x3a, 0x01, 0x2a, 0x12, 0x67, 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x64,
	0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x1a, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x61, 0x64,
	0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x65,
	0x71, 0x1a, 0x1d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e,
	0x76, 0x31, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
	0x22, 0x1b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x15, 0x2a, 0x13, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61,
	0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x2f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x17, 0x5a,
	0x15, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x64, 0x6d, 0x69, 0x6e,
	0x2f, 0x76, 0x31, 0x3b, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}

var (
	file_api_admin_v1_admin_proto_rawDescOnce sync.Once
	file_api_admin_v1_admin_proto_rawDescData = file_api_admin_v1_admin_proto_rawDesc
)

func file_api_admin_v1_admin_proto_rawDescGZIP() []byte {
	file_api_admin_v1_admin_proto_rawDescOnce.Do(func() {
		file_api_admin_v1_admin_proto_rawDescData = protoimpl.X.CompressGZIP(file_api_admin_v1_admin_proto_rawDescData)
	})
	return file_api_admin_v1_admin_proto_rawDescData
}

var file_api_admin_v1_admin_proto_msgTypes = make([]protoimpl.MessageInfo, 12)
var file_api_admin_v1_admin_proto_goTypes = []interface{}{
	(*CreateAddressReq)(nil),   // 0: admin.admin.v1.CreateAddressReq
	(*UpdateAddressReq)(nil),   // 1: admin.admin.v1.UpdateAddressReq
	(*AddressInfo)(nil),        // 2: admin.admin.v1.AddressInfo
	(*ListAddressReq)(nil),     // 3: admin.admin.v1.ListAddressReq
	(*ListAddressReply)(nil),   // 4: admin.admin.v1.ListAddressReply
	(*AddressReq)(nil),         // 5: admin.admin.v1.AddressReq
	(*CheckResponse)(nil),      // 6: admin.admin.v1.CheckResponse
	(*RegisterReply)(nil),      // 7: admin.admin.v1.RegisterReply
	(*RegisterReq)(nil),        // 8: admin.admin.v1.RegisterReq
	(*LoginReq)(nil),           // 9: admin.admin.v1.LoginReq
	(*UserDetailResponse)(nil), // 10: admin.admin.v1.UserDetailResponse
	(*CaptchaReply)(nil),       // 11: admin.admin.v1.CaptchaReply
	(*emptypb.Empty)(nil),      // 12: google.protobuf.Empty
}
var file_api_admin_v1_admin_proto_depIdxs = []int32{
	2,  // 0: admin.admin.v1.ListAddressReply.results:type_name -> admin.admin.v1.AddressInfo
	8,  // 1: admin.admin.v1.admin.Register:input_type -> admin.admin.v1.RegisterReq
	9,  // 2: admin.admin.v1.admin.Login:input_type -> admin.admin.v1.LoginReq
	12, // 3: admin.admin.v1.admin.Captcha:input_type -> google.protobuf.Empty
	12, // 4: admin.admin.v1.admin.Detail:input_type -> google.protobuf.Empty
	0,  // 5: admin.admin.v1.admin.CreateAddress:input_type -> admin.admin.v1.CreateAddressReq
	12, // 6: admin.admin.v1.admin.AddressListByUid:input_type -> google.protobuf.Empty
	1,  // 7: admin.admin.v1.admin.UpdateAddress:input_type -> admin.admin.v1.UpdateAddressReq
	5,  // 8: admin.admin.v1.admin.DefaultAddress:input_type -> admin.admin.v1.AddressReq
	5,  // 9: admin.admin.v1.admin.DeleteAddress:input_type -> admin.admin.v1.AddressReq
	7,  // 10: admin.admin.v1.admin.Register:output_type -> admin.admin.v1.RegisterReply
	7,  // 11: admin.admin.v1.admin.Login:output_type -> admin.admin.v1.RegisterReply
	11, // 12: admin.admin.v1.admin.Captcha:output_type -> admin.admin.v1.CaptchaReply
	10, // 13: admin.admin.v1.admin.Detail:output_type -> admin.admin.v1.UserDetailResponse
	2,  // 14: admin.admin.v1.admin.CreateAddress:output_type -> admin.admin.v1.AddressInfo
	4,  // 15: admin.admin.v1.admin.AddressListByUid:output_type -> admin.admin.v1.ListAddressReply
	6,  // 16: admin.admin.v1.admin.UpdateAddress:output_type -> admin.admin.v1.CheckResponse
	6,  // 17: admin.admin.v1.admin.DefaultAddress:output_type -> admin.admin.v1.CheckResponse
	6,  // 18: admin.admin.v1.admin.DeleteAddress:output_type -> admin.admin.v1.CheckResponse
	10, // [10:19] is the sub-list for method output_type
	1,  // [1:10] is the sub-list for method input_type
	1,  // [1:1] is the sub-list for extension type_name
	1,  // [1:1] is the sub-list for extension extendee
	0,  // [0:1] is the sub-list for field type_name
}

func init() { file_api_admin_v1_admin_proto_init() }
func file_api_admin_v1_admin_proto_init() {
	if File_api_admin_v1_admin_proto != nil {
		return
	}
	if !protoimpl.UnsafeEnabled {
		file_api_admin_v1_admin_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*CreateAddressReq); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_api_admin_v1_admin_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*UpdateAddressReq); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_api_admin_v1_admin_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*AddressInfo); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_api_admin_v1_admin_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ListAddressReq); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_api_admin_v1_admin_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ListAddressReply); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_api_admin_v1_admin_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*AddressReq); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_api_admin_v1_admin_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*CheckResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_api_admin_v1_admin_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*RegisterReply); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_api_admin_v1_admin_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*RegisterReq); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_api_admin_v1_admin_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*LoginReq); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_api_admin_v1_admin_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*UserDetailResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_api_admin_v1_admin_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*CaptchaReply); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
	}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: file_api_admin_v1_admin_proto_rawDesc,
			NumEnums:      0,
			NumMessages:   12,
			NumExtensions: 0,
			NumServices:   1,
		},
		GoTypes:           file_api_admin_v1_admin_proto_goTypes,
		DependencyIndexes: file_api_admin_v1_admin_proto_depIdxs,
		MessageInfos:      file_api_admin_v1_admin_proto_msgTypes,
	}.Build()
	File_api_admin_v1_admin_proto = out.File
	file_api_admin_v1_admin_proto_rawDesc = nil
	file_api_admin_v1_admin_proto_goTypes = nil
	file_api_admin_v1_admin_proto_depIdxs = nil
}


================================================
FILE: admin/api/admin/v1/admin.pb.validate.go
================================================
// Code generated by protoc-gen-validate. DO NOT EDIT.
// source: api/admin/v1/admin.proto

package v1

import (
	"bytes"
	"errors"
	"fmt"
	"net"
	"net/mail"
	"net/url"
	"regexp"
	"sort"
	"strings"
	"time"
	"unicode/utf8"

	"google.golang.org/protobuf/types/known/anypb"
)

// ensure the imports are used
var (
	_ = bytes.MinRead
	_ = errors.New("")
	_ = fmt.Print
	_ = utf8.UTFMax
	_ = (*regexp.Regexp)(nil)
	_ = (*strings.Reader)(nil)
	_ = net.IPv4len
	_ = time.Duration(0)
	_ = (*url.URL)(nil)
	_ = (*mail.Address)(nil)
	_ = anypb.Any{}
	_ = sort.Sort
)

// Validate checks the field values on CreateAddressReq with the rules defined
// in the proto definition for this message. If any rules are violated, the
// first error encountered is returned, or nil if there are no violations.
func (m *CreateAddressReq) Validate() error {
	return m.validate(false)
}

// ValidateAll checks the field values on CreateAddressReq with the rules
// defined in the proto definition for this message. If any rules are
// violated, the result is a list of violation errors wrapped in
// CreateAddressReqMultiError, or nil if none found.
func (m *CreateAddressReq) ValidateAll() error {
	return m.validate(true)
}

func (m *CreateAddressReq) validate(all bool) error {
	if m == nil {
		return nil
	}

	var errors []error

	// no validation rules for Uid

	if utf8.RuneCountInString(m.GetName()) < 1 {
		err := CreateAddressReqValidationError{
			field:  "Name",
			reason: "value length must be at least 1 runes",
		}
		if !all {
			return err
		}
		errors = append(errors, err)
	}

	if utf8.RuneCountInString(m.GetMobile()) != 11 {
		err := CreateAddressReqValidationError{
			field:  "Mobile",
			reason: "value length must be 11 runes",
		}
		if !all {
			return err
		}
		errors = append(errors, err)

	}

	if utf8.RuneCountInString(m.GetProvince()) < 1 {
		err := CreateAddressReqValidationError{
			field:  "Province",
			reason: "value length must be at least 1 runes",
		}
		if !all {
			return err
		}
		errors = append(errors, err)
	}

	if utf8.RuneCountInString(m.GetCity()) < 1 {
		err := CreateAddressReqValidationError{
			field:  "City",
			reason: "value length must be at least 1 runes",
		}
		if !all {
			return err
		}
		errors = append(errors, err)
	}

	if utf8.RuneCountInString(m.GetDistricts()) < 1 {
		err := CreateAddressReqValidationError{
			field:  "Districts",
			reason: "value length must be at least 1 runes",
		}
		if !all {
			return err
		}
		errors = append(errors, err)
	}

	if utf8.RuneCountInString(m.GetAddress()) < 1 {
		err := CreateAddressReqValidationError{
			field:  "Address",
			reason: "value length must be at least 1 runes",
		}
		if !all {
			return err
		}
		errors = append(errors, err)
	}

	// no validation rules for PostCode

	// no validation rules for IsDefault

	if len(errors) > 0 {
		return CreateAddressReqMultiError(errors)
	}

	return nil
}

// CreateAddressReqMultiError is an error wrapping multiple validation errors
// returned by CreateAddressReq.ValidateAll() if the designated constraints
// aren't met.
type CreateAddressReqMultiError []error

// Error returns a concatenation of all the error messages it wraps.
func (m CreateAddressReqMultiError) Error() string {
	var msgs []string
	for _, err := range m {
		msgs = append(msgs, err.Error())
	}
	return strings.Join(msgs, "; ")
}

// AllErrors returns a list of validation violation errors.
func (m CreateAddressReqMultiError) AllErrors() []error { return m }

// CreateAddressReqValidationError is the validation error returned by
// CreateAddressReq.Validate if the designated constraints aren't met.
type CreateAddressReqValidationError struct {
	field  string
	reason string
	cause  error
	key    bool
}

// Field function returns field value.
func (e CreateAddressReqValidationError) Field() string { return e.field }

// Reason function returns reason value.
func (e CreateAddressReqValidationError) Reason() string { return e.reason }

// Cause function returns cause value.
func (e CreateAddressReqValidationError) Cause() error { return e.cause }

// Key function returns key value.
func (e CreateAddressReqValidationError) Key() bool { return e.key }

// ErrorName returns error name.
func (e CreateAddressReqValidationError) ErrorName() string { return "CreateAddressReqValidationError" }

// Error satisfies the builtin error interface
func (e CreateAddressReqValidationError) Error() string {
	cause := ""
	if e.cause != nil {
		cause = fmt.Sprintf(" | caused by: %v", e.cause)
	}

	key := ""
	if e.key {
		key = "key for "
	}

	return fmt.Sprintf(
		"invalid %sCreateAddressReq.%s: %s%s",
		key,
		e.field,
		e.reason,
		cause)
}

var _ error = CreateAddressReqValidationError{}

var _ interface {
	Field() string
	Reason() string
	Key() bool
	Cause() error
	ErrorName() string
} = CreateAddressReqValidationError{}

// Validate checks the field values on UpdateAddressReq with the rules defined
// in the proto definition for this message. If any rules are violated, the
// first error encountered is returned, or nil if there are no violations.
func (m *UpdateAddressReq) Validate() error {
	return m.validate(false)
}

// ValidateAll checks the field values on UpdateAddressReq with the rules
// defined in the proto definition for this message. If any rules are
// violated, the result is a list of violation errors wrapped in
// UpdateAddressReqMultiError, or nil if none found.
func (m *UpdateAddressReq) ValidateAll() error {
	return m.validate(true)
}

func (m *UpdateAddressReq) validate(all bool) error {
	if m == nil {
		return nil
	}

	var errors []error

	// no validation rules for Uid

	// no validation rules for Name

	if utf8.RuneCountInString(m.GetMobile()) != 11 {
		err := UpdateAddressReqValidationError{
			field:  "Mobile",
			reason: "value length must be 11 runes",
		}
		if !all {
			return err
		}
		errors = append(errors, err)

	}

	if utf8.RuneCountInString(m.GetProvince()) < 1 {
		err := UpdateAddressReqValidationError{
			field:  "Province",
			reason: "value length must be at least 1 runes",
		}
		if !all {
			return err
		}
		errors = append(errors, err)
	}

	if utf8.RuneCountInString(m.GetCity()) < 1 {
		err := UpdateAddressReqValidationError{
			field:  "City",
			reason: "value length must be at least 1 runes",
		}
		if !all {
			return err
		}
		errors = append(errors, err)
	}

	if utf8.RuneCountInString(m.GetDistricts()) < 1 {
		err := UpdateAddressReqValidationError{
			field:  "Districts",
			reason: "value length must be at least 1 runes",
		}
		if !all {
			return err
		}
		errors = append(errors, err)
	}

	if utf8.RuneCountInString(m.GetAddress()) < 1 {
		err := UpdateAddressReqValidationError{
			field:  "Address",
			reason: "value length must be at least 1 runes",
		}
		if !all {
			return err
		}
		errors = append(errors, err)
	}

	// no validation rules for PostCode

	// no validation rules for IsDefault

	if m.GetId() < 1 {
		err := UpdateAddressReqValidationError{
			field:  "Id",
			reason: "value must be greater than or equal to 1",
		}
		if !all {
			return err
		}
		errors = append(errors, err)
	}

	if len(errors) > 0 {
		return UpdateAddressReqMultiError(errors)
	}

	return nil
}

// UpdateAddressReqMultiError is an error wrapping multiple validation errors
// returned by UpdateAddressReq.ValidateAll() if the designated constraints
// aren't met.
type UpdateAddressReqMultiError []error

// Error returns a concatenation of all the error messages it wraps.
func (m UpdateAddressReqMultiError) Error() string {
	var msgs []string
	for _, err := range m {
		msgs = append(msgs, err.Error())
	}
	return strings.Join(msgs, "; ")
}

// AllErrors returns a list of validation violation errors.
func (m UpdateAddressReqMultiError) AllErrors() []error { return m }

// UpdateAddressReqValidationError is the validation error returned by
// UpdateAddressReq.Validate if the designated constraints aren't met.
type UpdateAddressReqValidationError struct {
	field  string
	reason string
	cause  error
	key    bool
}

// Field function returns field value.
func (e UpdateAddressReqValidationError) Field() string { return e.field }

// Reason function returns reason value.
func (e UpdateAddressReqValidationError) Reason() string { return e.reason }

// Cause function returns cause value.
func (e UpdateAddressReqValidationError) Cause() error { return e.cause }

// Key function returns key value.
func (e UpdateAddressReqValidationError) Key() bool { return e.key }

// ErrorName returns error name.
func (e UpdateAddressReqValidationError) ErrorName() string { return "UpdateAddressReqValidationError" }

// Error satisfies the builtin error interface
func (e UpdateAddressReqValidationError) Error() string {
	cause := ""
	if e.cause != nil {
		cause = fmt.Sprintf(" | caused by: %v", e.cause)
	}

	key := ""
	if e.key {
		key = "key for "
	}

	return fmt.Sprintf(
		"invalid %sUpdateAddressReq.%s: %s%s",
		key,
		e.field,
		e.reason,
		cause)
}

var _ error = UpdateAddressReqValidationError{}

var _ interface {
	Field() string
	Reason() string
	Key() bool
	Cause() error
	ErrorName() string
} = UpdateAddressReqValidationError{}

// Validate checks the field values on AddressInfo with the rules defined in
// the proto definition for this message. If any rules are violated, the first
// error encountered is returned, or nil if there are no violations.
func (m *AddressInfo) Validate() error {
	return m.validate(false)
}

// ValidateAll checks the field values on AddressInfo with the rules defined in
// the proto definition for this message. If any rules are violated, the
// result is a list of violation errors wrapped in AddressInfoMultiError, or
// nil if none found.
func (m *AddressInfo) ValidateAll() error {
	return m.validate(true)
}

func (m *AddressInfo) validate(all bool) error {
	if m == nil {
		return nil
	}

	var errors []error

	// no validation rules for Id

	if utf8.RuneCountInString(m.GetName()) < 1 {
		err := AddressInfoValidationError{
			field:  "Name",
			reason: "value length must be at least 1 runes",
		}
		if !all {
			return err
		}
		errors = append(errors, err)
	}

	if utf8.RuneCountInString(m.GetMobile()) != 11 {
		err := AddressInfoValidationError{
			field:  "Mobile",
			reason: "value length must be 11 runes",
		}
		if !all {
			return err
		}
		errors = append(errors, err)

	}

	// no validation rules for Province

	// no validation rules for City

	// no validation rules for Districts

	// no validation rules for Address

	// no validation rules for PostCode

	// no validation rules for IsDefault

	if len(errors) > 0 {
		return AddressInfoMultiError(errors)
	}

	return nil
}

// AddressInfoMultiError is an error wrapping multiple validation errors
// returned by AddressInfo.ValidateAll() if the designated constraints aren't met.
type AddressInfoMultiError []error

// Error returns a concatenation of all the error messages it wraps.
func (m AddressInfoMultiError) Error() string {
	var msgs []string
	for _, err := range m {
		msgs = append(msgs, err.Error())
	}
	return strings.Join(msgs, "; ")
}

// AllErrors returns a list of validation violation errors.
func (m AddressInfoMultiError) AllErrors() []error { return m }

// AddressInfoValidationError is the validation error returned by
// AddressInfo.Validate if the designated constraints aren't met.
type AddressInfoValidationError struct {
	field  string
	reason string
	cause  error
	key    bool
}

// Field function returns field value.
func (e AddressInfoValidationError) Field() string { return e.field }

// Reason function returns reason value.
func (e AddressInfoValidationError) Reason() string { return e.reason }

// Cause function returns cause value.
func (e AddressInfoValidationError) Cause() error { return e.cause }

// Key function returns key value.
func (e AddressInfoValidationError) Key() bool { return e.key }

// ErrorName returns error name.
func (e AddressInfoValidationError) ErrorName() string { return "AddressInfoValidationError" }

// Error satisfies the builtin error interface
func (e AddressInfoValidationError) Error() string {
	cause := ""
	if e.cause != nil {
		cause = fmt.Sprintf(" | caused by: %v", e.cause)
	}

	key := ""
	if e.key {
		key = "key for "
	}

	return fmt.Sprintf(
		"invalid %sAddressInfo.%s: %s%s",
		key,
		e.field,
		e.reason,
		cause)
}

var _ error = AddressInfoValidationError{}

var _ interface {
	Field() string
	Reason() string
	Key() bool
	Cause() error
	ErrorName() string
} = AddressInfoValidationError{}

// Validate checks the field values on ListAddressReq with the rules defined in
// the proto definition for this message. If any rules are violated, the first
// error encountered is returned, or nil if there are no violations.
func (m *ListAddressReq) Validate() error {
	return m.validate(false)
}

// ValidateAll checks the field values on ListAddressReq with the rules defined
// in the proto definition for this message. If any rules are violated, the
// result is a list of violation errors wrapped in ListAddressReqMultiError,
// or nil if none found.
func (m *ListAddressReq) ValidateAll() error {
	return m.validate(true)
}

func (m *ListAddressReq) validate(all bool) error {
	if m == nil {
		return nil
	}

	var errors []error

	// no validation rules for Uid

	if len(errors) > 0 {
		return ListAddressReqMultiError(errors)
	}

	return nil
}

// ListAddressReqMultiError is an error wrapping multiple validation errors
// returned by ListAddressReq.ValidateAll() if the designated constraints
// aren't met.
type ListAddressReqMultiError []error

// Error returns a concatenation of all the error messages it wraps.
func (m ListAddressReqMultiError) Error() string {
	var msgs []string
	for _, err := range m {
		msgs = append(msgs, err.Error())
	}
	return strings.Join(msgs, "; ")
}

// AllErrors returns a list of validation violation errors.
func (m ListAddressReqMultiError) AllErrors() []error { return m }

// ListAddressReqValidationError is the validation error returned by
// ListAddressReq.Validate if the designated constraints aren't met.
type ListAddressReqValidationError struct {
	field  string
	reason string
	cause  error
	key    bool
}

// Field function returns field value.
func (e ListAddressReqValidationError) Field() string { return e.field }

// Reason function returns reason value.
func (e ListAddressReqValidationError) Reason() string { return e.reason }

// Cause function returns cause value.
func (e ListAddressReqValidationError) Cause() error { return e.cause }

// Key function returns key value.
func (e ListAddressReqValidationError) Key() bool { return e.key }

// ErrorName returns error name.
func (e ListAddressReqValidationError) ErrorName() string { return "ListAddressReqValidationError" }

// Error satisfies the builtin error interface
func (e ListAddressReqValidationError) Error() string {
	cause := ""
	if e.cause != nil {
		cause = fmt.Sprintf(" | caused by: %v", e.cause)
	}

	key := ""
	if e.key {
		key = "key for "
	}

	return fmt.Sprintf(
		"invalid %sListAddressReq.%s: %s%s",
		key,
		e.field,
		e.reason,
		cause)
}

var _ error = ListAddressReqValidationError{}

var _ interface {
	Field() string
	Reason() string
	Key() bool
	Cause() error
	ErrorName() string
} = ListAddressReqValidationError{}

// Validate checks the field values on ListAddressReply with the rules defined
// in the proto definition for this message. If any rules are violated, the
// first error encountered is returned, or nil if there are no violations.
func (m *ListAddressReply) Validate() error {
	return m.validate(false)
}

// ValidateAll checks the field values on ListAddressReply with the rules
// defined in the proto definition for this message. If any rules are
// violated, the result is a list of violation errors wrapped in
// ListAddressReplyMultiError, or nil if none found.
func (m *ListAddressReply) ValidateAll() error {
	return m.validate(true)
}

func (m *ListAddressReply) validate(all bool) error {
	if m == nil {
		return nil
	}

	var errors []error

	for idx, item := range m.GetResults() {
		_, _ = idx, item

		if all {
			switch v := interface{}(item).(type) {
			case interface{ ValidateAll() error }:
				if err := v.ValidateAll(); err != nil {
					errors = append(errors, ListAddressReplyValidationError{
						field:  fmt.Sprintf("Results[%v]", idx),
						reason: "embedded message failed validation",
						cause:  err,
					})
				}
			case interface{ Validate() error }:
				if err := v.Validate(); err != nil {
					errors = append(errors, ListAddressReplyValidationError{
						field:  fmt.Sprintf("Results[%v]", idx),
						reason: "embedded message failed validation",
						cause:  err,
					})
				}
			}
		} else if v, ok := interface{}(item).(interface{ Validate() error }); ok {
			if err := v.Validate(); err != nil {
				return ListAddressReplyValidationError{
					field:  fmt.Sprintf("Results[%v]", idx),
					reason: "embedded message failed validation",
					cause:  err,
				}
			}
		}

	}

	if len(errors) > 0 {
		return ListAddressReplyMultiError(errors)
	}

	return nil
}

// ListAddressReplyMultiError is an error wrapping multiple validation errors
// returned by ListAddressReply.ValidateAll() if the designated constraints
// aren't met.
type ListAddressReplyMultiError []error

// Error returns a concatenation of all the error messages it wraps.
func (m ListAddressReplyMultiError) Error() string {
	var msgs []string
	for _, err := range m {
		msgs = append(msgs, err.Error())
	}
	return strings.Join(msgs, "; ")
}

// AllErrors returns a list of validation violation errors.
func (m ListAddressReplyMultiError) AllErrors() []error { return m }

// ListAddressReplyValidationError is the validation error returned by
// ListAddressReply.Validate if the designated constraints aren't met.
type ListAddressReplyValidationError struct {
	field  string
	reason string
	cause  error
	key    bool
}

// Field function returns field value.
func (e ListAddressReplyValidationError) Field() string { return e.field }

// Reason function returns reason value.
func (e ListAddressReplyValidationError) Reason() string { return e.reason }

// Cause function returns cause value.
func (e ListAddressReplyValidationError) Cause() error { return e.cause }

// Key function returns key value.
func (e ListAddressReplyValidationError) Key() bool { return e.key }

// ErrorName returns error name.
func (e ListAddressReplyValidationError) ErrorName() string { return "ListAddressReplyValidationError" }

// Error satisfies the builtin error interface
func (e ListAddressReplyValidationError) Error() string {
	cause := ""
	if e.cause != nil {
		cause = fmt.Sprintf(" | caused by: %v", e.cause)
	}

	key := ""
	if e.key {
		key = "key for "
	}

	return fmt.Sprintf(
		"invalid %sListAddressReply.%s: %s%s",
		key,
		e.field,
		e.reason,
		cause)
}

var _ error = ListAddressReplyValidationError{}

var _ interface {
	Field() string
	Reason() string
	Key() bool
	Cause() error
	ErrorName() string
} = ListAddressReplyValidationError{}

// Validate checks the field values on AddressReq with the rules defined in the
// proto definition for this message. If any rules are violated, the first
// error encountered is returned, or nil if there are no violations.
func (m *AddressReq) Validate() error {
	return m.validate(false)
}

// ValidateAll checks the field values on AddressReq with the rules defined in
// the proto definition for this message. If any rules are violated, the
// result is a list of violation errors wrapped in AddressReqMultiError, or
// nil if none found.
func (m *AddressReq) ValidateAll() error {
	return m.validate(true)
}

func (m *AddressReq) validate(all bool) error {
	if m == nil {
		return nil
	}

	var errors []error

	if m.GetId() < 1 {
		err := AddressReqValidationError{
			field:  "Id",
			reason: "value must be greater than or equal to 1",
		}
		if !all {
			return err
		}
		errors = append(errors, err)
	}

	// no validation rules for Uid

	if len(errors) > 0 {
		return AddressReqMultiError(errors)
	}

	return nil
}

// AddressReqMultiError is an error wrapping multiple validation errors
// returned by AddressReq.ValidateAll() if the designated constraints aren't met.
type AddressReqMultiError []error

// Error returns a concatenation of all the error messages it wraps.
func (m AddressReqMultiError) Error() string {
	var msgs []string
	for _, err := range m {
		msgs = append(msgs, err.Error())
	}
	return strings.Join(msgs, "; ")
}

// AllErrors returns a list of validation violation errors.
func (m AddressReqMultiError) AllErrors() []error { return m }

// AddressReqValidationError is the validation error returned by
// AddressReq.Validate if the designated constraints aren't met.
type AddressReqValidationError struct {
	field  string
	reason string
	cause  error
	key    bool
}

// Field function returns field value.
func (e AddressReqValidationError) Field() string { return e.field }

// Reason function returns reason value.
func (e AddressReqValidationError) Reason() string { return e.reason }

// Cause function returns cause value.
func (e AddressReqValidationError) Cause() error { return e.cause }

// Key function returns key value.
func (e AddressReqValidationError) Key() bool { return e.key }

// ErrorName returns error name.
func (e AddressReqValidationError) ErrorName() string { return "AddressReqValidationError" }

// Error satisfies the builtin error interface
func (e AddressReqValidationError) Error() string {
	cause := ""
	if e.cause != nil {
		cause = fmt.Sprintf(" | caused by: %v", e.cause)
	}

	key := ""
	if e.key {
		key = "key for "
	}

	return fmt.Sprintf(
		"invalid %sAddressReq.%s: %s%s",
		key,
		e.field,
		e.reason,
		cause)
}

var _ error = AddressReqValidationError{}

var _ interface {
	Field() string
	Reason() string
	Key() bool
	Cause() error
	ErrorName() string
} = AddressReqValidationError{}

// Validate checks the field values on CheckResponse with the rules defined in
// the proto definition for this message. If any rules are violated, the first
// error encountered is returned, or nil if there are no violations.
func (m *CheckResponse) Validate() error {
	return m.validate(false)
}

// ValidateAll checks the field values on CheckResponse with the rules defined
// in the proto definition for this message. If any rules are violated, the
// result is a list of violation errors wrapped in CheckResponseMultiError, or
// nil if none found.
func (m *CheckResponse) ValidateAll() error {
	return m.validate(true)
}

func (m *CheckResponse) validate(all bool) error {
	if m == nil {
		return nil
	}

	var errors []error

	// no validation rules for Success

	if len(errors) > 0 {
		return CheckResponseMultiError(errors)
	}

	return nil
}

// CheckResponseMultiError is an error wrapping multiple validation errors
// returned by CheckResponse.ValidateAll() if the designated constraints
// aren't met.
type CheckResponseMultiError []error

// Error returns a concatenation of all the error messages it wraps.
func (m CheckResponseMultiError) Error() string {
	var msgs []string
	for _, err := range m {
		msgs = append(msgs, err.Error())
	}
	return strings.Join(msgs, "; ")
}

// AllErrors returns a list of validation violation errors.
func (m CheckResponseMultiError) AllErrors() []error { return m }

// CheckResponseValidationError is the validation error returned by
// CheckResponse.Validate if the designated constraints aren't met.
type CheckResponseValidationError struct {
	field  string
	reason string
	cause  error
	key    bool
}

// Field function returns field value.
func (e CheckResponseValidationError) Field() string { return e.field }

// Reason function returns reason value.
func (e CheckResponseValidationError) Reason() string { return e.reason }

// Cause function returns cause value.
func (e CheckResponseValidationError) Cause() error { return e.cause }

// Key function returns key value.
func (e CheckResponseValidationError) Key() bool { return e.key }

// ErrorName returns error name.
func (e CheckResponseValidationError) ErrorName() string { return "CheckResponseValidationError" }

// Error satisfies the builtin error interface
func (e CheckResponseValidationError) Error() string {
	cause := ""
	if e.cause != nil {
		cause = fmt.Sprintf(" | caused by: %v", e.cause)
	}

	key := ""
	if e.key {
		key = "key for "
	}

	return fmt.Sprintf(
		"invalid %sCheckResponse.%s: %s%s",
		key,
		e.field,
		e.reason,
		cause)
}

var _ error = CheckResponseValidationError{}

var _ interface {
	Field() string
	Reason() string
	Key() bool
	Cause() error
	ErrorName() string
} = CheckResponseValidationError{}

// Validate checks the field values on RegisterReply with the rules defined in
// the proto definition for this message. If any rules are violated, the first
// error encountered is returned, or nil if there are no violations.
func (m *RegisterReply) Validate() error {
	return m.validate(false)
}

// ValidateAll checks the field values on RegisterReply with the rules defined
// in the proto definition for this message. If any rules are violated, the
// result is a list of violation errors wrapped in RegisterReplyMultiError, or
// nil if none found.
func (m *RegisterReply) ValidateAll() error {
	return m.validate(true)
}

func (m *RegisterReply) validate(all bool) error {
	if m == nil {
		return nil
	}

	var errors []error

	// no validation rules for Id

	// no validation rules for Mobile

	// no validation rules for Username

	// no validation rules for Token

	// no validation rules for ExpiredAt

	if len(errors) > 0 {
		return RegisterReplyMultiError(errors)
	}

	return nil
}

// RegisterReplyMultiError is an error wrapping multiple validation errors
// returned by RegisterReply.ValidateAll() if the designated constraints
// aren't met.
type RegisterReplyMultiError []error

// Error returns a concatenation of all the error messages it wraps.
func (m RegisterReplyMultiError) Error() string {
	var msgs []string
	for _, err := range m {
		msgs = append(msgs, err.Error())
	}
	return strings.Join(msgs, "; ")
}

// AllErrors returns a list of validation violation errors.
func (m RegisterReplyMultiError) AllErrors() []error { return m }

// RegisterReplyValidationError is the validation error returned by
// RegisterReply.Validate if the designated constraints aren't met.
type RegisterReplyValidationError struct {
	field  string
	reason string
	cause  error
	key    bool
}

// Field function returns field value.
func (e RegisterReplyValidationError) Field() string { return e.field }

// Reason function returns reason value.
func (e RegisterReplyValidationError) Reason() string { return e.reason }

// Cause function returns cause value.
func (e RegisterReplyValidationError) Cause() error { return e.cause }

// Key function returns key value.
func (e RegisterReplyValidationError) Key() bool { return e.key }

// ErrorName returns error name.
func (e RegisterReplyValidationError) ErrorName() string { return "RegisterReplyValidationError" }

// Error satisfies the builtin error interface
func (e RegisterReplyValidationError) Error() string {
	cause := ""
	if e.cause != nil {
		cause = fmt.Sprintf(" | caused by: %v", e.cause)
	}

	key := ""
	if e.key {
		key = "key for "
	}

	return fmt.Sprintf(
		"invalid %sRegisterReply.%s: %s%s",
		key,
		e.field,
		e.reason,
		cause)
}

var _ error = RegisterReplyValidationError{}

var _ interface {
	Field() string
	Reason() string
	Key() bool
	Cause() error
	ErrorName() string
} = RegisterReplyValidationError{}

// Validate checks the field values on RegisterReq with the rules defined in
// the proto definition for this message. If any rules are violated, the first
// error encountered is returned, or nil if there are no violations.
func (m *RegisterReq) Validate() error {
	return m.validate(false)
}

// ValidateAll checks the field values on RegisterReq with the rules defined in
// the proto definition for this message. If any rules are violated, the
// result is a list of violation errors wrapped in RegisterReqMultiError, or
// nil if none found.
func (m *RegisterReq) ValidateAll() error {
	return m.validate(true)
}

func (m *RegisterReq) validate(all bool) error {
	if m == nil {
		return nil
	}

	var errors []error

	if utf8.RuneCountInString(m.GetMobile()) != 11 {
		err := RegisterReqValidationError{
			field:  "Mobile",
			reason: "value length must be 11 runes",
		}
		if !all {
			return err
		}
		errors = append(errors, err)

	}

	if l := utf8.RuneCountInString(m.GetUsername()); l < 3 || l > 15 {
		err := RegisterReqValidationError{
			field:  "Username",
			reason: "value length must be between 3 and 15 runes, inclusive",
		}
		if !all {
			return err
		}
		errors = append(errors, err)
	}

	if utf8.RuneCountInString(m.GetPassword()) < 8 {
		err := RegisterReqValidationError{
			field:  "Password",
			reason: "value length must be at least 8 runes",
		}
		if !all {
			return err
		}
		errors = append(errors, err)
	}

	if len(errors) > 0 {
		return RegisterReqMultiError(errors)
	}

	return nil
}

// RegisterReqMultiError is an error wrapping multiple validation errors
// returned by RegisterReq.ValidateAll() if the designated constraints aren't met.
type RegisterReqMultiError []error

// Error returns a concatenation of all the error messages it wraps.
func (m RegisterReqMultiError) Error() string {
	var msgs []string
	for _, err := range m {
		msgs = append(msgs, err.Error())
	}
	return strings.Join(msgs, "; ")
}

// AllErrors returns a list of validation violation errors.
func (m RegisterReqMultiError) AllErrors() []error { return m }

// RegisterReqValidationError is the validation error returned by
// RegisterReq.Validate if the designated constraints aren't met.
type RegisterReqValidationError struct {
	field  string
	reason string
	cause  error
	key    bool
}

// Field function returns field value.
func (e RegisterReqValidationError) Field() string { return e.field }

// Reason function returns reason value.
func (e RegisterReqValidationError) Reason() string { return e.reason }

// Cause function returns cause value.
func (e RegisterReqValidationError) Cause() error { return e.cause }

// Key function returns key value.
func (e RegisterReqValidationError) Key() bool { return e.key }

// ErrorName returns error name.
func (e RegisterReqValidationError) ErrorName() string { return "RegisterReqValidationError" }

// Error satisfies the builtin error interface
func (e RegisterReqValidationError) Error() string {
	cause := ""
	if e.cause != nil {
		cause = fmt.Sprintf(" | caused by: %v", e.cause)
	}

	key := ""
	if e.key {
		key = "key for "
	}

	return fmt.Sprintf(
		"invalid %sRegisterReq.%s: %s%s",
		key,
		e.field,
		e.reason,
		cause)
}

var _ error = RegisterReqValidationError{}

var _ interface {
	Field() string
	Reason() string
	Key() bool
	Cause() error
	ErrorName() string
} = RegisterReqValidationError{}

// Validate checks the field values on LoginReq with the rules defined in the
// proto definition for this message. If any rules are violated, the first
// error encountered is returned, or nil if there are no violations.
func (m *LoginReq) Validate() error {
	return m.validate(false)
}

// ValidateAll checks the field values on LoginReq with the rules defined in
// the proto definition for this message. If any rules are violated, the
// result is a list of violation errors wrapped in LoginReqMultiError, or nil
// if none found.
func (m *LoginReq) ValidateAll() error {
	return m.validate(true)
}

func (m *LoginReq) validate(all bool) error {
	if m == nil {
		return nil
	}

	var errors []error

	if utf8.RuneCountInString(m.GetUsername()) < 3 {
		err := LoginReqValidationError{
			field:  "Username",
			reason: "value length must be at least 3 runes",
		}
		if !all {
			return err
		}
		errors = append(errors, err)
	}

	if utf8.RuneCountInString(m.GetPassword()) < 8 {
		err := LoginReqValidationError{
			field:  "Password",
			reason: "value length must be at least 8 runes",
		}
		if !all {
			return err
		}
		errors = append(errors, err)
	}

	if len(errors) > 0 {
		return LoginReqMultiError(errors)
	}

	return nil
}

// LoginReqMultiError is an error wrapping multiple validation errors returned
// by LoginReq.ValidateAll() if the designated constraints aren't met.
type LoginReqMultiError []error

// Error returns a concatenation of all the error messages it wraps.
func (m LoginReqMultiError) Error() string {
	var msgs []string
	for _, err := range m {
		msgs = append(msgs, err.Error())
	}
	return strings.Join(msgs, "; ")
}

// AllErrors returns a list of validation violation errors.
func (m LoginReqMultiError) AllErrors() []error { return m }

// LoginReqValidationError is the validation error returned by
// LoginReq.Validate if the designated constraints aren't met.
type LoginReqValidationError struct {
	field  string
	reason string
	cause  error
	key    bool
}

// Field function returns field value.
func (e LoginReqValidationError) Field() string { return e.field }

// Reason function returns reason value.
func (e LoginReqValidationError) Reason() string { return e.reason }

// Cause function returns cause value.
func (e LoginReqValidationError) Cause() error { return e.cause }

// Key function returns key value.
func (e LoginReqValidationError) Key() bool { return e.key }

// ErrorName returns error name.
func (e LoginReqValidationError) ErrorName() string { return "LoginReqValidationError" }

// Error satisfies the builtin error interface
func (e LoginReqValidationError) Error() string {
	cause := ""
	if e.cause != nil {
		cause = fmt.Sprintf(" | caused by: %v", e.cause)
	}

	key := ""
	if e.key {
		key = "key for "
	}

	return fmt.Sprintf(
		"invalid %sLoginReq.%s: %s%s",
		key,
		e.field,
		e.reason,
		cause)
}

var _ error = LoginReqValidationError{}

var _ interface {
	Field() string
	Reason() string
	Key() bool
	Cause() error
	ErrorName() string
} = LoginReqValidationError{}

// Validate checks the field values on UserDetailResponse with the rules
// defined in the proto definition for this message. If any rules are
// violated, the first error encountered is returned, or nil if there are no violations.
func (m *UserDetailResponse) Validate() error {
	return m.validate(false)
}

// ValidateAll checks the field values on UserDetailResponse with the rules
// defined in the proto definition for this message. If any rules are
// violated, the result is a list of violation errors wrapped in
// UserDetailResponseMultiError, or nil if none found.
func (m *UserDetailResponse) ValidateAll() error {
	return m.validate(true)
}

func (m *UserDetailResponse) validate(all bool) error {
	if m == nil {
		return nil
	}

	var errors []error

	// no validation rules for Id

	// no validation rules for Mobile

	// no validation rules for NickName

	// no validation rules for Birthday

	// no validation rules for Gender

	// no validation rules for Role

	if len(errors) > 0 {
		return UserDetailResponseMultiError(errors)
	}

	return nil
}

// UserDetailResponseMultiError is an error wrapping multiple validation errors
// returned by UserDetailResponse.ValidateAll() if the designated constraints
// aren't met.
type UserDetailResponseMultiError []error

// Error returns a concatenation of all the error messages it wraps.
func (m UserDetailResponseMultiError) Error() string {
	var msgs []string
	for _, err := range m {
		msgs = append(msgs, err.Error())
	}
	return strings.Join(msgs, "; ")
}

// AllErrors returns a list of validation violation errors.
func (m UserDetailResponseMultiError) AllErrors() []error { return m }

// UserDetailResponseValidationError is the validation error returned by
// UserDetailResponse.Validate if the designated constraints aren't met.
type UserDetailResponseValidationError struct {
	field  string
	reason string
	cause  error
	key    bool
}

// Field function returns field value.
func (e UserDetailResponseValidationError) Field() string { return e.field }

// Reason function returns reason value.
func (e UserDetailResponseValidationError) Reason() string { return e.reason }

// Cause function returns cause value.
func (e UserDetailResponseValidationError) Cause() error { return e.cause }

// Key function returns key value.
func (e UserDetailResponseValidationError) Key() bool { return e.key }

// ErrorName returns error name.
func (e UserDetailResponseValidationError) ErrorName() string {
	return "UserDetailResponseValidationError"
}

// Error satisfies the builtin error interface
func (e UserDetailResponseValidationError) Error() string {
	cause := ""
	if e.cause != nil {
		cause = fmt.Sprintf(" | caused by: %v", e.cause)
	}

	key := ""
	if e.key {
		key = "key for "
	}

	return fmt.Sprintf(
		"invalid %sUserDetailResponse.%s: %s%s",
		key,
		e.field,
		e.reason,
		cause)
}

var _ error = UserDetailResponseValidationError{}

var _ interface {
	Field() string
	Reason() string
	Key() bool
	Cause() error
	ErrorName() string
} = UserDetailResponseValidationError{}

// Validate checks the field values on CaptchaReply with the rules defined in
// the proto definition for this message. If any rules are violated, the first
// error encountered is returned, or nil if there are no violations.
func (m *CaptchaReply) Validate() error {
	return m.validate(false)
}

// ValidateAll checks the field values on CaptchaReply with the rules defined
// in the proto definition for this message. If any rules are violated, the
// result is a list of violation errors wrapped in CaptchaReplyMultiError, or
// nil if none found.
func (m *CaptchaReply) ValidateAll() error {
	return m.validate(true)
}

func (m *CaptchaReply) validate(all bool) error {
	if m == nil {
		return nil
	}

	var errors []error

	// no validation rules for CaptchaId

	// no validation rules for PicPath

	if len(errors) > 0 {
		return CaptchaReplyMultiError(errors)
	}

	return nil
}

// CaptchaReplyMultiError is an error wrapping multiple validation errors
// returned by CaptchaReply.ValidateAll() if the designated constraints aren't met.
type CaptchaReplyMultiError []error

// Error returns a concatenation of all the error messages it wraps.
func (m CaptchaReplyMultiError) Error() string {
	var msgs []string
	for _, err := range m {
		msgs = append(msgs, err.Error())
	}
	return strings.Join(msgs, "; ")
}

// AllErrors returns a list of validation violation errors.
func (m CaptchaReplyMultiError) AllErrors() []error { return m }

// CaptchaReplyValidationError is the validation error returned by
// CaptchaReply.Validate if the designated constraints aren't met.
type CaptchaReplyValidationError struct {
	field  string
	reason string
	cause  error
	key    bool
}

// Field function returns field value.
func (e CaptchaReplyValidationError) Field() string { return e.field }

// Reason function returns reason value.
func (e CaptchaReplyValidationError) Reason() string { return e.reason }

// Cause function returns cause value.
func (e CaptchaReplyValidationError) Cause() error { return e.cause }

// Key function returns key value.
func (e CaptchaReplyValidationError) Key() bool { return e.key }

// ErrorName returns error name.
func (e CaptchaReplyValidationError) ErrorName() string { return "CaptchaReplyValidationError" }

// Error satisfies the builtin error interface
func (e CaptchaReplyValidationError) Error() string {
	cause := ""
	if e.cause != nil {
		cause = fmt.Sprintf(" | caused by: %v", e.cause)
	}

	key := ""
	if e.key {
		key = "key for "
	}

	return fmt.Sprintf(
		"invalid %sCaptchaReply.%s: %s%s",
		key,
		e.field,
		e.reason,
		cause)
}

var _ error = CaptchaReplyValidationError{}

var _ interface {
	Field() string
	Reason() string
	Key() bool
	Cause() error
	ErrorName() string
} = CaptchaReplyValidationError{}


================================================
FILE: admin/api/admin/v1/admin.proto
================================================
syntax = "proto3";

package admin.admin.v1;
// 这里可以把 proto 文件下载下来,放到项目的 third_party 目录下
import "validate/validate.proto";
import "google/api/annotations.proto";
import "google/protobuf/empty.proto";

option go_package = "admin/api/admin/v1;v1";
// The admin service definition.
service admin {
  rpc Register (RegisterReq) returns (RegisterReply) {
    option (google.api.http) = {
      post: "/api/users/register",
      body: "*",
    };
  }
  rpc Login (LoginReq) returns (RegisterReply) {
    option (google.api.http) = {
      post: "/api/users/login",
      body: "*",
    };
  }
  rpc Captcha (google.protobuf.Empty) returns (CaptchaReply) {
    option (google.api.http) = {
      get: "/api/users/captcha",
    };
  }
  rpc Detail (google.protobuf.Empty) returns (UserDetailResponse) {
    option (google.api.http) = {
      get: "/api/users/detail",
    };
  }
  rpc CreateAddress (CreateAddressReq) returns (AddressInfo) {
    option (google.api.http) = {
      post: "/api/address/create",
      body: "*",
    };
  }
  rpc AddressListByUid (google.protobuf.Empty) returns (ListAddressReply) {
    option (google.api.http) = {
      get: "/api/address/list/uid",
    };
  }
  rpc UpdateAddress (UpdateAddressReq) returns (CheckResponse) {
    option (google.api.http) = {
      put: "/api/address/update",
      body: "*",
    };
  }
  rpc DefaultAddress (AddressReq) returns (CheckResponse) {
    option (google.api.http) = {
      put: "/api/address/default",
      body: "*",
    };
  }
  rpc DeleteAddress (AddressReq) returns (CheckResponse) {
    option (google.api.http) = {
      delete: "/api/address/delete",
    };
  }
}

message CreateAddressReq {
  int64 uid = 1;
  string name = 2 [(validate.rules).string ={min_len: 1}];
  string mobile = 3 [(validate.rules).string.len = 11];
  string Province = 4 [(validate.rules).string ={min_len: 1}];
  string City = 5 [(validate.rules).string ={min_len: 1}];
  string Districts = 6 [(validate.rules).string ={min_len: 1}];
  string address = 7 [(validate.rules).string ={min_len: 1}];
  string post_code = 8;
  int32 is_default = 9;
}

message UpdateAddressReq {
  int64 uid = 1;
  string name = 2;
  string mobile = 3 [(validate.rules).string.len = 11];
  string Province = 4 [(validate.rules).string ={min_len: 1}];
  string City = 5 [(validate.rules).string ={min_len: 1}];
  string Districts = 6 [(validate.rules).string ={min_len: 1}];
  string address = 7 [(validate.rules).string ={min_len: 1}];
  string post_code = 8;
  int32 is_default = 9;
  int64 id = 10 [(validate.rules).int64.gte = 1];
}

message AddressInfo {
  int64 id = 1;
  string name = 2 [(validate.rules).string ={min_len: 1}];
  string mobile = 3 [(validate.rules).string.len = 11];
  string Province = 4;
  string City = 5;
  string Districts = 6;
  string address = 7;
  string post_code = 8;
  int32 is_default = 9;
}

message ListAddressReq {
  int64 uid = 1;
}

message ListAddressReply {
  repeated AddressInfo results = 1;
}

message AddressReq {
  int64 id = 1 [(validate.rules).int64.gte = 1];
  int64 uid = 2;
}

message CheckResponse{
  bool success = 1;
}

// Data returned by registration and login
message RegisterReply {
  int64 id = 1;
  string mobile = 3;
  string username = 4;
  string token = 5;
  int64 expiredAt = 6;
}

message RegisterReq {
  string mobile = 1 [(validate.rules).string.len = 11];
  string username = 2 [(validate.rules).string = {min_len: 3, max_len: 15}];
  string password = 3 [(validate.rules).string = {min_len: 8}];
}

message LoginReq {
  string username = 1 [(validate.rules).string = {min_len: 3}];
  string password = 2 [(validate.rules).string = {min_len: 8}];
//  string captcha = 3 [(validate.rules).string = {min_len: 5,max_len:5}];
//  string captchaId = 4  [(validate.rules).string ={min_len: 1}];
}

// user Detail returned
message UserDetailResponse{
  int64 id = 1;
  string mobile = 2;
  string nickName = 3;
  int64 birthday = 4;
  string gender = 5;
  int32 role = 6;
}

message CaptchaReply{
  string captchaId = 1;
  string picPath = 2;
}

================================================
FILE: admin/api/admin/v1/admin_grpc.pb.go
================================================
// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
// versions:
// - protoc-gen-go-grpc v1.2.0
// - protoc             v3.17.3
// source: api/admin/v1/admin.proto

package v1

import (
	context "context"
	grpc "google.golang.org/grpc"
	codes "google.golang.org/grpc/codes"
	status "google.golang.org/grpc/status"
	emptypb "google.golang.org/protobuf/types/known/emptypb"
)

// This is a compile-time assertion to ensure that this generated file
// is compatible with the grpc package it is being compiled against.
// Requires gRPC-Go v1.32.0 or later.
const _ = grpc.SupportPackageIsVersion7

// AdminClient is the client API for Admin service.
//
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
type AdminClient interface {
	Register(ctx context.Context, in *RegisterReq, opts ...grpc.CallOption) (*RegisterReply, error)
	Login(ctx context.Context, in *LoginReq, opts ...grpc.CallOption) (*RegisterReply, error)
	Captcha(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*CaptchaReply, error)
	Detail(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*UserDetailResponse, error)
	CreateAddress(ctx context.Context, in *CreateAddressReq, opts ...grpc.CallOption) (*AddressInfo, error)
	AddressListByUid(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*ListAddressReply, error)
	UpdateAddress(ctx context.Context, in *UpdateAddressReq, opts ...grpc.CallOption) (*CheckResponse, error)
	DefaultAddress(ctx context.Context, in *AddressReq, opts ...grpc.CallOption) (*CheckResponse, error)
	DeleteAddress(ctx context.Context, in *AddressReq, opts ...grpc.CallOption) (*CheckResponse, error)
}

type adminClient struct {
	cc grpc.ClientConnInterface
}

func NewAdminClient(cc grpc.ClientConnInterface) AdminClient {
	return &adminClient{cc}
}

func (c *adminClient) Register(ctx context.Context, in *RegisterReq, opts ...grpc.CallOption) (*RegisterReply, error) {
	out := new(RegisterReply)
	err := c.cc.Invoke(ctx, "/admin.admin.v1.admin/Register", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *adminClient) Login(ctx context.Context, in *LoginReq, opts ...grpc.CallOption) (*RegisterReply, error) {
	out := new(RegisterReply)
	err := c.cc.Invoke(ctx, "/admin.admin.v1.admin/Login", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *adminClient) Captcha(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*CaptchaReply, error) {
	out := new(CaptchaReply)
	err := c.cc.Invoke(ctx, "/admin.admin.v1.admin/Captcha", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *adminClient) Detail(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*UserDetailResponse, error) {
	out := new(UserDetailResponse)
	err := c.cc.Invoke(ctx, "/admin.admin.v1.admin/Detail", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *adminClient) CreateAddress(ctx context.Context, in *CreateAddressReq, opts ...grpc.CallOption) (*AddressInfo, error) {
	out := new(AddressInfo)
	err := c.cc.Invoke(ctx, "/admin.admin.v1.admin/CreateAddress", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *adminClient) AddressListByUid(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*ListAddressReply, error) {
	out := new(ListAddressReply)
	err := c.cc.Invoke(ctx, "/admin.admin.v1.admin/AddressListByUid", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *adminClient) UpdateAddress(ctx context.Context, in *UpdateAddressReq, opts ...grpc.CallOption) (*CheckResponse, error) {
	out := new(CheckResponse)
	err := c.cc.Invoke(ctx, "/admin.admin.v1.admin/UpdateAddress", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *adminClient) DefaultAddress(ctx context.Context, in *AddressReq, opts ...grpc.CallOption) (*CheckResponse, error) {
	out := new(CheckResponse)
	err := c.cc.Invoke(ctx, "/admin.admin.v1.admin/DefaultAddress", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *adminClient) DeleteAddress(ctx context.Context, in *AddressReq, opts ...grpc.CallOption) (*CheckResponse, error) {
	out := new(CheckResponse)
	err := c.cc.Invoke(ctx, "/admin.admin.v1.admin/DeleteAddress", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

// AdminServer is the s API for Admin service.
// All implementations must embed UnimplementedAdminServer
// for forward compatibility
type AdminServer interface {
	Register(context.Context, *RegisterReq) (*RegisterReply, error)
	Login(context.Context, *LoginReq) (*RegisterReply, error)
	Captcha(context.Context, *emptypb.Empty) (*CaptchaReply, error)
	Detail(context.Context, *emptypb.Empty) (*UserDetailResponse, error)
	CreateAddress(context.Context, *CreateAddressReq) (*AddressInfo, error)
	AddressListByUid(context.Context, *emptypb.Empty) (*ListAddressReply, error)
	UpdateAddress(context.Context, *UpdateAddressReq) (*CheckResponse, error)
	DefaultAddress(context.Context, *AddressReq) (*CheckResponse, error)
	DeleteAddress(context.Context, *AddressReq) (*CheckResponse, error)
	mustEmbedUnimplementedAdminServer()
}

// UnimplementedAdminServer must be embedded to have forward compatible implementations.
type UnimplementedAdminServer struct {
}

func (UnimplementedAdminServer) Register(context.Context, *RegisterReq) (*RegisterReply, error) {
	return nil, status.Errorf(codes.Unimplemented, "method Register not implemented")
}
func (UnimplementedAdminServer) Login(context.Context, *LoginReq) (*RegisterReply, error) {
	return nil, status.Errorf(codes.Unimplemented, "method Login not implemented")
}
func (UnimplementedAdminServer) Captcha(context.Context, *emptypb.Empty) (*CaptchaReply, error) {
	return nil, status.Errorf(codes.Unimplemented, "method Captcha not implemented")
}
func (UnimplementedAdminServer) Detail(context.Context, *emptypb.Empty) (*UserDetailResponse, error) {
	return nil, status.Errorf(codes.Unimplemented, "method Detail not implemented")
}
func (UnimplementedAdminServer) CreateAddress(context.Context, *CreateAddressReq) (*AddressInfo, error) {
	return nil, status.Errorf(codes.Unimplemented, "method CreateAddress not implemented")
}
func (UnimplementedAdminServer) AddressListByUid(context.Context, *emptypb.Empty) (*ListAddressReply, error) {
	return nil, status.Errorf(codes.Unimplemented, "method AddressListByUid not implemented")
}
func (UnimplementedAdminServer) UpdateAddress(context.Context, *UpdateAddressReq) (*CheckResponse, error) {
	return nil, status.Errorf(codes.Unimplemented, "method UpdateAddress not implemented")
}
func (UnimplementedAdminServer) DefaultAddress(context.Context, *AddressReq) (*CheckResponse, error) {
	return nil, status.Errorf(codes.Unimplemented, "method DefaultAddress not implemented")
}
func (UnimplementedAdminServer) DeleteAddress(context.Context, *AddressReq) (*CheckResponse, error) {
	return nil, status.Errorf(codes.Unimplemented, "method DeleteAddress not implemented")
}
func (UnimplementedAdminServer) mustEmbedUnimplementedAdminServer() {}

// UnsafeAdminServer may be embedded to opt out of forward compatibility for this service.
// Use of this interface is not recommended, as added methods to AdminServer will
// result in compilation errors.
type UnsafeAdminServer interface {
	mustEmbedUnimplementedAdminServer()
}

func RegisterAdminServer(s grpc.ServiceRegistrar, srv AdminServer) {
	s.RegisterService(&Admin_ServiceDesc, srv)
}

func _Admin_Register_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(RegisterReq)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(AdminServer).Register(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/admin.admin.v1.admin/Register",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(AdminServer).Register(ctx, req.(*RegisterReq))
	}
	return interceptor(ctx, in, info, handler)
}

func _Admin_Login_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(LoginReq)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(AdminServer).Login(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/admin.admin.v1.admin/Login",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(AdminServer).Login(ctx, req.(*LoginReq))
	}
	return interceptor(ctx, in, info, handler)
}

func _Admin_Captcha_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(emptypb.Empty)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(AdminServer).Captcha(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/admin.admin.v1.admin/Captcha",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(AdminServer).Captcha(ctx, req.(*emptypb.Empty))
	}
	return interceptor(ctx, in, info, handler)
}

func _Admin_Detail_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(emptypb.Empty)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(AdminServer).Detail(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/admin.admin.v1.admin/Detail",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(AdminServer).Detail(ctx, req.(*emptypb.Empty))
	}
	return interceptor(ctx, in, info, handler)
}

func _Admin_CreateAddress_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(CreateAddressReq)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(AdminServer).CreateAddress(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/admin.admin.v1.admin/CreateAddress",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(AdminServer).CreateAddress(ctx, req.(*CreateAddressReq))
	}
	return interceptor(ctx, in, info, handler)
}

func _Admin_AddressListByUid_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(emptypb.Empty)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(AdminServer).AddressListByUid(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/admin.admin.v1.admin/AddressListByUid",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(AdminServer).AddressListByUid(ctx, req.(*emptypb.Empty))
	}
	return interceptor(ctx, in, info, handler)
}

func _Admin_UpdateAddress_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(UpdateAddressReq)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(AdminServer).UpdateAddress(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/admin.admin.v1.admin/UpdateAddress",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(AdminServer).UpdateAddress(ctx, req.(*UpdateAddressReq))
	}
	return interceptor(ctx, in, info, handler)
}

func _Admin_DefaultAddress_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(AddressReq)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(AdminServer).DefaultAddress(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/admin.admin.v1.admin/DefaultAddress",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(AdminServer).DefaultAddress(ctx, req.(*AddressReq))
	}
	return interceptor(ctx, in, info, handler)
}

func _Admin_DeleteAddress_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(AddressReq)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(AdminServer).DeleteAddress(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/admin.admin.v1.admin/DeleteAddress",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(AdminServer).DeleteAddress(ctx, req.(*AddressReq))
	}
	return interceptor(ctx, in, info, handler)
}

// Admin_ServiceDesc is the grpc.ServiceDesc for Admin service.
// It's only intended for direct use with grpc.RegisterService,
// and not to be introspected or modified (even as a copy)
var Admin_ServiceDesc = grpc.ServiceDesc{
	ServiceName: "admin.admin.v1.admin",
	HandlerType: (*AdminServer)(nil),
	Methods: []grpc.MethodDesc{
		{
			MethodName: "Register",
			Handler:    _Admin_Register_Handler,
		},
		{
			MethodName: "Login",
			Handler:    _Admin_Login_Handler,
		},
		{
			MethodName: "Captcha",
			Handler:    _Admin_Captcha_Handler,
		},
		{
			MethodName: "Detail",
			Handler:    _Admin_Detail_Handler,
		},
		{
			MethodName: "CreateAddress",
			Handler:    _Admin_CreateAddress_Handler,
		},
		{
			MethodName: "AddressListByUid",
			Handler:    _Admin_AddressListByUid_Handler,
		},
		{
			MethodName: "UpdateAddress",
			Handler:    _Admin_UpdateAddress_Handler,
		},
		{
			MethodName: "DefaultAddress",
			Handler:    _Admin_DefaultAddress_Handler,
		},
		{
			MethodName: "DeleteAddress",
			Handler:    _Admin_DeleteAddress_Handler,
		},
	},
	Streams:  []grpc.StreamDesc{},
	Metadata: "api/admin/v1/admin.proto",
}


================================================
FILE: admin/api/admin/v1/admin_http.pb.go
================================================
// Code generated by protoc-gen-go-http. DO NOT EDIT.
// versions:
// protoc-gen-go-http v2.1.4

package v1

import (
	context "context"
	http "github.com/go-kratos/kratos/v2/transport/http"
	binding "github.com/go-kratos/kratos/v2/transport/http/binding"
	emptypb "google.golang.org/protobuf/types/known/emptypb"
)

// This is a compile-time assertion to ensure that this generated file
// is compatible with the kratos package it is being compiled against.
var _ = new(context.Context)
var _ = binding.EncodeURL

const _ = http.SupportPackageIsVersion1

type AdminHTTPServer interface {
	AddressListByUid(context.Context, *emptypb.Empty) (*ListAddressReply, error)
	Captcha(context.Context, *emptypb.Empty) (*CaptchaReply, error)
	CreateAddress(context.Context, *CreateAddressReq) (*AddressInfo, error)
	DefaultAddress(context.Context, *AddressReq) (*CheckResponse, error)
	DeleteAddress(context.Context, *AddressReq) (*CheckResponse, error)
	Detail(context.Context, *emptypb.Empty) (*UserDetailResponse, error)
	Login(context.Context, *LoginReq) (*RegisterReply, error)
	Register(context.Context, *RegisterReq) (*RegisterReply, error)
	UpdateAddress(context.Context, *UpdateAddressReq) (*CheckResponse, error)
}

func RegisterAdminHTTPServer(s *http.Server, srv AdminHTTPServer) {
	r := s.Route("/")
	r.POST("/api/users/register", _Admin_Register0_HTTP_Handler(srv))
	r.POST("/api/users/login", _Admin_Login0_HTTP_Handler(srv))
	r.GET("/api/users/captcha", _Admin_Captcha0_HTTP_Handler(srv))
	r.GET("/api/users/detail", _Admin_Detail0_HTTP_Handler(srv))
	r.POST("/api/address/create", _Admin_CreateAddress0_HTTP_Handler(srv))
	r.GET("/api/address/list/uid", _Admin_AddressListByUid0_HTTP_Handler(srv))
	r.PUT("/api/address/update", _Admin_UpdateAddress0_HTTP_Handler(srv))
	r.PUT("/api/address/default", _Admin_DefaultAddress0_HTTP_Handler(srv))
	r.DELETE("/api/address/delete", _Admin_DeleteAddress0_HTTP_Handler(srv))
}

func _Admin_Register0_HTTP_Handler(srv AdminHTTPServer) func(ctx http.Context) error {
	return func(ctx http.Context) error {
		var in RegisterReq
		if err := ctx.Bind(&in); err != nil {
			return err
		}
		http.SetOperation(ctx, "/admin.admin.v1.admin/Register")
		h := ctx.Middleware(func(ctx context.Context, req interface{}) (interface{}, error) {
			return srv.Register(ctx, req.(*RegisterReq))
		})
		out, err := h(ctx, &in)
		if err != nil {
			return err
		}
		reply := out.(*RegisterReply)
		return ctx.Result(200, reply)
	}
}

func _Admin_Login0_HTTP_Handler(srv AdminHTTPServer) func(ctx http.Context) error {
	return func(ctx http.Context) error {
		var in LoginReq
		if err := ctx.Bind(&in); err != nil {
			return err
		}
		http.SetOperation(ctx, "/admin.admin.v1.admin/Login")
		h := ctx.Middleware(func(ctx context.Context, req interface{}) (interface{}, error) {
			return srv.Login(ctx, req.(*LoginReq))
		})
		out, err := h(ctx, &in)
		if err != nil {
			return err
		}
		reply := out.(*RegisterReply)
		return ctx.Result(200, reply)
	}
}

func _Admin_Captcha0_HTTP_Handler(srv AdminHTTPServer) func(ctx http.Context) error {
	return func(ctx http.Context) error {
		var in emptypb.Empty
		if err := ctx.BindQuery(&in); err != nil {
			return err
		}
		http.SetOperation(ctx, "/admin.admin.v1.admin/Captcha")
		h := ctx.Middleware(func(ctx context.Context, req interface{}) (interface{}, error) {
			return srv.Captcha(ctx, req.(*emptypb.Empty))
		})
		out, err := h(ctx, &in)
		if err != nil {
			return err
		}
		reply := out.(*CaptchaReply)
		return ctx.Result(200, reply)
	}
}

func _Admin_Detail0_HTTP_Handler(srv AdminHTTPServer) func(ctx http.Context) error {
	return func(ctx http.Context) error {
		var in emptypb.Empty
		if err := ctx.BindQuery(&in); err != nil {
			return err
		}
		http.SetOperation(ctx, "/admin.admin.v1.admin/Detail")
		h := ctx.Middleware(func(ctx context.Context, req interface{}) (interface{}, error) {
			return srv.Detail(ctx, req.(*emptypb.Empty))
		})
		out, err := h(ctx, &in)
		if err != nil {
			return err
		}
		reply := out.(*UserDetailResponse)
		return ctx.Result(200, reply)
	}
}

func _Admin_CreateAddress0_HTTP_Handler(srv AdminHTTPServer) func(ctx http.Context) error {
	return func(ctx http.Context) error {
		var in CreateAddressReq
		if err := ctx.Bind(&in); err != nil {
			return err
		}
		http.SetOperation(ctx, "/admin.admin.v1.admin/CreateAddress")
		h := ctx.Middleware(func(ctx context.Context, req interface{}) (interface{}, error) {
			return srv.CreateAddress(ctx, req.(*CreateAddressReq))
		})
		out, err := h(ctx, &in)
		if err != nil {
			return err
		}
		reply := out.(*AddressInfo)
		return ctx.Result(200, reply)
	}
}

func _Admin_AddressListByUid0_HTTP_Handler(srv AdminHTTPServer) func(ctx http.Context) error {
	return func(ctx http.Context) error {
		var in emptypb.Empty
		if err := ctx.BindQuery(&in); err != nil {
			return err
		}
		http.SetOperation(ctx, "/admin.admin.v1.admin/AddressListByUid")
		h := ctx.Middleware(func(ctx context.Context, req interface{}) (interface{}, error) {
			return srv.AddressListByUid(ctx, req.(*emptypb.Empty))
		})
		out, err := h(ctx, &in)
		if err != nil {
			return err
		}
		reply := out.(*ListAddressReply)
		return ctx.Result(200, reply)
	}
}

func _Admin_UpdateAddress0_HTTP_Handler(srv AdminHTTPServer) func(ctx http.Context) error {
	return func(ctx http.Context) error {
		var in UpdateAddressReq
		if err := ctx.Bind(&in); err != nil {
			return err
		}
		http.SetOperation(ctx, "/admin.admin.v1.admin/UpdateAddress")
		h := ctx.Middleware(func(ctx context.Context, req interface{}) (interface{}, error) {
			return srv.UpdateAddress(ctx, req.(*UpdateAddressReq))
		})
		out, err := h(ctx, &in)
		if err != nil {
			return err
		}
		reply := out.(*CheckResponse)
		return ctx.Result(200, reply)
	}
}

func _Admin_DefaultAddress0_HTTP_Handler(srv AdminHTTPServer) func(ctx http.Context) error {
	return func(ctx http.Context) error {
		var in AddressReq
		if err := ctx.Bind(&in); err != nil {
			return err
		}
		http.SetOperation(ctx, "/admin.admin.v1.admin/DefaultAddress")
		h := ctx.Middleware(func(ctx context.Context, req interface{}) (interface{}, error) {
			return srv.DefaultAddress(ctx, req.(*AddressReq))
		})
		out, err := h(ctx, &in)
		if err != nil {
			return err
		}
		reply := out.(*CheckResponse)
		return ctx.Result(200, reply)
	}
}

func _Admin_DeleteAddress0_HTTP_Handler(srv AdminHTTPServer) func(ctx http.Context) error {
	return func(ctx http.Context) error {
		var in AddressReq
		if err := ctx.BindQuery(&in); err != nil {
			return err
		}
		http.SetOperation(ctx, "/admin.admin.v1.admin/DeleteAddress")
		h := ctx.Middleware(func(ctx context.Context, req interface{}) (interface{}, error) {
			return srv.DeleteAddress(ctx, req.(*AddressReq))
		})
		out, err := h(ctx, &in)
		if err != nil {
			return err
		}
		reply := out.(*CheckResponse)
		return ctx.Result(200, reply)
	}
}

type AdminHTTPClient interface {
	AddressListByUid(ctx context.Context, req *emptypb.Empty, opts ...http.CallOption) (rsp *ListAddressReply, err error)
	Captcha(ctx context.Context, req *emptypb.Empty, opts ...http.CallOption) (rsp *CaptchaReply, err error)
	CreateAddress(ctx context.Context, req *CreateAddressReq, opts ...http.CallOption) (rsp *AddressInfo, err error)
	DefaultAddress(ctx context.Context, req *AddressReq, opts ...http.CallOption) (rsp *CheckResponse, err error)
	DeleteAddress(ctx context.Context, req *AddressReq, opts ...http.CallOption) (rsp *CheckResponse, err error)
	Detail(ctx context.Context, req *emptypb.Empty, opts ...http.CallOption) (rsp *UserDetailResponse, err error)
	Login(ctx context.Context, req *LoginReq, opts ...http.CallOption) (rsp *RegisterReply, err error)
	Register(ctx context.Context, req *RegisterReq, opts ...http.CallOption) (rsp *RegisterReply, err error)
	UpdateAddress(ctx context.Context, req *UpdateAddressReq, opts ...http.CallOption) (rsp *CheckResponse, err error)
}

type AdminHTTPClientImpl struct {
	cc *http.Client
}

func NewAdminHTTPClient(client *http.Client) AdminHTTPClient {
	return &AdminHTTPClientImpl{client}
}

func (c *AdminHTTPClientImpl) AddressListByUid(ctx context.Context, in *emptypb.Empty, opts ...http.CallOption) (*ListAddressReply, error) {
	var out ListAddressReply
	pattern := "/api/address/list/uid"
	path := binding.EncodeURL(pattern, in, true)
	opts = append(opts, http.Operation("/admin.admin.v1.admin/AddressListByUid"))
	opts = append(opts, http.PathTemplate(pattern))
	err := c.cc.Invoke(ctx, "GET", path, nil, &out, opts...)
	if err != nil {
		return nil, err
	}
	return &out, err
}

func (c *AdminHTTPClientImpl) Captcha(ctx context.Context, in *emptypb.Empty, opts ...http.CallOption) (*CaptchaReply, error) {
	var out CaptchaReply
	pattern := "/api/users/captcha"
	path := binding.EncodeURL(pattern, in, true)
	opts = append(opts, http.Operation("/admin.admin.v1.admin/Captcha"))
	opts = append(opts, http.PathTemplate(pattern))
	err := c.cc.Invoke(ctx, "GET", path, nil, &out, opts...)
	if err != nil {
		return nil, err
	}
	return &out, err
}

func (c *AdminHTTPClientImpl) CreateAddress(ctx context.Context, in *CreateAddressReq, opts ...http.CallOption) (*AddressInfo, error) {
	var out AddressInfo
	pattern := "/api/address/create"
	path := binding.EncodeURL(pattern, in, false)
	opts = append(opts, http.Operation("/admin.admin.v1.admin/CreateAddress"))
	opts = append(opts, http.PathTemplate(pattern))
	err := c.cc.Invoke(ctx, "POST", path, in, &out, opts...)
	if err != nil {
		return nil, err
	}
	return &out, err
}

func (c *AdminHTTPClientImpl) DefaultAddress(ctx context.Context, in *AddressReq, opts ...http.CallOption) (*CheckResponse, error) {
	var out CheckResponse
	pattern := "/api/address/default"
	path := binding.EncodeURL(pattern, in, false)
	opts = append(opts, http.Operation("/admin.admin.v1.admin/DefaultAddress"))
	opts = append(opts, http.PathTemplate(pattern))
	err := c.cc.Invoke(ctx, "PUT", path, in, &out, opts...)
	if err != nil {
		return nil, err
	}
	return &out, err
}

func (c *AdminHTTPClientImpl) DeleteAddress(ctx context.Context, in *AddressReq, opts ...http.CallOption) (*CheckResponse, error) {
	var out CheckResponse
	pattern := "/api/address/delete"
	path := binding.EncodeURL(pattern, in, true)
	opts = append(opts, http.Operation("/admin.admin.v1.admin/DeleteAddress"))
	opts = append(opts, http.PathTemplate(pattern))
	err := c.cc.Invoke(ctx, "DELETE", path, nil, &out, opts...)
	if err != nil {
		return nil, err
	}
	return &out, err
}

func (c *AdminHTTPClientImpl) Detail(ctx context.Context, in *emptypb.Empty, opts ...http.CallOption) (*UserDetailResponse, error) {
	var out UserDetailResponse
	pattern := "/api/users/detail"
	path := binding.EncodeURL(pattern, in, true)
	opts = append(opts, http.Operation("/admin.admin.v1.admin/Detail"))
	opts = append(opts, http.PathTemplate(pattern))
	err := c.cc.Invoke(ctx, "GET", path, nil, &out, opts...)
	if err != nil {
		return nil, err
	}
	return &out, err
}

func (c *AdminHTTPClientImpl) Login(ctx context.Context, in *LoginReq, opts ...http.CallOption) (*RegisterReply, error) {
	var out RegisterReply
	pattern := "/api/users/login"
	path := binding.EncodeURL(pattern, in, false)
	opts = append(opts, http.Operation("/admin.admin.v1.admin/Login"))
	opts = append(opts, http.PathTemplate(pattern))
	err := c.cc.Invoke(ctx, "POST", path, in, &out, opts...)
	if err != nil {
		return nil, err
	}
	return &out, err
}

func (c *AdminHTTPClientImpl) Register(ctx context.Context, in *RegisterReq, opts ...http.CallOption) (*RegisterReply, error) {
	var out RegisterReply
	pattern := "/api/users/register"
	path := binding.EncodeURL(pattern, in, false)
	opts = append(opts, http.Operation("/admin.admin.v1.admin/Register"))
	opts = append(opts, http.PathTemplate(pattern))
	err := c.cc.Invoke(ctx, "POST", path, in, &out, opts...)
	if err != nil {
		return nil, err
	}
	return &out, err
}

func (c *AdminHTTPClientImpl) UpdateAddress(ctx context.Context, in *UpdateAddressReq, opts ...http.CallOption) (*CheckResponse, error) {
	var out CheckResponse
	pattern := "/api/address/update"
	path := binding.EncodeURL(pattern, in, false)
	opts = append(opts, http.Operation("/admin.admin.v1.admin/UpdateAddress"))
	opts = append(opts, http.PathTemplate(pattern))
	err := c.cc.Invoke(ctx, "PUT", path, in, &out, opts...)
	if err != nil {
		return nil, err
	}
	return &out, err
}


================================================
FILE: admin/api/admin/v1/error_reason.pb.go
================================================
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// 	protoc-gen-go v1.27.1
// 	protoc        v3.17.3
// source: api/admin/v1/error_reason.proto

package v1

import (
	_ "github.com/go-kratos/kratos/v2/errors"
	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
	reflect "reflect"
	sync "sync"
)

const (
	// Verify that this generated code is sufficiently up-to-date.
	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
	// Verify that runtime/protoimpl is sufficiently up-to-date.
	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)

type ErrorReason int32

const (
	ErrorReason_USER_NOT_FOUND  ErrorReason = 0
	ErrorReason_CONTENT_MISSING ErrorReason = 1
)

// Enum value maps for ErrorReason.
var (
	ErrorReason_name = map[int32]string{
		0: "USER_NOT_FOUND",
		1: "CONTENT_MISSING",
	}
	ErrorReason_value = map[string]int32{
		"USER_NOT_FOUND":  0,
		"CONTENT_MISSING": 1,
	}
)

func (x ErrorReason) Enum() *ErrorReason {
	p := new(ErrorReason)
	*p = x
	return p
}

func (x ErrorReason) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (ErrorReason) Descriptor() protoreflect.EnumDescriptor {
	return file_api_admin_v1_error_reason_proto_enumTypes[0].Descriptor()
}

func (ErrorReason) Type() protoreflect.EnumType {
	return &file_api_admin_v1_error_reason_proto_enumTypes[0]
}

func (x ErrorReason) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use ErrorReason.Descriptor instead.
func (ErrorReason) EnumDescriptor() ([]byte, []int) {
	return file_api_admin_v1_error_reason_proto_rawDescGZIP(), []int{0}
}

var File_api_admin_v1_error_reason_proto protoreflect.FileDescriptor

var file_api_admin_v1_error_reason_proto_rawDesc = []byte{
	0x0a, 0x1f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2f, 0x76, 0x31, 0x2f, 0x65,
	0x72, 0x72, 0x6f, 0x72, 0x5f, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74,
	0x6f, 0x12, 0x0d, 0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x2e, 0x76, 0x31,
	0x1a, 0x13, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x2f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x2e,
	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2a, 0x48, 0x0a, 0x0b, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x65,
	0x61, 0x73, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x0e, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x4e, 0x4f, 0x54,
	0x5f, 0x46, 0x4f, 0x55, 0x4e, 0x44, 0x10, 0x00, 0x1a, 0x04, 0xa8, 0x45, 0x94, 0x03, 0x12, 0x19,
	0x0a, 0x0f, 0x43, 0x4f, 0x4e, 0x54, 0x45, 0x4e, 0x54, 0x5f, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4e,
	0x47, 0x10, 0x01, 0x1a, 0x04, 0xa8, 0x45, 0x90, 0x03, 0x1a, 0x04, 0xa0, 0x45, 0xf4, 0x03, 0x42,
	0x40, 0x0a, 0x0f, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x65, 0x72, 0x72, 0x6f,
	0x72, 0x73, 0x50, 0x01, 0x5a, 0x15, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2f, 0x61, 0x70, 0x69, 0x2f,
	0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2f, 0x76, 0x31, 0x3b, 0x76, 0x31, 0xa2, 0x02, 0x13, 0x41, 0x50,
	0x49, 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x45, 0x72, 0x72, 0x6f, 0x72,
	0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}

var (
	file_api_admin_v1_error_reason_proto_rawDescOnce sync.Once
	file_api_admin_v1_error_reason_proto_rawDescData = file_api_admin_v1_error_reason_proto_rawDesc
)

func file_api_admin_v1_error_reason_proto_rawDescGZIP() []byte {
	file_api_admin_v1_error_reason_proto_rawDescOnce.Do(func() {
		file_api_admin_v1_error_reason_proto_rawDescData = protoimpl.X.CompressGZIP(file_api_admin_v1_error_reason_proto_rawDescData)
	})
	return file_api_admin_v1_error_reason_proto_rawDescData
}

var file_api_admin_v1_error_reason_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
var file_api_admin_v1_error_reason_proto_goTypes = []interface{}{
	(ErrorReason)(0), // 0: helloworld.v1.ErrorReason
}
var file_api_admin_v1_error_reason_proto_depIdxs = []int32{
	0, // [0:0] is the sub-list for method output_type
	0, // [0:0] is the sub-list for method input_type
	0, // [0:0] is the sub-list for extension type_name
	0, // [0:0] is the sub-list for extension extendee
	0, // [0:0] is the sub-list for field type_name
}

func init() { file_api_admin_v1_error_reason_proto_init() }
func file_api_admin_v1_error_reason_proto_init() {
	if File_api_admin_v1_error_reason_proto != nil {
		return
	}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: file_api_admin_v1_error_reason_proto_rawDesc,
			NumEnums:      1,
			NumMessages:   0,
			NumExtensions: 0,
			NumServices:   0,
		},
		GoTypes:           file_api_admin_v1_error_reason_proto_goTypes,
		DependencyIndexes: file_api_admin_v1_error_reason_proto_depIdxs,
		EnumInfos:         file_api_admin_v1_error_reason_proto_enumTypes,
	}.Build()
	File_api_admin_v1_error_reason_proto = out.File
	file_api_admin_v1_error_reason_proto_rawDesc = nil
	file_api_admin_v1_error_reason_proto_goTypes = nil
	file_api_admin_v1_error_reason_proto_depIdxs = nil
}


================================================
FILE: admin/api/admin/v1/error_reason.pb.validate.go
================================================
// Code generated by protoc-gen-validate. DO NOT EDIT.
// source: api/admin/v1/error_reason.proto

package v1

import (
	"bytes"
	"errors"
	"fmt"
	"net"
	"net/mail"
	"net/url"
	"regexp"
	"sort"
	"strings"
	"time"
	"unicode/utf8"

	"google.golang.org/protobuf/types/known/anypb"
)

// ensure the imports are used
var (
	_ = bytes.MinRead
	_ = errors.New("")
	_ = fmt.Print
	_ = utf8.UTFMax
	_ = (*regexp.Regexp)(nil)
	_ = (*strings.Reader)(nil)
	_ = net.IPv4len
	_ = time.Duration(0)
	_ = (*url.URL)(nil)
	_ = (*mail.Address)(nil)
	_ = anypb.Any{}
	_ = sort.Sort
)


================================================
FILE: admin/api/admin/v1/error_reason.proto
================================================
syntax = "proto3";

package helloworld.v1;
import "errors/errors.proto";

option go_package = "admin/api/admin/v1;v1";
option java_multiple_files = true;
option java_package = "admin.v1.errors";
option objc_class_prefix = "APIHelloworldErrors";

enum ErrorReason {
  option (errors.default_code) = 500;

  USER_NOT_FOUND = 0 [(errors.code) = 404];
  CONTENT_MISSING = 1 [(errors.code) = 400];
}


================================================
FILE: admin/api/admin/v1/error_reason_errors.pb.go
================================================
// Code generated by protoc-gen-go-errors. DO NOT EDIT.

package v1

import (
	fmt "fmt"
	errors "github.com/go-kratos/kratos/v2/errors"
)

// This is a compile-time assertion to ensure that this generated file
// is compatible with the kratos package it is being compiled against.
const _ = errors.SupportPackageIsVersion1

func IsUserNotFound(err error) bool {
	e := errors.FromError(err)
	return e.Reason == ErrorReason_USER_NOT_FOUND.String() && e.Code == 404
}

func ErrorUserNotFound(format string, args ...interface{}) *errors.Error {
	return errors.New(404, ErrorReason_USER_NOT_FOUND.String(), fmt.Sprintf(format, args...))
}

func IsContentMissing(err error) bool {
	e := errors.FromError(err)
	return e.Reason == ErrorReason_CONTENT_MISSING.String() && e.Code == 400
}

func ErrorContentMissing(format string, args ...interface{}) *errors.Error {
	return errors.New(400, ErrorReason_CONTENT_MISSING.String(), fmt.Sprintf(format, args...))
}


================================================
FILE: admin/api/service/user/v1/user.pb.go
================================================
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// 	protoc-gen-go v1.27.1
// 	protoc        v3.17.3
// source: api/service/user/v1/user.proto

package v1

import (
	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
	emptypb "google.golang.org/protobuf/types/known/emptypb"
	reflect "reflect"
	sync "sync"
)

const (
	// Verify that this generated code is sufficiently up-to-date.
	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
	// Verify that runtime/protoimpl is sufficiently up-to-date.
	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)

type ListAddressReq struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Uid int64 `protobuf:"varint,1,opt,name=uid,proto3" json:"uid,omitempty"`
}

func (x *ListAddressReq) Reset() {
	*x = ListAddressReq{}
	if protoimpl.UnsafeEnabled {
		mi := &file_api_service_user_v1_user_proto_msgTypes[0]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ListAddressReq) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ListAddressReq) ProtoMessage() {}

func (x *ListAddressReq) ProtoReflect() protoreflect.Message {
	mi := &file_api_service_user_v1_user_proto_msgTypes[0]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ListAddressReq.ProtoReflect.Descriptor instead.
func (*ListAddressReq) Descriptor() ([]byte, []int) {
	return file_api_service_user_v1_user_proto_rawDescGZIP(), []int{0}
}

func (x *ListAddressReq) GetUid() int64 {
	if x != nil {
		return x.Uid
	}
	return 0
}

type AddressInfo struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Id        int64  `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"`
	Name      string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
	Mobile    string `protobuf:"bytes,3,opt,name=mobile,proto3" json:"mobile,omitempty"`
	Province  string `protobuf:"bytes,4,opt,name=Province,proto3" json:"Province,omitempty"`
	City      string `protobuf:"bytes,5,opt,name=City,proto3" json:"City,omitempty"`
	Districts string `protobuf:"bytes,6,opt,name=Districts,proto3" json:"Districts,omitempty"`
	Address   string `protobuf:"bytes,7,opt,name=address,proto3" json:"address,omitempty"`
	PostCode  string `protobuf:"bytes,8,opt,name=post_code,json=postCode,proto3" json:"post_code,omitempty"`
	IsDefault int32  `protobuf:"varint,9,opt,name=is_default,json=isDefault,proto3" json:"is_default,omitempty"`
}

func (x *AddressInfo) Reset() {
	*x = AddressInfo{}
	if protoimpl.UnsafeEnabled {
		mi := &file_api_service_user_v1_user_proto_msgTypes[1]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *AddressInfo) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*AddressInfo) ProtoMessage() {}

func (x *AddressInfo) ProtoReflect() protoreflect.Message {
	mi := &file_api_service_user_v1_user_proto_msgTypes[1]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use AddressInfo.ProtoReflect.Descriptor instead.
func (*AddressInfo) Descriptor() ([]byte, []int) {
	return file_api_service_user_v1_user_proto_rawDescGZIP(), []int{1}
}

func (x *AddressInfo) GetId() int64 {
	if x != nil {
		return x.Id
	}
	return 0
}

func (x *AddressInfo) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

func (x *AddressInfo) GetMobile() string {
	if x != nil {
		return x.Mobile
	}
	return ""
}

func (x *AddressInfo) GetProvince() string {
	if x != nil {
		return x.Province
	}
	return ""
}

func (x *AddressInfo) GetCity() string {
	if x != nil {
		return x.City
	}
	return ""
}

func (x *AddressInfo) GetDistricts() string {
	if x != nil {
		return x.Districts
	}
	return ""
}

func (x *AddressInfo) GetAddress() string {
	if x != nil {
		return x.Address
	}
	return ""
}

func (x *AddressInfo) GetPostCode() string {
	if x != nil {
		return x.PostCode
	}
	return ""
}

func (x *AddressInfo) GetIsDefault() int32 {
	if x != nil {
		return x.IsDefault
	}
	return 0
}

type ListAddressReply struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Results []*AddressInfo `protobuf:"bytes,1,rep,name=results,proto3" json:"results,omitempty"`
}

func (x *ListAddressReply) Reset() {
	*x = ListAddressReply{}
	if protoimpl.UnsafeEnabled {
		mi := &file_api_service_user_v1_user_proto_msgTypes[2]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ListAddressReply) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ListAddressReply) ProtoMessage() {}

func (x *ListAddressReply) ProtoReflect() protoreflect.Message {
	mi := &file_api_service_user_v1_user_proto_msgTypes[2]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ListAddressReply.ProtoReflect.Descriptor instead.
func (*ListAddressReply) Descriptor() ([]byte, []int) {
	return file_api_service_user_v1_user_proto_rawDescGZIP(), []int{2}
}

func (x *ListAddressReply) GetResults() []*AddressInfo {
	if x != nil {
		return x.Results
	}
	return nil
}

type CreateAddressReq struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Uid       int64  `protobuf:"varint,1,opt,name=uid,proto3" json:"uid,omitempty"`
	Name      string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
	Mobile    string `protobuf:"bytes,3,opt,name=mobile,proto3" json:"mobile,omitempty"`
	Province  string `protobuf:"bytes,4,opt,name=Province,proto3" json:"Province,omitempty"`
	City      string `protobuf:"bytes,5,opt,name=City,proto3" json:"City,omitempty"`
	Districts string `protobuf:"bytes,6,opt,name=Districts,proto3" json:"Districts,omitempty"`
	Address   string `protobuf:"bytes,7,opt,name=address,proto3" json:"address,omitempty"`
	PostCode  string `protobuf:"bytes,8,opt,name=post_code,json=postCode,proto3" json:"post_code,omitempty"`
	IsDefault int32  `protobuf:"varint,9,opt,name=is_default,json=isDefault,proto3" json:"is_default,omitempty"`
}

func (x *CreateAddressReq) Reset() {
	*x = CreateAddressReq{}
	if protoimpl.UnsafeEnabled {
		mi := &file_api_service_user_v1_user_proto_msgTypes[3]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *CreateAddressReq) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*CreateAddressReq) ProtoMessage() {}

func (x *CreateAddressReq) ProtoReflect() protoreflect.Message {
	mi := &file_api_service_user_v1_user_proto_msgTypes[3]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use CreateAddressReq.ProtoReflect.Descriptor instead.
func (*CreateAddressReq) Descriptor() ([]byte, []int) {
	return file_api_service_user_v1_user_proto_rawDescGZIP(), []int{3}
}

func (x *CreateAddressReq) GetUid() int64 {
	if x != nil {
		return x.Uid
	}
	return 0
}

func (x *CreateAddressReq) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

func (x *CreateAddressReq) GetMobile() string {
	if x != nil {
		return x.Mobile
	}
	return ""
}

func (x *CreateAddressReq) GetProvince() string {
	if x != nil {
		return x.Province
	}
	return ""
}

func (x *CreateAddressReq) GetCity() string {
	if x != nil {
		return x.City
	}
	return ""
}

func (x *CreateAddressReq) GetDistricts() string {
	if x != nil {
		return x.Districts
	}
	return ""
}

func (x *CreateAddressReq) GetAddress() string {
	if x != nil {
		return x.Address
	}
	return ""
}

func (x *CreateAddressReq) GetPostCode() string {
	if x != nil {
		return x.PostCode
	}
	return ""
}

func (x *CreateAddressReq) GetIsDefault() int32 {
	if x != nil {
		return x.IsDefault
	}
	return 0
}

type UpdateAddressReq struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Uid       int64  `protobuf:"varint,1,opt,name=uid,proto3" json:"uid,omitempty"`
	Name      string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
	Mobile    string `protobuf:"bytes,3,opt,name=mobile,proto3" json:"mobile,omitempty"`
	Province  string `protobuf:"bytes,4,opt,name=Province,proto3" json:"Province,omitempty"`
	City      string `protobuf:"bytes,5,opt,name=City,proto3" json:"City,omitempty"`
	Districts string `protobuf:"bytes,6,opt,name=Districts,proto3" json:"Districts,omitempty"`
	Address   string `protobuf:"bytes,7,opt,name=address,proto3" json:"address,omitempty"`
	PostCode  string `protobuf:"bytes,8,opt,name=post_code,json=postCode,proto3" json:"post_code,omitempty"`
	IsDefault int32  `protobuf:"varint,9,opt,name=is_default,json=isDefault,proto3" json:"is_default,omitempty"`
	Id        int64  `protobuf:"varint,10,opt,name=id,proto3" json:"id,omitempty"`
}

func (x *UpdateAddressReq) Reset() {
	*x = UpdateAddressReq{}
	if protoimpl.UnsafeEnabled {
		mi := &file_api_service_user_v1_user_proto_msgTypes[4]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *UpdateAddressReq) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*UpdateAddressReq) ProtoMessage() {}

func (x *UpdateAddressReq) ProtoReflect() protoreflect.Message {
	mi := &file_api_service_user_v1_user_proto_msgTypes[4]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use UpdateAddressReq.ProtoReflect.Descriptor instead.
func (*UpdateAddressReq) Descriptor() ([]byte, []int) {
	return file_api_service_user_v1_user_proto_rawDescGZIP(), []int{4}
}

func (x *UpdateAddressReq) GetUid() int64 {
	if x != nil {
		return x.Uid
	}
	return 0
}

func (x *UpdateAddressReq) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

func (x *UpdateAddressReq) GetMobile() string {
	if x != nil {
		return x.Mobile
	}
	return ""
}

func (x *UpdateAddressReq) GetProvince() string {
	if x != nil {
		return x.Province
	}
	return ""
}

func (x *UpdateAddressReq) GetCity() string {
	if x != nil {
		return x.City
	}
	return ""
}

func (x *UpdateAddressReq) GetDistricts() string {
	if x != nil {
		return x.Districts
	}
	return ""
}

func (x *UpdateAddressReq) GetAddress() string {
	if x != nil {
		return x.Address
	}
	return ""
}

func (x *UpdateAddressReq) GetPostCode() string {
	if x != nil {
		return x.PostCode
	}
	return ""
}

func (x *UpdateAddressReq) GetIsDefault() int32 {
	if x != nil {
		return x.IsDefault
	}
	return 0
}

func (x *UpdateAddressReq) GetId() int64 {
	if x != nil {
		return x.Id
	}
	return 0
}

type AddressReq struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Id  int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"`
	Uid int64 `protobuf:"varint,2,opt,name=uid,proto3" json:"uid,omitempty"`
}

func (x *AddressReq) Reset() {
	*x = AddressReq{}
	if protoimpl.UnsafeEnabled {
		mi := &file_api_service_user_v1_user_proto_msgTypes[5]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *AddressReq) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*AddressReq) ProtoMessage() {}

func (x *AddressReq) ProtoReflect() protoreflect.Message {
	mi := &file_api_service_user_v1_user_proto_msgTypes[5]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use AddressReq.ProtoReflect.Descriptor instead.
func (*AddressReq) Descriptor() ([]byte, []int) {
	return file_api_service_user_v1_user_proto_rawDescGZIP(), []int{5}
}

func (x *AddressReq) GetId() int64 {
	if x != nil {
		return x.Id
	}
	return 0
}

func (x *AddressReq) GetUid() int64 {
	if x != nil {
		return x.Uid
	}
	return 0
}

type CheckResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"`
}

func (x *CheckResponse) Reset() {
	*x = CheckResponse{}
	if protoimpl.UnsafeEnabled {
		mi := &file_api_service_user_v1_user_proto_msgTypes[6]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *CheckResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*CheckResponse) ProtoMessage() {}

func (x *CheckResponse) ProtoReflect() protoreflect.Message {
	mi := &file_api_service_user_v1_user_proto_msgTypes[6]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use CheckResponse.ProtoReflect.Descriptor instead.
func (*CheckResponse) Descriptor() ([]byte, []int) {
	return file_api_service_user_v1_user_proto_rawDescGZIP(), []int{6}
}

func (x *CheckResponse) GetSuccess() bool {
	if x != nil {
		return x.Success
	}
	return false
}

// 分页
type PageInfo struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Pn    uint32 `protobuf:"varint,1,opt,name=pn,proto3" json:"pn,omitempty"`
	PSize uint32 `protobuf:"varint,2,opt,name=pSize,proto3" json:"pSize,omitempty"`
}

func (x *PageInfo) Reset() {
	*x = PageInfo{}
	if protoimpl.UnsafeEnabled {
		mi := &file_api_service_user_v1_user_proto_msgTypes[7]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *PageInfo) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*PageInfo) ProtoMessage() {}

func (x *PageInfo) ProtoReflect() protoreflect.Message {
	mi := &file_api_service_user_v1_user_proto_msgTypes[7]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use PageInfo.ProtoReflect.Descriptor instead.
func (*PageInfo) Descriptor() ([]byte, []int) {
	return file_api_service_user_v1_user_proto_rawDescGZIP(), []int{7}
}

func (x *PageInfo) GetPn() uint32 {
	if x != nil {
		return x.Pn
	}
	return 0
}

func (x *PageInfo) GetPSize() uint32 {
	if x != nil {
		return x.PSize
	}
	return 0
}

// 用户信息
type UserInfoResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Id       int64  `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"`
	Password string `protobuf:"bytes,2,opt,name=password,proto3" json:"password,omitempty"`
	Mobile   string `protobuf:"bytes,3,opt,name=mobile,proto3" json:"mobile,omitempty"`
	NickName string `protobuf:"bytes,4,opt,name=nickName,proto3" json:"nickName,omitempty"`
	Birthday uint64 `protobuf:"varint,5,opt,name=birthday,proto3" json:"birthday,omitempty"`
	Gender   string `protobuf:"bytes,6,opt,name=gender,proto3" json:"gender,omitempty"`
	Role     int32  `protobuf:"varint,7,opt,name=role,proto3" json:"role,omitempty"`
}

func (x *UserInfoResponse) Reset() {
	*x = UserInfoResponse{}
	if protoimpl.UnsafeEnabled {
		mi := &file_api_service_user_v1_user_proto_msgTypes[8]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *UserInfoResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*UserInfoResponse) ProtoMessage() {}

func (x *UserInfoResponse) ProtoReflect() protoreflect.Message {
	mi := &file_api_service_user_v1_user_proto_msgTypes[8]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use UserInfoResponse.ProtoReflect.Descriptor instead.
func (*UserInfoResponse) Descriptor() ([]byte, []int) {
	return file_api_service_user_v1_user_proto_rawDescGZIP(), []int{8}
}

func (x *UserInfoResponse) GetId() int64 {
	if x != nil {
		return x.Id
	}
	return 0
}

func (x *UserInfoResponse) GetPassword() string {
	if x != nil {
		return x.Password
	}
	return ""
}

func (x *UserInfoResponse) GetMobile() string {
	if x != nil {
		return x.Mobile
	}
	return ""
}

func (x *UserInfoResponse) GetNickName() string {
	if x != nil {
		return x.NickName
	}
	return ""
}

func (x *UserInfoResponse) GetBirthday() uint64 {
	if x != nil {
		return x.Birthday
	}
	return 0
}

func (x *UserInfoResponse) GetGender() string {
	if x != nil {
		return x.Gender
	}
	return ""
}

func (x *UserInfoResponse) GetRole() int32 {
	if x != nil {
		return x.Role
	}
	return 0
}

// 用户列表
type UserListResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Total int32               `protobuf:"varint,1,opt,name=total,proto3" json:"total,omitempty"`
	Data  []*UserInfoResponse `protobuf:"bytes,2,rep,name=data,proto3" json:"data,omitempty"`
}

func (x *UserListResponse) Reset() {
	*x = UserListResponse{}
	if protoimpl.UnsafeEnabled {
		mi := &file_api_service_user_v1_user_proto_msgTypes[9]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *UserListResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*UserListResponse) ProtoMessage() {}

func (x *UserListResponse) ProtoReflect() protoreflect.Message {
	mi := &file_api_service_user_v1_user_proto_msgTypes[9]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use UserListResponse.ProtoReflect.Descriptor instead.
func (*UserListResponse) Descriptor() ([]byte, []int) {
	return file_api_service_user_v1_user_proto_rawDescGZIP(), []int{9}
}

func (x *UserListResponse) GetTotal() int32 {
	if x != nil {
		return x.Total
	}
	return 0
}

func (x *UserListResponse) GetData() []*UserInfoResponse {
	if x != nil {
		return x.Data
	}
	return nil
}

type MobileRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Mobile string `protobuf:"bytes,1,opt,name=mobile,proto3" json:"mobile,omitempty"`
}

func (x *MobileRequest) Reset() {
	*x = MobileRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_api_service_user_v1_user_proto_msgTypes[10]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *MobileRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*MobileRequest) ProtoMessage() {}

func (x *MobileRequest) ProtoReflect() protoreflect.Message {
	mi := &file_api_service_user_v1_user_proto_msgTypes[10]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use MobileRequest.ProtoReflect.Descriptor instead.
func (*MobileRequest) Descriptor() ([]byte, []int) {
	return file_api_service_user_v1_user_proto_rawDescGZIP(), []int{10}
}

func (x *MobileRequest) GetMobile() string {
	if x != nil {
		return x.Mobile
	}
	return ""
}

type IdRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"`
}

func (x *IdRequest) Reset() {
	*x = IdRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_api_service_user_v1_user_proto_msgTypes[11]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *IdRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*IdRequest) ProtoMessage() {}

func (x *IdRequest) ProtoReflect() protoreflect.Message {
	mi := &file_api_service_user_v1_user_proto_msgTypes[11]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use IdRequest.ProtoReflect.Descriptor instead.
func (*IdRequest) Descriptor() ([]byte, []int) {
	return file_api_service_user_v1_user_proto_rawDescGZIP(), []int{11}
}

func (x *IdRequest) GetId() int64 {
	if x != nil {
		return x.Id
	}
	return 0
}

// 创建用户
type CreateUserInfo struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	NickName string `protobuf:"bytes,1,opt,name=nickName,proto3" json:"nickName,omitempty"`
	Password string `protobuf:"bytes,2,opt,name=password,proto3" json:"password,omitempty"`
	Mobile   string `protobuf:"bytes,3,opt,name=mobile,proto3" json:"mobile,omitempty"`
}

func (x *CreateUserInfo) Reset() {
	*x = CreateUserInfo{}
	if protoimpl.UnsafeEnabled {
		mi := &file_api_service_user_v1_user_proto_msgTypes[12]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *CreateUserInfo) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*CreateUserInfo) ProtoMessage() {}

func (x *CreateUserInfo) ProtoReflect() protoreflect.Message {
	mi := &file_api_service_user_v1_user_proto_msgTypes[12]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use CreateUserInfo.ProtoReflect.Descriptor instead.
func (*CreateUserInfo) Descriptor() ([]byte, []int) {
	return file_api_service_user_v1_user_proto_rawDescGZIP(), []int{12}
}

func (x *CreateUserInfo) GetNickName() string {
	if x != nil {
		return x.NickName
	}
	return ""
}

func (x *CreateUserInfo) GetPassword() string {
	if x != nil {
		return x.Password
	}
	return ""
}

func (x *CreateUserInfo) GetMobile() string {
	if x != nil {
		return x.Mobile
	}
	return ""
}

type UpdateUserInfo struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Id       int64  `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"`
	NickName string `protobuf:"bytes,2,opt,name=nickName,proto3" json:"nickName,omitempty"`
	Gender   string `protobuf:"bytes,3,opt,name=gender,proto3" json:"gender,omitempty"`
	Birthday uint64 `protobuf:"varint,4,opt,name=birthday,proto3" json:"birthday,omitempty"`
}

func (x *UpdateUserInfo) Reset() {
	*x = UpdateUserInfo{}
	if protoimpl.UnsafeEnabled {
		mi := &file_api_service_user_v1_user_proto_msgTypes[13]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *UpdateUserInfo) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*UpdateUserInfo) ProtoMessage() {}

func (x *UpdateUserInfo) ProtoReflect() protoreflect.Message {
	mi := &file_api_service_user_v1_user_proto_msgTypes[13]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use UpdateUserInfo.ProtoReflect.Descriptor instead.
func (*UpdateUserInfo) Descriptor() ([]byte, []int) {
	return file_api_service_user_v1_user_proto_rawDescGZIP(), []int{13}
}

func (x *UpdateUserInfo) GetId() int64 {
	if x != nil {
		return x.Id
	}
	return 0
}

func (x *UpdateUserInfo) GetNickName() string {
	if x != nil {
		return x.NickName
	}
	return ""
}

func (x *UpdateUserInfo) GetGender() string {
	if x != nil {
		return x.Gender
	}
	return ""
}

func (x *UpdateUserInfo) GetBirthday() uint64 {
	if x != nil {
		return x.Birthday
	}
	return 0
}

type PasswordCheckInfo struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Password          string `protobuf:"bytes,1,opt,name=password,proto3" json:"password,omitempty"`
	EncryptedPassword string `protobuf:"bytes,2,opt,name=encryptedPassword,proto3" json:"encryptedPassword,omitempty"`
}

func (x *PasswordCheckInfo) Reset() {
	*x = PasswordCheckInfo{}
	if protoimpl.UnsafeEnabled {
		mi := &file_api_service_user_v1_user_proto_msgTypes[14]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *PasswordCheckInfo) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*PasswordCheckInfo) ProtoMessage() {}

func (x *PasswordCheckInfo) ProtoReflect() protoreflect.Message {
	mi := &file_api_service_user_v1_user_proto_msgTypes[14]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use PasswordCheckInfo.ProtoReflect.Descriptor instead.
func (*PasswordCheckInfo) Descriptor() ([]byte, []int) {
	return file_api_service_user_v1_user_proto_rawDescGZIP(), []int{14}
}

func (x *PasswordCheckInfo) GetPassword() string {
	if x != nil {
		return x.Password
	}
	return ""
}

func (x *PasswordCheckInfo) GetEncryptedPassword() string {
	if x != nil {
		return x.EncryptedPassword
	}
	return ""
}

var File_api_service_user_v1_user_proto protoreflect.FileDescriptor

var file_api_service_user_v1_user_proto_rawDesc = []byte{
	0x0a, 0x1e, 0x61, 0x70, 0x69, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2f, 0x75, 0x73,
	0x65, 0x72, 0x2f, 0x76, 0x31, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
	0x12, 0x07, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
	0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79,
	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x22, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x64,
	0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x75, 0x69, 0x64, 0x22, 0xed, 0x01, 0x0a, 0x0b, 0x41,
	0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61,
	0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16,
	0x0a, 0x06, 0x6d, 0x6f, 0x62, 0x69, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06,
	0x6d, 0x6f, 0x62, 0x69, 0x6c, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x6e,
	0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x6e,
	0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x69, 0x74, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x04, 0x43, 0x69, 0x74, 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69,
	0x63, 0x74, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x44, 0x69, 0x73, 0x74, 0x72,
	0x69, 0x63, 0x74, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18,
	0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x1b,
	0x0a, 0x09, 0x70, 0x6f, 0x73, 0x74, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x08, 0x70, 0x6f, 0x73, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x69,
	0x73, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52,
	0x09, 0x69, 0x73, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x22, 0x42, 0x0a, 0x10, 0x4c, 0x69,
	0x73, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x2e,
	0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
	0x14, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73,
	0x73, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x22, 0xf4,
	0x01, 0x0a, 0x10, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73,
	0x52, 0x65, 0x71, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03,
	0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x6f, 0x62,
	0x69, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x6f, 0x62, 0x69, 0x6c,
	0x65, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x6e, 0x63, 0x65, 0x18, 0x04, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x6e, 0x63, 0x65, 0x12, 0x12, 0x0a,
	0x04, 0x43, 0x69, 0x74, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x43, 0x69, 0x74,
	0x79, 0x12, 0x1c, 0x0a, 0x09, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x73, 0x18, 0x06,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x73, 0x12,
	0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x73,
	0x74, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f,
	0x73, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x73, 0x5f, 0x64, 0x65, 0x66,
	0x61, 0x75, 0x6c, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x69, 0x73, 0x44, 0x65,
	0x66, 0x61, 0x75, 0x6c, 0x74, 0x22, 0x84, 0x02, 0x0a, 0x10, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65,
	0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69,
	0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04,
	0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65,
	0x12, 0x16, 0x0a, 0x06, 0x6d, 0x6f, 0x62, 0x69, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x06, 0x6d, 0x6f, 0x62, 0x69, 0x6c, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x72, 0x6f, 0x76,
	0x69, 0x6e, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x72, 0x6f, 0x76,
	0x69, 0x6e, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x69, 0x74, 0x79, 0x18, 0x05, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x04, 0x43, 0x69, 0x74, 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x44, 0x69, 0x73, 0x74,
	0x72, 0x69, 0x63, 0x74, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x44, 0x69, 0x73,
	0x74, 0x72, 0x69, 0x63, 0x74, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73,
	0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73,
	0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x73, 0x74, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x08, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x73, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x1d, 0x0a,
	0x0a, 0x69, 0x73, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28,
	0x05, 0x52, 0x09, 0x69, 0x73, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x12, 0x0e, 0x0a, 0x02,
	0x69, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x22, 0x2e, 0x0a, 0x0a,
	0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69,
	0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x75, 0x69, 0x64, 0x22, 0x29, 0x0a, 0x0d,
	0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a,
	0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07,
	0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x22, 0x30, 0x0a, 0x08, 0x50, 0x61, 0x67, 0x65, 0x49,
	0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x70, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52,
	0x02, 0x70, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x0d, 0x52, 0x05, 0x70, 0x53, 0x69, 0x7a, 0x65, 0x22, 0xba, 0x01, 0x0a, 0x10, 0x55, 0x73,
	0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e,
	0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1a,
	0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x6f,
	0x62, 0x69, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x6f, 0x62, 0x69,
	0x6c, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x04,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a,
	0x0a, 0x08, 0x62, 0x69, 0x72, 0x74, 0x68, 0x64, 0x61, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04,
	0x52, 0x08, 0x62, 0x69, 0x72, 0x74, 0x68, 0x64, 0x61, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x67, 0x65,
	0x6e, 0x64, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x67, 0x65, 0x6e, 0x64,
	0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05,
	0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x22, 0x57, 0x0a, 0x10, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x69,
	0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f,
	0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c,
	0x12, 0x2d, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19,
	0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66,
	0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22,
	0x27, 0x0a, 0x0d, 0x4d, 0x6f, 0x62, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
	0x12, 0x16, 0x0a, 0x06, 0x6d, 0x6f, 0x62, 0x69, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x06, 0x6d, 0x6f, 0x62, 0x69, 0x6c, 0x65, 0x22, 0x1b, 0x0a, 0x09, 0x49, 0x64, 0x52, 0x65,
	0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x03, 0x52, 0x02, 0x69, 0x64, 0x22, 0x60, 0x0a, 0x0e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55,
	0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x4e,
	0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x4e,
	0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12,
	0x16, 0x0a, 0x06, 0x6d, 0x6f, 0x62, 0x69, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x06, 0x6d, 0x6f, 0x62, 0x69, 0x6c, 0x65, 0x22, 0x70, 0x0a, 0x0e, 0x55, 0x70, 0x64, 0x61, 0x74,
	0x65, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x69, 0x63,
	0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x69, 0x63,
	0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x67, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18,
	0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x67, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x1a, 0x0a,
	0x08, 0x62, 0x69, 0x72, 0x74, 0x68, 0x64, 0x61, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52,
	0x08, 0x62, 0x69, 0x72, 0x74, 0x68, 0x64, 0x61, 0x79, 0x22, 0x5d, 0x0a, 0x11, 0x50, 0x61, 0x73,
	0x73, 0x77, 0x6f, 0x72, 0x64, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1a,
	0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x2c, 0x0a, 0x11, 0x65, 0x6e,
	0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64,
	0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x32, 0xe9, 0x05, 0x0a, 0x04, 0x55, 0x73, 0x65,
	0x72, 0x12, 0x3d, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74,
	0x12, 0x11, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x49,
	0x6e, 0x66, 0x6f, 0x1a, 0x19, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x73,
	0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00,
	0x12, 0x46, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x42, 0x79, 0x4d, 0x6f, 0x62,
	0x69, 0x6c, 0x65, 0x12, 0x16, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x6f,
	0x62, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x75, 0x73,
	0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65,
	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x3e, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x55,
	0x73, 0x65, 0x72, 0x42, 0x79, 0x49, 0x64, 0x12, 0x12, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x76,
	0x31, 0x2e, 0x49, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x75, 0x73,
	0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65,
	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x42, 0x0a, 0x0a, 0x43, 0x72, 0x65, 0x61,
	0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x12, 0x17, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x76, 0x31,
	0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x1a,
	0x19, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e,
	0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x3f, 0x0a, 0x0a,
	0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x12, 0x17, 0x2e, 0x75, 0x73, 0x65,
	0x72, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x49,
	0x6e, 0x66, 0x6f, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
	0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x45, 0x0a,
	0x0d, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x1a,
	0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72,
	0x64, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x1a, 0x16, 0x2e, 0x75, 0x73, 0x65,
	0x72, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
	0x73, 0x65, 0x22, 0x00, 0x12, 0x43, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x64, 0x64, 0x72,
	0x65, 0x73, 0x73, 0x12, 0x17, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69,
	0x73, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x19, 0x2e, 0x75,
	0x73, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65,
	0x73, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x42, 0x0a, 0x0d, 0x43, 0x72, 0x65,
	0x61, 0x74, 0x65, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x19, 0x2e, 0x75, 0x73, 0x65,
	0x72, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x64, 0x64, 0x72, 0x65,
	0x73, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x14, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e,
	0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x00, 0x12, 0x44, 0x0a,
	0x0d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x19,
	0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41,
	0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x16, 0x2e, 0x75, 0x73, 0x65, 0x72,
	0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
	0x65, 0x22, 0x00, 0x12, 0x3f, 0x0a, 0x0e, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x41, 0x64,
	0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x13, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e,
	0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x16, 0x2e, 0x75, 0x73, 0x65,
	0x72, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
	0x73, 0x65, 0x22, 0x00, 0x12, 0x3e, 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x64,
	0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x13, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e,
	0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x16, 0x2e, 0x75, 0x73, 0x65,
	0x72, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
	0x73, 0x65, 0x22, 0x00, 0x42, 0x15, 0x5a, 0x13, 0x75, 0x73, 0x65, 0x72, 0x2f, 0x61, 0x70, 0x69,
	0x2f, 0x75, 0x73, 0x65, 0x72, 0x2f, 0x76, 0x31, 0x3b, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f,
	0x74, 0x6f, 0x33,
}

var (
	file_api_service_user_v1_user_proto_rawDescOnce sync.Once
	file_api_service_user_v1_user_proto_rawDescData = file_api_service_user_v1_user_proto_rawDesc
)

func file_api_service_user_v1_user_proto_rawDescGZIP() []byte {
	file_api_service_user_v1_user_proto_rawDescOnce.Do(func() {
		file_api_service_user_v1_user_proto_rawDescData = protoimpl.X.CompressGZIP(file_api_service_user_v1_user_proto_rawDescData)
	})
	return file_api_service_user_v1_user_proto_rawDescData
}

var file_api_service_user_v1_user_proto_msgTypes = make([]protoimpl.MessageInfo, 15)
var file_api_service_user_v1_user_proto_goTypes = []interface{}{
	(*ListAddressReq)(nil),    // 0: user.v1.ListAddressReq
	(*AddressInfo)(nil),       // 1: user.v1.AddressInfo
	(*ListAddressReply)(nil),  // 2: user.v1.ListAddressReply
	(*CreateAddressReq)(nil),  // 3: user.v1.CreateAddressReq
	(*UpdateAddressReq)(nil),  // 4: user.v1.UpdateAddressReq
	(*AddressReq)(nil),        // 5: user.v1.AddressReq
	(*CheckResponse)(nil),     // 6: user.v1.CheckResponse
	(*PageInfo)(nil),          // 7: user.v1.PageInfo
	(*UserInfoResponse)(nil),  // 8: user.v1.UserInfoResponse
	(*UserListResponse)(nil),  // 9: user.v1.UserListResponse
	(*MobileRequest)(nil),     // 10: user.v1.MobileRequest
	(*IdRequest)(nil),         // 11: user.v1.IdRequest
	(*CreateUserInfo)(nil),    // 12: user.v1.CreateUserInfo
	(*UpdateUserInfo)(nil),    // 13: user.v1.UpdateUserInfo
	(*PasswordCheckInfo)(nil), // 14: user.v1.PasswordCheckInfo
	(*emptypb.Empty)(nil),     // 15: google.protobuf.Empty
}
var file_api_service_user_v1_user_proto_depIdxs = []int32{
	1,  // 0: user.v1.ListAddressReply.results:type_name -> user.v1.AddressInfo
	8,  // 1: user.v1.UserListResponse.data:type_name -> user.v1.UserInfoResponse
	7,  // 2: user.v1.User.GetUserList:input_type -> user.v1.PageInfo
	10, // 3: user.v1.User.GetUserByMobile:input_type -> user.v1.MobileRequest
	11, // 4: user.v1.User.GetUserById:input_type -> user.v1.IdRequest
	12, // 5: user.v1.User.CreateUser:input_type -> user.v1.CreateUserInfo
	13, // 6: user.v1.User.UpdateUser:input_type -> user.v1.UpdateUserInfo
	14, // 7: user.v1.User.CheckPassword:input_type -> user.v1.PasswordCheckInfo
	0,  // 8: user.v1.User.ListAddress:input_type -> user.v1.ListAddressReq
	3,  // 9: user.v1.User.CreateAddress:input_type -> user.v1.CreateAddressReq
	4,  // 10: user.v1.User.UpdateAddress:input_type -> user.v1.UpdateAddressReq
	5,  // 11: user.v1.User.DefaultAddress:input_type -> user.v1.AddressReq
	5,  // 12: user.v1.User.DeleteAddress:input_type -> user.v1.AddressReq
	9,  // 13: user.v1.User.GetUserList:output_type -> user.v1.UserListResponse
	8,  // 14: user.v1.User.GetUserByMobile:output_type -> user.v1.UserInfoResponse
	8,  // 15: user.v1.User.GetUserById:output_type -> user.v1.UserInfoResponse
	8,  // 16: user.v1.User.CreateUser:output_type -> user.v1.UserInfoResponse
	15, // 17: user.v1.User.UpdateUser:output_type -> google.protobuf.Empty
	6,  // 18: user.v1.User.CheckPassword:output_type -> user.v1.CheckResponse
	2,  // 19: user.v1.User.ListAddress:output_type -> user.v1.ListAddressReply
	1,  // 20: user.v1.User.CreateAddress:output_type -> user.v1.AddressInfo
	6,  // 21: user.v1.User.UpdateAddress:output_type -> user.v1.CheckResponse
	6,  // 22: user.v1.User.DefaultAddress:output_type -> user.v1.CheckResponse
	6,  // 23: user.v1.User.DeleteAddress:output_type -> user.v1.CheckResponse
	13, // [13:24] is the sub-list for method output_type
	2,  // [2:13] is the sub-list for method input_type
	2,  // [2:2] is the sub-list for extension type_name
	2,  // [2:2] is the sub-list for extension extendee
	0,  // [0:2] is the sub-list for field type_name
}

func init() { file_api_service_user_v1_user_proto_init() }
func file_api_service_user_v1_user_proto_init() {
	if File_api_service_user_v1_user_proto != nil {
		return
	}
	if !protoimpl.UnsafeEnabled {
		file_api_service_user_v1_user_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ListAddressReq); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_api_service_user_v1_user_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*AddressInfo); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_api_service_user_v1_user_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ListAddressReply); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_api_service_user_v1_user_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*CreateAddressReq); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_api_service_user_v1_user_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*UpdateAddressReq); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_api_service_user_v1_user_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*AddressReq); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_api_service_user_v1_user_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*CheckResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_api_service_user_v1_user_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PageInfo); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_api_service_user_v1_user_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*UserInfoResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_api_service_user_v1_user_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*UserListResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_api_service_user_v1_user_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*MobileRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_api_service_user_v1_user_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*IdRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_api_service_user_v1_user_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*CreateUserInfo); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_api_service_user_v1_user_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*UpdateUserInfo); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_api_service_user_v1_user_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PasswordCheckInfo); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
	}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: file_api_service_user_v1_user_proto_rawDesc,
			NumEnums:      0,
			NumMessages:   15,
			NumExtensions: 0,
			NumServices:   1,
		},
		GoTypes:           file_api_service_user_v1_user_proto_goTypes,
		DependencyIndexes: file_api_service_user_v1_user_proto_depIdxs,
		MessageInfos:      file_api_service_user_v1_user_proto_msgTypes,
	}.Build()
	File_api_service_user_v1_user_proto = out.File
	file_api_service_user_v1_user_proto_rawDesc = nil
	file_api_service_user_v1_user_proto_goTypes = nil
	file_api_service_user_v1_user_proto_depIdxs = nil
}


================================================
FILE: admin/api/service/user/v1/user.pb.validate.go
================================================
// Code generated by protoc-gen-validate. DO NOT EDIT.
// source: api/service/user/v1/user.proto

package v1

import (
	"bytes"
	"errors"
	"fmt"
	"net"
	"net/mail"
	"net/url"
	"regexp"
	"sort"
	"strings"
	"time"
	"unicode/utf8"

	"google.golang.org/protobuf/types/known/anypb"
)

// ensure the imports are used
var (
	_ = bytes.MinRead
	_ = errors.New("")
	_ = fmt.Print
	_ = utf8.UTFMax
	_ = (*regexp.Regexp)(nil)
	_ = (*strings.Reader)(nil)
	_ = net.IPv4len
	_ = time.Duration(0)
	_ = (*url.URL)(nil)
	_ = (*mail.Address)(nil)
	_ = anypb.Any{}
	_ = sort.Sort
)

// Validate checks the field values on ListAddressReq with the rules defined in
// the proto definition for this message. If any rules are violated, the first
// error encountered is returned, or nil if there are no violations.
func (m *ListAddressReq) Validate() error {
	return m.validate(false)
}

// ValidateAll checks the field values on ListAddressReq with the rules defined
// in the proto definition for this message. If any rules are violated, the
// result is a list of violation errors wrapped in ListAddressReqMultiError,
// or nil if none found.
func (m *ListAddressReq) ValidateAll() error {
	return m.validate(true)
}

func (m *ListAddressReq) validate(all bool) error {
	if m == nil {
		return nil
	}

	var errors []error

	// no validation rules for Uid

	if len(errors) > 0 {
		return ListAddressReqMultiError(errors)
	}

	return nil
}

// ListAddressReqMultiError is an error wrapping multiple validation errors
// returned by ListAddressReq.ValidateAll() if the designated constraints
// aren't met.
type ListAddressReqMultiError []error

// Error returns a concatenation of all the error messages it wraps.
func (m ListAddressReqMultiError) Error() string {
	var msgs []string
	for _, err := range m {
		msgs = append(msgs, err.Error())
	}
	return strings.Join(msgs, "; ")
}

// AllErrors returns a list of validation violation errors.
func (m ListAddressReqMultiError) AllErrors() []error { return m }

// ListAddressReqValidationError is the validation error returned by
// ListAddressReq.Validate if the designated constraints aren't met.
type ListAddressReqValidationError struct {
	field  string
	reason string
	cause  error
	key    bool
}

// Field function returns field value.
func (e ListAddressReqValidationError) Field() string { return e.field }

// Reason function returns reason value.
func (e ListAddressReqValidationError) Reason() string { return e.reason }

// Cause function returns cause value.
func (e ListAddressReqValidationError) Cause() error { return e.cause }

// Key function returns key value.
func (e ListAddressReqValidationError) Key() bool { return e.key }

// ErrorName returns error name.
func (e ListAddressReqValidationError) ErrorName() string { return "ListAddressReqValidationError" }

// Error satisfies the builtin error interface
func (e ListAddressReqValidationError) Error() string {
	cause := ""
	if e.cause != nil {
		cause = fmt.Sprintf(" | caused by: %v", e.cause)
	}

	key := ""
	if e.key {
		key = "key for "
	}

	return fmt.Sprintf(
		"invalid %sListAddressReq.%s: %s%s",
		key,
		e.field,
		e.reason,
		cause)
}

var _ error = ListAddressReqValidationError{}

var _ interface {
	Field() string
	Reason() string
	Key() bool
	Cause() error
	ErrorName() string
} = ListAddressReqValidationError{}

// Validate checks the field values on AddressInfo with the rules defined in
// the proto definition for this message. If any rules are violated, the first
// error encountered is returned, or nil if there are no violations.
func (m *AddressInfo) Validate() error {
	return m.validate(false)
}

// ValidateAll checks the field values on AddressInfo with the rules defined in
// the proto definition for this message. If any rules are violated, the
// result is a list of violation errors wrapped in AddressInfoMultiError, or
// nil if none found.
func (m *AddressInfo) ValidateAll() error {
	return m.validate(true)
}

func (m *AddressInfo) validate(all bool) error {
	if m == nil {
		return nil
	}

	var errors []error

	// no validation rules for Id

	// no validation rules for Name

	// no validation rules for Mobile

	// no validation rules for Province

	// no validation rules for City

	// no validation rules for Districts

	// no validation rules for Address

	// no validation rules for PostCode

	// no validation rules for IsDefault

	if len(errors) > 0 {
		return AddressInfoMultiError(errors)
	}

	return nil
}

// AddressInfoMultiError is an error wrapping multiple validation errors
// returned by AddressInfo.ValidateAll() if the designated constraints aren't met.
type AddressInfoMultiError []error

// Error returns a concatenation of all the error messages it wraps.
func (m AddressInfoMultiError) Error() string {
	var msgs []string
	for _, err := range m {
		msgs = append(msgs, err.Error())
	}
	return strings.Join(msgs, "; ")
}

// AllErrors returns a list of validation violation errors.
func (m AddressInfoMultiError) AllErrors() []error { return m }

// AddressInfoValidationError is the validation error returned by
// AddressInfo.Validate if the designated constraints aren't met.
type AddressInfoValidationError struct {
	field  string
	reason string
	cause  error
	key    bool
}

// Field function returns field value.
func (e AddressInfoValidationError) Field() string { return e.field }

// Reason function returns reason value.
func (e AddressInfoValidationError) Reason() string { return e.reason }

// Cause function returns cause value.
func (e AddressInfoValidationError) Cause() error { return e.cause }

// Key function returns key value.
func (e AddressInfoValidationError) Key() bool { return e.key }

// ErrorName returns error name.
func (e AddressInfoValidationError) ErrorName() string { return "AddressInfoValidationError" }

// Error satisfies the builtin error interface
func (e AddressInfoValidationError) Error() string {
	cause := ""
	if e.cause != nil {
		cause = fmt.Sprintf(" | caused by: %v", e.cause)
	}

	key := ""
	if e.key {
		key = "key for "
	}

	return fmt.Sprintf(
		"invalid %sAddressInfo.%s: %s%s",
		key,
		e.field,
		e.reason,
		cause)
}

var _ error = AddressInfoValidationError{}

var _ interface {
	Field() string
	Reason() string
	Key() bool
	Cause() error
	ErrorName() string
} = AddressInfoValidationError{}

// Validate checks the field values on ListAddressReply with the rules defined
// in the proto definition for this message. If any rules are violated, the
// first error encountered is returned, or nil if there are no violations.
func (m *ListAddressReply) Validate() error {
	return m.validate(false)
}

// ValidateAll checks the field values on ListAddressReply with the rules
// defined in the proto definition for this message. If any rules are
// violated, the result is a list of violation errors wrapped in
// ListAddressReplyMultiError, or nil if none found.
func (m *ListAddressReply) ValidateAll() error {
	return m.validate(true)
}

func (m *ListAddressReply) validate(all bool) error {
	if m == nil {
		return nil
	}

	var errors []error

	for idx, item := range m.GetResults() {
		_, _ = idx, item

		if all {
			switch v := interface{}(item).(type) {
			case interface{ ValidateAll() error }:
				if err := v.ValidateAll(); err != nil {
					errors = append(errors, ListAddressReplyValidationError{
						field:  fmt.Sprintf("Results[%v]", idx),
						reason: "embedded message failed validation",
						cause:  err,
					})
				}
			case interface{ Validate() error }:
				if err := v.Validate(); err != nil {
					errors = append(errors, ListAddressReplyValidationError{
						field:  fmt.Sprintf("Results[%v]", idx),
						reason: "embedded message failed validation",
						cause:  err,
					})
				}
			}
		} else if v, ok := interface{}(item).(interface{ Validate() error }); ok {
			if err := v.Validate(); err != nil {
				return ListAddressReplyValidationError{
					field:  fmt.Sprintf("Results[%v]", idx),
					reason: "embedded message failed validation",
					cause:  err,
				}
			}
		}

	}

	if len(errors) > 0 {
		return ListAddressReplyMultiError(errors)
	}

	return nil
}

// ListAddressReplyMultiError is an error wrapping multiple validation errors
// returned by ListAddressReply.ValidateAll() if the designated constraints
// aren't met.
type ListAddressReplyMultiError []error

// Error returns a concatenation of all the error messages it wraps.
func (m ListAddressReplyMultiError) Error() string {
	var msgs []string
	for _, err := range m {
		msgs = append(msgs, err.Error())
	}
	return strings.Join(msgs, "; ")
}

// AllErrors returns a list of validation violation errors.
func (m ListAddressReplyMultiError) AllErrors() []error { return m }

// ListAddressReplyValidationError is the validation error returned by
// ListAddressReply.Validate if the designated constraints aren't met.
type ListAddressReplyValidationError struct {
	field  string
	reason string
	cause  error
	key    bool
}

// Field function returns field value.
func (e ListAddressReplyValidationError) Field() string { return e.field }

// Reason function returns reason value.
func (e ListAddressReplyValidationError) Reason() string { return e.reason }

// Cause function returns cause value.
func (e ListAddressReplyValidationError) Cause() error { return e.cause }

// Key function returns key value.
func (e ListAddressReplyValidationError) Key() bool { return e.key }

// ErrorName returns error name.
func (e ListAddressReplyValidationError) ErrorName() string { return "ListAddressReplyValidationError" }

// Error satisfies the builtin error interface
func (e ListAddressReplyValidationError) Error() string {
	cause := ""
	if e.cause != nil {
		cause = fmt.Sprintf(" | caused by: %v", e.cause)
	}

	key := ""
	if e.key {
		key = "key for "
	}

	return fmt.Sprintf(
		"invalid %sListAddressReply.%s: %s%s",
		key,
		e.field,
		e.reason,
		cause)
}

var _ error = ListAddressReplyValidationError{}

var _ interface {
	Field() string
	Reason() string
	Key() bool
	Cause() error
	ErrorName() string
} = ListAddressReplyValidationError{}

// Validate checks the field values on CreateAddressReq with the rules defined
// in the proto definition for this message. If any rules are violated, the
// first error encountered is returned, or nil if there are no violations.
func (m *CreateAddressReq) Validate() error {
	return m.validate(false)
}

// ValidateAll checks the field values on CreateAddressReq with the rules
// defined in the proto definition for this message. If any rules are
// violated, the result is a list of violation errors wrapped in
// CreateAddressReqMultiError, or nil if none found.
func (m *CreateAddressReq) ValidateAll() error {
	return m.validate(true)
}

func (m *CreateAddressReq) validate(all bool) error {
	if m == nil {
		return nil
	}

	var errors []error

	// no validation rules for Uid

	// no validation rules for Name

	// no validation rules for Mobile

	// no validation rules for Province

	// no validation rules for City

	// no validation rules for Districts

	// no validation rules for Address

	// no validation rules for PostCode

	// no validation rules for IsDefault

	if len(errors) > 0 {
		return CreateAddressReqMultiError(errors)
	}

	return nil
}

// CreateAddressReqMultiError is an error wrapping multiple validation errors
// returned by CreateAddressReq.ValidateAll() if the designated constraints
// aren't met.
type CreateAddressReqMultiError []error

// Error returns a concatenation of all the error messages it wraps.
func (m CreateAddressReqMultiError) Error() string {
	var msgs []string
	for _, err := range m {
		msgs = append(msgs, err.Error())
	}
	return strings.Join(msgs, "; ")
}

// AllErrors returns a list of validation violation errors.
func (m CreateAddressReqMultiError) AllErrors() []error { return m }

// CreateAddressReqValidationError is the validation error returned by
// CreateAddressReq.Validate if the designated constraints aren't met.
type CreateAddressReqValidationError struct {
	field  string
	reason string
	cause  error
	key    bool
}

// Field function returns field value.
func (e CreateAddressReqValidationError) Field() string { return e.field }

// Reason function returns reason value.
func (e CreateAddressReqValidationError) Reason() string { return e.reason }

// Cause function returns cause value.
func (e CreateAddressReqValidationError) Cause() error { return e.cause }

// Key function returns key value.
func (e CreateAddressReqValidationError) Key() bool { return e.key }

// ErrorName returns error name.
func (e CreateAddressReqValidationError) ErrorName() string { return "CreateAddressReqValidationError" }

// Error satisfies the builtin error interface
func (e CreateAddressReqValidationError) Error() string {
	cause := ""
	if e.cause != nil {
		cause = fmt.Sprintf(" | caused by: %v", e.cause)
	}

	key := ""
	if e.key {
		key = "key for "
	}

	return fmt.Sprintf(
		"invalid %sCreateAddressReq.%s: %s%s",
		key,
		e.field,
		e.reason,
		cause)
}

var _ error = CreateAddressReqValidationError{}

var _ interface {
	Field() string
	Reason() string
	Key() bool
	Cause() error
	ErrorName() string
} = CreateAddressReqValidationError{}

// Validate checks the field values on UpdateAddressReq with the rules defined
// in the proto definition for this message. If any rules are violated, the
// first error encountered is returned, or nil if there are no violations.
func (m *UpdateAddressReq) Validate() error {
	return m.validate(false)
}

// ValidateAll checks the field values on UpdateAddressReq with the rules
// defined in the proto definition for this message. If any rules are
// violated, the result is a list of violation errors wrapped in
// UpdateAddressReqMultiError, or nil if none found.
func (m *UpdateAddressReq) ValidateAll() error {
	return m.validate(true)
}

func (m *UpdateAddressReq) validate(all bool) error {
	if m == nil {
		return nil
	}

	var errors []error

	// no validation rules for Uid

	// no validation rules for Name

	// no validation rules for Mobile

	// no validation rules for Province

	// no validation rules for City

	// no validation rules for Districts

	// no validation rules for Address

	// no validation rules for PostCode

	// no validation rules for IsDefault

	// no validation rules for Id

	if len(errors) > 0 {
		return UpdateAddressReqMultiError(errors)
	}

	return nil
}

// UpdateAddressReqMultiError is an error wrapping multiple validation errors
// returned by UpdateAddressReq.ValidateAll() if the designated constraints
// aren't met.
type UpdateAddressReqMultiError []error

// Error returns a concatenation of all the error messages it wraps.
func (m UpdateAddressReqMultiError) Error() string {
	var msgs []string
	for _, err := range m {
		msgs = append(msgs, err.Error())
	}
	return strings.Join(msgs, "; ")
}

// AllErrors returns a list of validation violation errors.
func (m UpdateAddressReqMultiError) AllErrors() []error { return m }

// UpdateAddressReqValidationError is the validation error returned by
// UpdateAddressReq.Validate if the designated constraints aren't met.
type UpdateAddressReqValidationError struct {
	field  string
	reason string
	cause  error
	key    bool
}

// Field function returns field value.
func (e UpdateAddressReqValidationError) Field() string { return e.field }

// Reason function returns reason value.
func (e UpdateAddressReqValidationError) Reason() string { return e.reason }

// Cause function returns cause value.
func (e UpdateAddressReqValidationError) Cause() error { return e.cause }

// Key function returns key value.
func (e UpdateAddressReqValidationError) Key() bool { return e.key }

// ErrorName returns error name.
func (e UpdateAddressReqValidationError) ErrorName() string { return "UpdateAddressReqValidationError" }

// Error satisfies the builtin error interface
func (e UpdateAddressReqValidationError) Error() string {
	cause := ""
	if e.cause != nil {
		cause = fmt.Sprintf(" | caused by: %v", e.cause)
	}

	key := ""
	if e.key {
		key = "key for "
	}

	return fmt.Sprintf(
		"invalid %sUpdateAddressReq.%s: %s%s",
		key,
		e.field,
		e.reason,
		cause)
}

var _ error = UpdateAddressReqValidationError{}

var _ interface {
	Field() string
	Reason() string
	Key() bool
	Cause() error
	ErrorName() string
} = UpdateAddressReqValidationError{}

// Validate checks the field values on AddressReq with the rules defined in the
// proto definition for this message. If any rules are violated, the first
// error encountered is returned, or nil if there are no violations.
func (m *AddressReq) Validate() error {
	return m.validate(false)
}

// ValidateAll checks the field values on AddressReq with the rules defined in
// the proto definition for this message. If any rules are violated, the
// result is a list of violation errors wrapped in AddressReqMultiError, or
// nil if none found.
func (m *AddressReq) ValidateAll() error {
	return m.validate(true)
}

func (m *Address
Download .txt
gitextract_r9kzrcto/

├── .gitignore
├── LICENSE
├── README.md
├── admin/
│   ├── .gitignore
│   ├── Dockerfile
│   ├── LICENSE
│   ├── Makefile
│   ├── api/
│   │   ├── admin/
│   │   │   └── v1/
│   │   │       ├── admin.pb.go
│   │   │       ├── admin.pb.validate.go
│   │   │       ├── admin.proto
│   │   │       ├── admin_grpc.pb.go
│   │   │       ├── admin_http.pb.go
│   │   │       ├── error_reason.pb.go
│   │   │       ├── error_reason.pb.validate.go
│   │   │       ├── error_reason.proto
│   │   │       └── error_reason_errors.pb.go
│   │   └── service/
│   │       └── user/
│   │           └── v1/
│   │               ├── user.pb.go
│   │               ├── user.pb.validate.go
│   │               ├── user.proto
│   │               └── user_grpc.pb.go
│   ├── cmd/
│   │   └── admin/
│   │       ├── main.go
│   │       ├── wire.go
│   │       └── wire_gen.go
│   ├── configs/
│   │   ├── config.yaml
│   │   └── registry.yaml
│   ├── generate.go
│   ├── go.mod
│   ├── go.sum
│   ├── internal/
│   │   ├── biz/
│   │   │   ├── README.md
│   │   │   ├── address.go
│   │   │   ├── biz.go
│   │   │   └── user.go
│   │   ├── conf/
│   │   │   ├── conf.pb.go
│   │   │   └── conf.proto
│   │   ├── data/
│   │   │   ├── README.md
│   │   │   ├── address.go
│   │   │   ├── data.go
│   │   │   └── user.go
│   │   ├── pkg/
│   │   │   ├── captcha/
│   │   │   │   └── captcha.go
│   │   │   └── middleware/
│   │   │       └── auth/
│   │   │           └── auth.go
│   │   ├── server/
│   │   │   ├── http.go
│   │   │   └── server.go
│   │   └── service/
│   │       ├── README.md
│   │       ├── service.go
│   │       └── user.go
│   ├── openapi.yaml
│   └── third_party/
│       ├── README.md
│       ├── errors/
│       │   └── errors.proto
│       ├── google/
│       │   ├── api/
│       │   │   ├── annotations.proto
│       │   │   ├── client.proto
│       │   │   ├── field_behavior.proto
│       │   │   ├── http.proto
│       │   │   └── httpbody.proto
│       │   └── protobuf/
│       │       └── descriptor.proto
│       ├── protoc-gen-openapiv2/
│       │   └── options/
│       │       ├── annotations.proto
│       │       └── openapiv2.proto
│       └── validate/
│           ├── README.md
│           └── validate.proto
├── service/
│   ├── cart/
│   │   ├── .gitignore
│   │   ├── Dockerfile
│   │   ├── LICENSE
│   │   ├── Makefile
│   │   ├── README.md
│   │   ├── api/
│   │   │   └── cart/
│   │   │       └── v1/
│   │   │           ├── cart.pb.go
│   │   │           ├── cart.pb.validate.go
│   │   │           ├── cart.proto
│   │   │           └── cart_grpc.pb.go
│   │   ├── cmd/
│   │   │   └── cart/
│   │   │       ├── main.go
│   │   │       ├── wire.go
│   │   │       └── wire_gen.go
│   │   ├── configs/
│   │   │   ├── config.yaml
│   │   │   └── registry.yaml
│   │   ├── go.mod
│   │   ├── go.sum
│   │   ├── internal/
│   │   │   ├── biz/
│   │   │   │   ├── README.md
│   │   │   │   ├── biz.go
│   │   │   │   └── cart.go
│   │   │   ├── conf/
│   │   │   │   ├── conf.pb.go
│   │   │   │   └── conf.proto
│   │   │   ├── data/
│   │   │   │   ├── README.md
│   │   │   │   ├── cart.go
│   │   │   │   ├── cart_test.go
│   │   │   │   ├── data.go
│   │   │   │   ├── data_suite_test.go
│   │   │   │   └── docker_mysql.go
│   │   │   ├── domain/
│   │   │   │   └── cart.go
│   │   │   ├── server/
│   │   │   │   ├── grpc.go
│   │   │   │   └── server.go
│   │   │   └── service/
│   │   │       ├── README.md
│   │   │       ├── cart.go
│   │   │       └── service.go
│   │   ├── openapi.yaml
│   │   └── third_party/
│   │       ├── README.md
│   │       ├── errors/
│   │       │   └── errors.proto
│   │       ├── google/
│   │       │   ├── api/
│   │       │   │   ├── annotations.proto
│   │       │   │   ├── client.proto
│   │       │   │   ├── field_behavior.proto
│   │       │   │   ├── http.proto
│   │       │   │   └── httpbody.proto
│   │       │   └── protobuf/
│   │       │       ├── any.proto
│   │       │       ├── api.proto
│   │       │       ├── compiler/
│   │       │       │   └── plugin.proto
│   │       │       ├── descriptor.proto
│   │       │       ├── duration.proto
│   │       │       ├── empty.proto
│   │       │       ├── field_mask.proto
│   │       │       ├── source_context.proto
│   │       │       ├── struct.proto
│   │       │       ├── timestamp.proto
│   │       │       ├── type.proto
│   │       │       └── wrappers.proto
│   │       ├── openapi/
│   │       │   └── v3/
│   │       │       ├── annotations.proto
│   │       │       └── openapi.proto
│   │       └── validate/
│   │           ├── README.md
│   │           └── validate.proto
│   ├── goods/
│   │   ├── Dockerfile
│   │   ├── LICENSE
│   │   ├── Makefile
│   │   ├── README.md
│   │   ├── api/
│   │   │   └── goods/
│   │   │       └── v1/
│   │   │           ├── error_reason.pb.go
│   │   │           ├── error_reason.pb.validate.go
│   │   │           ├── error_reason.proto
│   │   │           ├── goods.pb.go
│   │   │           ├── goods.pb.validate.go
│   │   │           ├── goods.proto
│   │   │           └── goods_grpc.pb.go
│   │   ├── cmd/
│   │   │   └── goods/
│   │   │       ├── main.go
│   │   │       ├── wire.go
│   │   │       └── wire_gen.go
│   │   ├── configs/
│   │   │   ├── config.yaml
│   │   │   └── registry.yaml
│   │   ├── generate.go
│   │   ├── go.mod
│   │   ├── go.sum
│   │   ├── internal/
│   │   │   ├── biz/
│   │   │   │   ├── README.md
│   │   │   │   ├── biz.go
│   │   │   │   ├── brand.go
│   │   │   │   ├── category.go
│   │   │   │   ├── es_goods.go
│   │   │   │   ├── goods.go
│   │   │   │   ├── goods_attr.go
│   │   │   │   ├── goods_image.go
│   │   │   │   ├── goods_sku.go
│   │   │   │   ├── goods_type.go
│   │   │   │   ├── inventory.go
│   │   │   │   └── specifications.go
│   │   │   ├── conf/
│   │   │   │   ├── conf.pb.go
│   │   │   │   └── conf.proto
│   │   │   ├── data/
│   │   │   │   ├── README.md
│   │   │   │   ├── base.go
│   │   │   │   ├── brand.go
│   │   │   │   ├── category.go
│   │   │   │   ├── data.go
│   │   │   │   ├── entity/
│   │   │   │   │   └── goods.go
│   │   │   │   ├── es_goods.go
│   │   │   │   ├── good_type.go
│   │   │   │   ├── goods.go
│   │   │   │   ├── goods_attr.go
│   │   │   │   ├── goods_image.go
│   │   │   │   ├── goods_sku.go
│   │   │   │   ├── inventory.go
│   │   │   │   └── specifications.go
│   │   │   ├── domain/
│   │   │   │   ├── brand.go
│   │   │   │   ├── es_goods.go
│   │   │   │   ├── goods.go
│   │   │   │   ├── goods_attr.go
│   │   │   │   ├── goods_sku.go
│   │   │   │   ├── goods_type.go
│   │   │   │   ├── inventory.go
│   │   │   │   └── specification.go
│   │   │   ├── server/
│   │   │   │   ├── grpc.go
│   │   │   │   └── server.go
│   │   │   └── service/
│   │   │       ├── README.md
│   │   │       ├── brand.go
│   │   │       ├── category.go
│   │   │       ├── goods.go
│   │   │       ├── goods_attr.go
│   │   │       ├── goods_type.go
│   │   │       ├── service.go
│   │   │       └── specifications.go
│   │   ├── openapi.yaml
│   │   └── third_party/
│   │       ├── README.md
│   │       ├── errors/
│   │       │   └── errors.proto
│   │       ├── google/
│   │       │   ├── api/
│   │       │   │   ├── annotations.proto
│   │       │   │   ├── client.proto
│   │       │   │   ├── field_behavior.proto
│   │       │   │   ├── http.proto
│   │       │   │   └── httpbody.proto
│   │       │   └── protobuf/
│   │       │       ├── any.proto
│   │       │       ├── api.proto
│   │       │       ├── compiler/
│   │       │       │   └── plugin.proto
│   │       │       ├── descriptor.proto
│   │       │       ├── duration.proto
│   │       │       ├── empty.proto
│   │       │       ├── field_mask.proto
│   │       │       ├── source_context.proto
│   │       │       ├── struct.proto
│   │       │       ├── timestamp.proto
│   │       │       ├── type.proto
│   │       │       └── wrappers.proto
│   │       ├── openapi/
│   │       │   └── v3/
│   │       │       ├── annotations.proto
│   │       │       └── openapi.proto
│   │       └── validate/
│   │           ├── README.md
│   │           └── validate.proto
│   ├── order/
│   │   ├── .gitignore
│   │   ├── Dockerfile
│   │   ├── LICENSE
│   │   ├── Makefile
│   │   ├── api/
│   │   │   ├── cart/
│   │   │   │   └── v1/
│   │   │   │       ├── cart.pb.go
│   │   │   │       ├── cart.pb.validate.go
│   │   │   │       ├── cart.proto
│   │   │   │       └── cart_grpc.pb.go
│   │   │   ├── goods/
│   │   │   │   └── v1/
│   │   │   │       ├── error_reason.pb.go
│   │   │   │       ├── error_reason.pb.validate.go
│   │   │   │       ├── error_reason.proto
│   │   │   │       ├── goods.pb.go
│   │   │   │       ├── goods.pb.validate.go
│   │   │   │       ├── goods.proto
│   │   │   │       └── goods_grpc.pb.go
│   │   │   ├── order/
│   │   │   │   └── v1/
│   │   │   │       ├── error_reason.pb.go
│   │   │   │       ├── error_reason.pb.validate.go
│   │   │   │       ├── error_reason.proto
│   │   │   │       ├── order.pb.go
│   │   │   │       ├── order.pb.validate.go
│   │   │   │       ├── order.proto
│   │   │   │       └── order_grpc.pb.go
│   │   │   └── user/
│   │   │       └── v1/
│   │   │           ├── user.pb.go
│   │   │           ├── user.pb.validate.go
│   │   │           ├── user.proto
│   │   │           └── user_grpc.pb.go
│   │   ├── cmd/
│   │   │   └── order/
│   │   │       ├── main.go
│   │   │       ├── wire.go
│   │   │       └── wire_gen.go
│   │   ├── configs/
│   │   │   ├── config.yaml
│   │   │   └── registry.yaml
│   │   ├── go.mod
│   │   ├── go.sum
│   │   ├── internal/
│   │   │   ├── biz/
│   │   │   │   ├── README.md
│   │   │   │   ├── biz.go
│   │   │   │   └── order.go
│   │   │   ├── conf/
│   │   │   │   ├── conf.pb.go
│   │   │   │   └── conf.proto
│   │   │   ├── data/
│   │   │   │   ├── data.go
│   │   │   │   ├── data_suite_test.go
│   │   │   │   ├── docker_mysql.go
│   │   │   │   ├── order.go
│   │   │   │   ├── orderaddress.go
│   │   │   │   ├── ordergoods.go
│   │   │   │   └── orderpay.go
│   │   │   ├── domain/
│   │   │   │   ├── order.go
│   │   │   │   └── orderaddress.go
│   │   │   ├── mocks/
│   │   │   │   └── mrepo/
│   │   │   │       └── order.go
│   │   │   ├── server/
│   │   │   │   ├── grpc.go
│   │   │   │   └── server.go
│   │   │   └── service/
│   │   │       ├── README.md
│   │   │       ├── order.go
│   │   │       └── service.go
│   │   ├── openapi.yaml
│   │   └── third_party/
│   │       ├── README.md
│   │       ├── errors/
│   │       │   └── errors.proto
│   │       ├── google/
│   │       │   ├── api/
│   │       │   │   ├── annotations.proto
│   │       │   │   ├── client.proto
│   │       │   │   ├── field_behavior.proto
│   │       │   │   ├── http.proto
│   │       │   │   └── httpbody.proto
│   │       │   └── protobuf/
│   │       │       ├── any.proto
│   │       │       ├── api.proto
│   │       │       ├── compiler/
│   │       │       │   └── plugin.proto
│   │       │       ├── descriptor.proto
│   │       │       ├── duration.proto
│   │       │       ├── empty.proto
│   │       │       ├── field_mask.proto
│   │       │       ├── source_context.proto
│   │       │       ├── struct.proto
│   │       │       ├── timestamp.proto
│   │       │       ├── type.proto
│   │       │       └── wrappers.proto
│   │       ├── openapi/
│   │       │   └── v3/
│   │       │       ├── annotations.proto
│   │       │       └── openapi.proto
│   │       └── validate/
│   │           ├── README.md
│   │           └── validate.proto
│   └── user/
│       ├── .gitignore
│       ├── Dockerfile
│       ├── LICENSE
│       ├── Makefile
│       ├── README.md
│       ├── api/
│       │   └── user/
│       │       └── v1/
│       │           ├── error_reason.pb.go
│       │           ├── error_reason.pb.validate.go
│       │           ├── error_reason.proto
│       │           ├── error_reason_errors.pb.go
│       │           ├── user.pb.go
│       │           ├── user.pb.validate.go
│       │           ├── user.proto
│       │           └── user_grpc.pb.go
│       ├── cmd/
│       │   └── user/
│       │       ├── main.go
│       │       ├── wire.go
│       │       └── wire_gen.go
│       ├── configs/
│       │   ├── config.yaml
│       │   └── registry.yaml
│       ├── generate.go
│       ├── go.mod
│       ├── go.sum
│       ├── internal/
│       │   ├── biz/
│       │   │   ├── README.md
│       │   │   ├── address.go
│       │   │   ├── address_test.go
│       │   │   ├── biz.go
│       │   │   ├── biz_suite_test.go
│       │   │   ├── user.go
│       │   │   └── user_test.go
│       │   ├── conf/
│       │   │   ├── conf.pb.go
│       │   │   └── conf.proto
│       │   ├── data/
│       │   │   ├── README.md
│       │   │   ├── address.go
│       │   │   ├── address_test.go
│       │   │   ├── data.go
│       │   │   ├── data_suite_test.go
│       │   │   ├── docker_mysql.go
│       │   │   ├── entity/
│       │   │   │   └── user.go
│       │   │   ├── user.go
│       │   │   └── user_test.go
│       │   ├── domain/
│       │   │   └── address.go
│       │   ├── mocks/
│       │   │   ├── mrepo/
│       │   │   │   ├── address.go
│       │   │   │   └── user.go
│       │   │   └── usecase/
│       │   │       └── biz.go
│       │   ├── server/
│       │   │   ├── grpc.go
│       │   │   └── server.go
│       │   ├── service/
│       │   │   ├── README.md
│       │   │   ├── address.go
│       │   │   ├── service.go
│       │   │   └── user.go
│       │   └── testdata/
│       │       └── user.go
│       ├── openapi.yaml
│       ├── test/
│       │   └── user.go
│       └── third_party/
│           ├── README.md
│           ├── errors/
│           │   └── errors.proto
│           ├── google/
│           │   ├── api/
│           │   │   ├── annotations.proto
│           │   │   ├── client.proto
│           │   │   ├── field_behavior.proto
│           │   │   ├── http.proto
│           │   │   └── httpbody.proto
│           │   └── protobuf/
│           │       ├── any.proto
│           │       ├── api.proto
│           │       ├── compiler/
│           │       │   └── plugin.proto
│           │       ├── descriptor.proto
│           │       ├── duration.proto
│           │       ├── empty.proto
│           │       ├── field_mask.proto
│           │       ├── source_context.proto
│           │       ├── struct.proto
│           │       ├── timestamp.proto
│           │       ├── type.proto
│           │       └── wrappers.proto
│           ├── openapi/
│           │   └── v3/
│           │       ├── annotations.proto
│           │       └── openapi.proto
│           └── validate/
│               ├── README.md
│               └── validate.proto
├── shop/
│   ├── .gitignore
│   ├── Dockerfile
│   ├── LICENSE
│   ├── Makefile
│   ├── README.md
│   ├── api/
│   │   ├── service/
│   │   │   └── user/
│   │   │       └── v1/
│   │   │           ├── user.pb.go
│   │   │           ├── user.pb.validate.go
│   │   │           ├── user.proto
│   │   │           └── user_grpc.pb.go
│   │   └── shop/
│   │       └── v1/
│   │           ├── error_reason.pb.go
│   │           ├── error_reason.pb.validate.go
│   │           ├── error_reason.proto
│   │           ├── error_reason_errors.pb.go
│   │           ├── shop.pb.go
│   │           ├── shop.pb.validate.go
│   │           ├── shop.proto
│   │           ├── shop_grpc.pb.go
│   │           └── shop_http.pb.go
│   ├── cmd/
│   │   └── shop/
│   │       ├── main.go
│   │       ├── wire.go
│   │       └── wire_gen.go
│   ├── configs/
│   │   ├── config.yaml
│   │   └── registry.yaml
│   ├── generate.go
│   ├── go.mod
│   ├── go.sum
│   ├── internal/
│   │   ├── biz/
│   │   │   ├── README.md
│   │   │   ├── address.go
│   │   │   ├── biz.go
│   │   │   └── user.go
│   │   ├── conf/
│   │   │   ├── conf.pb.go
│   │   │   └── conf.proto
│   │   ├── data/
│   │   │   ├── README.md
│   │   │   ├── address.go
│   │   │   ├── data.go
│   │   │   └── user.go
│   │   ├── pkg/
│   │   │   ├── captcha/
│   │   │   │   └── captcha.go
│   │   │   └── middleware/
│   │   │       └── auth/
│   │   │           └── auth.go
│   │   ├── server/
│   │   │   ├── grpc.go
│   │   │   ├── http.go
│   │   │   └── server.go
│   │   └── service/
│   │       ├── README.md
│   │       ├── service.go
│   │       └── user.go
│   ├── openapi.yaml
│   └── third_party/
│       ├── README.md
│       ├── errors/
│       │   └── errors.proto
│       ├── google/
│       │   ├── api/
│       │   │   ├── annotations.proto
│       │   │   ├── client.proto
│       │   │   ├── field_behavior.proto
│       │   │   ├── http.proto
│       │   │   └── httpbody.proto
│       │   └── protobuf/
│       │       └── descriptor.proto
│       ├── protoc-gen-openapiv2/
│       │   └── options/
│       │       ├── annotations.proto
│       │       └── openapiv2.proto
│       └── validate/
│           ├── README.md
│           └── validate.proto
└── web/
    └── admin/
        ├── config/
        │   ├── config.dev.js
        │   ├── config.js
        │   ├── defaultSettings.js
        │   ├── oneapi.json
        │   ├── proxy.js
        │   └── routes.js
        ├── jest.config.js
        ├── jsconfig.json
        ├── package.json
        ├── public/
        │   └── CNAME
        ├── src/
        │   ├── access.js
        │   ├── app.jsx
        │   ├── components/
        │   │   ├── Footer/
        │   │   │   └── index.jsx
        │   │   ├── HeaderDropdown/
        │   │   │   ├── index.jsx
        │   │   │   └── index.less
        │   │   ├── HeaderSearch/
        │   │   │   ├── index.jsx
        │   │   │   └── index.less
        │   │   ├── NoticeIcon/
        │   │   │   ├── NoticeIcon.jsx
        │   │   │   ├── NoticeList.jsx
        │   │   │   ├── NoticeList.less
        │   │   │   ├── index.jsx
        │   │   │   └── index.less
        │   │   ├── RightContent/
        │   │   │   ├── AvatarDropdown.jsx
        │   │   │   ├── index.jsx
        │   │   │   └── index.less
        │   │   └── index.md
        │   ├── e2e/
        │   │   └── baseLayout.e2e.spec.js
        │   ├── global.jsx
        │   ├── global.less
        │   ├── locales/
        │   │   ├── bn-BD/
        │   │   │   ├── component.js
        │   │   │   ├── globalHeader.js
        │   │   │   ├── menu.js
        │   │   │   ├── pages.js
        │   │   │   ├── pwa.js
        │   │   │   ├── settingDrawer.js
        │   │   │   └── settings.js
        │   │   ├── bn-BD.js
        │   │   ├── en-US/
        │   │   │   ├── component.js
        │   │   │   ├── globalHeader.js
        │   │   │   ├── menu.js
        │   │   │   ├── pages.js
        │   │   │   ├── pwa.js
        │   │   │   ├── settingDrawer.js
        │   │   │   └── settings.js
        │   │   ├── en-US.js
        │   │   ├── fa-IR/
        │   │   │   ├── component.js
        │   │   │   ├── globalHeader.js
        │   │   │   ├── menu.js
        │   │   │   ├── pages.js
        │   │   │   ├── pwa.js
        │   │   │   ├── settingDrawer.js
        │   │   │   └── settings.js
        │   │   ├── fa-IR.js
        │   │   ├── id-ID/
        │   │   │   ├── component.js
        │   │   │   ├── globalHeader.js
        │   │   │   ├── menu.js
        │   │   │   ├── pages.js
        │   │   │   ├── pwa.js
        │   │   │   ├── settingDrawer.js
        │   │   │   └── settings.js
        │   │   ├── id-ID.js
        │   │   ├── ja-JP/
        │   │   │   ├── component.js
        │   │   │   ├── globalHeader.js
        │   │   │   ├── menu.js
        │   │   │   ├── pages.js
        │   │   │   ├── pwa.js
        │   │   │   ├── settingDrawer.js
        │   │   │   └── settings.js
        │   │   ├── ja-JP.js
        │   │   ├── pt-BR/
        │   │   │   ├── component.js
        │   │   │   ├── globalHeader.js
        │   │   │   ├── menu.js
        │   │   │   ├── pages.js
        │   │   │   ├── pwa.js
        │   │   │   ├── settingDrawer.js
        │   │   │   └── settings.js
        │   │   ├── pt-BR.js
        │   │   ├── zh-CN/
        │   │   │   ├── component.js
        │   │   │   ├── globalHeader.js
        │   │   │   ├── menu.js
        │   │   │   ├── pages.js
        │   │   │   ├── pwa.js
        │   │   │   ├── settingDrawer.js
        │   │   │   └── settings.js
        │   │   ├── zh-CN.js
        │   │   ├── zh-TW/
        │   │   │   ├── component.js
        │   │   │   ├── globalHeader.js
        │   │   │   ├── menu.js
        │   │   │   ├── pwa.js
        │   │   │   ├── settingDrawer.js
        │   │   │   └── settings.js
        │   │   └── zh-TW.js
        │   ├── manifest.json
        │   ├── pages/
        │   │   ├── 404.jsx
        │   │   ├── Admin.jsx
        │   │   ├── TableList/
        │   │   │   ├── components/
        │   │   │   │   └── UpdateForm.jsx
        │   │   │   └── index.jsx
        │   │   ├── Welcome.jsx
        │   │   ├── Welcome.less
        │   │   ├── document.ejs
        │   │   └── user/
        │   │       └── Login/
        │   │           ├── index.jsx
        │   │           └── index.less
        │   ├── service-worker.js
        │   └── services/
        │       ├── ant-design-pro/
        │       │   ├── api.js
        │       │   ├── index.js
        │       │   └── login.js
        │       └── swagger/
        │           ├── index.js
        │           ├── pet.js
        │           ├── store.js
        │           └── user.js
        └── tests/
            ├── run-tests.js
            └── setupTests.js
Download .txt
Showing preview only (526K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (5872 symbols across 182 files)

FILE: admin/api/admin/v1/admin.pb.go
  constant _ (line 21) | _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
  constant _ (line 23) | _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
  type CreateAddressReq (line 26) | type CreateAddressReq struct
    method Reset (line 42) | func (x *CreateAddressReq) Reset() {
    method String (line 51) | func (x *CreateAddressReq) String() string {
    method ProtoMessage (line 55) | func (*CreateAddressReq) ProtoMessage() {}
    method ProtoReflect (line 57) | func (x *CreateAddressReq) ProtoReflect() protoreflect.Message {
    method Descriptor (line 70) | func (*CreateAddressReq) Descriptor() ([]byte, []int) {
    method GetUid (line 74) | func (x *CreateAddressReq) GetUid() int64 {
    method GetName (line 81) | func (x *CreateAddressReq) GetName() string {
    method GetMobile (line 88) | func (x *CreateAddressReq) GetMobile() string {
    method GetProvince (line 95) | func (x *CreateAddressReq) GetProvince() string {
    method GetCity (line 102) | func (x *CreateAddressReq) GetCity() string {
    method GetDistricts (line 109) | func (x *CreateAddressReq) GetDistricts() string {
    method GetAddress (line 116) | func (x *CreateAddressReq) GetAddress() string {
    method GetPostCode (line 123) | func (x *CreateAddressReq) GetPostCode() string {
    method GetIsDefault (line 130) | func (x *CreateAddressReq) GetIsDefault() int32 {
  type UpdateAddressReq (line 137) | type UpdateAddressReq struct
    method Reset (line 154) | func (x *UpdateAddressReq) Reset() {
    method String (line 163) | func (x *UpdateAddressReq) String() string {
    method ProtoMessage (line 167) | func (*UpdateAddressReq) ProtoMessage() {}
    method ProtoReflect (line 169) | func (x *UpdateAddressReq) ProtoReflect() protoreflect.Message {
    method Descriptor (line 182) | func (*UpdateAddressReq) Descriptor() ([]byte, []int) {
    method GetUid (line 186) | func (x *UpdateAddressReq) GetUid() int64 {
    method GetName (line 193) | func (x *UpdateAddressReq) GetName() string {
    method GetMobile (line 200) | func (x *UpdateAddressReq) GetMobile() string {
    method GetProvince (line 207) | func (x *UpdateAddressReq) GetProvince() string {
    method GetCity (line 214) | func (x *UpdateAddressReq) GetCity() string {
    method GetDistricts (line 221) | func (x *UpdateAddressReq) GetDistricts() string {
    method GetAddress (line 228) | func (x *UpdateAddressReq) GetAddress() string {
    method GetPostCode (line 235) | func (x *UpdateAddressReq) GetPostCode() string {
    method GetIsDefault (line 242) | func (x *UpdateAddressReq) GetIsDefault() int32 {
    method GetId (line 249) | func (x *UpdateAddressReq) GetId() int64 {
  type AddressInfo (line 256) | type AddressInfo struct
    method Reset (line 272) | func (x *AddressInfo) Reset() {
    method String (line 281) | func (x *AddressInfo) String() string {
    method ProtoMessage (line 285) | func (*AddressInfo) ProtoMessage() {}
    method ProtoReflect (line 287) | func (x *AddressInfo) ProtoReflect() protoreflect.Message {
    method Descriptor (line 300) | func (*AddressInfo) Descriptor() ([]byte, []int) {
    method GetId (line 304) | func (x *AddressInfo) GetId() int64 {
    method GetName (line 311) | func (x *AddressInfo) GetName() string {
    method GetMobile (line 318) | func (x *AddressInfo) GetMobile() string {
    method GetProvince (line 325) | func (x *AddressInfo) GetProvince() string {
    method GetCity (line 332) | func (x *AddressInfo) GetCity() string {
    method GetDistricts (line 339) | func (x *AddressInfo) GetDistricts() string {
    method GetAddress (line 346) | func (x *AddressInfo) GetAddress() string {
    method GetPostCode (line 353) | func (x *AddressInfo) GetPostCode() string {
    method GetIsDefault (line 360) | func (x *AddressInfo) GetIsDefault() int32 {
  type ListAddressReq (line 367) | type ListAddressReq struct
    method Reset (line 375) | func (x *ListAddressReq) Reset() {
    method String (line 384) | func (x *ListAddressReq) String() string {
    method ProtoMessage (line 388) | func (*ListAddressReq) ProtoMessage() {}
    method ProtoReflect (line 390) | func (x *ListAddressReq) ProtoReflect() protoreflect.Message {
    method Descriptor (line 403) | func (*ListAddressReq) Descriptor() ([]byte, []int) {
    method GetUid (line 407) | func (x *ListAddressReq) GetUid() int64 {
  type ListAddressReply (line 414) | type ListAddressReply struct
    method Reset (line 422) | func (x *ListAddressReply) Reset() {
    method String (line 431) | func (x *ListAddressReply) String() string {
    method ProtoMessage (line 435) | func (*ListAddressReply) ProtoMessage() {}
    method ProtoReflect (line 437) | func (x *ListAddressReply) ProtoReflect() protoreflect.Message {
    method Descriptor (line 450) | func (*ListAddressReply) Descriptor() ([]byte, []int) {
    method GetResults (line 454) | func (x *ListAddressReply) GetResults() []*AddressInfo {
  type AddressReq (line 461) | type AddressReq struct
    method Reset (line 470) | func (x *AddressReq) Reset() {
    method String (line 479) | func (x *AddressReq) String() string {
    method ProtoMessage (line 483) | func (*AddressReq) ProtoMessage() {}
    method ProtoReflect (line 485) | func (x *AddressReq) ProtoReflect() protoreflect.Message {
    method Descriptor (line 498) | func (*AddressReq) Descriptor() ([]byte, []int) {
    method GetId (line 502) | func (x *AddressReq) GetId() int64 {
    method GetUid (line 509) | func (x *AddressReq) GetUid() int64 {
  type CheckResponse (line 516) | type CheckResponse struct
    method Reset (line 524) | func (x *CheckResponse) Reset() {
    method String (line 533) | func (x *CheckResponse) String() string {
    method ProtoMessage (line 537) | func (*CheckResponse) ProtoMessage() {}
    method ProtoReflect (line 539) | func (x *CheckResponse) ProtoReflect() protoreflect.Message {
    method Descriptor (line 552) | func (*CheckResponse) Descriptor() ([]byte, []int) {
    method GetSuccess (line 556) | func (x *CheckResponse) GetSuccess() bool {
  type RegisterReply (line 564) | type RegisterReply struct
    method Reset (line 576) | func (x *RegisterReply) Reset() {
    method String (line 585) | func (x *RegisterReply) String() string {
    method ProtoMessage (line 589) | func (*RegisterReply) ProtoMessage() {}
    method ProtoReflect (line 591) | func (x *RegisterReply) ProtoReflect() protoreflect.Message {
    method Descriptor (line 604) | func (*RegisterReply) Descriptor() ([]byte, []int) {
    method GetId (line 608) | func (x *RegisterReply) GetId() int64 {
    method GetMobile (line 615) | func (x *RegisterReply) GetMobile() string {
    method GetUsername (line 622) | func (x *RegisterReply) GetUsername() string {
    method GetToken (line 629) | func (x *RegisterReply) GetToken() string {
    method GetExpiredAt (line 636) | func (x *RegisterReply) GetExpiredAt() int64 {
  type RegisterReq (line 643) | type RegisterReq struct
    method Reset (line 653) | func (x *RegisterReq) Reset() {
    method String (line 662) | func (x *RegisterReq) String() string {
    method ProtoMessage (line 666) | func (*RegisterReq) ProtoMessage() {}
    method ProtoReflect (line 668) | func (x *RegisterReq) ProtoReflect() protoreflect.Message {
    method Descriptor (line 681) | func (*RegisterReq) Descriptor() ([]byte, []int) {
    method GetMobile (line 685) | func (x *RegisterReq) GetMobile() string {
    method GetUsername (line 692) | func (x *RegisterReq) GetUsername() string {
    method GetPassword (line 699) | func (x *RegisterReq) GetPassword() string {
  type LoginReq (line 706) | type LoginReq struct
    method Reset (line 715) | func (x *LoginReq) Reset() {
    method String (line 724) | func (x *LoginReq) String() string {
    method ProtoMessage (line 728) | func (*LoginReq) ProtoMessage() {}
    method ProtoReflect (line 730) | func (x *LoginReq) ProtoReflect() protoreflect.Message {
    method Descriptor (line 743) | func (*LoginReq) Descriptor() ([]byte, []int) {
    method GetUsername (line 747) | func (x *LoginReq) GetUsername() string {
    method GetPassword (line 754) | func (x *LoginReq) GetPassword() string {
  type UserDetailResponse (line 762) | type UserDetailResponse struct
    method Reset (line 775) | func (x *UserDetailResponse) Reset() {
    method String (line 784) | func (x *UserDetailResponse) String() string {
    method ProtoMessage (line 788) | func (*UserDetailResponse) ProtoMessage() {}
    method ProtoReflect (line 790) | func (x *UserDetailResponse) ProtoReflect() protoreflect.Message {
    method Descriptor (line 803) | func (*UserDetailResponse) Descriptor() ([]byte, []int) {
    method GetId (line 807) | func (x *UserDetailResponse) GetId() int64 {
    method GetMobile (line 814) | func (x *UserDetailResponse) GetMobile() string {
    method GetNickName (line 821) | func (x *UserDetailResponse) GetNickName() string {
    method GetBirthday (line 828) | func (x *UserDetailResponse) GetBirthday() int64 {
    method GetGender (line 835) | func (x *UserDetailResponse) GetGender() string {
    method GetRole (line 842) | func (x *UserDetailResponse) GetRole() int32 {
  type CaptchaReply (line 849) | type CaptchaReply struct
    method Reset (line 858) | func (x *CaptchaReply) Reset() {
    method String (line 867) | func (x *CaptchaReply) String() string {
    method ProtoMessage (line 871) | func (*CaptchaReply) ProtoMessage() {}
    method ProtoReflect (line 873) | func (x *CaptchaReply) ProtoReflect() protoreflect.Message {
    method Descriptor (line 886) | func (*CaptchaReply) Descriptor() ([]byte, []int) {
    method GetCaptchaId (line 890) | func (x *CaptchaReply) GetCaptchaId() string {
    method GetPicPath (line 897) | func (x *CaptchaReply) GetPicPath() string {
  function file_api_admin_v1_admin_proto_rawDescGZIP (line 1088) | func file_api_admin_v1_admin_proto_rawDescGZIP() []byte {
  function init (line 1138) | func init() { file_api_admin_v1_admin_proto_init() }
  function file_api_admin_v1_admin_proto_init (line 1139) | func file_api_admin_v1_admin_proto_init() {

FILE: admin/api/admin/v1/admin.pb.validate.go
  method Validate (line 41) | func (m *CreateAddressReq) Validate() error {
  method ValidateAll (line 49) | func (m *CreateAddressReq) ValidateAll() error {
  method validate (line 53) | func (m *CreateAddressReq) validate(all bool) error {
  type CreateAddressReqMultiError (line 143) | type CreateAddressReqMultiError
    method Error (line 146) | func (m CreateAddressReqMultiError) Error() string {
    method AllErrors (line 155) | func (m CreateAddressReqMultiError) AllErrors() []error { return m }
  type CreateAddressReqValidationError (line 159) | type CreateAddressReqValidationError struct
    method Field (line 167) | func (e CreateAddressReqValidationError) Field() string { return e.fie...
    method Reason (line 170) | func (e CreateAddressReqValidationError) Reason() string { return e.re...
    method Cause (line 173) | func (e CreateAddressReqValidationError) Cause() error { return e.cause }
    method Key (line 176) | func (e CreateAddressReqValidationError) Key() bool { return e.key }
    method ErrorName (line 179) | func (e CreateAddressReqValidationError) ErrorName() string { return "...
    method Error (line 182) | func (e CreateAddressReqValidationError) Error() string {
  method Validate (line 214) | func (m *UpdateAddressReq) Validate() error {
  method ValidateAll (line 222) | func (m *UpdateAddressReq) ValidateAll() error {
  method validate (line 226) | func (m *UpdateAddressReq) validate(all bool) error {
  type UpdateAddressReqMultiError (line 318) | type UpdateAddressReqMultiError
    method Error (line 321) | func (m UpdateAddressReqMultiError) Error() string {
    method AllErrors (line 330) | func (m UpdateAddressReqMultiError) AllErrors() []error { return m }
  type UpdateAddressReqValidationError (line 334) | type UpdateAddressReqValidationError struct
    method Field (line 342) | func (e UpdateAddressReqValidationError) Field() string { return e.fie...
    method Reason (line 345) | func (e UpdateAddressReqValidationError) Reason() string { return e.re...
    method Cause (line 348) | func (e UpdateAddressReqValidationError) Cause() error { return e.cause }
    method Key (line 351) | func (e UpdateAddressReqValidationError) Key() bool { return e.key }
    method ErrorName (line 354) | func (e UpdateAddressReqValidationError) ErrorName() string { return "...
    method Error (line 357) | func (e UpdateAddressReqValidationError) Error() string {
  method Validate (line 389) | func (m *AddressInfo) Validate() error {
  method ValidateAll (line 397) | func (m *AddressInfo) ValidateAll() error {
  method validate (line 401) | func (m *AddressInfo) validate(all bool) error {
  type AddressInfoMultiError (line 454) | type AddressInfoMultiError
    method Error (line 457) | func (m AddressInfoMultiError) Error() string {
    method AllErrors (line 466) | func (m AddressInfoMultiError) AllErrors() []error { return m }
  type AddressInfoValidationError (line 470) | type AddressInfoValidationError struct
    method Field (line 478) | func (e AddressInfoValidationError) Field() string { return e.field }
    method Reason (line 481) | func (e AddressInfoValidationError) Reason() string { return e.reason }
    method Cause (line 484) | func (e AddressInfoValidationError) Cause() error { return e.cause }
    method Key (line 487) | func (e AddressInfoValidationError) Key() bool { return e.key }
    method ErrorName (line 490) | func (e AddressInfoValidationError) ErrorName() string { return "Addre...
    method Error (line 493) | func (e AddressInfoValidationError) Error() string {
  method Validate (line 525) | func (m *ListAddressReq) Validate() error {
  method ValidateAll (line 533) | func (m *ListAddressReq) ValidateAll() error {
  method validate (line 537) | func (m *ListAddressReq) validate(all bool) error {
  type ListAddressReqMultiError (line 556) | type ListAddressReqMultiError
    method Error (line 559) | func (m ListAddressReqMultiError) Error() string {
    method AllErrors (line 568) | func (m ListAddressReqMultiError) AllErrors() []error { return m }
  type ListAddressReqValidationError (line 572) | type ListAddressReqValidationError struct
    method Field (line 580) | func (e ListAddressReqValidationError) Field() string { return e.field }
    method Reason (line 583) | func (e ListAddressReqValidationError) Reason() string { return e.reas...
    method Cause (line 586) | func (e ListAddressReqValidationError) Cause() error { return e.cause }
    method Key (line 589) | func (e ListAddressReqValidationError) Key() bool { return e.key }
    method ErrorName (line 592) | func (e ListAddressReqValidationError) ErrorName() string { return "Li...
    method Error (line 595) | func (e ListAddressReqValidationError) Error() string {
  method Validate (line 627) | func (m *ListAddressReply) Validate() error {
  method ValidateAll (line 635) | func (m *ListAddressReply) ValidateAll() error {
  method validate (line 639) | func (m *ListAddressReply) validate(all bool) error {
  type ListAddressReplyMultiError (line 690) | type ListAddressReplyMultiError
    method Error (line 693) | func (m ListAddressReplyMultiError) Error() string {
    method AllErrors (line 702) | func (m ListAddressReplyMultiError) AllErrors() []error { return m }
  type ListAddressReplyValidationError (line 706) | type ListAddressReplyValidationError struct
    method Field (line 714) | func (e ListAddressReplyValidationError) Field() string { return e.fie...
    method Reason (line 717) | func (e ListAddressReplyValidationError) Reason() string { return e.re...
    method Cause (line 720) | func (e ListAddressReplyValidationError) Cause() error { return e.cause }
    method Key (line 723) | func (e ListAddressReplyValidationError) Key() bool { return e.key }
    method ErrorName (line 726) | func (e ListAddressReplyValidationError) ErrorName() string { return "...
    method Error (line 729) | func (e ListAddressReplyValidationError) Error() string {
  method Validate (line 761) | func (m *AddressReq) Validate() error {
  method ValidateAll (line 769) | func (m *AddressReq) ValidateAll() error {
  method validate (line 773) | func (m *AddressReq) validate(all bool) error {
  type AddressReqMultiError (line 802) | type AddressReqMultiError
    method Error (line 805) | func (m AddressReqMultiError) Error() string {
    method AllErrors (line 814) | func (m AddressReqMultiError) AllErrors() []error { return m }
  type AddressReqValidationError (line 818) | type AddressReqValidationError struct
    method Field (line 826) | func (e AddressReqValidationError) Field() string { return e.field }
    method Reason (line 829) | func (e AddressReqValidationError) Reason() string { return e.reason }
    method Cause (line 832) | func (e AddressReqValidationError) Cause() error { return e.cause }
    method Key (line 835) | func (e AddressReqValidationError) Key() bool { return e.key }
    method ErrorName (line 838) | func (e AddressReqValidationError) ErrorName() string { return "Addres...
    method Error (line 841) | func (e AddressReqValidationError) Error() string {
  method Validate (line 873) | func (m *CheckResponse) Validate() error {
  method ValidateAll (line 881) | func (m *CheckResponse) ValidateAll() error {
  method validate (line 885) | func (m *CheckResponse) validate(all bool) error {
  type CheckResponseMultiError (line 904) | type CheckResponseMultiError
    method Error (line 907) | func (m CheckResponseMultiError) Error() string {
    method AllErrors (line 916) | func (m CheckResponseMultiError) AllErrors() []error { return m }
  type CheckResponseValidationError (line 920) | type CheckResponseValidationError struct
    method Field (line 928) | func (e CheckResponseValidationError) Field() string { return e.field }
    method Reason (line 931) | func (e CheckResponseValidationError) Reason() string { return e.reason }
    method Cause (line 934) | func (e CheckResponseValidationError) Cause() error { return e.cause }
    method Key (line 937) | func (e CheckResponseValidationError) Key() bool { return e.key }
    method ErrorName (line 940) | func (e CheckResponseValidationError) ErrorName() string { return "Che...
    method Error (line 943) | func (e CheckResponseValidationError) Error() string {
  method Validate (line 975) | func (m *RegisterReply) Validate() error {
  method ValidateAll (line 983) | func (m *RegisterReply) ValidateAll() error {
  method validate (line 987) | func (m *RegisterReply) validate(all bool) error {
  type RegisterReplyMultiError (line 1014) | type RegisterReplyMultiError
    method Error (line 1017) | func (m RegisterReplyMultiError) Error() string {
    method AllErrors (line 1026) | func (m RegisterReplyMultiError) AllErrors() []error { return m }
  type RegisterReplyValidationError (line 1030) | type RegisterReplyValidationError struct
    method Field (line 1038) | func (e RegisterReplyValidationError) Field() string { return e.field }
    method Reason (line 1041) | func (e RegisterReplyValidationError) Reason() string { return e.reason }
    method Cause (line 1044) | func (e RegisterReplyValidationError) Cause() error { return e.cause }
    method Key (line 1047) | func (e RegisterReplyValidationError) Key() bool { return e.key }
    method ErrorName (line 1050) | func (e RegisterReplyValidationError) ErrorName() string { return "Reg...
    method Error (line 1053) | func (e RegisterReplyValidationError) Error() string {
  method Validate (line 1085) | func (m *RegisterReq) Validate() error {
  method ValidateAll (line 1093) | func (m *RegisterReq) ValidateAll() error {
  method validate (line 1097) | func (m *RegisterReq) validate(all bool) error {
  type RegisterReqMultiError (line 1147) | type RegisterReqMultiError
    method Error (line 1150) | func (m RegisterReqMultiError) Error() string {
    method AllErrors (line 1159) | func (m RegisterReqMultiError) AllErrors() []error { return m }
  type RegisterReqValidationError (line 1163) | type RegisterReqValidationError struct
    method Field (line 1171) | func (e RegisterReqValidationError) Field() string { return e.field }
    method Reason (line 1174) | func (e RegisterReqValidationError) Reason() string { return e.reason }
    method Cause (line 1177) | func (e RegisterReqValidationError) Cause() error { return e.cause }
    method Key (line 1180) | func (e RegisterReqValidationError) Key() bool { return e.key }
    method ErrorName (line 1183) | func (e RegisterReqValidationError) ErrorName() string { return "Regis...
    method Error (line 1186) | func (e RegisterReqValidationError) Error() string {
  method Validate (line 1218) | func (m *LoginReq) Validate() error {
  method ValidateAll (line 1226) | func (m *LoginReq) ValidateAll() error {
  method validate (line 1230) | func (m *LoginReq) validate(all bool) error {
  type LoginReqMultiError (line 1268) | type LoginReqMultiError
    method Error (line 1271) | func (m LoginReqMultiError) Error() string {
    method AllErrors (line 1280) | func (m LoginReqMultiError) AllErrors() []error { return m }
  type LoginReqValidationError (line 1284) | type LoginReqValidationError struct
    method Field (line 1292) | func (e LoginReqValidationError) Field() string { return e.field }
    method Reason (line 1295) | func (e LoginReqValidationError) Reason() string { return e.reason }
    method Cause (line 1298) | func (e LoginReqValidationError) Cause() error { return e.cause }
    method Key (line 1301) | func (e LoginReqValidationError) Key() bool { return e.key }
    method ErrorName (line 1304) | func (e LoginReqValidationError) ErrorName() string { return "LoginReq...
    method Error (line 1307) | func (e LoginReqValidationError) Error() string {
  method Validate (line 1339) | func (m *UserDetailResponse) Validate() error {
  method ValidateAll (line 1347) | func (m *UserDetailResponse) ValidateAll() error {
  method validate (line 1351) | func (m *UserDetailResponse) validate(all bool) error {
  type UserDetailResponseMultiError (line 1380) | type UserDetailResponseMultiError
    method Error (line 1383) | func (m UserDetailResponseMultiError) Error() string {
    method AllErrors (line 1392) | func (m UserDetailResponseMultiError) AllErrors() []error { return m }
  type UserDetailResponseValidationError (line 1396) | type UserDetailResponseValidationError struct
    method Field (line 1404) | func (e UserDetailResponseValidationError) Field() string { return e.f...
    method Reason (line 1407) | func (e UserDetailResponseValidationError) Reason() string { return e....
    method Cause (line 1410) | func (e UserDetailResponseValidationError) Cause() error { return e.ca...
    method Key (line 1413) | func (e UserDetailResponseValidationError) Key() bool { return e.key }
    method ErrorName (line 1416) | func (e UserDetailResponseValidationError) ErrorName() string {
    method Error (line 1421) | func (e UserDetailResponseValidationError) Error() string {
  method Validate (line 1453) | func (m *CaptchaReply) Validate() error {
  method ValidateAll (line 1461) | func (m *CaptchaReply) ValidateAll() error {
  method validate (line 1465) | func (m *CaptchaReply) validate(all bool) error {
  type CaptchaReplyMultiError (line 1485) | type CaptchaReplyMultiError
    method Error (line 1488) | func (m CaptchaReplyMultiError) Error() string {
    method AllErrors (line 1497) | func (m CaptchaReplyMultiError) AllErrors() []error { return m }
  type CaptchaReplyValidationError (line 1501) | type CaptchaReplyValidationError struct
    method Field (line 1509) | func (e CaptchaReplyValidationError) Field() string { return e.field }
    method Reason (line 1512) | func (e CaptchaReplyValidationError) Reason() string { return e.reason }
    method Cause (line 1515) | func (e CaptchaReplyValidationError) Cause() error { return e.cause }
    method Key (line 1518) | func (e CaptchaReplyValidationError) Key() bool { return e.key }
    method ErrorName (line 1521) | func (e CaptchaReplyValidationError) ErrorName() string { return "Capt...
    method Error (line 1524) | func (e CaptchaReplyValidationError) Error() string {

FILE: admin/api/admin/v1/admin_grpc.pb.go
  constant _ (line 20) | _ = grpc.SupportPackageIsVersion7
  type AdminClient (line 25) | type AdminClient interface
  type adminClient (line 37) | type adminClient struct
    method Register (line 45) | func (c *adminClient) Register(ctx context.Context, in *RegisterReq, o...
    method Login (line 54) | func (c *adminClient) Login(ctx context.Context, in *LoginReq, opts .....
    method Captcha (line 63) | func (c *adminClient) Captcha(ctx context.Context, in *emptypb.Empty, ...
    method Detail (line 72) | func (c *adminClient) Detail(ctx context.Context, in *emptypb.Empty, o...
    method CreateAddress (line 81) | func (c *adminClient) CreateAddress(ctx context.Context, in *CreateAdd...
    method AddressListByUid (line 90) | func (c *adminClient) AddressListByUid(ctx context.Context, in *emptyp...
    method UpdateAddress (line 99) | func (c *adminClient) UpdateAddress(ctx context.Context, in *UpdateAdd...
    method DefaultAddress (line 108) | func (c *adminClient) DefaultAddress(ctx context.Context, in *AddressR...
    method DeleteAddress (line 117) | func (c *adminClient) DeleteAddress(ctx context.Context, in *AddressRe...
  function NewAdminClient (line 41) | func NewAdminClient(cc grpc.ClientConnInterface) AdminClient {
  type AdminServer (line 129) | type AdminServer interface
  type UnimplementedAdminServer (line 143) | type UnimplementedAdminServer struct
    method Register (line 146) | func (UnimplementedAdminServer) Register(context.Context, *RegisterReq...
    method Login (line 149) | func (UnimplementedAdminServer) Login(context.Context, *LoginReq) (*Re...
    method Captcha (line 152) | func (UnimplementedAdminServer) Captcha(context.Context, *emptypb.Empt...
    method Detail (line 155) | func (UnimplementedAdminServer) Detail(context.Context, *emptypb.Empty...
    method CreateAddress (line 158) | func (UnimplementedAdminServer) CreateAddress(context.Context, *Create...
    method AddressListByUid (line 161) | func (UnimplementedAdminServer) AddressListByUid(context.Context, *emp...
    method UpdateAddress (line 164) | func (UnimplementedAdminServer) UpdateAddress(context.Context, *Update...
    method DefaultAddress (line 167) | func (UnimplementedAdminServer) DefaultAddress(context.Context, *Addre...
    method DeleteAddress (line 170) | func (UnimplementedAdminServer) DeleteAddress(context.Context, *Addres...
    method mustEmbedUnimplementedAdminServer (line 173) | func (UnimplementedAdminServer) mustEmbedUnimplementedAdminServer() {}
  type UnsafeAdminServer (line 178) | type UnsafeAdminServer interface
  function RegisterAdminServer (line 182) | func RegisterAdminServer(s grpc.ServiceRegistrar, srv AdminServer) {
  function _Admin_Register_Handler (line 186) | func _Admin_Register_Handler(srv interface{}, ctx context.Context, dec f...
  function _Admin_Login_Handler (line 204) | func _Admin_Login_Handler(srv interface{}, ctx context.Context, dec func...
  function _Admin_Captcha_Handler (line 222) | func _Admin_Captcha_Handler(srv interface{}, ctx context.Context, dec fu...
  function _Admin_Detail_Handler (line 240) | func _Admin_Detail_Handler(srv interface{}, ctx context.Context, dec fun...
  function _Admin_CreateAddress_Handler (line 258) | func _Admin_CreateAddress_Handler(srv interface{}, ctx context.Context, ...
  function _Admin_AddressListByUid_Handler (line 276) | func _Admin_AddressListByUid_Handler(srv interface{}, ctx context.Contex...
  function _Admin_UpdateAddress_Handler (line 294) | func _Admin_UpdateAddress_Handler(srv interface{}, ctx context.Context, ...
  function _Admin_DefaultAddress_Handler (line 312) | func _Admin_DefaultAddress_Handler(srv interface{}, ctx context.Context,...
  function _Admin_DeleteAddress_Handler (line 330) | func _Admin_DeleteAddress_Handler(srv interface{}, ctx context.Context, ...

FILE: admin/api/admin/v1/admin_http.pb.go
  constant _ (line 19) | _ = http.SupportPackageIsVersion1
  type AdminHTTPServer (line 21) | type AdminHTTPServer interface
  function RegisterAdminHTTPServer (line 33) | func RegisterAdminHTTPServer(s *http.Server, srv AdminHTTPServer) {
  function _Admin_Register0_HTTP_Handler (line 46) | func _Admin_Register0_HTTP_Handler(srv AdminHTTPServer) func(ctx http.Co...
  function _Admin_Login0_HTTP_Handler (line 65) | func _Admin_Login0_HTTP_Handler(srv AdminHTTPServer) func(ctx http.Conte...
  function _Admin_Captcha0_HTTP_Handler (line 84) | func _Admin_Captcha0_HTTP_Handler(srv AdminHTTPServer) func(ctx http.Con...
  function _Admin_Detail0_HTTP_Handler (line 103) | func _Admin_Detail0_HTTP_Handler(srv AdminHTTPServer) func(ctx http.Cont...
  function _Admin_CreateAddress0_HTTP_Handler (line 122) | func _Admin_CreateAddress0_HTTP_Handler(srv AdminHTTPServer) func(ctx ht...
  function _Admin_AddressListByUid0_HTTP_Handler (line 141) | func _Admin_AddressListByUid0_HTTP_Handler(srv AdminHTTPServer) func(ctx...
  function _Admin_UpdateAddress0_HTTP_Handler (line 160) | func _Admin_UpdateAddress0_HTTP_Handler(srv AdminHTTPServer) func(ctx ht...
  function _Admin_DefaultAddress0_HTTP_Handler (line 179) | func _Admin_DefaultAddress0_HTTP_Handler(srv AdminHTTPServer) func(ctx h...
  function _Admin_DeleteAddress0_HTTP_Handler (line 198) | func _Admin_DeleteAddress0_HTTP_Handler(srv AdminHTTPServer) func(ctx ht...
  type AdminHTTPClient (line 217) | type AdminHTTPClient interface
  type AdminHTTPClientImpl (line 229) | type AdminHTTPClientImpl struct
    method AddressListByUid (line 237) | func (c *AdminHTTPClientImpl) AddressListByUid(ctx context.Context, in...
    method Captcha (line 250) | func (c *AdminHTTPClientImpl) Captcha(ctx context.Context, in *emptypb...
    method CreateAddress (line 263) | func (c *AdminHTTPClientImpl) CreateAddress(ctx context.Context, in *C...
    method DefaultAddress (line 276) | func (c *AdminHTTPClientImpl) DefaultAddress(ctx context.Context, in *...
    method DeleteAddress (line 289) | func (c *AdminHTTPClientImpl) DeleteAddress(ctx context.Context, in *A...
    method Detail (line 302) | func (c *AdminHTTPClientImpl) Detail(ctx context.Context, in *emptypb....
    method Login (line 315) | func (c *AdminHTTPClientImpl) Login(ctx context.Context, in *LoginReq,...
    method Register (line 328) | func (c *AdminHTTPClientImpl) Register(ctx context.Context, in *Regist...
    method UpdateAddress (line 341) | func (c *AdminHTTPClientImpl) UpdateAddress(ctx context.Context, in *U...
  function NewAdminHTTPClient (line 233) | func NewAdminHTTPClient(client *http.Client) AdminHTTPClient {

FILE: admin/api/admin/v1/error_reason.pb.go
  constant _ (line 19) | _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
  constant _ (line 21) | _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
  type ErrorReason (line 24) | type ErrorReason
    method Enum (line 43) | func (x ErrorReason) Enum() *ErrorReason {
    method String (line 49) | func (x ErrorReason) String() string {
    method Descriptor (line 53) | func (ErrorReason) Descriptor() protoreflect.EnumDescriptor {
    method Type (line 57) | func (ErrorReason) Type() protoreflect.EnumType {
    method Number (line 61) | func (x ErrorReason) Number() protoreflect.EnumNumber {
    method EnumDescriptor (line 66) | func (ErrorReason) EnumDescriptor() ([]byte, []int) {
  constant ErrorReason_USER_NOT_FOUND (line 27) | ErrorReason_USER_NOT_FOUND  ErrorReason = 0
  constant ErrorReason_CONTENT_MISSING (line 28) | ErrorReason_CONTENT_MISSING ErrorReason = 1
  function file_api_admin_v1_error_reason_proto_rawDescGZIP (line 94) | func file_api_admin_v1_error_reason_proto_rawDescGZIP() []byte {
  function init (line 113) | func init() { file_api_admin_v1_error_reason_proto_init() }
  function file_api_admin_v1_error_reason_proto_init (line 114) | func file_api_admin_v1_error_reason_proto_init() {

FILE: admin/api/admin/v1/error_reason_errors.pb.go
  constant _ (line 12) | _ = errors.SupportPackageIsVersion1
  function IsUserNotFound (line 14) | func IsUserNotFound(err error) bool {
  function ErrorUserNotFound (line 19) | func ErrorUserNotFound(format string, args ...interface{}) *errors.Error {
  function IsContentMissing (line 23) | func IsContentMissing(err error) bool {
  function ErrorContentMissing (line 28) | func ErrorContentMissing(format string, args ...interface{}) *errors.Err...

FILE: admin/api/service/user/v1/user.pb.go
  constant _ (line 19) | _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
  constant _ (line 21) | _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
  type ListAddressReq (line 24) | type ListAddressReq struct
    method Reset (line 32) | func (x *ListAddressReq) Reset() {
    method String (line 41) | func (x *ListAddressReq) String() string {
    method ProtoMessage (line 45) | func (*ListAddressReq) ProtoMessage() {}
    method ProtoReflect (line 47) | func (x *ListAddressReq) ProtoReflect() protoreflect.Message {
    method Descriptor (line 60) | func (*ListAddressReq) Descriptor() ([]byte, []int) {
    method GetUid (line 64) | func (x *ListAddressReq) GetUid() int64 {
  type AddressInfo (line 71) | type AddressInfo struct
    method Reset (line 87) | func (x *AddressInfo) Reset() {
    method String (line 96) | func (x *AddressInfo) String() string {
    method ProtoMessage (line 100) | func (*AddressInfo) ProtoMessage() {}
    method ProtoReflect (line 102) | func (x *AddressInfo) ProtoReflect() protoreflect.Message {
    method Descriptor (line 115) | func (*AddressInfo) Descriptor() ([]byte, []int) {
    method GetId (line 119) | func (x *AddressInfo) GetId() int64 {
    method GetName (line 126) | func (x *AddressInfo) GetName() string {
    method GetMobile (line 133) | func (x *AddressInfo) GetMobile() string {
    method GetProvince (line 140) | func (x *AddressInfo) GetProvince() string {
    method GetCity (line 147) | func (x *AddressInfo) GetCity() string {
    method GetDistricts (line 154) | func (x *AddressInfo) GetDistricts() string {
    method GetAddress (line 161) | func (x *AddressInfo) GetAddress() string {
    method GetPostCode (line 168) | func (x *AddressInfo) GetPostCode() string {
    method GetIsDefault (line 175) | func (x *AddressInfo) GetIsDefault() int32 {
  type ListAddressReply (line 182) | type ListAddressReply struct
    method Reset (line 190) | func (x *ListAddressReply) Reset() {
    method String (line 199) | func (x *ListAddressReply) String() string {
    method ProtoMessage (line 203) | func (*ListAddressReply) ProtoMessage() {}
    method ProtoReflect (line 205) | func (x *ListAddressReply) ProtoReflect() protoreflect.Message {
    method Descriptor (line 218) | func (*ListAddressReply) Descriptor() ([]byte, []int) {
    method GetResults (line 222) | func (x *ListAddressReply) GetResults() []*AddressInfo {
  type CreateAddressReq (line 229) | type CreateAddressReq struct
    method Reset (line 245) | func (x *CreateAddressReq) Reset() {
    method String (line 254) | func (x *CreateAddressReq) String() string {
    method ProtoMessage (line 258) | func (*CreateAddressReq) ProtoMessage() {}
    method ProtoReflect (line 260) | func (x *CreateAddressReq) ProtoReflect() protoreflect.Message {
    method Descriptor (line 273) | func (*CreateAddressReq) Descriptor() ([]byte, []int) {
    method GetUid (line 277) | func (x *CreateAddressReq) GetUid() int64 {
    method GetName (line 284) | func (x *CreateAddressReq) GetName() string {
    method GetMobile (line 291) | func (x *CreateAddressReq) GetMobile() string {
    method GetProvince (line 298) | func (x *CreateAddressReq) GetProvince() string {
    method GetCity (line 305) | func (x *CreateAddressReq) GetCity() string {
    method GetDistricts (line 312) | func (x *CreateAddressReq) GetDistricts() string {
    method GetAddress (line 319) | func (x *CreateAddressReq) GetAddress() string {
    method GetPostCode (line 326) | func (x *CreateAddressReq) GetPostCode() string {
    method GetIsDefault (line 333) | func (x *CreateAddressReq) GetIsDefault() int32 {
  type UpdateAddressReq (line 340) | type UpdateAddressReq struct
    method Reset (line 357) | func (x *UpdateAddressReq) Reset() {
    method String (line 366) | func (x *UpdateAddressReq) String() string {
    method ProtoMessage (line 370) | func (*UpdateAddressReq) ProtoMessage() {}
    method ProtoReflect (line 372) | func (x *UpdateAddressReq) ProtoReflect() protoreflect.Message {
    method Descriptor (line 385) | func (*UpdateAddressReq) Descriptor() ([]byte, []int) {
    method GetUid (line 389) | func (x *UpdateAddressReq) GetUid() int64 {
    method GetName (line 396) | func (x *UpdateAddressReq) GetName() string {
    method GetMobile (line 403) | func (x *UpdateAddressReq) GetMobile() string {
    method GetProvince (line 410) | func (x *UpdateAddressReq) GetProvince() string {
    method GetCity (line 417) | func (x *UpdateAddressReq) GetCity() string {
    method GetDistricts (line 424) | func (x *UpdateAddressReq) GetDistricts() string {
    method GetAddress (line 431) | func (x *UpdateAddressReq) GetAddress() string {
    method GetPostCode (line 438) | func (x *UpdateAddressReq) GetPostCode() string {
    method GetIsDefault (line 445) | func (x *UpdateAddressReq) GetIsDefault() int32 {
    method GetId (line 452) | func (x *UpdateAddressReq) GetId() int64 {
  type AddressReq (line 459) | type AddressReq struct
    method Reset (line 468) | func (x *AddressReq) Reset() {
    method String (line 477) | func (x *AddressReq) String() string {
    method ProtoMessage (line 481) | func (*AddressReq) ProtoMessage() {}
    method ProtoReflect (line 483) | func (x *AddressReq) ProtoReflect() protoreflect.Message {
    method Descriptor (line 496) | func (*AddressReq) Descriptor() ([]byte, []int) {
    method GetId (line 500) | func (x *AddressReq) GetId() int64 {
    method GetUid (line 507) | func (x *AddressReq) GetUid() int64 {
  type CheckResponse (line 514) | type CheckResponse struct
    method Reset (line 522) | func (x *CheckResponse) Reset() {
    method String (line 531) | func (x *CheckResponse) String() string {
    method ProtoMessage (line 535) | func (*CheckResponse) ProtoMessage() {}
    method ProtoReflect (line 537) | func (x *CheckResponse) ProtoReflect() protoreflect.Message {
    method Descriptor (line 550) | func (*CheckResponse) Descriptor() ([]byte, []int) {
    method GetSuccess (line 554) | func (x *CheckResponse) GetSuccess() bool {
  type PageInfo (line 562) | type PageInfo struct
    method Reset (line 571) | func (x *PageInfo) Reset() {
    method String (line 580) | func (x *PageInfo) String() string {
    method ProtoMessage (line 584) | func (*PageInfo) ProtoMessage() {}
    method ProtoReflect (line 586) | func (x *PageInfo) ProtoReflect() protoreflect.Message {
    method Descriptor (line 599) | func (*PageInfo) Descriptor() ([]byte, []int) {
    method GetPn (line 603) | func (x *PageInfo) GetPn() uint32 {
    method GetPSize (line 610) | func (x *PageInfo) GetPSize() uint32 {
  type UserInfoResponse (line 618) | type UserInfoResponse struct
    method Reset (line 632) | func (x *UserInfoResponse) Reset() {
    method String (line 641) | func (x *UserInfoResponse) String() string {
    method ProtoMessage (line 645) | func (*UserInfoResponse) ProtoMessage() {}
    method ProtoReflect (line 647) | func (x *UserInfoResponse) ProtoReflect() protoreflect.Message {
    method Descriptor (line 660) | func (*UserInfoResponse) Descriptor() ([]byte, []int) {
    method GetId (line 664) | func (x *UserInfoResponse) GetId() int64 {
    method GetPassword (line 671) | func (x *UserInfoResponse) GetPassword() string {
    method GetMobile (line 678) | func (x *UserInfoResponse) GetMobile() string {
    method GetNickName (line 685) | func (x *UserInfoResponse) GetNickName() string {
    method GetBirthday (line 692) | func (x *UserInfoResponse) GetBirthday() uint64 {
    method GetGender (line 699) | func (x *UserInfoResponse) GetGender() string {
    method GetRole (line 706) | func (x *UserInfoResponse) GetRole() int32 {
  type UserListResponse (line 714) | type UserListResponse struct
    method Reset (line 723) | func (x *UserListResponse) Reset() {
    method String (line 732) | func (x *UserListResponse) String() string {
    method ProtoMessage (line 736) | func (*UserListResponse) ProtoMessage() {}
    method ProtoReflect (line 738) | func (x *UserListResponse) ProtoReflect() protoreflect.Message {
    method Descriptor (line 751) | func (*UserListResponse) Descriptor() ([]byte, []int) {
    method GetTotal (line 755) | func (x *UserListResponse) GetTotal() int32 {
    method GetData (line 762) | func (x *UserListResponse) GetData() []*UserInfoResponse {
  type MobileRequest (line 769) | type MobileRequest struct
    method Reset (line 777) | func (x *MobileRequest) Reset() {
    method String (line 786) | func (x *MobileRequest) String() string {
    method ProtoMessage (line 790) | func (*MobileRequest) ProtoMessage() {}
    method ProtoReflect (line 792) | func (x *MobileRequest) ProtoReflect() protoreflect.Message {
    method Descriptor (line 805) | func (*MobileRequest) Descriptor() ([]byte, []int) {
    method GetMobile (line 809) | func (x *MobileRequest) GetMobile() string {
  type IdRequest (line 816) | type IdRequest struct
    method Reset (line 824) | func (x *IdRequest) Reset() {
    method String (line 833) | func (x *IdRequest) String() string {
    method ProtoMessage (line 837) | func (*IdRequest) ProtoMessage() {}
    method ProtoReflect (line 839) | func (x *IdRequest) ProtoReflect() protoreflect.Message {
    method Descriptor (line 852) | func (*IdRequest) Descriptor() ([]byte, []int) {
    method GetId (line 856) | func (x *IdRequest) GetId() int64 {
  type CreateUserInfo (line 864) | type CreateUserInfo struct
    method Reset (line 874) | func (x *CreateUserInfo) Reset() {
    method String (line 883) | func (x *CreateUserInfo) String() string {
    method ProtoMessage (line 887) | func (*CreateUserInfo) ProtoMessage() {}
    method ProtoReflect (line 889) | func (x *CreateUserInfo) ProtoReflect() protoreflect.Message {
    method Descriptor (line 902) | func (*CreateUserInfo) Descriptor() ([]byte, []int) {
    method GetNickName (line 906) | func (x *CreateUserInfo) GetNickName() string {
    method GetPassword (line 913) | func (x *CreateUserInfo) GetPassword() string {
    method GetMobile (line 920) | func (x *CreateUserInfo) GetMobile() string {
  type UpdateUserInfo (line 927) | type UpdateUserInfo struct
    method Reset (line 938) | func (x *UpdateUserInfo) Reset() {
    method String (line 947) | func (x *UpdateUserInfo) String() string {
    method ProtoMessage (line 951) | func (*UpdateUserInfo) ProtoMessage() {}
    method ProtoReflect (line 953) | func (x *UpdateUserInfo) ProtoReflect() protoreflect.Message {
    method Descriptor (line 966) | func (*UpdateUserInfo) Descriptor() ([]byte, []int) {
    method GetId (line 970) | func (x *UpdateUserInfo) GetId() int64 {
    method GetNickName (line 977) | func (x *UpdateUserInfo) GetNickName() string {
    method GetGender (line 984) | func (x *UpdateUserInfo) GetGender() string {
    method GetBirthday (line 991) | func (x *UpdateUserInfo) GetBirthday() uint64 {
  type PasswordCheckInfo (line 998) | type PasswordCheckInfo struct
    method Reset (line 1007) | func (x *PasswordCheckInfo) Reset() {
    method String (line 1016) | func (x *PasswordCheckInfo) String() string {
    method ProtoMessage (line 1020) | func (*PasswordCheckInfo) ProtoMessage() {}
    method ProtoReflect (line 1022) | func (x *PasswordCheckInfo) ProtoReflect() protoreflect.Message {
    method Descriptor (line 1035) | func (*PasswordCheckInfo) Descriptor() ([]byte, []int) {
    method GetPassword (line 1039) | func (x *PasswordCheckInfo) GetPassword() string {
    method GetEncryptedPassword (line 1046) | func (x *PasswordCheckInfo) GetEncryptedPassword() string {
  function file_api_service_user_v1_user_proto_rawDescGZIP (line 1220) | func file_api_service_user_v1_user_proto_rawDescGZIP() []byte {
  function init (line 1278) | func init() { file_api_service_user_v1_user_proto_init() }
  function file_api_service_user_v1_user_proto_init (line 1279) | func file_api_service_user_v1_user_proto_init() {

FILE: admin/api/service/user/v1/user.pb.validate.go
  method Validate (line 41) | func (m *ListAddressReq) Validate() error {
  method ValidateAll (line 49) | func (m *ListAddressReq) ValidateAll() error {
  method validate (line 53) | func (m *ListAddressReq) validate(all bool) error {
  type ListAddressReqMultiError (line 72) | type ListAddressReqMultiError
    method Error (line 75) | func (m ListAddressReqMultiError) Error() string {
    method AllErrors (line 84) | func (m ListAddressReqMultiError) AllErrors() []error { return m }
  type ListAddressReqValidationError (line 88) | type ListAddressReqValidationError struct
    method Field (line 96) | func (e ListAddressReqValidationError) Field() string { return e.field }
    method Reason (line 99) | func (e ListAddressReqValidationError) Reason() string { return e.reas...
    method Cause (line 102) | func (e ListAddressReqValidationError) Cause() error { return e.cause }
    method Key (line 105) | func (e ListAddressReqValidationError) Key() bool { return e.key }
    method ErrorName (line 108) | func (e ListAddressReqValidationError) ErrorName() string { return "Li...
    method Error (line 111) | func (e ListAddressReqValidationError) Error() string {
  method Validate (line 143) | func (m *AddressInfo) Validate() error {
  method ValidateAll (line 151) | func (m *AddressInfo) ValidateAll() error {
  method validate (line 155) | func (m *AddressInfo) validate(all bool) error {
  type AddressInfoMultiError (line 189) | type AddressInfoMultiError
    method Error (line 192) | func (m AddressInfoMultiError) Error() string {
    method AllErrors (line 201) | func (m AddressInfoMultiError) AllErrors() []error { return m }
  type AddressInfoValidationError (line 205) | type AddressInfoValidationError struct
    method Field (line 213) | func (e AddressInfoValidationError) Field() string { return e.field }
    method Reason (line 216) | func (e AddressInfoValidationError) Reason() string { return e.reason }
    method Cause (line 219) | func (e AddressInfoValidationError) Cause() error { return e.cause }
    method Key (line 222) | func (e AddressInfoValidationError) Key() bool { return e.key }
    method ErrorName (line 225) | func (e AddressInfoValidationError) ErrorName() string { return "Addre...
    method Error (line 228) | func (e AddressInfoValidationError) Error() string {
  method Validate (line 260) | func (m *ListAddressReply) Validate() error {
  method ValidateAll (line 268) | func (m *ListAddressReply) ValidateAll() error {
  method validate (line 272) | func (m *ListAddressReply) validate(all bool) error {
  type ListAddressReplyMultiError (line 323) | type ListAddressReplyMultiError
    method Error (line 326) | func (m ListAddressReplyMultiError) Error() string {
    method AllErrors (line 335) | func (m ListAddressReplyMultiError) AllErrors() []error { return m }
  type ListAddressReplyValidationError (line 339) | type ListAddressReplyValidationError struct
    method Field (line 347) | func (e ListAddressReplyValidationError) Field() string { return e.fie...
    method Reason (line 350) | func (e ListAddressReplyValidationError) Reason() string { return e.re...
    method Cause (line 353) | func (e ListAddressReplyValidationError) Cause() error { return e.cause }
    method Key (line 356) | func (e ListAddressReplyValidationError) Key() bool { return e.key }
    method ErrorName (line 359) | func (e ListAddressReplyValidationError) ErrorName() string { return "...
    method Error (line 362) | func (e ListAddressReplyValidationError) Error() string {
  method Validate (line 394) | func (m *CreateAddressReq) Validate() error {
  method ValidateAll (line 402) | func (m *CreateAddressReq) ValidateAll() error {
  method validate (line 406) | func (m *CreateAddressReq) validate(all bool) error {
  type CreateAddressReqMultiError (line 441) | type CreateAddressReqMultiError
    method Error (line 444) | func (m CreateAddressReqMultiError) Error() string {
    method AllErrors (line 453) | func (m CreateAddressReqMultiError) AllErrors() []error { return m }
  type CreateAddressReqValidationError (line 457) | type CreateAddressReqValidationError struct
    method Field (line 465) | func (e CreateAddressReqValidationError) Field() string { return e.fie...
    method Reason (line 468) | func (e CreateAddressReqValidationError) Reason() string { return e.re...
    method Cause (line 471) | func (e CreateAddressReqValidationError) Cause() error { return e.cause }
    method Key (line 474) | func (e CreateAddressReqValidationError) Key() bool { return e.key }
    method ErrorName (line 477) | func (e CreateAddressReqValidationError) ErrorName() string { return "...
    method Error (line 480) | func (e CreateAddressReqValidationError) Error() string {
  method Validate (line 512) | func (m *UpdateAddressReq) Validate() error {
  method ValidateAll (line 520) | func (m *UpdateAddressReq) ValidateAll() error {
  method validate (line 524) | func (m *UpdateAddressReq) validate(all bool) error {
  type UpdateAddressReqMultiError (line 561) | type UpdateAddressReqMultiError
    method Error (line 564) | func (m UpdateAddressReqMultiError) Error() string {
    method AllErrors (line 573) | func (m UpdateAddressReqMultiError) AllErrors() []error { return m }
  type UpdateAddressReqValidationError (line 577) | type UpdateAddressReqValidationError struct
    method Field (line 585) | func (e UpdateAddressReqValidationError) Field() string { return e.fie...
    method Reason (line 588) | func (e UpdateAddressReqValidationError) Reason() string { return e.re...
    method Cause (line 591) | func (e UpdateAddressReqValidationError) Cause() error { return e.cause }
    method Key (line 594) | func (e UpdateAddressReqValidationError) Key() bool { return e.key }
    method ErrorName (line 597) | func (e UpdateAddressReqValidationError) ErrorName() string { return "...
    method Error (line 600) | func (e UpdateAddressReqValidationError) Error() string {
  method Validate (line 632) | func (m *AddressReq) Validate() error {
  method ValidateAll (line 640) | func (m *AddressReq) ValidateAll() error {
  method validate (line 644) | func (m *AddressReq) validate(all bool) error {
  type AddressReqMultiError (line 664) | type AddressReqMultiError
    method Error (line 667) | func (m AddressReqMultiError) Error() string {
    method AllErrors (line 676) | func (m AddressReqMultiError) AllErrors() []error { return m }
  type AddressReqValidationError (line 680) | type AddressReqValidationError struct
    method Field (line 688) | func (e AddressReqValidationError) Field() string { return e.field }
    method Reason (line 691) | func (e AddressReqValidationError) Reason() string { return e.reason }
    method Cause (line 694) | func (e AddressReqValidationError) Cause() error { return e.cause }
    method Key (line 697) | func (e AddressReqValidationError) Key() bool { return e.key }
    method ErrorName (line 700) | func (e AddressReqValidationError) ErrorName() string { return "Addres...
    method Error (line 703) | func (e AddressReqValidationError) Error() string {
  method Validate (line 735) | func (m *CheckResponse) Validate() error {
  method ValidateAll (line 743) | func (m *CheckResponse) ValidateAll() error {
  method validate (line 747) | func (m *CheckResponse) validate(all bool) error {
  type CheckResponseMultiError (line 766) | type CheckResponseMultiError
    method Error (line 769) | func (m CheckResponseMultiError) Error() string {
    method AllErrors (line 778) | func (m CheckResponseMultiError) AllErrors() []error { return m }
  type CheckResponseValidationError (line 782) | type CheckResponseValidationError struct
    method Field (line 790) | func (e CheckResponseValidationError) Field() string { return e.field }
    method Reason (line 793) | func (e CheckResponseValidationError) Reason() string { return e.reason }
    method Cause (line 796) | func (e CheckResponseValidationError) Cause() error { return e.cause }
    method Key (line 799) | func (e CheckResponseValidationError) Key() bool { return e.key }
    method ErrorName (line 802) | func (e CheckResponseValidationError) ErrorName() string { return "Che...
    method Error (line 805) | func (e CheckResponseValidationError) Error() string {
  method Validate (line 837) | func (m *PageInfo) Validate() error {
  method ValidateAll (line 845) | func (m *PageInfo) ValidateAll() error {
  method validate (line 849) | func (m *PageInfo) validate(all bool) error {
  type PageInfoMultiError (line 869) | type PageInfoMultiError
    method Error (line 872) | func (m PageInfoMultiError) Error() string {
    method AllErrors (line 881) | func (m PageInfoMultiError) AllErrors() []error { return m }
  type PageInfoValidationError (line 885) | type PageInfoValidationError struct
    method Field (line 893) | func (e PageInfoValidationError) Field() string { return e.field }
    method Reason (line 896) | func (e PageInfoValidationError) Reason() string { return e.reason }
    method Cause (line 899) | func (e PageInfoValidationError) Cause() error { return e.cause }
    method Key (line 902) | func (e PageInfoValidationError) Key() bool { return e.key }
    method ErrorName (line 905) | func (e PageInfoValidationError) ErrorName() string { return "PageInfo...
    method Error (line 908) | func (e PageInfoValidationError) Error() string {
  method Validate (line 940) | func (m *UserInfoResponse) Validate() error {
  method ValidateAll (line 948) | func (m *UserInfoResponse) ValidateAll() error {
  method validate (line 952) | func (m *UserInfoResponse) validate(all bool) error {
  type UserInfoResponseMultiError (line 983) | type UserInfoResponseMultiError
    method Error (line 986) | func (m UserInfoResponseMultiError) Error() string {
    method AllErrors (line 995) | func (m UserInfoResponseMultiError) AllErrors() []error { return m }
  type UserInfoResponseValidationError (line 999) | type UserInfoResponseValidationError struct
    method Field (line 1007) | func (e UserInfoResponseValidationError) Field() string { return e.fie...
    method Reason (line 1010) | func (e UserInfoResponseValidationError) Reason() string { return e.re...
    method Cause (line 1013) | func (e UserInfoResponseValidationError) Cause() error { return e.cause }
    method Key (line 1016) | func (e UserInfoResponseValidationError) Key() bool { return e.key }
    method ErrorName (line 1019) | func (e UserInfoResponseValidationError) ErrorName() string { return "...
    method Error (line 1022) | func (e UserInfoResponseValidationError) Error() string {
  method Validate (line 1054) | func (m *UserListResponse) Validate() error {
  method ValidateAll (line 1062) | func (m *UserListResponse) ValidateAll() error {
  method validate (line 1066) | func (m *UserListResponse) validate(all bool) error {
  type UserListResponseMultiError (line 1119) | type UserListResponseMultiError
    method Error (line 1122) | func (m UserListResponseMultiError) Error() string {
    method AllErrors (line 1131) | func (m UserListResponseMultiError) AllErrors() []error { return m }
  type UserListResponseValidationError (line 1135) | type UserListResponseValidationError struct
    method Field (line 1143) | func (e UserListResponseValidationError) Field() string { return e.fie...
    method Reason (line 1146) | func (e UserListResponseValidationError) Reason() string { return e.re...
    method Cause (line 1149) | func (e UserListResponseValidationError) Cause() error { return e.cause }
    method Key (line 1152) | func (e UserListResponseValidationError) Key() bool { return e.key }
    method ErrorName (line 1155) | func (e UserListResponseValidationError) ErrorName() string { return "...
    method Error (line 1158) | func (e UserListResponseValidationError) Error() string {
  method Validate (line 1190) | func (m *MobileRequest) Validate() error {
  method ValidateAll (line 1198) | func (m *MobileRequest) ValidateAll() error {
  method validate (line 1202) | func (m *MobileRequest) validate(all bool) error {
  type MobileRequestMultiError (line 1221) | type MobileRequestMultiError
    method Error (line 1224) | func (m MobileRequestMultiError) Error() string {
    method AllErrors (line 1233) | func (m MobileRequestMultiError) AllErrors() []error { return m }
  type MobileRequestValidationError (line 1237) | type MobileRequestValidationError struct
    method Field (line 1245) | func (e MobileRequestValidationError) Field() string { return e.field }
    method Reason (line 1248) | func (e MobileRequestValidationError) Reason() string { return e.reason }
    method Cause (line 1251) | func (e MobileRequestValidationError) Cause() error { return e.cause }
    method Key (line 1254) | func (e MobileRequestValidationError) Key() bool { return e.key }
    method ErrorName (line 1257) | func (e MobileRequestValidationError) ErrorName() string { return "Mob...
    method Error (line 1260) | func (e MobileRequestValidationError) Error() string {
  method Validate (line 1292) | func (m *IdRequest) Validate() error {
  method ValidateAll (line 1300) | func (m *IdRequest) ValidateAll() error {
  method validate (line 1304) | func (m *IdRequest) validate(all bool) error {
  type IdRequestMultiError (line 1322) | type IdRequestMultiError
    method Error (line 1325) | func (m IdRequestMultiError) Error() string {
    method AllErrors (line 1334) | func (m IdRequestMultiError) AllErrors() []error { return m }
  type IdRequestValidationError (line 1338) | type IdRequestValidationError struct
    method Field (line 1346) | func (e IdRequestValidationError) Field() string { return e.field }
    method Reason (line 1349) | func (e IdRequestValidationError) Reason() string { return e.reason }
    method Cause (line 1352) | func (e IdRequestValidationError) Cause() error { return e.cause }
    method Key (line 1355) | func (e IdRequestValidationError) Key() bool { return e.key }
    method ErrorName (line 1358) | func (e IdRequestValidationError) ErrorName() string { return "IdReque...
    method Error (line 1361) | func (e IdRequestValidationError) Error() string {
  method Validate (line 1393) | func (m *CreateUserInfo) Validate() error {
  method ValidateAll (line 1401) | func (m *CreateUserInfo) ValidateAll() error {
  method validate (line 1405) | func (m *CreateUserInfo) validate(all bool) error {
  type CreateUserInfoMultiError (line 1428) | type CreateUserInfoMultiError
    method Error (line 1431) | func (m CreateUserInfoMultiError) Error() string {
    method AllErrors (line 1440) | func (m CreateUserInfoMultiError) AllErrors() []error { return m }
  type CreateUserInfoValidationError (line 1444) | type CreateUserInfoValidationError struct
    method Field (line 1452) | func (e CreateUserInfoValidationError) Field() string { return e.field }
    method Reason (line 1455) | func (e CreateUserInfoValidationError) Reason() string { return e.reas...
    method Cause (line 1458) | func (e CreateUserInfoValidationError) Cause() error { return e.cause }
    method Key (line 1461) | func (e CreateUserInfoValidationError) Key() bool { return e.key }
    method ErrorName (line 1464) | func (e CreateUserInfoValidationError) ErrorName() string { return "Cr...
    method Error (line 1467) | func (e CreateUserInfoValidationError) Error() string {
  method Validate (line 1499) | func (m *UpdateUserInfo) Validate() error {
  method ValidateAll (line 1507) | func (m *UpdateUserInfo) ValidateAll() error {
  method validate (line 1511) | func (m *UpdateUserInfo) validate(all bool) error {
  type UpdateUserInfoMultiError (line 1536) | type UpdateUserInfoMultiError
    method Error (line 1539) | func (m UpdateUserInfoMultiError) Error() string {
    method AllErrors (line 1548) | func (m UpdateUserInfoMultiError) AllErrors() []error { return m }
  type UpdateUserInfoValidationError (line 1552) | type UpdateUserInfoValidationError struct
    method Field (line 1560) | func (e UpdateUserInfoValidationError) Field() string { return e.field }
    method Reason (line 1563) | func (e UpdateUserInfoValidationError) Reason() string { return e.reas...
    method Cause (line 1566) | func (e UpdateUserInfoValidationError) Cause() error { return e.cause }
    method Key (line 1569) | func (e UpdateUserInfoValidationError) Key() bool { return e.key }
    method ErrorName (line 1572) | func (e UpdateUserInfoValidationError) ErrorName() string { return "Up...
    method Error (line 1575) | func (e UpdateUserInfoValidationError) Error() string {
  method Validate (line 1607) | func (m *PasswordCheckInfo) Validate() error {
  method ValidateAll (line 1615) | func (m *PasswordCheckInfo) ValidateAll() error {
  method validate (line 1619) | func (m *PasswordCheckInfo) validate(all bool) error {
  type PasswordCheckInfoMultiError (line 1640) | type PasswordCheckInfoMultiError
    method Error (line 1643) | func (m PasswordCheckInfoMultiError) Error() string {
    method AllErrors (line 1652) | func (m PasswordCheckInfoMultiError) AllErrors() []error { return m }
  type PasswordCheckInfoValidationError (line 1656) | type PasswordCheckInfoValidationError struct
    method Field (line 1664) | func (e PasswordCheckInfoValidationError) Field() string { return e.fi...
    method Reason (line 1667) | func (e PasswordCheckInfoValidationError) Reason() string { return e.r...
    method Cause (line 1670) | func (e PasswordCheckInfoValidationError) Cause() error { return e.cau...
    method Key (line 1673) | func (e PasswordCheckInfoValidationError) Key() bool { return e.key }
    method ErrorName (line 1676) | func (e PasswordCheckInfoValidationError) ErrorName() string {
    method Error (line 1681) | func (e PasswordCheckInfoValidationError) Error() string {

FILE: admin/api/service/user/v1/user_grpc.pb.go
  constant _ (line 20) | _ = grpc.SupportPackageIsVersion7
  type UserClient (line 25) | type UserClient interface
  type userClient (line 40) | type userClient struct
    method GetUserList (line 48) | func (c *userClient) GetUserList(ctx context.Context, in *PageInfo, op...
    method GetUserByMobile (line 57) | func (c *userClient) GetUserByMobile(ctx context.Context, in *MobileRe...
    method GetUserById (line 66) | func (c *userClient) GetUserById(ctx context.Context, in *IdRequest, o...
    method CreateUser (line 75) | func (c *userClient) CreateUser(ctx context.Context, in *CreateUserInf...
    method UpdateUser (line 84) | func (c *userClient) UpdateUser(ctx context.Context, in *UpdateUserInf...
    method CheckPassword (line 93) | func (c *userClient) CheckPassword(ctx context.Context, in *PasswordCh...
    method ListAddress (line 102) | func (c *userClient) ListAddress(ctx context.Context, in *ListAddressR...
    method CreateAddress (line 111) | func (c *userClient) CreateAddress(ctx context.Context, in *CreateAddr...
    method UpdateAddress (line 120) | func (c *userClient) UpdateAddress(ctx context.Context, in *UpdateAddr...
    method DefaultAddress (line 129) | func (c *userClient) DefaultAddress(ctx context.Context, in *AddressRe...
    method DeleteAddress (line 138) | func (c *userClient) DeleteAddress(ctx context.Context, in *AddressReq...
  function NewUserClient (line 44) | func NewUserClient(cc grpc.ClientConnInterface) UserClient {
  type UserServer (line 150) | type UserServer interface
  type UnimplementedUserServer (line 167) | type UnimplementedUserServer struct
    method GetUserList (line 170) | func (UnimplementedUserServer) GetUserList(context.Context, *PageInfo)...
    method GetUserByMobile (line 173) | func (UnimplementedUserServer) GetUserByMobile(context.Context, *Mobil...
    method GetUserById (line 176) | func (UnimplementedUserServer) GetUserById(context.Context, *IdRequest...
    method CreateUser (line 179) | func (UnimplementedUserServer) CreateUser(context.Context, *CreateUser...
    method UpdateUser (line 182) | func (UnimplementedUserServer) UpdateUser(context.Context, *UpdateUser...
    method CheckPassword (line 185) | func (UnimplementedUserServer) CheckPassword(context.Context, *Passwor...
    method ListAddress (line 188) | func (UnimplementedUserServer) ListAddress(context.Context, *ListAddre...
    method CreateAddress (line 191) | func (UnimplementedUserServer) CreateAddress(context.Context, *CreateA...
    method UpdateAddress (line 194) | func (UnimplementedUserServer) UpdateAddress(context.Context, *UpdateA...
    method DefaultAddress (line 197) | func (UnimplementedUserServer) DefaultAddress(context.Context, *Addres...
    method DeleteAddress (line 200) | func (UnimplementedUserServer) DeleteAddress(context.Context, *Address...
    method mustEmbedUnimplementedUserServer (line 203) | func (UnimplementedUserServer) mustEmbedUnimplementedUserServer() {}
  type UnsafeUserServer (line 208) | type UnsafeUserServer interface
  function RegisterUserServer (line 212) | func RegisterUserServer(s grpc.ServiceRegistrar, srv UserServer) {
  function _User_GetUserList_Handler (line 216) | func _User_GetUserList_Handler(srv interface{}, ctx context.Context, dec...
  function _User_GetUserByMobile_Handler (line 234) | func _User_GetUserByMobile_Handler(srv interface{}, ctx context.Context,...
  function _User_GetUserById_Handler (line 252) | func _User_GetUserById_Handler(srv interface{}, ctx context.Context, dec...
  function _User_CreateUser_Handler (line 270) | func _User_CreateUser_Handler(srv interface{}, ctx context.Context, dec ...
  function _User_UpdateUser_Handler (line 288) | func _User_UpdateUser_Handler(srv interface{}, ctx context.Context, dec ...
  function _User_CheckPassword_Handler (line 306) | func _User_CheckPassword_Handler(srv interface{}, ctx context.Context, d...
  function _User_ListAddress_Handler (line 324) | func _User_ListAddress_Handler(srv interface{}, ctx context.Context, dec...
  function _User_CreateAddress_Handler (line 342) | func _User_CreateAddress_Handler(srv interface{}, ctx context.Context, d...
  function _User_UpdateAddress_Handler (line 360) | func _User_UpdateAddress_Handler(srv interface{}, ctx context.Context, d...
  function _User_DefaultAddress_Handler (line 378) | func _User_DefaultAddress_Handler(srv interface{}, ctx context.Context, ...
  function _User_DeleteAddress_Handler (line 396) | func _User_DeleteAddress_Handler(srv interface{}, ctx context.Context, d...

FILE: admin/cmd/admin/main.go
  function init (line 37) | func init() {
  function newApp (line 41) | func newApp(logger log.Logger, hs *http.Server, rr registry.Registrar) *...
  function main (line 55) | func main() {
  function setTracerProvider (line 104) | func setTracerProvider(url string) error {

FILE: admin/cmd/admin/wire.go
  function initApp (line 20) | func initApp(*conf.Server, *conf.Data, *conf.Auth, *conf.Service, *conf....

FILE: admin/cmd/admin/wire_gen.go
  function initApp (line 22) | func initApp(confServer *conf.Server, confData *conf.Data, auth *conf.Au...

FILE: admin/internal/biz/address.go
  type Address (line 12) | type Address struct
  type AddressRepo (line 25) | type AddressRepo interface
  type AddressUsecase (line 33) | type AddressUsecase struct
    method CreateAddress (line 49) | func (ua *AddressUsecase) CreateAddress(ctx context.Context, r *v1.Cre...
    method AddressListByUid (line 86) | func (ua *AddressUsecase) AddressListByUid(ctx context.Context) (*v1.L...
    method UpdateAddress (line 111) | func (ua *AddressUsecase) UpdateAddress(ctx context.Context, a *Addres...
    method DefaultAddress (line 138) | func (ua *AddressUsecase) DefaultAddress(ctx context.Context, a *Addre...
    method DeleteAddress (line 150) | func (ua *AddressUsecase) DeleteAddress(ctx context.Context, a *Addres...
  function NewAddressUsecase (line 40) | func NewAddressUsecase(repo UserRepo, arepo AddressRepo, logger log.Logg...
  function getUid (line 123) | func getUid(ctx context.Context) (int64, error) {

FILE: admin/internal/biz/user.go
  type User (line 27) | type User struct
  type UserRepo (line 38) | type UserRepo interface
  type UserUsecase (line 47) | type UserUsecase struct
    method GetCaptcha (line 59) | func (uc *UserUsecase) GetCaptcha(ctx context.Context) (*v1.CaptchaRep...
    method UserDetailByID (line 71) | func (uc *UserUsecase) UserDetailByID(ctx context.Context) (*v1.UserDe...
    method PassWordLogin (line 94) | func (uc *UserUsecase) PassWordLogin(ctx context.Context, req *v1.Logi...
    method CreateUser (line 144) | func (uc *UserUsecase) CreateUser(ctx context.Context, req *v1.Registe...
  function NewUserUsecase (line 53) | func NewUserUsecase(repo UserRepo, logger log.Logger, conf *conf.Auth) *...
  function NewUser (line 177) | func NewUser(mobile, username, password string) (User, error) {

FILE: admin/internal/conf/conf.pb.go
  constant _ (line 19) | _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
  constant _ (line 21) | _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
  type Bootstrap (line 24) | type Bootstrap struct
    method Reset (line 36) | func (x *Bootstrap) Reset() {
    method String (line 45) | func (x *Bootstrap) String() string {
    method ProtoMessage (line 49) | func (*Bootstrap) ProtoMessage() {}
    method ProtoReflect (line 51) | func (x *Bootstrap) ProtoReflect() protoreflect.Message {
    method Descriptor (line 64) | func (*Bootstrap) Descriptor() ([]byte, []int) {
    method GetServer (line 68) | func (x *Bootstrap) GetServer() *Server {
    method GetData (line 75) | func (x *Bootstrap) GetData() *Data {
    method GetTrace (line 82) | func (x *Bootstrap) GetTrace() *Trace {
    method GetAuth (line 89) | func (x *Bootstrap) GetAuth() *Auth {
    method GetService (line 96) | func (x *Bootstrap) GetService() *Service {
  type Server (line 103) | type Server struct
    method Reset (line 111) | func (x *Server) Reset() {
    method String (line 120) | func (x *Server) String() string {
    method ProtoMessage (line 124) | func (*Server) ProtoMessage() {}
    method ProtoReflect (line 126) | func (x *Server) ProtoReflect() protoreflect.Message {
    method Descriptor (line 139) | func (*Server) Descriptor() ([]byte, []int) {
    method GetHttp (line 143) | func (x *Server) GetHttp() *Server_HTTP {
  type Data (line 150) | type Data struct
    method Reset (line 159) | func (x *Data) Reset() {
    method String (line 168) | func (x *Data) String() string {
    method ProtoMessage (line 172) | func (*Data) ProtoMessage() {}
    method ProtoReflect (line 174) | func (x *Data) ProtoReflect() protoreflect.Message {
    method Descriptor (line 187) | func (*Data) Descriptor() ([]byte, []int) {
    method GetDatabase (line 191) | func (x *Data) GetDatabase() *Data_Database {
    method GetRedis (line 198) | func (x *Data) GetRedis() *Data_Redis {
  type Service (line 205) | type Service struct
    method Reset (line 214) | func (x *Service) Reset() {
    method String (line 223) | func (x *Service) String() string {
    method ProtoMessage (line 227) | func (*Service) ProtoMessage() {}
    method ProtoReflect (line 229) | func (x *Service) ProtoReflect() protoreflect.Message {
    method Descriptor (line 242) | func (*Service) Descriptor() ([]byte, []int) {
    method GetUser (line 246) | func (x *Service) GetUser() *Service_User {
    method GetGoods (line 253) | func (x *Service) GetGoods() *Service_Goods {
  type Trace (line 260) | type Trace struct
    method Reset (line 268) | func (x *Trace) Reset() {
    method String (line 277) | func (x *Trace) String() string {
    method ProtoMessage (line 281) | func (*Trace) ProtoMessage() {}
    method ProtoReflect (line 283) | func (x *Trace) ProtoReflect() protoreflect.Message {
    method Descriptor (line 296) | func (*Trace) Descriptor() ([]byte, []int) {
    method GetEndpoint (line 300) | func (x *Trace) GetEndpoint() string {
  type Registry (line 307) | type Registry struct
    method Reset (line 315) | func (x *Registry) Reset() {
    method String (line 324) | func (x *Registry) String() string {
    method ProtoMessage (line 328) | func (*Registry) ProtoMessage() {}
    method ProtoReflect (line 330) | func (x *Registry) ProtoReflect() protoreflect.Message {
    method Descriptor (line 343) | func (*Registry) Descriptor() ([]byte, []int) {
    method GetConsul (line 347) | func (x *Registry) GetConsul() *Registry_Consul {
  type Auth (line 354) | type Auth struct
    method Reset (line 362) | func (x *Auth) Reset() {
    method String (line 371) | func (x *Auth) String() string {
    method ProtoMessage (line 375) | func (*Auth) ProtoMessage() {}
    method ProtoReflect (line 377) | func (x *Auth) ProtoReflect() protoreflect.Message {
    method Descriptor (line 390) | func (*Auth) Descriptor() ([]byte, []int) {
    method GetJwtKey (line 394) | func (x *Auth) GetJwtKey() string {
  type Server_HTTP (line 401) | type Server_HTTP struct
    method Reset (line 411) | func (x *Server_HTTP) Reset() {
    method String (line 420) | func (x *Server_HTTP) String() string {
    method ProtoMessage (line 424) | func (*Server_HTTP) ProtoMessage() {}
    method ProtoReflect (line 426) | func (x *Server_HTTP) ProtoReflect() protoreflect.Message {
    method Descriptor (line 439) | func (*Server_HTTP) Descriptor() ([]byte, []int) {
    method GetNetwork (line 443) | func (x *Server_HTTP) GetNetwork() string {
    method GetAddr (line 450) | func (x *Server_HTTP) GetAddr() string {
    method GetTimeout (line 457) | func (x *Server_HTTP) GetTimeout() *durationpb.Duration {
  type Data_Database (line 464) | type Data_Database struct
    method Reset (line 473) | func (x *Data_Database) Reset() {
    method String (line 482) | func (x *Data_Database) String() string {
    method ProtoMessage (line 486) | func (*Data_Database) ProtoMessage() {}
    method ProtoReflect (line 488) | func (x *Data_Database) ProtoReflect() protoreflect.Message {
    method Descriptor (line 501) | func (*Data_Database) Descriptor() ([]byte, []int) {
    method GetDriver (line 505) | func (x *Data_Database) GetDriver() string {
    method GetSource (line 512) | func (x *Data_Database) GetSource() string {
  type Data_Redis (line 519) | type Data_Redis struct
    method Reset (line 530) | func (x *Data_Redis) Reset() {
    method String (line 539) | func (x *Data_Redis) String() string {
    method ProtoMessage (line 543) | func (*Data_Redis) ProtoMessage() {}
    method ProtoReflect (line 545) | func (x *Data_Redis) ProtoReflect() protoreflect.Message {
    method Descriptor (line 558) | func (*Data_Redis) Descriptor() ([]byte, []int) {
    method GetNetwork (line 562) | func (x *Data_Redis) GetNetwork() string {
    method GetAddr (line 569) | func (x *Data_Redis) GetAddr() string {
    method GetReadTimeout (line 576) | func (x *Data_Redis) GetReadTimeout() *durationpb.Duration {
    method GetWriteTimeout (line 583) | func (x *Data_Redis) GetWriteTimeout() *durationpb.Duration {
  type Service_User (line 590) | type Service_User struct
    method Reset (line 598) | func (x *Service_User) Reset() {
    method String (line 607) | func (x *Service_User) String() string {
    method ProtoMessage (line 611) | func (*Service_User) ProtoMessage() {}
    method ProtoReflect (line 613) | func (x *Service_User) ProtoReflect() protoreflect.Message {
    method Descriptor (line 626) | func (*Service_User) Descriptor() ([]byte, []int) {
    method GetEndpoint (line 630) | func (x *Service_User) GetEndpoint() string {
  type Service_Goods (line 637) | type Service_Goods struct
    method Reset (line 645) | func (x *Service_Goods) Reset() {
    method String (line 654) | func (x *Service_Goods) String() string {
    method ProtoMessage (line 658) | func (*Service_Goods) ProtoMessage() {}
    method ProtoReflect (line 660) | func (x *Service_Goods) ProtoReflect() protoreflect.Message {
    method Descriptor (line 673) | func (*Service_Goods) Descriptor() ([]byte, []int) {
    method GetEndpoint (line 677) | func (x *Service_Goods) GetEndpoint() string {
  type Registry_Consul (line 684) | type Registry_Consul struct
    method Reset (line 693) | func (x *Registry_Consul) Reset() {
    method String (line 702) | func (x *Registry_Consul) String() string {
    method ProtoMessage (line 706) | func (*Registry_Consul) ProtoMessage() {}
    method ProtoReflect (line 708) | func (x *Registry_Consul) ProtoReflect() protoreflect.Message {
    method Descriptor (line 721) | func (*Registry_Consul) Descriptor() ([]byte, []int) {
    method GetAddress (line 725) | func (x *Registry_Consul) GetAddress() string {
    method GetScheme (line 732) | func (x *Registry_Consul) GetScheme() string {
  function file_internal_conf_conf_proto_rawDescGZIP (line 825) | func file_internal_conf_conf_proto_rawDescGZIP() []byte {
  function init (line 871) | func init() { file_internal_conf_conf_proto_init() }
  function file_internal_conf_conf_proto_init (line 872) | func file_internal_conf_conf_proto_init() {

FILE: admin/internal/data/address.go
  type addressRepo (line 10) | type addressRepo struct
    method CreateAddress (line 22) | func (a *addressRepo) CreateAddress(c context.Context, address *biz.Ad...
    method DeleteAddress (line 51) | func (a *addressRepo) DeleteAddress(ctx context.Context, address *biz....
    method DefaultAddress (line 63) | func (a *addressRepo) DefaultAddress(ctx context.Context, address *biz...
    method UpdateAddress (line 75) | func (a *addressRepo) UpdateAddress(c context.Context, address *biz.Ad...
    method AddressListByUid (line 95) | func (a *addressRepo) AddressListByUid(ctx context.Context, uid int64)...
  function NewAddressRepo (line 15) | func NewAddressRepo(data *Data, logger log.Logger) biz.AddressRepo {

FILE: admin/internal/data/data.go
  type Data (line 23) | type Data struct
  function NewData (line 29) | func NewData(c *conf.Data, uc userV1.UserClient, logger log.Logger) (*Da...
  function NewUserServiceClient (line 35) | func NewUserServiceClient(ac *conf.Auth, sr *conf.Service, rr registry.D...
  function NewRegistrar (line 55) | func NewRegistrar(conf *conf.Registry) registry.Registrar {
  function NewDiscovery (line 67) | func NewDiscovery(conf *conf.Registry) registry.Discovery {

FILE: admin/internal/data/user.go
  type userRepo (line 10) | type userRepo struct
    method CreateUser (line 23) | func (u *userRepo) CreateUser(c context.Context, user *biz.User) (*biz...
    method UserByMobile (line 39) | func (u *userRepo) UserByMobile(c context.Context, mobile string) (*bi...
    method CheckPassword (line 52) | func (u *userRepo) CheckPassword(c context.Context, password, encrypte...
    method UserById (line 60) | func (u *userRepo) UserById(c context.Context, id int64) (*biz.User, e...
  function NewUserRepo (line 16) | func NewUserRepo(data *Data, logger log.Logger) biz.UserRepo {

FILE: admin/internal/pkg/captcha/captcha.go
  type CaptchaInfo (line 10) | type CaptchaInfo struct
  function GetCaptcha (line 16) | func GetCaptcha(ctx context.Context) (*CaptchaInfo, error) {

FILE: admin/internal/pkg/middleware/auth/auth.go
  type CustomClaims (line 8) | type CustomClaims struct
  function CreateToken (line 16) | func CreateToken(c CustomClaims, key string) (string, error) {

FILE: admin/internal/server/http.go
  function NewHTTPServer (line 21) | func NewHTTPServer(c *conf.Server, ac *conf.Auth, s *service.AdminServic...
  function NewWhiteListMatcher (line 55) | func NewWhiteListMatcher() selector.MatchFunc {

FILE: admin/internal/service/service.go
  type AdminService (line 14) | type AdminService struct
  function NewAdminService (line 23) | func NewAdminService(uc *biz.UserUsecase, ua *biz.AddressUsecase, logger...

FILE: admin/internal/service/user.go
  method Register (line 12) | func (s *AdminService) Register(ctx context.Context, req *v1.RegisterReq...
  method Login (line 22) | func (s *AdminService) Login(ctx context.Context, req *v1.LoginReq) (*v1...
  method Captcha (line 26) | func (s *AdminService) Captcha(ctx context.Context, r *emptypb.Empty) (*...
  method Detail (line 30) | func (s *AdminService) Detail(ctx context.Context, r *emptypb.Empty) (*v...
  method CreateAddress (line 34) | func (s *AdminService) CreateAddress(ctx context.Context, r *v1.CreateAd...
  method AddressListByUid (line 38) | func (s *AdminService) AddressListByUid(ctx context.Context, empty *empt...
  method UpdateAddress (line 42) | func (s *AdminService) UpdateAddress(ctx context.Context, r *v1.UpdateAd...
  function toBizAddress (line 51) | func toBizAddress(r *v1.UpdateAddressReq) *biz.Address {
  method DefaultAddress (line 65) | func (s *AdminService) DefaultAddress(ctx context.Context, r *v1.Address...
  method DeleteAddress (line 76) | func (s *AdminService) DeleteAddress(ctx context.Context, r *v1.AddressR...

FILE: service/cart/api/cart/v1/cart.pb.go
  constant _ (line 19) | _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
  constant _ (line 21) | _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
  type CartInfoReply (line 24) | type CartInfoReply struct
    method Reset (line 40) | func (x *CartInfoReply) Reset() {
    method String (line 49) | func (x *CartInfoReply) String() string {
    method ProtoMessage (line 53) | func (*CartInfoReply) ProtoMessage() {}
    method ProtoReflect (line 55) | func (x *CartInfoReply) ProtoReflect() protoreflect.Message {
    method Descriptor (line 68) | func (*CartInfoReply) Descriptor() ([]byte, []int) {
    method GetId (line 72) | func (x *CartInfoReply) GetId() int64 {
    method GetUserId (line 79) | func (x *CartInfoReply) GetUserId() int64 {
    method GetGoodsId (line 86) | func (x *CartInfoReply) GetGoodsId() int64 {
    method GetGoodsSn (line 93) | func (x *CartInfoReply) GetGoodsSn() string {
    method GetGoodsName (line 100) | func (x *CartInfoReply) GetGoodsName() string {
    method GetSkuId (line 107) | func (x *CartInfoReply) GetSkuId() int64 {
    method GetGoodsPrice (line 114) | func (x *CartInfoReply) GetGoodsPrice() int64 {
    method GetGoodsNum (line 121) | func (x *CartInfoReply) GetGoodsNum() int32 {
    method GetIsSelect (line 128) | func (x *CartInfoReply) GetIsSelect() bool {
  type CreateCartRequest (line 135) | type CreateCartRequest struct
    method Reset (line 151) | func (x *CreateCartRequest) Reset() {
    method String (line 160) | func (x *CreateCartRequest) String() string {
    method ProtoMessage (line 164) | func (*CreateCartRequest) ProtoMessage() {}
    method ProtoReflect (line 166) | func (x *CreateCartRequest) ProtoReflect() protoreflect.Message {
    method Descriptor (line 179) | func (*CreateCartRequest) Descriptor() ([]byte, []int) {
    method GetId (line 183) | func (x *CreateCartRequest) GetId() int64 {
    method GetUserId (line 190) | func (x *CreateCartRequest) GetUserId() int64 {
    method GetGoodsId (line 197) | func (x *CreateCartRequest) GetGoodsId() int64 {
    method GetGoodsSn (line 204) | func (x *CreateCartRequest) GetGoodsSn() string {
    method GetGoodsName (line 211) | func (x *CreateCartRequest) GetGoodsName() string {
    method GetSkuId (line 218) | func (x *CreateCartRequest) GetSkuId() int64 {
    method GetGoodsPrice (line 225) | func (x *CreateCartRequest) GetGoodsPrice() int64 {
    method GetGoodsNum (line 232) | func (x *CreateCartRequest) GetGoodsNum() int32 {
    method GetIsSelect (line 239) | func (x *CreateCartRequest) GetIsSelect() bool {
  type UpdateCartRequest (line 246) | type UpdateCartRequest struct
    method Reset (line 255) | func (x *UpdateCartRequest) Reset() {
    method String (line 264) | func (x *UpdateCartRequest) String() string {
    method ProtoMessage (line 268) | func (*UpdateCartRequest) ProtoMessage() {}
    method ProtoReflect (line 270) | func (x *UpdateCartRequest) ProtoReflect() protoreflect.Message {
    method Descriptor (line 283) | func (*UpdateCartRequest) Descriptor() ([]byte, []int) {
    method GetId (line 287) | func (x *UpdateCartRequest) GetId() int64 {
    method GetGoodsNum (line 294) | func (x *UpdateCartRequest) GetGoodsNum() int32 {
  type UpdateCartReply (line 301) | type UpdateCartReply struct
    method Reset (line 307) | func (x *UpdateCartReply) Reset() {
    method String (line 316) | func (x *UpdateCartReply) String() string {
    method ProtoMessage (line 320) | func (*UpdateCartReply) ProtoMessage() {}
    method ProtoReflect (line 322) | func (x *UpdateCartReply) ProtoReflect() protoreflect.Message {
    method Descriptor (line 335) | func (*UpdateCartReply) Descriptor() ([]byte, []int) {
  type CheckResponse (line 339) | type CheckResponse struct
    method Reset (line 347) | func (x *CheckResponse) Reset() {
    method String (line 356) | func (x *CheckResponse) String() string {
    method ProtoMessage (line 360) | func (*CheckResponse) ProtoMessage() {}
    method ProtoReflect (line 362) | func (x *CheckResponse) ProtoReflect() protoreflect.Message {
    method Descriptor (line 375) | func (*CheckResponse) Descriptor() ([]byte, []int) {
    method GetSuccess (line 379) | func (x *CheckResponse) GetSuccess() bool {
  type DeleteCartRequest (line 386) | type DeleteCartRequest struct
    method Reset (line 392) | func (x *DeleteCartRequest) Reset() {
    method String (line 401) | func (x *DeleteCartRequest) String() string {
    method ProtoMessage (line 405) | func (*DeleteCartRequest) ProtoMessage() {}
    method ProtoReflect (line 407) | func (x *DeleteCartRequest) ProtoReflect() protoreflect.Message {
    method Descriptor (line 420) | func (*DeleteCartRequest) Descriptor() ([]byte, []int) {
  type DeleteCartReply (line 424) | type DeleteCartReply struct
    method Reset (line 430) | func (x *DeleteCartReply) Reset() {
    method String (line 439) | func (x *DeleteCartReply) String() string {
    method ProtoMessage (line 443) | func (*DeleteCartReply) ProtoMessage() {}
    method ProtoReflect (line 445) | func (x *DeleteCartReply) ProtoReflect() protoreflect.Message {
    method Descriptor (line 458) | func (*DeleteCartReply) Descriptor() ([]byte, []int) {
  type GetCartRequest (line 462) | type GetCartRequest struct
    method Reset (line 468) | func (x *GetCartRequest) Reset() {
    method String (line 477) | func (x *GetCartRequest) String() string {
    method ProtoMessage (line 481) | func (*GetCartRequest) ProtoMessage() {}
    method ProtoReflect (line 483) | func (x *GetCartRequest) ProtoReflect() protoreflect.Message {
    method Descriptor (line 496) | func (*GetCartRequest) Descriptor() ([]byte, []int) {
  type GetCartReply (line 500) | type GetCartReply struct
    method Reset (line 506) | func (x *GetCartReply) Reset() {
    method String (line 515) | func (x *GetCartReply) String() string {
    method ProtoMessage (line 519) | func (*GetCartReply) ProtoMessage() {}
    method ProtoReflect (line 521) | func (x *GetCartReply) ProtoReflect() protoreflect.Message {
    method Descriptor (line 534) | func (*GetCartReply) Descriptor() ([]byte, []int) {
  type ListCartRequest (line 538) | type ListCartRequest struct
    method Reset (line 546) | func (x *ListCartRequest) Reset() {
    method String (line 555) | func (x *ListCartRequest) String() string {
    method ProtoMessage (line 559) | func (*ListCartRequest) ProtoMessage() {}
    method ProtoReflect (line 561) | func (x *ListCartRequest) ProtoReflect() protoreflect.Message {
    method Descriptor (line 574) | func (*ListCartRequest) Descriptor() ([]byte, []int) {
    method GetUserId (line 578) | func (x *ListCartRequest) GetUserId() int64 {
  type CartListReply (line 585) | type CartListReply struct
    method Reset (line 593) | func (x *CartListReply) Reset() {
    method String (line 602) | func (x *CartListReply) String() string {
    method ProtoMessage (line 606) | func (*CartListReply) ProtoMessage() {}
    method ProtoReflect (line 608) | func (x *CartListReply) ProtoReflect() protoreflect.Message {
    method Descriptor (line 621) | func (*CartListReply) Descriptor() ([]byte, []int) {
    method GetResults (line 625) | func (x *CartListReply) GetResults() []*CartInfoReply {
  function file_cart_v1_cart_proto_rawDescGZIP (line 720) | func file_cart_v1_cart_proto_rawDescGZIP() []byte {
  function init (line 758) | func init() { file_cart_v1_cart_proto_init() }
  function file_cart_v1_cart_proto_init (line 759) | func file_cart_v1_cart_proto_init() {

FILE: service/cart/api/cart/v1/cart.pb.validate.go
  method Validate (line 41) | func (m *CartInfoReply) Validate() error {
  method ValidateAll (line 49) | func (m *CartInfoReply) ValidateAll() error {
  method validate (line 53) | func (m *CartInfoReply) validate(all bool) error {
  type CartInfoReplyMultiError (line 88) | type CartInfoReplyMultiError
    method Error (line 91) | func (m CartInfoReplyMultiError) Error() string {
    method AllErrors (line 100) | func (m CartInfoReplyMultiError) AllErrors() []error { return m }
  type CartInfoReplyValidationError (line 104) | type CartInfoReplyValidationError struct
    method Field (line 112) | func (e CartInfoReplyValidationError) Field() string { return e.field }
    method Reason (line 115) | func (e CartInfoReplyValidationError) Reason() string { return e.reason }
    method Cause (line 118) | func (e CartInfoReplyValidationError) Cause() error { return e.cause }
    method Key (line 121) | func (e CartInfoReplyValidationError) Key() bool { return e.key }
    method ErrorName (line 124) | func (e CartInfoReplyValidationError) ErrorName() string { return "Car...
    method Error (line 127) | func (e CartInfoReplyValidationError) Error() string {
  method Validate (line 159) | func (m *CreateCartRequest) Validate() error {
  method ValidateAll (line 167) | func (m *CreateCartRequest) ValidateAll() error {
  method validate (line 171) | func (m *CreateCartRequest) validate(all bool) error {
  type CreateCartRequestMultiError (line 278) | type CreateCartRequestMultiError
    method Error (line 281) | func (m CreateCartRequestMultiError) Error() string {
    method AllErrors (line 290) | func (m CreateCartRequestMultiError) AllErrors() []error { return m }
  type CreateCartRequestValidationError (line 294) | type CreateCartRequestValidationError struct
    method Field (line 302) | func (e CreateCartRequestValidationError) Field() string { return e.fi...
    method Reason (line 305) | func (e CreateCartRequestValidationError) Reason() string { return e.r...
    method Cause (line 308) | func (e CreateCartRequestValidationError) Cause() error { return e.cau...
    method Key (line 311) | func (e CreateCartRequestValidationError) Key() bool { return e.key }
    method ErrorName (line 314) | func (e CreateCartRequestValidationError) ErrorName() string {
    method Error (line 319) | func (e CreateCartRequestValidationError) Error() string {
  method Validate (line 351) | func (m *UpdateCartRequest) Validate() error {
  method ValidateAll (line 359) | func (m *UpdateCartRequest) ValidateAll() error {
  method validate (line 363) | func (m *UpdateCartRequest) validate(all bool) error {
  type UpdateCartRequestMultiError (line 384) | type UpdateCartRequestMultiError
    method Error (line 387) | func (m UpdateCartRequestMultiError) Error() string {
    method AllErrors (line 396) | func (m UpdateCartRequestMultiError) AllErrors() []error { return m }
  type UpdateCartRequestValidationError (line 400) | type UpdateCartRequestValidationError struct
    method Field (line 408) | func (e UpdateCartRequestValidationError) Field() string { return e.fi...
    method Reason (line 411) | func (e UpdateCartRequestValidationError) Reason() string { return e.r...
    method Cause (line 414) | func (e UpdateCartRequestValidationError) Cause() error { return e.cau...
    method Key (line 417) | func (e UpdateCartRequestValidationError) Key() bool { return e.key }
    method ErrorName (line 420) | func (e UpdateCartRequestValidationError) ErrorName() string {
    method Error (line 425) | func (e UpdateCartRequestValidationError) Error() string {
  method Validate (line 457) | func (m *UpdateCartReply) Validate() error {
  method ValidateAll (line 465) | func (m *UpdateCartReply) ValidateAll() error {
  method validate (line 469) | func (m *UpdateCartReply) validate(all bool) error {
  type UpdateCartReplyMultiError (line 486) | type UpdateCartReplyMultiError
    method Error (line 489) | func (m UpdateCartReplyMultiError) Error() string {
    method AllErrors (line 498) | func (m UpdateCartReplyMultiError) AllErrors() []error { return m }
  type UpdateCartReplyValidationError (line 502) | type UpdateCartReplyValidationError struct
    method Field (line 510) | func (e UpdateCartReplyValidationError) Field() string { return e.field }
    method Reason (line 513) | func (e UpdateCartReplyValidationError) Reason() string { return e.rea...
    method Cause (line 516) | func (e UpdateCartReplyValidationError) Cause() error { return e.cause }
    method Key (line 519) | func (e UpdateCartReplyValidationError) Key() bool { return e.key }
    method ErrorName (line 522) | func (e UpdateCartReplyValidationError) ErrorName() string { return "U...
    method Error (line 525) | func (e UpdateCartReplyValidationError) Error() string {
  method Validate (line 557) | func (m *CheckResponse) Validate() error {
  method ValidateAll (line 565) | func (m *CheckResponse) ValidateAll() error {
  method validate (line 569) | func (m *CheckResponse) validate(all bool) error {
  type CheckResponseMultiError (line 588) | type CheckResponseMultiError
    method Error (line 591) | func (m CheckResponseMultiError) Error() string {
    method AllErrors (line 600) | func (m CheckResponseMultiError) AllErrors() []error { return m }
  type CheckResponseValidationError (line 604) | type CheckResponseValidationError struct
    method Field (line 612) | func (e CheckResponseValidationError) Field() string { return e.field }
    method Reason (line 615) | func (e CheckResponseValidationError) Reason() string { return e.reason }
    method Cause (line 618) | func (e CheckResponseValidationError) Cause() error { return e.cause }
    method Key (line 621) | func (e CheckResponseValidationError) Key() bool { return e.key }
    method ErrorName (line 624) | func (e CheckResponseValidationError) ErrorName() string { return "Che...
    method Error (line 627) | func (e CheckResponseValidationError) Error() string {
  method Validate (line 659) | func (m *DeleteCartRequest) Validate() error {
  method ValidateAll (line 667) | func (m *DeleteCartRequest) ValidateAll() error {
  method validate (line 671) | func (m *DeleteCartRequest) validate(all bool) error {
  type DeleteCartRequestMultiError (line 688) | type DeleteCartRequestMultiError
    method Error (line 691) | func (m DeleteCartRequestMultiError) Error() string {
    method AllErrors (line 700) | func (m DeleteCartRequestMultiError) AllErrors() []error { return m }
  type DeleteCartRequestValidationError (line 704) | type DeleteCartRequestValidationError struct
    method Field (line 712) | func (e DeleteCartRequestValidationError) Field() string { return e.fi...
    method Reason (line 715) | func (e DeleteCartRequestValidationError) Reason() string { return e.r...
    method Cause (line 718) | func (e DeleteCartRequestValidationError) Cause() error { return e.cau...
    method Key (line 721) | func (e DeleteCartRequestValidationError) Key() bool { return e.key }
    method ErrorName (line 724) | func (e DeleteCartRequestValidationError) ErrorName() string {
    method Error (line 729) | func (e DeleteCartRequestValidationError) Error() string {
  method Validate (line 761) | func (m *DeleteCartReply) Validate() error {
  method ValidateAll (line 769) | func (m *DeleteCartReply) ValidateAll() error {
  method validate (line 773) | func (m *DeleteCartReply) validate(all bool) error {
  type DeleteCartReplyMultiError (line 790) | type DeleteCartReplyMultiError
    method Error (line 793) | func (m DeleteCartReplyMultiError) Error() string {
    method AllErrors (line 802) | func (m DeleteCartReplyMultiError) AllErrors() []error { return m }
  type DeleteCartReplyValidationError (line 806) | type DeleteCartReplyValidationError struct
    method Field (line 814) | func (e DeleteCartReplyValidationError) Field() string { return e.field }
    method Reason (line 817) | func (e DeleteCartReplyValidationError) Reason() string { return e.rea...
    method Cause (line 820) | func (e DeleteCartReplyValidationError) Cause() error { return e.cause }
    method Key (line 823) | func (e DeleteCartReplyValidationError) Key() bool { return e.key }
    method ErrorName (line 826) | func (e DeleteCartReplyValidationError) ErrorName() string { return "D...
    method Error (line 829) | func (e DeleteCartReplyValidationError) Error() string {
  method Validate (line 861) | func (m *GetCartRequest) Validate() error {
  method ValidateAll (line 869) | func (m *GetCartRequest) ValidateAll() error {
  method validate (line 873) | func (m *GetCartRequest) validate(all bool) error {
  type GetCartRequestMultiError (line 890) | type GetCartRequestMultiError
    method Error (line 893) | func (m GetCartRequestMultiError) Error() string {
    method AllErrors (line 902) | func (m GetCartRequestMultiError) AllErrors() []error { return m }
  type GetCartRequestValidationError (line 906) | type GetCartRequestValidationError struct
    method Field (line 914) | func (e GetCartRequestValidationError) Field() string { return e.field }
    method Reason (line 917) | func (e GetCartRequestValidationError) Reason() string { return e.reas...
    method Cause (line 920) | func (e GetCartRequestValidationError) Cause() error { return e.cause }
    method Key (line 923) | func (e GetCartRequestValidationError) Key() bool { return e.key }
    method ErrorName (line 926) | func (e GetCartRequestValidationError) ErrorName() string { return "Ge...
    method Error (line 929) | func (e GetCartRequestValidationError) Error() string {
  method Validate (line 961) | func (m *GetCartReply) Validate() error {
  method ValidateAll (line 969) | func (m *GetCartReply) ValidateAll() error {
  method validate (line 973) | func (m *GetCartReply) validate(all bool) error {
  type GetCartReplyMultiError (line 989) | type GetCartReplyMultiError
    method Error (line 992) | func (m GetCartReplyMultiError) Error() string {
    method AllErrors (line 1001) | func (m GetCartReplyMultiError) AllErrors() []error { return m }
  type GetCartReplyValidationError (line 1005) | type GetCartReplyValidationError struct
    method Field (line 1013) | func (e GetCartReplyValidationError) Field() string { return e.field }
    method Reason (line 1016) | func (e GetCartReplyValidationError) Reason() string { return e.reason }
    method Cause (line 1019) | func (e GetCartReplyValidationError) Cause() error { return e.cause }
    method Key (line 1022) | func (e GetCartReplyValidationError) Key() bool { return e.key }
    method ErrorName (line 1025) | func (e GetCartReplyValidationError) ErrorName() string { return "GetC...
    method Error (line 1028) | func (e GetCartReplyValidationError) Error() string {
  method Validate (line 1060) | func (m *ListCartRequest) Validate() error {
  method ValidateAll (line 1068) | func (m *ListCartRequest) ValidateAll() error {
  method validate (line 1072) | func (m *ListCartRequest) validate(all bool) error {
  type ListCartRequestMultiError (line 1091) | type ListCartRequestMultiError
    method Error (line 1094) | func (m ListCartRequestMultiError) Error() string {
    method AllErrors (line 1103) | func (m ListCartRequestMultiError) AllErrors() []error { return m }
  type ListCartRequestValidationError (line 1107) | type ListCartRequestValidationError struct
    method Field (line 1115) | func (e ListCartRequestValidationError) Field() string { return e.field }
    method Reason (line 1118) | func (e ListCartRequestValidationError) Reason() string { return e.rea...
    method Cause (line 1121) | func (e ListCartRequestValidationError) Cause() error { return e.cause }
    method Key (line 1124) | func (e ListCartRequestValidationError) Key() bool { return e.key }
    method ErrorName (line 1127) | func (e ListCartRequestValidationError) ErrorName() string { return "L...
    method Error (line 1130) | func (e ListCartRequestValidationError) Error() string {
  method Validate (line 1162) | func (m *CartListReply) Validate() error {
  method ValidateAll (line 1170) | func (m *CartListReply) ValidateAll() error {
  method validate (line 1174) | func (m *CartListReply) validate(all bool) error {
  type CartListReplyMultiError (line 1225) | type CartListReplyMultiError
    method Error (line 1228) | func (m CartListReplyMultiError) Error() string {
    method AllErrors (line 1237) | func (m CartListReplyMultiError) AllErrors() []error { return m }
  type CartListReplyValidationError (line 1241) | type CartListReplyValidationError struct
    method Field (line 1249) | func (e CartListReplyValidationError) Field() string { return e.field }
    method Reason (line 1252) | func (e CartListReplyValidationError) Reason() string { return e.reason }
    method Cause (line 1255) | func (e CartListReplyValidationError) Cause() error { return e.cause }
    method Key (line 1258) | func (e CartListReplyValidationError) Key() bool { return e.key }
    method ErrorName (line 1261) | func (e CartListReplyValidationError) ErrorName() string { return "Car...
    method Error (line 1264) | func (e CartListReplyValidationError) Error() string {

FILE: service/cart/api/cart/v1/cart_grpc.pb.go
  constant _ (line 19) | _ = grpc.SupportPackageIsVersion7
  type CartClient (line 24) | type CartClient interface
  type cartClient (line 31) | type cartClient struct
    method CreateCart (line 39) | func (c *cartClient) CreateCart(ctx context.Context, in *CreateCartReq...
    method UpdateCart (line 48) | func (c *cartClient) UpdateCart(ctx context.Context, in *UpdateCartReq...
    method DeleteCart (line 57) | func (c *cartClient) DeleteCart(ctx context.Context, in *DeleteCartReq...
    method ListCart (line 66) | func (c *cartClient) ListCart(ctx context.Context, in *ListCartRequest...
  function NewCartClient (line 35) | func NewCartClient(cc grpc.ClientConnInterface) CartClient {
  type CartServer (line 78) | type CartServer interface
  type UnimplementedCartServer (line 87) | type UnimplementedCartServer struct
    method CreateCart (line 90) | func (UnimplementedCartServer) CreateCart(context.Context, *CreateCart...
    method UpdateCart (line 93) | func (UnimplementedCartServer) UpdateCart(context.Context, *UpdateCart...
    method DeleteCart (line 96) | func (UnimplementedCartServer) DeleteCart(context.Context, *DeleteCart...
    method ListCart (line 99) | func (UnimplementedCartServer) ListCart(context.Context, *ListCartRequ...
    method mustEmbedUnimplementedCartServer (line 102) | func (UnimplementedCartServer) mustEmbedUnimplementedCartServer() {}
  type UnsafeCartServer (line 107) | type UnsafeCartServer interface
  function RegisterCartServer (line 111) | func RegisterCartServer(s grpc.ServiceRegistrar, srv CartServer) {
  function _Cart_CreateCart_Handler (line 115) | func _Cart_CreateCart_Handler(srv interface{}, ctx context.Context, dec ...
  function _Cart_UpdateCart_Handler (line 133) | func _Cart_UpdateCart_Handler(srv interface{}, ctx context.Context, dec ...
  function _Cart_DeleteCart_Handler (line 151) | func _Cart_DeleteCart_Handler(srv interface{}, ctx context.Context, dec ...
  function _Cart_ListCart_Handler (line 169) | func _Cart_ListCart_Handler(srv interface{}, ctx context.Context, dec fu...

FILE: service/cart/cmd/cart/main.go
  function init (line 35) | func init() {
  function newApp (line 39) | func newApp(logger log.Logger, gs *grpc.Server, rr registry.Registrar) *...
  function setTracerProvider (line 55) | func setTracerProvider(url string) error {
  function main (line 76) | func main() {

FILE: service/cart/cmd/cart/wire.go
  function initApp (line 19) | func initApp(*conf.Server,*conf.Registry, *conf.Data,  log.Logger) (*kra...

FILE: service/cart/cmd/cart/wire_gen.go
  function initApp (line 22) | func initApp(confServer *conf.Server, registry *conf.Registry, confData ...

FILE: service/cart/internal/biz/cart.go
  type CartRepo (line 10) | type CartRepo interface
  type CartUsecase (line 15) | type CartUsecase struct
    method CreateCart (line 24) | func (uc *CartUsecase) CreateCart(ctx context.Context, c *domain.ShopC...
    method List (line 27) | func (uc *CartUsecase) List(ctx context.Context, userId int64) (domain...
    method ListSelected (line 31) | func (uc *CartUsecase) ListSelected(ctx context.Context, userId int64)...
  function NewCartUsecase (line 20) | func NewCartUsecase(repo CartRepo, logger log.Logger) *CartUsecase {

FILE: service/cart/internal/conf/conf.pb.go
  constant _ (line 19) | _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
  constant _ (line 21) | _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
  type Bootstrap (line 24) | type Bootstrap struct
    method Reset (line 34) | func (x *Bootstrap) Reset() {
    method String (line 43) | func (x *Bootstrap) String() string {
    method ProtoMessage (line 47) | func (*Bootstrap) ProtoMessage() {}
    method ProtoReflect (line 49) | func (x *Bootstrap) ProtoReflect() protoreflect.Message {
    method Descriptor (line 62) | func (*Bootstrap) Descriptor() ([]byte, []int) {
    method GetServer (line 66) | func (x *Bootstrap) GetServer() *Server {
    method GetData (line 73) | func (x *Bootstrap) GetData() *Data {
    method GetTrace (line 80) | func (x *Bootstrap) GetTrace() *Trace {
  type Server (line 87) | type Server struct
    method Reset (line 96) | func (x *Server) Reset() {
    method String (line 105) | func (x *Server) String() string {
    method ProtoMessage (line 109) | func (*Server) ProtoMessage() {}
    method ProtoReflect (line 111) | func (x *Server) ProtoReflect() protoreflect.Message {
    method Descriptor (line 124) | func (*Server) Descriptor() ([]byte, []int) {
    method GetHttp (line 128) | func (x *Server) GetHttp() *Server_HTTP {
    method GetGrpc (line 135) | func (x *Server) GetGrpc() *Server_GRPC {
  type Data (line 142) | type Data struct
    method Reset (line 151) | func (x *Data) Reset() {
    method String (line 160) | func (x *Data) String() string {
    method ProtoMessage (line 164) | func (*Data) ProtoMessage() {}
    method ProtoReflect (line 166) | func (x *Data) ProtoReflect() protoreflect.Message {
    method Descriptor (line 179) | func (*Data) Descriptor() ([]byte, []int) {
    method GetDatabase (line 183) | func (x *Data) GetDatabase() *Data_Database {
    method GetRedis (line 190) | func (x *Data) GetRedis() *Data_Redis {
  type Registry (line 197) | type Registry struct
    method Reset (line 205) | func (x *Registry) Reset() {
    method String (line 214) | func (x *Registry) String() string {
    method ProtoMessage (line 218) | func (*Registry) ProtoMessage() {}
    method ProtoReflect (line 220) | func (x *Registry) ProtoReflect() protoreflect.Message {
    method Descriptor (line 233) | func (*Registry) Descriptor() ([]byte, []int) {
    method GetConsul (line 237) | func (x *Registry) GetConsul() *Registry_Consul {
  type Trace (line 244) | type Trace struct
    method Reset (line 252) | func (x *Trace) Reset() {
    method String (line 261) | func (x *Trace) String() string {
    method ProtoMessage (line 265) | func (*Trace) ProtoMessage() {}
    method ProtoReflect (line 267) | func (x *Trace) ProtoReflect() protoreflect.Message {
    method Descriptor (line 280) | func (*Trace) Descriptor() ([]byte, []int) {
    method GetEndpoint (line 284) | func (x *Trace) GetEndpoint() string {
  type Server_HTTP (line 291) | type Server_HTTP struct
    method Reset (line 301) | func (x *Server_HTTP) Reset() {
    method String (line 310) | func (x *Server_HTTP) String() string {
    method ProtoMessage (line 314) | func (*Server_HTTP) ProtoMessage() {}
    method ProtoReflect (line 316) | func (x *Server_HTTP) ProtoReflect() protoreflect.Message {
    method Descriptor (line 329) | func (*Server_HTTP) Descriptor() ([]byte, []int) {
    method GetNetwork (line 333) | func (x *Server_HTTP) GetNetwork() string {
    method GetAddr (line 340) | func (x *Server_HTTP) GetAddr() string {
    method GetTimeout (line 347) | func (x *Server_HTTP) GetTimeout() *durationpb.Duration {
  type Server_GRPC (line 354) | type Server_GRPC struct
    method Reset (line 364) | func (x *Server_GRPC) Reset() {
    method String (line 373) | func (x *Server_GRPC) String() string {
    method ProtoMessage (line 377) | func (*Server_GRPC) ProtoMessage() {}
    method ProtoReflect (line 379) | func (x *Server_GRPC) ProtoReflect() protoreflect.Message {
    method Descriptor (line 392) | func (*Server_GRPC) Descriptor() ([]byte, []int) {
    method GetNetwork (line 396) | func (x *Server_GRPC) GetNetwork() string {
    method GetAddr (line 403) | func (x *Server_GRPC) GetAddr() string {
    method GetTimeout (line 410) | func (x *Server_GRPC) GetTimeout() *durationpb.Duration {
  type Data_Database (line 417) | type Data_Database struct
    method Reset (line 426) | func (x *Data_Database) Reset() {
    method String (line 435) | func (x *Data_Database) String() string {
    method ProtoMessage (line 439) | func (*Data_Database) ProtoMessage() {}
    method ProtoReflect (line 441) | func (x *Data_Database) ProtoReflect() protoreflect.Message {
    method Descriptor (line 454) | func (*Data_Database) Descriptor() ([]byte, []int) {
    method GetDriver (line 458) | func (x *Data_Database) GetDriver() string {
    method GetSource (line 465) | func (x *Data_Database) GetSource() string {
  type Data_Redis (line 472) | type Data_Redis struct
    method Reset (line 486) | func (x *Data_Redis) Reset() {
    method String (line 495) | func (x *Data_Redis) String() string {
    method ProtoMessage (line 499) | func (*Data_Redis) ProtoMessage() {}
    method ProtoReflect (line 501) | func (x *Data_Redis) ProtoReflect() protoreflect.Message {
    method Descriptor (line 514) | func (*Data_Redis) Descriptor() ([]byte, []int) {
    method GetNetwork (line 518) | func (x *Data_Redis) GetNetwork() string {
    method GetAddr (line 525) | func (x *Data_Redis) GetAddr() string {
    method GetPassword (line 532) | func (x *Data_Redis) GetPassword() string {
    method GetDb (line 539) | func (x *Data_Redis) GetDb() int32 {
    method GetDialTimeout (line 546) | func (x *Data_Redis) GetDialTimeout() *durationpb.Duration {
    method GetReadTimeout (line 553) | func (x *Data_Redis) GetReadTimeout() *durationpb.Duration {
    method GetWriteTimeout (line 560) | func (x *Data_Redis) GetWriteTimeout() *durationpb.Duration {
  type Registry_Consul (line 567) | type Registry_Consul struct
    method Reset (line 576) | func (x *Registry_Consul) Reset() {
    method String (line 585) | func (x *Registry_Consul) String() string {
    method ProtoMessage (line 589) | func (*Registry_Consul) ProtoMessage() {}
    method ProtoReflect (line 591) | func (x *Registry_Consul) ProtoReflect() protoreflect.Message {
    method Descriptor (line 604) | func (*Registry_Consul) Descriptor() ([]byte, []int) {
    method GetAddress (line 608) | func (x *Registry_Consul) GetAddress() string {
    method GetScheme (line 615) | func (x *Registry_Consul) GetScheme() string {
  function file_conf_conf_proto_rawDescGZIP (line 704) | func file_conf_conf_proto_rawDescGZIP() []byte {
  function init (line 746) | func init() { file_conf_conf_proto_init() }
  function file_conf_conf_proto_init (line 747) | func file_conf_conf_proto_init() {

FILE: service/cart/internal/data/cart.go
  type ShopCart (line 16) | type ShopCart struct
    method ToDomain (line 43) | func (p *ShopCart) ToDomain() *domain.ShopCart {
  type cartRepo (line 31) | type cartRepo struct
    method Create (line 57) | func (r *cartRepo) Create(ctx context.Context, c *domain.ShopCart) (*d...
    method List (line 79) | func (r *cartRepo) List(ctx context.Context, userId int64) (domain.Sho...
  function NewCartRepo (line 36) | func NewCartRepo(data *Data, logger log.Logger) biz.CartRepo {

FILE: service/cart/internal/data/data.go
  type Data (line 26) | type Data struct
  function NewData (line 32) | func NewData(c *conf.Data, logger log.Logger, db *gorm.DB, rdb *redis.Cl...
  function NewDB (line 43) | func NewDB(c *conf.Data) *gorm.DB {
  function NewRedis (line 71) | func NewRedis(c *conf.Data) *redis.Client {

FILE: service/cart/internal/data/data_suite_test.go
  function TestData (line 16) | func TestData(t *testing.T) {
  function initialize (line 29) | func initialize(db *gorm.DB) error {

FILE: service/cart/internal/data/docker_mysql.go
  function DockerMysql (line 11) | func DockerMysql(img, version string) (string, func()) {
  function innerDockerMysql (line 15) | func innerDockerMysql(img, version string) (string, func()) {

FILE: service/cart/internal/domain/cart.go
  type ShopCart (line 3) | type ShopCart struct
  type ShopCartList (line 15) | type ShopCartList
    method ListSelected (line 17) | func (p ShopCartList) ListSelected() ShopCartList {

FILE: service/cart/internal/server/grpc.go
  function NewGRPCServer (line 14) | func NewGRPCServer(c *conf.Server, greeter *service.CartService, logger ...

FILE: service/cart/internal/server/server.go
  function NewRegistrar (line 16) | func NewRegistrar(conf *conf.Registry) registry.Registrar {

FILE: service/cart/internal/service/cart.go
  type CartService (line 11) | type CartService struct
    method CreateCart (line 20) | func (s *CartService) CreateCart(ctx context.Context, req *v1.CreateCa...
    method ListCart (line 50) | func (s *CartService) ListCart(ctx context.Context, req *v1.ListCartRe...
  function NewCartService (line 16) | func NewCartService(cart *biz.CartUsecase) *CartService {

FILE: service/goods/api/goods/v1/error_reason.pb.go
  constant _ (line 19) | _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
  constant _ (line 21) | _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
  type ErrorReason (line 24) | type ErrorReason
    method Enum (line 43) | func (x ErrorReason) Enum() *ErrorReason {
    method String (line 49) | func (x ErrorReason) String() string {
    method Descriptor (line 53) | func (ErrorReason) Descriptor() protoreflect.EnumDescriptor {
    method Type (line 57) | func (ErrorReason) Type() protoreflect.EnumType {
    method Number (line 61) | func (x ErrorReason) Number() protoreflect.EnumNumber {
    method EnumDescriptor (line 66) | func (ErrorReason) EnumDescriptor() ([]byte, []int) {
  constant ErrorReason_USER_NOT_FOUND (line 27) | ErrorReason_USER_NOT_FOUND  ErrorReason = 0
  constant ErrorReason_CONTENT_MISSING (line 28) | ErrorReason_CONTENT_MISSING ErrorReason = 1
  function file_api_goods_v1_error_reason_proto_rawDescGZIP (line 92) | func file_api_goods_v1_error_reason_proto_rawDescGZIP() []byte {
  function init (line 111) | func init() { file_api_goods_v1_error_reason_proto_init() }
  function file_api_goods_v1_error_reason_proto_init (line 112) | func file_api_goods_v1_error_reason_proto_init() {

FILE: service/goods/api/goods/v1/goods.pb.go
  constant _ (line 20) | _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
  constant _ (line 22) | _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
  type AttrValueRequest (line 25) | type AttrValueRequest struct
    method Reset (line 36) | func (x *AttrValueRequest) Reset() {
    method String (line 45) | func (x *AttrValueRequest) String() string {
    method ProtoMessage (line 49) | func (*AttrValueRequest) ProtoMessage() {}
    method ProtoReflect (line 51) | func (x *AttrValueRequest) ProtoReflect() protoreflect.Message {
    method Descriptor (line 64) | func (*AttrValueRequest) Descriptor() ([]byte, []int) {
    method GetId (line 68) | func (x *AttrValueRequest) GetId() int64 {
    method GetAttrId (line 75) | func (x *AttrValueRequest) GetAttrId() int64 {
    method GetGroupId (line 82) | func (x *AttrValueRequest) GetGroupId() int64 {
    method GetValue (line 89) | func (x *AttrValueRequest) GetValue() string {
  type AttrRequest (line 96) | type AttrRequest struct
    method Reset (line 111) | func (x *AttrRequest) Reset() {
    method String (line 120) | func (x *AttrRequest) String() string {
    method ProtoMessage (line 124) | func (*AttrRequest) ProtoMessage() {}
    method ProtoReflect (line 126) | func (x *AttrRequest) ProtoReflect() protoreflect.Message {
    method Descriptor (line 139) | func (*AttrRequest) Descriptor() ([]byte, []int) {
    method GetId (line 143) | func (x *AttrRequest) GetId() int64 {
    method GetTypeId (line 150) | func (x *AttrRequest) GetTypeId() int64 {
    method GetGroupId (line 157) | func (x *AttrRequest) GetGroupId() int64 {
    method GetTitle (line 164) | func (x *AttrRequest) GetTitle() string {
    method GetDesc (line 171) | func (x *AttrRequest) GetDesc() string {
    method GetStatus (line 178) | func (x *AttrRequest) GetStatus() bool {
    method GetSort (line 185) | func (x *AttrRequest) GetSort() int32 {
    method GetAttrValue (line 192) | func (x *AttrRequest) GetAttrValue() []*AttrValueRequest {
  type AttrValueResponse (line 199) | type AttrValueResponse struct
    method Reset (line 210) | func (x *AttrValueResponse) Reset() {
    method String (line 219) | func (x *AttrValueResponse) String() string {
    method ProtoMessage (line 223) | func (*AttrValueResponse) ProtoMessage() {}
    method ProtoReflect (line 225) | func (x *AttrValueResponse) ProtoReflect() protoreflect.Message {
    method Descriptor (line 238) | func (*AttrValueResponse) Descriptor() ([]byte, []int) {
    method GetId (line 242) | func (x *AttrValueResponse) GetId() int64 {
    method GetAttrId (line 249) | func (x *AttrValueResponse) GetAttrId() int64 {
    method GetGroupId (line 256) | func (x *AttrValueResponse) GetGroupId() int64 {
    method GetValue (line 263) | func (x *AttrValueResponse) GetValue() string {
  type AttrResponse (line 270) | type AttrResponse struct
    method Reset (line 285) | func (x *AttrResponse) Reset() {
    method String (line 294) | func (x *AttrResponse) String() string {
    method ProtoMessage (line 298) | func (*AttrResponse) ProtoMessage() {}
    method ProtoReflect (line 300) | func (x *AttrResponse) ProtoReflect() protoreflect.Message {
    method Descriptor (line 313) | func (*AttrResponse) Descriptor() ([]byte, []int) {
    method GetId (line 317) | func (x *AttrResponse) GetId() int64 {
    method GetTypeId (line 324) | func (x *AttrResponse) GetTypeId() int64 {
    method GetGroupId (line 331) | func (x *AttrResponse) GetGroupId() int64 {
    method GetTitle (line 338) | func (x *AttrResponse) GetTitle() string {
    method GetDesc (line 345) | func (x *AttrResponse) GetDesc() string {
    method GetStatus (line 352) | func (x *AttrResponse) GetStatus() bool {
    method GetSort (line 359) | func (x *AttrResponse) GetSort() int32 {
    method GetAttrValue (line 366) | func (x *AttrResponse) GetAttrValue() []*AttrValueResponse {
  type AttrGroupRequest (line 373) | type AttrGroupRequest struct
    method Reset (line 386) | func (x *AttrGroupRequest) Reset() {
    method String (line 395) | func (x *AttrGroupRequest) String() string {
    method ProtoMessage (line 399) | func (*AttrGroupRequest) ProtoMessage() {}
    method ProtoReflect (line 401) | func (x *AttrGroupRequest) ProtoReflect() protoreflect.Message {
    method Descriptor (line 414) | func (*AttrGroupRequest) Descriptor() ([]byte, []int) {
    method GetId (line 418) | func (x *AttrGroupRequest) GetId() int64 {
    method GetTypeId (line 425) | func (x *AttrGroupRequest) GetTypeId() int64 {
    method GetTitle (line 432) | func (x *AttrGroupRequest) GetTitle() string {
    method GetDesc (line 439) | func (x *AttrGroupRequest) GetDesc() string {
    method GetStatus (line 446) | func (x *AttrGroupRequest) GetStatus() bool {
    method GetSort (line 453) | func (x *AttrGroupRequest) GetSort() int32 {
  type AttrGroupResponse (line 460) | type AttrGroupResponse struct
    method Reset (line 473) | func (x *AttrGroupResponse) Reset() {
    method String (line 482) | func (x *AttrGroupResponse) String() string {
    method ProtoMessage (line 486) | func (*AttrGroupResponse) ProtoMessage() {}
    method ProtoReflect (line 488) | func (x *AttrGroupResponse) ProtoReflect() protoreflect.Message {
    method Descriptor (line 501) | func (*AttrGroupResponse) Descriptor() ([]byte, []int) {
    method GetId (line 505) | func (x *AttrGroupResponse) GetId() int64 {
    method GetTypeId (line 512) | func (x *AttrGroupResponse) GetTypeId() int64 {
    method GetTitle (line 519) | func (x *AttrGroupResponse) GetTitle() string {
    method GetDesc (line 526) | func (x *AttrGroupResponse) GetDesc() string {
    method GetStatus (line 533) | func (x *AttrGroupResponse) GetStatus() bool {
    method GetSort (line 540) | func (x *AttrGroupResponse) GetSort() int32 {
  type SpecificationValue (line 547) | type SpecificationValue struct
    method Reset (line 558) | func (x *SpecificationValue) Reset() {
    method String (line 567) | func (x *SpecificationValue) String() string {
    method ProtoMessage (line 571) | func (*SpecificationValue) ProtoMessage() {}
    method ProtoReflect (line 573) | func (x *SpecificationValue) ProtoReflect() protoreflect.Message {
    method Descriptor (line 586) | func (*SpecificationValue) Descriptor() ([]byte, []int) {
    method GetId (line 590) | func (x *SpecificationValue) GetId() int64 {
    method GetAttrId (line 597) | func (x *SpecificationValue) GetAttrId() int64 {
    method GetValue (line 604) | func (x *SpecificationValue) GetValue() string {
    method GetSort (line 611) | func (x *SpecificationValue) GetSort() int32 {
  type SpecificationValueResponse (line 618) | type SpecificationValueResponse struct
    method Reset (line 629) | func (x *SpecificationValueResponse) Reset() {
    method String (line 638) | func (x *SpecificationValueResponse) String() string {
    method ProtoMessage (line 642) | func (*SpecificationValueResponse) ProtoMessage() {}
    method ProtoReflect (line 644) | func (x *SpecificationValueResponse) ProtoReflect() protoreflect.Messa...
    method Descriptor (line 657) | func (*SpecificationValueResponse) Descriptor() ([]byte, []int) {
    method GetId (line 661) | func (x *SpecificationValueResponse) GetId() int64 {
    method GetAttrId (line 668) | func (x *SpecificationValueResponse) GetAttrId() int64 {
    method GetValue (line 675) | func (x *SpecificationValueResponse) GetValue() string {
    method GetSort (line 682) | func (x *SpecificationValueResponse) GetSort() int32 {
  type SpecificationRequest (line 689) | type SpecificationRequest struct
    method Reset (line 704) | func (x *SpecificationRequest) Reset() {
    method String (line 713) | func (x *SpecificationRequest) String() string {
    method ProtoMessage (line 717) | func (*SpecificationRequest) ProtoMessage() {}
    method ProtoReflect (line 719) | func (x *SpecificationRequest) ProtoReflect() protoreflect.Message {
    method Descriptor (line 732) | func (*SpecificationRequest) Descriptor() ([]byte, []int) {
    method GetId (line 736) | func (x *SpecificationRequest) GetId() int64 {
    method GetTypeId (line 743) | func (x *SpecificationRequest) GetTypeId() int64 {
    method GetName (line 750) | func (x *SpecificationRequest) GetName() string {
    method GetSort (line 757) | func (x *SpecificationRequest) GetSort() int32 {
    method GetStatus (line 764) | func (x *SpecificationRequest) GetStatus() bool {
    method GetIsSku (line 771) | func (x *SpecificationRequest) GetIsSku() bool {
    method GetIsSelect (line 778) | func (x *SpecificationRequest) GetIsSelect() bool {
    method GetSpecificationValue (line 785) | func (x *SpecificationRequest) GetSpecificationValue() []*Specificatio...
  type SpecificationResponse (line 792) | type SpecificationResponse struct
    method Reset (line 800) | func (x *SpecificationResponse) Reset() {
    method String (line 809) | func (x *SpecificationResponse) String() string {
    method ProtoMessage (line 813) | func (*SpecificationResponse) ProtoMessage() {}
    method ProtoReflect (line 815) | func (x *SpecificationResponse) ProtoReflect() protoreflect.Message {
    method Descriptor (line 828) | func (*SpecificationResponse) Descriptor() ([]byte, []int) {
    method GetId (line 832) | func (x *SpecificationResponse) GetId() int64 {
  type GoodsTypeRequest (line 839) | type GoodsTypeRequest struct
    method Reset (line 854) | func (x *GoodsTypeRequest) Reset() {
    method String (line 863) | func (x *GoodsTypeRequest) String() string {
    method ProtoMessage (line 867) | func (*GoodsTypeRequest) ProtoMessage() {}
    method ProtoReflect (line 869) | func (x *GoodsTypeRequest) ProtoReflect() protoreflect.Message {
    method Descriptor (line 882) | func (*GoodsTypeRequest) Descriptor() ([]byte, []int) {
    method GetId (line 886) | func (x *GoodsTypeRequest) GetId() int64 {
    method GetName (line 893) | func (x *GoodsTypeRequest) GetName() string {
    method GetTypeCode (line 900) | func (x *GoodsTypeRequest) GetTypeCode() string {
    method GetNameAlias (line 907) | func (x *GoodsTypeRequest) GetNameAlias() string {
    method GetIsVirtual (line 914) | func (x *GoodsTypeRequest) GetIsVirtual() bool {
    method GetDesc (line 921) | func (x *GoodsTypeRequest) GetDesc() string {
    method GetSort (line 928) | func (x *GoodsTypeRequest) GetSort() int32 {
    method GetBrandIds (line 935) | func (x *GoodsTypeRequest) GetBrandIds() string {
  type GoodsTypeResponse (line 942) | type GoodsTypeResponse struct
    method Reset (line 950) | func (x *GoodsTypeResponse) Reset() {
    method String (line 959) | func (x *GoodsTypeResponse) String() string {
    method ProtoMessage (line 963) | func (*GoodsTypeResponse) ProtoMessage() {}
    method ProtoReflect (line 965) | func (x *GoodsTypeResponse) ProtoReflect() protoreflect.Message {
    method Descriptor (line 978) | func (*GoodsTypeResponse) Descriptor() ([]byte, []int) {
    method GetId (line 982) | func (x *GoodsTypeResponse) GetId() int64 {
  type CreateGoodsRequest (line 989) | type CreateGoodsRequest struct
    method Reset (line 1016) | func (x *CreateGoodsRequest) Reset() {
    method String (line 1025) | func (x *CreateGoodsRequest) String() string {
    method ProtoMessage (line 1029) | func (*CreateGoodsRequest) ProtoMessage() {}
    method ProtoReflect (line 1031) | func (x *CreateGoodsRequest) ProtoReflect() protoreflect.Message {
    method Descriptor (line 1044) | func (*CreateGoodsRequest) Descriptor() ([]byte, []int) {
    method GetId (line 1048) | func (x *CreateGoodsRequest) GetId() int64 {
    method GetCategoryId (line 1055) | func (x *CreateGoodsRequest) GetCategoryId() int32 {
    method GetBrandId (line 1062) | func (x *CreateGoodsRequest) GetBrandId() int32 {
    method GetTypeId (line 1069) | func (x *CreateGoodsRequest) GetTypeId() int64 {
    method GetName (line 1076) | func (x *CreateGoodsRequest) GetName() string {
    method GetNameAlias (line 1083) | func (x *CreateGoodsRequest) GetNameAlias() string {
    method GetGoodsTags (line 1090) | func (x *CreateGoodsRequest) GetGoodsTags() string {
    method GetGoodsSn (line 1097) | func (x *CreateGoodsRequest) GetGoodsSn() string {
    method GetShopPrice (line 1104) | func (x *CreateGoodsRequest) GetShopPrice() int64 {
    method GetMarketPrice (line 1111) | func (x *CreateGoodsRequest) GetMarketPrice() int64 {
    method GetInventory (line 1118) | func (x *CreateGoodsRequest) GetInventory() int64 {
    method GetGoodsBrief (line 1125) | func (x *CreateGoodsRequest) GetGoodsBrief() string {
    method GetGoodsFrontImage (line 1132) | func (x *CreateGoodsRequest) GetGoodsFrontImage() string {
    method GetGoodsImages (line 1139) | func (x *CreateGoodsRequest) GetGoodsImages() []string {
    method GetShipFree (line 1146) | func (x *CreateGoodsRequest) GetShipFree() bool {
    method GetShipId (line 1153) | func (x *CreateGoodsRequest) GetShipId() int32 {
    method GetIsNew (line 1160) | func (x *CreateGoodsRequest) GetIsNew() bool {
    method GetIsHot (line 1167) | func (x *CreateGoodsRequest) GetIsHot() bool {
    method GetOnSale (line 1174) | func (x *CreateGoodsRequest) GetOnSale() bool {
    method GetSku (line 1181) | func (x *CreateGoodsRequest) GetSku() []*CreateGoodsRequestGoodsSku {
  type CreateGoodsResponse (line 1188) | type CreateGoodsResponse struct
    method Reset (line 1196) | func (x *CreateGoodsResponse) Reset() {
    method String (line 1205) | func (x *CreateGoodsResponse) String() string {
    method ProtoMessage (line 1209) | func (*CreateGoodsResponse) ProtoMessage() {}
    method ProtoReflect (line 1211) | func (x *CreateGoodsResponse) ProtoReflect() protoreflect.Message {
    method Descriptor (line 1224) | func (*CreateGoodsResponse) Descriptor() ([]byte, []int) {
    method GetID (line 1228) | func (x *CreateGoodsResponse) GetID() int64 {
  type GoodsInfoResponse (line 1235) | type GoodsInfoResponse struct
    method Reset (line 1259) | func (x *GoodsInfoResponse) Reset() {
    method String (line 1268) | func (x *GoodsInfoResponse) String() string {
    method ProtoMessage (line 1272) | func (*GoodsInfoResponse) ProtoMessage() {}
    method ProtoReflect (line 1274) | func (x *GoodsInfoResponse) ProtoReflect() protoreflect.Message {
    method Descriptor (line 1287) | func (*GoodsInfoResponse) Descriptor() ([]byte, []int) {
    method GetId (line 1291) | func (x *GoodsInfoResponse) GetId() int64 {
    method GetCategoryId (line 1298) | func (x *GoodsInfoResponse) GetCategoryId() int32 {
    method GetBrandId (line 1305) | func (x *GoodsInfoResponse) GetBrandId() int32 {
    method GetName (line 1312) | func (x *GoodsInfoResponse) GetName() string {
    method GetGoodsSn (line 1319) | func (x *GoodsInfoResponse) GetGoodsSn() string {
    method GetClickNum (line 1326) | func (x *GoodsInfoResponse) GetClickNum() int64 {
    method GetSoldNum (line 1333) | func (x *GoodsInfoResponse) GetSoldNum() int64 {
    method GetFavNum (line 1340) | func (x *GoodsInfoResponse) GetFavNum() int64 {
    method GetMarketPrice (line 1347) | func (x *GoodsInfoResponse) GetMarketPrice() int64 {
    method GetGoodsBrief (line 1354) | func (x *GoodsInfoResponse) GetGoodsBrief() string {
    method GetGoodsDesc (line 1361) | func (x *GoodsInfoResponse) GetGoodsDesc() string {
    method GetShipFree (line 1368) | func (x *GoodsInfoResponse) GetShipFree() bool {
    method GetImages (line 1375) | func (x *GoodsInfoResponse) GetImages() string {
    method GetGoodsImages (line 1382) | func (x *GoodsInfoResponse) GetGoodsImages() []string {
    method GetIsNew (line 1389) | func (x *GoodsInfoResponse) GetIsNew() bool {
    method GetIsHot (line 1396) | func (x *GoodsInfoResponse) GetIsHot() bool {
    method GetOnSale (line 1403) | func (x *GoodsInfoResponse) GetOnSale() bool {
  type GoodsListResponse (line 1410) | type GoodsListResponse struct
    method Reset (line 1419) | func (x *GoodsListResponse) Reset() {
    method String (line 1428) | func (x *GoodsListResponse) String() string {
    method ProtoMessage (line 1432) | func (*GoodsListResponse) ProtoMessage() {}
    method ProtoReflect (line 1434) | func (x *GoodsListResponse) ProtoReflect() protoreflect.Message {
    method Descriptor (line 1447) | func (*GoodsListResponse) Descriptor() ([]byte, []int) {
    method GetTotal (line 1451) | func (x *GoodsListResponse) GetTotal() int64 {
    method GetList (line 1458) | func (x *GoodsListResponse) GetList() []*GoodsInfoResponse {
  type GoodsFilterRequest (line 1465) | type GoodsFilterRequest struct
    method Reset (line 1486) | func (x *GoodsFilterRequest) Reset() {
    method String (line 1495) | func (x *GoodsFilterRequest) String() string {
    method ProtoMessage (line 1499) | func (*GoodsFilterRequest) ProtoMessage() {}
    method ProtoReflect (line 1501) | func (x *GoodsFilterRequest) ProtoReflect() protoreflect.Message {
    method Descriptor (line 1514) | func (*GoodsFilterRequest) Descriptor() ([]byte, []int) {
    method GetKeywords (line 1518) | func (x *GoodsFilterRequest) GetKeywords() string {
    method GetCategoryId (line 1525) | func (x *GoodsFilterRequest) GetCategoryId() int32 {
    method GetBrandId (line 1532) | func (x *GoodsFilterRequest) GetBrandId() int32 {
    method GetMinPrice (line 1539) | func (x *GoodsFilterRequest) GetMinPrice() int64 {
    method GetMaxPrice (line 1546) | func (x *GoodsFilterRequest) GetMaxPrice() int64 {
    method GetIsHot (line 1553) | func (x *GoodsFilterRequest) GetIsHot() bool {
    method GetIsNew (line 1560) | func (x *GoodsFilterRequest) GetIsNew() bool {
    method GetIsTab (line 1567) | func (x *GoodsFilterRequest) GetIsTab() bool {
    method GetClickNum (line 1574) | func (x *GoodsFilterRequest) GetClickNum() int64 {
    method GetSoldNum (line 1581) | func (x *GoodsFilterRequest) GetSoldNum() int64 {
    method GetFavNum (line 1588) | func (x *GoodsFilterRequest) GetFavNum() int64 {
    method GetPages (line 1595) | func (x *GoodsFilterRequest) GetPages() int64 {
    method GetPagePerNums (line 1602) | func (x *GoodsFilterRequest) GetPagePerNums() int64 {
    method GetId (line 1609) | func (x *GoodsFilterRequest) GetId() int64 {
  type CategoryInfoResponse (line 1617) | type CategoryInfoResponse struct
    method Reset (line 1630) | func (x *CategoryInfoResponse) Reset() {
    method String (line 1639) | func (x *CategoryInfoResponse) String() string {
    method ProtoMessage (line 1643) | func (*CategoryInfoResponse) ProtoMessage() {}
    method ProtoReflect (line 1645) | func (x *CategoryInfoResponse) ProtoReflect() protoreflect.Message {
    method Descriptor (line 1658) | func (*CategoryInfoResponse) Descriptor() ([]byte, []int) {
    method GetId (line 1662) | func (x *CategoryInfoResponse) GetId() int32 {
    method GetName (line 1669) | func (x *CategoryInfoResponse) GetName() string {
    method GetParentCategory (line 1676) | func (x *CategoryInfoResponse) GetParentCategory() int32 {
    method GetLevel (line 1683) | func (x *CategoryInfoResponse) GetLevel() int32 {
    method GetIsTab (line 1690) | func (x *CategoryInfoResponse) GetIsTab() bool {
    method GetSort (line 1697) | func (x *CategoryInfoResponse) GetSort() int32 {
  type CategoryListResponse (line 1704) | type CategoryListResponse struct
    method Reset (line 1712) | func (x *CategoryListResponse) Reset() {
    method String (line 1721) | func (x *CategoryListResponse) String() string {
    method ProtoMessage (line 1725) | func (*CategoryListResponse) ProtoMessage() {}
    method ProtoReflect (line 1727) | func (x *CategoryListResponse) ProtoReflect() protoreflect.Message {
    method Descriptor (line 1740) | func (*CategoryListResponse) Descriptor() ([]byte, []int) {
    method GetJsonData (line 1744) | func (x *CategoryListResponse) GetJsonData() string {
  type CategoryListRequest (line 1751) | type CategoryListRequest struct
    method Reset (line 1760) | func (x *CategoryListRequest) Reset() {
    method String (line 1769) | func (x *CategoryListRequest) String() string {
    method ProtoMessage (line 1773) | func (*CategoryListRequest) ProtoMessage() {}
    method ProtoReflect (line 1775) | func (x *CategoryListRequest) ProtoReflect() protoreflect.Message {
    method Descriptor (line 1788) | func (*CategoryListRequest) Descriptor() ([]byte, []int) {
    method GetId (line 1792) | func (x *CategoryListRequest) GetId() int32 {
    method GetLevel (line 1799) | func (x *CategoryListRequest) GetLevel() int32 {
  type SubCategoryListResponse (line 1806) | type SubCategoryListResponse struct
    method Reset (line 1815) | func (x *SubCategoryListResponse) Reset() {
    method String (line 1824) | func (x *SubCategoryListResponse) String() string {
    method ProtoMessage (line 1828) | func (*SubCategoryListResponse) ProtoMessage() {}
    method ProtoReflect (line 1830) | func (x *SubCategoryListResponse) ProtoReflect() protoreflect.Message {
    method Descriptor (line 1843) | func (*SubCategoryListResponse) Descriptor() ([]byte, []int) {
    method GetInfo (line 1847) | func (x *SubCategoryListResponse) GetInfo() *CategoryInfoResponse {
    method GetSubCategory (line 1854) | func (x *SubCategoryListResponse) GetSubCategory() []*CategoryInfoResp...
  type CategoryInfoRequest (line 1861) | type CategoryInfoRequest struct
    method Reset (line 1874) | func (x *CategoryInfoRequest) Reset() {
    method String (line 1883) | func (x *CategoryInfoRequest) String() string {
    method ProtoMessage (line 1887) | func (*CategoryInfoRequest) ProtoMessage() {}
    method ProtoReflect (line 1889) | func (x *CategoryInfoRequest) ProtoReflect() protoreflect.Message {
    method Descriptor (line 1902) | func (*CategoryInfoRequest) Descriptor() ([]byte, []int) {
    method GetId (line 1906) | func (x *CategoryInfoRequest) GetId() int32 {
    method GetName (line 1913) | func (x *CategoryInfoRequest) GetName() string {
    method GetParentCategory (line 1920) | func (x *CategoryInfoRequest) GetParentCategory() int32 {
    method GetLevel (line 1927) | func (x *CategoryInfoRequest) GetLevel() int32 {
    method GetIsTab (line 1934) | func (x *CategoryInfoRequest) GetIsTab() bool {
    method GetSort (line 1941) | func (x *CategoryInfoRequest) GetSort() int32 {
  type BatchCategoryInfoRequest (line 1948) | type BatchCategoryInfoRequest struct
    method Reset (line 1958) | func (x *BatchCategoryInfoRequest) Reset() {
    method String (line 1967) | func (x *BatchCategoryInfoRequest) String() string {
    method ProtoMessage (line 1971) | func (*BatchCategoryInfoRequest) ProtoMessage() {}
    method ProtoReflect (line 1973) | func (x *BatchCategoryInfoRequest) ProtoReflect() protoreflect.Message {
    method Descriptor (line 1986) | func (*BatchCategoryInfoRequest) Descriptor() ([]byte, []int) {
    method GetId (line 1990) | func (x *BatchCategoryInfoRequest) GetId() []int32 {
    method GetGoodsNums (line 1997) | func (x *BatchCategoryInfoRequest) GetGoodsNums() int32 {
    method GetBrandNums (line 2004) | func (x *BatchCategoryInfoRequest) GetBrandNums() int32 {
  type DeleteCategoryRequest (line 2011) | type DeleteCategoryRequest struct
    method Reset (line 2019) | func (x *DeleteCategoryRequest) Reset() {
    method String (line 2028) | func (x *DeleteCategoryRequest) String() string {
    method ProtoMessage (line 2032) | func (*DeleteCategoryRequest) ProtoMessage() {}
    method ProtoReflect (line 2034) | func (x *DeleteCategoryRequest) ProtoReflect() protoreflect.Message {
    method Descriptor (line 2047) | func (*DeleteCategoryRequest) Descriptor() ([]byte, []int) {
    method GetId (line 2051) | func (x *DeleteCategoryRequest) GetId() int32 {
  type BrandListRequest (line 2058) | type BrandListRequest struct
    method Reset (line 2067) | func (x *BrandListRequest) Reset() {
    method String (line 2076) | func (x *BrandListRequest) String() string {
    method ProtoMessage (line 2080) | func (*BrandListRequest) ProtoMessage() {}
    method ProtoReflect (line 2082) | func (x *BrandListRequest) ProtoReflect() protoreflect.Message {
    method Descriptor (line 2095) | func (*BrandListRequest) Descriptor() ([]byte, []int) {
    method GetPages (line 2099) | func (x *BrandListRequest) GetPages() int32 {
    method GetPagePerNums (line 2106) | func (x *BrandListRequest) GetPagePerNums() int32 {
  type BrandRequest (line 2113) | type BrandRequest struct
    method Reset (line 2126) | func (x *BrandRequest) Reset() {
    method String (line 2135) | func (x *BrandRequest) String() string {
    method ProtoMessage (line 2139) | func (*BrandRequest) ProtoMessage() {}
    method ProtoReflect (line 2141) | func (x *BrandRequest) ProtoReflect() protoreflect.Message {
    method Descriptor (line 2154) | func (*BrandRequest) Descriptor() ([]byte, []int) {
    method GetId (line 2158) | func (x *BrandRequest) GetId() int32 {
    method GetName (line 2165) | func (x *BrandRequest) GetName() string {
    method GetLogo (line 2172) | func (x *BrandRequest) GetLogo() string {
    method GetDesc (line 2179) | func (x *BrandRequest) GetDesc() string {
    method GetIsTab (line 2186) | func (x *BrandRequest) GetIsTab() bool {
    method GetSort (line 2193) | func (x *BrandRequest) GetSort() int32 {
  type BrandInfoResponse (line 2200) | type BrandInfoResponse struct
    method Reset (line 2213) | func (x *BrandInfoResponse) Reset() {
    method String (line 2222) | func (x *BrandInfoResponse) String() string {
    method ProtoMessage (line 2226) | func (*BrandInfoResponse) ProtoMessage() {}
    method ProtoReflect (line 2228) | func (x *BrandInfoResponse) ProtoReflect() protoreflect.Message {
    method Descriptor (line 2241) | func (*BrandInfoResponse) Descriptor() ([]byte, []int) {
    method GetId (line 2245) | func (x *BrandInfoResponse) GetId() int32 {
    method GetName (line 2252) | func (x *BrandInfoResponse) GetName() string {
    method GetLogo (line 2259) | func (x *BrandInfoResponse) GetLogo() string {
    method GetDesc (line 2266) | func (x *BrandInfoResponse) GetDesc() string {
    method GetIsTab (line 2273) | func (x *BrandInfoResponse) GetIsTab() bool {
    method GetSort (line 2280) | func (x *BrandInfoResponse) GetSort() int32 {
  type BrandListResponse (line 2287) | type BrandListResponse struct
    method Reset (line 2296) | func (x *BrandListResponse) Reset() {
    method String (line 2305) | func (x *BrandListResponse) String() string {
    method ProtoMessage (line 2309) | func (*BrandListResponse) ProtoMessage() {}
    method ProtoReflect (line 2311) | func (x *BrandListResponse) ProtoReflect() protoreflect.Message {
    method Descriptor (line 2324) | func (*BrandListResponse) Descriptor() ([]byte, []int) {
    method GetTotal (line 2328) | func (x *BrandListResponse) GetTotal() int32 {
    method GetData (line 2335) | func (x *BrandListResponse) GetData() []*BrandInfoResponse {
  type CreateGoodsRequestGoodsSku (line 2344) | type CreateGoodsRequestGoodsSku struct
    method Reset (line 2364) | func (x *CreateGoodsRequestGoodsSku) Reset() {
    method String (line 2373) | func (x *CreateGoodsRequestGoodsSku) String() string {
    method ProtoMessage (line 2377) | func (*CreateGoodsRequestGoodsSku) ProtoMessage() {}
    method ProtoReflect (line 2379) | func (x *CreateGoodsRequestGoodsSku) ProtoReflect() protoreflect.Messa...
    method Descriptor (line 2392) | func (*CreateGoodsRequestGoodsSku) Descriptor() ([]byte, []int) {
    method GetId (line 2396) | func (x *CreateGoodsRequestGoodsSku) GetId() int64 {
    method GetGoodsId (line 2403) | func (x *CreateGoodsRequestGoodsSku) GetGoodsId() int64 {
    method GetSkuName (line 2410) | func (x *CreateGoodsRequestGoodsSku) GetSkuName() string {
    method GetCode (line 2417) | func (x *CreateGoodsRequestGoodsSku) GetCode() string {
    method GetBarCode (line 2424) | func (x *CreateGoodsRequestGoodsSku) GetBarCode() string {
    method GetPrice (line 2431) | func (x *CreateGoodsRequestGoodsSku) GetPrice() int64 {
    method GetPromotionPrice (line 2438) | func (x *CreateGoodsRequestGoodsSku) GetPromotionPrice() int64 {
    method GetPoints (line 2445) | func (x *CreateGoodsRequestGoodsSku) GetPoints() int64 {
    method GetImage (line 2452) | func (x *CreateGoodsRequestGoodsSku) GetImage() string {
    method GetSort (line 2459) | func (x *CreateGoodsRequestGoodsSku) GetSort() int32 {
    method GetInventory (line 2466) | func (x *CreateGoodsRequestGoodsSku) GetInventory() int64 {
    method GetSpecificationInfo (line 2473) | func (x *CreateGoodsRequestGoodsSku) GetSpecificationInfo() []*CreateG...
    method GetGroupAttrInfo (line 2480) | func (x *CreateGoodsRequestGoodsSku) GetGroupAttrInfo() []*CreateGoods...
  type CreateGoodsRequestGoodsSkuSpecification (line 2488) | type CreateGoodsRequestGoodsSkuSpecification struct
    method Reset (line 2497) | func (x *CreateGoodsRequestGoodsSkuSpecification) Reset() {
    method String (line 2506) | func (x *CreateGoodsRequestGoodsSkuSpecification) String() string {
    method ProtoMessage (line 2510) | func (*CreateGoodsRequestGoodsSkuSpecification) ProtoMessage() {}
    method ProtoReflect (line 2512) | func (x *CreateGoodsRequestGoodsSkuSpecification) ProtoReflect() proto...
    method Descriptor (line 2525) | func (*CreateGoodsRequestGoodsSkuSpecification) Descriptor() ([]byte, ...
    method GetSId (line 2529) | func (x *CreateGoodsRequestGoodsSkuSpecification) GetSId() int64 {
    method GetVId (line 2536) | func (x *CreateGoodsRequestGoodsSkuSpecification) GetVId() int64 {
  type CreateGoodsRequestGoodsSkuGroupAttr (line 2544) | type CreateGoodsRequestGoodsSkuGroupAttr struct
    method Reset (line 2554) | func (x *CreateGoodsRequestGoodsSkuGroupAttr) Reset() {
    method String (line 2563) | func (x *CreateGoodsRequestGoodsSkuGroupAttr) String() string {
    method ProtoMessage (line 2567) | func (*CreateGoodsRequestGoodsSkuGroupAttr) ProtoMessage() {}
    method ProtoReflect (line 2569) | func (x *CreateGoodsRequestGoodsSkuGroupAttr) ProtoReflect() protorefl...
    method Descriptor (line 2582) | func (*CreateGoodsRequestGoodsSkuGroupAttr) Descriptor() ([]byte, []in...
    method GetGroupId (line 2586) | func (x *CreateGoodsRequestGoodsSkuGroupAttr) GetGroupId() int64 {
    method GetGroupName (line 2593) | func (x *CreateGoodsRequestGoodsSkuGroupAttr) GetGroupName() string {
    method GetAttrInfo (line 2600) | func (x *CreateGoodsRequestGoodsSkuGroupAttr) GetAttrInfo() []*CreateG...
  type CreateGoodsRequestGoodsSkuGroupAttrAttr (line 2607) | type CreateGoodsRequestGoodsSkuGroupAttrAttr struct
    method Reset (line 2618) | func (x *CreateGoodsRequestGoodsSkuGroupAttrAttr) Reset() {
    method String (line 2627) | func (x *CreateGoodsRequestGoodsSkuGroupAttrAttr) String() string {
    method ProtoMessage (line 2631) | func (*CreateGoodsRequestGoodsSkuGroupAttrAttr) ProtoMessage() {}
    method ProtoReflect (line 2633) | func (x *CreateGoodsRequestGoodsSkuGroupAttrAttr) ProtoReflect() proto...
    method Descriptor (line 2646) | func (*CreateGoodsRequestGoodsSkuGroupAttrAttr) Descriptor() ([]byte, ...
    method GetAttrId (line 2650) | func (x *CreateGoodsRequestGoodsSkuGroupAttrAttr) GetAttrId() int64 {
    method GetAttrName (line 2657) | func (x *CreateGoodsRequestGoodsSkuGroupAttrAttr) GetAttrName() string {
    method GetAttrValueId (line 2664) | func (x *CreateGoodsRequestGoodsSkuGroupAttrAttr) GetAttrValueId() int...
    method GetAttrValueName (line 2671) | func (x *CreateGoodsRequestGoodsSkuGroupAttrAttr) GetAttrValueName() s...
  function file_api_goods_v1_goods_proto_rawDescGZIP (line 3118) | func file_api_goods_v1_goods_proto_rawDescGZIP() []byte {
  function init (line 3212) | func init() { file_api_goods_v1_goods_proto_init() }
  function file_api_goods_v1_goods_proto_init (line 3213) | func file_api_goods_v1_goods_proto_init() {

FILE: service/goods/api/goods/v1/goods.pb.validate.go
  method Validate (line 41) | func (m *AttrValueRequest) Validate() error {
  method ValidateAll (line 49) | func (m *AttrValueRequest) ValidateAll() error {
  method validate (line 53) | func (m *AttrValueRequest) validate(all bool) error {
  type AttrValueRequestMultiError (line 96) | type AttrValueRequestMultiError
    method Error (line 99) | func (m AttrValueRequestMultiError) Error() string {
    method AllErrors (line 108) | func (m AttrValueRequestMultiError) AllErrors() []error { return m }
  type AttrValueRequestValidationError (line 112) | type AttrValueRequestValidationError struct
    method Field (line 120) | func (e AttrValueRequestValidationError) Field() string { return e.fie...
    method Reason (line 123) | func (e AttrValueRequestValidationError) Reason() string { return e.re...
    method Cause (line 126) | func (e AttrValueRequestValidationError) Cause() error { return e.cause }
    method Key (line 129) | func (e AttrValueRequestValidationError) Key() bool { return e.key }
    method ErrorName (line 132) | func (e AttrValueRequestValidationError) ErrorName() string { return "...
    method Error (line 135) | func (e AttrValueRequestValidationError) Error() string {
  method Validate (line 167) | func (m *AttrRequest) Validate() error {
  method ValidateAll (line 175) | func (m *AttrRequest) ValidateAll() error {
  method validate (line 179) | func (m *AttrRequest) validate(all bool) error {
  type AttrRequestMultiError (line 279) | type AttrRequestMultiError
    method Error (line 282) | func (m AttrRequestMultiError) Error() string {
    method AllErrors (line 291) | func (m AttrRequestMultiError) AllErrors() []error { return m }
  type AttrRequestValidationError (line 295) | type AttrRequestValidationError struct
    method Field (line 303) | func (e AttrRequestValidationError) Field() string { return e.field }
    method Reason (line 306) | func (e AttrRequestValidationError) Reason() string { return e.reason }
    method Cause (line 309) | func (e AttrRequestValidationError) Cause() error { return e.cause }
    method Key (line 312) | func (e AttrRequestValidationError) Key() bool { return e.key }
    method ErrorName (line 315) | func (e AttrRequestValidationError) ErrorName() string { return "AttrR...
    method Error (line 318) | func (e AttrRequestValidationError) Error() string {
  method Validate (line 350) | func (m *AttrValueResponse) Validate() error {
  method ValidateAll (line 358) | func (m *AttrValueResponse) ValidateAll() error {
  method validate (line 362) | func (m *AttrValueResponse) validate(all bool) error {
  type AttrValueResponseMultiError (line 387) | type AttrValueResponseMultiError
    method Error (line 390) | func (m AttrValueResponseMultiError) Error() string {
    method AllErrors (line 399) | func (m AttrValueResponseMultiError) AllErrors() []error { return m }
  type AttrValueResponseValidationError (line 403) | type AttrValueResponseValidationError struct
    method Field (line 411) | func (e AttrValueResponseValidationError) Field() string { return e.fi...
    method Reason (line 414) | func (e AttrValueResponseValidationError) Reason() string { return e.r...
    method Cause (line 417) | func (e AttrValueResponseValidationError) Cause() error { return e.cau...
    method Key (line 420) | func (e AttrValueResponseValidationError) Key() bool { return e.key }
    method ErrorName (line 423) | func (e AttrValueResponseValidationError) ErrorName() string {
    method Error (line 428) | func (e AttrValueResponseValidationError) Error() string {
  method Validate (line 460) | func (m *AttrResponse) Validate() error {
  method ValidateAll (line 468) | func (m *AttrResponse) ValidateAll() error {
  method validate (line 472) | func (m *AttrResponse) validate(all bool) error {
  type AttrResponseMultiError (line 536) | type AttrResponseMultiError
    method Error (line 539) | func (m AttrResponseMultiError) Error() string {
    method AllErrors (line 548) | func (m AttrResponseMultiError) AllErrors() []error { return m }
  type AttrResponseValidationError (line 552) | type AttrResponseValidationError struct
    method Field (line 560) | func (e AttrResponseValidationError) Field() string { return e.field }
    method Reason (line 563) | func (e AttrResponseValidationError) Reason() string { return e.reason }
    method Cause (line 566) | func (e AttrResponseValidationError) Cause() error { return e.cause }
    method Key (line 569) | func (e AttrResponseValidationError) Key() bool { return e.key }
    method ErrorName (line 572) | func (e AttrResponseValidationError) ErrorName() string { return "Attr...
    method Error (line 575) | func (e AttrResponseValidationError) Error() string {
  method Validate (line 607) | func (m *AttrGroupRequest) Validate() error {
  method ValidateAll (line 615) | func (m *AttrGroupRequest) ValidateAll() error {
  method validate (line 619) | func (m *AttrGroupRequest) validate(all bool) error {
  type AttrGroupRequestMultiError (line 675) | type AttrGroupRequestMultiError
    method Error (line 678) | func (m AttrGroupRequestMultiError) Error() string {
    method AllErrors (line 687) | func (m AttrGroupRequestMultiError) AllErrors() []error { return m }
  type AttrGroupRequestValidationError (line 691) | type AttrGroupRequestValidationError struct
    method Field (line 699) | func (e AttrGroupRequestValidationError) Field() string { return e.fie...
    method Reason (line 702) | func (e AttrGroupRequestValidationError) Reason() string { return e.re...
    method Cause (line 705) | func (e AttrGroupRequestValidationError) Cause() error { return e.cause }
    method Key (line 708) | func (e AttrGroupRequestValidationError) Key() bool { return e.key }
    method ErrorName (line 711) | func (e AttrGroupRequestValidationError) ErrorName() string { return "...
    method Error (line 714) | func (e AttrGroupRequestValidationError) Error() string {
  method Validate (line 746) | func (m *AttrGroupResponse) Validate() error {
  method ValidateAll (line 754) | func (m *AttrGroupResponse) ValidateAll() error {
  method validate (line 758) | func (m *AttrGroupResponse) validate(all bool) error {
  type AttrGroupResponseMultiError (line 787) | type AttrGroupResponseMultiError
    method Error (line 790) | func (m AttrGroupResponseMultiError) Error() string {
    method AllErrors (line 799) | func (m AttrGroupResponseMultiError) AllErrors() []error { return m }
  type AttrGroupResponseValidationError (line 803) | type AttrGroupResponseValidationError struct
    method Field (line 811) | func (e AttrGroupResponseValidationError) Field() string { return e.fi...
    method Reason (line 814) | func (e AttrGroupResponseValidationError) Reason() string { return e.r...
    method Cause (line 817) | func (e AttrGroupResponseValidationError) Cause() error { return e.cau...
    method Key (line 820) | func (e AttrGroupResponseValidationError) Key() bool { return e.key }
    method ErrorName (line 823) | func (e AttrGroupResponseValidationError) ErrorName() string {
    method Error (line 828) | func (e AttrGroupResponseValidationError) Error() string {
  method Validate (line 860) | func (m *SpecificationValue) Validate() error {
  method ValidateAll (line 868) | func (m *SpecificationValue) ValidateAll() error {
  method validate (line 872) | func (m *SpecificationValue) validate(all bool) error {
  type SpecificationValueMultiError (line 915) | type SpecificationValueMultiError
    method Error (line 918) | func (m SpecificationValueMultiError) Error() string {
    method AllErrors (line 927) | func (m SpecificationValueMultiError) AllErrors() []error { return m }
  type SpecificationValueValidationError (line 931) | type SpecificationValueValidationError struct
    method Field (line 939) | func (e SpecificationValueValidationError) Field() string { return e.f...
    method Reason (line 942) | func (e SpecificationValueValidationError) Reason() string { return e....
    method Cause (line 945) | func (e SpecificationValueValidationError) Cause() error { return e.ca...
    method Key (line 948) | func (e SpecificationValueValidationError) Key() bool { return e.key }
    method ErrorName (line 951) | func (e SpecificationValueValidationError) ErrorName() string {
    method Error (line 956) | func (e SpecificationValueValidationError) Error() string {
  method Validate (line 988) | func (m *SpecificationValueResponse) Validate() error {
  method ValidateAll (line 996) | func (m *SpecificationValueResponse) ValidateAll() error {
  method validate (line 1000) | func (m *SpecificationValueResponse) validate(all bool) error {
  type SpecificationValueResponseMultiError (line 1025) | type SpecificationValueResponseMultiError
    method Error (line 1028) | func (m SpecificationValueResponseMultiError) Error() string {
    method AllErrors (line 1037) | func (m SpecificationValueResponseMultiError) AllErrors() []error { re...
  type SpecificationValueResponseValidationError (line 1041) | type SpecificationValueResponseValidationError struct
    method Field (line 1049) | func (e SpecificationValueResponseValidationError) Field() string { re...
    method Reason (line 1052) | func (e SpecificationValueResponseValidationError) Reason() string { r...
    method Cause (line 1055) | func (e SpecificationValueResponseValidationError) Cause() error { ret...
    method Key (line 1058) | func (e SpecificationValueResponseValidationError) Key() bool { return...
    method ErrorName (line 1061) | func (e SpecificationValueResponseValidationError) ErrorName() string {
    method Error (line 1066) | func (e SpecificationValueResponseValidationError) Error() string {
  method Validate (line 1098) | func (m *SpecificationRequest) Validate() error {
  method ValidateAll (line 1106) | func (m *SpecificationRequest) ValidateAll() error {
  method validate (line 1110) | func (m *SpecificationRequest) validate(all bool) error {
  type SpecificationRequestMultiError (line 1202) | type SpecificationRequestMultiError
    method Error (line 1205) | func (m SpecificationRequestMultiError) Error() string {
    method AllErrors (line 1214) | func (m SpecificationRequestMultiError) AllErrors() []error { return m }
  type SpecificationRequestValidationError (line 1218) | type SpecificationRequestValidationError struct
    method Field (line 1226) | func (e SpecificationRequestValidationError) Field() string { return e...
    method Reason (line 1229) | func (e SpecificationRequestValidationError) Reason() string { return ...
    method Cause (line 1232) | func (e SpecificationRequestValidationError) Cause() error { return e....
    method Key (line 1235) | func (e SpecificationRequestValidationError) Key() bool { return e.key }
    method ErrorName (line 1238) | func (e SpecificationRequestValidationError) ErrorName() string {
    method Error (line 1243) | func (e SpecificationRequestValidationError) Error() string {
  method Validate (line 1275) | func (m *SpecificationResponse) Validate() error {
  method ValidateAll (line 1283) | func (m *SpecificationResponse) ValidateAll() error {
  method validate (line 1287) | func (m *SpecificationResponse) validate(all bool) error {
  type SpecificationResponseMultiError (line 1306) | type SpecificationResponseMultiError
    method Error (line 1309) | func (m SpecificationResponseMultiError) Error() string {
    method AllErrors (line 1318) | func (m SpecificationResponseMultiError) AllErrors() []error { return m }
  type SpecificationResponseValidationError (line 1322) | type SpecificationResponseValidationError struct
    method Field (line 1330) | func (e SpecificationResponseValidationError) Field() string { return ...
    method Reason (line 1333) | func (e SpecificationResponseValidationError) Reason() string { return...
    method Cause (line 1336) | func (e SpecificationResponseValidationError) Cause() error { return e...
    method Key (line 1339) | func (e SpecificationResponseValidationError) Key() bool { return e.key }
    method ErrorName (line 1342) | func (e SpecificationResponseValidationError) ErrorName() string {
    method Error (line 1347) | func (e SpecificationResponseValidationError) Error() string {
  method Validate (line 1379) | func (m *GoodsTypeRequest) Validate() error {
  method ValidateAll (line 1387) | func (m *GoodsTypeRequest) ValidateAll() error {
  method validate (line 1391) | func (m *GoodsTypeRequest) validate(all bool) error {
  type GoodsTypeRequestMultiError (line 1451) | type GoodsTypeRequestMultiError
    method Error (line 1454) | func (m GoodsTypeRequestMultiError) Error() string {
    method AllErrors (line 1463) | func (m GoodsTypeRequestMultiError) AllErrors() []error { return m }
  type GoodsTypeRequestValidationError (line 1467) | type GoodsTypeRequestValidationError struct
    method Field (line 1475) | func (e GoodsTypeRequestValidationError) Field() string { return e.fie...
    method Reason (line 1478) | func (e GoodsTypeRequestValidationError) Reason() string { return e.re...
    method Cause (line 1481) | func (e GoodsTypeRequestValidationError) Cause() error { return e.cause }
    method Key (line 1484) | func (e GoodsTypeRequestValidationError) Key() bool { return e.key }
    method ErrorName (line 1487) | func (e GoodsTypeRequestValidationError) ErrorName() string { return "...
    method Error (line 1490) | func (e GoodsTypeRequestValidationError) Error() string {
  method Validate (line 1522) | func (m *GoodsTypeResponse) Validate() error {
  method ValidateAll (line 1530) | func (m *GoodsTypeResponse) ValidateAll() error {
  method validate (line 1534) | func (m *GoodsTypeResponse) validate(all bool) error {
  type GoodsTypeResponseMultiError (line 1553) | type GoodsTypeResponseMultiError
    method Error (line 1556) | func (m GoodsTypeResponseMultiError) Error() string {
    method AllErrors (line 1565) | func (m GoodsTypeResponseMultiError) AllErrors() []error { return m }
  type GoodsTypeResponseValidationError (line 1569) | type GoodsTypeResponseValidationError struct
    method Field (line 1577) | func (e GoodsTypeResponseValidationError) Field() string { return e.fi...
    method Reason (line 1580) | func (e GoodsTypeResponseValidationError) Reason() string { return e.r...
    method Cause (line 1583) | func (e GoodsTypeResponseValidationError) Cause() error { return e.cau...
    method Key (line 1586) | func (e GoodsTypeResponseValidationError) Key() bool { return e.key }
    method ErrorName (line 1589) | func (e GoodsTypeResponseValidationError) ErrorName() string {
    method Error (line 1594) | func (e GoodsTypeResponseValidationError) Error() string {
  method Validate (line 1626) | func (m *CreateGoodsRequest) Validate() error {
  method ValidateAll (line 1634) | func (m *CreateGoodsRequest) ValidateAll() error {
  method validate (line 1638) | func (m *CreateGoodsRequest) validate(all bool) error {
  type CreateGoodsRequestMultiError (line 1752) | type CreateGoodsRequestMultiError
    method Error (line 1755) | func (m CreateGoodsRequestMultiError) Error() string {
    method AllErrors (line 1764) | func (m CreateGoodsRequestMultiError) AllErrors() []error { return m }
  type CreateGoodsRequestValidationError (line 1768) | type CreateGoodsRequestValidationError struct
    method Field (line 1776) | func (e CreateGoodsRequestValidationError) Field() string { return e.f...
    method Reason (line 1779) | func (e CreateGoodsRequestValidationError) Reason() string { return e....
    method Cause (line 1782) | func (e CreateGoodsRequestValidationError) Cause() error { return e.ca...
    method Key (line 1785) | func (e CreateGoodsRequestValidationError) Key() bool { return e.key }
    method ErrorName (line 1788) | func (e CreateGoodsRequestValidationError) ErrorName() string {
    method Error (line 1793) | func (e CreateGoodsRequestValidationError) Error() string {
  method Validate (line 1825) | func (m *CreateGoodsResponse) Validate() error {
  method ValidateAll (line 1833) | func (m *CreateGoodsResponse) ValidateAll() error {
  method validate (line 1837) | func (m *CreateGoodsResponse) validate(all bool) error {
  type CreateGoodsResponseMultiError (line 1856) | type CreateGoodsResponseMultiError
    method Error (line 1859) | func (m CreateGoodsResponseMultiError) Error() string {
    method AllErrors (line 1868) | func (m CreateGoodsResponseMultiError) AllErrors() []error { return m }
  type CreateGoodsResponseValidationError (line 1872) | type CreateGoodsResponseValidationError struct
    method Field (line 1880) | func (e CreateGoodsResponseValidationError) Field() string { return e....
    method Reason (line 1883) | func (e CreateGoodsResponseValidationError) Reason() string { return e...
    method Cause (line 1886) | func (e CreateGoodsResponseValidationError) Cause() error { return e.c...
    method Key (line 1889) | func (e CreateGoodsResponseValidationError) Key() bool { return e.key }
    method ErrorName (line 1892) | func (e CreateGoodsResponseValidationError) ErrorName() string {
    method Error (line 1897) | func (e CreateGoodsResponseValidationError) Error() string {
  method Validate (line 1929) | func (m *GoodsInfoResponse) Validate() error {
  method ValidateAll (line 1937) | func (m *GoodsInfoResponse) ValidateAll() error {
  method validate (line 1941) | func (m *GoodsInfoResponse) validate(all bool) error {
  type GoodsInfoResponseMultiError (line 1990) | type GoodsInfoResponseMultiError
    method Error (line 1993) | func (m GoodsInfoResponseMultiError) Error() string {
    method AllErrors (line 2002) | func (m GoodsInfoResponseMultiError) AllErrors() []error { return m }
  type GoodsInfoResponseValidationError (line 2006) | type GoodsInfoResponseValidationError struct
    method Field (line 2014) | func (e GoodsInfoResponseValidationError) Field() string { return e.fi...
    method Reason (line 2017) | func (e GoodsInfoResponseValidationError) Reason() string { return e.r...
    method Cause (line 2020) | func (e GoodsInfoResponseValidationError) Cause() error { return e.cau...
    method Key (line 2023) | func (e GoodsInfoResponseValidationError) Key() bool { return e.key }
    method ErrorName (line 2026) | func (e GoodsInfoResponseValidationError) ErrorName() string {
    method Error (line 2031) | func (e GoodsInfoResponseValidationError) Error() string {
  method Validate (line 2063) | func (m *GoodsListResponse) Validate() error {
  method ValidateAll (line 2071) | func (m *GoodsListResponse) ValidateAll() error {
  method validate (line 2075) | func (m *GoodsListResponse) validate(all bool) error {
  type GoodsListResponseMultiError (line 2128) | type GoodsListResponseMultiError
    method Error (line 2131) | func (m GoodsListResponseMultiError) Error() string {
    method AllErrors (line 2140) | func (m GoodsListResponseMultiError) AllErrors() []error { return m }
  type GoodsListResponseValidationError (line 2144) | type GoodsListResponseValidationError struct
    method Field (line 2152) | func (e GoodsListResponseValidationError) Field() string { return e.fi...
    method Reason (line 2155) | func (e GoodsListResponseValidationError) Reason() string { return e.r...
    method Cause (line 2158) | func (e GoodsListResponseValidationError) Cause() error { return e.cau...
    method Key (line 2161) | func (e GoodsListResponseValidationError) Key() bool { return e.key }
    method ErrorName (line 2164) | func (e GoodsListResponseValidationError) ErrorName() string {
    method Error (line 2169) | func (e GoodsListResponseValidationError) Error() string {
  method Validate (line 2201) | func (m *GoodsFilterRequest) Validate() error {
  method ValidateAll (line 2209) | func (m *GoodsFilterRequest) ValidateAll() error {
  method validate (line 2213) | func (m *GoodsFilterRequest) validate(all bool) error {
  type GoodsFilterRequestMultiError (line 2258) | type GoodsFilterRequestMultiError
    method Error (line 2261) | func (m GoodsFilterRequestMultiError) Error() string {
    method AllErrors (line 2270) | func (m GoodsFilterRequestMultiError) AllErrors() []error { return m }
  type GoodsFilterRequestValidationError (line 2274) | type GoodsFilterRequestValidationError struct
    method Field (line 2282) | func (e GoodsFilterRequestValidationError) Field() string { return e.f...
    method Reason (line 2285) | func (e GoodsFilterRequestValidationError) Reason() string { return e....
    method Cause (line 2288) | func (e GoodsFilterRequestValidationError) Cause() error { return e.ca...
    method Key (line 2291) | func (e GoodsFilterRequestValidationError) Key() bool { return e.key }
    method ErrorName (line 2294) | func (e GoodsFilterRequestValidationError) ErrorName() string {
    method Error (line 2299) | func (e GoodsFilterRequestValidationError) Error() string {
  method Validate (line 2331) | func (m *CategoryInfoResponse) Validate() error {
  method ValidateAll (line 2339) | func (m *CategoryInfoResponse) ValidateAll() error {
  method validate (line 2343) | func (m *CategoryInfoResponse) validate(all bool) error {
  type CategoryInfoResponseMultiError (line 2372) | type CategoryInfoResponseMultiError
    method Error (line 2375) | func (m CategoryInfoResponseMultiError) Error() string {
    method AllErrors (line 2384) | func (m CategoryInfoResponseMultiError) AllErrors() []error { return m }
  type CategoryInfoResponseValidationError (line 2388) | type CategoryInfoResponseValidationError struct
    method Field (line 2396) | func (e CategoryInfoResponseValidationError) Field() string { return e...
    method Reason (line 2399) | func (e CategoryInfoResponseValidationError) Reason() string { return ...
    method Cause (line 2402) | func (e CategoryInfoResponseValidationError) Cause() error { return e....
    method Key (line 2405) | func (e CategoryInfoResponseValidationError) Key() bool { return e.key }
    method ErrorName (line 2408) | func (e CategoryInfoResponseValidationError) ErrorName() string {
    method Error (line 2413) | func (e CategoryInfoResponseValidationError) Error() string {
  method Validate (line 2445) | func (m *CategoryListResponse) Validate() error {
  method ValidateAll (line 2453) | func (m *CategoryListResponse) ValidateAll() error {
  method validate (line 2457) | func (m *CategoryListResponse) validate(all bool) error {
  type CategoryListResponseMultiError (line 2476) | type CategoryListResponseMultiError
    method Error (line 2479) | func (m CategoryListResponseMultiError) Error() string {
    method AllErrors (line 2488) | func (m CategoryListResponseMultiError) AllErrors() []error { return m }
  type CategoryListResponseValidationError (line 2492) | type CategoryListResponseValidationError struct
    method Field (line 2500) | func (e CategoryListResponseValidationError) Field() string { return e...
    method Reason (line 2503) | func (e CategoryListResponseValidationError) Reason() string { return ...
    method Cause (line 2506) | func (e CategoryListResponseValidationError) Cause() error { return e....
    method Key (line 2509) | func (e CategoryListResponseValidationError) Key() bool { return e.key }
    method ErrorName (line 2512) | func (e CategoryListResponseValidationError) ErrorName() string {
    method Error (line 2517) | func (e CategoryListResponseValidationError) Error() string {
  method Validate (line 2549) | func (m *CategoryListRequest) Validate() error {
  method ValidateAll (line 2557) | func (m *CategoryListRequest) ValidateAll() error {
  method validate (line 2561) | func (m *CategoryListRequest) validate(all bool) error {
  type CategoryListRequestMultiError (line 2582) | type CategoryListRequestMultiError
    method Error (line 2585) | func (m CategoryListRequestMultiError) Error() string {
    method AllErrors (line 2594) | func (m CategoryListRequestMultiError) AllErrors() []error { return m }
  type CategoryListRequestValidationError (line 2598) | type CategoryListRequestValidationError struct
    method Field (line 2606) | func (e CategoryListRequestValidationError) Field() string { return e....
    method Reason (line 2609) | func (e CategoryListRequestValidationError) Reason() string { return e...
    method Cause (line 2612) | func (e CategoryListRequestValidationError) Cause() error { return e.c...
    method Key (line 2615) | func (e CategoryListRequestValidationError) Key() bool { return e.key }
    method ErrorName (line 2618) | func (e CategoryListRequestValidationError) ErrorName() string {
    method Error (line 2623) | func (e CategoryListRequestValidationError) Error() string {
  method Validate (line 2655) | func (m *SubCategoryListResponse) Validate() error {
  method ValidateAll (line 2663) | func (m *SubCategoryListResponse) ValidateAll() error {
  method validate (line 2667) | func (m *SubCategoryListResponse) validate(all bool) error {
  type SubCategoryListResponseMultiError (line 2747) | type SubCategoryListResponseMultiError
    method Error (line 2750) | func (m SubCategoryListResponseMultiError) Error() string {
    method AllErrors (line 2759) | func (m SubCategoryListResponseMultiError) AllErrors() []error { retur...
  type SubCategoryListResponseValidationError (line 2763) | type SubCategoryListResponseValidationError struct
    method Field (line 2771) | func (e SubCategoryListResponseValidationError) Field() string { retur...
    method Reason (line 2774) | func (e SubCategoryListResponseValidationError) Reason() string { retu...
    method Cause (line 2777) | func (e SubCategoryListResponseValidationError) Cause() error { return...
    method Key (line 2780) | func (e SubCategoryListResponseValidationError) Key() bool { return e....
    method ErrorName (line 2783) | func (e SubCategoryListResponseValidationError) ErrorName() string {
    method Error (line 2788) | func (e SubCategoryListResponseValidationError) Error() string {
  method Validate (line 2820) | func (m *CategoryInfoRequest) Validate() error {
  method ValidateAll (line 2828) | func (m *CategoryInfoRequest) ValidateAll() error {
  method validate (line 2832) | func (m *CategoryInfoRequest) validate(all bool) error {
  type CategoryInfoRequestMultiError (line 2861) | type CategoryInfoRequestMultiError
    method Error (line 2864) | func (m CategoryInfoRequestMultiError) Error() string {
    method AllErrors (line 2873) | func (m CategoryInfoRequestMultiError) AllErrors() []error { return m }
  type CategoryInfoRequestValidationError (line 2877) | type CategoryInfoRequestValidationError struct
    method Field (line 2885) | func (e CategoryInfoRequestValidationError) Field() string { return e....
    method Reason (line 2888) | func (e CategoryInfoRequestValidationError) Reason() string { return e...
    method Cause (line 2891) | func (e CategoryInfoRequestValidationError) Cause() error { return e.c...
    method Key (line 2894) | func (e CategoryInfoRequestValidationError) Key() bool { return e.key }
    method ErrorName (line 2897) | func (e CategoryInfoRequestValidationError) ErrorName() string {
    method Error (line 2902) | func (e CategoryInfoRequestValidationError) Error() string {
  method Validate (line 2934) | func (m *BatchCategoryInfoRequest) Validate() error {
  method ValidateAll (line 2942) | func (m *BatchCategoryInfoRequest) ValidateAll() error {
  method validate (line 2946) | func (m *BatchCategoryInfoRequest) validate(all bool) error {
  type BatchCategoryInfoRequestMultiError (line 2967) | type BatchCategoryInfoRequestMultiError
    method Error (line 2970) | func (m BatchCategoryInfoRequestMultiError) Error() string {
    method AllErrors (line 2979) | func (m BatchCategoryInfoRequestMultiError) AllErrors() []error { retu...
  type BatchCategoryInfoRequestValidationError (line 2983) | type BatchCategoryInfoRequestValidationError struct
    method Field (line 2991) | func (e BatchCategoryInfoRequestValidationError) Field() string { retu...
    method Reason (line 2994) | func (e BatchCategoryInfoRequestValidationError) Reason() string { ret...
    method Cause (line 2997) | func (e BatchCategoryInfoRequestValidationError) Cause() error { retur...
    method Key (line 3000) | func (e BatchCategoryInfoRequestValidationError) Key() bool { return e...
    method ErrorName (line 3003) | func (e BatchCategoryInfoRequestValidationError) ErrorName() string {
    method Error (line 3008) | func (e BatchCategoryInfoRequestValidationError) Error() string {
  method Validate (line 3040) | func (m *DeleteCategoryRequest) Validate() error {
  method ValidateAll (line 3048) | func (m *DeleteCategoryRequest) ValidateAll() error {
  method validate (line 3052) | func (m *DeleteCategoryRequest) validate(all bool) error {
  type DeleteCategoryRequestMultiError (line 3071) | type DeleteCategoryRequestMultiError
    method Error (line 3074) | func (m DeleteCategoryRequestMultiError) Error() string {
    method AllErrors (line 3083) | func (m DeleteCategoryRequestMultiError) AllErrors() []error { return m }
  type DeleteCategoryRequestValidationError (line 3087) | type DeleteCategoryRequestValidationError struct
    method Field (line 3095) | func (e DeleteCategoryRequestValidationError) Field() string { return ...
    method Reason (line 3098) | func (e DeleteCategoryRequestValidationError) Reason() string { return...
    method Cause (line 3101) | func (e DeleteCategoryRequestValidationError) Cause() error { return e...
    method Key (line 3104) | func (e DeleteCategoryRequestValidationError) Key() bool { return e.key }
    method ErrorName (line 3107) | func (e DeleteCategoryRequestValidationError) ErrorName() string {
    method Error (line 3112) | func (e DeleteCategoryRequestValidationError) Error() string {
  method Validate (line 3144) | func (m *BrandListRequest) Validate() error {
  method ValidateAll (line 3152) | func (m *BrandListRequest) ValidateAll() error {
  method validate (line 3156) | func (m *BrandListRequest) validate(all bool) error {
  type BrandListRequestMultiError (line 3177) | type BrandListRequestMultiError
    method Error (line 3180) | func (m BrandListRequestMultiError) Error() string {
    method AllErrors (line 3189) | func (m BrandListRequestMultiError) AllErrors() []error { return m }
  type BrandListRequestValidationError (line 3193) | type BrandListRequestValidationError struct
    method Field (line 3201) | func (e BrandListRequestValidationError) Field() string { return e.fie...
    method Reason (line 3204) | func (e BrandListRequestValidationError) Reason() string { return e.re...
    method Cause (line 3207) | func (e BrandListRequestValidationError) Cause() error { return e.cause }
    method Key (line 3210) | func (e BrandListRequestValidationError) Key() bool { return e.key }
    method ErrorName (line 3213) | func (e BrandListRequestValidationError) ErrorName() string { return "...
    method Error (line 3216) | func (e BrandListRequestValidationError) Error() string {
  method Validate (line 3248) | func (m *BrandRequest) Validate() error {
  method ValidateAll (line 3256) | func (m *BrandRequest) ValidateAll() error {
  method validate (line 3260) | func (m *BrandRequest) validate(all bool) error {
  type BrandRequestMultiError (line 3288) | type BrandRequestMultiError
    method Error (line 3291) | func (m BrandRequestMultiError) Error() string {
    method AllErrors (line 3300) | func (m BrandRequestMultiError) AllErrors() []error { return m }
  type BrandRequestValidationError (line 3304) | type BrandRequestValidationError struct
    method Field (line 3312) | func (e BrandRequestValidationError) Field() string { return e.field }
    method Reason (line 3315) | func (e BrandRequestValidationError) Reason() string { return e.reason }
    method Cause (line 3318) | func (e BrandRequestValidationError) Cause() error { return e.cause }
    method Key (line 3321) | func (e BrandRequestValidationError) Key() bool { return e.key }
    method ErrorName (line 3324) | func (e BrandRequestValidationError) ErrorName() string { return "Bran...
    method Error (line 3327) | func (e BrandRequestValidationError) Error() string {
  method Validate (line 3359) | func (m *BrandInfoResponse) Validate() error {
  method ValidateAll (line 3367) | func (m *BrandInfoResponse) ValidateAll() error {
  method validate (line 3371) | func (m *BrandInfoResponse) validate(all bool) error {
  type BrandInfoResponseMultiError (line 3400) | type BrandInfoResponseMultiError
    method Error (line 3403) | func (m BrandInfoResponseMultiError) Error() string {
    method AllErrors (line 3412) | func (m BrandInfoResponseMultiError) AllErrors() []error { return m }
  type BrandInfoResponseValidationError (line 3416) | type BrandInfoResponseValidationError struct
    method Field (line 3424) | func (e BrandInfoResponseValidationError) Field() string { return e.fi...
    method Reason (line 3427) | func (e BrandInfoResponseValidationError) Reason() string { return e.r...
    method Cause (line 3430) | func (e BrandInfoResponseValidationError) Cause() error { return e.cau...
    method Key (line 3433) | func (e BrandInfoResponseValidationError) Key() bool { return e.key }
    method ErrorName (line 3436) | func (e BrandInfoResponseValidationError) ErrorName() string {
    method Error (line 3441) | func (e BrandInfoResponseValidationError) Error() string {
  method Validate (line 3473) | func (m *BrandListResponse) Validate() error {
  method ValidateAll (line 3481) | func (m *BrandListResponse) ValidateAll() error {
  method validate (line 3485) | func (m *BrandListResponse) validate(all bool) error {
  type BrandListResponseMultiError (line 3538) | type BrandListResponseMultiError
    method Error (line 3541) | func (m BrandListResponseMultiError) Error() string {
    method AllErrors (line 3550) | func (m BrandListResponseMultiError) AllErrors() []error { return m }
  type BrandListResponseValidationError (line 3554) | type BrandListResponseValidationError struct
    method Field (line 3562) | func (e BrandListResponseValidationError) Field() string { return e.fi...
    method Reason (line 3565) | func (e BrandListResponseValidationError) Reason() string { return e.r...
    method Cause (line 3568) | func (e BrandListResponseValidationError) Cause() error { return e.cau...
    method Key (line 3571) | func (e BrandListResponseValidationError) Key() bool { return e.key }
    method ErrorName (line 3574) | func (e BrandListResponseValidationError) ErrorName() string {
    method Error (line 3579) | func (e BrandListResponseValidationError) Error() string {
  method Validate (line 3611) | func (m *CreateGoodsRequestGoodsSku) Validate() error {
  method ValidateAll (line 3619) | func (m *CreateGoodsRequestGoodsSku) ValidateAll() error {
  method validate (line 3623) | func (m *CreateGoodsRequestGoodsSku) validate(all bool) error {
  type CreateGoodsRequestGoodsSkuMultiError (line 3757) | type CreateGoodsRequestGoodsSkuMultiError
    method Error (line 3760) | func (m CreateGoodsRequestGoodsSkuMultiError) Error() string {
    method AllErrors (line 3769) | func (m CreateGoodsRequestGoodsSkuMultiError) AllErrors() []error { re...
  type CreateGoodsRequestGoodsSkuValidationError (line 3773) | type CreateGoodsRequestGoodsSkuValidationError struct
    method Field (line 3781) | func (e CreateGoodsRequestGoodsSkuValidationError) Field() string { re...
    method Reason (line 3784) | func (e CreateGoodsRequestGoodsSkuValidationError) Reason() string { r...
    method Cause (line 3787) | func (e CreateGoodsRequestGoodsSkuValidationError) Cause() error { ret...
    method Key (line 3790) | func (e CreateGoodsRequestGoodsSkuValidationError) Key() bool { return...
    method ErrorName (line 3793) | func (e CreateGoodsRequestGoodsSkuValidationError) ErrorName() string {
    method Error (line 3798) | func (e CreateGoodsRequestGoodsSkuValidationError) Error() string {
  method Validate (line 3831) | func (m *CreateGoodsRequestGoodsSkuSpecification) Validate() error {
  method ValidateAll (line 3840) | func (m *CreateGoodsRequestGoodsSkuSpecification) ValidateAll() error {
  method validate (line 3844) | func (m *CreateGoodsRequestGoodsSkuSpecification) validate(all bool) err...
  type CreateGoodsRequestGoodsSkuSpecificationMultiError (line 3884) | type CreateGoodsRequestGoodsSkuSpecificationMultiError
    method Error (line 3887) | func (m CreateGoodsRequestGoodsSkuSpecificationMultiError) Error() str...
    method AllErrors (line 3896) | func (m CreateGoodsRequestGoodsSkuSpecificationMultiError) AllErrors()...
  type CreateGoodsRequestGoodsSkuSpecificationValidationError (line 3901) | type CreateGoodsRequestGoodsSkuSpecificationValidationError struct
    method Field (line 3909) | func (e CreateGoodsRequestGoodsSkuSpecificationValidationError) Field(...
    method Reason (line 3912) | func (e CreateGoodsRequestGoodsSkuSpecificationValidationError) Reason...
    method Cause (line 3915) | func (e CreateGoodsRequestGoodsSkuSpecificationValidationError) Cause(...
    method Key (line 3918) | func (e CreateGoodsRequestGoodsSkuSpecificationValidationError) Key() ...
    method ErrorName (line 3921) | func (e CreateGoodsRequestGoodsSkuSpecificationValidationError) ErrorN...
    method Error (line 3926) | func (e CreateGoodsRequestGoodsSkuSpecificationValidationError) Error(...
  method Validate (line 3959) | func (m *CreateGoodsRequestGoodsSkuGroupAttr) Validate() error {
  method ValidateAll (line 3967) | func (m *CreateGoodsRequestGoodsSkuGroupAttr) ValidateAll() error {
  method validate (line 3971) | func (m *CreateGoodsRequestGoodsSkuGroupAttr) validate(all bool) error {
  type CreateGoodsRequestGoodsSkuGroupAttrMultiError (line 4027) | type CreateGoodsRequestGoodsSkuGroupAttrMultiError
    method Error (line 4030) | func (m CreateGoodsRequestGoodsSkuGroupAttrMultiError) Error() string {
    method AllErrors (line 4039) | func (m CreateGoodsRequestGoodsSkuGroupAttrMultiError) AllErrors() []e...
  type CreateGoodsRequestGoodsSkuGroupAttrValidationError (line 4044) | type CreateGoodsRequestGoodsSkuGroupAttrValidationError struct
    method Field (line 4052) | func (e CreateGoodsRequestGoodsSkuGroupAttrValidationError) Field() st...
    method Reason (line 4055) | func (e CreateGoodsRequestGoodsSkuGroupAttrValidationError) Reason() s...
    method Cause (line 4058) | func (e CreateGoodsRequestGoodsSkuGroupAttrValidationError) Cause() er...
    method Key (line 4061) | func (e CreateGoodsRequestGoodsSkuGroupAttrValidationError) Key() bool...
    method ErrorName (line 4064) | func (e CreateGoodsRequestGoodsSkuGroupAttrValidationError) ErrorName(...
    method Error (line 4069) | func (e CreateGoodsRequestGoodsSkuGroupAttrValidationError) Error() st...
  method Validate (line 4102) | func (m *CreateGoodsRequestGoodsSkuGroupAttrAttr) Validate() error {
  method ValidateAll (line 4111) | func (m *CreateGoodsRequestGoodsSkuGroupAttrAttr) ValidateAll() error {
  method validate (line 4115) | func (m *CreateGoodsRequestGoodsSkuGroupAttrAttr) validate(all bool) err...
  type CreateGoodsRequestGoodsSkuGroupAttrAttrMultiError (line 4177) | type CreateGoodsRequestGoodsSkuGroupAttrAttrMultiError
    method Error (line 4180) | func (m CreateGoodsRequestGoodsSkuGroupAttrAttrMultiError) Error() str...
    method AllErrors (line 4189) | func (m CreateGoodsRequestGoodsSkuGroupAttrAttrMultiError) AllErrors()...
  type CreateGoodsRequestGoodsSkuGroupAttrAttrValidationError (line 4194) | type CreateGoodsRequestGoodsSkuGroupAttrAttrValidationError struct
    method Field (line 4202) | func (e CreateGoodsRequestGoodsSkuGroupAttrAttrValidationError) Field(...
    method Reason (line 4205) | func (e CreateGoodsRequestGoodsSkuGroupAttrAttrValidationError) Reason...
    method Cause (line 4208) | func (e CreateGoodsRequestGoodsSkuGroupAttrAttrValidationError) Cause(...
    method Key (line 4211) | func (e CreateGoodsRequestGoodsSkuGroupAttrAttrValidationError) Key() ...
    method ErrorName (line 4214) | func (e CreateGoodsRequestGoodsSkuGroupAttrAttrValidationError) ErrorN...
    method Error (line 4219) | func (e CreateGoodsRequestGoodsSkuGroupAttrAttrValidationError) Error(...

FILE: service/goods/api/goods/v1/goods_grpc.pb.go
  constant _ (line 20) | _ = grpc.SupportPackageIsVersion7
  type GoodsClient (line 25) | type GoodsClient interface
  type goodsClient (line 53) | type goodsClient struct
    method GetAllCategoryList (line 61) | func (c *goodsClient) GetAllCategoryList(ctx context.Context, in *empt...
    method GetSubCategory (line 70) | func (c *goodsClient) GetSubCategory(ctx context.Context, in *Category...
    method CreateCategory (line 79) | func (c *goodsClient) CreateCategory(ctx context.Context, in *Category...
    method DeleteCategory (line 88) | func (c *goodsClient) DeleteCategory(ctx context.Context, in *DeleteCa...
    method UpdateCategory (line 97) | func (c *goodsClient) UpdateCategory(ctx context.Context, in *Category...
    method BrandList (line 106) | func (c *goodsClient) BrandList(ctx context.Context, in *BrandListRequ...
    method CreateBrand (line 115) | func (c *goodsClient) CreateBrand(ctx context.Context, in *BrandReques...
    method DeleteBrand (line 124) | func (c *goodsClient) DeleteBrand(ctx context.Context, in *BrandReques...
    method UpdateBrand (line 133) | func (c *goodsClient) UpdateBrand(ctx context.Context, in *BrandReques...
    method CreateGoodsType (line 142) | func (c *goodsClient) CreateGoodsType(ctx context.Context, in *GoodsTy...
    method CreateGoodsSpecification (line 151) | func (c *goodsClient) CreateGoodsSpecification(ctx context.Context, in...
    method CreateAttrGroup (line 160) | func (c *goodsClient) CreateAttrGroup(ctx context.Context, in *AttrGro...
    method CreateAttrValue (line 169) | func (c *goodsClient) CreateAttrValue(ctx context.Context, in *AttrReq...
    method CreateGoods (line 178) | func (c *goodsClient) CreateGoods(ctx context.Context, in *CreateGoods...
    method UpdateGoods (line 187) | func (c *goodsClient) UpdateGoods(ctx context.Context, in *CreateGoods...
    method GoodsList (line 196) | func (c *goodsClient) GoodsList(ctx context.Context, in *GoodsFilterRe...
  function NewGoodsClient (line 57) | func NewGoodsClient(cc grpc.ClientConnInterface) GoodsClient {
  type GoodsServer (line 208) | type GoodsServer interface
  type UnimplementedGoodsServer (line 238) | type UnimplementedGoodsServer struct
    method GetAllCategoryList (line 241) | func (UnimplementedGoodsServer) GetAllCategoryList(context.Context, *e...
    method GetSubCategory (line 244) | func (UnimplementedGoodsServer) GetSubCategory(context.Context, *Categ...
    method CreateCategory (line 247) | func (UnimplementedGoodsServer) CreateCategory(context.Context, *Categ...
    method DeleteCategory (line 250) | func (UnimplementedGoodsServer) DeleteCategory(context.Context, *Delet...
    method UpdateCategory (line 253) | func (UnimplementedGoodsServer) UpdateCategory(context.Context, *Categ...
    method BrandList (line 256) | func (UnimplementedGoodsServer) BrandList(context.Context, *BrandListR...
    method CreateBrand (line 259) | func (UnimplementedGoodsServer) CreateBrand(context.Context, *BrandReq...
    method DeleteBrand (line 262) | func (UnimplementedGoodsServer) DeleteBrand(context.Context, *BrandReq...
    method UpdateBrand (line 265) | func (UnimplementedGoodsServer) UpdateBrand(context.Context, *BrandReq...
    method CreateGoodsType (line 268) | func (UnimplementedGoodsServer) CreateGoodsType(context.Context, *Good...
    method CreateGoodsSpecification (line 271) | func (UnimplementedGoodsServer) CreateGoodsSpecification(context.Conte...
    method CreateAttrGroup (line 274) | func (UnimplementedGoodsServer) CreateAttrGroup(context.Context, *Attr...
    method CreateAttrValue (line 277) | func (UnimplementedGoodsServer) CreateAttrValue(context.Context, *Attr...
    method CreateGoods (line 280) | func (UnimplementedGoodsServer) CreateGoods(context.Context, *CreateGo...
    method UpdateGoods (line 283) | func (UnimplementedGoodsServer) UpdateGoods(context.Context, *CreateGo...
    method GoodsList (line 286) | func (UnimplementedGoodsServer) GoodsList(context.Context, *GoodsFilte...
    method mustEmbedUnimplementedGoodsServer (line 289) | func (UnimplementedGoodsServer) mustEmbedUnimplementedGoodsServer() {}
  type UnsafeGoodsServer (line 294) | type UnsafeGoodsServer interface
  function RegisterGoodsServer (line 298) | func RegisterGoodsServer(s grpc.ServiceRegistrar, srv GoodsServer) {
  function _Goods_GetAllCategoryList_Handler (line 302) | func _Goods_GetAllCategoryList_Handler(srv interface{}, ctx context.Cont...
  function _Goods_GetSubCategory_Handler (line 320) | func _Goods_GetSubCategory_Handler(srv interface{}, ctx context.Context,...
  function _Goods_CreateCategory_Handler (line 338) | func _Goods_CreateCategory_Handler(srv interface{}, ctx context.Context,...
  function _Goods_DeleteCategory_Handler (line 356) | func _Goods_DeleteCategory_Handler(srv interface{}, ctx context.Context,...
  function _Goods_UpdateCategory_Handler (line 374) | func _Goods_UpdateCategory_Handler(srv interface{}, ctx context.Context,...
  function _Goods_BrandList_Handler (line 392) | func _Goods_BrandList_Handler(srv interface{}, ctx context.Context, dec ...
  function _Goods_CreateBrand_Handler (line 410) | func _Goods_CreateBrand_Handler(srv interface{}, ctx context.Context, de...
  function _Goods_DeleteBrand_Handler (line 428) | func _Goods_DeleteBrand_Handler(srv interface{}, ctx context.Context, de...
  function _Goods_UpdateBrand_Handler (line 446) | func _Goods_UpdateBrand_Handler(srv interface{}, ctx context.Context, de...
  function _Goods_CreateGoodsType_Handler (line 464) | func _Goods_CreateGoodsType_Handler(srv interface{}, ctx context.Context...
  function _Goods_CreateGoodsSpecification_Handler (line 482) | func _Goods_CreateGoodsSpecification_Handler(srv interface{}, ctx contex...
  function _Goods_CreateAttrGroup_Handler (line 500) | func _Goods_CreateAttrGroup_Handler(srv interface{}, ctx context.Context...
  function _Goods_CreateAttrValue_Handler (line 518) | func _Goods_CreateAttrValue_Handler(srv interface{}, ctx context.Context...
  function _Goods_CreateGoods_Handler (line 536) | func _Goods_CreateGoods_Handler(srv interface{}, ctx context.Context, de...
  function _Goods_UpdateGoods_Handler (line 554) | func _Goods_UpdateGoods_Handler(srv interface{}, ctx context.Context, de...
  function _Goods_GoodsList_Handler (line 572) | func _Goods_GoodsList_Handler(srv interface{}, ctx context.Context, dec ...

FILE: service/goods/cmd/goods/main.go
  function init (line 36) | func init() {
  function newApp (line 40) | func newApp(logger log.Logger, gs *grpc.Server, rr registry.Registrar) *...
  function setTracerProvider (line 54) | func setTracerProvider(url string) error {
  function main (line 75) | func main() {

FILE: service/goods/cmd/goods/wire.go
  function initApp (line 20) | func initApp(*conf.Server, *conf.Registry, *conf.Data, log.Logger) (*kra...

FILE: service/goods/cmd/goods/wire_gen.go
  function initApp (line 22) | func initApp(confServer *conf.Server, registry *conf.Registry, confData ...

FILE: service/goods/internal/biz/biz.go
  type Transaction (line 22) | type Transaction interface

FILE: service/goods/internal/biz/brand.go
  type Pagination (line 10) | type Pagination struct
  type BrandRepo (line 15) | type BrandRepo interface
  type BrandUsecase (line 25) | type BrandUsecase struct
    method CreateBrand (line 34) | func (uc *BrandUsecase) CreateBrand(ctx context.Context, b *domain.Bra...
    method UpdateBrand (line 43) | func (uc *BrandUsecase) UpdateBrand(ctx context.Context, b *domain.Bra...
    method BrandList (line 51) | func (uc *BrandUsecase) BrandList(ctx context.Context, b *Pagination) ...
  function NewBrandUsecase (line 30) | func NewBrandUsecase(repo BrandRepo, logger log.Logger) *BrandUsecase {

FILE: service/goods/internal/biz/category.go
  type Category (line 8) | type Category struct
  type CategoryList (line 18) | type CategoryList struct
  type CategoryInfo (line 23) | type CategoryInfo struct
  type CategoryRepo (line 32) | type CategoryRepo interface
  type CategoryUsecase (line 42) | type CategoryUsecase struct
    method DeleteCategory (line 51) | func (c *CategoryUsecase) DeleteCategory(ctx context.Context, r *Categ...
    method UpdateCategory (line 60) | func (c *CategoryUsecase) UpdateCategory(ctx context.Context, r *Categ...
    method CreateCategory (line 65) | func (c *CategoryUsecase) CreateCategory(ctx context.Context, r *Categ...
    method CategoryList (line 73) | func (c *CategoryUsecase) CategoryList(ctx context.Context) ([]*Catego...
    method SubCategoryList (line 77) | func (c *CategoryUsecase) SubCategoryList(ctx context.Context, cid int...
  function NewCategoryUsecase (line 47) | func NewCategoryUsecase(repo CategoryRepo, logger log.Logger) *CategoryU...

FILE: service/goods/internal/biz/es_goods.go
  type EsGoodsRepo (line 11) | type EsGoodsRepo interface
  type EsGoodsUsecase (line 16) | type EsGoodsUsecase struct
    method GoodsList (line 32) | func (g EsGoodsUsecase) GoodsList(ctx context.Context, req *domain.ESG...
  function NewEsGoodsUsecase (line 23) | func NewEsGoodsUsecase(repo GoodsRepo, es EsGoodsRepo, cRepo CategoryRep...

FILE: service/goods/internal/biz/goods.go
  type GoodsRepo (line 13) | type GoodsRepo interface
  type GoodsUsecase (line 18) | type GoodsUsecase struct
    method CreateGoods (line 50) | func (g GoodsUsecase) CreateGoods(ctx context.Context, r *domain.Goods...
  function NewGoodsUsecase (line 32) | func NewGoodsUsecase(repo GoodsRepo, skuRepo GoodsSkuRepo, tx Transactio...

FILE: service/goods/internal/biz/goods_attr.go
  type GoodsAttrRepo (line 11) | type GoodsAttrRepo interface
  type GoodsAttrUsecase (line 20) | type GoodsAttrUsecase struct
    method CreateAttrGroup (line 36) | func (ga *GoodsAttrUsecase) CreateAttrGroup(ctx context.Context, r *do...
    method CreateAttrValue (line 54) | func (ga *GoodsAttrUsecase) CreateAttrValue(ctx context.Context, r *do...
  function NewGoodsAttrUsecase (line 27) | func NewGoodsAttrUsecase(repo GoodsAttrRepo, tx Transaction, gRepo Goods...

FILE: service/goods/internal/biz/goods_image.go
  type GoodsImages (line 9) | type GoodsImages struct
  type GoodsImagesRepo (line 13) | type GoodsImagesRepo interface
  type GoodsImageUsecase (line 18) | type GoodsImageUsecase struct
  function NewGoodsImagesUsecase (line 23) | func NewGoodsImagesUsecase(repo GoodsImagesRepo, logger log.Logger) *Goo...

FILE: service/goods/internal/biz/goods_sku.go
  type Sku (line 9) | type Sku struct
  type GoodsSkuRepo (line 27) | type GoodsSkuRepo interface
  type GoodsSkuUsecase (line 32) | type GoodsSkuUsecase struct
  function NewGoodsSkuUsecase (line 37) | func NewGoodsSkuUsecase(repo GoodsSkuRepo, logger log.Logger) *GoodsSkuU...

FILE: service/goods/internal/biz/goods_type.go
  type GoodsTypeRepo (line 11) | type GoodsTypeRepo interface
  type GoodsTypeUsecase (line 18) | type GoodsTypeUsecase struct
    method GoosTypeCreate (line 35) | func (gt *GoodsTypeUsecase) GoosTypeCreate(ctx context.Context, r *dom...
  function NewGoodsTypeUsecase (line 25) | func NewGoodsTypeUsecase(repo GoodsTypeRepo, tx Transaction, BrandUc Bra...

FILE: service/goods/internal/biz/inventory.go
  type InventoryRepo (line 9) | type InventoryRepo interface
  type InventoryUsecase (line 13) | type InventoryUsecase struct
  function NewInventoryUsecase (line 18) | func NewInventoryUsecase(repo InventoryRepo, logger log.Logger) *Invento...

FILE: service/goods/internal/biz/specifications.go
  type SpecificationRepo (line 11) | type SpecificationRepo interface
  type SpecificationUsecase (line 17) | type SpecificationUsecase struct
    method CreateSpecification (line 36) | func (s *SpecificationUsecase) CreateSpecification(ctx context.Context...
  function NewSpecificationUsecase (line 24) | func NewSpecificationUsecase(repo SpecificationRepo, TypeUc GoodsTypeRep...

FILE: service/goods/internal/
Condensed preview — 525 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (3,674K chars).
[
  {
    "path": ".gitignore",
    "chars": 6,
    "preview": ".idea/"
  },
  {
    "path": "LICENSE",
    "chars": 1060,
    "preview": "MIT License\n\nCopyright (c) 2022 高永立\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof thi"
  },
  {
    "path": "README.md",
    "chars": 948,
    "preview": "# kratos-shop\nkratos 框架写商品微服务\n\n本项目是一个使用 Kratos 框架创建的很简单的微服务商城项目。\n> 注: 本项目中但凡 kratos 提供包,就不会自己封装第三方的包。\n\n主要是为了学习 kratos 如何"
  },
  {
    "path": "admin/.gitignore",
    "chars": 528,
    "preview": "# Reference https://github.com/github/gitignore/blob/master/Go.gitignore\n# Binaries for programs and plugins\n*.exe\n*.exe"
  },
  {
    "path": "admin/Dockerfile",
    "chars": 459,
    "preview": "FROM golang:1.16 AS builder\n\nCOPY . /src\nWORKDIR /src\n\nRUN GOPROXY=https://goproxy.cn make build\n\nFROM debian:stable-sli"
  },
  {
    "path": "admin/LICENSE",
    "chars": 1066,
    "preview": "MIT License\n\nCopyright (c) 2020 go-kratos\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\n"
  },
  {
    "path": "admin/Makefile",
    "chars": 2248,
    "preview": "GOPATH:=$(shell go env GOPATH)\nVERSION=$(shell git describe --tags --always)\nINTERNAL_PROTO_FILES=$(shell find internal "
  },
  {
    "path": "admin/api/admin/v1/admin.pb.go",
    "chars": 46696,
    "preview": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.27.1\n// \tprotoc        v3.17.3\n// sou"
  },
  {
    "path": "admin/api/admin/v1/admin.pb.validate.go",
    "chars": 39752,
    "preview": "// Code generated by protoc-gen-validate. DO NOT EDIT.\n// source: api/admin/v1/admin.proto\n\npackage v1\n\nimport (\n\t\"bytes"
  },
  {
    "path": "admin/api/admin/v1/admin.proto",
    "chars": 4042,
    "preview": "syntax = \"proto3\";\n\npackage admin.admin.v1;\n// 这里可以把 proto 文件下载下来,放到项目的 third_party 目录下\nimport \"validate/validate.proto\""
  },
  {
    "path": "admin/api/admin/v1/admin_grpc.pb.go",
    "chars": 14312,
    "preview": "// Code generated by protoc-gen-go-grpc. DO NOT EDIT.\n// versions:\n// - protoc-gen-go-grpc v1.2.0\n// - protoc           "
  },
  {
    "path": "admin/api/admin/v1/admin_http.pb.go",
    "chars": 12342,
    "preview": "// Code generated by protoc-gen-go-http. DO NOT EDIT.\n// versions:\n// protoc-gen-go-http v2.1.4\n\npackage v1\n\nimport (\n\tc"
  },
  {
    "path": "admin/api/admin/v1/error_reason.pb.go",
    "chars": 5033,
    "preview": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.27.1\n// \tprotoc        v3.17.3\n// sou"
  },
  {
    "path": "admin/api/admin/v1/error_reason.pb.validate.go",
    "chars": 564,
    "preview": "// Code generated by protoc-gen-validate. DO NOT EDIT.\n// source: api/admin/v1/error_reason.proto\n\npackage v1\n\nimport (\n"
  },
  {
    "path": "admin/api/admin/v1/error_reason.proto",
    "chars": 395,
    "preview": "syntax = \"proto3\";\n\npackage helloworld.v1;\nimport \"errors/errors.proto\";\n\noption go_package = \"admin/api/admin/v1;v1\";\no"
  },
  {
    "path": "admin/api/admin/v1/error_reason_errors.pb.go",
    "chars": 952,
    "preview": "// Code generated by protoc-gen-go-errors. DO NOT EDIT.\n\npackage v1\n\nimport (\n\tfmt \"fmt\"\n\terrors \"github.com/go-kratos/k"
  },
  {
    "path": "admin/api/service/user/v1/user.pb.go",
    "chars": 50211,
    "preview": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.27.1\n// \tprotoc        v3.17.3\n// sou"
  },
  {
    "path": "admin/api/service/user/v1/user.pb.validate.go",
    "chars": 45256,
    "preview": "// Code generated by protoc-gen-validate. DO NOT EDIT.\n// source: api/service/user/v1/user.proto\n\npackage v1\n\nimport (\n\t"
  },
  {
    "path": "admin/api/service/user/v1/user.proto",
    "chars": 2575,
    "preview": "syntax = \"proto3\";\n\npackage user.v1;\n\nimport \"google/protobuf/empty.proto\";\n\noption go_package = \"user/api/user/v1;v1\";\n"
  },
  {
    "path": "admin/api/service/user/v1/user_grpc.pb.go",
    "chars": 17045,
    "preview": "// Code generated by protoc-gen-go-grpc. DO NOT EDIT.\n// versions:\n// - protoc-gen-go-grpc v1.2.0\n// - protoc           "
  },
  {
    "path": "admin/cmd/admin/main.go",
    "chars": 2858,
    "preview": "package main\n\nimport (\n\t\"flag\"\n\t\"os\"\n\n\t\"github.com/go-kratos/kratos/v2\"\n\t\"github.com/go-kratos/kratos/v2/config\"\n\t\"githu"
  },
  {
    "path": "admin/cmd/admin/wire.go",
    "chars": 623,
    "preview": "//go:build wireinject\n// +build wireinject\n\n// The build tag makes sure the stub is not built in the final build.\n\npacka"
  },
  {
    "path": "admin/cmd/admin/wire_gen.go",
    "chars": 1328,
    "preview": "// Code generated by Wire. DO NOT EDIT.\n\n//go:generate go run github.com/google/wire/cmd/wire\n//go:build !wireinject\n// "
  },
  {
    "path": "admin/configs/config.yaml",
    "chars": 453,
    "preview": "name: admin.api\nserver:\n  http:\n    addr: 0.0.0.0:9099\n    timeout: 1s\ndata:\n  database:\n    driver: mysql\n    source: r"
  },
  {
    "path": "admin/configs/registry.yaml",
    "chars": 48,
    "preview": "consul:\n  address: 127.0.0.1:8500\n  scheme: http"
  },
  {
    "path": "admin/generate.go",
    "chars": 56,
    "preview": "package generate\n\n//go:generate kratos proto client api\n"
  },
  {
    "path": "admin/go.mod",
    "chars": 688,
    "preview": "module admin\n\ngo 1.16\n\nrequire (\n\tgithub.com/envoyproxy/protoc-gen-validate v0.6.3\n\tgithub.com/go-kratos/kratos/contrib/"
  },
  {
    "path": "admin/go.sum",
    "chars": 33306,
    "preview": "cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=\ncloud.google.com/go v0.34.0/go.mod h1"
  },
  {
    "path": "admin/internal/biz/README.md",
    "chars": 6,
    "preview": "# Biz\n"
  },
  {
    "path": "admin/internal/biz/address.go",
    "chars": 3706,
    "preview": "package biz\n\nimport (\n\t\"context\"\n\t\"github.com/go-kratos/kratos/v2/log\"\n\t\"github.com/go-kratos/kratos/v2/middleware/auth/"
  },
  {
    "path": "admin/internal/biz/biz.go",
    "chars": 144,
    "preview": "package biz\n\nimport \"github.com/google/wire\"\n\n// ProviderSet is biz providers.\nvar ProviderSet = wire.NewSet(NewUserUsec"
  },
  {
    "path": "admin/internal/biz/user.go",
    "chars": 5143,
    "preview": "package biz\n\nimport (\n\tv1 \"admin/api/admin/v1\"\n\t\"admin/internal/conf\"\n\t\"admin/internal/pkg/captcha\"\n\t\"admin/internal/pkg"
  },
  {
    "path": "admin/internal/conf/conf.pb.go",
    "chars": 32629,
    "preview": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.27.1\n// \tprotoc        v3.17.3\n// sou"
  },
  {
    "path": "admin/internal/conf/conf.proto",
    "chars": 1035,
    "preview": "syntax = \"proto3\";\npackage admin.api;\n\noption go_package = \"admin/internal/conf;conf\";\n\nimport \"google/protobuf/duration"
  },
  {
    "path": "admin/internal/data/README.md",
    "chars": 7,
    "preview": "# Data\n"
  },
  {
    "path": "admin/internal/data/address.go",
    "chars": 2877,
    "preview": "package data\n\nimport (\n\t\"context\"\n\t\"github.com/go-kratos/kratos/v2/log\"\n\taddressService \"admin/api/service/user/v1\"\n\t\"ad"
  },
  {
    "path": "admin/internal/data/data.go",
    "chars": 2054,
    "preview": "package data\n\nimport (\n\tuserV1 \"admin/api/service/user/v1\"\n\t\"admin/internal/conf\"\n\t\"context\"\n\tconsul \"github.com/go-krat"
  },
  {
    "path": "admin/internal/data/user.go",
    "chars": 1839,
    "preview": "package data\n\nimport (\n\t\"context\"\n\t\"github.com/go-kratos/kratos/v2/log\"\n\tuserService \"admin/api/service/user/v1\"\n\t\"admin"
  },
  {
    "path": "admin/internal/pkg/captcha/captcha.go",
    "chars": 511,
    "preview": "package captcha\n\nimport (\n\t\"context\"\n\t\"github.com/mojocn/base64Captcha\"\n)\n\nvar Store = base64Captcha.DefaultMemStore\n\nty"
  },
  {
    "path": "admin/internal/pkg/middleware/auth/auth.go",
    "chars": 489,
    "preview": "package auth\n\nimport (\n\t\"errors\"\n\t\"github.com/golang-jwt/jwt/v4\"\n)\n\ntype CustomClaims struct {\n\tID          int64\n\tNickN"
  },
  {
    "path": "admin/internal/server/http.go",
    "chars": 2126,
    "preview": "package server\n\nimport (\n\tv1 \"admin/api/admin/v1\"\n\t\"admin/internal/conf\"\n\t\"admin/internal/service\"\n\t\"context\"\n\t\"github.c"
  },
  {
    "path": "admin/internal/server/server.go",
    "chars": 130,
    "preview": "package server\n\nimport (\n\t\"github.com/google/wire\"\n)\n\n// ProviderSet is s providers.\nvar ProviderSet = wire.NewSet(NewHT"
  },
  {
    "path": "admin/internal/service/README.md",
    "chars": 10,
    "preview": "# Service\n"
  },
  {
    "path": "admin/internal/service/service.go",
    "chars": 643,
    "preview": "package service\n\nimport (\n\tv1 \"admin/api/admin/v1\"\n\t\"admin/internal/biz\"\n\t\"github.com/go-kratos/kratos/v2/log\"\n\t\"github."
  },
  {
    "path": "admin/internal/service/user.go",
    "chars": 2251,
    "preview": "package service\n\nimport (\n\t\"admin/internal/biz\"\n\t\"context\"\n\t\"go.opentelemetry.io/otel\"\n\t\"google.golang.org/protobuf/type"
  },
  {
    "path": "admin/openapi.yaml",
    "chars": 9537,
    "preview": "# Generated with protoc-gen-openapi\n# https://github.com/google/gnostic/tree/master/apps/protoc-gen-openapi\n\nopenapi: 3."
  },
  {
    "path": "admin/third_party/README.md",
    "chars": 14,
    "preview": "# third_party\n"
  },
  {
    "path": "admin/third_party/errors/errors.proto",
    "chars": 411,
    "preview": "syntax = \"proto3\";\n\npackage errors;\n\noption go_package = \"github.com/go-kratos/kratos/v2/errors;errors\";\noption java_mul"
  },
  {
    "path": "admin/third_party/google/api/annotations.proto",
    "chars": 1051,
    "preview": "// Copyright (c) 2015, Google Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not "
  },
  {
    "path": "admin/third_party/google/api/client.proto",
    "chars": 3395,
    "preview": "// Copyright 2019 Google LLC.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use t"
  },
  {
    "path": "admin/third_party/google/api/field_behavior.proto",
    "chars": 3011,
    "preview": "// Copyright 2019 Google LLC.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use t"
  },
  {
    "path": "admin/third_party/google/api/http.proto",
    "chars": 15140,
    "preview": "// Copyright 2020 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "admin/third_party/google/api/httpbody.proto",
    "chars": 2671,
    "preview": "// Copyright 2020 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "admin/third_party/google/protobuf/descriptor.proto",
    "chars": 38027,
    "preview": "// Protocol Buffers - Google's data interchange format\n// Copyright 2008 Google Inc.  All rights reserved.\n// https://de"
  },
  {
    "path": "admin/third_party/protoc-gen-openapiv2/options/annotations.proto",
    "chars": 1760,
    "preview": "syntax = \"proto3\";\n\npackage grpc.gateway.protoc_gen_openapiv2.options;\n\noption go_package = \"github.com/grpc-ecosystem/g"
  },
  {
    "path": "admin/third_party/protoc-gen-openapiv2/options/openapiv2.proto",
    "chars": 24777,
    "preview": "syntax = \"proto3\";\n\npackage grpc.gateway.protoc_gen_openapiv2.options;\n\noption go_package = \"github.com/grpc-ecosystem/g"
  },
  {
    "path": "admin/third_party/validate/README.md",
    "chars": 81,
    "preview": "# protoc-gen-validate (PGV)\n\n* https://github.com/envoyproxy/protoc-gen-validate\n"
  },
  {
    "path": "admin/third_party/validate/validate.proto",
    "chars": 31270,
    "preview": "syntax = \"proto2\";\npackage validate;\n\noption go_package = \"github.com/envoyproxy/protoc-gen-validate/validate\";\noption j"
  },
  {
    "path": "service/cart/.gitignore",
    "chars": 528,
    "preview": "# Reference https://github.com/github/gitignore/blob/master/Go.gitignore\n# Binaries for programs and plugins\n*.exe\n*.exe"
  },
  {
    "path": "service/cart/Dockerfile",
    "chars": 459,
    "preview": "FROM golang:1.16 AS builder\n\nCOPY . /src\nWORKDIR /src\n\nRUN GOPROXY=https://goproxy.cn make build\n\nFROM debian:stable-sli"
  },
  {
    "path": "service/cart/LICENSE",
    "chars": 1066,
    "preview": "MIT License\n\nCopyright (c) 2020 go-kratos\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\n"
  },
  {
    "path": "service/cart/Makefile",
    "chars": 2023,
    "preview": "GOPATH:=$(shell go env GOPATH)\nVERSION=$(shell git describe --tags --always)\nINTERNAL_PROTO_FILES=$(shell find internal "
  },
  {
    "path": "service/cart/README.md",
    "chars": 1062,
    "preview": "# Kratos Project Template\n\n## Install Kratos\n```\ngo install github.com/go-kratos/kratos/cmd/kratos/v2@latest\n```\n## Crea"
  },
  {
    "path": "service/cart/api/cart/v1/cart.pb.go",
    "chars": 29340,
    "preview": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.28.0\n// \tprotoc        v3.19.4\n// sou"
  },
  {
    "path": "service/cart/api/cart/v1/cart.pb.validate.go",
    "chars": 33981,
    "preview": "// Code generated by protoc-gen-validate. DO NOT EDIT.\n// source: cart/v1/cart.proto\n\npackage v1\n\nimport (\n\t\"bytes\"\n\t\"er"
  },
  {
    "path": "service/cart/api/cart/v1/cart.proto",
    "chars": 1512,
    "preview": "syntax = \"proto3\";\n\npackage cart.v1;\n\nimport \"validate/validate.proto\";\n\noption go_package = \"cart/api/cart/v1;v1\";\n\n// "
  },
  {
    "path": "service/cart/api/cart/v1/cart_grpc.pb.go",
    "chars": 7436,
    "preview": "// Code generated by protoc-gen-go-grpc. DO NOT EDIT.\n// versions:\n// - protoc-gen-go-grpc v1.2.0\n// - protoc           "
  },
  {
    "path": "service/cart/cmd/cart/main.go",
    "chars": 2865,
    "preview": "package main\n\nimport (\n\t\"flag\"\n\t\"github.com/go-kratos/kratos/v2/registry\"\n\t\"go.opentelemetry.io/otel\"\n\t\"go.opentelemetry"
  },
  {
    "path": "service/cart/cmd/cart/wire.go",
    "chars": 570,
    "preview": "// +build wireinject\n\n// The build tag makes sure the stub is not built in the final build.\n\npackage main\n\nimport (\n\t\"ca"
  },
  {
    "path": "service/cart/cmd/cart/wire_gen.go",
    "chars": 1082,
    "preview": "// Code generated by Wire. DO NOT EDIT.\n\n//go:generate go run github.com/google/wire/cmd/wire\n//go:build !wireinject\n// "
  },
  {
    "path": "service/cart/configs/config.yaml",
    "chars": 387,
    "preview": "server:\n  http:\n    addr: 0.0.0.0:8000\n    timeout: 1s\n  grpc:\n    addr: 0.0.0.0:50053\n    timeout: 1s\ndata:\n  database:"
  },
  {
    "path": "service/cart/configs/registry.yaml",
    "chars": 52,
    "preview": "consul:\n    address: 127.0.0.1:8500\n    scheme: http"
  },
  {
    "path": "service/cart/go.mod",
    "chars": 3834,
    "preview": "module cart\n\ngo 1.17\n\nrequire (\n\tgithub.com/envoyproxy/protoc-gen-validate v0.1.0\n\tgithub.com/go-kratos/kratos/contrib/r"
  },
  {
    "path": "service/cart/go.sum",
    "chars": 47382,
    "preview": "cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=\ncloud.google.com/go v0.34.0/go.mod h1"
  },
  {
    "path": "service/cart/internal/biz/README.md",
    "chars": 6,
    "preview": "# Biz\n"
  },
  {
    "path": "service/cart/internal/biz/biz.go",
    "chars": 125,
    "preview": "package biz\n\nimport \"github.com/google/wire\"\n\n// ProviderSet is biz providers.\nvar ProviderSet = wire.NewSet(NewCartUsec"
  },
  {
    "path": "service/cart/internal/biz/cart.go",
    "chars": 959,
    "preview": "package biz\n\nimport (\n\t\"cart/internal/domain\"\n\t\"context\"\n\n\t\"github.com/go-kratos/kratos/v2/log\"\n)\n\ntype CartRepo interfa"
  },
  {
    "path": "service/cart/internal/conf/conf.pb.go",
    "chars": 27876,
    "preview": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.28.0\n// \tprotoc        v3.19.4\n// sou"
  },
  {
    "path": "service/cart/internal/conf/conf.proto",
    "chars": 1016,
    "preview": "syntax = \"proto3\";\npackage cart.api;\n\noption go_package = \"cart/internal/conf;conf\";\n\nimport \"google/protobuf/duration.p"
  },
  {
    "path": "service/cart/internal/data/README.md",
    "chars": 7,
    "preview": "# Data\n"
  },
  {
    "path": "service/cart/internal/data/cart.go",
    "chars": 2770,
    "preview": "package data\n\nimport (\n\t\"cart/internal/domain\"\n\t\"context\"\n\t\"time\"\n\n\t\"github.com/go-kratos/kratos/v2/errors\"\n\t\"gorm.io/go"
  },
  {
    "path": "service/cart/internal/data/cart_test.go",
    "chars": 1079,
    "preview": "package data_test\n\nimport (\n\t\"cart/internal/biz\"\n\t\"cart/internal/data\"\n\t\"cart/internal/domain\"\n\n\t. \"github.com/onsi/gink"
  },
  {
    "path": "service/cart/internal/data/data.go",
    "chars": 1964,
    "preview": "package data\n\nimport (\n\t\"cart/internal/conf\"\n\tslog \"log\"\n\t\"os\"\n\t\"time\"\n\n\t\"github.com/go-redis/redis/v8\"\n\n\t\"github.com/go"
  },
  {
    "path": "service/cart/internal/data/data_suite_test.go",
    "chars": 1399,
    "preview": "package data_test\n\nimport (\n\t\"cart/internal/conf\"\n\t\"cart/internal/data\"\n\t\"context\"\n\t\"github.com/pkg/errors\"\n\t\"gorm.io/go"
  },
  {
    "path": "service/cart/internal/data/docker_mysql.go",
    "chars": 1324,
    "preview": "package data\n\nimport (\n\t\"database/sql\"\n\t\"fmt\"\n\t\"github.com/ory/dockertest/v3\"\n\t\"log\"\n\t\"time\"\n)\n\nfunc DockerMysql(img, ve"
  },
  {
    "path": "service/cart/internal/domain/cart.go",
    "chars": 417,
    "preview": "package domain\n\ntype ShopCart struct {\n\tID         int64\n\tUserId     int64\n\tGoodsId    int64\n\tSkuId      int64\n\tGoodsPri"
  },
  {
    "path": "service/cart/internal/server/grpc.go",
    "chars": 869,
    "preview": "package server\n\nimport (\n\tv1 \"cart/api/cart/v1\"\n\t\"cart/internal/conf\"\n\t\"cart/internal/service\"\n\t\"github.com/go-kratos/kr"
  },
  {
    "path": "service/cart/internal/server/server.go",
    "chars": 638,
    "preview": "package server\n\nimport (\n\t\"cart/internal/conf\"\n\t\"github.com/go-kratos/kratos/v2/registry\"\n\t\"github.com/google/wire\"\n\n\tco"
  },
  {
    "path": "service/cart/internal/service/README.md",
    "chars": 10,
    "preview": "# Service\n"
  },
  {
    "path": "service/cart/internal/service/cart.go",
    "chars": 2021,
    "preview": "package service\n\nimport (\n\t\"cart/internal/biz\"\n\t\"cart/internal/domain\"\n\t\"context\"\n\n\tv1 \"cart/api/cart/v1\"\n)\n\ntype CartSe"
  },
  {
    "path": "service/cart/internal/service/service.go",
    "chars": 133,
    "preview": "package service\n\nimport \"github.com/google/wire\"\n\n// ProviderSet is service providers.\nvar ProviderSet = wire.NewSet(New"
  },
  {
    "path": "service/cart/openapi.yaml",
    "chars": 201,
    "preview": "# Generated with protoc-gen-openapi\n# https://github.com/google/gnostic/tree/master/apps/protoc-gen-openapi\n\nopenapi: 3."
  },
  {
    "path": "service/cart/third_party/README.md",
    "chars": 14,
    "preview": "# third_party\n"
  },
  {
    "path": "service/cart/third_party/errors/errors.proto",
    "chars": 411,
    "preview": "syntax = \"proto3\";\n\npackage errors;\n\noption go_package = \"github.com/go-kratos/kratos/v2/errors;errors\";\noption java_mul"
  },
  {
    "path": "service/cart/third_party/google/api/annotations.proto",
    "chars": 1051,
    "preview": "// Copyright (c) 2015, Google Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not "
  },
  {
    "path": "service/cart/third_party/google/api/client.proto",
    "chars": 3395,
    "preview": "// Copyright 2019 Google LLC.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use t"
  },
  {
    "path": "service/cart/third_party/google/api/field_behavior.proto",
    "chars": 3011,
    "preview": "// Copyright 2019 Google LLC.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use t"
  },
  {
    "path": "service/cart/third_party/google/api/http.proto",
    "chars": 15140,
    "preview": "// Copyright 2020 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "service/cart/third_party/google/api/httpbody.proto",
    "chars": 2671,
    "preview": "// Copyright 2020 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "service/cart/third_party/google/protobuf/any.proto",
    "chars": 5909,
    "preview": "// Protocol Buffers - Google's data interchange format\n// Copyright 2008 Google Inc.  All rights reserved.\n// https://de"
  },
  {
    "path": "service/cart/third_party/google/protobuf/api.proto",
    "chars": 7734,
    "preview": "// Protocol Buffers - Google's data interchange format\n// Copyright 2008 Google Inc.  All rights reserved.\n// https://de"
  },
  {
    "path": "service/cart/third_party/google/protobuf/compiler/plugin.proto",
    "chars": 8754,
    "preview": "// Protocol Buffers - Google's data interchange format\n// Copyright 2008 Google Inc.  All rights reserved.\n// https://de"
  },
  {
    "path": "service/cart/third_party/google/protobuf/descriptor.proto",
    "chars": 38497,
    "preview": "// Protocol Buffers - Google's data interchange format\n// Copyright 2008 Google Inc.  All rights reserved.\n// https://de"
  },
  {
    "path": "service/cart/third_party/google/protobuf/duration.proto",
    "chars": 4895,
    "preview": "// Protocol Buffers - Google's data interchange format\n// Copyright 2008 Google Inc.  All rights reserved.\n// https://de"
  },
  {
    "path": "service/cart/third_party/google/protobuf/empty.proto",
    "chars": 2429,
    "preview": "// Protocol Buffers - Google's data interchange format\n// Copyright 2008 Google Inc.  All rights reserved.\n// https://de"
  },
  {
    "path": "service/cart/third_party/google/protobuf/field_mask.proto",
    "chars": 8185,
    "preview": "// Protocol Buffers - Google's data interchange format\n// Copyright 2008 Google Inc.  All rights reserved.\n// https://de"
  },
  {
    "path": "service/cart/third_party/google/protobuf/source_context.proto",
    "chars": 2341,
    "preview": "// Protocol Buffers - Google's data interchange format\n// Copyright 2008 Google Inc.  All rights reserved.\n// https://de"
  },
  {
    "path": "service/cart/third_party/google/protobuf/struct.proto",
    "chars": 3779,
    "preview": "// Protocol Buffers - Google's data interchange format\n// Copyright 2008 Google Inc.  All rights reserved.\n// https://de"
  },
  {
    "path": "service/cart/third_party/google/protobuf/timestamp.proto",
    "chars": 6459,
    "preview": "// Protocol Buffers - Google's data interchange format\n// Copyright 2008 Google Inc.  All rights reserved.\n// https://de"
  },
  {
    "path": "service/cart/third_party/google/protobuf/type.proto",
    "chars": 6126,
    "preview": "// Protocol Buffers - Google's data interchange format\n// Copyright 2008 Google Inc.  All rights reserved.\n// https://de"
  },
  {
    "path": "service/cart/third_party/google/protobuf/wrappers.proto",
    "chars": 4042,
    "preview": "// Protocol Buffers - Google's data interchange format\n// Copyright 2008 Google Inc.  All rights reserved.\n// https://de"
  },
  {
    "path": "service/cart/third_party/openapi/v3/annotations.proto",
    "chars": 2196,
    "preview": "// Copyright 2022 Google LLC. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "service/cart/third_party/openapi/v3/openapi.proto",
    "chars": 22082,
    "preview": "// Copyright 2020 Google LLC. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "service/cart/third_party/validate/README.md",
    "chars": 81,
    "preview": "# protoc-gen-validate (PGV)\n\n* https://github.com/envoyproxy/protoc-gen-validate\n"
  },
  {
    "path": "service/cart/third_party/validate/validate.proto",
    "chars": 31270,
    "preview": "syntax = \"proto2\";\npackage validate;\n\noption go_package = \"github.com/envoyproxy/protoc-gen-validate/validate\";\noption j"
  },
  {
    "path": "service/goods/Dockerfile",
    "chars": 459,
    "preview": "FROM golang:1.16 AS builder\n\nCOPY . /src\nWORKDIR /src\n\nRUN GOPROXY=https://goproxy.cn make build\n\nFROM debian:stable-sli"
  },
  {
    "path": "service/goods/LICENSE",
    "chars": 1066,
    "preview": "MIT License\n\nCopyright (c) 2020 go-kratos\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\n"
  },
  {
    "path": "service/goods/Makefile",
    "chars": 2192,
    "preview": "GOPATH:=$(shell go env GOPATH)\nVERSION=$(shell git describe --tags --always)\nINTERNAL_PROTO_FILES=$(shell find internal "
  },
  {
    "path": "service/goods/README.md",
    "chars": 13,
    "preview": "goods service"
  },
  {
    "path": "service/goods/api/goods/v1/error_reason.pb.go",
    "chars": 4852,
    "preview": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.28.0\n// \tprotoc        v3.19.4\n// sou"
  },
  {
    "path": "service/goods/api/goods/v1/error_reason.pb.validate.go",
    "chars": 564,
    "preview": "// Code generated by protoc-gen-validate. DO NOT EDIT.\n// source: api/goods/v1/error_reason.proto\n\npackage v1\n\nimport (\n"
  },
  {
    "path": "service/goods/api/goods/v1/error_reason.proto",
    "chars": 310,
    "preview": "syntax = \"proto3\";\n\npackage goods.v1;\nimport \"errors/errors.proto\";\n\n\noption go_package = \"goods/api/goods/v1;v1\";\noptio"
  },
  {
    "path": "service/goods/api/goods/v1/goods.pb.go",
    "chars": 128588,
    "preview": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.28.0\n// \tprotoc        v3.19.4\n// sou"
  },
  {
    "path": "service/goods/api/goods/v1/goods.pb.validate.go",
    "chars": 115083,
    "preview": "// Code generated by protoc-gen-validate. DO NOT EDIT.\n// source: api/goods/v1/goods.proto\n\npackage v1\n\nimport (\n\t\"bytes"
  },
  {
    "path": "service/goods/api/goods/v1/goods.proto",
    "chars": 8053,
    "preview": "syntax = \"proto3\";\n\npackage goods.v1;\n\nimport \"google/protobuf/empty.proto\";\nimport \"validate/validate.proto\";\n\noption g"
  },
  {
    "path": "service/goods/api/goods/v1/goods_grpc.pb.go",
    "chars": 25314,
    "preview": "// Code generated by protoc-gen-go-grpc. DO NOT EDIT.\n// versions:\n// - protoc-gen-go-grpc v1.2.0\n// - protoc           "
  },
  {
    "path": "service/goods/cmd/goods/main.go",
    "chars": 2823,
    "preview": "package main\n\nimport (\n\t\"flag\"\n\t\"github.com/go-kratos/kratos/v2\"\n\t\"github.com/go-kratos/kratos/v2/registry\"\n\t\"go.opentel"
  },
  {
    "path": "service/goods/cmd/goods/wire.go",
    "chars": 597,
    "preview": "//go:build wireinject\n// +build wireinject\n\n// The build tag makes sure the stub is not built in the final build.\n\npacka"
  },
  {
    "path": "service/goods/cmd/goods/wire_gen.go",
    "chars": 2413,
    "preview": "// Code generated by Wire. DO NOT EDIT.\n\n//go:generate go run github.com/google/wire/cmd/wire\n//go:build !wireinject\n// "
  },
  {
    "path": "service/goods/configs/config.yaml",
    "chars": 431,
    "preview": "server:\n  http:\n    addr: 0.0.0.0:8000\n    timeout: 1s\n  grpc:\n    addr: 0.0.0.0:50052\n    timeout: 1s\ndata:\n  database:"
  },
  {
    "path": "service/goods/configs/registry.yaml",
    "chars": 52,
    "preview": "consul:\n    address: 127.0.0.1:8500\n    scheme: http"
  },
  {
    "path": "service/goods/generate.go",
    "chars": 56,
    "preview": "package generate\n\n//go:generate kratos proto client api\n"
  },
  {
    "path": "service/goods/go.mod",
    "chars": 963,
    "preview": "module goods\n\ngo 1.16\n\nrequire (\n\tgithub.com/envoyproxy/protoc-gen-validate v0.1.0\n\tgithub.com/go-kratos/kratos/contrib/"
  },
  {
    "path": "service/goods/go.sum",
    "chars": 41334,
    "preview": "cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=\ncloud.google.com/go v0.34.0/go.mod h1"
  },
  {
    "path": "service/goods/internal/biz/README.md",
    "chars": 6,
    "preview": "# Biz\n"
  },
  {
    "path": "service/goods/internal/biz/biz.go",
    "chars": 438,
    "preview": "package biz\n\nimport (\n\t\"context\"\n\t\"github.com/google/wire\"\n)\n\n// ProviderSet is biz providers.\nvar ProviderSet = wire.Ne"
  },
  {
    "path": "service/goods/internal/biz/brand.go",
    "chars": 1424,
    "preview": "package biz\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"github.com/go-kratos/kratos/v2/log\"\n\t\"goods/internal/domain\"\n)\n\ntype Pagina"
  },
  {
    "path": "service/goods/internal/biz/category.go",
    "chars": 2243,
    "preview": "package biz\n\nimport (\n\t\"context\"\n\t\"github.com/go-kratos/kratos/v2/log\"\n)\n\ntype Category struct {\n\tID               int32"
  },
  {
    "path": "service/goods/internal/biz/es_goods.go",
    "chars": 2618,
    "preview": "package biz\n\nimport (\n\t\"context\"\n\t\"goods/internal/domain\"\n\n\t\"github.com/go-kratos/kratos/v2/log\"\n\t\"github.com/olivere/el"
  },
  {
    "path": "service/goods/internal/biz/goods.go",
    "chars": 5935,
    "preview": "package biz\n\nimport (\n\t\"context\"\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"goods/internal/domain\"\n\n\t\"github.com/go-kratos/kratos/v2/erro"
  },
  {
    "path": "service/goods/internal/biz/goods_attr.go",
    "chars": 2887,
    "preview": "package biz\n\nimport (\n\t\"context\"\n\t\"goods/internal/domain\"\n\n\t\"github.com/go-kratos/kratos/v2/errors\"\n\t\"github.com/go-krat"
  },
  {
    "path": "service/goods/internal/biz/goods_image.go",
    "chars": 517,
    "preview": "package biz\n\nimport (\n\t\"context\"\n\t\"github.com/go-kratos/kratos/v2/log\"\n\t\"goods/internal/domain\"\n)\n\ntype GoodsImages stru"
  },
  {
    "path": "service/goods/internal/biz/goods_sku.go",
    "chars": 852,
    "preview": "package biz\n\nimport (\n\t\"context\"\n\t\"github.com/go-kratos/kratos/v2/log\"\n\t\"goods/internal/domain\"\n)\n\ntype Sku struct {\n\tID"
  },
  {
    "path": "service/goods/internal/biz/goods_type.go",
    "chars": 1567,
    "preview": "package biz\n\nimport (\n\t\"context\"\n\t\"goods/internal/domain\"\n\n\t\"github.com/go-kratos/kratos/v2/errors\"\n\t\"github.com/go-krat"
  },
  {
    "path": "service/goods/internal/biz/inventory.go",
    "chars": 428,
    "preview": "package biz\n\nimport (\n\t\"context\"\n\t\"github.com/go-kratos/kratos/v2/log\"\n\t\"goods/internal/domain\"\n)\n\ntype InventoryRepo in"
  },
  {
    "path": "service/goods/internal/biz/specifications.go",
    "chars": 1486,
    "preview": "package biz\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"goods/internal/domain\"\n\n\t\"github.com/go-kratos/kratos/v2/log\"\n)\n\ntype Speci"
  },
  {
    "path": "service/goods/internal/conf/conf.pb.go",
    "chars": 30865,
    "preview": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.28.0\n// \tprotoc        v3.19.4\n// sou"
  },
  {
    "path": "service/goods/internal/conf/conf.proto",
    "chars": 1086,
    "preview": "syntax = \"proto3\";\npackage goods.api;\n\noption go_package = \"goods/internal/conf;conf\";\n\nimport \"google/protobuf/duration"
  },
  {
    "path": "service/goods/internal/data/README.md",
    "chars": 7,
    "preview": "# Data\n"
  },
  {
    "path": "service/goods/internal/data/base.go",
    "chars": 904,
    "preview": "package data\n\nimport (\n\t\"database/sql/driver\"\n\t\"encoding/json\"\n\t\"gorm.io/gorm\"\n\t\"time\"\n)\n\ntype GormList []string\n\nfunc ("
  },
  {
    "path": "service/goods/internal/data/brand.go",
    "chars": 4953,
    "preview": "package data\n\nimport (\n\t\"context\"\n\t\"github.com/go-kratos/kratos/v2/errors\"\n\t\"github.com/go-kratos/kratos/v2/log\"\n\t\"goods"
  },
  {
    "path": "service/goods/internal/data/category.go",
    "chars": 6591,
    "preview": "package data\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"github.com/go-kratos/kratos/v2/errors\"\n\t\"github.com/go-kratos/kratos/v2/log\"\n"
  },
  {
    "path": "service/goods/internal/data/data.go",
    "chars": 3076,
    "preview": "package data\n\nimport (\n\t\"context\"\n\t\"goods/internal/biz\"\n\t\"goods/internal/conf\"\n\tslog \"log\"\n\t\"os\"\n\t\"time\"\n\n\t\"github.com/g"
  },
  {
    "path": "service/goods/internal/data/entity/goods.go",
    "chars": 1124,
    "preview": "package main\n\nimport (\n\t\"goods/internal/data\"\n\t\"gorm.io/driver/mysql\"\n\t\"gorm.io/gorm\"\n\t\"gorm.io/gorm/logger\"\n\t\"gorm.io/g"
  },
  {
    "path": "service/goods/internal/data/es_goods.go",
    "chars": 4007,
    "preview": "package data\n\nimport (\n\t\"context\"\n\t\"encoding/json\"\n\t\"goods/internal/biz\"\n\t\"goods/internal/domain\"\n\t\"strconv\"\n\n\t\"github.c"
  },
  {
    "path": "service/goods/internal/data/good_type.go",
    "chars": 3420,
    "preview": "package data\n\nimport (\n\t\"context\"\n\t\"goods/internal/biz\"\n\t\"goods/internal/domain\"\n\t\"strconv\"\n\t\"strings\"\n\t\"time\"\n\n\t\"github"
  },
  {
    "path": "service/goods/internal/data/goods.go",
    "chars": 3695,
    "preview": "package data\n\nimport (\n\t\"context\"\n\t\"github.com/go-kratos/kratos/v2/errors\"\n\t\"github.com/go-kratos/kratos/v2/log\"\n\t\"goods"
  },
  {
    "path": "service/goods/internal/data/goods_attr.go",
    "chars": 5888,
    "preview": "package data\n\nimport (\n\t\"context\"\n\t\"github.com/go-kratos/kratos/v2/errors\"\n\t\"github.com/go-kratos/kratos/v2/log\"\n\t\"goods"
  },
  {
    "path": "service/goods/internal/data/goods_image.go",
    "chars": 926,
    "preview": "package data\n\nimport (\n\t\"context\"\n\t\"github.com/go-kratos/kratos/v2/log\"\n\t\"goods/internal/biz\"\n\t\"goods/internal/domain\"\n)"
  },
  {
    "path": "service/goods/internal/data/goods_sku.go",
    "chars": 3694,
    "preview": "package data\n\nimport (\n\t\"github.com/go-kratos/kratos/v2/errors\"\n\t\"github.com/go-kratos/kratos/v2/log\"\n\t\"golang.org/x/net"
  },
  {
    "path": "service/goods/internal/data/inventory.go",
    "chars": 1091,
    "preview": "package data\n\nimport (\n\t\"context\"\n\t\"github.com/go-kratos/kratos/v2/errors\"\n\t\"github.com/go-kratos/kratos/v2/log\"\n\t\"goods"
  },
  {
    "path": "service/goods/internal/data/specifications.go",
    "chars": 3540,
    "preview": "package data\n\nimport (\n\t\"context\"\n\t\"goods/internal/biz\"\n\t\"goods/internal/domain\"\n\t\"time\"\n\n\t\"github.com/go-kratos/kratos/"
  },
  {
    "path": "service/goods/internal/domain/brand.go",
    "chars": 413,
    "preview": "package domain\n\ntype Brand struct {\n\tID    int32\n\tName  string\n\tLogo  string\n\tDesc  string\n\tIsTab bool\n\tSort  int32\n}\n\nf"
  },
  {
    "path": "service/goods/internal/domain/es_goods.go",
    "chars": 1584,
    "preview": "package domain\n\nimport \"github.com/olivere/elastic/v7\"\n\ntype ESGoodsFilter struct {\n\tID          int64\n\tCategoryID  int3"
  },
  {
    "path": "service/goods/internal/domain/goods.go",
    "chars": 646,
    "preview": "package domain\n\ntype Goods struct {\n\tID              int64\n\tCategoryID      int32\n\tBrandsID        int32\n\tTypeID        "
  },
  {
    "path": "service/goods/internal/domain/goods_attr.go",
    "chars": 994,
    "preview": "package domain\n\ntype AttrGroup struct {\n\tID     int64\n\tTypeID int64\n\tTitle  string\n\tDesc   string\n\tStatus bool\n\tSort   i"
  },
  {
    "path": "service/goods/internal/domain/goods_sku.go",
    "chars": 1020,
    "preview": "package domain\n\ntype GoodsSku struct {\n\tID             int64\n\tGoodsID        int64\n\tGoodsSn        string\n\tGoodsName    "
  },
  {
    "path": "service/goods/internal/domain/goods_type.go",
    "chars": 626,
    "preview": "package domain\n\nimport (\n\t\"strconv\"\n\t\"strings\"\n)\n\ntype GoodsType struct {\n\tID        int64\n\tName      string\n\tTypeCode  "
  },
  {
    "path": "service/goods/internal/domain/inventory.go",
    "chars": 93,
    "preview": "package domain\n\ntype Inventory struct {\n\tID        int64\n\tSkuID     int64\n\tInventory int64\n}\n"
  },
  {
    "path": "service/goods/internal/domain/specification.go",
    "chars": 706,
    "preview": "package domain\n\ntype SpecificationValue struct {\n\tID     int64\n\tAttrId int64\n\tValue  string\n\tSort   int32\n}\n\ntype Specif"
  },
  {
    "path": "service/goods/internal/server/grpc.go",
    "chars": 955,
    "preview": "package server\n\nimport (\n\t\"github.com/go-kratos/kratos/v2/log\"\n\t\"github.com/go-kratos/kratos/v2/middleware/logging\"\n\t\"gi"
  },
  {
    "path": "service/goods/internal/server/server.go",
    "chars": 632,
    "preview": "package server\n\nimport (\n\t\"github.com/go-kratos/kratos/v2/registry\"\n\t\"github.com/google/wire\"\n\t\"goods/internal/conf\"\n\n\t\""
  },
  {
    "path": "service/goods/internal/service/README.md",
    "chars": 10,
    "preview": "# Service\n"
  },
  {
    "path": "service/goods/internal/service/brand.go",
    "chars": 1552,
    "preview": "package service\n\nimport (\n\t\"context\"\n\tv1 \"goods/api/goods/v1\"\n\t\"goods/internal/biz\"\n\t\"goods/internal/domain\"\n\t\"google.go"
  },
  {
    "path": "service/goods/internal/service/category.go",
    "chars": 2684,
    "preview": "package service\n\nimport (\n\t\"context\"\n\t\"encoding/json\"\n\tv1 \"goods/api/goods/v1\"\n\t\"goods/internal/biz\"\n\t\"google.golang.org"
  },
  {
    "path": "service/goods/internal/service/goods.go",
    "chars": 3479,
    "preview": "package service\n\nimport (\n\t\"context\"\n\tv1 \"goods/api/goods/v1\"\n\t\"goods/internal/domain\"\n)\n\n// CreateGoods 创建商品\nfunc (g *G"
  },
  {
    "path": "service/goods/internal/service/goods_attr.go",
    "chars": 1703,
    "preview": "package service\n\nimport (\n\t\"context\"\n\n\tv1 \"goods/api/goods/v1\"\n\t\"goods/internal/domain\"\n)\n\n// CreateAttrGroup 创建属性组\nfunc"
  },
  {
    "path": "service/goods/internal/service/goods_type.go",
    "chars": 521,
    "preview": "package service\n\nimport (\n\t\"context\"\n\tv1 \"goods/api/goods/v1\"\n\t\"goods/internal/domain\"\n)\n\nfunc (g *GoodsService) CreateG"
  },
  {
    "path": "service/goods/internal/service/service.go",
    "chars": 1000,
    "preview": "package service\n\nimport (\n\t\"github.com/go-kratos/kratos/v2/log\"\n\t\"github.com/google/wire\"\n\tv1 \"goods/api/goods/v1\"\n\t\"goo"
  },
  {
    "path": "service/goods/internal/service/specifications.go",
    "chars": 891,
    "preview": "package service\n\nimport (\n\t\"context\"\n\n\tv1 \"goods/api/goods/v1\"\n\t\"goods/internal/domain\"\n)\n\n// CreateGoodsSpecification 创"
  },
  {
    "path": "service/goods/openapi.yaml",
    "chars": 201,
    "preview": "# Generated with protoc-gen-openapi\n# https://github.com/google/gnostic/tree/master/apps/protoc-gen-openapi\n\nopenapi: 3."
  },
  {
    "path": "service/goods/third_party/README.md",
    "chars": 14,
    "preview": "# third_party\n"
  },
  {
    "path": "service/goods/third_party/errors/errors.proto",
    "chars": 411,
    "preview": "syntax = \"proto3\";\n\npackage errors;\n\noption go_package = \"github.com/go-kratos/kratos/v2/errors;errors\";\noption java_mul"
  },
  {
    "path": "service/goods/third_party/google/api/annotations.proto",
    "chars": 1051,
    "preview": "// Copyright (c) 2015, Google Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not "
  },
  {
    "path": "service/goods/third_party/google/api/client.proto",
    "chars": 3395,
    "preview": "// Copyright 2019 Google LLC.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use t"
  },
  {
    "path": "service/goods/third_party/google/api/field_behavior.proto",
    "chars": 3011,
    "preview": "// Copyright 2019 Google LLC.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use t"
  },
  {
    "path": "service/goods/third_party/google/api/http.proto",
    "chars": 15140,
    "preview": "// Copyright 2020 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "service/goods/third_party/google/api/httpbody.proto",
    "chars": 2671,
    "preview": "// Copyright 2020 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "service/goods/third_party/google/protobuf/any.proto",
    "chars": 5909,
    "preview": "// Protocol Buffers - Google's data interchange format\n// Copyright 2008 Google Inc.  All rights reserved.\n// https://de"
  },
  {
    "path": "service/goods/third_party/google/protobuf/api.proto",
    "chars": 7734,
    "preview": "// Protocol Buffers - Google's data interchange format\n// Copyright 2008 Google Inc.  All rights reserved.\n// https://de"
  },
  {
    "path": "service/goods/third_party/google/protobuf/compiler/plugin.proto",
    "chars": 8754,
    "preview": "// Protocol Buffers - Google's data interchange format\n// Copyright 2008 Google Inc.  All rights reserved.\n// https://de"
  },
  {
    "path": "service/goods/third_party/google/protobuf/descriptor.proto",
    "chars": 38497,
    "preview": "// Protocol Buffers - Google's data interchange format\n// Copyright 2008 Google Inc.  All rights reserved.\n// https://de"
  },
  {
    "path": "service/goods/third_party/google/protobuf/duration.proto",
    "chars": 4895,
    "preview": "// Protocol Buffers - Google's data interchange format\n// Copyright 2008 Google Inc.  All rights reserved.\n// https://de"
  },
  {
    "path": "service/goods/third_party/google/protobuf/empty.proto",
    "chars": 2429,
    "preview": "// Protocol Buffers - Google's data interchange format\n// Copyright 2008 Google Inc.  All rights reserved.\n// https://de"
  },
  {
    "path": "service/goods/third_party/google/protobuf/field_mask.proto",
    "chars": 8185,
    "preview": "// Protocol Buffers - Google's data interchange format\n// Copyright 2008 Google Inc.  All rights reserved.\n// https://de"
  },
  {
    "path": "service/goods/third_party/google/protobuf/source_context.proto",
    "chars": 2341,
    "preview": "// Protocol Buffers - Google's data interchange format\n// Copyright 2008 Google Inc.  All rights reserved.\n// https://de"
  },
  {
    "path": "service/goods/third_party/google/protobuf/struct.proto",
    "chars": 3779,
    "preview": "// Protocol Buffers - Google's data interchange format\n// Copyright 2008 Google Inc.  All rights reserved.\n// https://de"
  },
  {
    "path": "service/goods/third_party/google/protobuf/timestamp.proto",
    "chars": 6459,
    "preview": "// Protocol Buffers - Google's data interchange format\n// Copyright 2008 Google Inc.  All rights reserved.\n// https://de"
  },
  {
    "path": "service/goods/third_party/google/protobuf/type.proto",
    "chars": 6126,
    "preview": "// Protocol Buffers - Google's data interchange format\n// Copyright 2008 Google Inc.  All rights reserved.\n// https://de"
  },
  {
    "path": "service/goods/third_party/google/protobuf/wrappers.proto",
    "chars": 4042,
    "preview": "// Protocol Buffers - Google's data interchange format\n// Copyright 2008 Google Inc.  All rights reserved.\n// https://de"
  }
]

// ... and 325 more files (download for full content)

About this extraction

This page contains the full source code of the aliliin/kratos-shop GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 525 files (3.3 MB), approximately 885.0k tokens, and a symbol index with 5872 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!