add daily reward

This commit is contained in:
qyzh 2021-03-08 20:45:15 +08:00
parent 6de617d898
commit bf68c1c544
7 changed files with 50 additions and 12 deletions

View File

@ -234,6 +234,7 @@ class AccountsController < ApplicationController
set_autologin_cookie(user) set_autologin_cookie(user)
UserAction.create(:action_id => user.try(:id), :action_type => "Login", :user_id => user.try(:id), :ip => request.remote_ip) UserAction.create(:action_id => user.try(:id), :action_type => "Login", :user_id => user.try(:id), :ip => request.remote_ip)
user.daily_reward
user.update_column(:last_login_on, Time.now) user.update_column(:last_login_on, Time.now)
session[:"#{default_yun_session}"] = user.id session[:"#{default_yun_session}"] = user.id
Rails.logger.info("#########_____session_default_yun_session__________###############{default_yun_session}") Rails.logger.info("#########_____session_default_yun_session__________###############{default_yun_session}")

View File

@ -44,6 +44,7 @@ module LoginHelper
set_autologin_cookie(user) set_autologin_cookie(user)
UserAction.create(action_id: user&.id, action_type: 'Login', user_id: user&.id, ip: request.remote_ip) UserAction.create(action_id: user&.id, action_type: 'Login', user_id: user&.id, ip: request.remote_ip)
user.daily_reward
user.update_column(:last_login_on, Time.now) user.update_column(:last_login_on, Time.now)
# 注册完成后有一天的试用申请(先去掉) # 注册完成后有一天的试用申请(先去掉)
# UserDayCertification.create(user_id: user.id, status: 1) # UserDayCertification.create(user_id: user.id, status: 1)

View File

@ -1,14 +1,14 @@
class WalletsController < ApplicationController class WalletsController < ApplicationController
before_action :require_login
def balance def balance
user = User.find_by_id(params[:id]) user = User.find_by_id(params[:id])
user.create_wallet(balance: 0) if user.wallet.nil? @wallet = user.get_wallet
@wallet = user.wallet
end end
def coin_changes def coin_changes
user = User.find_by_id(params[:id]) user = User.find_by_id(params[:id])
user.create_wallet(balance: 0) if user.wallet.nil? @wallet = user.get_wallet
@wallet = user.wallet
if params[:category] == 'all' if params[:category] == 'all'
scope = CoinChange.where('to_wallet_id = ? OR from_wallet_id = ?', @wallet.id, @wallet.id) scope = CoinChange.where('to_wallet_id = ? OR from_wallet_id = ?', @wallet.id, @wallet.id)
elsif params[:category] == 'income' elsif params[:category] == 'income'

View File

@ -14,6 +14,6 @@
class CoinChange < ApplicationRecord class CoinChange < ApplicationRecord
belongs_to :to_wallet, class_name: 'Wallet' belongs_to :to_wallet, class_name: 'Wallet'
belongs_to :from_wallet, class_name: 'Wallet' belongs_to :from_wallet, class_name: 'Wallet', optional: true
validates :amount, presence: true validates :amount, presence: true
end end

View File

@ -23,10 +23,8 @@ class Sponsorship < ApplicationRecord
end end
def pay def pay
sponsor.create_wallet(balance: 0) if sponsor.wallet.nil? sponsor_wallet = sponsor.get_wallet
developer.create_wallet(balance: 0) if developer.wallet.nil? developer_wallet = developer.get_wallet
sponsor_wallet = sponsor.wallet
developer_wallet = developer.wallet
return false if sponsor.wallet.balance < amount return false if sponsor.wallet.balance < amount

View File

@ -598,6 +598,7 @@ class User < ApplicationRecord
# Returns the user who matches the given autologin +key+ or nil # Returns the user who matches the given autologin +key+ or nil
def self.try_to_autologin(key) def self.try_to_autologin(key)
user = Token.find_active_user('autologin', key) user = Token.find_active_user('autologin', key)
user.daily_reward if user
user.update(last_login_on: Time.now) if user user.update(last_login_on: Time.now) if user
user user
end end
@ -744,6 +745,34 @@ class User < ApplicationRecord
laboratory_id.present? && laboratory_id != 1 laboratory_id.present? && laboratory_id != 1
end end
def get_wallet
if wallet.nil?
create_wallet(balance: 100)
reason = "系统初始赠送"
CoinChange.create(amount: amount, reason: reason, to_wallet_id: wallet.id)
end
wallet
end
def daily_reward
t1 = Time.now
t2 = Time.new(t1.year, t1.month, t1.day)
if(last_login_on.nil? or t2 > last_login_on)
User.transaction do
if(last_login_on.nil? or t2 > last_login_on)
amount = 2
user_wallet = get_wallet
user_wallet.update(balance: user_wallet.balance += amount)
reason = "每日登录奖励"
CoinChange.create(amount: amount, reason: reason, to_wallet_id: user_wallet.id)
update(last_login_on: Time.now)
end
end
else
# puts("#################################NOOO DAILY REWARD, #{last_login_on}, #{t2}")
end
end
protected protected
def validate_password_length def validate_password_length
# 管理员的初始密码是5位 # 管理员的初始密码是5位

View File

@ -2,11 +2,20 @@ json.balance @wallet.balance
json.count @total json.count @total
json.coin_changes do json.coin_changes do
json.array! @coin_changes do |coin_change| json.array! @coin_changes do |coin_change|
from_user = coin_change.from_wallet.user from_user = if coin_change.from_wallet.nil?
nil
else
coin_change.from_wallet.user
end
to_user = coin_change.to_wallet.user to_user = coin_change.to_wallet.user
json.amount coin_change.amount json.amount coin_change.amount
json.from_user from_user.full_name if !from_user.nil?
json.from_user_login from_user.login json.from_user from_user.full_name
json.from_user_login from_user.login
else
json.from_user '系统'
json.from_user_login '-'
end
json.to_user to_user.full_name json.to_user to_user.full_name
json.to_user_login to_user.login json.to_user_login to_user.login
json.description coin_change.description json.description coin_change.description