做了一个坑爹的规则过滤表,去过滤交易记录:
trades.each do |t|
t.orders.each do |o|
filter_list.each do |filter|
outer_ids = filter.outer_ids
max = filter.price_max.to_i
min = filter.price_min.to_i
unless outer_ids.empty?
if outer_ids.include?(o.outer_iid) # 商家编码过滤
if max > 0 || min > 0 # 价格过滤
执行累加方法 if o.payment >= min && o.payment <= max
else
执行累加方法
end
else
if max > 0 || min > 0 # 价格过滤
执行累加方法 if o.payment >= min && o.payment <= max
end
end
end
end
end
end
数据结构不能变,有万恶的合并支付,所以必须取 order 中的 outer_iid 才准确:
class Trade
include Mongoid::Document
# Embedded
embeds_many :orders # 订单
embeds_one :shipping # 快递
跟数据结构有毛关系,你把那个 3 层循环拆成 2 个两层肯定是可行的,orders,filter_list 两个先比,找出符合条件的再和 trades 算帐。