1、定时删除过期数据
2、默认自动续期
This commit is contained in:
@ -496,3 +496,30 @@ func (e MemberProxy) DeleteMyProxy(c *gin.Context) {
|
|||||||
|
|
||||||
e.OK(nil, "success")
|
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")
|
||||||
|
}
|
||||||
|
|||||||
@ -404,3 +404,30 @@ func (e SmsPhone) ChangeAutoRenew(c *gin.Context) {
|
|||||||
|
|
||||||
e.OK(nil, "修改自动续费状态成功")
|
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, "清理成功")
|
||||||
|
}
|
||||||
|
|||||||
@ -30,6 +30,7 @@ func registerMemberProxyRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMi
|
|||||||
r2.POST("change-auto-renewal", api.ChangeAutoRenewal) //修改自动续费
|
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())
|
r := v1.Group("/member-proxy").Use(authMiddleware.MiddlewareFunc()).Use(middleware.AuthCheckRole())
|
||||||
|
|||||||
@ -24,6 +24,7 @@ func registerSmsPhoneRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddl
|
|||||||
r1.GET("list", api.GetMyPage) // 获取自己的号码列表
|
r1.GET("list", api.GetMyPage) // 获取自己的号码列表
|
||||||
r1.POST("weakUp", api.WeakUp) // 新增号码
|
r1.POST("weakUp", api.WeakUp) // 新增号码
|
||||||
r1.DELETE("my-number", api.DeleteMyNumber) // 删除自己的号码
|
r1.DELETE("my-number", api.DeleteMyNumber) // 删除自己的号码
|
||||||
|
r1.DELETE("clean", api.CleanMyPhone) //清理自己的号码
|
||||||
r1.PUT("cancel", api.CancelNumber) //取消号码
|
r1.PUT("cancel", api.CancelNumber) //取消号码
|
||||||
r1.PUT("auto-renewal", api.ChangeAutoRenew) //修改自动续费状态
|
r1.PUT("auto-renewal", api.ChangeAutoRenew) //修改自动续费状态
|
||||||
}
|
}
|
||||||
|
|||||||
@ -140,6 +140,7 @@ func (e *CliProxyService) UseIp(req *dto.CliProxyIPUseReq, userId int) (decimal.
|
|||||||
memberProxy.Password = resp.Data.Password
|
memberProxy.Password = resp.Data.Password
|
||||||
memberProxy.UserName = resp.Data.UserName
|
memberProxy.UserName = resp.Data.UserName
|
||||||
memberProxy.Expired = time.Unix(int64(resp.Data.Expired), 0)
|
memberProxy.Expired = time.Unix(int64(resp.Data.Expired), 0)
|
||||||
|
memberProxy.AutoRenewal = 1
|
||||||
|
|
||||||
err = e.Orm.Transaction(func(tx *gorm.DB) error {
|
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 {
|
if err1 := tx.Exec("UPDATE member_balance SET balance = balance - ? WHERE user_id =?", price, userId).Error; err1 != nil {
|
||||||
|
|||||||
@ -130,3 +130,7 @@ type MemberProxyResp struct {
|
|||||||
Status int `json:"status"`
|
Status int `json:"status"`
|
||||||
AutoRenewal bool `json:"autoRenewal"`
|
AutoRenewal bool `json:"autoRenewal"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type MemberProxyCleanReq struct {
|
||||||
|
Type int `json:"type" comment:"类型1-长效ip 2-流量计费"`
|
||||||
|
}
|
||||||
|
|||||||
@ -172,3 +172,7 @@ type SmsPhoneChangeAutoRenewReq struct {
|
|||||||
Id int `json:"id" comment:"短信号码id"`
|
Id int `json:"id" comment:"短信号码id"`
|
||||||
AutoRenew int `json:"autoRenew" comment:"是否自动续费 1-不自动续费 2-自动续费"`
|
AutoRenew int `json:"autoRenew" comment:"是否自动续费 1-不自动续费 2-自动续费"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type SmsPhoneCleanMyPhoneReq struct {
|
||||||
|
Type int `json:"type" comment:"类型 0-短效 1-长效"`
|
||||||
|
}
|
||||||
|
|||||||
@ -15,6 +15,7 @@ import (
|
|||||||
"go-admin/app/admin/service/dto"
|
"go-admin/app/admin/service/dto"
|
||||||
"go-admin/common/actions"
|
"go-admin/common/actions"
|
||||||
cDto "go-admin/common/dto"
|
cDto "go-admin/common/dto"
|
||||||
|
"go-admin/common/global"
|
||||||
)
|
)
|
||||||
|
|
||||||
type MemberProxy struct {
|
type MemberProxy struct {
|
||||||
@ -329,6 +330,38 @@ func (e *MemberProxy) CreateProxy(req *dto.MemberProxyInsertReq, userId int) (de
|
|||||||
return balance, err
|
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 <?", endTime).Error; err != nil {
|
||||||
|
e.Log.Errorf("删除过期数据失败 err:%v")
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func (e *MemberProxy) getUserName(area, state string) (decimal.Decimal, string, error) {
|
func (e *MemberProxy) getUserName(area, state string) (decimal.Decimal, string, error) {
|
||||||
configService := SysConfig{Service: e.Service}
|
configService := SysConfig{Service: e.Service}
|
||||||
cliProxyConfig := dto.GetSysConfigByKEYForServiceResp{}
|
cliProxyConfig := dto.GetSysConfigByKEYForServiceResp{}
|
||||||
|
|||||||
@ -15,6 +15,7 @@ import (
|
|||||||
"go-admin/app/admin/service/dto"
|
"go-admin/app/admin/service/dto"
|
||||||
"go-admin/common/actions"
|
"go-admin/common/actions"
|
||||||
cDto "go-admin/common/dto"
|
cDto "go-admin/common/dto"
|
||||||
|
"go-admin/common/global"
|
||||||
"go-admin/common/statuscode"
|
"go-admin/common/statuscode"
|
||||||
"go-admin/config"
|
"go-admin/config"
|
||||||
"go-admin/utils/httphelper"
|
"go-admin/utils/httphelper"
|
||||||
@ -214,6 +215,7 @@ func (e *SmsPhone) GetNumber(req *dto.GetNumberReq, userId int) (decimal.Decimal
|
|||||||
} else {
|
} else {
|
||||||
now = now.Add(time.Minute * time.Duration(serviceItem.ExpirationMinutes))
|
now = now.Add(time.Minute * time.Duration(serviceItem.ExpirationMinutes))
|
||||||
smsPhone.ExpireTime = &now
|
smsPhone.ExpireTime = &now
|
||||||
|
smsPhone.AutoRenewal = 2
|
||||||
}
|
}
|
||||||
|
|
||||||
smsPhone.Status = 1
|
smsPhone.Status = 1
|
||||||
@ -223,18 +225,24 @@ func (e *SmsPhone) GetNumber(req *dto.GetNumberReq, userId int) (decimal.Decimal
|
|||||||
return decimal.Zero, statuscode.ServerError
|
return decimal.Zero, statuscode.ServerError
|
||||||
}
|
}
|
||||||
|
|
||||||
// if req.Type == 1 {
|
|
||||||
// //保存长效号码
|
|
||||||
// // if code := e.KeepLongTerm(smsPhone.ActivationId); code != statuscode.Success {
|
|
||||||
// // return decimal.Zero, code
|
|
||||||
// // }
|
|
||||||
// }
|
|
||||||
|
|
||||||
if err := e.Orm.Exec("UPDATE member_balance SET balance = balance -? WHERE user_id =?", price, userId).Error; err != nil {
|
if err := e.Orm.Exec("UPDATE member_balance SET balance = balance -? WHERE user_id =?", price, userId).Error; err != nil {
|
||||||
e.Log.Errorf("更新余额失败", err)
|
e.Log.Errorf("更新余额失败", err)
|
||||||
return decimal.Zero, statuscode.ServerError
|
return decimal.Zero, statuscode.ServerError
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//长效号码默认开启续费
|
||||||
|
if req.Type == 1 {
|
||||||
|
code := e.ChangeAutoRenewForApi(smsPhone.NewActivationId, true)
|
||||||
|
|
||||||
|
if code == statuscode.Success {
|
||||||
|
smsPhone.AutoRenewal = 1
|
||||||
|
|
||||||
|
if err := e.Orm.Model(&smsPhone).Update("auto_renewal", smsPhone.AutoRenewal).Error; err != nil {
|
||||||
|
e.Log.Errorf("更新短信号码自动续期失败, %s", err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
balance = balanceService.GetBalance(userId)
|
balance = balanceService.GetBalance(userId)
|
||||||
|
|
||||||
return balance, statuscode.Success
|
return balance, statuscode.Success
|
||||||
@ -777,3 +785,35 @@ func (e *SmsPhone) Remove(d *dto.SmsPhoneDeleteReq, p *actions.DataPermission) e
|
|||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 清除我的数据
|
||||||
|
func (e *SmsPhone) CleanMyPhone(req *dto.SmsPhoneCleanMyPhoneReq, userId int) error {
|
||||||
|
if err := e.Orm.Where("user_id =? and type =?", userId, req.Type).Delete(&models.SmsPhone{}).Error; err != nil {
|
||||||
|
e.Log.Errorf("清除用户手机号码失败:%s", err.Error())
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除过期数据
|
||||||
|
func (e *SmsPhone) DeleteExpired() error {
|
||||||
|
configService := SysConfig{Service: e.Service}
|
||||||
|
cliProxyConfig := dto.GetSysConfigByKEYForServiceResp{}
|
||||||
|
configService.GetWithKey(&dto.SysConfigByKeyReq{ConfigKey: global.SmsExpiryTime}, &cliProxyConfig)
|
||||||
|
|
||||||
|
if cliProxyConfig.ConfigValue == "" {
|
||||||
|
e.Log.Error("获取短信过期保留时长失败")
|
||||||
|
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 sms_phone where expire_time <?", endTime).Error; err != nil {
|
||||||
|
e.Log.Errorf("删除过期数据失败 err:%v")
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|||||||
@ -18,6 +18,7 @@ func InitJob() {
|
|||||||
"CleanExpiredOrderJob": CleanExpiredOrderJob{}, //清理过期订单
|
"CleanExpiredOrderJob": CleanExpiredOrderJob{}, //清理过期订单
|
||||||
"SmsJob": SmsJob{}, //短信定时查询验证码
|
"SmsJob": SmsJob{}, //短信定时查询验证码
|
||||||
"SmsRenewalJob": SmsRenewalJob{}, //短信定时自动续期
|
"SmsRenewalJob": SmsRenewalJob{}, //短信定时自动续期
|
||||||
|
"AutoDeleteJob": AutoDeleteJob{}, //定时删除任务
|
||||||
// ...
|
// ...
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -9,6 +9,22 @@ import (
|
|||||||
type RenewalJob struct{}
|
type RenewalJob struct{}
|
||||||
type SmsRenewalJob struct{}
|
type SmsRenewalJob struct{}
|
||||||
type ExpireProxyJob struct{}
|
type ExpireProxyJob struct{}
|
||||||
|
type AutoDeleteJob struct{}
|
||||||
|
|
||||||
|
// 定时删除任务
|
||||||
|
func (j AutoDeleteJob) Exec(args interface{}) error {
|
||||||
|
memberService := service.MemberProxy{}
|
||||||
|
memberService.Orm = GetDb()
|
||||||
|
memberService.Log = logger.NewHelper(logger.DefaultLogger)
|
||||||
|
phoneService := service.SmsPhone{}
|
||||||
|
phoneService.Orm = GetDb()
|
||||||
|
phoneService.Log = logger.NewHelper(logger.DefaultLogger)
|
||||||
|
|
||||||
|
memberService.DeleteExpired()
|
||||||
|
phoneService.DeleteExpired()
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
// 定时续期任务
|
// 定时续期任务
|
||||||
func (j RenewalJob) Exec(args interface{}) error {
|
func (j RenewalJob) Exec(args interface{}) error {
|
||||||
|
|||||||
@ -17,3 +17,16 @@ func TestProxyJob(t *testing.T) {
|
|||||||
t.Error(err)
|
t.Error(err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestAutoDeleteJob(t *testing.T) {
|
||||||
|
initSetting()
|
||||||
|
config.ExtConfig.CliproxyUrl = "https://f.cliproxy.com"
|
||||||
|
config.ExtConfig.CliproxyApiUrl = "https://api.cliproxy.com"
|
||||||
|
config.ExtConfig.DaisysmsUrl = "https://daisysms.com/stubs/handler_api.php"
|
||||||
|
|
||||||
|
autoDeleteJob := AutoDeleteJob{}
|
||||||
|
|
||||||
|
if err := autoDeleteJob.Exec(nil); err != nil {
|
||||||
|
t.Error(err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@ -2,7 +2,10 @@ package global
|
|||||||
|
|
||||||
//ConfigKey
|
//ConfigKey
|
||||||
const (
|
const (
|
||||||
流量代理有效天数 = "traffic_proxy_effective_day"
|
TrafficProxyEffectiveDay = "traffic_proxy_effective_day" //流量代理有效天数
|
||||||
长效号码续费标准 = "long_number_renew_deduction_standard"
|
LongNumberRenewDeductionStandard = "long_number_renew_deduction_standard" //长效号码续费标准
|
||||||
长效IP续费kk扣除标准 = "ip_renew_deduction_standard"
|
IPRenewDeductionStandard = "ip_renew_deduction_standard" //长效IP续费kk扣除标准
|
||||||
|
|
||||||
|
ProxyExpiryTime = "proxy_expiry_time" //代理过期记录保留时长
|
||||||
|
SmsExpiryTime = "sms_expiry_time" //接码过期记录保留时长
|
||||||
)
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user