修复商福通接口签名编码逻辑;统一充值和创建套餐接口为聚合接口
This commit is contained in:
@@ -22,7 +22,7 @@ var Resource = &resourceService{}
|
||||
|
||||
type resourceService struct{}
|
||||
|
||||
func (s *resourceService) CreateResource(uid int32, now time.Time, ser *CreateResourceSerializer) error {
|
||||
func (s *resourceService) CreateResource(uid int32, now time.Time, ser *CreateResourceData) error {
|
||||
|
||||
data, err := ser.ToData()
|
||||
if err != nil {
|
||||
@@ -87,7 +87,7 @@ func (s *resourceService) CreateResource(uid int32, now time.Time, ser *CreateRe
|
||||
return nil
|
||||
}
|
||||
|
||||
func (s *resourceService) PrepareResource(uid int32, now time.Time, ser *CreateResourceSerializer) (*TradeCreateResult, error) {
|
||||
func (s *resourceService) PrepareResource(uid int32, now time.Time, ser *PrepareResourceData) (*TradeCreateResult, error) {
|
||||
|
||||
data, err := ser.ToData()
|
||||
if err != nil {
|
||||
@@ -119,16 +119,16 @@ func (s *resourceService) PrepareResource(uid int32, now time.Time, ser *CreateR
|
||||
}
|
||||
|
||||
// 保存请求缓存
|
||||
resourceSerializer := new(CreateResourceSerializer)
|
||||
resourceSerializer := new(PrepareResourceData)
|
||||
if err := resourceSerializer.ByData(data); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
err = g.Redis.Set(context.Background(), result.TradeNo, &CreateResourceCache{
|
||||
Uid: uid,
|
||||
TradeId: result.Trade.ID,
|
||||
BillId: result.Bill.ID,
|
||||
CreateResourceSerializer: resourceSerializer,
|
||||
err = g.Redis.Set(context.Background(), result.TradeNo, &PrepareResourceCache{
|
||||
Uid: uid,
|
||||
TradeId: result.Trade.ID,
|
||||
BillId: result.Bill.ID,
|
||||
PrepareResourceData: resourceSerializer,
|
||||
}, 30*time.Minute).Err()
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -150,7 +150,7 @@ func (s *resourceService) CompleteResource(tradeNo string, now time.Time, opResu
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
cache := new(CreateResourceCache)
|
||||
cache := new(PrepareResourceCache)
|
||||
if err := json.Unmarshal([]byte(reqStr), cache); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -225,7 +225,7 @@ func (s *resourceService) CancelResource(tradeNo string, now time.Time, opRevoke
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
cache := new(CreateResourceCache)
|
||||
cache := new(PrepareResourceCache)
|
||||
if err := json.Unmarshal([]byte(cacheStr), cache); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -247,7 +247,7 @@ func (s *resourceService) CancelResource(tradeNo string, now time.Time, opRevoke
|
||||
return nil
|
||||
}
|
||||
|
||||
func createResource(q *q.Query, uid int32, now time.Time, data CreateResourceData) (*m.Resource, error) {
|
||||
func createResource(q *q.Query, uid int32, now time.Time, data CreateTypeResourceDataInter) (*m.Resource, error) {
|
||||
|
||||
// 套餐基本信息
|
||||
var resource = m.Resource{
|
||||
@@ -293,7 +293,7 @@ func createResource(q *q.Query, uid int32, now time.Time, data CreateResourceDat
|
||||
return &resource, nil
|
||||
}
|
||||
|
||||
type CreateResourceData interface {
|
||||
type CreateTypeResourceDataInter interface {
|
||||
GetName() string
|
||||
GetPrice() decimal.Decimal
|
||||
}
|
||||
@@ -405,15 +405,13 @@ func (data *CreateLongResourceData) GetPrice() decimal.Decimal {
|
||||
return *data.price
|
||||
}
|
||||
|
||||
type CreateResourceSerializer struct {
|
||||
Type resource2.Type `json:"type" validate:"required"`
|
||||
Short *CreateShortResourceData `json:"short,omitempty"`
|
||||
Long *CreateLongResourceData `json:"long,omitempty"`
|
||||
PaymentMethod trade2.Method `json:"payment_method" validate:"required"`
|
||||
PaymentPlatform trade2.Platform `json:"payment_platform" validate:"required"`
|
||||
type CreateResourceData struct {
|
||||
Type resource2.Type `json:"type" validate:"required"`
|
||||
Short *CreateShortResourceData `json:"short,omitempty"`
|
||||
Long *CreateLongResourceData `json:"long,omitempty"`
|
||||
}
|
||||
|
||||
func (s *CreateResourceSerializer) ToData() (CreateResourceData, error) {
|
||||
func (s *CreateResourceData) ToData() (CreateTypeResourceDataInter, error) {
|
||||
switch s.Type {
|
||||
case resource2.TypeShort:
|
||||
return s.Short, nil
|
||||
@@ -423,7 +421,7 @@ func (s *CreateResourceSerializer) ToData() (CreateResourceData, error) {
|
||||
return nil, fmt.Errorf("不支持的套餐类型")
|
||||
}
|
||||
|
||||
func (s *CreateResourceSerializer) ByData(data CreateResourceData) error {
|
||||
func (s *CreateResourceData) ByData(data CreateTypeResourceDataInter) error {
|
||||
switch data := data.(type) {
|
||||
case *CreateShortResourceData:
|
||||
s.Type = resource2.TypeShort
|
||||
@@ -437,14 +435,20 @@ func (s *CreateResourceSerializer) ByData(data CreateResourceData) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
type CreateResourceCache struct {
|
||||
type PrepareResourceData struct {
|
||||
CreateResourceData
|
||||
PaymentMethod trade2.Method `json:"payment_method" validate:"required"`
|
||||
PaymentPlatform trade2.Platform `json:"payment_platform" validate:"required"`
|
||||
}
|
||||
|
||||
type PrepareResourceCache struct {
|
||||
Uid int32 `json:"uid"`
|
||||
TradeId int32 `json:"trade_id"`
|
||||
BillId int32 `json:"bill_id"`
|
||||
*CreateResourceSerializer
|
||||
*PrepareResourceData
|
||||
}
|
||||
|
||||
func (c CreateResourceCache) MarshalBinary() (data []byte, err error) {
|
||||
func (c PrepareResourceCache) MarshalBinary() (data []byte, err error) {
|
||||
data, err = json.Marshal(c)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
@@ -452,7 +456,7 @@ func (c CreateResourceCache) MarshalBinary() (data []byte, err error) {
|
||||
return data, nil
|
||||
}
|
||||
|
||||
func (c CreateResourceCache) UnmarshalBinary(data []byte) error {
|
||||
func (c PrepareResourceCache) UnmarshalBinary(data []byte) error {
|
||||
if err := json.Unmarshal(data, &c); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user