diff --git a/app/controllers/accounts_controller.rb b/app/controllers/accounts_controller.rb index afa35a6a..b153ba28 100644 --- a/app/controllers/accounts_controller.rb +++ b/app/controllers/accounts_controller.rb @@ -234,6 +234,7 @@ class AccountsController < ApplicationController set_autologin_cookie(user) 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) session[:"#{default_yun_session}"] = user.id Rails.logger.info("#########_____session_default_yun_session__________###############{default_yun_session}") diff --git a/app/controllers/concerns/login_helper.rb b/app/controllers/concerns/login_helper.rb index d8f2445f..a69f9248 100644 --- a/app/controllers/concerns/login_helper.rb +++ b/app/controllers/concerns/login_helper.rb @@ -44,6 +44,7 @@ module LoginHelper set_autologin_cookie(user) 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) # 注册完成后有一天的试用申请(先去掉) # UserDayCertification.create(user_id: user.id, status: 1) diff --git a/app/controllers/wallets_controller.rb b/app/controllers/wallets_controller.rb index 29c86dca..064db910 100644 --- a/app/controllers/wallets_controller.rb +++ b/app/controllers/wallets_controller.rb @@ -1,14 +1,14 @@ class WalletsController < ApplicationController + before_action :require_login + def balance user = User.find_by_id(params[:id]) - user.create_wallet(balance: 0) if user.wallet.nil? - @wallet = user.wallet + @wallet = user.get_wallet end def coin_changes user = User.find_by_id(params[:id]) - user.create_wallet(balance: 0) if user.wallet.nil? - @wallet = user.wallet + @wallet = user.get_wallet if params[:category] == 'all' scope = CoinChange.where('to_wallet_id = ? OR from_wallet_id = ?', @wallet.id, @wallet.id) elsif params[:category] == 'income' diff --git a/app/models/coin_change.rb b/app/models/coin_change.rb index b3eb761c..cd2eae0e 100644 --- a/app/models/coin_change.rb +++ b/app/models/coin_change.rb @@ -14,6 +14,6 @@ class CoinChange < ApplicationRecord 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 end diff --git a/app/models/sponsorship.rb b/app/models/sponsorship.rb index 602b31f0..97756649 100644 --- a/app/models/sponsorship.rb +++ b/app/models/sponsorship.rb @@ -23,10 +23,8 @@ class Sponsorship < ApplicationRecord end def pay - sponsor.create_wallet(balance: 0) if sponsor.wallet.nil? - developer.create_wallet(balance: 0) if developer.wallet.nil? - sponsor_wallet = sponsor.wallet - developer_wallet = developer.wallet + sponsor_wallet = sponsor.get_wallet + developer_wallet = developer.get_wallet return false if sponsor.wallet.balance < amount diff --git a/app/models/user.rb b/app/models/user.rb index 30d0c2e7..734c8d76 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -598,6 +598,7 @@ class User < ApplicationRecord # Returns the user who matches the given autologin +key+ or nil def self.try_to_autologin(key) user = Token.find_active_user('autologin', key) + user.daily_reward if user user.update(last_login_on: Time.now) if user user end @@ -744,6 +745,34 @@ class User < ApplicationRecord laboratory_id.present? && laboratory_id != 1 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 def validate_password_length # 管理员的初始密码是5位 diff --git a/app/views/wallets/coin_changes.json.jbuilder b/app/views/wallets/coin_changes.json.jbuilder index 74b1aa3d..35452f48 100644 --- a/app/views/wallets/coin_changes.json.jbuilder +++ b/app/views/wallets/coin_changes.json.jbuilder @@ -2,11 +2,20 @@ json.balance @wallet.balance json.count @total json.coin_changes do 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 json.amount coin_change.amount - json.from_user from_user.full_name - json.from_user_login from_user.login + if !from_user.nil? + 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_login to_user.login json.description coin_change.description