This commit is contained in:
李子铭 2025-03-04 18:33:04 +08:00
parent e18a7ec246
commit b4f92d78e6
6 changed files with 88 additions and 7 deletions

View File

@ -124,16 +124,34 @@ message CmbQueryProductReply {
}
message CmbNotifyRequest {
//
// ID32
string mid = 1 [json_name = "mid", (validate.rules).string = {min_len: 1,max_len: 32}];
// ID32
string aid = 2 [json_name = "aid", (validate.rules).string = {min_len: 1,max_len: 32}];
// yyyyMMddHHmmss
string date = 3 [json_name = "date", (validate.rules).string = {min_len: 14}];
// 32
string random = 4 [json_name = "random", (validate.rules).string = {min_len: 1,max_len: 32}];
//
string keyAlias = 5 [json_name = "keyAlias", (validate.rules).string = {min_len: 2}];
//
string cmbKeyAlias = 6 [json_name = "cmbKeyAlias", (validate.rules).string = {min_len: 2}];
// API的说明文档
string encryptBody = 7 [json_name = "encryptBody", (validate.rules).string = {min_len: 10}];
//
string sign = 8 [json_name = "sign", (validate.rules).string = {min_len: 10}];
// codeNo
string ticket = 1 [json_name = "ticket"];
string ticket = 9 [json_name = "ticket"];
// 0使1使
string status = 2 [json_name = "status"];
string status = 10 [json_name = "status"];
// yyyy-mm-dd hh:mm:ss.sss
string transDate = 3 [json_name = "transDate"];
string transDate = 11 [json_name = "transDate"];
//
string orgNo = 4 [json_name = "orgNo"];
string orgNo = 12 [json_name = "orgNo"];
//
string ext = 5 [json_name = "ext"];
string ext = 13 [json_name = "ext"];
}
message CmbNotifyReply {
// 1000 1001

View File

@ -3,6 +3,7 @@ package cmb
import (
"context"
"fmt"
v1 "voucher/api/v1"
"voucher/internal/biz/bo"
"voucher/internal/biz/vo"
"voucher/internal/pkg/uid"
@ -89,7 +90,27 @@ func (v *Cmb) NotifyConsume(ctx context.Context, order *bo.OrderBo, orderOutRequ
return err
}
fmt.Printf("orderWechat:%+v", orderWechat)
if !orderWechat.Status.CanNotify() {
return fmt.Errorf("微信订单状态错误,不能通知:%s", order.Status.GetText())
}
request := &v1.CmbNotifyRequest{
Mid: "",
Aid: "",
Date: "",
Random: "",
KeyAlias: "",
CmbKeyAlias: "",
EncryptBody: "",
Sign: "",
Ticket: orderWechat.OrderNo,
Status: "",
TransDate: "",
OrgNo: "",
Ext: "",
}
fmt.Printf("request:%+v", request)
return nil
}

View File

@ -108,7 +108,7 @@ func (v *VoucherBiz) NotifyConsume(ctx context.Context, orderNo, orderOutRequest
return err
}
if order.Status.IsSuccess() {
if !order.Status.CanNotify() {
return fmt.Errorf("订单状态错误,不能通知:%s", order.Status.GetText())
}

View File

@ -0,0 +1,8 @@
package vo
type CmbStatus string
const (
CmbStatusSuccess CmbStatus = "0"
CmbStatusUse CmbStatus = "1"
)

View File

@ -46,3 +46,15 @@ func (s OrderStatus) IsSuccess() bool {
func (s OrderStatus) IsFail() bool {
return s == OrderStatusFail
}
func (s OrderStatus) IsUse() bool {
return s == OrderStatusUse
}
func (s OrderStatus) IsExpired() bool {
return s == OrderStatusExpired
}
func (s OrderStatus) CanNotify() bool {
return s.IsSuccess() || s.IsUse() || s.IsExpired()
}

View File

@ -1,5 +1,7 @@
package vo
import "fmt"
type OrderWechatStatus uint8
const (
@ -18,6 +20,18 @@ var OrderWechatStatusMap = map[OrderWechatStatus]string{
OrderWechatStatusExpired: "已过期",
}
var OrderStatusMapCmbStatus = map[OrderWechatStatus]CmbStatus{
OrderWechatStatusSuccess: CmbStatusSuccess,
OrderWechatStatusUse: CmbStatusUse,
}
func (s OrderWechatStatus) GetCmbStatusText() (CmbStatus, error) {
if t, ok := OrderStatusMapCmbStatus[s]; ok {
return t, nil
}
return "", fmt.Errorf("CmbStatus[%s]未定义", s)
}
func (s OrderWechatStatus) GetText() string {
if t, ok := OrderWechatStatusMap[s]; ok {
return t
@ -40,3 +54,11 @@ func (s OrderWechatStatus) IsSuccess() bool {
func (s OrderWechatStatus) IsFail() bool {
return s == OrderWechatStatusFail
}
func (s OrderWechatStatus) IsUse() bool {
return s == OrderWechatStatusUse
}
func (s OrderWechatStatus) CanNotify() bool {
return s.IsSuccess() || s.IsUse()
}