todo: add-address
This commit is contained in:
parent
640d3261e0
commit
db155a71a0
@ -19,7 +19,7 @@ type FsAddress struct {
|
|||||||
Country *string `gorm:"default:'';" json:"country"` // 国家
|
Country *string `gorm:"default:'';" json:"country"` // 国家
|
||||||
ZipCode *string `gorm:"default:'';" json:"zip_code"` // 邮编
|
ZipCode *string `gorm:"default:'';" json:"zip_code"` // 邮编
|
||||||
Status *int64 `gorm:"default:0;" json:"status"` // 1正常 0异常
|
Status *int64 `gorm:"default:0;" json:"status"` // 1正常 0异常
|
||||||
IsDefault *int64 `gorm:"default:0;" json:"is_default"` // 1默认地址,0非默认地址
|
IsDefault *int64 `gorm:"index;default:0;" json:"is_default"` // 1默认地址,0非默认地址
|
||||||
}
|
}
|
||||||
type FsAddressModel struct{ db *gorm.DB }
|
type FsAddressModel struct{ db *gorm.DB }
|
||||||
|
|
||||||
|
@ -15,6 +15,14 @@ func (a *FsAddressModel) GetOne(ctx context.Context, id int64, userId int64) (re
|
|||||||
return resp, nil
|
return resp, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (a *FsAddressModel) GetUserAllAddress(ctx context.Context, userId int64) (resp []FsAddress, err error) {
|
||||||
|
err = a.db.WithContext(ctx).Model(&FsAddress{}).Where("`user_id` = ? and `status` = ?", userId, 1).Order("`id` DESC").Find(&resp).Error
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
func (a *FsAddressModel) CreateOne(ctx context.Context, address *FsAddress) (resp *FsAddress, err error) {
|
func (a *FsAddressModel) CreateOne(ctx context.Context, address *FsAddress) (resp *FsAddress, err error) {
|
||||||
|
|
||||||
err = a.db.WithContext(ctx).Transaction(func(tx *gorm.DB) error {
|
err = a.db.WithContext(ctx).Transaction(func(tx *gorm.DB) error {
|
||||||
@ -45,10 +53,15 @@ func (a *FsAddressModel) CreateOne(ctx context.Context, address *FsAddress) (res
|
|||||||
return resp, nil
|
return resp, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (a *FsAddressModel) GetUserAllAddress(ctx context.Context, userId int64) (resp []FsAddress, err error) {
|
func (a *FsAddressModel) UpdateAddAddress(ctx context.Context, address *FsAddress) (err error) {
|
||||||
err = a.db.WithContext(ctx).Model(&FsAddress{}).Where("`user_id` = ? and `status` = ?", userId, 1).Order("`id` DESC").Find(&resp).Error
|
err = a.db.WithContext(ctx).Transaction(func(tx *gorm.DB) error {
|
||||||
|
if *address.IsDefault > 0 {
|
||||||
|
err = tx.Where("user_id = ? and is_default = 1", *address.UserId).Update("is_default", 0).Error
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return err
|
||||||
}
|
}
|
||||||
return
|
}
|
||||||
|
return a.db.WithContext(ctx).Where("id = ? and user_id = ?", address.Id, address.UserId).Omit("id", "user_id").Updates(address).Error
|
||||||
|
})
|
||||||
|
return err
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
package logic
|
package logic
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"fusenapi/model/gmodel"
|
||||||
"fusenapi/utils/auth"
|
"fusenapi/utils/auth"
|
||||||
"fusenapi/utils/basic"
|
"fusenapi/utils/basic"
|
||||||
|
|
||||||
@ -38,5 +39,62 @@ func (l *UserAddAddressLogic) UserAddAddress(req *types.RequestAddAddress, useri
|
|||||||
return resp.SetStatus(basic.CodeSafeValueRangeErr)
|
return resp.SetStatus(basic.CodeSafeValueRangeErr)
|
||||||
}
|
}
|
||||||
|
|
||||||
return resp.SetStatus(basic.CodeOK)
|
m := gmodel.NewFsAddressModel(l.svcCtx.MysqlConn)
|
||||||
|
var status int64 = 1
|
||||||
|
|
||||||
|
if req.Id == 0 {
|
||||||
|
// $address->country = 'USA';
|
||||||
|
// $address->status = 1;
|
||||||
|
// $address->user_id = $uid;
|
||||||
|
var (
|
||||||
|
country string = "USA"
|
||||||
|
|
||||||
|
isDefautl int64 = 1
|
||||||
|
)
|
||||||
|
createOne := &gmodel.FsAddress{
|
||||||
|
Name: &req.Name,
|
||||||
|
FirstName: &req.FirstName,
|
||||||
|
LastName: &req.LastName,
|
||||||
|
Mobile: &req.Mobile,
|
||||||
|
Street: &req.Street,
|
||||||
|
Suite: &req.Suite,
|
||||||
|
City: &req.City,
|
||||||
|
State: &req.State,
|
||||||
|
Country: &country,
|
||||||
|
Status: &status,
|
||||||
|
UserId: &userinfo.UserId,
|
||||||
|
ZipCode: &req.ZipCode,
|
||||||
|
IsDefault: &isDefautl,
|
||||||
|
}
|
||||||
|
_, err := m.CreateOne(l.ctx, createOne)
|
||||||
|
if err != nil {
|
||||||
|
logx.Error(err)
|
||||||
|
return resp.SetStatus(basic.CodeDbCreateErr)
|
||||||
|
}
|
||||||
|
return resp.SetStatus(basic.CodeOK, map[string]int64{"id": createOne.Id})
|
||||||
|
}
|
||||||
|
|
||||||
|
address := &gmodel.FsAddress{
|
||||||
|
Id: req.Id,
|
||||||
|
Name: &req.Name,
|
||||||
|
FirstName: &req.FirstName,
|
||||||
|
LastName: &req.LastName,
|
||||||
|
Mobile: &req.Mobile,
|
||||||
|
Street: &req.Street,
|
||||||
|
Suite: &req.Suite,
|
||||||
|
City: &req.City,
|
||||||
|
State: &req.State,
|
||||||
|
Status: &status,
|
||||||
|
UserId: &userinfo.UserId,
|
||||||
|
ZipCode: &req.ZipCode,
|
||||||
|
IsDefault: &req.IsDefault,
|
||||||
|
}
|
||||||
|
|
||||||
|
err := m.UpdateAddAddress(l.ctx, address)
|
||||||
|
if err != nil {
|
||||||
|
logx.Error(err)
|
||||||
|
return resp.SetStatus(basic.CodeDbUpdateErr)
|
||||||
|
}
|
||||||
|
|
||||||
|
return resp.SetStatus(basic.CodeOK, map[string]int64{"id": address.Id})
|
||||||
}
|
}
|
||||||
|
@ -54,7 +54,7 @@ func (l *UserSaveBasicInfoLogic) UserSaveBasicInfo(req *types.RequestBasicInfoFo
|
|||||||
case gmodel.ErrRecordNotFound:
|
case gmodel.ErrRecordNotFound:
|
||||||
return resp.SetStatus(basic.CodeUserIdNotFoundErr)
|
return resp.SetStatus(basic.CodeUserIdNotFoundErr)
|
||||||
default:
|
default:
|
||||||
return resp.SetStatusWithMessage(basic.CodeUpdateErr, err.Error())
|
return resp.SetStatusWithMessage(basic.CodeDbUpdateErr, err.Error())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -31,7 +31,7 @@ type RequestUserLogin struct {
|
|||||||
|
|
||||||
type RequestAddAddress struct {
|
type RequestAddAddress struct {
|
||||||
Id int64 `json:"id"` // address_id 地址id
|
Id int64 `json:"id"` // address_id 地址id
|
||||||
IsDefault int `json:"is_default"` //是否默认
|
IsDefault int64 `json:"is_default"` //是否默认
|
||||||
Name string `json:"name"` //收货人
|
Name string `json:"name"` //收货人
|
||||||
FirstName string `json:"first_name"` //first_name
|
FirstName string `json:"first_name"` //first_name
|
||||||
LastName string `json:"last_name"` //last_name
|
LastName string `json:"last_name"` //last_name
|
||||||
|
@ -69,7 +69,7 @@ type RequestUserLogin {
|
|||||||
|
|
||||||
type RequestAddAddress {
|
type RequestAddAddress {
|
||||||
Id int64 `json:"id"` // address_id 地址id
|
Id int64 `json:"id"` // address_id 地址id
|
||||||
IsDefault int `json:"is_default"` //是否默认
|
IsDefault int64 `json:"is_default"` //是否默认
|
||||||
Name string `json:"name"` //收货人
|
Name string `json:"name"` //收货人
|
||||||
FirstName string `json:"first_name"` //first_name
|
FirstName string `json:"first_name"` //first_name
|
||||||
LastName string `json:"last_name"` //last_name
|
LastName string `json:"last_name"` //last_name
|
||||||
|
@ -22,10 +22,11 @@ var (
|
|||||||
CodeGuestDupErr = &StatusResponse{5010, "the user is already a guest user and does not need to apply again"} // 用户已经是guest用户不需要重复申请 错误
|
CodeGuestDupErr = &StatusResponse{5010, "the user is already a guest user and does not need to apply again"} // 用户已经是guest用户不需要重复申请 错误
|
||||||
CodeGuestGenErr = &StatusResponse{5011, "serialization failed for guest_id of the visitor"} // 游客guest_id序列化失败
|
CodeGuestGenErr = &StatusResponse{5011, "serialization failed for guest_id of the visitor"} // 游客guest_id序列化失败
|
||||||
|
|
||||||
CodeUpdateErr = &StatusResponse{5000, "update database error"} // update database logic 错误
|
CodeDbUpdateErr = &StatusResponse{5000, "update database error"} // update database logic 错误
|
||||||
CodeDupGuestErr = &StatusResponse{5001, "the user is already a guest user and does not need to apply again"} // 用户已经是guest用户不需要重复申请 错误
|
CodeDupGuestErr = &StatusResponse{5001, "the user is already a guest user and does not need to apply again"} // 用户已经是guest用户不需要重复申请 错误
|
||||||
CodeRequestParamsErr = &StatusResponse{5002, "invalid request param"} // api参数校验 错误
|
CodeRequestParamsErr = &StatusResponse{5002, "invalid request param"} // api参数校验 错误
|
||||||
CodeDbRecordNotFoundErr = &StatusResponse{5003, "db record not found"}
|
CodeDbRecordNotFoundErr = &StatusResponse{5003, "db record not found"}
|
||||||
|
CodeDbCreateErr = &StatusResponse{5004, "create one in database error"}
|
||||||
)
|
)
|
||||||
|
|
||||||
type Response struct {
|
type Response struct {
|
||||||
@ -58,8 +59,12 @@ func (resp *Response) SetStatus(sr *StatusResponse, data ...interface{}) *Respon
|
|||||||
Message: sr.Message,
|
Message: sr.Message,
|
||||||
}
|
}
|
||||||
if len(data) == 1 {
|
if len(data) == 1 {
|
||||||
|
if err, ok := data[0].(error); ok {
|
||||||
|
newResp.Message = err.Error()
|
||||||
|
} else {
|
||||||
newResp.Data = data[0]
|
newResp.Data = data[0]
|
||||||
}
|
}
|
||||||
|
}
|
||||||
return newResp
|
return newResp
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user