接入分销订单支付退款与站点隔离
This commit is contained in:
@@ -21,12 +21,38 @@ var (
|
||||
ErrInvalidPeriod = errors.New("invalid distribution settlement period")
|
||||
ErrSettlementBatchNotFound = errors.New("distribution settlement batch not found")
|
||||
ErrBatchAlreadySettled = errors.New("distribution settlement batch already settled")
|
||||
ErrSiteAccessDenied = errors.New("distribution site access denied")
|
||||
)
|
||||
|
||||
type Repository struct{ db *gorm.DB }
|
||||
|
||||
func NewRepository(db *gorm.DB) *Repository { return &Repository{db: db} }
|
||||
|
||||
func (r *Repository) ScopeSiteID(ctx context.Context, adminID, requested uint64) (uint64, error) {
|
||||
if adminID == 0 {
|
||||
return requested, nil
|
||||
}
|
||||
var members []model.DistributionSiteMember
|
||||
if err := r.db.WithContext(ctx).Where("admin_user_id = ? AND status = 'active'", adminID).Find(&members).Error; err != nil {
|
||||
return 0, err
|
||||
}
|
||||
if len(members) == 0 {
|
||||
return requested, nil
|
||||
}
|
||||
if requested > 0 {
|
||||
for _, member := range members {
|
||||
if member.SiteID == requested {
|
||||
return requested, nil
|
||||
}
|
||||
}
|
||||
return 0, ErrSiteAccessDenied
|
||||
}
|
||||
if len(members) == 1 {
|
||||
return members[0].SiteID, nil
|
||||
}
|
||||
return 0, nil
|
||||
}
|
||||
|
||||
func (r *Repository) ListSites(ctx context.Context) ([]SiteDTO, error) {
|
||||
var rows []model.DistributionSite
|
||||
if err := r.db.WithContext(ctx).Order("id ASC").Find(&rows).Error; err != nil {
|
||||
|
||||
Reference in New Issue
Block a user