From f7d0a6422efb135629496f01f1baa7762b9497c2 Mon Sep 17 00:00:00 2001 From: eson <9673575+githubcontent@user.noreply.gitee.com> Date: Thu, 28 Sep 2023 17:06:38 +0800 Subject: [PATCH] info address used --- .../handler/addressusedupdatehandler.go | 35 ++++++++++++ server/info/internal/handler/routes.go | 5 ++ .../internal/logic/addressusedupdatelogic.go | 54 +++++++++++++++++++ server_api/info.api | 3 ++ 4 files changed, 97 insertions(+) create mode 100644 server/info/internal/handler/addressusedupdatehandler.go create mode 100644 server/info/internal/logic/addressusedupdatelogic.go diff --git a/server/info/internal/handler/addressusedupdatehandler.go b/server/info/internal/handler/addressusedupdatehandler.go new file mode 100644 index 00000000..ed360210 --- /dev/null +++ b/server/info/internal/handler/addressusedupdatehandler.go @@ -0,0 +1,35 @@ +package handler + +import ( + "net/http" + "reflect" + + "fusenapi/utils/basic" + + "fusenapi/server/info/internal/logic" + "fusenapi/server/info/internal/svc" + "fusenapi/server/info/internal/types" +) + +func AddressUsedUpdateHandler(svcCtx *svc.ServiceContext) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + + var req types.AddressIdRequest + userinfo, err := basic.RequestParse(w, r, svcCtx, &req) + if err != nil { + return + } + + // 创建一个业务逻辑层实例 + l := logic.NewAddressUsedUpdateLogic(r.Context(), svcCtx) + + rl := reflect.ValueOf(l) + basic.BeforeLogic(w, r, rl) + + resp := l.AddressUsedUpdate(&req, userinfo) + + if !basic.AfterLogic(w, r, rl, resp) { + basic.NormalAfterLogic(w, r, resp) + } + } +} diff --git a/server/info/internal/handler/routes.go b/server/info/internal/handler/routes.go index b2194efd..f35abb84 100644 --- a/server/info/internal/handler/routes.go +++ b/server/info/internal/handler/routes.go @@ -42,6 +42,11 @@ func RegisterHandlers(server *rest.Server, serverCtx *svc.ServiceContext) { Path: "/api/info/address/update", Handler: AddressUpdateHandler(serverCtx), }, + { + Method: http.MethodPost, + Path: "/api/info/address/update/used", + Handler: AddressUsedUpdateHandler(serverCtx), + }, { Method: http.MethodPost, Path: "/api/info/address/delete", diff --git a/server/info/internal/logic/addressusedupdatelogic.go b/server/info/internal/logic/addressusedupdatelogic.go new file mode 100644 index 00000000..d6cdc5eb --- /dev/null +++ b/server/info/internal/logic/addressusedupdatelogic.go @@ -0,0 +1,54 @@ +package logic + +import ( + "fusenapi/utils/auth" + "fusenapi/utils/basic" + + "context" + + "fusenapi/server/info/internal/svc" + "fusenapi/server/info/internal/types" + + "github.com/zeromicro/go-zero/core/logx" +) + +type AddressUsedUpdateLogic struct { + logx.Logger + ctx context.Context + svcCtx *svc.ServiceContext +} + +func NewAddressUsedUpdateLogic(ctx context.Context, svcCtx *svc.ServiceContext) *AddressUsedUpdateLogic { + return &AddressUsedUpdateLogic{ + Logger: logx.WithContext(ctx), + ctx: ctx, + svcCtx: svcCtx, + } +} + +// 处理进入前逻辑w,r +// func (l *AddressUsedUpdateLogic) BeforeLogic(w http.ResponseWriter, r *http.Request) { +// } + +func (l *AddressUsedUpdateLogic) AddressUsedUpdate(req *types.AddressIdRequest, userinfo *auth.UserInfo) (resp *basic.Response) { + // 返回值必须调用Set重新返回, resp可以空指针调用 resp.SetStatus(basic.CodeOK, data) + // userinfo 传入值时, 一定不为null + if !userinfo.IsUser() { + return resp.SetStatus(basic.CodeUnAuth) + } + + err := l.svcCtx.AllModels.FsAddress.UpdateUsedAddress(l.ctx, req.AddressId, userinfo.UserId) + if err != nil { + return resp.SetStatusWithMessage(basic.CodeApiErr, err.Error()) + } + + return resp.SetStatus(basic.CodeOK, map[string]any{ + "address_id": req.AddressId, + }) // 返回成功并返回地址ID + +} + +// 处理逻辑后 w,r 如:重定向, resp 必须重新处理 +// func (l *AddressUsedUpdateLogic) AfterLogic(w http.ResponseWriter, r *http.Request, resp *basic.Response) { +// // httpx.OkJsonCtx(r.Context(), w, resp) +// } diff --git a/server_api/info.api b/server_api/info.api index 783e0307..821a46e0 100644 --- a/server_api/info.api +++ b/server_api/info.api @@ -28,6 +28,9 @@ service info { @handler AddressUpdateHandler post /api/info/address/update(AddressRequest) returns (response); + @handler AddressUsedUpdateHandler + post /api/info/address/update/used(AddressIdRequest) returns (response); + @handler AddressDeleteHandler post /api/info/address/delete(AddressIdRequest) returns (response);