From 73c6cf9844dc7f419e0e78d0356cadde8dbf2317 Mon Sep 17 00:00:00 2001 From: hucan <951870319@qq.com> Date: Tue, 14 Oct 2025 20:00:02 +0800 Subject: [PATCH] =?UTF-8?q?1=E3=80=81=E6=9A=82=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/admin/apis/sms_renewal_log.go | 36 ++++++++++++++++++++++++ app/admin/service/dto/sms_renewal_log.go | 5 ++++ app/admin/service/sms_phone.go | 24 ++++++++++++++-- 3 files changed, 62 insertions(+), 3 deletions(-) diff --git a/app/admin/apis/sms_renewal_log.go b/app/admin/apis/sms_renewal_log.go index c45ab5d..fd91344 100644 --- a/app/admin/apis/sms_renewal_log.go +++ b/app/admin/apis/sms_renewal_log.go @@ -12,6 +12,8 @@ import ( "go-admin/app/admin/service" "go-admin/app/admin/service/dto" "go-admin/common/actions" + "go-admin/common/middleware" + "go-admin/common/statuscode" ) type SmsRenewalLog struct { @@ -190,3 +192,37 @@ func (e SmsRenewalLog) Delete(c *gin.Context) { } e.OK(req.GetId(), "删除成功") } + +// 手动扣费 +func (e SmsPhone) ManualDeduct(c *gin.Context) { + req := dto.ManualDeductReq{} + s := service.SmsPhone{} + + err := e.MakeContext(c). + MakeOrm(). + Bind(&req). + MakeService(&s.Service). + Errors + if err != nil { + e.Logger.Error(err) + e.Error(500, err, err.Error()) + return + } + + userId, err := middleware.GetUserIdByApiKey(c) + + if err != nil { + e.Logger.Error("获取用户id失败", err) + e.Error(statuscode.Unauthorized, nil, statuscode.GetMsg(statuscode.Unauthorized, "en")) + return + } + + _, err = s.ManualDeduct(&req, userId) + if err != nil { + e.Logger.Error(err) + e.Error(500, err, err.Error()) + return + } + + e.OK(nil, "success") +} diff --git a/app/admin/service/dto/sms_renewal_log.go b/app/admin/service/dto/sms_renewal_log.go index 3c4d113..47c127b 100644 --- a/app/admin/service/dto/sms_renewal_log.go +++ b/app/admin/service/dto/sms_renewal_log.go @@ -126,3 +126,8 @@ type SmsRenewalLogResp struct { // DeletedAt time.Time `json:"deletedAt" comment:"删除时间"` UserName string `json:"username" comment:"用户名"` } + +// 手动扣费 +type ManualDeductReq struct { + ActivationId string `json:"activationId" comment:"激活id"` +} diff --git a/app/admin/service/sms_phone.go b/app/admin/service/sms_phone.go index f60c42f..d697031 100644 --- a/app/admin/service/sms_phone.go +++ b/app/admin/service/sms_phone.go @@ -23,8 +23,26 @@ type SmsPhone struct { service.Service } +// 手动扣费 +func (e *SmsPhone) ManualDeduct(req *dto.ManualDeductReq, userId int) (any, int) { + //TODO + var entity models.SmsPhone + + if err := e.Orm.Model(&entity).Where("activation_id =?", req.ActivationId).First(&entity).Error; err != nil { + e.Log.Errorf("获取短信号码失败, %s", err) + return nil, statuscode.SmsNotExisted + } + + var serviceMap map[string]models.SmsServices + var permiumMap map[string]dto.GetSysConfigByKEYForServiceResp + + e.processPhoneRenewal(entity, serviceMap, permiumMap) + + return nil, statuscode.Success +} + // open-API 获取电话号码 -func (e SmsPhone) OpenGetNumber(req *dto.GetNumberReq, userId int) (dto.OpenGetNumberResp, int) { +func (e *SmsPhone) OpenGetNumber(req *dto.GetNumberReq, userId int) (dto.OpenGetNumberResp, int) { resp := dto.OpenGetNumberResp{} balanceService := MemberBalance{Service: e.Service} balance, smsPhone, i := e.DoGetNumber(&balanceService, req, userId) @@ -613,7 +631,7 @@ func (e *SmsPhone) AutoRenewal() error { return nil } -// 手动续费 +// 手动续费(处理到期号码) func (e *SmsPhone) ManualRenewal(activationIds []string) ([]string, error) { if len(activationIds) == 0 { return nil, errors.New("activationIds 不能为空") @@ -761,7 +779,7 @@ func (e *SmsPhone) executeRenewalTransaction(phone models.SmsPhone, price decima return nil }) - if err != nil && err.Error() == "余额不足" { + if err != nil && err.Error() == "余额不足" && phone.ExpireTime.Before(time.Now()) { return e.handleInsufficientBalance(phone) }