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

BillingService

账单管理服务,负责发票的 CRUD 操作和周期性账单生成。支持按计费周期自动汇总订单生成客户账单。

RPC 列表

RPC描述权限
CreateInvoice手动创建发票admin
ListInvoices发票列表(分页+筛选)admin 全量 / customer 自身
GetInvoice获取发票详情admin 全量 / customer 自身
UpdateInvoice更新发票状态/备注admin
DeleteInvoice删除发票admin
GenerateInvoices批量生成周期账单admin

CreateInvoice

描述

手动创建一张发票(含发票行项目)。

Request — CreateInvoiceRequest

字段类型编号必填描述
customer_idstring1客户 ID(UUID)
billing_period_startstring2计费周期开始(日期字符串)
billing_period_endstring3计费周期结束(日期字符串)
amountstring4小计金额(字符串)
tax_amountstring5税额(字符串)
total_amountstring6总金额(含税)
due_datestring7到期日期
notesstring8备注
itemsrepeated InvoiceItemInput9发票行项目列表

InvoiceItemInput

字段类型编号描述
descriptionstring1项目描述
quantityuint322数量
unit_pricestring3单价(字符串金额)
amountstring4金额(quantity × unit_price)

Response — CreateInvoiceResponse

字段类型编号描述
invoiceInvoiceInfo1创建的发票信息

错误码

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

示例

grpcurl -plaintext -H "authorization: Bearer <token>" \
  -d '{"customer_id":"0192a123-...","billing_period_start":"2024-01-01","billing_period_end":"2024-01-31","amount":"100.00","tax_amount":"13.00","total_amount":"113.00","due_date":"2024-02-15","notes":"1月账单","items":[{"description":"VPS-1C2G 月费","quantity":1,"unit_price":"100.00","amount":"100.00"}]}' \
  localhost:50051 rustbill.billing.BillingService/CreateInvoice
const resp = await api.createInvoice({
  customer_id: "0192a123-...",
  billing_period_start: "2024-01-01",
  billing_period_end: "2024-01-31",
  amount: "100.00",
  tax_amount: "13.00",
  total_amount: "113.00",
  due_date: "2024-02-15",
  notes: "1月账单",
  items: [{ description: "VPS-1C2G 月费", quantity: 1, unit_price: "100.00", amount: "100.00" }]
});

ListInvoices

描述

分页查询发票列表。Admin 可查看所有发票,Customer 自动限定为自身发票。

Request — ListInvoicesRequest

字段类型编号必填描述
paginationPageRequest1分页参数
customer_idstring?2按客户过滤(admin 可用)
statusstring?3按状态过滤

Response — ListInvoicesResponse

字段类型编号描述
invoicesrepeated InvoiceInfo1发票列表
metaPageMeta2分页元数据

示例

grpcurl -plaintext -H "authorization: Bearer <token>" \
  -d '{"pagination":{"page":1,"page_size":20},"status":"issued"}' \
  localhost:50051 rustbill.billing.BillingService/ListInvoices

GetInvoice

描述

获取单张发票详情,含发票行项目。

Request — GetInvoiceRequest

字段类型编号必填描述
idstring1发票 ID(UUID)

Response — GetInvoiceResponse

字段类型编号描述
invoiceInvoiceInfo1发票信息

错误码

错误说明
NotFound发票不存在
PermissionDeniedcustomer 用户无权查看他人发票

示例

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

UpdateInvoice

描述

更新发票状态或备注。

Request — UpdateInvoiceRequest

字段类型编号必填描述
idstring1发票 ID
statusstring?2新状态
notesstring?3备注

Response — UpdateInvoiceResponse

字段类型编号描述
invoiceInvoiceInfo1更新后的发票信息

错误码

错误说明
NotFound发票不存在
InvalidArgument状态流转不合法
PermissionDenied非 admin 用户

示例

grpcurl -plaintext -H "authorization: Bearer <token>" \
  -d '{"id":"0192a123-...","status":"paid"}' \
  localhost:50051 rustbill.billing.BillingService/UpdateInvoice

DeleteInvoice

描述

删除指定发票。

Request — DeleteInvoiceRequest

字段类型编号必填描述
idstring1发票 ID(UUID)

Response — DeleteInvoiceResponse

无字段。

错误码

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

示例

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

GenerateInvoices

描述

按指定计费周期批量生成客户发票。系统遍历周期内所有已完成或活跃的订单,按客户汇总生成发票。

Request — GenerateInvoicesRequest

字段类型编号必填描述
billing_period_startstring1计费周期开始(日期字符串)
billing_period_endstring2计费周期结束(日期字符串)

Response — GenerateInvoicesResponse

字段类型编号描述
generated_countuint321生成的发票数量

错误码

错误说明
InvalidArgument日期格式无效或周期非法
PermissionDenied非 admin 用户

示例

grpcurl -plaintext -H "authorization: Bearer <token>" \
  -d '{"billing_period_start":"2024-01-01","billing_period_end":"2024-01-31"}' \
  localhost:50051 rustbill.billing.BillingService/GenerateInvoices

公共类型

InvoiceInfo

字段类型编号描述
idstring1发票 UUID
invoice_numberstring2发票编号
customer_idstring3客户 ID
billing_period_startstring4计费周期开始
billing_period_endstring5计费周期结束
amountstring6小计金额(字符串)
tax_amountstring7税额(字符串)
total_amountstring8总金额(含税,字符串)
statusstring9发票状态
issued_atstring10签发时间(RFC3339)
paid_atstring11支付时间(RFC3339)
due_datestring12到期日期
notesstring13备注
created_atstring14创建时间(RFC3339)
updated_atstring15更新时间(RFC3339)
itemsrepeated InvoiceItemInfo16发票行项目

InvoiceItemInfo

字段类型编号描述
idstring1行项目 UUID
descriptionstring2项目描述
quantityuint323数量
unit_pricestring4单价(字符串金额)
amountstring5金额(quantity × unit_price)

发票状态流转

draft → issued → paid / overdue → cancelled
状态说明
draft草稿
issued已签发(待支付)
paid已支付
overdue已逾期
cancelled已取消