1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- package service
- import (
- "context"
- "errors"
- "google.golang.org/grpc/codes"
- "google.golang.org/grpc/status"
- "gorm.io/gorm"
- "log/slog"
- "protocol-server/common"
- "protocol-server/models"
- )
- import (
- pb "protocol-server/rpc_idl/dr_protocol_pb"
- )
- type AprServer struct {
- pb.UnimplementedAprServer
- }
- func (s *AprServer) GetApr(ctx context.Context, in *pb.AprRequest) (*pb.AprReply, error) {
- slog.Info("[rpc]GetApr...", "view_id", in.GetViewId(), "apr_id", in.GetAprId())
- product, _, _, err := common.GetHeader(ctx)
- if err != nil {
- return nil, err
- }
- aprId := in.GetAprId()
- var view models.View
- if in.GetViewId() != "" {
- if err := models.DB.Where("view_id = ?", in.GetViewId()).First(&view).Error; err != nil {
- if errors.Is(err, gorm.ErrRecordNotFound) {
- return nil, status.Errorf(codes.NotFound, "view %s not found", in.GetViewId())
- }
- return nil, status.Errorf(codes.Internal, "view find err %v", err)
- }
- aprId = view.AprId
- }
- var apr models.Apr
- err = models.DB.Scopes(
- models.String("apr_id = ?", aprId),
- models.String("product = ?", product.ToString()),
- models.Bool("is_enabled = ?", in.IsEnabled),
- ).Order("sort").First(&apr).Error
- if err != nil {
- if errors.Is(err, gorm.ErrRecordNotFound) {
- return nil, status.Errorf(codes.NotFound, "apr %s%s not found", in.GetViewId(), in.GetAprId())
- }
- return nil, status.Errorf(codes.Internal, "apr find err %v", err)
- }
- var subs []*models.AprSub
- err = models.DB.Scopes(
- models.String("apr_id = ?", aprId),
- models.String("product = ?", product.ToString()),
- models.Bool("is_enabled = ?", in.IsEnabled),
- ).Order("sort").Find(&subs).Error
- if err != nil {
- return nil, status.Errorf(codes.Internal, "apr_sub find err %v", err)
- }
- res := apr2pb(&apr)
- for i := range subs {
- res.Sub = append(res.Sub, aprSub2pb(subs[i]))
- }
- return res, nil
- }
|