118 lines
3.5 KiB
Go
118 lines
3.5 KiB
Go
package admin
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/gogf/gf/v2/errors/gerror"
|
|
"github.com/gogf/gf/v2/frame/g"
|
|
|
|
"github.com/qianfree/team-api/api/admin/v1"
|
|
"github.com/qianfree/team-api/internal/dao"
|
|
"github.com/qianfree/team-api/internal/model/do"
|
|
"github.com/qianfree/team-api/internal/model/entity"
|
|
)
|
|
|
|
func (s *sAdmin) ListTenantLevelConfigs(ctx context.Context, _ *v1.TenantLevelConfigListReq) (*v1.TenantLevelConfigListRes, error) {
|
|
var configs []*entity.TntTenantLevelConfigs
|
|
err := dao.TntTenantLevelConfigs.Ctx(ctx).
|
|
OrderAsc("level").
|
|
Scan(&configs)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
list := make([]*v1.TenantLevelConfigItem, 0, len(configs))
|
|
for _, c := range configs {
|
|
list = append(list, &v1.TenantLevelConfigItem{
|
|
Id: c.Id,
|
|
Level: c.Level,
|
|
Name: c.Name,
|
|
CumulativeRechargeThreshold: c.CumulativeRechargeThreshold,
|
|
MaxMembers: c.MaxMembers,
|
|
MaxConcurrency: c.MaxConcurrency,
|
|
PriceMultiplier: c.PriceMultiplier,
|
|
SortOrder: c.SortOrder,
|
|
CreatedAt: c.CreatedAt,
|
|
UpdatedAt: c.UpdatedAt,
|
|
})
|
|
}
|
|
|
|
return &v1.TenantLevelConfigListRes{List: list}, nil
|
|
}
|
|
|
|
func (s *sAdmin) CreateTenantLevelConfig(ctx context.Context, req *v1.TenantLevelConfigCreateReq) (*v1.TenantLevelConfigCreateRes, error) {
|
|
// 检查 level 是否已存在
|
|
count, _ := dao.TntTenantLevelConfigs.Ctx(ctx).Where("level", req.Level).Count()
|
|
if count > 0 {
|
|
return nil, gerror.New("等级号已存在")
|
|
}
|
|
|
|
result, err := dao.TntTenantLevelConfigs.Ctx(ctx).Insert(do.TntTenantLevelConfigs{
|
|
Level: req.Level,
|
|
Name: req.Name,
|
|
CumulativeRechargeThreshold: req.CumulativeRechargeThreshold,
|
|
MaxMembers: req.MaxMembers,
|
|
MaxConcurrency: req.MaxConcurrency,
|
|
PriceMultiplier: req.PriceMultiplier,
|
|
SortOrder: req.SortOrder,
|
|
})
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
id, _ := result.LastInsertId()
|
|
return &v1.TenantLevelConfigCreateRes{ID: id}, nil
|
|
}
|
|
|
|
func (s *sAdmin) UpdateTenantLevelConfig(ctx context.Context, req *v1.TenantLevelConfigUpdateReq) (*v1.TenantLevelConfigUpdateRes, error) {
|
|
data := g.Map{}
|
|
if req.Name != nil {
|
|
data["name"] = *req.Name
|
|
}
|
|
if req.CumulativeRechargeThreshold != nil {
|
|
data["cumulative_recharge_threshold"] = *req.CumulativeRechargeThreshold
|
|
}
|
|
if req.MaxMembers != nil {
|
|
data["max_members"] = *req.MaxMembers
|
|
}
|
|
if req.MaxConcurrency != nil {
|
|
data["max_concurrency"] = *req.MaxConcurrency
|
|
}
|
|
if req.PriceMultiplier != nil {
|
|
data["price_multiplier"] = *req.PriceMultiplier
|
|
}
|
|
if req.SortOrder != nil {
|
|
data["sort_order"] = *req.SortOrder
|
|
}
|
|
|
|
if len(data) == 0 {
|
|
return &v1.TenantLevelConfigUpdateRes{}, nil
|
|
}
|
|
|
|
_, err := dao.TntTenantLevelConfigs.Ctx(ctx).
|
|
Where("id", req.Id).
|
|
Data(data).
|
|
Update()
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return &v1.TenantLevelConfigUpdateRes{}, nil
|
|
}
|
|
|
|
func (s *sAdmin) DeleteTenantLevelConfig(ctx context.Context, req *v1.TenantLevelConfigDeleteReq) (*v1.TenantLevelConfigDeleteRes, error) {
|
|
var config entity.TntTenantLevelConfigs
|
|
dao.TntTenantLevelConfigs.Ctx(ctx).Where("id", req.Id).Scan(&config)
|
|
if config.Id == 0 {
|
|
return &v1.TenantLevelConfigDeleteRes{}, nil
|
|
}
|
|
if config.Level == 1 {
|
|
return nil, gerror.New("不允许删除默认等级 LV1")
|
|
}
|
|
|
|
_, err := dao.TntTenantLevelConfigs.Ctx(ctx).Where("id", req.Id).Delete()
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return &v1.TenantLevelConfigDeleteRes{}, nil
|
|
}
|