Skip to content

Instantly share code, notes, and snippets.

@mimosz
Created November 14, 2012 19:29
Show Gist options
  • Save mimosz/4074194 to your computer and use it in GitHub Desktop.
Save mimosz/4074194 to your computer and use it in GitHub Desktop.
超卖补货,部分依旧缺货。
user = User.last
# 订单列表
trades = CSV.read('trades.csv', 'rb:GB18030:UTF-8', headers: true, col_sep: ';')
trade_ids = []
@items = {}
trades.each do |trade|
trade_ids << trade['TID']
@items[trade['SKU']] = 0 unless @items.has_key?(trade['SKU'])
end
trade_ids.uniq!
# 库存数
skus_data = CSV.read('all_items.csv', 'rb:GB18030:UTF-8', headers: true, col_sep: ';')
skus_data.each do |sku|
@items[sku['SKU']] = 0 unless @items.has_key?(sku['SKU'])
@items[sku['SKU']] += sku['NUM'].to_i
end
# 同步订单
counter = 0
trade_ids.each_slice(1000).to_a.each do |trades|
Trade.sync_orders(user.session, trades)
counter += 1000
end
# 补货
def check_num(sku, num)
status = if @items.has_key?(sku)
if @items[sku] > 0
if (@items[sku] - num) >= 0
@items[sku] -= num
'补货'
else
'缺货'
end
else
'缺货'
end
else
'有货'
end
end
sent_ids = []
header_row = ['订单号', '卖家昵称', '收货人', '手机', '付款', '付款时间', '城市', '数量', '金额', '状态', 'SKU', '宝贝ID']
footer_row = ['', '', '', '', '', '', '']
CSV.open('缺货处理.csv', "wb:GB18030", col_sep: ',') do |csv|
trades = Trade.in(_id: trade_ids).asc(:pay_time)
csv << header_row
trades.each do |trade|
if trade.status == 'WAIT_SELLER_SEND_GOODS'
first = [
trade._id,
trade.buyer_nick,
trade.receiver_name,
trade.receiver_mobile,
trade.payment,
trade.pay_time.in_time_zone.strftime("%Y-%m-%d %H:%M:%S"),
trade.receiver_city
]
trade.orders.each do |order|
row = [
order.num,
order.payment,
check_num(order.outer_sku_id, order.num),
order.outer_sku_id,
order.num_iid
]
csv << first + row
end
else
sent_ids << trade._id
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment