module BlsmVdCore
Constants
- ERROR_CODES
错误代码
- VERSION
Attributes
db_config[RW]
Public Class Methods
load_config()
click to toggle source
# File lib/blsm-vd-core/model/active_record.rb, line 3 def self.load_config config_path = Rails.root ? File.join(Rails.root, "config", "database.yml") : './config/database.yml' File.open(config_path).inject('') { |text, line| text+line } end
Public Instance Methods
create_clearing_item(order_id, force=false)
click to toggle source
创建(更新)结算项 调用此方法,只会创建一个对应的结算项,如果之前有结算项,会直接更新相应的结算项
Parameters¶ ↑
* +order_id+ - 订单id * +force+ - 是否强制创建结算项
# File lib/blsm-vd-core.rb, line 233 def create_clearing_item(order_id, force=false) order = Order.where(id: order_id).first line_items = order.line_items if order user = order.application.user if order && order.application #数据校验 return ERROR_CODES[404] unless order return ERROR_CODES[4043] unless line_items && !line_items.empty? return ERROR_CODES[4044] unless user user_info = user.create_vd_user_info #没有对应的结算项 if order.clearing_items.empty? #线上订单(等待配货时创建结算项) 线下订单(客户签收时创建结算项) if (!order.ubox_order? && order.state=='等待配货') || (order.ubox_order? && order.state=='客户签收,订单完成') || force data = {} data[:order_id] = order.id data[:order_amount] = order.total_fee data[:earn_amount] = order.jm_profit data[:user_id] = user.id data[:item_type] ='default' data[:rate_of_profit] = order.ubox_order? ? 0.25 : user_info.profit_rate data[:state] = 'WAIT_TO_SURE' if order.pay_off_line? data[:pay_type] = 'CODPAY' else data[:pay_type] = 'ZXZF' data[:real_amount] = order.total_fee end ClearingItem.new(data).save leader = User.where("id in(select supervisor_id from vd_user_infos where user_id=#{user.id})").first leader_info = leader.create_vd_user_info if leader #订单确认提醒(黑带) leader_change = order.get_vd_score(leader_info.vd_role) if leader_info if leader && leader_info && !order.ubox_order? content = "首趣黑带#{leader.username},你好:你的队员【#{user.username}】已成功确认订单," #客户端通知 if leader.rc_user VdRcMsgNotify.create_distribute_notify(leader.id, order.id, content, leader_change) end #微信通知 if leader.openid distribute_leader_notify = {touser: leader.openid, order_id: Order.encrypt(Order.encrypted_id_key, order.id.to_s), score_change: leader_change, money_change: (leader_change*VdUserScore::SCORES[:SCORE_TO_MONEY]).round(2), content: content } BlsmMpWx.create_msg(nil, leader.openid, distribute_leader_notify, 'distribute') end end return ERROR_CODES[200] end end #有对应的结算项(逐个去更新) order.clearing_items.each { |item| unless item.clearing data = {} data[:order_id] = order.id data[:order_amount] = order.total_fee data[:earn_amount] = order.jm_profit data[:rate_of_profit] = order.ubox_order? ? order.ubox_vm.settlement_rate : user_info.profit_rate if order.pay_off_line? data[:pay_type] = 'CODPAY' else data[:pay_type] = 'ZXZF' data[:real_amount] = order.total_fee end item.update_attributes(data) return ERROR_CODES[200] end } ERROR_CODES[0] end
current_week_period_str()
click to toggle source
这一周
# File lib/blsm-vd-core.rb, line 816 def current_week_period_str t = Time.now "#{t.strftime('%Y')}-#{t.at_beginning_of_week.strftime("%m%d")}-#{t.at_end_of_week.strftime("%m%d")}" end
last_week_period_str()
click to toggle source
上一周
# File lib/blsm-vd-core.rb, line 810 def last_week_period_str t = Time.now - 7.day "#{t.strftime('%Y')}-#{t.at_beginning_of_week.strftime("%m%d")}-#{t.at_end_of_week.strftime("%m%d")}" end
on_clearing_item_cash_back(clearing_item_id)
click to toggle source
结算项变为物流返款时调用此方法
# File lib/blsm-vd-core.rb, line 710 def on_clearing_item_cash_back(clearing_item_id) clearing_item = ClearingItem.where(id: clearing_item_id).first return ERROR_CODES[0] if !clearing_item || clearing_item.state!='CASH_BACK' || clearing_item.earn_amount.to_f < 0 || clearing_item.created_at.to_s < '2017-02-27' order = clearing_item.order return ERROR_CODES[0] if !order || order.ubox_order? invitee = clearing_item.user return ERROR_CODES[0] unless invitee inviter = invitee.sq_inviter return ERROR_CODES[4010] if VdInviteReward.where(order_id: order.id).first vd_transaction = "clearing_item_cash_back_#{clearing_item_id}" return ERROR_CODES[4010] if VdInfoSec.dangerous?(vd_transaction) reward = 0 LineItem.where(:order_id => order.id).each do |line_item| product_prop = line_item.product_prop reward += line_item.quantity*product_prop.inviter_reward if product_prop && line_item.sale_price!=0 end if reward > 0 week = current_week_period_str #物流返款按自然周返款统计奖金金额 VdInviteReward.create({inviter_id: inviter.id, invitee_id: invitee.id, order_id: order.id, reward: reward, week: week}) end #安全库录入信息 VdInfoSec.committed(vd_transaction) ERROR_CODES[200] end
on_order_canceled(seller_id, order_id)
click to toggle source
【積分消耗】商品售卖出去
什么时候调用此方法合适?当订单的状态变更为‘已取消’时
微店主的积分会根据商品总的供货价的 订单取消,微店主会被扣直接的 订单供货价 * SCORES[:SALE_OUT_DIRECT]
积分
微店主所属的队长(直接上级)被扣 订单供货价 * +SCORES[:SALE_OUT_INDIRECT]+ 积分
Parameters¶ ↑
* +seller_id+ - 销售员的id * +order_id+ - 订单id
# File lib/blsm-vd-core.rb, line 596 def on_order_canceled(seller_id, order_id) seller = User.where(id: seller_id).first # leader = User.where("id in(select supervisor_id from vd_user_infos where user_id=#{seller_id})").first order = Order.where(id: order_id).first return ERROR_CODES[4045] unless seller return ERROR_CODES[401] if !order || !order.application return ERROR_CODES[0] unless order.clearing_items #删除结算项 order.clearing_items.each { |item| item.destroy unless item.state == 'CASH_BACK' } #安全校验(是否曾经被售出过) score_type_str = "order_sale_out_#{seller_id}_#{order_id}" sold_out = VdInfoSec.dangerous?(score_type_str) return ERROR_CODES[200] unless sold_out #安全校验(是否曾经此订单被取消,并且扣取积分) vd_transaction = "order_sale_out_#{seller_id}_#{order_id}_then_cancel" danger = VdInfoSec.dangerous?(vd_transaction) return danger if danger #卖家和团队领导的信息 # seller_info = seller.create_vd_user_info # leader_info = leader && leader.is_vd_black? ? leader.create_vd_user_info : nil content = "您的订单(编号#{order.number})客户先签收后又取消。" VdUserScore.where(score_type: score_type_str).each do |score| score_change = -score.score if score.user && !order.ubox_order? && score_change!=0 score.user.create_vd_user_info.change_score(score_change) content = "您的队员#{seller.username}的订单(订单编号#{order.number})客户先签收后又取消。" if seller.id != score.user.id notify = {touser: score.user.openid, change: score_change, total: score.user.create_vd_user_info.score, content: "变动原因:#{content}"} #变动通知 BlsmMpWx.create_msg(nil, score.user.openid, notify, 'score_change') VdRcMsgNotify.create_order_sign_fail_notify(score.user_id, score_change, order.number, content) #积分历史 VdUserScore.create({ user_id: score.user_id, score: score_change, notes: content, score_type: vd_transaction }) end end #安全库录入信息 VdInfoSec.committed(vd_transaction) ERROR_CODES[200] end
on_order_export_to_erp(order_id)
click to toggle source
订单被导入到erp时
判断订单是否包含顺丰包邮商品,并根据此创建包邮券
# File lib/blsm-vd-core.rb, line 135 def on_order_export_to_erp(order_id) order = Order.where(id: order_id).first settings = Setting.where(name: 'vd_free_post_products').first seller = order.application.user if order && order.application #数据校验 return ERROR_CODES[404] unless order return ERROR_CODES[4043] unless order.line_items return ERROR_CODES[4046] unless settings return ERROR_CODES[4045] unless seller product_ids = settings.value.to_s.split('|').map(&:to_i) return ERROR_CODES[4048] if product_ids.size==0 product_count = order.line_items.inject(0) { |s, item| s+= product_ids.include?(item.product_id) ? 1*item.quantity : 0; s } return ERROR_CODES[4047] unless product_count >0 #安全校验 vd_transaction = "order_export_to_erp_handle_#{order_id}" danger = VdInfoSec.dangerous?(vd_transaction) return danger if danger product_count.times do VdFreePost.create({user_id: seller.id}) end content = "恭喜您获得#{product_count}次免补差价发顺丰资格,点击查看 http://w.url.cn/s/AQsuRun\n有效期限:#{Setting.where(name: 'vd_free_post_default_expire').pluck(:value)[0]}到期" VdMpMsg.create!({ app_id: BlsmMpWx.APP_ID, openid: seller.openid, content: content, msg_name: "custom", template_msg: false, status: 'none' }) if seller.openid VdInfoSec.committed(vd_transaction) ERROR_CODES[200] end
on_order_sale_out(seller_id, order_id)
click to toggle source
【积分获取】商品售卖出去
什么时候调用此方法合适?当订单的状态变更为‘客户签收,订单完成’时,标明商品已经被售出
微店主的积分会根据商品总的供货价的 商品卖出,微店主会获取直接的 订单供货价 * SCORES[:SALE_OUT_DIRECT]
积分
微店主所属的队长(直接上级)获取 订单供货价 * +SCORES[:SALE_OUT_INDIRECT]+ 积分
Parameters¶ ↑
* +seller_id+ - 销售员的id * +order_id+ - 订单id
# File lib/blsm-vd-core.rb, line 330 def on_order_sale_out(seller_id, order_id) seller = User.where(id: seller_id).first return ERROR_CODES[4045] unless seller leader = User.where("id in(select supervisor_id from vd_user_infos where user_id=#{seller_id})").first order = Order.where(id: order_id).first return ERROR_CODES[401] if !order || !order.application || !(order.application.user_id==seller_id) #安全校验 vd_transaction = "order_sale_out_#{seller_id}_#{order_id}" danger = VdInfoSec.dangerous?(vd_transaction) return danger if danger #卖家和团队领导的信息 seller_info = seller.create_vd_user_info leader_info = leader && leader.is_vd_black? ? leader.create_vd_user_info : nil #供货价总和 franchise_sum = order.franchise_sum #积分获取 # seller_change = order.get_vd_score(seller_info.vd_role) seller_change = 0 if leader_info leader_change = order.get_vd_score(leader_info.vd_role) # - 卖家是黑带,但是从属于某个黑带名下 if seller_info.is_black? seller_change = (order.get_vd_score(seller_info.vd_role))*0.7 leader_change = (order.get_vd_score(seller_info.vd_role))*0.3 # - 卖家所属的黑带,是某个黑带的附属黑带 elsif leader_info.supervisor_slave && leader_info.supervisor org_leader = leader_info.supervisor org_leader_info = org_leader.create_vd_user_info leader_change = order.get_vd_score(leader_info.vd_role)*0.7 org_leader_change = order.get_vd_score(org_leader_info.vd_role)*0.3 end #卖家是黑带 else seller_change = order.get_vd_score(seller_info.vd_role) if seller_info.is_black? end # 卖家信息变动 if seller_change!=0 && !order.ubox_order? seller_info.change_score(seller_change) #融云推送 if seller.rc_user VdRcMsgNotify.create_score_change_notify(seller.id, "您好,订单#{order.number}已成功签收,分销#{franchise_sum}元", seller_change, '积分', seller_info.score) end #微信通知 if seller.openid seller_notify = {touser: seller.openid, change: seller_change, total: seller_info.score, content: "您好,订单#{order.number}已成功签收,分销#{franchise_sum}元"} BlsmMpWx.create_msg(nil, seller.openid, seller_notify, 'score_change') end end VdUserScore.create({ user_id: seller_id, score: seller_change, notes: "订单#{order.number}已#{order.ubox_order? ? '出货成功' : '成功签收'},分销#{franchise_sum}元", score_type: vd_transaction }) if !order.ubox_order? #黑带信息变动 if leader && leader_info && leader_change && leader_change!=0 && !order.ubox_order? leader_info.change_score(leader_change) #融云推送 if leader.rc_user VdRcMsgNotify.create_score_change_notify(leader.id, "首趣黑带#{leader.username},你好,你的队员【#{seller.username}】订单#{order.number}已成功签收,分销#{franchise_sum}元", leader_change, '积分', leader_info.score) end #微信通知 if leader.openid leader_notify = {touser: leader.openid, change: leader_change, total: leader_info.score, content: "首趣黑带#{leader.username},你好,你的队员【#{seller.username}】订单#{order.number}已成功签收,分销#{franchise_sum}元"} BlsmMpWx.create_msg(nil, leader.openid, leader_notify, 'score_change') end VdUserScore.create({ user_id: leader.id, score: leader_change, notes: "队员【#{seller.username}】订单#{order.number}已成功签收,分销#{franchise_sum}元", score_type: vd_transaction }) end #原始黑带信息变动 if org_leader && org_leader_info && org_leader_change && org_leader_change!=0 && !order.ubox_order? org_leader_info.change_score(org_leader_change) #融云推送 if org_leader.rc_user VdRcMsgNotify.create_score_change_notify(org_leader.id, "首趣黑带#{org_leader.username},你好,你的附属黑带【#{leader.username}】的队员【#{seller.username}】订单#{order.number}已成功签收,分销#{franchise_sum}元", org_leader_change, '积分', org_leader_info.score) end #微信通知 if org_leader.openid org_leader_notify = {touser: org_leader.openid, change: org_leader_change, total: org_leader_info.score, content: "首趣黑带#{org_leader.username},你好,你的附属黑带【#{leader.username}】的队员【#{seller.username}】订单#{order.number}已成功签收,分销#{franchise_sum}元"} BlsmMpWx.create_msg(nil, org_leader.openid, org_leader_notify, 'score_change') end VdUserScore.create({ user_id: org_leader.id, score: org_leader_change, notes: "下属黑带【#{leader.username}】的队员【#{seller.username}】订单#{order.number}已成功签收,分销#{franchise_sum}元", score_type: vd_transaction }) end #店主销售额、分销额增加 VdUserInfo.update_counters(seller_info.id, :sale_sum => order.total_fee.to_f) VdUserInfo.update_counters(seller_info.id, :distribute_sum => order.franchise_sum.to_f) #分销额增加,更新未发出货物的(state=CREATE)分成比率 seller.clearing_items.where(:state => "WAIT_TO_SURE").each do |item| if item.order.ubox_order? item.update_attributes({:rate_of_profit => order.ubox_vm.settlement_rate, :earn_amount => item.order.jm_profit}) else item.update_attributes({:rate_of_profit => seller_info.profit_rate, :earn_amount => item.order.jm_profit}) end end #订单签收,加粉充值自动增加10元 fans_rewards = Setting.vd_order_sign_fans_rewards if fans_rewards && fans_rewards[:order_money]>0 && fans_rewards[:reward_money]>0 && (order.shipping_charge+order.item_total)>= fans_rewards[:order_money] user_spread = UserSpread.where(user_id: seller.id).first if user_spread UserSpread.update_counters(user_spread.id, :amount => fans_rewards[:reward_money]) RechargeSpread.create({amount: fans_rewards[:reward_money], user_spread_id: user_spread.id, r_type: 1, admin_id: 3, notes: "订单#{order.id}签收奖励"}) puts "seller:#{seller},rc_user:#{seller.rc_user}" #融云推送 if seller.rc_user VdRcMsgNotify.create_order_sign_fans_notify(seller.id, fans_rewards[:reward_money], order.number, "尊敬的店主#{seller.username},您好,您的订单#{order.number}已成功签收,首趣奖励您粉丝推广费#{fans_rewards[:reward_money]}元") end end end #防拒签通知 if seller.rc_user VdRcMsgNotify.create_order_finish_notify(seller.username) end # # 包邮券返款 # if order.vd_free_post # ClearingItem.create({ # state: 'CASH_BACK', # pay_type: "ZXZF", # user_id: seller.id, # order_id: -14, # rate_of_profit: 1, # earn_amount: order.shipping_charge # }) # end #供货全返还 if order.line_items && seller_info.purchase_fee > 0 franchise_price = order.line_items.inject(0) { |result, item| result+item.franchise_price*item.quantity } earn_amount = franchise_price < seller_info.purchase_fee ? franchise_price : seller_info.purchase_fee #创建结算项 ClearingItem.create({ state: 'CASH_BACK', pay_type: "ZXZF", user_id: seller.id, order_id: -13, rate_of_profit: 1, earn_amount: earn_amount }) seller_info.update_attributes(:purchase_fee => (seller_info.purchase_fee - earn_amount)) #进货费变动记录 VdPurchaseFeeLog.create(:user_id => seller.id, :purchase_fee => -earn_amount, :description => "订单完成,系统扣除", :admin_user_id => 3) #通知用户 fee_content = "亲爱的店主#{seller.username}:订单已经签收成功,您的优店管家—店主信息—进货费#{franchise_price}元,抵扣#{earn_amount},时间#{Time.now.strftime("%F %H:%M:%S")}" if !seller.rc_user.blank? #融云通知 VdRcMsgNotify.create({ user_id: 3, to_ids: seller.username, title: "进货费变动提醒", to_type: 'single', msg_type: 'RC:TxtMsg', content: fee_content }) end #微信公众号通知 VdMpMsg.create!({ app_id: BlsmMpWx.APP_ID, openid: seller.openid, content: fee_content, msg_name: "custom", template_msg: false, status: 'none' }) end # 给邀请人奖励 inviter = User.where(:invication_code => seller.invicated_from).first if seller.invicated_from #【旧版邀请】被邀请人,金牌店主以下,渠道邀请,邀请人不为空,一个订单只能有一个结算项 if inviter && seller_info.created_at.to_s < Setting.old_invite_reward_expired_at && seller_info.distribute_sum < 1500 && seller_info.channel == "market_invite" #发送给邀请人微信提醒 content = "您邀请的店主 #{seller.username}(注册电话号为#{seller.phone})与#{Time.now.strftime("%Y-%m-%d %H:%M:%S")}成功成交一笔订单,订单金额为#{order.total_fee.to_f}元, 您将同步获取邀请奖励#{(order.total_fee.to_f * 0.1).round(2)}元,特此通知" #为邀请人创建,结算项 ClearingItem.create({ state: 'CASH_BACK', pay_type: "ZXZF", user_id: inviter.id, order_id: -11, rate_of_profit: 1, earn_amount: (order.total_fee.to_f * 0.1).round(2) }) VdMpMsg.create!({ app_id: BlsmMpWx.APP_ID, openid: inviter.openid, content: content, msg_name: "custom", template_msg: false, status: 'none' }) #发送给邀请人融云提醒 if inviter.rc_user VdRcMsgNotify.create({ user_id: 3, to_ids: inviter.username, title: "提醒", to_type: 'single', msg_type: 'RC:TxtMsg', content: content }) end end #安全库录入信息 VdInfoSec.committed(vd_transaction) ERROR_CODES[200] end
on_order_sign_fail(seller_id, order_id)
click to toggle source
什么时候调用此方法合适?当订单的状态变更为‘拒签’时
Parameters¶ ↑
* +seller_id+ - 销售员的id * +order_id+ - 订单id
# File lib/blsm-vd-core.rb, line 661 def on_order_sign_fail(seller_id, order_id) seller = User.where(id: seller_id).first # leader = User.where("id in(select supervisor_id from vd_user_infos where user_id=#{seller_id})").first order = Order.where(id: order_id).first return ERROR_CODES[4045] unless seller return ERROR_CODES[401] if !order || !order.application || !(order.application.user_id==seller_id) #安全校验(是否曾经被售出过) score_type_str = "order_sale_out_#{seller_id}_#{order_id}" sold_out = VdInfoSec.dangerous?(score_type_str) return ERROR_CODES[200] unless sold_out #安全校验(是否曾经此订单被取消,并且扣取积分) vd_transaction = "order_sale_out_#{seller_id}_#{order_id}_then_sign_fail" return ERROR_CODES[200] if VdInfoSec.dangerous?(vd_transaction) content = "您的订单(编号#{order.number})客户先签收后又拒签。" VdUserScore.where(score_type: score_type_str).each do |score| score_change = -score.score if score.user && !order.ubox_order? score.user.create_vd_user_info.change_score(score_change) content = "您的队员#{seller.username}的订单(订单编号#{order.number})客户先签收后又拒签。" if seller.id != score.user.id notify = {touser: score.user.openid, change: score_change, total: score.user.create_vd_user_info.score, content: content} #变动通知 BlsmMpWx.create_msg(nil, score.user.openid, notify, 'score_change') VdRcMsgNotify.create_order_sign_fail_notify(score.user_id, score_change, order.number, content) #积分历史 VdUserScore.create({ user_id: score.user_id, score: score_change, notes: content, score_type: vd_transaction }) end end #安全库录入信息 VdInfoSec.committed(vd_transaction) ERROR_CODES[200] end
on_order_signed(order_id, sign_type)
click to toggle source
物流返款
Parameters¶ ↑
* +order_id+ - 订单id * +sign_type+ - 签收状态:ENUM('sign_ok','sign_fail')
# File lib/blsm-vd-core.rb, line 178 def on_order_signed(order_id, sign_type) order = Order.where(id: order_id).first clearing_item = ClearingItem.where(order_id: order.id).first if order seller = order.application.user if order && order.application #数据校验 return ERROR_CODES[404] unless order return ERROR_CODES[4042] unless clearing_item return ERROR_CODES[4045] unless seller return ERROR_CODES[0] if sign_type =~ /sign_ok/ && clearing_item.state.to_s =~ /CASH_BACK/ #安全校验 vd_transaction = "order_sign_handle_#{order_id}_#{sign_type}" danger = VdInfoSec.dangerous?(vd_transaction) return danger if danger #(物流返款成功,订单完成) if sign_type =~ /sign_ok/ && order.pay_off_line? note = Order.latest_notes(clearing_item, {username: '首趣'}, '标记物流返款') clearing_item.marking_confirm(note) VdInfoSec.committed(vd_transaction) return ERROR_CODES[200] end #签收失败(拒签) if sign_type =~ /sign_fail/ VdInfoSec.committed(vd_transaction) BlsmVdCore.sq_invite_on_order_rejecting(seller.id, order.id) #拒签 user = order.application.user if order && order.application #拒签删除积分 on_order_sign_fail(user.id, order_id) if user if clearing_item.clearing && clearing_item.clearing.state == "BALANCED" i_clearing = clearing_item.clone i_clearing.clearing_id = nil i_clearing.save note = Order.latest_notes(clearing_item, {username: '首趣'}, '标记签收失败') i_clearing.marking_refuse(note, clearing_item.possible_profit) return ERROR_CODES[200] else note = Order.latest_notes(clearing_item, {username: '首趣'}, '标记签收失败') clearing_item.marking_refuse(note) return ERROR_CODES[200] end end ERROR_CODES[0] end
on_order_state_change(order_id)
click to toggle source
当订单状态发生变化时,调用此方法
包含:订单被发出去 +order_sale_out+ 创建结算项 +create_clearing_item+
Parameters¶ ↑
* +order_id+ - 订单id
# File lib/blsm-vd-core.rb, line 69 def on_order_state_change(order_id) order = Order.where(id: order_id).first clearing_item = ClearingItem.where(order_id: order.id).first if order #数据校验 return ERROR_CODES[404] unless order #等待配货=>创建结算项 if order.state.to_s.include?('等待配货') return create_clearing_item(order_id) end #订单被取消=>删除结算项(扣除積分) if order.state.to_s.include?('订单取消') return on_order_canceled(order.application.user_id, order_id) if order.application end #订单被拒签=>创建shippingorder 拒签的记录 if order.state.to_s.include?('客户拒签,原件返回') shippingorder = Shippingorder.where(:id => order.shippingorder_id).first if shippingorder.blank? shippingorder = Shippingorder.create(:refuse_at => Time.now) order.update_attributes(:shippingorder_id => shippingorder.id) else shippingorder.update_attributes(:refuse_at => Time.now) end return end #在线支付(客户签收,订单完成)=>确认结算项 if order.state.to_s.include?('客户签收,订单完成') create_clearing_item(order_id) if order.ubox_order? clearing_item = ClearingItem.where(order_id: order.id).first on_order_sale_out(order.application.user_id, order_id) if order.application clearing_item.update_attributes({earn_amount: order.jm_profit, state: 'CASH_BACK'}) if clearing_item && order.pay_on_line? return ERROR_CODES[200] end ERROR_CODES[0] end
send_cash_back_notify(order_id, wx_app_id=nil)
click to toggle source
发送物流返款通知
# File lib/blsm-vd-core.rb, line 112 def send_cash_back_notify(order_id, wx_app_id=nil) order = Order.where(id: order_id).first seller = order.application.user if order && order.application #数据校验 return ERROR_CODES[404] unless order return ERROR_CODES[4045] unless seller #物流返款通知 if seller.rc_user VdRcMsgNotify.create_cashback_notify(seller.id, order.id) end if seller.openid seller_notify = {touser: seller.openid, order_id: Order.encrypt(Order.encrypted_id_key, order.id.to_s), content: "【物流返款通知】"} BlsmMpWx.create_msg(wx_app_id, seller.openid, seller_notify, 'order') end ERROR_CODES[200] end
sq_invite_on_order_delivering(seller_id, order_id)
click to toggle source
订单发货以后(通过首趣码邀请的回调)
# File lib/blsm-vd-core.rb, line 743 def sq_invite_on_order_delivering(seller_id, order_id) seller = User.where(id: seller_id).first order = Order.where(id: order_id).first clearing_item = ClearingItem.where(order_id: order_id).first return ERROR_CODES[4045] unless seller return ERROR_CODES[0] if !order || order.ubox_order? || order.shippingorder_id.to_i <= 0 return ERROR_CODES[0] unless clearing_item vd_transaction = "on_order_delivering_#{seller_id}_#{order_id}" return ERROR_CODES[4010] if VdInfoSec.dangerous?(vd_transaction) wday = Time.now.wday #今天星期几,上一周确认的订单,并且在周二凌晨前发货的订单 上一周销售额 否则算下一周 销售额 week = wday==1 && clearing_item.created_at < (Time.now - 7.day).at_end_of_week ? last_week_period_str : current_week_period_str os = VdWeekOrderSale.where(order_id: order.id).first os.update_attributes({user_id: seller.id, week: week, sale_sum: order.total_fee}) if os VdWeekOrderSale.create({order_id: order.id, user_id: seller.id, week: week, sale_sum: order.total_fee}) unless os ws = VdWeekSale.where(user_id: seller.id, week: week).first ws.update_attributes({sale_sum: VdWeekOrderSale.where(week: week, user_id: seller_id).sum(:sale_sum)}) if ws VdWeekSale.create({user_id: seller.id, week: week, sale_sum: VdWeekOrderSale.where(week: week, user_id: seller_id).sum(:sale_sum)}) unless ws #安全库录入信息 VdInfoSec.committed(vd_transaction) ERROR_CODES[200] end
sq_invite_on_order_rejecting(seller_id, order_id)
click to toggle source
订单拒签以后(通过首趣码邀请的回调)
# File lib/blsm-vd-core.rb, line 774 def sq_invite_on_order_rejecting(seller_id, order_id) seller = User.where(id: seller_id).first order = Order.where(id: order_id).first clearing_item = ClearingItem.where(order_id: order_id).first return ERROR_CODES[4045] unless seller return ERROR_CODES[0] if !order || order.ubox_order? return ERROR_CODES[0] unless clearing_item vd_transaction = "on_order_rejecting_#{seller_id}_#{order_id}" return ERROR_CODES[4010] if VdInfoSec.dangerous?(vd_transaction) wday = Time.now.wday #今天星期几,上一周确认的订单,并且在周二凌晨前拒签的订单 上一周销售额 否则算下一周 销售额 week = wday==1 && clearing_item.created_at < (Time.now - 7.day).at_end_of_week ? last_week_period_str : current_week_period_str os = VdWeekOrderSale.where(order_id: order.id, reject: 0).first #非拒签记录 os2 = VdWeekOrderSale.where(order_id: order.id, reject: 1).first #拒签记录 if os || (os2 && os2.sale_sum>0) VdWeekOrderSale.create({order_id: order.id, user_id: seller.id, week: week, sale_sum: -order.total_fee, reject: 1}) elsif !os && !os2 VdWeekOrderSale.create({order_id: order.id, user_id: seller.id, week: week, sale_sum: 0, reject: 1}) end ws = VdWeekSale.where(user_id: seller.id, week: week).first ws.update_attributes({sale_sum: VdWeekOrderSale.where(week: week, user_id: seller_id).sum(:sale_sum)}) if ws VdWeekSale.create({user_id: seller.id, week: week, sale_sum: VdWeekOrderSale.where(week: week, user_id: seller_id).sum(:sale_sum)}) unless ws #安全库录入信息 VdInfoSec.committed(vd_transaction) ERROR_CODES[200] end