From a0d94f19c2957614e74929b29ec1c6561702dd11 Mon Sep 17 00:00:00 2001 From: liangzai <2440983361@qq.com> Date: Mon, 2 Jun 2025 15:45:48 +0800 Subject: [PATCH] temp --- app/user/cmd/api/desc/query.api | 4 +-- .../query/querygeneratesharelinklogic.go | 35 +++++++++++-------- app/user/cmd/api/internal/types/types.go | 4 +-- 3 files changed, 25 insertions(+), 18 deletions(-) diff --git a/app/user/cmd/api/desc/query.api b/app/user/cmd/api/desc/query.api index aa051c9..07adacb 100644 --- a/app/user/cmd/api/desc/query.api +++ b/app/user/cmd/api/desc/query.api @@ -114,8 +114,8 @@ service main { type ( QueryGenerateShareLinkReq { - OrderId int64 `json:"order_id,optional"` - OrderNo string `json:"order_no,optional"` + OrderId *int64 `json:"order_id,optional"` + OrderNo *string `json:"order_no,optional"` } QueryGenerateShareLinkResp { ShareLink string `json:"share_link"` diff --git a/app/user/cmd/api/internal/logic/query/querygeneratesharelinklogic.go b/app/user/cmd/api/internal/logic/query/querygeneratesharelinklogic.go index 5db6bec..bc8621b 100644 --- a/app/user/cmd/api/internal/logic/query/querygeneratesharelinklogic.go +++ b/app/user/cmd/api/internal/logic/query/querygeneratesharelinklogic.go @@ -38,14 +38,23 @@ func (l *QueryGenerateShareLinkLogic) QueryGenerateShareLink(req *types.QueryGen } // 检查参数 - if req.OrderId == 0 && req.OrderNo == "" { + if (req.OrderId == nil || *req.OrderId == 0) && (req.OrderNo == nil || *req.OrderNo == "") { return nil, errors.Wrapf(xerr.NewErrMsg("订单ID和订单号不能同时为空"), "") } var order *model.Order // 优先使用OrderId查询 - if req.OrderId != 0 { - order, err = l.svcCtx.OrderModel.FindOne(l.ctx, req.OrderId) + if req.OrderId != nil && *req.OrderId != 0 { + order, err = l.svcCtx.OrderModel.FindOne(l.ctx, *req.OrderId) + if err != nil { + if errors.Is(err, model.ErrNotFound) { + return nil, errors.Wrapf(xerr.NewErrMsg("订单不存在"), "") + } + return nil, errors.Wrapf(xerr.NewErrCode(xerr.SERVER_COMMON_ERROR), "生成分享链接, 获取订单失败: %v", err) + } + } else if req.OrderNo != nil && *req.OrderNo != "" { + // 使用OrderNo查询 + order, err = l.svcCtx.OrderModel.FindOneByOrderNo(l.ctx, *req.OrderNo) if err != nil { if errors.Is(err, model.ErrNotFound) { return nil, errors.Wrapf(xerr.NewErrMsg("订单不存在"), "") @@ -53,14 +62,7 @@ func (l *QueryGenerateShareLinkLogic) QueryGenerateShareLink(req *types.QueryGen return nil, errors.Wrapf(xerr.NewErrCode(xerr.SERVER_COMMON_ERROR), "生成分享链接, 获取订单失败: %v", err) } } else { - // 使用OrderNo查询 - order, err = l.svcCtx.OrderModel.FindOneByOrderNo(l.ctx, req.OrderNo) - if err != nil { - if errors.Is(err, model.ErrNotFound) { - return nil, errors.Wrapf(xerr.NewErrMsg("订单不存在"), "") - } - return nil, errors.Wrapf(xerr.NewErrCode(xerr.SERVER_COMMON_ERROR), "生成分享链接, 获取订单失败: %v", err) - } + return nil, errors.Wrapf(xerr.NewErrMsg("订单ID和订单号不能同时为空"), "") } if order.Status != model.OrderStatusPaid { @@ -75,9 +77,14 @@ func (l *QueryGenerateShareLinkLogic) QueryGenerateShareLink(req *types.QueryGen if query.QueryState != model.QueryStateSuccess { return nil, errors.Wrapf(xerr.NewErrCode(xerr.SERVER_COMMON_ERROR), "生成分享链接, 查询未成功") } - - if order.UserId != userId { - return nil, errors.Wrapf(xerr.NewErrCode(xerr.SERVER_COMMON_ERROR), "生成分享链接, 无权操作此订单") + user, err := l.svcCtx.UserModel.FindOne(l.ctx, order.UserId) + if err != nil { + return nil, errors.Wrapf(xerr.NewErrCode(xerr.SERVER_COMMON_ERROR), "生成分享链接, 获取用户失败: %v", err) + } + if user.Inside != 1 { + if order.Id != userId { + return nil, errors.Wrapf(xerr.NewErrCode(xerr.SERVER_COMMON_ERROR), "生成分享链接, 无权操作此订单") + } } expireAt := time.Now().Add(time.Duration(l.svcCtx.Config.Query.ShareLinkExpire) * time.Second) diff --git a/app/user/cmd/api/internal/types/types.go b/app/user/cmd/api/internal/types/types.go index c7ebfb9..7d17aa3 100644 --- a/app/user/cmd/api/internal/types/types.go +++ b/app/user/cmd/api/internal/types/types.go @@ -372,8 +372,8 @@ type QueryExampleResp struct { } type QueryGenerateShareLinkReq struct { - OrderId int64 `json:"order_id,optional"` - OrderNo string `json:"order_no,optional"` + OrderId *int64 `json:"order_id,optional"` + OrderNo *string `json:"order_no,optional"` } type QueryGenerateShareLinkResp struct {