From ad6bb8b928d8eb0daff94b1afcdaabeb1e8cf932 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=AD=90=E9=93=AD?= Date: Tue, 4 Mar 2025 11:52:15 +0800 Subject: [PATCH] cmb --- api/v1/order.proto | 53 +++++++++++++++++++++++++++++++++++++---- internal/server/http.go | 4 ++-- internal/service/cmb.go | 8 +++---- 3 files changed, 54 insertions(+), 11 deletions(-) diff --git a/api/v1/order.proto b/api/v1/order.proto index 25ae413..50a4b7d 100644 --- a/api/v1/order.proto +++ b/api/v1/order.proto @@ -6,7 +6,7 @@ option go_package = "voucher/api/v1;v1"; import "validate/validate.proto"; -message OrderCmbRequest { +message CmbOrderRequest { // 唯一流水号,需支持14天内幂等 string transactionId = 1 [json_name = "transactionId", (validate.rules).string = {min_len: 1,max_len: 50}]; // 外部合作方权益批次号 @@ -18,7 +18,7 @@ message OrderCmbRequest { // 时间戳,长度为13位,精度为毫秒 string timestamp = 5 [json_name = "timestamp", (validate.rules).string = {min_len: 1,max_len: 20}]; } -message OrderCmbReply { +message CmbOrderReply { // 接口调用返回码,1000 成功,1001 失败 string respCode = 1 [json_name = "respCode"]; // 返回信息,失败信息落此字段 @@ -28,9 +28,52 @@ message OrderCmbReply { } -message QueryCmbRequest { - +message CmbQueryProductRequest { + // 外部合作方权益批次号 + string activityId = 2 [json_name = "activityId", (validate.rules).string = {min_len: 1,max_len: 32}]; +} +message CmbQueryProductReply { + // 接口调用返回码,1000 成功,1001 失败 + string respCode = 1 [json_name = "respCode"]; + // 返回信息,失败信息落此字段 + string respMsg = 2 [json_name = "respMsg"]; + // 批次名称 + string activityName = 3 [json_name = "activityName"]; + // 外部合作方权益批次号 + string activityId = 4 [json_name = "activityId"]; + // 批次额度 单位为分 + string amount = 5 [json_name = "amount"]; + // 门槛,单位为分 + string minAmount = 6 [json_name = "minAmount"]; + // 有效期形式,0:固定有效期,1:动态有效期 + string availableType = 7 [json_name = "availableType"]; + // 动态有效期天数-非必填 格式yyyy-mm-dd hh:mm:ss.sss + string availableDays = 8 [json_name = "availableDays"]; + // 有效期开始时间-非必填 + string startTime = 9 [json_name = "startTime"]; + // 有效期结束时间-非必填 + string endTime = 10 [json_name = "endTime"]; + // 当前可用库存 + string availableStock = 11 [json_name = "availableStock"]; + // 细则描述 + string detail = 12 [json_name = "detail"]; } -message QueryCmbReply { +message CmbNotifyRequest { + // 优惠券券码,codeNo + string ticket = 1 [json_name = "ticket"]; + // 更新后串码状态,0:可使用,1:已使用 + string status = 2 [json_name = "status"]; + // 验码日期,格式yyyy-mm-dd hh:mm:ss.sss + string transDate = 3 [json_name = "transDate"]; + // 发码机构号,固定值,掌上生活优惠券系统提供 + string orgNo = 4 [json_name = "orgNo"]; + // 扩展字段 + string ext = 5 [json_name = "ext"]; +} +message CmbNotifyReply { + // 接口调用返回码,1000 成功,1001 失败 + string respCode = 1 [json_name = "respCode"]; + // 返回信息,失败信息落此字段 + string respMsg = 2 [json_name = "respMsg"]; } \ No newline at end of file diff --git a/internal/server/http.go b/internal/server/http.go index f88f280..c4d0f4e 100644 --- a/internal/server/http.go +++ b/internal/server/http.go @@ -32,9 +32,9 @@ func NewHTTPServer( return ctx.String(http2.StatusOK, "pong") }) - v1 := srv.Route("/voucher") + r := srv.Route("/voucher") - cmb := v1.Group("/cmb") + cmb := r.Group("/cmb") cmb.POST("/v1/order", voucherService.CmbOrder) cmb.POST("/v1/product_query", voucherService.CmbProductQuery) diff --git a/internal/service/cmb.go b/internal/service/cmb.go index 7668e23..1b41669 100644 --- a/internal/service/cmb.go +++ b/internal/service/cmb.go @@ -9,7 +9,7 @@ import ( func (s *VoucherService) CmbOrder(ctx http.Context) error { - var req v1.OrderCmbRequest + var req v1.CmbOrderRequest if err := ctx.BindForm(&req); err != nil { return err } @@ -29,7 +29,7 @@ func (s *VoucherService) CmbOrder(ctx http.Context) error { return err } - rep := &v1.OrderCmbReply{ + rep := &v1.CmbOrderReply{ RespCode: "", RespMsg: "", CodeNo: boRep.OrderNo, @@ -40,12 +40,12 @@ func (s *VoucherService) CmbOrder(ctx http.Context) error { func (s *VoucherService) CmbProductQuery(ctx http.Context) error { - var req v1.QueryCmbRequest + var req v1.CmbQueryProductRequest if err := ctx.BindForm(&req); err != nil { return err } - rep := &v1.QueryCmbReply{} + rep := &v1.CmbQueryProductReply{} return ctx.JSON(200, rep) }