Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

CustomerService

客户管理服务,负责客户的 CRUD 操作。Customer 用户登录后自动限定数据范围为自身的 customer_id。

RPC 列表

RPC描述权限
CreateCustomer创建客户admin
ListCustomers客户列表(分页+筛选)admin
GetCustomer获取客户详情admin
UpdateCustomer更新客户信息admin
DeleteCustomer删除客户admin

CreateCustomer

描述

创建新客户。

Request — CreateCustomerRequest

字段类型编号必填描述
namestring1客户名称
contact_personstring2联系人
emailstring3联系邮箱
phonestring4联系电话
companystring5公司名称
notesstring6备注
credit_limitstring7信用额度(字符串金额)

Response — CreateCustomerResponse

字段类型编号描述
customerCustomerInfo1创建的客户信息

错误码

错误说明
InvalidArgument参数校验失败
AlreadyExists同名称客户已存在
PermissionDenied非 admin 用户

示例

grpcurl -plaintext -H "authorization: Bearer <token>" \
  -d '{"name":"ACME Corp","contact_person":"John Doe","email":"[email protected]","phone":"1234567890","company":"ACME Inc.","notes":"VIP客户","credit_limit":"10000.00"}' \
  localhost:50051 rustbill.customer.CustomerService/CreateCustomer
const resp = await api.createCustomer({
  name: "ACME Corp",
  contact_person: "John Doe",
  email: "[email protected]",
  phone: "1234567890",
  company: "ACME Inc.",
  notes: "VIP客户",
  credit_limit: "10000.00"
});

ListCustomers

描述

分页查询客户列表,支持按状态和关键词筛选。

Request — ListCustomersRequest

字段类型编号必填描述
paginationPageRequest1分页参数
is_activebool?2按启用状态过滤
searchstring?3名称/邮箱关键词搜索

Response — ListCustomersResponse

字段类型编号描述
customersrepeated CustomerInfo1客户列表
metaPageMeta2分页元数据

错误码

错误说明
PermissionDenied非 admin 用户

示例

grpcurl -plaintext -H "authorization: Bearer <token>" \
  -d '{"pagination":{"page":1,"page_size":20},"is_active":true,"search":"ACME"}' \
  localhost:50051 rustbill.customer.CustomerService/ListCustomers

GetCustomer

描述

获取单个客户详情。

Request — GetCustomerRequest

字段类型编号必填描述
idstring1客户 ID(UUID)

Response — GetCustomerResponse

字段类型编号描述
customerCustomerInfo1客户信息

错误码

错误说明
NotFound客户不存在
PermissionDenied非 admin 用户

示例

grpcurl -plaintext -H "authorization: Bearer <token>" \
  -d '{"id":"0192a123-4567-7890-abcd-ef0123456789"}' \
  localhost:50051 rustbill.customer.CustomerService/GetCustomer

UpdateCustomer

描述

更新客户信息。所有字段均可选,仅更新传入的字段。

Request — UpdateCustomerRequest

字段类型编号必填描述
idstring1客户 ID
namestring?2客户名称
contact_personstring?3联系人
emailstring?4联系邮箱
phonestring?5联系电话
companystring?6公司名称
notesstring?7备注
credit_limitstring?8信用额度
is_activebool?9启用状态
can_create_api_keysbool?10是否允许创建 API Key

Response — UpdateCustomerResponse

字段类型编号描述
customerCustomerInfo1更新后的客户信息

错误码

错误说明
NotFound客户不存在
InvalidArgument参数校验失败
PermissionDenied非 admin 用户

示例

grpcurl -plaintext -H "authorization: Bearer <token>" \
  -d '{"id":"0192a123-...","credit_limit":"20000.00","can_create_api_keys":true}' \
  localhost:50051 rustbill.customer.CustomerService/UpdateCustomer

DeleteCustomer

描述

删除指定客户。

Request — DeleteCustomerRequest

字段类型编号必填描述
idstring1客户 ID(UUID)

Response — DeleteCustomerResponse

无字段。

错误码

错误说明
NotFound客户不存在
PermissionDenied非 admin 用户

示例

grpcurl -plaintext -H "authorization: Bearer <token>" \
  -d '{"id":"0192a123-4567-7890-abcd-ef0123456789"}' \
  localhost:50051 rustbill.customer.CustomerService/DeleteCustomer

公共类型

CustomerInfo

字段类型编号描述
idstring1客户 UUID
namestring2客户名称
contact_personstring3联系人姓名
emailstring4联系邮箱
phonestring5联系电话
companystring6公司名称
notesstring7备注
balancestring8账户余额(字符串金额)
credit_limitstring9信用额度(字符串金额)
is_activebool10是否启用
created_atstring11创建时间(RFC3339)
updated_atstring12更新时间(RFC3339)
can_create_api_keysbool13是否允许创建 API Key