Files
proxy_server/app/admin/apis/member_proxy.go
hucan 7f9101fcac 1、定时删除过期数据
2、默认自动续期
2025-07-29 18:16:12 +08:00

526 lines
11 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package apis
import (
"fmt"
"github.com/gin-gonic/gin"
"github.com/go-admin-team/go-admin-core/sdk/api"
"github.com/go-admin-team/go-admin-core/sdk/pkg/jwtauth/user"
_ "github.com/go-admin-team/go-admin-core/sdk/pkg/response"
"go-admin/app/admin/models"
"go-admin/app/admin/service"
"go-admin/app/admin/service/dto"
"go-admin/common/actions"
)
type MemberProxy struct {
api.Api
}
// GetPage 获取用户获取ip记录列表
// @Summary 获取用户获取ip记录列表
// @Description 获取用户获取ip记录列表
// @Tags 用户获取ip记录
// @Param area query string false "国家区域"
// @Param state query string false "城市"
// @Param pageSize query int false "页条数"
// @Param pageIndex query int false "页码"
// @Success 200 {object} response.Response{data=response.Page{list=[]models.MemberProxy}} "{"code": 200, "data": [...]}"
// @Router /api/v1/member-proxy [get]
// @Security Bearer
func (e MemberProxy) GetPage(c *gin.Context) {
req := dto.MemberProxyGetPageReq{}
s := service.MemberProxy{}
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
}
p := actions.GetPermissionFromContext(c)
list := make([]models.MemberProxy, 0)
var count int64
err = s.GetPage(&req, p, &list, &count)
if err != nil {
e.Error(500, err, fmt.Sprintf("获取用户获取ip记录失败\r\n失败信息 %s", err.Error()))
return
}
e.PageOK(list, int(count), req.GetPageIndex(), req.GetPageSize(), "查询成功")
}
// Get 获取用户获取ip记录
// @Summary 获取用户获取ip记录
// @Description 获取用户获取ip记录
// @Tags 用户获取ip记录
// @Param id path int false "id"
// @Success 200 {object} response.Response{data=models.MemberProxy} "{"code": 200, "data": [...]}"
// @Router /api/v1/member-proxy/{id} [get]
// @Security Bearer
func (e MemberProxy) Get(c *gin.Context) {
req := dto.MemberProxyGetReq{}
s := service.MemberProxy{}
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
}
var object models.MemberProxy
p := actions.GetPermissionFromContext(c)
err = s.Get(&req, p, &object)
if err != nil {
e.Error(500, err, fmt.Sprintf("获取用户获取ip记录失败\r\n失败信息 %s", err.Error()))
return
}
e.OK(object, "查询成功")
}
// Insert 创建用户获取ip记录
// @Summary 创建用户获取ip记录
// @Description 创建用户获取ip记录
// @Tags 用户获取ip记录
// @Accept application/json
// @Product application/json
// @Param data body dto.MemberProxyInsertReq true "data"
// @Success 200 {object} response.Response "{"code": 200, "message": "添加成功"}"
// @Router /api/v1/member-proxy [post]
// @Security Bearer
func (e MemberProxy) Insert(c *gin.Context) {
req := dto.MemberProxyInsertReq{}
s := service.MemberProxy{}
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
}
// 设置创建人
req.SetCreateBy(user.GetUserId(c))
err = s.Insert(&req)
if err != nil {
e.Error(500, err, fmt.Sprintf("创建用户获取ip记录失败\r\n失败信息 %s", err.Error()))
return
}
e.OK(req.GetId(), "创建成功")
}
// Update 修改用户获取ip记录
// @Summary 修改用户获取ip记录
// @Description 修改用户获取ip记录
// @Tags 用户获取ip记录
// @Accept application/json
// @Product application/json
// @Param id path int true "id"
// @Param data body dto.MemberProxyUpdateReq true "body"
// @Success 200 {object} response.Response "{"code": 200, "message": "修改成功"}"
// @Router /api/v1/member-proxy/{id} [put]
// @Security Bearer
func (e MemberProxy) Update(c *gin.Context) {
req := dto.MemberProxyUpdateReq{}
s := service.MemberProxy{}
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
}
req.SetUpdateBy(user.GetUserId(c))
p := actions.GetPermissionFromContext(c)
err = s.Update(&req, p)
if err != nil {
e.Error(500, err, fmt.Sprintf("修改用户获取ip记录失败\r\n失败信息 %s", err.Error()))
return
}
e.OK(req.GetId(), "修改成功")
}
// Delete 删除用户获取ip记录
// @Summary 删除用户获取ip记录
// @Description 删除用户获取ip记录
// @Tags 用户获取ip记录
// @Param data body dto.MemberProxyDeleteReq true "body"
// @Success 200 {object} response.Response "{"code": 200, "message": "删除成功"}"
// @Router /api/v1/member-proxy [delete]
// @Security Bearer
func (e MemberProxy) Delete(c *gin.Context) {
s := service.MemberProxy{}
req := dto.MemberProxyDeleteReq{}
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
}
// req.SetUpdateBy(user.GetUserId(c))
p := actions.GetPermissionFromContext(c)
err = s.Remove(&req, p)
if err != nil {
e.Error(500, err, fmt.Sprintf("删除用户获取ip记录失败\r\n失败信息 %s", err.Error()))
return
}
e.OK(req.GetId(), "删除成功")
}
// CreateProxy 生成代理
func (e MemberProxy) CreateProxy(c *gin.Context) {
req := dto.CliProxyIPUseReq{}
s := service.CliProxyService{}
err := e.MakeContext(c).
MakeOrm().
Bind(&req).
MakeService(&s.Service).
Errors
if err != nil {
e.Logger.Error(err)
e.Error(500, nil, "server error")
return
}
userId := user.GetUserId(c)
balance, err := s.UseIp(&req, userId)
if err != nil {
e.Logger.Errorf("create proxy error:%s", err.Error())
e.Error(500, nil, err.Error())
return
}
e.OK(balance, "创建成功")
}
// 获取地区信息
func (e MemberProxy) GetTraffic(c *gin.Context) {
s := service.CliProxyService{}
// req := dto.MemberProxyGetTrafficReq{}
err := e.MakeContext(c).
MakeOrm().
// Bind(&req).
MakeService(&s.Service).
Errors
if err != nil {
e.Logger.Error(err)
e.Error(500, nil, "server error")
return
}
datas, err := s.GetTrafficInfo()
if err != nil {
e.Logger.Error(err)
e.Error(500, nil, "server error")
return
}
e.OK(datas, "success")
}
// 生成流量账号
func (e MemberProxy) GenerateProxy(c *gin.Context) {
req := dto.MemberProxyInsertReq{}
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")
return
}
userId := user.GetUserId(c)
balance, err := s.CreateProxy(&req, userId)
if err != nil {
e.Logger.Error("生成流量账号失败", err)
e.Error(500, nil, err.Error())
return
}
e.OK(balance, "success")
}
func (e MemberProxy) ResetGenerateProxy(c *gin.Context) {
req := dto.MemberProxyResetGenerateReq{}
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")
return
}
userId := user.GetUserId(c)
err = s.ResetGenerateProxy(&req, userId)
if err != nil {
e.Logger.Error("重置流量账号失败", err)
e.Error(500, nil, "重置流量账号失败")
return
}
e.OK(nil, "success")
}
// 获取端口
func (e MemberProxy) GetTrafficServer(c *gin.Context) {
req := dto.MemberProxyGetTrafficServerReq{}
s := service.CliProxyService{}
err := e.MakeContext(c).
MakeOrm().
Bind(&req).
MakeService(&s.Service).
Errors
if err != nil {
e.Logger.Error(err)
e.Error(500, nil, "server error")
return
}
data, err := s.GetTrafficServer(&req)
if err != nil {
e.Logger.Error(err)
e.Error(500, nil, "server error")
return
}
e.OK(data, "success")
}
// 获取我的代理
func (e MemberProxy) GetMyProxy(c *gin.Context) {
s := service.MemberProxy{}
req := dto.MemberProxyGetMyProxyReq{}
err := e.MakeContext(c).
MakeOrm().
Bind(&req).
MakeService(&s.Service).
Errors
if err != nil {
e.Logger.Error(err)
e.Error(500, nil, "server error")
return
}
var count int64
userId := user.GetUserId(c)
list := make([]dto.MemberProxyResp, 0)
err = s.GetMyProxy(&req, &list, &count, userId)
if err != nil {
e.Logger.Error(err)
e.Error(500, nil, "server error")
return
}
e.PageOK(list, int(count), req.GetPageIndex(), req.GetPageSize(), "success")
}
// 获取长效ip列表
func (e MemberProxy) GetIpList(c *gin.Context) {
req := dto.CliProxyIPListGetReq{}
s := service.CliProxyService{}
err := e.MakeContext(c).
MakeOrm().
Bind(&req).
MakeService(&s.Service).
Errors
if err != nil {
e.Logger.Error(err)
e.Error(500, nil, "server error")
return
}
userId := user.GetUserId(c)
data, err := s.GetIps(&req, userId)
if err != nil {
e.Logger.Error(err)
e.Error(500, nil, "server error")
return
}
if req.Lang == "zh" {
for i, v := range data {
data[i].City = v.CityZh
data[i].Country = v.CountryZh
}
}
e.OK(data, "success")
}
// 用户手动续期
func (e MemberProxy) UserRenewal(c *gin.Context) {
req := dto.MemberProxyUserRenewalReq{}
s := service.MemberRenewalLog{}
err := e.MakeContext(c).
MakeOrm().
Bind(&req).
MakeService(&s.Service).
Errors
if err != nil {
e.Logger.Error(err)
e.Error(500, nil, "server error")
return
}
if req.ProxyId <= 0 {
e.Error(500, nil, "代理不能为空")
return
}
userId := user.GetUserId(c)
balance, err := s.UserRenewal(&req, userId)
if err != nil {
e.Logger.Error(err)
e.Error(500, nil, err.Error())
return
}
e.OK(balance, "success")
}
// 用户切花自动续期状态
func (e MemberProxy) ChangeAutoRenewal(c *gin.Context) {
req := dto.MemberProxyChangeAutoRenewalReq{}
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")
return
}
if req.ProxyId <= 0 {
e.Error(500, nil, "代理不存在")
return
}
userId := user.GetUserId(c)
err = s.ChangeAutoRenewal(&req, userId)
if err != nil {
e.Logger.Error(err)
e.Error(500, nil, "server error")
return
}
e.OK(nil, "success")
}
// 删除自己的代理
func (e MemberProxy) DeleteMyProxy(c *gin.Context) {
req := dto.MemberProxyDeleteMyProxyReq{}
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.DeleteMyProxy(&req, userId)
if err != nil {
e.Logger.Error(err)
e.Error(500, nil, err.Error())
return
}
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")
}