diff --git a/model/gmodel/fs_user_logic.go b/model/gmodel/fs_user_logic.go index 24d0a1a4..439178d4 100644 --- a/model/gmodel/fs_user_logic.go +++ b/model/gmodel/fs_user_logic.go @@ -9,7 +9,6 @@ import ( "fusenapi/utils/fssql" "time" - "github.com/zeromicro/go-zero/core/logx" "gorm.io/gorm" ) @@ -222,7 +221,7 @@ func (u *FsUserModel) RegisterByFusen(ctx context.Context, token *auth.RegisterT Utime: &now, } - logx.Error(metadata) + // logx.Error(metadata) err = txUserInfo.Where("module = 'profile' and user_id = ?", *uinfo.UserId).Take(nil).Error if err != nil { diff --git a/server/info/internal/handler/addressaddhandler.go b/server/info/internal/handler/addressaddhandler.go new file mode 100644 index 00000000..0e02dc4b --- /dev/null +++ b/server/info/internal/handler/addressaddhandler.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 AddressAddHandler(svcCtx *svc.ServiceContext) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + + var req types.AddressNameRequest + userinfo, err := basic.RequestParse(w, r, svcCtx, &req) + if err != nil { + return + } + + // 创建一个业务逻辑层实例 + l := logic.NewAddressAddLogic(r.Context(), svcCtx) + + rl := reflect.ValueOf(l) + basic.BeforeLogic(w, r, rl) + + resp := l.AddressAdd(&req, userinfo) + + if !basic.AfterLogic(w, r, rl, resp) { + basic.NormalAfterLogic(w, r, resp) + } + } +} diff --git a/server/info/internal/handler/addressdefaulthandler.go b/server/info/internal/handler/addressdefaulthandler.go new file mode 100644 index 00000000..38920ca7 --- /dev/null +++ b/server/info/internal/handler/addressdefaulthandler.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 AddressDefaultHandler(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.NewAddressDefaultLogic(r.Context(), svcCtx) + + rl := reflect.ValueOf(l) + basic.BeforeLogic(w, r, rl) + + resp := l.AddressDefault(&req, userinfo) + + if !basic.AfterLogic(w, r, rl, resp) { + basic.NormalAfterLogic(w, r, resp) + } + } +} diff --git a/server/info/internal/handler/addressdeletehandler.go b/server/info/internal/handler/addressdeletehandler.go new file mode 100644 index 00000000..1a3c64df --- /dev/null +++ b/server/info/internal/handler/addressdeletehandler.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 AddressDeleteHandler(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.NewAddressDeleteLogic(r.Context(), svcCtx) + + rl := reflect.ValueOf(l) + basic.BeforeLogic(w, r, rl) + + resp := l.AddressDelete(&req, userinfo) + + if !basic.AfterLogic(w, r, rl, resp) { + basic.NormalAfterLogic(w, r, resp) + } + } +} diff --git a/server/info/internal/handler/addressupdatehandler.go b/server/info/internal/handler/addressupdatehandler.go new file mode 100644 index 00000000..9f12456c --- /dev/null +++ b/server/info/internal/handler/addressupdatehandler.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 AddressUpdateHandler(svcCtx *svc.ServiceContext) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + + var req types.AddressObjectRequest + userinfo, err := basic.RequestParse(w, r, svcCtx, &req) + if err != nil { + return + } + + // 创建一个业务逻辑层实例 + l := logic.NewAddressUpdateLogic(r.Context(), svcCtx) + + rl := reflect.ValueOf(l) + basic.BeforeLogic(w, r, rl) + + resp := l.AddressUpdate(&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 7fd32e51..c259faea 100644 --- a/server/info/internal/handler/routes.go +++ b/server/info/internal/handler/routes.go @@ -17,6 +17,26 @@ func RegisterHandlers(server *rest.Server, serverCtx *svc.ServiceContext) { Path: "/api/info/user", Handler: InfoHandler(serverCtx), }, + { + Method: http.MethodPost, + Path: "/api/info/address/default", + Handler: AddressDefaultHandler(serverCtx), + }, + { + Method: http.MethodPost, + Path: "/api/info/address/add", + Handler: AddressAddHandler(serverCtx), + }, + { + Method: http.MethodPost, + Path: "/api/info/address/update", + Handler: AddressUpdateHandler(serverCtx), + }, + { + Method: http.MethodPost, + Path: "/api/info/address/delete", + Handler: AddressDeleteHandler(serverCtx), + }, }, ) } diff --git a/server/info/internal/logic/addressaddlogic.go b/server/info/internal/logic/addressaddlogic.go new file mode 100644 index 00000000..9527b89c --- /dev/null +++ b/server/info/internal/logic/addressaddlogic.go @@ -0,0 +1,43 @@ +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 AddressAddLogic struct { + logx.Logger + ctx context.Context + svcCtx *svc.ServiceContext +} + +func NewAddressAddLogic(ctx context.Context, svcCtx *svc.ServiceContext) *AddressAddLogic { + return &AddressAddLogic{ + Logger: logx.WithContext(ctx), + ctx: ctx, + svcCtx: svcCtx, + } +} + +// 处理进入前逻辑w,r +// func (l *AddressAddLogic) BeforeLogic(w http.ResponseWriter, r *http.Request) { +// } + +func (l *AddressAddLogic) AddressAdd(req *types.AddressNameRequest, userinfo *auth.UserInfo) (resp *basic.Response) { + // 返回值必须调用Set重新返回, resp可以空指针调用 resp.SetStatus(basic.CodeOK, data) + // userinfo 传入值时, 一定不为null + + return resp.SetStatus(basic.CodeOK) +} + +// 处理逻辑后 w,r 如:重定向, resp 必须重新处理 +// func (l *AddressAddLogic) AfterLogic(w http.ResponseWriter, r *http.Request, resp *basic.Response) { +// // httpx.OkJsonCtx(r.Context(), w, resp) +// } diff --git a/server/info/internal/logic/addressdefaultlogic.go b/server/info/internal/logic/addressdefaultlogic.go new file mode 100644 index 00000000..c7ad7067 --- /dev/null +++ b/server/info/internal/logic/addressdefaultlogic.go @@ -0,0 +1,43 @@ +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 AddressDefaultLogic struct { + logx.Logger + ctx context.Context + svcCtx *svc.ServiceContext +} + +func NewAddressDefaultLogic(ctx context.Context, svcCtx *svc.ServiceContext) *AddressDefaultLogic { + return &AddressDefaultLogic{ + Logger: logx.WithContext(ctx), + ctx: ctx, + svcCtx: svcCtx, + } +} + +// 处理进入前逻辑w,r +// func (l *AddressDefaultLogic) BeforeLogic(w http.ResponseWriter, r *http.Request) { +// } + +func (l *AddressDefaultLogic) AddressDefault(req *types.AddressIdRequest, userinfo *auth.UserInfo) (resp *basic.Response) { + // 返回值必须调用Set重新返回, resp可以空指针调用 resp.SetStatus(basic.CodeOK, data) + // userinfo 传入值时, 一定不为null + + return resp.SetStatus(basic.CodeOK) +} + +// 处理逻辑后 w,r 如:重定向, resp 必须重新处理 +// func (l *AddressDefaultLogic) AfterLogic(w http.ResponseWriter, r *http.Request, resp *basic.Response) { +// // httpx.OkJsonCtx(r.Context(), w, resp) +// } diff --git a/server/info/internal/logic/addressdeletelogic.go b/server/info/internal/logic/addressdeletelogic.go new file mode 100644 index 00000000..59f37f85 --- /dev/null +++ b/server/info/internal/logic/addressdeletelogic.go @@ -0,0 +1,43 @@ +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 AddressDeleteLogic struct { + logx.Logger + ctx context.Context + svcCtx *svc.ServiceContext +} + +func NewAddressDeleteLogic(ctx context.Context, svcCtx *svc.ServiceContext) *AddressDeleteLogic { + return &AddressDeleteLogic{ + Logger: logx.WithContext(ctx), + ctx: ctx, + svcCtx: svcCtx, + } +} + +// 处理进入前逻辑w,r +// func (l *AddressDeleteLogic) BeforeLogic(w http.ResponseWriter, r *http.Request) { +// } + +func (l *AddressDeleteLogic) AddressDelete(req *types.AddressIdRequest, userinfo *auth.UserInfo) (resp *basic.Response) { + // 返回值必须调用Set重新返回, resp可以空指针调用 resp.SetStatus(basic.CodeOK, data) + // userinfo 传入值时, 一定不为null + + return resp.SetStatus(basic.CodeOK) +} + +// 处理逻辑后 w,r 如:重定向, resp 必须重新处理 +// func (l *AddressDeleteLogic) AfterLogic(w http.ResponseWriter, r *http.Request, resp *basic.Response) { +// // httpx.OkJsonCtx(r.Context(), w, resp) +// } diff --git a/server/info/internal/logic/addressupdatelogic.go b/server/info/internal/logic/addressupdatelogic.go new file mode 100644 index 00000000..8cdac113 --- /dev/null +++ b/server/info/internal/logic/addressupdatelogic.go @@ -0,0 +1,43 @@ +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 AddressUpdateLogic struct { + logx.Logger + ctx context.Context + svcCtx *svc.ServiceContext +} + +func NewAddressUpdateLogic(ctx context.Context, svcCtx *svc.ServiceContext) *AddressUpdateLogic { + return &AddressUpdateLogic{ + Logger: logx.WithContext(ctx), + ctx: ctx, + svcCtx: svcCtx, + } +} + +// 处理进入前逻辑w,r +// func (l *AddressUpdateLogic) BeforeLogic(w http.ResponseWriter, r *http.Request) { +// } + +func (l *AddressUpdateLogic) AddressUpdate(req *types.AddressObjectRequest, userinfo *auth.UserInfo) (resp *basic.Response) { + // 返回值必须调用Set重新返回, resp可以空指针调用 resp.SetStatus(basic.CodeOK, data) + // userinfo 传入值时, 一定不为null + + return resp.SetStatus(basic.CodeOK) +} + +// 处理逻辑后 w,r 如:重定向, resp 必须重新处理 +// func (l *AddressUpdateLogic) AfterLogic(w http.ResponseWriter, r *http.Request, resp *basic.Response) { +// // httpx.OkJsonCtx(r.Context(), w, resp) +// } diff --git a/server/info/internal/logic/infologic.go b/server/info/internal/logic/infologic.go index b166c650..0d08d46b 100644 --- a/server/info/internal/logic/infologic.go +++ b/server/info/internal/logic/infologic.go @@ -39,6 +39,7 @@ func NewInfoLogic(ctx context.Context, svcCtx *svc.ServiceContext) *InfoLogic { var ModuleTable map[string]string = map[string]string{ "userinfo": "fs_user_info", "material": "fs_user_material", + "address": "fs_address", // TODO: 地址列表 } type ModuleQuery struct { diff --git a/server/info/internal/types/types.go b/server/info/internal/types/types.go index 6edce7d4..3b42e0a9 100644 --- a/server/info/internal/types/types.go +++ b/server/info/internal/types/types.go @@ -9,6 +9,19 @@ type UserInfoRequest struct { Module []string `json:"module"` } +type AddressObjectRequest struct { + AddressId int64 `json:"address_id"` // 地址id + Address string `json:"address"` // 地址 +} + +type AddressIdRequest struct { + AddressId int64 `json:"address_id"` // 地址id +} + +type AddressNameRequest struct { + Address string `json:"address"` // 地址 +} + type Request struct { } @@ -32,10 +45,10 @@ type File struct { } type Meta struct { - TotalCount int64 `json:"totalCount"` - PageCount int64 `json:"pageCount"` - CurrentPage int `json:"currentPage"` - PerPage int `json:"perPage"` + TotalCount int64 `json:"total_count"` + PageCount int64 `json:"page_count"` + CurrentPage int `json:"current_page"` + PerPage int `json:"per_page"` } // Set 设置Response的Code和Message值 diff --git a/server_api/info.api b/server_api/info.api index 966ab832..3e96c43d 100644 --- a/server_api/info.api +++ b/server_api/info.api @@ -12,10 +12,35 @@ import "basic.api" service info { @handler InfoHandler post /api/info/user(UserInfoRequest) returns (response); + + @handler AddressDefaultHandler + post /api/info/address/default(AddressIdRequest) returns (response); + + @handler AddressAddHandler + post /api/info/address/add(AddressNameRequest) returns (response); + + @handler AddressUpdateHandler + post /api/info/address/update(AddressObjectRequest) returns (response); + + @handler AddressDeleteHandler + post /api/info/address/delete(AddressIdRequest) returns (response); } type ( UserInfoRequest { Module []string `json:"module"` } + + AddressObjectRequest { + AddressId int64 `json:"address_id"` // 地址id + Address string `json:"address"` // 地址 + } + + AddressIdRequest { + AddressId int64 `json:"address_id"` // 地址id + } + + AddressNameRequest { + Address string `json:"address"` // 地址 + } ) \ No newline at end of file