diff --git a/api/proto/vas/proto/vas.go b/api/proto/vas/proto/vas.go index f282d539..65461104 100644 --- a/api/proto/vas/proto/vas.go +++ b/api/proto/vas/proto/vas.go @@ -182,8 +182,9 @@ type ZoneRefundPageReq struct { } type ZoneRefundPageData struct { - Price int64 `json:"price"` // 退款价格,单位:分 - Name string `json:"name"` // 退款商品名 + Price int64 `json:"price"` // 退款价格,单位:分 + CoinPrice int64 `json:"coin_price"` // 推荐价格,单位:金币 + Name string `json:"name"` // 退款商品名 } type ZoneRefundPageResp struct { diff --git a/app/mix/controller/zone_vas_api.go b/app/mix/controller/zone_vas_api.go index c0eb0809..217cefdc 100644 --- a/app/mix/controller/zone_vas_api.go +++ b/app/mix/controller/zone_vas_api.go @@ -63,7 +63,7 @@ func ZoneRefundPage(ctx *gin.Context) { ReplyErrCodeMsg(ctx, errcode.ErrCodeBadParam) return } - name, price, ec, err := service.DefaultService.ZoneGetRefundPage(ctx, req) + name, price, payType, ec, err := service.DefaultService.ZoneGetRefundPage(ctx, req) if ec != errcode.ErrCodeVasSrvOk { logger.Error("ZoneGetRefundPage fail, req: %v, ec: %v", util.ToJson(req), ec) if ec == errcode.ErrCodeVasSrvFail && err != nil { @@ -74,8 +74,12 @@ func ZoneRefundPage(ctx *gin.Context) { return } data := &vasproto.ZoneRefundPageData{ - Price: price, - Name: name, + Name: name, + } + if payType == vasproto.PayTypeCoin { + data.CoinPrice = price + } else { + data.Price = price } ReplyOk(ctx, data) } diff --git a/app/mix/service/logic/vas.go b/app/mix/service/logic/vas.go index 9b45db1e..e816d161 100644 --- a/app/mix/service/logic/vas.go +++ b/app/mix/service/logic/vas.go @@ -1509,10 +1509,12 @@ func (v *Vas) PayCallback(ctx *gin.Context, p *vasproto.PayCallbackParamIn) erro ch.SType = goproto.Int32(dbstruct.CHSTypeChargeZoneSuperfanship) ch.Change = goproto.Int64(order.GetPayAmount()) } - err = v.store.CreateConsumeHistory(ctx, tx, ch) - if err != nil { - logger.Error("CreateConsumeHistory fail, ch: %v, err: %v", util.ToJson(ch), err) - return err + if !(order.GetPayType() == vasproto.PayTypeCoin && product.Id == dbstruct.ProductIdMembership) { + err = v.store.CreateConsumeHistory(ctx, tx, ch) + if err != nil { + logger.Error("CreateConsumeHistory fail, ch: %v, err: %v", util.ToJson(ch), err) + return err + } } // 更新状态 @@ -2243,7 +2245,11 @@ func (v *Vas) UnlockMembership(ctx *gin.Context, tx *sqlx.Tx, mid int64, product } // 增加空间消费 - _err := v.IncZoneConsume(ctx, tx, zid, mid, order.GetUid(), order.GetPayAmount(), orderId, order.GetProductId()) + consume := order.GetPayAmount() + if order.GetPayType() == vasproto.PayTypeCoin { + consume = consume * 10 + } + _err := v.IncZoneConsume(ctx, tx, zid, mid, order.GetUid(), consume, orderId, order.GetProductId()) if _err != nil { logger.Error("IncZoneConsume fail, mid: %v, orderId: %v, err: %v", mid, orderId, err) } diff --git a/app/mix/service/logic/vas_zone.go b/app/mix/service/logic/vas_zone.go index 386b279e..6f61b418 100644 --- a/app/mix/service/logic/vas_zone.go +++ b/app/mix/service/logic/vas_zone.go @@ -277,7 +277,6 @@ func (v *Vas) UnlockZoneMoment(ctx *gin.Context, tx *sqlx.Tx, order *dbstruct.Or var ( orderId = order.GetID() - price = order.GetPayAmount() mid = order.GetMid() zid = order.GetZid() momentId = order.GetMomentId() @@ -313,7 +312,11 @@ func (v *Vas) UnlockZoneMoment(ctx *gin.Context, tx *sqlx.Tx, order *dbstruct.Or } // 增加空间消费 - _err := v.IncZoneConsume(ctx, tx, zid, mid, 0, price, orderId, order.GetProductId()) + consume := order.GetPayAmount() + if order.GetPayType() == vasproto.PayTypeCoin { + consume = consume * 10 + } + _err := v.IncZoneConsume(ctx, tx, zid, mid, 0, consume, orderId, order.GetProductId()) if _err != nil { logger.Error("IncZoneConsume fail, mid: %v, zid: %v, mmid: %v, orderId: %v, err: %v", mid, zid, momentId, orderId, err) } @@ -407,7 +410,6 @@ func (v *Vas) UnlockZoneSuperfanship(ctx *gin.Context, tx *sqlx.Tx, order *dbstr var ( orderId = order.GetID() - price = order.GetPayAmount() mid = order.GetMid() zid = order.GetZid() ) @@ -449,7 +451,11 @@ func (v *Vas) UnlockZoneSuperfanship(ctx *gin.Context, tx *sqlx.Tx, order *dbstr } // 增加空间消费 - _err := v.IncZoneConsume(ctx, tx, zid, mid, 0, price, orderId, order.GetProductId()) + consume := order.GetPayAmount() + if order.GetPayType() == vasproto.PayTypeCoin { + consume = consume * 10 + } + _err := v.IncZoneConsume(ctx, tx, zid, mid, 0, consume, orderId, order.GetProductId()) if _err != nil { logger.Error("IncZoneConsume fail, mid: %v, zid: %v, orderId: %v, err: %v", mid, zid, orderId, err) } @@ -881,36 +887,36 @@ func (v *Vas) GetZoneMomentUnlockMapByMidMomentIds(ctx *gin.Context, mid int64, } // 空间退款页面 -func (v *Vas) ZoneGetRefundPage(ctx *gin.Context, req *vasproto.ZoneRefundPageReq) (string, int64, error) { +func (v *Vas) ZoneGetRefundPage(ctx *gin.Context, req *vasproto.ZoneRefundPageReq) (string, int64, string, error) { zv, err := v.store.GetZoneUnlock(ctx, nil, req.Mid, req.Zid) if err == sql.ErrNoRows || zv == nil { logger.Error("no zone unlock info, mid: %v, zid: %v", req.Mid, req.Zid) - return "", 0, fmt.Errorf("没有解锁信息") + return "", 0, "", fmt.Errorf("没有解锁信息") } if err != nil { logger.Error("get zone unlock info fail, mid: %v, zid: %v, err: %v", req.Mid, req.Zid, err) - return "", 0, err + return "", 0, "", err } // 判断 if zv.GetAdmissionUntil() == 0 || len(zv.GetAdmissionOrderId()) <= 0 { err = fmt.Errorf("无空间解锁记录") logger.Error("no zone unlock info, mid: %v, zid: %v", req.Mid, req.Zid) - return "", 0, err + return "", 0, "", err } // 获取订单 order, err := v.store.GetOrderById(ctx, nil, zv.GetAdmissionOrderId()) if err == sql.ErrNoRows || order == nil { logger.Error("no zone admission order info, mid: %v, zid: %v, orderId: %v", req.Mid, req.Zid, zv.GetAdmissionOrderId()) - return "", 0, fmt.Errorf("没有相关订单") + return "", 0, "", fmt.Errorf("没有相关订单") } if err != nil { logger.Error("get zone admission order info fail, mid: %v, zid: %v, orderId: %v, err: %v", req.Mid, req.Zid, zv.GetAdmissionOrderId(), err) - return "", 0, err + return "", 0, "", err } - return "空间成员权限", order.GetPayAmount(), nil + return "空间成员权限", order.GetPayAmount(), order.GetPayType(), nil } // 空间退款 diff --git a/app/mix/service/vasservice.go b/app/mix/service/vasservice.go index d61633c3..7a008bc5 100644 --- a/app/mix/service/vasservice.go +++ b/app/mix/service/vasservice.go @@ -325,6 +325,7 @@ func (s *Service) chListCharge(ctx *gin.Context, chList []*dbstruct.ConsumeHisto newChange += oldChange[:1] } newChange += fmt.Sprintf("%d金币", chDB.GetChange()) + item.Change = newChange } list = append(list, item) @@ -907,8 +908,8 @@ func (s *Service) ZoneGetCashier(ctx *gin.Context, req *vasproto.ZoneGetCashierR return } -func (s *Service) ZoneGetRefundPage(ctx *gin.Context, req *vasproto.ZoneRefundPageReq) (name string, price int64, ec errcode.ErrCode, err error) { - name, price, err = _DefaultVas.ZoneGetRefundPage(ctx, req) +func (s *Service) ZoneGetRefundPage(ctx *gin.Context, req *vasproto.ZoneRefundPageReq) (name string, price int64, payType string, ec errcode.ErrCode, err error) { + name, price, payType, err = _DefaultVas.ZoneGetRefundPage(ctx, req) ec, err = errs.DealVasErr(err) if err != nil { logger.Error("ZoneGetRefundPage fail, err: %v", err)