This commit is contained in:
lwl0608 2024-06-14 10:20:08 +08:00
parent 30f18cf601
commit 064300871b
5 changed files with 41 additions and 23 deletions

View File

@ -183,6 +183,7 @@ type ZoneRefundPageReq struct {
type ZoneRefundPageData struct { type ZoneRefundPageData struct {
Price int64 `json:"price"` // 退款价格,单位:分 Price int64 `json:"price"` // 退款价格,单位:分
CoinPrice int64 `json:"coin_price"` // 推荐价格,单位:金币
Name string `json:"name"` // 退款商品名 Name string `json:"name"` // 退款商品名
} }

View File

@ -63,7 +63,7 @@ func ZoneRefundPage(ctx *gin.Context) {
ReplyErrCodeMsg(ctx, errcode.ErrCodeBadParam) ReplyErrCodeMsg(ctx, errcode.ErrCodeBadParam)
return return
} }
name, price, ec, err := service.DefaultService.ZoneGetRefundPage(ctx, req) name, price, payType, ec, err := service.DefaultService.ZoneGetRefundPage(ctx, req)
if ec != errcode.ErrCodeVasSrvOk { if ec != errcode.ErrCodeVasSrvOk {
logger.Error("ZoneGetRefundPage fail, req: %v, ec: %v", util.ToJson(req), ec) logger.Error("ZoneGetRefundPage fail, req: %v, ec: %v", util.ToJson(req), ec)
if ec == errcode.ErrCodeVasSrvFail && err != nil { if ec == errcode.ErrCodeVasSrvFail && err != nil {
@ -74,9 +74,13 @@ func ZoneRefundPage(ctx *gin.Context) {
return return
} }
data := &vasproto.ZoneRefundPageData{ data := &vasproto.ZoneRefundPageData{
Price: price,
Name: name, Name: name,
} }
if payType == vasproto.PayTypeCoin {
data.CoinPrice = price
} else {
data.Price = price
}
ReplyOk(ctx, data) ReplyOk(ctx, data)
} }

View File

@ -1509,11 +1509,13 @@ func (v *Vas) PayCallback(ctx *gin.Context, p *vasproto.PayCallbackParamIn) erro
ch.SType = goproto.Int32(dbstruct.CHSTypeChargeZoneSuperfanship) ch.SType = goproto.Int32(dbstruct.CHSTypeChargeZoneSuperfanship)
ch.Change = goproto.Int64(order.GetPayAmount()) ch.Change = goproto.Int64(order.GetPayAmount())
} }
if !(order.GetPayType() == vasproto.PayTypeCoin && product.Id == dbstruct.ProductIdMembership) {
err = v.store.CreateConsumeHistory(ctx, tx, ch) err = v.store.CreateConsumeHistory(ctx, tx, ch)
if err != nil { if err != nil {
logger.Error("CreateConsumeHistory fail, ch: %v, err: %v", util.ToJson(ch), err) logger.Error("CreateConsumeHistory fail, ch: %v, err: %v", util.ToJson(ch), err)
return err return err
} }
}
// 更新状态 // 更新状态
err = v.store.UpdateOrderStatus(ctx, tx, orderId, dbstruct.VasOrderStatusInit, dbstruct.VasOrderStatusPaySuccess) err = v.store.UpdateOrderStatus(ctx, tx, orderId, dbstruct.VasOrderStatusInit, dbstruct.VasOrderStatusPaySuccess)
@ -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 { if _err != nil {
logger.Error("IncZoneConsume fail, mid: %v, orderId: %v, err: %v", mid, orderId, err) logger.Error("IncZoneConsume fail, mid: %v, orderId: %v, err: %v", mid, orderId, err)
} }

View File

@ -277,7 +277,6 @@ func (v *Vas) UnlockZoneMoment(ctx *gin.Context, tx *sqlx.Tx, order *dbstruct.Or
var ( var (
orderId = order.GetID() orderId = order.GetID()
price = order.GetPayAmount()
mid = order.GetMid() mid = order.GetMid()
zid = order.GetZid() zid = order.GetZid()
momentId = order.GetMomentId() 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 { if _err != nil {
logger.Error("IncZoneConsume fail, mid: %v, zid: %v, mmid: %v, orderId: %v, err: %v", mid, zid, momentId, orderId, err) 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 ( var (
orderId = order.GetID() orderId = order.GetID()
price = order.GetPayAmount()
mid = order.GetMid() mid = order.GetMid()
zid = order.GetZid() 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 { if _err != nil {
logger.Error("IncZoneConsume fail, mid: %v, zid: %v, orderId: %v, err: %v", mid, zid, orderId, err) 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) zv, err := v.store.GetZoneUnlock(ctx, nil, req.Mid, req.Zid)
if err == sql.ErrNoRows || zv == nil { if err == sql.ErrNoRows || zv == nil {
logger.Error("no zone unlock info, mid: %v, zid: %v", req.Mid, req.Zid) 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 { if err != nil {
logger.Error("get zone unlock info fail, mid: %v, zid: %v, err: %v", req.Mid, req.Zid, err) 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 { if zv.GetAdmissionUntil() == 0 || len(zv.GetAdmissionOrderId()) <= 0 {
err = fmt.Errorf("无空间解锁记录") err = fmt.Errorf("无空间解锁记录")
logger.Error("no zone unlock info, mid: %v, zid: %v", req.Mid, req.Zid) 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()) order, err := v.store.GetOrderById(ctx, nil, zv.GetAdmissionOrderId())
if err == sql.ErrNoRows || order == nil { 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()) 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 { 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) 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
} }
// 空间退款 // 空间退款

View File

@ -325,6 +325,7 @@ func (s *Service) chListCharge(ctx *gin.Context, chList []*dbstruct.ConsumeHisto
newChange += oldChange[:1] newChange += oldChange[:1]
} }
newChange += fmt.Sprintf("%d金币", chDB.GetChange()) newChange += fmt.Sprintf("%d金币", chDB.GetChange())
item.Change = newChange
} }
list = append(list, item) list = append(list, item)
@ -907,8 +908,8 @@ func (s *Service) ZoneGetCashier(ctx *gin.Context, req *vasproto.ZoneGetCashierR
return return
} }
func (s *Service) ZoneGetRefundPage(ctx *gin.Context, req *vasproto.ZoneRefundPageReq) (name string, price int64, ec errcode.ErrCode, err error) { func (s *Service) ZoneGetRefundPage(ctx *gin.Context, req *vasproto.ZoneRefundPageReq) (name string, price int64, payType string, ec errcode.ErrCode, err error) {
name, price, err = _DefaultVas.ZoneGetRefundPage(ctx, req) name, price, payType, err = _DefaultVas.ZoneGetRefundPage(ctx, req)
ec, err = errs.DealVasErr(err) ec, err = errs.DealVasErr(err)
if err != nil { if err != nil {
logger.Error("ZoneGetRefundPage fail, err: %v", err) logger.Error("ZoneGetRefundPage fail, err: %v", err)