This commit is contained in:
parent
ad95880eef
commit
0a71346d3b
|
|
@ -0,0 +1,56 @@
|
||||||
|
package syn_notice
|
||||||
|
|
||||||
|
import (
|
||||||
|
"encoding/json"
|
||||||
|
v1 "voucher/api/v1"
|
||||||
|
"voucher/internal/biz/bo"
|
||||||
|
)
|
||||||
|
|
||||||
|
// BBToWechatRequest 蓝色兄弟请求微信发券接口数据同步Api
|
||||||
|
type BBToWechatRequest struct {
|
||||||
|
// 微信为每个批次分配的唯一id
|
||||||
|
StockId string `protobuf:"bytes,9,opt,name=stockId,proto3" json:"stockId,omitempty"`
|
||||||
|
// 商户此次发放凭据号(格式:商户id+日期+流水号)
|
||||||
|
OutRequestNo string `protobuf:"bytes,10,opt,name=outRequestNo,proto3" json:"outRequestNo,omitempty"`
|
||||||
|
// 微信为发券方商户分配的公众账号ID
|
||||||
|
AppId string `protobuf:"bytes,11,opt,name=appId,proto3" json:"appId,omitempty"`
|
||||||
|
// 批次创建方商户号
|
||||||
|
StockCreatorMhId string `protobuf:"bytes,12,opt,name=stockCreatorMhId,json=stockCreatorMchid,proto3" json:"stockCreatorMhId,omitempty"`
|
||||||
|
// 券面额,单位:分
|
||||||
|
CouponValue int32 `protobuf:"bytes,13,opt,name=couponValue,proto3" json:"couponValue,omitempty"`
|
||||||
|
// 面额发券批次门槛,单位:分
|
||||||
|
CouponMinimum int32 `protobuf:"bytes,14,opt,name=couponMinimum,proto3" json:"couponMinimum,omitempty"`
|
||||||
|
// 微信为代金券唯一分配的id, 在微信请求失败时可能为空
|
||||||
|
CouponId string `protobuf:"bytes,15,opt,name=couponId,proto3" json:"couponId,omitempty"`
|
||||||
|
// 微信返回结果
|
||||||
|
WxRes string `protobuf:"bytes,16,opt,name=wxRes,proto3" json:"wxRes,omitempty"`
|
||||||
|
// 招行返回结果
|
||||||
|
CmbRes string `protobuf:"bytes,17,opt,name=cmbRes,proto3" json:"cmbRes,omitempty"`
|
||||||
|
// 招行此次请求的数据的唯一流水号
|
||||||
|
TransactionId string `protobuf:"bytes,18,opt,name=transactionId,proto3" json:"transactionId,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (this *BBToWechatRequest) SetByMinimum(miniMum int32) {
|
||||||
|
this.CouponMinimum = miniMum
|
||||||
|
}
|
||||||
|
|
||||||
|
func (this *BBToWechatRequest) SetByOrder(order *bo.OrderBo) {
|
||||||
|
this.AppId = order.AppID
|
||||||
|
this.StockId = order.ProductNo
|
||||||
|
this.OutRequestNo = order.OrderNo
|
||||||
|
this.StockCreatorMhId = order.MerchantNo
|
||||||
|
this.CouponId = order.OrderNo
|
||||||
|
}
|
||||||
|
|
||||||
|
func (this *BBToWechatRequest) SetByCmbReply(req *v1.CmbReply) {
|
||||||
|
b, _ := json.Marshal(req)
|
||||||
|
this.CmbRes = string(b)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (this *BBToWechatRequest) GetSynNotice() *SynNotice {
|
||||||
|
return &SynNotice{
|
||||||
|
OutBizBo: this.TransactionId,
|
||||||
|
Type: SynNoticeTypeBBToWechat,
|
||||||
|
BizContent: this,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,41 @@
|
||||||
|
package syn_notice
|
||||||
|
|
||||||
|
import (
|
||||||
|
v1 "voucher/api/v1"
|
||||||
|
)
|
||||||
|
|
||||||
|
// CmbToBBRequest 招行请求蓝色兄弟发券接口数据同步Api
|
||||||
|
type CmbToBBRequest struct {
|
||||||
|
// 唯一流水号
|
||||||
|
TransactionId string `protobuf:"bytes,9,opt,name=transactionId,proto3" json:"transactionId,omitempty"`
|
||||||
|
// 外部合作方权益批次号
|
||||||
|
ActivityId string `protobuf:"bytes,10,opt,name=activityId,proto3" json:"activityId,omitempty"`
|
||||||
|
// 招商银行用户号 用户标识,比如手机号、支付宝openId
|
||||||
|
CmbUid string `protobuf:"bytes,11,opt,name=cmbUid,proto3" json:"cmbUid,omitempty"`
|
||||||
|
// 用户标识类型,0-手机号,1-支付宝openId
|
||||||
|
CmbUidType string `protobuf:"bytes,12,opt,name=cmbUidType,proto3" json:"cmbUidType,omitempty"`
|
||||||
|
// 时间戳,长度为13位,精度为毫秒
|
||||||
|
Timestamp string `protobuf:"bytes,13,opt,name=timestamp,proto3" json:"timestamp,omitempty"`
|
||||||
|
// appId
|
||||||
|
AppId string `protobuf:"bytes,14,opt,name=appId,proto3" json:"appId,omitempty"`
|
||||||
|
// 补丁
|
||||||
|
Attach string `protobuf:"bytes,15,opt,name=attach,proto3" json:"attach,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (this *CmbToBBRequest) SetByBiz(bizContent *v1.CmbOrderRequest) {
|
||||||
|
this.TransactionId = bizContent.TransactionId
|
||||||
|
this.ActivityId = bizContent.ActivityId
|
||||||
|
this.CmbUid = bizContent.CmbUid
|
||||||
|
this.CmbUidType = bizContent.CmbUidType
|
||||||
|
this.Timestamp = bizContent.Timestamp
|
||||||
|
this.AppId = bizContent.AppId
|
||||||
|
this.Attach = bizContent.Attach
|
||||||
|
}
|
||||||
|
|
||||||
|
func (this *CmbToBBRequest) GetSynNotice() *SynNotice {
|
||||||
|
return &SynNotice{
|
||||||
|
OutBizBo: this.TransactionId,
|
||||||
|
Type: SynNoticeTypeCmbToBB,
|
||||||
|
BizContent: this,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,62 @@
|
||||||
|
package syn_notice
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"encoding/json"
|
||||||
|
)
|
||||||
|
|
||||||
|
var _ SynApiInterface = (*CmbToBBRequest)(nil)
|
||||||
|
var _ SynApiInterface = (*BBToWechatRequest)(nil)
|
||||||
|
var _ SynApiInterface = (*WechatToBBRequest)(nil)
|
||||||
|
|
||||||
|
type SynApiInterface interface {
|
||||||
|
GetSynNotice() *SynNotice
|
||||||
|
}
|
||||||
|
|
||||||
|
type SynNotice struct {
|
||||||
|
OutBizBo string
|
||||||
|
Type SynNoticeType
|
||||||
|
BizContent SynApiInterface
|
||||||
|
}
|
||||||
|
|
||||||
|
func (this *SynNotice) Marshal() ([]byte, error) {
|
||||||
|
return json.Marshal(this)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 上下文键类型,避免命名冲突
|
||||||
|
type contextKey string
|
||||||
|
|
||||||
|
const (
|
||||||
|
contextCMBToBBKey contextKey = "cmb_to_bb"
|
||||||
|
contextBBToWXKey contextKey = "bb_to_wx"
|
||||||
|
)
|
||||||
|
|
||||||
|
// SynApi 无状态服务
|
||||||
|
type SynApi struct{}
|
||||||
|
|
||||||
|
// NewSynApi 创建无状态的处理实例
|
||||||
|
func NewSynApi() *SynApi {
|
||||||
|
return &SynApi{}
|
||||||
|
}
|
||||||
|
|
||||||
|
// WithCmbTOBB 将 request 存入上下文
|
||||||
|
func (w *SynApi) WithCmbTOBB(ctx context.Context) context.Context {
|
||||||
|
return context.WithValue(ctx, contextCMBToBBKey, &CmbToBBRequest{})
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetCmbToBB 从上下文中获取 request
|
||||||
|
func (w *SynApi) GetCmbToBB(ctx context.Context) (*CmbToBBRequest, bool) {
|
||||||
|
req, ok := ctx.Value(contextCMBToBBKey).(*CmbToBBRequest)
|
||||||
|
return req, ok
|
||||||
|
}
|
||||||
|
|
||||||
|
// WithBBToWX 将 request 存入上下文
|
||||||
|
func (w *SynApi) WithBBToWX(ctx context.Context) context.Context {
|
||||||
|
return context.WithValue(ctx, contextBBToWXKey, &BBToWechatRequest{})
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetBBToWX 从上下文中获取 request
|
||||||
|
func (w *SynApi) GetBBToWX(ctx context.Context) (*BBToWechatRequest, bool) {
|
||||||
|
req, ok := ctx.Value(contextBBToWXKey).(*BBToWechatRequest)
|
||||||
|
return req, ok
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,43 @@
|
||||||
|
package syn_notice
|
||||||
|
|
||||||
|
// WechatToBBRequest 微信回调蓝色兄弟接口数据同步Api
|
||||||
|
type WechatToBBRequest struct {
|
||||||
|
// 活动ID
|
||||||
|
ActivityId string `protobuf:"bytes,9,opt,name=activityId,proto3" json:"activityId,omitempty"`
|
||||||
|
// 活动名称
|
||||||
|
ActivityName string `protobuf:"bytes,10,opt,name=activityName,proto3" json:"activityName,omitempty"`
|
||||||
|
// 优惠券ID
|
||||||
|
VoucherId string `protobuf:"bytes,11,opt,name=voucherId,proto3" json:"voucherId,omitempty"`
|
||||||
|
// 领取用户ID
|
||||||
|
UserId string `protobuf:"bytes,12,opt,name=userId,proto3" json:"userId,omitempty"`
|
||||||
|
// 核销时间(Unix时间戳,毫秒)
|
||||||
|
UseTime string `protobuf:"bytes,13,opt,name=useTime,proto3" json:"useTime,omitempty"`
|
||||||
|
// 核销金额(分)
|
||||||
|
UseAmount string `protobuf:"bytes,14,opt,name=useAmount,proto3" json:"useAmount,omitempty"`
|
||||||
|
// 券消息类型,例如券核销(V_USE,V_REFUND)
|
||||||
|
BizType string `protobuf:"bytes,15,opt,name=bizType,proto3" json:"bizType,omitempty"`
|
||||||
|
// 退款时间(Unix时间戳,毫秒)
|
||||||
|
RefundTime string `protobuf:"bytes,16,opt,name=refundTime,proto3" json:"refundTime,omitempty"`
|
||||||
|
// 退款金额(分)
|
||||||
|
RefundAmount string `protobuf:"bytes,17,opt,name=refundAmount,proto3" json:"refundAmount,omitempty"`
|
||||||
|
// 券状态,可用(ENABLED)/不可用(DISABLED)
|
||||||
|
VoucherStatus string `protobuf:"bytes,18,opt,name=voucherStatus,proto3" json:"voucherStatus,omitempty"`
|
||||||
|
// 幂等ID
|
||||||
|
OrderId string `protobuf:"bytes,19,opt,name=orderId,proto3" json:"orderId,omitempty"`
|
||||||
|
// 支付宝交易号
|
||||||
|
TradeNo string `protobuf:"bytes,20,opt,name=tradeNo,proto3" json:"tradeNo,omitempty"`
|
||||||
|
// 券领取时间(Unix时间戳,毫秒)
|
||||||
|
GmtVoucherCreate string `protobuf:"bytes,21,opt,name=gmtVoucherCreate,proto3" json:"gmtVoucherCreate,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (this *WechatToBBRequest) SetByOrder() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
func (this *WechatToBBRequest) GetSynNotice() *SynNotice {
|
||||||
|
return &SynNotice{
|
||||||
|
OutBizBo: this.OrderId,
|
||||||
|
Type: SynNoticeTypeBBToWechat,
|
||||||
|
BizContent: this,
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue