优化配送订单收货地址联动显示

This commit is contained in:
czl231
2026-08-13 22:50:37 +08:00
parent 457bcfb450
commit 029724a46c
12 changed files with 367 additions and 116 deletions

View File

@@ -4,6 +4,7 @@ package user
import (
"errors"
"strings"
"git.apinb.com/bsm-sdk/core/errcode"
"git.apinb.com/bsm-sdk/core/infra"
@@ -28,6 +29,7 @@ func ListUserAddress(ctx *gin.Context) {
var list []models.UserAddress
var total int64
query := common.ApplyKeywordFilter(ctx, common.ActiveRecords(impl.DBService.Model(&models.UserAddress{})), &models.UserAddress{})
query = filterUserAddressByContract(query, ctx.Query("gasorder_contract_identity"))
if err := query.Count(&total).Error; err != nil {
infra.Response.Error(ctx, err)
return
@@ -45,6 +47,17 @@ func ListUserAddress(ctx *gin.Context) {
infra.Response.Success(ctx, gin.H{"total": total, "list": restoreUserAddressLocations(protected, list)})
}
// filterUserAddressByContract 仅返回指定配送合同签约用户的地址,避免后台下单时跨用户选择。
func filterUserAddressByContract(query *gorm.DB, contractIdentity string) *gorm.DB {
contractIdentity = strings.TrimSpace(contractIdentity)
if contractIdentity == "" {
return query
}
contractUser := common.ActiveRecords(impl.DBService.Model(&models.GasorderContract{})).
Select("user_account_id").Where("identity = ?", contractIdentity)
return query.Where("user_account_id = (?)", contractUser)
}
// GetUserAddress 查询用户地址详情,并返回详情与编辑页需要的地址和坐标。
func GetUserAddress(ctx *gin.Context) {
var address models.UserAddress