Initial commit (code only without large binaries)
This commit is contained in:
195
EdgeAdmin/internal/web/actions/default/plans/userPlans/index.go
Normal file
195
EdgeAdmin/internal/web/actions/default/plans/userPlans/index.go
Normal file
@@ -0,0 +1,195 @@
|
||||
// Copyright 2021 Liuxiangchao iwind.liu@gmail.com. All rights reserved.
|
||||
//go:build plus
|
||||
|
||||
package userPlans
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils"
|
||||
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/finance/financeutils"
|
||||
"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
|
||||
"github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs"
|
||||
"github.com/iwind/TeaGo/maps"
|
||||
)
|
||||
|
||||
type IndexAction struct {
|
||||
actionutils.ParentAction
|
||||
}
|
||||
|
||||
func (this *IndexAction) Init() {
|
||||
this.Nav("", "", "")
|
||||
}
|
||||
|
||||
func (this *IndexAction) RunGet(params struct {
|
||||
Type string
|
||||
UserId int64
|
||||
}) {
|
||||
if len(params.Type) == 0 {
|
||||
params.Type = "available"
|
||||
}
|
||||
this.Data["type"] = params.Type
|
||||
|
||||
var total int64 = 0
|
||||
|
||||
// 有效
|
||||
{
|
||||
countResp, err := this.RPC().UserPlanRPC().CountAllEnabledUserPlans(this.AdminContext(), &pb.CountAllEnabledUserPlansRequest{
|
||||
IsAvailable: true,
|
||||
IsExpired: false,
|
||||
ExpiringDays: 0,
|
||||
UserId: params.UserId,
|
||||
})
|
||||
if err != nil {
|
||||
this.ErrorPage(err)
|
||||
return
|
||||
}
|
||||
this.Data["countAvailable"] = countResp.Count
|
||||
|
||||
if params.Type == "available" {
|
||||
total = countResp.Count
|
||||
}
|
||||
}
|
||||
|
||||
// 过期
|
||||
{
|
||||
countResp, err := this.RPC().UserPlanRPC().CountAllEnabledUserPlans(this.AdminContext(), &pb.CountAllEnabledUserPlansRequest{
|
||||
IsAvailable: false,
|
||||
IsExpired: true,
|
||||
ExpiringDays: 0,
|
||||
UserId: params.UserId,
|
||||
})
|
||||
if err != nil {
|
||||
this.ErrorPage(err)
|
||||
return
|
||||
}
|
||||
this.Data["countExpired"] = countResp.Count
|
||||
|
||||
if params.Type == "expired" {
|
||||
total = countResp.Count
|
||||
}
|
||||
}
|
||||
|
||||
// 7天过期
|
||||
{
|
||||
countResp, err := this.RPC().UserPlanRPC().CountAllEnabledUserPlans(this.AdminContext(), &pb.CountAllEnabledUserPlansRequest{
|
||||
IsAvailable: false,
|
||||
IsExpired: false,
|
||||
ExpiringDays: 7,
|
||||
UserId: params.UserId,
|
||||
})
|
||||
if err != nil {
|
||||
this.ErrorPage(err)
|
||||
return
|
||||
}
|
||||
this.Data["countExpiring7"] = countResp.Count
|
||||
|
||||
if params.Type == "expiring7" {
|
||||
total = countResp.Count
|
||||
}
|
||||
}
|
||||
|
||||
// 30天过期
|
||||
{
|
||||
countResp, err := this.RPC().UserPlanRPC().CountAllEnabledUserPlans(this.AdminContext(), &pb.CountAllEnabledUserPlansRequest{
|
||||
IsAvailable: false,
|
||||
IsExpired: false,
|
||||
ExpiringDays: 30,
|
||||
UserId: params.UserId,
|
||||
})
|
||||
if err != nil {
|
||||
this.ErrorPage(err)
|
||||
return
|
||||
}
|
||||
this.Data["countExpiring30"] = countResp.Count
|
||||
|
||||
if params.Type == "expiring30" {
|
||||
total = countResp.Count
|
||||
}
|
||||
}
|
||||
|
||||
// 列表
|
||||
var page = this.NewPage(total)
|
||||
this.Data["page"] = page.AsHTML()
|
||||
|
||||
var expiringDays = int32(0)
|
||||
if params.Type == "expiring7" {
|
||||
expiringDays = 7
|
||||
} else if params.Type == "expiring30" {
|
||||
expiringDays = 30
|
||||
}
|
||||
userPlansResp, err := this.RPC().UserPlanRPC().ListEnabledUserPlans(this.AdminContext(), &pb.ListEnabledUserPlansRequest{
|
||||
IsAvailable: params.Type == "available",
|
||||
IsExpired: params.Type == "expired",
|
||||
ExpiringDays: expiringDays,
|
||||
UserId: params.UserId,
|
||||
Offset: page.Offset,
|
||||
Size: page.Size,
|
||||
})
|
||||
if err != nil {
|
||||
this.ErrorPage(err)
|
||||
return
|
||||
}
|
||||
var userPlanMaps = []maps.Map{}
|
||||
for _, userPlan := range userPlansResp.UserPlans {
|
||||
// user
|
||||
var userMap = maps.Map{"id": 0}
|
||||
if userPlan.User != nil {
|
||||
userMap = maps.Map{
|
||||
"id": userPlan.User.Id,
|
||||
"fullname": userPlan.User.Fullname,
|
||||
"username": userPlan.User.Username,
|
||||
}
|
||||
}
|
||||
|
||||
// plan
|
||||
var planMap = maps.Map{"id": 0}
|
||||
if userPlan.Plan != nil {
|
||||
planMap = maps.Map{
|
||||
"id": userPlan.Plan.Id,
|
||||
"name": userPlan.Plan.Name,
|
||||
}
|
||||
}
|
||||
|
||||
// server
|
||||
var serverMaps = []maps.Map{}
|
||||
if len(userPlan.Servers) > 0 {
|
||||
for _, server := range userPlan.Servers {
|
||||
// 补足网站名称
|
||||
if len(server.Name) == 0 && len(server.ServerNamesJSON) > 0 {
|
||||
var serverNames = []*serverconfigs.ServerNameConfig{}
|
||||
err = json.Unmarshal(server.ServerNamesJSON, &serverNames)
|
||||
if err == nil && len(serverNames) > 0 {
|
||||
server.Name = serverNames[0].FirstName()
|
||||
}
|
||||
}
|
||||
|
||||
serverMaps = append(serverMaps, maps.Map{
|
||||
"id": server.Id,
|
||||
"name": server.Name,
|
||||
"type": server.Type,
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
userPlanMaps = append(userPlanMaps, maps.Map{
|
||||
"id": userPlan.Id,
|
||||
"isOn": userPlan.IsOn,
|
||||
"name": userPlan.Name,
|
||||
"dayTo": userPlan.DayTo,
|
||||
"user": userMap,
|
||||
"plan": planMap,
|
||||
"servers": serverMaps,
|
||||
})
|
||||
}
|
||||
this.Data["userPlans"] = userPlanMaps
|
||||
|
||||
// 价格设置
|
||||
priceConfig, err := financeutils.ReadPriceConfig(this.AdminContext())
|
||||
if err != nil {
|
||||
this.ErrorPage(err)
|
||||
return
|
||||
}
|
||||
this.Data["canUsePlans"] = priceConfig != nil && priceConfig.EnablePlans
|
||||
|
||||
this.Show()
|
||||
}
|
||||
Reference in New Issue
Block a user