rollback_zone_exit_status
This commit is contained in:
parent
f01f9a3ecb
commit
9c2ba123a2
|
@ -142,7 +142,7 @@ type OpManualUnlockWechatParam struct {
|
|||
Oid2 string `json:"oid2"` // oid2
|
||||
}
|
||||
|
||||
type OpRollbackZoneRefundStatusParam struct {
|
||||
type OpRollbackZoneExitStatusParam struct {
|
||||
Userid int64 `json:"userid"`
|
||||
StreamerUserid int64 `json:"streamer_userid"`
|
||||
}
|
||||
|
|
|
@ -318,7 +318,7 @@ func Init(r *gin.Engine) {
|
|||
opVasPayGroup.POST("wxpay_callback_manual", middleware.JSONParamValidator(vasproto.WxpayCallbackManualParam{}), WxpayCallbackManual)
|
||||
opVasPayGroup.POST("zone_refund_list", middleware.JSONParamValidator(zoneproto.OpZoneRefundListParam{}), OpZoneRefundList)
|
||||
opVasPayGroup.POST("manual_unlock_wechat", middleware.JSONParamValidator(zoneproto.OpManualUnlockWechatParam{}), OpManualUnlockWechat)
|
||||
opVasPayGroup.POST("rollback_zone_exit_status", middleware.JSONParamValidator(zoneproto.OpRollbackZoneRefundStatusParam{}), OpManualUnlockWechat)
|
||||
opVasPayGroup.POST("rollback_zone_exit_status", middleware.JSONParamValidator(zoneproto.OpRollbackZoneExitStatusParam{}), OpRollbackZoneAdmissionExitStatus)
|
||||
|
||||
// 慧用工
|
||||
extHvyogoGroup := r.Group("/ext/hvyogo")
|
||||
|
|
|
@ -76,9 +76,9 @@ func OpManualUnlockWechat(ctx *gin.Context) {
|
|||
ReplyOk(ctx, nil)
|
||||
}
|
||||
|
||||
func OpRollbackZoneRefundStatus(ctx *gin.Context) {
|
||||
req := ctx.MustGet("client_req").(*zoneproto.OpRollbackZoneRefundStatusParam)
|
||||
ec, err := service.DefaultService.OpRollbackZoneRefundStatus(ctx, req)
|
||||
func OpRollbackZoneAdmissionExitStatus(ctx *gin.Context) {
|
||||
req := ctx.MustGet("client_req").(*zoneproto.OpRollbackZoneExitStatusParam)
|
||||
ec, err := service.DefaultService.OpRollbackZoneAdmissionExitStatus(ctx, req)
|
||||
if ec != errcode.ErrCodeVasSrvOk {
|
||||
logger.Error("RefundOrder fail, req: %v, ec: %v", util.ToJson(req), ec)
|
||||
if err != nil {
|
||||
|
|
|
@ -590,3 +590,20 @@ func (m *Mysql) GetZoneMemberCountGroupByZoneMemberType(ctx *gin.Context, tx *sq
|
|||
}
|
||||
return
|
||||
}
|
||||
|
||||
// 回滚空间退出状态
|
||||
func (m *Mysql) RollbackZoneAdmissionExitStatus(ctx *gin.Context, tx *sqlx.Tx, orderCt, id int64) error {
|
||||
var err error
|
||||
sqlStr := "update " + TableVasZoneUnlock + " set admission_ct=?, admission_until=?, admission_unlock_type=? where id=?"
|
||||
args := []any{orderCt, -1, dbstruct.ZoneUnlockTypePay, id}
|
||||
if tx != nil {
|
||||
_, err = tx.ExecContext(ctx, sqlStr, args...)
|
||||
} else {
|
||||
db := m.getDBVas()
|
||||
_, err = db.ExecContext(ctx, sqlStr, args...)
|
||||
}
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
|
|
@ -1289,3 +1289,8 @@ func (v *Vas) ZoneGetIncomePage(ctx *gin.Context, mid int64) (*vasproto.IncomePa
|
|||
}
|
||||
return data, nil
|
||||
}
|
||||
|
||||
// 获取动态解锁记录
|
||||
func (v *Vas) RollbackZoneAdmissionExitStatus(ctx *gin.Context, ct, id int64) (err error) {
|
||||
return v.store.RollbackZoneAdmissionExitStatus(ctx, nil, ct, id)
|
||||
}
|
||||
|
|
|
@ -1176,14 +1176,59 @@ func (s *Service) VasIncomePage(ctx *gin.Context, req *vasproto.IncomePageReq) (
|
|||
return
|
||||
}
|
||||
|
||||
func (s *Service) OpRollbackZoneRefundStatus(ctx *gin.Context, req *zoneproto.OpRollbackZoneRefundStatusParam) (ec errcode.ErrCode, err error) {
|
||||
func (s *Service) OpRollbackZoneAdmissionExitStatus(ctx *gin.Context, req *zoneproto.OpRollbackZoneExitStatusParam) (ec errcode.ErrCode, err error) {
|
||||
// 获取用户mid
|
||||
userAcnt, _ := _DefaultAccount.OpListByUserId(ctx, &accountproto.OpListByUserIdReq{UserId: goproto.Int64(req.Userid)})
|
||||
|
||||
err = _DefaultVas.SuperfanUnlockContact(ctx, nil, req.Mid, req.StreamerMid, req.Oid2)
|
||||
ec, err = errs.DealVasErr(err)
|
||||
// 获取主播mid
|
||||
streamerAcnt, _ := _DefaultAccount.OpListByUserId(ctx, &accountproto.OpListByUserIdReq{UserId: goproto.Int64(req.StreamerUserid)})
|
||||
// 获取主播空间id
|
||||
zone, _ := _DefaultZone.GetByMid(ctx, streamerAcnt.GetMid())
|
||||
|
||||
var (
|
||||
uMid = userAcnt.GetMid()
|
||||
sMid = streamerAcnt.GetMid()
|
||||
zid = zone.GetId()
|
||||
)
|
||||
|
||||
zuMap, err := _DefaultVas.GetZoneUnlockMapByMidZids(ctx, uMid, []int64{zid})
|
||||
if err != nil {
|
||||
logger.Error("OneStepUnlockContact fail, req: %v, err: %v", util.ToJson(req), err)
|
||||
logger.Error("GetZoneUnlockMapByMidZids fail, mid: %v, sMid: %v, zid: %v, err: %v", uMid, sMid, zid, err)
|
||||
return
|
||||
}
|
||||
zu := zuMap[zid]
|
||||
if zu == nil {
|
||||
err = fmt.Errorf("invalid zu, mid: %v, sMid: %v, zid: %v", uMid, sMid, zid)
|
||||
logger.Error("%v", err)
|
||||
return
|
||||
}
|
||||
|
||||
// 检查是否主动退出
|
||||
if zu.GetAdmissionUnlockType() != dbstruct.ZoneUnlockTypeExit {
|
||||
err = fmt.Errorf("invalid AdmissionUnlockType")
|
||||
logger.Error("%v, mid: %v, sMid: %v, zid: %v, zu: %v", err, uMid, sMid, zid, util.ToJson(zu))
|
||||
return
|
||||
}
|
||||
|
||||
// 检查订单状态
|
||||
orderId := zu.GetAdmissionOrderId()
|
||||
order, err := _DefaultVas.GetOrderById(ctx, nil, orderId)
|
||||
if err != nil {
|
||||
logger.Error("GetOrderById fail, mid: %v, sMid: %v, zid: %v, orderId: %v, err: %v", uMid, sMid, zid, orderId, err)
|
||||
return
|
||||
}
|
||||
if !util.InInt32Slice([]int32{dbstruct.VasOrderStatusPaySuccess, dbstruct.VasOrderStatusFinish}, order.GetOrderStatus()) {
|
||||
err = fmt.Errorf("invalid orderStatus")
|
||||
logger.Error("%v, mid: %v, sMid: %v, zid: %v, order: %v", err, uMid, sMid, zid, util.ToJson(order))
|
||||
return
|
||||
}
|
||||
|
||||
// 回滚
|
||||
err = _DefaultVas.RollbackZoneAdmissionExitStatus(ctx, order.GetUt(), zu.GetId())
|
||||
if err != nil {
|
||||
logger.Error("RollbackZoneAdmissionExitStatus fail, mid: %v, sMid: %v, zid: %v, zu: %v, err: %v", uMid, sMid, zid, util.ToJson(zu), err)
|
||||
return
|
||||
}
|
||||
logger.Info("RollbackZoneAdmissionExitStatus success, uid: %v, suid: %v, mid: %v, sMid: %v, zid: %v", req.Userid, req.StreamerUserid, uMid, sMid, zid)
|
||||
return
|
||||
}
|
||||
|
|
|
@ -217,3 +217,39 @@ func SortParam(argList []*message.JsonParamEntry) string {
|
|||
}
|
||||
return strings.Join(args, "&")
|
||||
}
|
||||
|
||||
func InInt64Slice(slice []int64, item int64) bool {
|
||||
for _, s := range slice {
|
||||
if s == item {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func InInt32Slice(slice []int32, item int32) bool {
|
||||
for _, s := range slice {
|
||||
if s == item {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func InIntSlice(slice []int, item int) bool {
|
||||
for _, s := range slice {
|
||||
if s == item {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func InStrSlice(slice []string, item string) bool {
|
||||
for _, s := range slice {
|
||||
if s == item {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue