You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
144 lines
3.9 KiB
144 lines
3.9 KiB
package v2 |
|
|
|
import ( |
|
"context" |
|
v2pb "go-common/app/admin/live/live-admin/api/http/v2" |
|
"go-common/app/admin/live/live-admin/conf" |
|
v2rspb "go-common/app/service/live/resource/api/grpc/v2" |
|
"go-common/library/log" |
|
) |
|
|
|
// UserResourceService struct |
|
type UserResourceService struct { |
|
conf *conf.Config |
|
// optionally add other properties here, such as dao |
|
// dao *dao.Dao |
|
v2rsCli *v2rspb.Client |
|
} |
|
|
|
//NewUserResourceService init |
|
func NewUserResourceService(c *conf.Config) (s *UserResourceService) { |
|
s = &UserResourceService{ |
|
conf: c, |
|
} |
|
|
|
var svc *v2rspb.Client |
|
var err error |
|
|
|
log.Info("ResourceServiceV2 Init: %+v", s.conf.ResourceClientV2) |
|
if svc, err = v2rspb.NewClient(s.conf.ResourceClientV2); err != nil { |
|
panic(err) |
|
} |
|
s.v2rsCli = svc |
|
return s |
|
} |
|
|
|
// Add implementation |
|
// Add 添加资源接口 |
|
// `method:"POST" internal:"true" ` |
|
func (s *UserResourceService) Add(ctx context.Context, req *v2pb.UserResourceAddReq) (resp *v2pb.UserResourceAddResp, err error) { |
|
respRPC, err := s.v2rsCli.Add(ctx, &v2rspb.AddReq{ |
|
ResType: req.ResType, |
|
Title: req.Title, |
|
Url: req.Url, |
|
Weight: req.Weight, |
|
Creator: req.Creator, |
|
}) |
|
if err == nil { |
|
resp = &v2pb.UserResourceAddResp{ |
|
Id: respRPC.Id, |
|
CustomId: respRPC.CustomId, |
|
} |
|
} |
|
return |
|
} |
|
|
|
// Edit implementation |
|
// Edit 编辑现有资源 |
|
// `method:"POST" internal:"true" ` |
|
func (s *UserResourceService) Edit(ctx context.Context, req *v2pb.UserResourceEditReq) (resp *v2pb.UserResourceEditResp, err error) { |
|
resp = &v2pb.UserResourceEditResp{} |
|
_, err = s.v2rsCli.Edit(ctx, &v2rspb.EditReq{ |
|
ResType: req.ResType, |
|
Title: req.Title, |
|
Url: req.Url, |
|
Weight: req.Weight, |
|
CustomId: req.CustomId, |
|
}) |
|
return |
|
} |
|
|
|
// Get implementation |
|
// Get 获取资源列表 |
|
// `method:"GET" internal:"true" ` |
|
func (s *UserResourceService) Get(ctx context.Context, req *v2pb.UserResourceListReq) (resp *v2pb.UserResourceListResp, err error) { |
|
respRPC, err := s.v2rsCli.List(ctx, &v2rspb.ListReq{ |
|
ResType: req.ResType, |
|
Page: req.Page, |
|
PageSize: req.PageSize, |
|
}) |
|
if err == nil { |
|
resp = &v2pb.UserResourceListResp{ |
|
CurrentPage: respRPC.CurrentPage, |
|
TotalCount: respRPC.TotalCount, |
|
List: convertRPCListRes(respRPC.List), |
|
} |
|
} |
|
return |
|
} |
|
|
|
// SetStatus implementation |
|
// SetStatus 更改资源状态 |
|
// `method:"POST" internal:"true" ` |
|
func (s *UserResourceService) SetStatus(ctx context.Context, req *v2pb.UserResourceSetStatusReq) (resp *v2pb.UserResourceSetStatusResp, err error) { |
|
resp = &v2pb.UserResourceSetStatusResp{} |
|
_, err = s.v2rsCli.SetStatus(ctx, &v2rspb.SetStatusReq{ |
|
ResType: req.ResType, |
|
CustomId: req.CustomId, |
|
Status: req.Status, |
|
}) |
|
return |
|
} |
|
|
|
// GetSingle implementation |
|
// Query 请求单个资源 |
|
func (s *UserResourceService) GetSingle(ctx context.Context, req *v2pb.UserResourceGetSingleReq) (resp *v2pb.UserResourceGetSingleResp, err error) { |
|
respRPC, err := s.v2rsCli.Query(ctx, &v2rspb.QueryReq{ |
|
CustomId: req.CustomId, |
|
ResType: req.ResType, |
|
}) |
|
if err == nil { |
|
resp = &v2pb.UserResourceGetSingleResp{ |
|
Id: respRPC.Id, |
|
ResType: respRPC.ResType, |
|
CustomId: respRPC.CustomId, |
|
Title: respRPC.Title, |
|
Url: respRPC.Url, |
|
Weight: respRPC.Weight, |
|
Creator: respRPC.Creator, |
|
Status: respRPC.Status, |
|
Ctime: respRPC.Ctime, |
|
Mtime: respRPC.Mtime, |
|
} |
|
} |
|
return |
|
} |
|
|
|
func convertRPCListRes(RPCList []*v2rspb.ListResp_List) (HTTPList []*v2pb.UserResourceListResp_List) { |
|
HTTPList = make([]*v2pb.UserResourceListResp_List, len(RPCList)) |
|
for index, RPCListItem := range RPCList { |
|
HTTPList[index] = &v2pb.UserResourceListResp_List{ |
|
Id: RPCListItem.Id, |
|
ResType: RPCListItem.ResType, |
|
CustomId: RPCListItem.CustomId, |
|
Title: RPCListItem.Title, |
|
Url: RPCListItem.Url, |
|
Weight: RPCListItem.Weight, |
|
Creator: RPCListItem.Creator, |
|
Status: RPCListItem.Status, |
|
Ctime: RPCListItem.Ctime, |
|
Mtime: RPCListItem.Mtime, |
|
} |
|
} |
|
return |
|
}
|
|
|