From 2b0bf4f7fe47ce0e5bc1454ce1a8af3fff6e870b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Fri, 23 Oct 2020 14:10:05 +0800 Subject: [PATCH] user delivert --- business/jxstore/cms/user2.go | 93 +++++++++++++++++++++++++++++++++++ 1 file changed, 93 insertions(+) diff --git a/business/jxstore/cms/user2.go b/business/jxstore/cms/user2.go index 9c9581461..5d8ae7f0e 100644 --- a/business/jxstore/cms/user2.go +++ b/business/jxstore/cms/user2.go @@ -312,6 +312,99 @@ func getAddressInfoFromCoord(db *dao.DaoDB, lng, lat float64) (formattedAddress 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) { globals.SugarLogger.Debugf("AddUserDeliveryAddress1 address:%s", utils.Format4Output(address, true)) if address.UserID == "" {