完善配送订单创建联动
This commit is contained in:
@@ -1,7 +1,10 @@
|
||||
// 功能描述:实现配送点范围内的用户、服务关系和收货地址管理。
|
||||
// 版本:v1.1.0。
|
||||
package delivery
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"strings"
|
||||
|
||||
"git.apinb.com/bsm-sdk/core/errcode"
|
||||
"git.apinb.com/bsm-sdk/core/infra"
|
||||
@@ -231,16 +234,35 @@ func ArchiveUser(ctx *gin.Context) {
|
||||
}
|
||||
|
||||
func addressQuery(pointID uint64) *gorm.DB {
|
||||
return common.ActiveRecords(db().Model(&models.UserAddress{})).
|
||||
return addressQueryWithDatabase(db(), pointID)
|
||||
}
|
||||
|
||||
// addressQueryWithDatabase 构造配送点有效服务用户的地址范围,便于独立验证查询约束。
|
||||
func addressQueryWithDatabase(database *gorm.DB, pointID uint64) *gorm.DB {
|
||||
return common.ActiveRecords(database.Model(&models.UserAddress{})).
|
||||
Joins("JOIN user_service_relation ON user_service_relation.user_account_id = user_address.user_account_id AND user_service_relation.status <> ?",
|
||||
common.StatusArchived).Where("user_service_relation.delivery_basic_id = ?", pointID)
|
||||
}
|
||||
|
||||
// addressQueryForContract 将当前配送点地址进一步限定为合同签约用户。
|
||||
func addressQueryForContract(query *gorm.DB, userAccountID uint64) *gorm.DB {
|
||||
return query.Where("user_address.user_account_id = ?", userAccountID)
|
||||
}
|
||||
|
||||
func ListAddress(ctx *gin.Context) {
|
||||
point, _, ok := currentScope(ctx)
|
||||
if ok {
|
||||
listScoped(ctx, &models.UserAddress{}, addressQuery(point.ID), "user_address.created_at desc")
|
||||
if !ok {
|
||||
return
|
||||
}
|
||||
query := addressQuery(point.ID)
|
||||
if contractIdentity := strings.TrimSpace(ctx.Query("gasorder_contract_identity")); contractIdentity != "" {
|
||||
contract, valid := scopedContract(ctx, contractIdentity, point.ID)
|
||||
if !valid {
|
||||
return
|
||||
}
|
||||
query = addressQueryForContract(query, contract.UserAccountID)
|
||||
}
|
||||
listScoped(ctx, &models.UserAddress{}, query, "user_address.is_default desc, user_address.created_at desc")
|
||||
}
|
||||
|
||||
func GetAddress(ctx *gin.Context) {
|
||||
|
||||
Reference in New Issue
Block a user