diff --git a/api/proto/vas/proto/vas.go b/api/proto/vas/proto/vas.go index 27bf2730..2c8f69cc 100644 --- a/api/proto/vas/proto/vas.go +++ b/api/proto/vas/proto/vas.go @@ -256,7 +256,7 @@ type ZoneRefundInfoReq struct { } type ZoneRefundInfoData struct { - ZoneRefundInfoVo *ZoneRefundInfoVo + *ZoneRefundInfoVo } type ZoneRefundInfoResp struct { @@ -272,7 +272,7 @@ type ZoneRefundAuditReq struct { base.BaseRequest Zid int64 `json:"zid"` // 空间 id AuditId string `json:"audit_id"` // 审核 id(列表 id) - RefundsStatus string `json:"refunds_status"` // 退款状态 + RefundsStatus int64 `json:"refunds_status"` // 退款状态 } // 更新空间价格信息 diff --git a/app/mix/controller/zone_vas_api.go b/app/mix/controller/zone_vas_api.go index e398dc0c..a5079cae 100644 --- a/app/mix/controller/zone_vas_api.go +++ b/app/mix/controller/zone_vas_api.go @@ -200,6 +200,12 @@ func ZoneRefundAudit(ctx *gin.Context) { return } + if req.RefundsStatus != dbstruct.Refunds_Approved && req.RefundsStatus != dbstruct.Refunds_Rejected { + logger.Error("ZoneRefundAudit, RefundsStatus: parameter invalid , req: %v", util.ToJson(req)) + ReplyErrCodeMsg(ctx, errcode.ErrCodeBadParam) + return + } + ec, err := service.DefaultService.ZoneRefundAudit(ctx, req) if ec != errcode.ErrCodeVasSrvOk { logger.Error("ZoneRefundAudit fail, req: %v, ec: %v", util.ToJson(req), ec) diff --git a/app/mix/dao/mongo_vas.go b/app/mix/dao/mongo_vas.go index df888bf0..5bc7be1c 100644 --- a/app/mix/dao/mongo_vas.go +++ b/app/mix/dao/mongo_vas.go @@ -323,7 +323,7 @@ func (m *Mongo) GetZoneRefundInfo(ctx *gin.Context, auditId string) (*dbstruct.R err := col.Find(ctx, query).One(&doc) if errors.Is(err, qmgo.ErrNoSuchDocuments) { err = nil - return nil, nil + return nil, err } if err != nil { return nil, err @@ -332,7 +332,7 @@ func (m *Mongo) GetZoneRefundInfo(ctx *gin.Context, auditId string) (*dbstruct.R } // 用户退款表:主播审核 -func (m *Mongo) SetZoneRefundAuditInfo(ctx *gin.Context, auditId string, refundsStatus string) error { +func (m *Mongo) SetZoneRefundAuditInfo(ctx *gin.Context, auditId string, refundsStatus int64) error { col := m.GetZoneRefund() _, err := col.Bulk().UpsertOne( qmgo.M{ diff --git a/app/mix/service/logic/vas_zone.go b/app/mix/service/logic/vas_zone.go index 21d9a806..4eedefb6 100644 --- a/app/mix/service/logic/vas_zone.go +++ b/app/mix/service/logic/vas_zone.go @@ -1117,7 +1117,23 @@ func (v *Vas) ZoneRefundInfo(ctx *gin.Context, req *vasproto.ZoneRefundInfoReq) // 退款主播审核 func (v *Vas) ZoneRefundAudit(ctx *gin.Context, req *vasproto.ZoneRefundAuditReq) error { - err := v.store.SetZoneRefundAuditInfo(ctx, req.AuditId, req.RefundsStatus) + + info, err := v.store.GetZoneRefundInfo(ctx, req.AuditId) + if err != nil { + return err + } + + if info == nil { + logger.Error("ZoneRefundAudit no info, mid: %v, zid: %v, auditId: %v", req.Mid, req.Zid, req.AuditId) + return fmt.Errorf("审核订单不存在") + } + + if info.RefundsStatus == dbstruct.Refunds_Approved || info.RefundsStatus == dbstruct.Refunds_Rejected || info.RefundsStatus == dbstruct.Refunds_Overtime { + logger.Error("ZoneRefundAudit, refund has been approved, mid: %v, zid: %v, auditId: %v", req.Mid, req.Zid, req.AuditId) + return fmt.Errorf("退款订单已审核") + } + + err = v.store.SetZoneRefundAuditInfo(ctx, req.AuditId, req.RefundsStatus) if err != nil { return err }