From eef4bb35c9cfef64005ae843f73df2dd142cbe06 Mon Sep 17 00:00:00 2001 From: laodaming <11058467+laudamine@user.noreply.gitee.com> Date: Mon, 19 Jun 2023 10:34:21 +0800 Subject: [PATCH] 1 --- .../handler/getproductdesignhandler.go | 66 +++++++++++++++++++ server/product/internal/handler/routes.go | 5 ++ .../internal/logic/getproductdesignlogic.go | 34 ++++++++++ server/product/internal/svc/servicecontext.go | 2 +- server_api/product.api | 7 +- 5 files changed, 111 insertions(+), 3 deletions(-) create mode 100644 server/product/internal/handler/getproductdesignhandler.go create mode 100644 server/product/internal/logic/getproductdesignlogic.go diff --git a/server/product/internal/handler/getproductdesignhandler.go b/server/product/internal/handler/getproductdesignhandler.go new file mode 100644 index 00000000..b6f3ae2d --- /dev/null +++ b/server/product/internal/handler/getproductdesignhandler.go @@ -0,0 +1,66 @@ +package handler + +import ( + "errors" + "net/http" + + "github.com/zeromicro/go-zero/core/logx" + "github.com/zeromicro/go-zero/rest/httpx" + + "fusenapi/utils/auth" + "fusenapi/utils/basic" + + "fusenapi/server/product/internal/logic" + "fusenapi/server/product/internal/svc" +) + +func GetProductDesignHandler(svcCtx *svc.ServiceContext) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + + var ( + // 定义错误变量 + err error + // 定义用户信息变量 + userinfo *auth.UserInfo + ) + // 解析JWT token,并对空用户进行判断 + claims, err := svcCtx.ParseJwtToken(r) + // 如果解析JWT token出错,则返回未授权的JSON响应并记录错误消息 + if err != nil { + httpx.OkJsonCtx(r.Context(), w, &basic.Response{ + Code: 401, // 返回401状态码,表示未授权 + Message: "unauthorized", // 返回未授权信息 + }) + logx.Info("unauthorized:", err.Error()) // 记录错误日志 + return + } + + if claims != nil { + // 从token中获取对应的用户信息 + userinfo, err = auth.GetUserInfoFormMapClaims(claims) + // 如果获取用户信息出错,则返回未授权的JSON响应并记录错误消息 + if err != nil { + httpx.OkJsonCtx(r.Context(), w, &basic.Response{ + Code: 401, + Message: "unauthorized", + }) + logx.Info("unauthorized:", err.Error()) + return + } + } else { + // 如果claims为nil,则认为用户身份为白板用户 + userinfo = &auth.UserInfo{UserId: 0, GuestId: 0} + } + + l := logic.NewGetProductDesignLogic(r.Context(), svcCtx) + resp := l.GetProductDesign(userinfo) + // 如果响应不为nil,则使用httpx.OkJsonCtx方法返回JSON响应; + if resp != nil { + httpx.OkJsonCtx(r.Context(), w, resp) + } else { + err := errors.New("server logic is error, resp must not be nil") + httpx.ErrorCtx(r.Context(), w, err) + logx.Error(err) + } + } +} diff --git a/server/product/internal/handler/routes.go b/server/product/internal/handler/routes.go index 0599e7f7..847df645 100644 --- a/server/product/internal/handler/routes.go +++ b/server/product/internal/handler/routes.go @@ -27,6 +27,11 @@ func RegisterHandlers(server *rest.Server, serverCtx *svc.ServiceContext) { Path: "/product/get-size-by-product", Handler: GetSizeByProductHandler(serverCtx), }, + { + Method: http.MethodGet, + Path: "/product/design", + Handler: GetProductDesignHandler(serverCtx), + }, }, ) } diff --git a/server/product/internal/logic/getproductdesignlogic.go b/server/product/internal/logic/getproductdesignlogic.go new file mode 100644 index 00000000..1b72836f --- /dev/null +++ b/server/product/internal/logic/getproductdesignlogic.go @@ -0,0 +1,34 @@ +package logic + +import ( + "fusenapi/utils/auth" + "fusenapi/utils/basic" + + "context" + + "fusenapi/server/product/internal/svc" + "fusenapi/server/product/internal/types" + + "github.com/zeromicro/go-zero/core/logx" +) + +type GetProductDesignLogic struct { + logx.Logger + ctx context.Context + svcCtx *svc.ServiceContext +} + +func NewGetProductDesignLogic(ctx context.Context, svcCtx *svc.ServiceContext) *GetProductDesignLogic { + return &GetProductDesignLogic{ + Logger: logx.WithContext(ctx), + ctx: ctx, + svcCtx: svcCtx, + } +} + +func (l *GetProductDesignLogic) GetProductDesign(, userinfo *auth.UserInfo) (resp *basic.Response) { + // 返回值必须调用Set重新返回, resp可以空指针调用 resp.SetStatus(basic.CodeOK, data) + // userinfo 传入值时, 一定不为null + + return resp.SetStatus(basic.CodeOK) +} diff --git a/server/product/internal/svc/servicecontext.go b/server/product/internal/svc/servicecontext.go index 0a60e492..e262fa80 100644 --- a/server/product/internal/svc/servicecontext.go +++ b/server/product/internal/svc/servicecontext.go @@ -20,7 +20,7 @@ func NewServiceContext(c config.Config) *ServiceContext { return &ServiceContext{ Config: c, - MysqlConn: initalize.InitMysql(c.DataSource), + MysqlConn: initalize.InitMysql(c.SourceMysql), } } diff --git a/server_api/product.api b/server_api/product.api index fd3f2e7e..69af0dad 100644 --- a/server_api/product.api +++ b/server_api/product.api @@ -12,11 +12,14 @@ service product { @handler GetProductListHandler get /product/list(GetProductListReq) returns (response); //获取成功后的推荐产品 - @handler GetSuccessRecommand + @handler GetSuccessRecommandHandler get /product/success-recommand (GetSuccessRecommandReq) returns (response); //获取分类下的产品以及尺寸 - @handler GetSizeByProduct + @handler GetSizeByProductHandler get /product/get-size-by-product returns (response); + //获取保存的设计 + @handler GetProductDesignHandler + get /product/design returns (response); } //获取产品列表