add: invite code

This commit is contained in:
vilet.yy 2021-06-08 14:56:43 +08:00
parent 5ef9549b6b
commit d4b8b3e24f
4 changed files with 25 additions and 3 deletions

View File

@ -14,7 +14,8 @@ class AppliedProject < ApplicationRecord
belongs_to :project
has_many :applied_messages, as: :applied, dependent: :destroy
has_many :forge_activities, as: :forge_act, dependent: :destroy
# has_many :forge_activities, as: :forge_act, dependent: :destroy
enum status: {canceled: -1, common: 0, accepted: 1, refused: 2} # -1 已取消 0 待操作 1 已接收 2 已拒绝
scope :pending, -> { where(status: 0) }
end

View File

@ -0,0 +1,13 @@
module Dcodes
DCODES = %W(1 2 3 4 5 6 7 8 9 a b c f e f g h i j k l m n o p q r s t u v w x y z)
extend ActiveSupport::Concern
def generate_dcode(field, num, pre='')
code = DCODES.sample(num).join
while self.class.exists?("#{field}": pre+code) do
code = DCODES.sample(num).join
end
code
end
end

View File

@ -66,6 +66,7 @@ class Project < ApplicationRecord
include Publicable
include Watchable
include ProjectOperable
include Dcodes
# common:开源托管项目
# mirror:普通镜像项目,没有定时同步功能
@ -105,7 +106,7 @@ class Project < ApplicationRecord
has_many :pinned_projects, dependent: :destroy
has_many :has_pinned_users, through: :pinned_projects, source: :user
after_save :check_project_members, :reset_cache_data
after_save :check_project_members, :reset_cache_data, :set_invite_code
after_destroy :reset_cache_data
scope :project_statics_select, -> {select(:id,:name, :is_public, :identifier, :status, :project_type, :user_id, :forked_count, :visits, :project_category_id, :project_language_id, :license_id, :ignore_id, :watchers_count, :created_on)}
scope :no_anomory_projects, -> {where("projects.user_id is not null and projects.user_id != ?", 2)}
@ -123,6 +124,12 @@ class Project < ApplicationRecord
self.reset_user_cache_async_job(self.owner)
end
def set_invite_code
if self.invite_code.nil?
self.update(invite_code: self.generate_dcode('invite_code', 6))
end
end
def self.search_project(search)
ransack(name_or_identifier_cont: search)
end

View File

@ -7,6 +7,7 @@ else
json.readme @result[:readme].merge(content: readme_render_decode64_content(@result[:readme]["content"], nil))
end
json.identifier render_identifier(@project)
json.invite_code @project.invite_code
json.name @project.name
json.description @project.description
json.project_id @project.id