From b03e2d020fcb1c609c98c11179e5e69de54e2bd8 Mon Sep 17 00:00:00 2001 From: eson <474420502@qq.com> Date: Tue, 26 Sep 2023 00:02:50 +0800 Subject: [PATCH] info address --- .gitignore | 4 ++- model/gmodel/fs_address_logic.go | 31 +++++++++++------- .../internal/handler/addressupdatehandler.go | 2 +- .../internal/logic/addressdefaultlogic.go | 5 +++ .../info/internal/logic/addressdeletelogic.go | 9 ++++++ .../info/internal/logic/addressupdatelogic.go | 32 ++++++++++++++++++- server/info/internal/types/types.go | 1 + server_api/info.api | 9 +++--- 8 files changed, 75 insertions(+), 18 deletions(-) diff --git a/.gitignore b/.gitignore index 9608b9af..c9f5f8d6 100644 --- a/.gitignore +++ b/.gitignore @@ -44,4 +44,6 @@ shared-state *.zip -vendor \ No newline at end of file +vendor + +grpc_server/gen \ No newline at end of file diff --git a/model/gmodel/fs_address_logic.go b/model/gmodel/fs_address_logic.go index b6fb06e7..7440e159 100755 --- a/model/gmodel/fs_address_logic.go +++ b/model/gmodel/fs_address_logic.go @@ -69,26 +69,26 @@ func (a *FsAddressModel) CreateOne(ctx context.Context, address *FsAddress) (res } func (a *FsAddressModel) UpdateAddAddress(ctx context.Context, address *FsAddress) (err error) { - err = a.db.WithContext(ctx).Transaction(func(tx *gorm.DB) error { - if *address.IsDefault > 0 { - err = tx.Model(&FsAddress{}).Where("user_id = ? and is_default = 1 ", address.UserId).Update("is_default", 0).Error - if err != nil { - return err - } + err = a.db.WithContext(ctx).Model(&FsAddress{}).Transaction(func(tx *gorm.DB) error { + err = tx. + Where("user_id = ? and address_id = ? and status = 1 ", address.UserId, address.AddressId). + Updates(address).Error + if err != nil { + return err } - return tx.Model(&FsAddress{}).Where("id = ? and user_id = ?", address.AddressId, address.UserId).Omit("id", "user_id").Updates(address).Error + return err }) return err } -func (a *FsAddressModel) SettingUserDefaultAddress(ctx context.Context, userId int64, addressId int64) (resp []FsAddress, err error) { +func (a *FsAddressModel) SettingUserDefaultAddress(ctx context.Context, userId int64, addressId int64) (err error) { - a.db.WithContext(ctx).Model(&FsAddress{}).Transaction(func(tx *gorm.DB) error { + err = a.db.WithContext(ctx).Model(&FsAddress{}).Transaction(func(tx *gorm.DB) error { now := time.Now().UTC() - err = tx.Where(" `user_id` = ? and `status` = ? and `address_id = ?` ", userId, 1, addressId). - UpdateColumn("ltime", now.Add(time.Hour*24*365*290)). + err = tx.Model(&FsAddress{}).Where(" `user_id` = ? and `status` = ? and `address_id = ?` ", userId, 1, addressId). + UpdateColumn("ltime", now.Add(time.Hour*24*365*100)). UpdateColumn("utime", now).Error if err != nil { return err @@ -105,3 +105,12 @@ func (a *FsAddressModel) SettingUserDefaultAddress(ctx context.Context, userId i return } + +func (a *FsAddressModel) DeleteOne(ctx context.Context, addressId int64, userId int64) (err error) { + address := &FsAddress{ + AddressId: addressId, + UserId: &userId, + } + err = a.db.WithContext(ctx).Model(&FsAddress{}).Where("`address_id` = ? and `user_id` = ? and `status` = ? ", addressId, userId, 1).Delete(address).Error + return err +} diff --git a/server/info/internal/handler/addressupdatehandler.go b/server/info/internal/handler/addressupdatehandler.go index 9f12456c..8bf03f24 100644 --- a/server/info/internal/handler/addressupdatehandler.go +++ b/server/info/internal/handler/addressupdatehandler.go @@ -14,7 +14,7 @@ import ( func AddressUpdateHandler(svcCtx *svc.ServiceContext) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { - var req types.AddressObjectRequest + var req types.AddressRequest userinfo, err := basic.RequestParse(w, r, svcCtx, &req) if err != nil { return diff --git a/server/info/internal/logic/addressdefaultlogic.go b/server/info/internal/logic/addressdefaultlogic.go index 6ff06367..440dde95 100644 --- a/server/info/internal/logic/addressdefaultlogic.go +++ b/server/info/internal/logic/addressdefaultlogic.go @@ -38,6 +38,11 @@ func (l *AddressDefaultLogic) AddressDefault(req *types.AddressIdRequest, userin return resp.SetStatus(basic.CodeUnAuth) } + err := l.svcCtx.AllModels.FsAddress.SettingUserDefaultAddress(l.ctx, userinfo.UserId, req.AddressId) + if err != nil { + return resp.SetStatusWithMessage(basic.CodeApiErr, err.Error()) + } + return resp.SetStatus(basic.CodeOK) } diff --git a/server/info/internal/logic/addressdeletelogic.go b/server/info/internal/logic/addressdeletelogic.go index 59f37f85..b2a398ff 100644 --- a/server/info/internal/logic/addressdeletelogic.go +++ b/server/info/internal/logic/addressdeletelogic.go @@ -34,6 +34,15 @@ func (l *AddressDeleteLogic) AddressDelete(req *types.AddressIdRequest, userinfo // 返回值必须调用Set重新返回, resp可以空指针调用 resp.SetStatus(basic.CodeOK, data) // userinfo 传入值时, 一定不为null + if !userinfo.IsUser() { + return resp.SetStatus(basic.CodeUnAuth) + } + + err := l.svcCtx.AllModels.FsAddress.DeleteOne(l.ctx, req.AddressId, userinfo.UserId) + if err != nil { + return resp.SetStatusWithMessage(basic.CodeApiErr, err.Error()) + } + return resp.SetStatus(basic.CodeOK) } diff --git a/server/info/internal/logic/addressupdatelogic.go b/server/info/internal/logic/addressupdatelogic.go index 8cdac113..cf0a1580 100644 --- a/server/info/internal/logic/addressupdatelogic.go +++ b/server/info/internal/logic/addressupdatelogic.go @@ -1,8 +1,10 @@ package logic import ( + "fusenapi/model/gmodel" "fusenapi/utils/auth" "fusenapi/utils/basic" + "time" "context" @@ -30,10 +32,38 @@ func NewAddressUpdateLogic(ctx context.Context, svcCtx *svc.ServiceContext) *Add // func (l *AddressUpdateLogic) BeforeLogic(w http.ResponseWriter, r *http.Request) { // } -func (l *AddressUpdateLogic) AddressUpdate(req *types.AddressObjectRequest, userinfo *auth.UserInfo) (resp *basic.Response) { +func (l *AddressUpdateLogic) AddressUpdate(req *types.AddressRequest, userinfo *auth.UserInfo) (resp *basic.Response) { // 返回值必须调用Set重新返回, resp可以空指针调用 resp.SetStatus(basic.CodeOK, data) // userinfo 传入值时, 一定不为null + if !userinfo.IsUser() { + return resp.SetStatus(basic.CodeUnAuth) + } + + now := time.Now().UTC() + + address := gmodel.FsAddress{ + AddressId: req.AddressId, + UserId: &userinfo.UserId, + IsDefault: &req.IsDefault, + AddressName: &req.AddressName, + FirstName: &req.FirstName, + LastName: &req.LastName, + Mobile: &req.Mobile, + ZipCode: &req.ZipCode, + Street: &req.Street, + Suite: &req.Suite, + City: &req.City, + State: &req.State, + Utime: &now, + Ltime: &now, + } + + err := l.svcCtx.AllModels.FsAddress.UpdateAddAddress(l.ctx, &address) + if err != nil { + return resp.SetStatusWithMessage(basic.CodeApiErr, err.Error()) + } + return resp.SetStatus(basic.CodeOK) } diff --git a/server/info/internal/types/types.go b/server/info/internal/types/types.go index 479a29da..c3ca47c3 100644 --- a/server/info/internal/types/types.go +++ b/server/info/internal/types/types.go @@ -23,6 +23,7 @@ type AddressNameRequest struct { } type AddressRequest struct { + AddressId int64 `json:"address_id,omitempty"` IsDefault int64 `json:"is_default"` //是否默认 AddressName string `json:"address_name"` //收货人 FirstName string `json:"first_name"` //first_name diff --git a/server_api/info.api b/server_api/info.api index e0a7439c..4a4cf6b5 100644 --- a/server_api/info.api +++ b/server_api/info.api @@ -12,16 +12,16 @@ 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); } @@ -45,6 +45,7 @@ type ( } AddressRequest { + AddressId int64 `json:"address_id,omitempty"` IsDefault int64 `json:"is_default"` //是否默认 AddressName string `json:"address_name"` //收货人 FirstName string `json:"first_name"` //first_name