115 lines
3.4 KiB
Go
115 lines
3.4 KiB
Go
// Copyright 2023 Liuxiangchao iwind.liu@gmail.com. All rights reserved. Official site: https://goedge.cn .
|
|
|
|
package instances
|
|
|
|
import (
|
|
"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
|
|
"github.com/TeaOSLab/EdgeCommon/pkg/userconfigs"
|
|
"github.com/TeaOSLab/EdgeUser/internal/utils/dateutils"
|
|
"github.com/TeaOSLab/EdgeUser/internal/web/actions/actionutils"
|
|
"github.com/iwind/TeaGo/lists"
|
|
"github.com/iwind/TeaGo/maps"
|
|
timeutil "github.com/iwind/TeaGo/utils/time"
|
|
)
|
|
|
|
type RenewAction struct {
|
|
actionutils.ParentAction
|
|
}
|
|
|
|
func (this *RenewAction) RunGet(params struct {
|
|
UserInstanceId int64
|
|
}) {
|
|
userInstanceResp, err := this.RPC().UserADInstanceRPC().FindUserADInstance(this.UserContext(), &pb.FindUserADInstanceRequest{UserADInstanceId: params.UserInstanceId})
|
|
if err != nil {
|
|
this.ErrorPage(err)
|
|
return
|
|
}
|
|
var userInstance = userInstanceResp.UserADInstance
|
|
if userInstance == nil {
|
|
this.NotFound("userInstance", params.UserInstanceId)
|
|
return
|
|
}
|
|
|
|
// 实例
|
|
var instanceMap = maps.Map{
|
|
"id": 0,
|
|
}
|
|
if userInstance.AdPackageInstance != nil {
|
|
if userInstance.AdPackageInstance.IpAddresses == nil {
|
|
userInstance.AdPackageInstance.IpAddresses = []string{}
|
|
}
|
|
instanceMap = maps.Map{
|
|
"id": userInstance.AdPackageInstance.Id,
|
|
"ipAddresses": userInstance.AdPackageInstance.IpAddresses,
|
|
}
|
|
}
|
|
|
|
// 产品
|
|
var packageMap = maps.Map{
|
|
"id": 0,
|
|
}
|
|
var packageId int64
|
|
if userInstance.AdPackageInstance != nil && userInstance.AdPackageInstance.AdPackage != nil {
|
|
packageId = userInstance.AdPackageInstance.AdPackage.Id
|
|
packageMap = maps.Map{
|
|
"id": userInstance.AdPackageInstance.AdPackage.Id,
|
|
"summary": userInstance.AdPackageInstance.AdPackage.Summary,
|
|
}
|
|
}
|
|
|
|
this.Data["userInstance"] = maps.Map{
|
|
"id": userInstance.Id,
|
|
"periodId": userInstance.AdPackagePeriodId,
|
|
"dayTo": dateutils.SplitYmd(userInstance.DayTo),
|
|
"today": timeutil.Format("Y-m-d"),
|
|
"isExpired": len(userInstance.DayTo) == 0 || userInstance.DayTo < timeutil.Format("Ymd"),
|
|
"isAvailable": userInstance.IsAvailable,
|
|
"instance": instanceMap,
|
|
"package": packageMap,
|
|
}
|
|
|
|
// 价格选项
|
|
if packageId > 0 {
|
|
pricesResp, err := this.RPC().ADPackagePriceRPC().FindADPackagePrices(this.UserContext(), &pb.FindADPackagePricesRequest{AdPackageId: packageId})
|
|
if err != nil {
|
|
this.ErrorPage(err)
|
|
return
|
|
}
|
|
var priceMaps = []maps.Map{}
|
|
var allValidPeriodIds = []int64{}
|
|
for _, price := range pricesResp.AdPackagePrices {
|
|
allValidPeriodIds = append(allValidPeriodIds, price.AdPackagePeriodId)
|
|
priceMaps = append(priceMaps, maps.Map{
|
|
"periodId": price.AdPackagePeriodId,
|
|
"price": price.Price,
|
|
})
|
|
}
|
|
this.Data["prices"] = priceMaps
|
|
|
|
// 有效期选项
|
|
var periodMaps = []maps.Map{}
|
|
periodResp, err := this.RPC().ADPackagePeriodRPC().FindAllAvailableADPackagePeriods(this.UserContext(), &pb.FindAllAvailableADPackagePeriodsRequest{})
|
|
if err != nil {
|
|
this.ErrorPage(err)
|
|
return
|
|
}
|
|
for _, period := range periodResp.AdPackagePeriods {
|
|
if !lists.ContainsInt64(allValidPeriodIds, period.Id) {
|
|
continue
|
|
}
|
|
periodMaps = append(periodMaps, maps.Map{
|
|
"id": period.Id,
|
|
"count": period.Count,
|
|
"unit": period.Unit,
|
|
"unitName": userconfigs.ADPackagePeriodUnitName(period.Unit),
|
|
})
|
|
}
|
|
this.Data["allPeriods"] = periodMaps
|
|
} else {
|
|
this.Data["allPeriods"] = []maps.Map{}
|
|
this.Data["prices"] = []maps.Map{}
|
|
}
|
|
|
|
this.Show()
|
|
}
|