80 lines
2.0 KiB
Go
80 lines
2.0 KiB
Go
package controller
|
|
|
|
import (
|
|
"context"
|
|
|
|
"video-factory/shortdrama/dao"
|
|
"video-factory/shortdrama/model/dto"
|
|
"video-factory/shortdrama/model/entity"
|
|
)
|
|
|
|
type regionPricing struct{}
|
|
|
|
var RegionPricing = new(regionPricing)
|
|
|
|
func (c *regionPricing) List(ctx context.Context, req *dto.ListRegionPricingReq) (res *dto.ListRegionPricingRes, err error) {
|
|
list, err := dao.RegionPricing.List(ctx)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return &dto.ListRegionPricingRes{List: list}, nil
|
|
}
|
|
|
|
func (c *regionPricing) Save(ctx context.Context, req *dto.SaveRegionPricingReq) (res *struct{}, err error) {
|
|
return nil, dao.RegionPricing.Save(ctx, &entity.RegionPricing{
|
|
Id: req.Id,
|
|
Province: req.Province,
|
|
Region: req.Region,
|
|
Protected: req.Protected,
|
|
Price: req.Price,
|
|
MaxCustomers: req.MaxCustomers,
|
|
})
|
|
}
|
|
|
|
func (c *regionPricing) Cascades(ctx context.Context, req *struct{}) (res *dto.ListRegionCascadesRes, err error) {
|
|
list, err := dao.RegionPricing.List(ctx)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
provinceMap := make(map[string]*dto.RegionCascade)
|
|
for _, p := range list {
|
|
prov := p.Province
|
|
if prov == "" {
|
|
prov = p.Region
|
|
}
|
|
pc, ok := provinceMap[prov]
|
|
if !ok {
|
|
pc = &dto.RegionCascade{Province: prov}
|
|
provinceMap[prov] = pc
|
|
}
|
|
city := p.Region
|
|
found := false
|
|
for _, c := range pc.Cities {
|
|
if c == city {
|
|
found = true
|
|
break
|
|
}
|
|
}
|
|
if !found {
|
|
pc.Cities = append(pc.Cities, city)
|
|
}
|
|
}
|
|
result := make([]*dto.RegionCascade, 0, len(provinceMap))
|
|
for _, pc := range provinceMap {
|
|
result = append(result, pc)
|
|
}
|
|
return &dto.ListRegionCascadesRes{List: result}, nil
|
|
}
|
|
|
|
func (c *regionPricing) Delete(ctx context.Context, req *struct{ Id int64 }) (res *struct{}, err error) {
|
|
return nil, dao.RegionPricing.Delete(ctx, req.Id)
|
|
}
|
|
|
|
func (c *regionPricing) Regions(ctx context.Context, req *struct{}) (res *dto.ListRegionsRes, err error) {
|
|
regions, err := dao.RegionPricing.ListRegions(ctx)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return &dto.ListRegionsRes{Regions: regions}, nil
|
|
}
|