user delivert
This commit is contained in:
@@ -312,6 +312,99 @@ func getAddressInfoFromCoord(db *dao.DaoDB, lng, lat float64) (formattedAddress
|
|||||||
return formattedAddress, districtCode, cityCode, err
|
return formattedAddress, districtCode, cityCode, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func AddMyDeliveryAddress(ctx *jxcontext.Context, address *model.UserDeliveryAddress) (outAddress *model.UserDeliveryAddress, err error) {
|
||||||
|
globals.SugarLogger.Debugf("AddMyDeliveryAddress address:%s", utils.Format4Output(address, true))
|
||||||
|
_, address.UserID = ctx.GetMobileAndUserID()
|
||||||
|
outAddress, err = AddUserDeliveryAddress(ctx, address)
|
||||||
|
globals.SugarLogger.Debugf("AddMyDeliveryAddress2 address:%s, err:%v", utils.Format4Output(address, true), err)
|
||||||
|
return outAddress, err
|
||||||
|
}
|
||||||
|
|
||||||
|
func DeleteUserDeliveryAddress(ctx *jxcontext.Context, userID string, addressID int) (err error) {
|
||||||
|
num, err := dao.DeleteEntityLogically(dao.GetDB(), &model.UserDeliveryAddress{}, nil, ctx.GetUserName(), map[string]interface{}{
|
||||||
|
model.FieldID: addressID,
|
||||||
|
"UserID": userID,
|
||||||
|
})
|
||||||
|
if err == nil {
|
||||||
|
if num == 0 {
|
||||||
|
err = fmt.Errorf("地址ID:%d不存在", addressID)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
func DeleteMyDeliveryAddress(ctx *jxcontext.Context, addressID int) (err error) {
|
||||||
|
_, userID := ctx.GetMobileAndUserID()
|
||||||
|
return DeleteUserDeliveryAddress(ctx, userID, addressID)
|
||||||
|
}
|
||||||
|
|
||||||
|
func UpdateUserDeliveryAddress(ctx *jxcontext.Context, userID string, addressID int, payload map[string]interface{}) (err error) {
|
||||||
|
if userID == "" {
|
||||||
|
return fmt.Errorf("操作用户配送地址时必须指定UserID")
|
||||||
|
}
|
||||||
|
address := &model.UserDeliveryAddress{
|
||||||
|
UserID: userID,
|
||||||
|
}
|
||||||
|
address.ID = addressID
|
||||||
|
db := dao.GetDB()
|
||||||
|
if err = dao.GetEntity(db, address, model.FieldID, "UserID"); err == nil {
|
||||||
|
var outAddress *model.UserDeliveryAddress
|
||||||
|
valid := dao.StrictMakeMapByStructObject2(payload, address, &outAddress, ctx.GetUserName())
|
||||||
|
delete(valid, "autoAddress")
|
||||||
|
delete(valid, "districtCode")
|
||||||
|
delete(valid, "cityCode")
|
||||||
|
if len(valid) > 0 {
|
||||||
|
if valid["lng"] != nil || valid["lat"] != nil {
|
||||||
|
valid["autoAddress"], valid["districtCode"], valid["cityCode"], err = getAddressInfoFromCoord(db, outAddress.Lng, outAddress.Lat)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
dao.Begin(db)
|
||||||
|
defer func() {
|
||||||
|
if r := recover(); r != nil {
|
||||||
|
dao.Rollback(db)
|
||||||
|
panic(r)
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
if utils.ForceInterface2Int64(valid["isDefault"]) == 1 {
|
||||||
|
if err = dao.ClearUserDeliveryAddressDefault(db, userID, 0); err != nil {
|
||||||
|
dao.Rollback(db)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if _, err = dao.UpdateEntityLogically(db, address, valid, ctx.GetUserName(), nil); err == nil {
|
||||||
|
dao.Commit(db)
|
||||||
|
} else {
|
||||||
|
dao.Rollback(db)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
func UpdateMyDeliveryAddress(ctx *jxcontext.Context, addressID int, payload map[string]interface{}) (err error) {
|
||||||
|
_, userID := ctx.GetMobileAndUserID()
|
||||||
|
return UpdateUserDeliveryAddress(ctx, userID, addressID, payload)
|
||||||
|
}
|
||||||
|
|
||||||
|
func QueryUserDeliveryAddress(ctx *jxcontext.Context, userIDs []string, offset, pageSize int) (pagedInfo *model.PagedInfo, err error) {
|
||||||
|
addressList, totalCount, err := dao.QueryUserDeliveryAddress(dao.GetDB(), 0, userIDs, offset, pageSize)
|
||||||
|
if err == nil {
|
||||||
|
pagedInfo = &model.PagedInfo{
|
||||||
|
TotalCount: totalCount,
|
||||||
|
Data: addressList,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return pagedInfo, err
|
||||||
|
}
|
||||||
|
|
||||||
|
func QueryMyDeliveryAddress(ctx *jxcontext.Context) (addressList []*dao.UserDeliveryAddressEx, err error) {
|
||||||
|
_, userID := ctx.GetMobileAndUserID()
|
||||||
|
addressList, _, err = dao.QueryUserDeliveryAddress(dao.GetDB(), 0, []string{userID}, 0, model.UnlimitedPageSize)
|
||||||
|
return addressList, err
|
||||||
|
}
|
||||||
|
|
||||||
func AddUserDeliveryAddress(ctx *jxcontext.Context, address *model.UserDeliveryAddress) (outAddress *model.UserDeliveryAddress, err error) {
|
func AddUserDeliveryAddress(ctx *jxcontext.Context, address *model.UserDeliveryAddress) (outAddress *model.UserDeliveryAddress, err error) {
|
||||||
globals.SugarLogger.Debugf("AddUserDeliveryAddress1 address:%s", utils.Format4Output(address, true))
|
globals.SugarLogger.Debugf("AddUserDeliveryAddress1 address:%s", utils.Format4Output(address, true))
|
||||||
if address.UserID == "" {
|
if address.UserID == "" {
|
||||||
|
|||||||
Reference in New Issue
Block a user