From 7f9101fcac56b2637dec5b8d3e8b40397b51768b Mon Sep 17 00:00:00 2001 From: hucan <951870319@qq.com> Date: Tue, 29 Jul 2025 18:16:12 +0800 Subject: [PATCH] =?UTF-8?q?1=E3=80=81=E5=AE=9A=E6=97=B6=E5=88=A0=E9=99=A4?= =?UTF-8?q?=E8=BF=87=E6=9C=9F=E6=95=B0=E6=8D=AE=202=E3=80=81=E9=BB=98?= =?UTF-8?q?=E8=AE=A4=E8=87=AA=E5=8A=A8=E7=BB=AD=E6=9C=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/admin/apis/member_proxy.go | 27 ++++++++++++++ app/admin/apis/sms_phone.go | 27 ++++++++++++++ app/admin/router/member_proxy.go | 3 +- app/admin/router/sms_phone.go | 1 + app/admin/service/cliproxy_server.go | 1 + app/admin/service/dto/member_proxy.go | 4 ++ app/admin/service/dto/sms_phone.go | 4 ++ app/admin/service/member_proxy.go | 33 ++++++++++++++++ app/admin/service/sms_phone.go | 54 +++++++++++++++++++++++---- app/jobs/examples.go | 1 + app/jobs/proxy_job.go | 16 ++++++++ app/jobs/proxy_job_test.go | 13 +++++++ common/global/config_key.go | 9 +++-- 13 files changed, 182 insertions(+), 11 deletions(-) diff --git a/app/admin/apis/member_proxy.go b/app/admin/apis/member_proxy.go index c72a953..9f839bb 100644 --- a/app/admin/apis/member_proxy.go +++ b/app/admin/apis/member_proxy.go @@ -496,3 +496,30 @@ func (e MemberProxy) DeleteMyProxy(c *gin.Context) { e.OK(nil, "success") } + +// 清除自己的代理 +func (e MemberProxy) CleanMyProxy(c *gin.Context) { + req := dto.MemberProxyCleanReq{} + s := service.MemberProxy{} + err := e.MakeContext(c). + MakeOrm(). + Bind(&req). + MakeService(&s.Service). + Errors + + if err != nil { + e.Logger.Error(err) + e.Error(500, nil, "server error") + } + + userId := user.GetUserId(c) + err = s.CleanMyProxy(&req, userId) + + if err != nil { + e.Logger.Error(err) + e.Error(500, nil, err.Error()) + return + } + + e.OK(nil, "success") +} diff --git a/app/admin/apis/sms_phone.go b/app/admin/apis/sms_phone.go index f00ecd5..18d8a9d 100644 --- a/app/admin/apis/sms_phone.go +++ b/app/admin/apis/sms_phone.go @@ -404,3 +404,30 @@ func (e SmsPhone) ChangeAutoRenew(c *gin.Context) { e.OK(nil, "修改自动续费状态成功") } + +// 清除我的号码 +func (e SmsPhone) CleanMyPhone(c *gin.Context) { + req := dto.SmsPhoneCleanMyPhoneReq{} + 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 := user.GetUserId(c) + + err = s.CleanMyPhone(&req, userId) + + if err != nil { + e.Error(500, err, fmt.Sprintf("清理失败,\r\n失败信息 %s", err.Error())) + return + } + + e.OK(nil, "清理成功") +} diff --git a/app/admin/router/member_proxy.go b/app/admin/router/member_proxy.go index e42abcd..4a59a8d 100644 --- a/app/admin/router/member_proxy.go +++ b/app/admin/router/member_proxy.go @@ -29,7 +29,8 @@ func registerMemberProxyRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMi r2.POST("user-renewal", api.UserRenewal) //用户续费 r2.POST("change-auto-renewal", api.ChangeAutoRenewal) //修改自动续费 - r2.DELETE("my", api.DeleteMyProxy) //删除我的代理 + r2.DELETE("my", api.DeleteMyProxy) //删除我的代理 + r2.DELETE("clean", api.CleanMyProxy) //清理自己的代理 } r := v1.Group("/member-proxy").Use(authMiddleware.MiddlewareFunc()).Use(middleware.AuthCheckRole()) diff --git a/app/admin/router/sms_phone.go b/app/admin/router/sms_phone.go index bc9898c..8e2ee14 100644 --- a/app/admin/router/sms_phone.go +++ b/app/admin/router/sms_phone.go @@ -24,6 +24,7 @@ func registerSmsPhoneRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddl r1.GET("list", api.GetMyPage) // 获取自己的号码列表 r1.POST("weakUp", api.WeakUp) // 新增号码 r1.DELETE("my-number", api.DeleteMyNumber) // 删除自己的号码 + r1.DELETE("clean", api.CleanMyPhone) //清理自己的号码 r1.PUT("cancel", api.CancelNumber) //取消号码 r1.PUT("auto-renewal", api.ChangeAutoRenew) //修改自动续费状态 } diff --git a/app/admin/service/cliproxy_server.go b/app/admin/service/cliproxy_server.go index 038180c..faddf0c 100644 --- a/app/admin/service/cliproxy_server.go +++ b/app/admin/service/cliproxy_server.go @@ -140,6 +140,7 @@ func (e *CliProxyService) UseIp(req *dto.CliProxyIPUseReq, userId int) (decimal. memberProxy.Password = resp.Data.Password memberProxy.UserName = resp.Data.UserName memberProxy.Expired = time.Unix(int64(resp.Data.Expired), 0) + memberProxy.AutoRenewal = 1 err = e.Orm.Transaction(func(tx *gorm.DB) error { if err1 := tx.Exec("UPDATE member_balance SET balance = balance - ? WHERE user_id =?", price, userId).Error; err1 != nil { diff --git a/app/admin/service/dto/member_proxy.go b/app/admin/service/dto/member_proxy.go index 2dbe7a4..be3ccbc 100644 --- a/app/admin/service/dto/member_proxy.go +++ b/app/admin/service/dto/member_proxy.go @@ -130,3 +130,7 @@ type MemberProxyResp struct { Status int `json:"status"` AutoRenewal bool `json:"autoRenewal"` } + +type MemberProxyCleanReq struct { + Type int `json:"type" comment:"类型1-长效ip 2-流量计费"` +} diff --git a/app/admin/service/dto/sms_phone.go b/app/admin/service/dto/sms_phone.go index 4fcce93..7697722 100644 --- a/app/admin/service/dto/sms_phone.go +++ b/app/admin/service/dto/sms_phone.go @@ -172,3 +172,7 @@ type SmsPhoneChangeAutoRenewReq struct { Id int `json:"id" comment:"短信号码id"` AutoRenew int `json:"autoRenew" comment:"是否自动续费 1-不自动续费 2-自动续费"` } + +type SmsPhoneCleanMyPhoneReq struct { + Type int `json:"type" comment:"类型 0-短效 1-长效"` +} diff --git a/app/admin/service/member_proxy.go b/app/admin/service/member_proxy.go index 0119544..f4e1c8a 100644 --- a/app/admin/service/member_proxy.go +++ b/app/admin/service/member_proxy.go @@ -15,6 +15,7 @@ import ( "go-admin/app/admin/service/dto" "go-admin/common/actions" cDto "go-admin/common/dto" + "go-admin/common/global" ) type MemberProxy struct { @@ -329,6 +330,38 @@ func (e *MemberProxy) CreateProxy(req *dto.MemberProxyInsertReq, userId int) (de return balance, err } +// 清除我的代理 +func (e *MemberProxy) CleanMyProxy(req *dto.MemberProxyCleanReq, userId int) error { + if err := e.Orm.Where("user_id =? and type =?", userId, req.Type).Delete(&models.MemberProxy{}).Error; err != nil { + e.Log.Errorf("清除数据失败 err:%v", err) + return errors.New("删除失败") + } + + return nil +} + +// 删除过期数据 +func (e *MemberProxy) DeleteExpired() error { + configService := SysConfig{Service: e.Service} + cliProxyConfig := dto.GetSysConfigByKEYForServiceResp{} + configService.GetWithKey(&dto.SysConfigByKeyReq{ConfigKey: global.ProxyExpiryTime}, &cliProxyConfig) + + if cliProxyConfig.ConfigValue == "" { + e.Log.Error("获取动态ip默认时长失败") + return errors.New("server error") + } + + day, _ := strconv.Atoi(cliProxyConfig.ConfigValue) + timeDruction := time.Hour * 24 * time.Duration(day) + endTime := time.Now().Add(-timeDruction) + + if err := e.Orm.Exec("delete from member_proxy where expired