blsm-vd-core 0.9.5 → 0.9.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/lib/blsm-vd-core.rb +120 -4
- data/lib/blsm-vd-core/model/clearing_item.rb +16 -0
- data/lib/blsm-vd-core/model/order.rb +12 -7
- data/lib/blsm-vd-core/model/setting.rb +5 -0
- data/lib/blsm-vd-core/model/user.rb +1 -0
- data/lib/blsm-vd-core/model/vd_invite_reward.rb +23 -0
- data/lib/blsm-vd-core/model/vd_week_order_sale.rb +19 -0
- data/lib/blsm-vd-core/model/vd_week_sale.rb +19 -0
- data/lib/blsm-vd-core/version.rb +1 -1
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 506ed800cbf0a0ad0ebbf04eb1866d08bc4bacfd
|
4
|
+
data.tar.gz: aaf8d8a4bc560b21c0983e93348e95087cc8b2b0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9bc1318738a9ec678774d8ef350bffbcd038f059e9ba601cf6f611a37ff2929872b7ce187e8bf9bf49e53689e75970730ed6a9cbea44202f7f19448ed8b65051
|
7
|
+
data.tar.gz: 19f367c2be4f0c7654035efd559470ce0db8d9774b903d504a571323f796022dae5f9a2685182a95352b9ee06049e264306b2ce41dca267e87eac3257a45808b
|
data/Gemfile.lock
CHANGED
data/lib/blsm-vd-core.rb
CHANGED
@@ -29,6 +29,9 @@ require 'blsm-vd-core/model/user_spread'
|
|
29
29
|
require 'blsm-vd-core/model/shippingorder'
|
30
30
|
require 'blsm-vd-core/model/vd_free_post'
|
31
31
|
require 'blsm-vd-core/model/vd_purchase_fee_log'
|
32
|
+
require 'blsm-vd-core/model/vd_invite_reward'
|
33
|
+
require 'blsm-vd-core/model/vd_week_order_sale'
|
34
|
+
require 'blsm-vd-core/model/vd_week_sale'
|
32
35
|
require 'faraday'
|
33
36
|
require 'blsm-mp-wx'
|
34
37
|
|
@@ -510,7 +513,7 @@ module BlsmVdCore
|
|
510
513
|
})
|
511
514
|
seller_info.update_attributes(:purchase_fee => (seller_info.purchase_fee - earn_amount))
|
512
515
|
#进货费变动记录
|
513
|
-
VdPurchaseFeeLog.create(:user_id=>seller.id
|
516
|
+
VdPurchaseFeeLog.create(:user_id => seller.id, :purchase_fee => -earn_amount, :description => "订单完成,系统扣除", :admin_user_id => 3)
|
514
517
|
#通知用户
|
515
518
|
fee_content = "亲爱的店主#{seller.username}:订单已经签收成功,您的优店管家—店主信息—进货费#{franchise_price}元,抵扣#{earn_amount},时间#{Time.now.strftime("%F %H:%M:%S")}"
|
516
519
|
if !seller.rc_user.blank?
|
@@ -537,8 +540,8 @@ module BlsmVdCore
|
|
537
540
|
|
538
541
|
# 给邀请人奖励
|
539
542
|
inviter = User.where(:invication_code => seller.invicated_from).first if seller.invicated_from
|
540
|
-
|
541
|
-
if inviter && seller_info.distribute_sum < 1500 && seller_info.channel == "market_invite"
|
543
|
+
#【旧版邀请】被邀请人,金牌店主以下,渠道邀请,邀请人不为空,一个订单只能有一个结算项
|
544
|
+
if inviter && seller_info.created_at.to_s < Setting.old_invite_reward_expired_at && seller_info.distribute_sum < 1500 && seller_info.channel == "market_invite"
|
542
545
|
|
543
546
|
#发送给邀请人微信提醒
|
544
547
|
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)}元,特此通知"
|
@@ -573,7 +576,6 @@ module BlsmVdCore
|
|
573
576
|
end
|
574
577
|
end
|
575
578
|
|
576
|
-
|
577
579
|
#安全库录入信息
|
578
580
|
VdInfoSec.committed(vd_transaction)
|
579
581
|
|
@@ -702,4 +704,118 @@ module BlsmVdCore
|
|
702
704
|
|
703
705
|
end
|
704
706
|
|
707
|
+
|
708
|
+
#结算项变为物流返款时调用此方法
|
709
|
+
def on_clearing_item_cash_back(clearing_item_id)
|
710
|
+
clearing_item = ClearingItem.where(id: clearing_item_id).first
|
711
|
+
return ERROR_CODES[0] if !clearing_item || clearing_item.state!='CASH_BACK' || clearing_item.earn_amount.to_f < 0
|
712
|
+
order = clearing_item.order
|
713
|
+
return ERROR_CODES[0] if !order || order.ubox_order?
|
714
|
+
invitee = clearing_item.user
|
715
|
+
return ERROR_CODES[0] unless invitee
|
716
|
+
inviter = invitee.sq_inviter
|
717
|
+
|
718
|
+
return ERROR_CODES[4010] if VdInviteReward.where(order_id: order.id).first
|
719
|
+
|
720
|
+
vd_transaction = "clearing_item_cash_back_#{clearing_item_id}"
|
721
|
+
return ERROR_CODES[4010] if VdInfoSec.dangerous?(vd_transaction)
|
722
|
+
|
723
|
+
reward = 0
|
724
|
+
LineItem.where(:order_id => order.id).each do |line_item|
|
725
|
+
product_prop = line_item.product_prop
|
726
|
+
reward += line_item.quantity*product_prop.inviter_reward if !product_prop.blank?
|
727
|
+
end
|
728
|
+
|
729
|
+
if reward > 0
|
730
|
+
week = current_week_period_str #物流返款按自然周返款统计奖金金额
|
731
|
+
VdInviteReward.create({inviter_id: inviter.id, invitee_id: invitee.id, order_id: order.id, reward: reward, week: week})
|
732
|
+
end
|
733
|
+
|
734
|
+
#安全库录入信息
|
735
|
+
VdInfoSec.committed(vd_transaction)
|
736
|
+
|
737
|
+
ERROR_CODES[200]
|
738
|
+
end
|
739
|
+
|
740
|
+
|
741
|
+
#订单发货以后(通过首趣码邀请的回调)
|
742
|
+
def sq_invite_on_order_delivering(seller_id, order_id)
|
743
|
+
seller = User.where(id: seller_id).first
|
744
|
+
order = Order.where(id: order_id).first
|
745
|
+
clearing_item = ClearingItem.where(order_id: order_id).first
|
746
|
+
|
747
|
+
return ERROR_CODES[4045] unless seller
|
748
|
+
return ERROR_CODES[0] if !order || order.ubox_order? || order.shippingorder_id.to_i <= 0
|
749
|
+
return ERROR_CODES[0] unless clearing_item
|
750
|
+
|
751
|
+
vd_transaction = "on_order_delivering_#{seller_id}_#{order_id}"
|
752
|
+
return ERROR_CODES[4010] if VdInfoSec.dangerous?(vd_transaction)
|
753
|
+
|
754
|
+
wday = Time.now.wday #今天星期几,上一周确认的订单,并且在周二凌晨前发货的订单 上一周销售额 否则算下一周 销售额
|
755
|
+
week = wday==1 && clearing_item.created_at < (Time.now - 7.day).at_end_of_week ? last_week_period_str : current_week_period_str
|
756
|
+
|
757
|
+
|
758
|
+
os = VdWeekOrderSale.where(order_id: order.id).first
|
759
|
+
os.update_attributes({user_id: seller.id, week: week, sale_sum: order.total_fee}) if os
|
760
|
+
VdWeekOrderSale.create({order_id: order.id, user_id: seller.id, week: week, sale_sum: order.total_fee}) unless os
|
761
|
+
|
762
|
+
ws = VdWeekSale.where(user_id: seller.id, week: week).first
|
763
|
+
ws.update_attributes({sale_sum: VdWeekOrderSale.where(week: week, user_id: seller_id).sum(:sale_sum)}) if ws
|
764
|
+
VdWeekSale.create({user_id: seller.id, week: week, sale_sum: VdWeekOrderSale.where(week: week, user_id: seller_id).sum(:sale_sum)}) unless ws
|
765
|
+
|
766
|
+
#安全库录入信息
|
767
|
+
VdInfoSec.committed(vd_transaction)
|
768
|
+
|
769
|
+
ERROR_CODES[200]
|
770
|
+
end
|
771
|
+
|
772
|
+
#订单拒签以后(通过首趣码邀请的回调)
|
773
|
+
def sq_invite_on_order_rejecting(seller_id, order_id)
|
774
|
+
seller = User.where(id: seller_id).first
|
775
|
+
order = Order.where(id: order_id).first
|
776
|
+
clearing_item = ClearingItem.where(order_id: order_id).first
|
777
|
+
|
778
|
+
return ERROR_CODES[4045] unless seller
|
779
|
+
return ERROR_CODES[0] if !order || order.ubox_order?
|
780
|
+
return ERROR_CODES[0] unless clearing_item
|
781
|
+
|
782
|
+
vd_transaction = "on_order_rejecting_#{seller_id}_#{order_id}"
|
783
|
+
return ERROR_CODES[4010] if VdInfoSec.dangerous?(vd_transaction)
|
784
|
+
|
785
|
+
wday = Time.now.wday #今天星期几,上一周确认的订单,并且在周二凌晨前拒签的订单 上一周销售额 否则算下一周 销售额
|
786
|
+
week = wday==1 && clearing_item.created_at < (Time.now - 7.day).at_end_of_week ? last_week_period_str : current_week_period_str
|
787
|
+
|
788
|
+
os = VdWeekOrderSale.where(order_id: order.id, reject: 0).first #非拒签记录
|
789
|
+
os2 = VdWeekOrderSale.where(order_id: order.id, reject: 1).first #拒签记录
|
790
|
+
|
791
|
+
if os || (os2 && os2.sale_sum>0)
|
792
|
+
VdWeekOrderSale.create({order_id: order.id, user_id: seller.id, week: week, sale_sum: -order.total_fee, reject: 1})
|
793
|
+
elsif !os && !os2
|
794
|
+
VdWeekOrderSale.create({order_id: order.id, user_id: seller.id, week: week, sale_sum: 0, reject: 1})
|
795
|
+
end
|
796
|
+
|
797
|
+
ws = VdWeekSale.where(user_id: seller.id, week: week).first
|
798
|
+
ws.update_attributes({sale_sum: VdWeekOrderSale.where(week: week, user_id: seller_id).sum(:sale_sum)}) if ws
|
799
|
+
VdWeekSale.create({user_id: seller.id, week: week, sale_sum: VdWeekOrderSale.where(week: week, user_id: seller_id).sum(:sale_sum)}) unless ws
|
800
|
+
|
801
|
+
#安全库录入信息
|
802
|
+
VdInfoSec.committed(vd_transaction)
|
803
|
+
|
804
|
+
ERROR_CODES[200]
|
805
|
+
end
|
806
|
+
|
807
|
+
|
808
|
+
#上一周
|
809
|
+
def last_week_period_str
|
810
|
+
t = Time.now - 7.day
|
811
|
+
"#{t.strftime('%Y')}-#{t.at_beginning_of_week.strftime("%m%d")}-#{t.at_end_of_week.strftime("%m%d")}"
|
812
|
+
end
|
813
|
+
|
814
|
+
#这一周
|
815
|
+
def current_week_period_str
|
816
|
+
t = Time.now
|
817
|
+
"#{t.strftime('%Y')}-#{t.at_beginning_of_week.strftime("%m%d")}-#{t.at_end_of_week.strftime("%m%d")}"
|
818
|
+
end
|
819
|
+
|
820
|
+
|
705
821
|
end
|
@@ -6,6 +6,8 @@ module BlsmVdCore
|
|
6
6
|
belongs_to :order, class_name: "::BlsmVdCore::Order"
|
7
7
|
belongs_to :clearing, class_name: "::BlsmVdCore::Clearing"
|
8
8
|
|
9
|
+
after_update :keep_commit_changes
|
10
|
+
after_commit :after_clearing_item_changed
|
9
11
|
#物流服务费
|
10
12
|
def express_service_fee
|
11
13
|
if self.pay_type=='CODPAY'
|
@@ -47,5 +49,19 @@ module BlsmVdCore
|
|
47
49
|
update_params[:real_amount] = ((self.order.toggle_delivery_deposit && self.order.pay_type.to_i==1) ? (self.order.actual_total.to_f+self.order.payment_total.to_f) : self.order.actual_total)
|
48
50
|
self.update_attributes(update_params)
|
49
51
|
end
|
52
|
+
|
53
|
+
|
54
|
+
#发生改变之后,记住状态的变化
|
55
|
+
def keep_commit_changes
|
56
|
+
@committed_changes = self.changes
|
57
|
+
end
|
58
|
+
|
59
|
+
#订单发生变化
|
60
|
+
def after_clearing_item_changed
|
61
|
+
if @committed_changes && !@committed_changes.empty?
|
62
|
+
BlsmVdCore.on_clearing_item_cash_back(self.id) if @committed_changes.has_key?('state') #物流返款等信息
|
63
|
+
@committed_changes.clear
|
64
|
+
end
|
65
|
+
end
|
50
66
|
end
|
51
67
|
end
|
@@ -14,14 +14,19 @@ module BlsmVdCore
|
|
14
14
|
|
15
15
|
public
|
16
16
|
def get_vd_score(role)
|
17
|
-
column = "black" == role ? "black_belt_rate" : "ordinary_rate"
|
18
17
|
fee = 0.0
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
18
|
+
if "black" == role
|
19
|
+
self.line_items.each do |item|
|
20
|
+
next if item.product_prop.nil?
|
21
|
+
fee += item.quantity * item.product_prop.black_integral
|
22
|
+
end
|
23
|
+
else
|
24
|
+
self.line_items.each do |item|
|
25
|
+
next if item.product_prop.nil?
|
26
|
+
rate = item.product_prop.ordinary_rate
|
27
|
+
rate = VdUserScore::SCORES[:SALE_OUT_DIRECT] if rate.nil? && "normal" == role
|
28
|
+
fee += ((item.quantity * item.franchise_price.to_f) * rate)
|
29
|
+
end
|
25
30
|
end
|
26
31
|
sprintf('%0.2f', fee.to_f).to_f
|
27
32
|
end
|
@@ -11,5 +11,10 @@ module BlsmVdCore
|
|
11
11
|
array = setting.split('|')
|
12
12
|
{order_money: array[0].to_i, reward_money: array[1].to_i}
|
13
13
|
end
|
14
|
+
|
15
|
+
#老版的邀请奖励
|
16
|
+
def self.old_invite_reward_expired_at
|
17
|
+
Setting.where(name: 'vd_old_invite_reward_expired_at').pluck(:value)[0].to_s
|
18
|
+
end
|
14
19
|
end
|
15
20
|
end
|
@@ -7,6 +7,7 @@ module BlsmVdCore
|
|
7
7
|
has_many :clearings, class_name: "::BlsmVdCore::Clearing"
|
8
8
|
has_one :vd_user_info, class_name: "::BlsmVdCore::VdUserInfo"
|
9
9
|
belongs_to :rc_user, class_name: "::BlsmVdCore::RcUser"
|
10
|
+
belongs_to :sq_inviter, class_name: '::BlsmVdCore::User', foreign_key: 'sq_from', primary_key: 'sq_code'
|
10
11
|
|
11
12
|
def create_vd_user_info
|
12
13
|
unless self.vd_user_info
|
@@ -0,0 +1,23 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
module BlsmVdCore
|
3
|
+
class VdInviteReward < BlsmVdCore::BaseRecord
|
4
|
+
self.table_name='vd_invite_rewards'
|
5
|
+
belongs_to :inviter, foreign_key: 'inviter_id', class_name: '::BlsmVdCore::User'
|
6
|
+
belongs_to :invitee, foreign_key: 'invitee_id', class_name: '::BlsmVdCore::User'
|
7
|
+
belongs_to :order, class_name: "::BlsmVdCore::Order"
|
8
|
+
belongs_to :clearing_item, class_name: "::BlsmVdCore::ClearingItem"
|
9
|
+
|
10
|
+
#week 格式:2017-0220-0226
|
11
|
+
before_create :generate_week
|
12
|
+
|
13
|
+
private
|
14
|
+
|
15
|
+
#默认生成上一周的week开始日+结束日
|
16
|
+
def generate_week
|
17
|
+
unless self.week
|
18
|
+
t = Time.now - 7.day
|
19
|
+
self.week = "#{t.strftime('%Y')}-#{t.at_beginning_of_week.strftime("%m%d")}-#{t.at_end_of_week.strftime("%m%d")}"
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
module BlsmVdCore
|
3
|
+
class VdWeekOrderSale < BlsmVdCore::BaseRecord
|
4
|
+
self.table_name='vd_week_order_sales'
|
5
|
+
belongs_to :order
|
6
|
+
before_create :generate_week
|
7
|
+
#week 格式:2017-0220-0226
|
8
|
+
|
9
|
+
private
|
10
|
+
|
11
|
+
#默认生成上一周的week开始日+结束日
|
12
|
+
def generate_week
|
13
|
+
unless self.week
|
14
|
+
t = Time.now - 7.day
|
15
|
+
self.week = "#{t.strftime('%Y')}-#{t.at_beginning_of_week.strftime("%m%d")}-#{t.at_end_of_week.strftime("%m%d")}"
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
module BlsmVdCore
|
3
|
+
class VdWeekSale < BlsmVdCore::BaseRecord
|
4
|
+
self.table_name='vd_week_sales'
|
5
|
+
belongs_to :user, class_name: "::BlsmVdCore::User"
|
6
|
+
before_create :generate_week
|
7
|
+
#week 格式:2017-0220-0226
|
8
|
+
|
9
|
+
private
|
10
|
+
|
11
|
+
#默认生成上一周的week开始日+结束日
|
12
|
+
def generate_week
|
13
|
+
unless self.week
|
14
|
+
t = Time.now - 7.day
|
15
|
+
self.week = "#{t.strftime('%Y')}-#{t.at_beginning_of_week.strftime("%m%d")}-#{t.at_end_of_week.strftime("%m%d")}"
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
data/lib/blsm-vd-core/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: blsm-vd-core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.
|
4
|
+
version: 0.9.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- saxer
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: exe
|
11
11
|
cert_chain: []
|
12
|
-
date: 2017-02-
|
12
|
+
date: 2017-02-25 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rspec
|
@@ -201,11 +201,14 @@ files:
|
|
201
201
|
- lib/blsm-vd-core/model/user_spread.rb
|
202
202
|
- lib/blsm-vd-core/model/vd_free_post.rb
|
203
203
|
- lib/blsm-vd-core/model/vd_info_sec.rb
|
204
|
+
- lib/blsm-vd-core/model/vd_invite_reward.rb
|
204
205
|
- lib/blsm-vd-core/model/vd_mp_msg.rb
|
205
206
|
- lib/blsm-vd-core/model/vd_purchase_fee_log.rb
|
206
207
|
- lib/blsm-vd-core/model/vd_rc_msg_notify.rb
|
207
208
|
- lib/blsm-vd-core/model/vd_user_info.rb
|
208
209
|
- lib/blsm-vd-core/model/vd_user_score.rb
|
210
|
+
- lib/blsm-vd-core/model/vd_week_order_sale.rb
|
211
|
+
- lib/blsm-vd-core/model/vd_week_sale.rb
|
209
212
|
- lib/blsm-vd-core/model/vd_wx_pay.rb
|
210
213
|
- lib/blsm-vd-core/version.rb
|
211
214
|
homepage: https://bitbucket.org/Xiaopuzhu/blsm-vd-core
|