From dafdbadb6bc70336374d125dbaee3f24e3b1a780 Mon Sep 17 00:00:00 2001 From: qyzh Date: Thu, 8 Apr 2021 16:05:40 +0800 Subject: [PATCH] fix bugs --- app/controllers/accounts_controller.rb | 2 +- app/controllers/concerns/login_helper.rb | 2 +- app/controllers/users_controller.rb | 4 +++ app/models/ci/user.rb | 1 + app/models/project.rb | 6 +++- app/models/pull_request.rb | 3 ++ app/models/sponsorship.rb | 10 +++--- app/models/user.rb | 35 ++++++++++++++----- .../20210316125048_add_award_time_to_user.rb | 5 +++ 9 files changed, 52 insertions(+), 16 deletions(-) create mode 100644 db/migrate/20210316125048_add_award_time_to_user.rb diff --git a/app/controllers/accounts_controller.rb b/app/controllers/accounts_controller.rb index b153ba28..b2d45101 100644 --- a/app/controllers/accounts_controller.rb +++ b/app/controllers/accounts_controller.rb @@ -234,7 +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.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 a69f9248..b1073647 100644 --- a/app/controllers/concerns/login_helper.rb +++ b/app/controllers/concerns/login_helper.rb @@ -44,7 +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.daily_reward user.update_column(:last_login_on, Time.now) # 注册完成后有一天的试用申请(先去掉) # UserDayCertification.create(user_id: user.id, status: 1) diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index c0e2002d..21f2a045 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -60,6 +60,10 @@ class UsersController < ApplicationController @user = current_user # TODO 等消息上线再打开注释 #@tidding_count = unviewed_tiddings(current_user) if current_user.present? + # + if(@user.logged?) + @user.daily_reward + end rescue Exception => e uid_logger_error(e.message) missing_template diff --git a/app/models/ci/user.rb b/app/models/ci/user.rb index f76812c9..7c7cdd36 100644 --- a/app/models/ci/user.rb +++ b/app/models/ci/user.rb @@ -50,6 +50,7 @@ # sponsored_num :integer default("0") # description :text(65535) # devops_step :integer default("0") +# award_time :datetime # # Indexes # diff --git a/app/models/project.rb b/app/models/project.rb index 08946467..887a6952 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -4,7 +4,7 @@ # # id :integer not null, primary key # name :string(255) default(""), not null -# description :text(65535) +# description :text(4294967295) # homepage :string(255) default("") # is_public :boolean default("1"), not null # parent_id :integer @@ -48,6 +48,10 @@ # issue_tags_count :integer default("0") # closed_issues_count :integer default("0") # open_devops :boolean default("0") +# gitea_webhook_id :integer +# open_devops_count :integer default("0") +# recommend :boolean default("0") +# platform :integer default("0") # # Indexes # diff --git a/app/models/pull_request.rb b/app/models/pull_request.rb index 49ead2c6..8a5e1927 100644 --- a/app/models/pull_request.rb +++ b/app/models/pull_request.rb @@ -18,6 +18,9 @@ # issue_id :integer # fork_project_id :integer # is_original :boolean default("0") +# comments_count :integer default("0") +# commits_count :integer default("0") +# files_count :integer default("0") # class PullRequest < ApplicationRecord diff --git a/app/models/sponsorship.rb b/app/models/sponsorship.rb index 97756649..ccd2d853 100644 --- a/app/models/sponsorship.rb +++ b/app/models/sponsorship.rb @@ -26,14 +26,16 @@ class Sponsorship < ApplicationRecord sponsor_wallet = sponsor.get_wallet developer_wallet = developer.get_wallet - return false if sponsor.wallet.balance < amount + Wallet.transaction do + return false if sponsor.wallet.balance < amount - reason = "#{sponsor.full_name}向#{developer.full_name}的赞助支付。" - coinchange = CoinChange.new(amount: amount, reason: reason, to_wallet_id: developer_wallet.id, from_wallet_id: sponsor_wallet.id) - if coinchange.save sponsor_wallet.update(balance: sponsor_wallet.balance -= amount) developer_wallet.update(balance: developer_wallet.balance += amount) update(accumulate: self.accumulate += amount) + end + reason = "#{sponsor.full_name}向#{developer.full_name}的赞助支付。" + coinchange = CoinChange.new(amount: amount, reason: reason, to_wallet_id: developer_wallet.id, from_wallet_id: sponsor_wallet.id) + if coinchange.save return true end false diff --git a/app/models/user.rb b/app/models/user.rb index 734c8d76..91543c7e 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -50,6 +50,7 @@ # sponsored_num :integer default("0") # description :text(65535) # devops_step :integer default("0") +# award_time :datetime # # Indexes # @@ -598,7 +599,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.daily_reward if user user.update(last_login_on: Time.now) if user user end @@ -757,20 +758,36 @@ class User < ApplicationRecord def daily_reward t1 = Time.now t2 = Time.new(t1.year, t1.month, t1.day) + + if(award_time.nil? or t2 > award_time) + self.update_column(:award_time, Time.now) + 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) + end +=begin + award = false 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) + User.transaction(isolation: :serializable) do + # User.transaction do + if(self.last_login_on.nil? or t2 > self.last_login_on) + self.update_column(:last_login_on, Time.now) + award = true end end + if(award) + 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) + end else # puts("#################################NOOO DAILY REWARD, #{last_login_on}, #{t2}") end +=end end protected diff --git a/db/migrate/20210316125048_add_award_time_to_user.rb b/db/migrate/20210316125048_add_award_time_to_user.rb new file mode 100644 index 00000000..6d06af45 --- /dev/null +++ b/db/migrate/20210316125048_add_award_time_to_user.rb @@ -0,0 +1,5 @@ +class AddAwardTimeToUser < ActiveRecord::Migration[5.2] + def change + add_column :users, :award_time, :datetime + end +end