admin weapp: advert order

dev_sync_trustie
p31729568 5 years ago
parent 6a9c5096dc
commit b97e73465b

@ -1,2 +1,3 @@
class WeappSettings::Advert < WeappSetting class WeappSettings::Advert < WeappSetting
default_scope { order(position: :asc) }
end end

@ -9,22 +9,22 @@ class Admins::DragWeappAdvertService < ApplicationService
def call def call
return if move.position + 1 == after&.position # 未移动 return if move.position + 1 == after&.position # 未移动
carousels = WeappSettings::Advert.all adverts = WeappSettings::Advert.all
ActiveRecord::Base.transaction do ActiveRecord::Base.transaction do
if after.blank? || move.id == after.id # 移动至末尾 if after.blank? || move.id == after.id # 移动至末尾
total = carousels.count total = adverts.count
carousels.where('position > ?', move.position).update_all('position = position - 1') adverts.where('position > ?', move.position).update_all('position = position - 1')
move.update!(position: total) move.update!(position: total)
return return
end end
if move.position > after.position # 前移 if move.position > after.position # 前移
carousels.where('position >= ? AND position < ?', after.position, move.position).update_all('position = position + 1') adverts.where('position >= ? AND position < ?', after.position, move.position).update_all('position = position + 1')
move.update!(position: after.position) move.update!(position: after.position)
else # 后移 else # 后移
carousels.where('position > ? AND position < ?', move.position, after.position).update_all('position = position - 1') adverts.where('position > ? AND position < ?', move.position, after.position).update_all('position = position - 1')
move.update!(position: after.position - 1) move.update!(position: after.position - 1)
end end
end end

Loading…
Cancel
Save