package product import ( "context" "perms-system-server/internal/middleware" "perms-system-server/internal/svc" "perms-system-server/internal/types" "perms-system-server/internal/util" "github.com/zeromicro/go-zero/core/logx" ) type ProductListLogic struct { logx.Logger ctx context.Context svcCtx *svc.ServiceContext } func NewProductListLogic(ctx context.Context, svcCtx *svc.ServiceContext) *ProductListLogic { return &ProductListLogic{ Logger: logx.WithContext(ctx), ctx: ctx, svcCtx: svcCtx, } } func (l *ProductListLogic) ProductList(req *types.ProductListReq) (resp *types.PageResp, err error) { page, pageSize := util.NormalizePage(req.Page, req.PageSize) list, total, err := l.svcCtx.SysProductModel.FindList(l.ctx, page, pageSize) if err != nil { return nil, err } caller := middleware.GetUserDetails(l.ctx) items := make([]types.ProductItem, 0, len(list)) for _, p := range list { item := types.ProductItem{ Id: p.Id, Code: p.Code, Name: p.Name, Remark: p.Remark, Status: p.Status, CreateTime: p.CreateTime, } if caller != nil && caller.IsSuperAdmin { item.AppKey = p.AppKey } items = append(items, item) } return &types.PageResp{ Total: total, List: items, }, nil }