You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
43 lines
1.4 KiB
43 lines
1.4 KiB
5 years ago
|
class Admins::ShixunAuths::AgreeApplyService < ApplicationService
|
||
|
attr_reader :apply, :user, :shixun
|
||
|
|
||
|
def initialize(apply, user)
|
||
|
@apply = apply
|
||
|
@user = user
|
||
|
@shixun = Shixun.find(apply.container_id)
|
||
|
end
|
||
|
|
||
|
def call
|
||
|
ActiveRecord::Base.transaction do
|
||
|
apply.update!(status: 1, dealer_id: user.id)
|
||
|
shixun.update!(status: 2, publish_time: Time.now)
|
||
|
|
||
|
# 奖励金币、经验
|
||
|
reward_grade_and_experience!
|
||
|
|
||
|
deal_tiding!
|
||
|
end
|
||
|
end
|
||
|
|
||
|
private
|
||
|
|
||
|
def reward_grade_and_experience!
|
||
|
score = shixun.all_score
|
||
|
shixun_creator = shixun.user
|
||
|
|
||
|
RewardGradeService.call(shixun_creator, container_id: shixun.id, container_type: 'shixunPublish', score: score)
|
||
|
|
||
|
Experience.create!(user_id: shixun_creator.id, container_id: shixun.id, container_type: 'shixunPublish', score: score)
|
||
|
shixun_creator.update_column(:experience, shixun_creator.experience.to_i + score)
|
||
|
end
|
||
|
|
||
|
def deal_tiding!
|
||
|
apply.tidings.where(tiding_type: 'Apply', status: 0).update_all(status: 1)
|
||
|
|
||
|
Tiding.create!(user_id: apply.user_id, trigger_user_id: 0,
|
||
|
container_id: apply.id, container_type: 'ApplyAction',
|
||
|
parent_container_id: apply.container_id, parent_container_type: apply.container_type,
|
||
|
belong_container_id: apply.container_id, belong_container_type: 'Shixun',
|
||
|
status: 1, tiding_type: 'System')
|
||
|
end
|
||
|
end
|