diff --git a/app/controllers/settings_controller.rb b/app/controllers/settings_controller.rb
index bb031c7b6..65a5786d1 100644
--- a/app/controllers/settings_controller.rb
+++ b/app/controllers/settings_controller.rb
@@ -1,6 +1,31 @@
 class SettingsController < ApplicationController
   def show
-    @old_projects_url = nil 
+    @old_projects_url = nil
     @old_projects_url = "https://www.trustie.net/users/#{current_user.try(:login)}/projects"  if User.current.logged?
+
+    @add =  Site.add.select(:id, :name, :url, :key)
+    @personal =
+      if User.current.logged?
+        arr =[]
+        Site.personal.select(:id, :name, :url, :key).to_a.map(&:serializable_hash).each do |site|
+          hash = {}
+          site.each {|k, v|
+            hash.merge!("#{k}":  v.to_s.include?("current_user") ? v.split('current_user').join(current_user&.login) : v)
+          }
+          arr << hash
+        end
+      else
+        []
+      end
+
+    @common = []
+    Site.common.select(:id, :name, :url, :key).to_a.map(&:serializable_hash).each do |site|
+      next if site["url"].to_s.include?("current_user") && !User.current.logged?
+      hash = {}
+      site.each {|k, v|
+        hash.merge!("#{k}":  v.to_s.include?("current_user") ? v.split('current_user').join(current_user&.login) : v)
+      }
+      @common << hash
+    end
   end
 end
diff --git a/app/models/site.rb b/app/models/site.rb
new file mode 100644
index 000000000..0ed8d8020
--- /dev/null
+++ b/app/models/site.rb
@@ -0,0 +1,23 @@
+# == Schema Information
+#
+# Table name: sites
+#
+#  id         :integer          not null, primary key
+#  name       :string(255)
+#  url        :string(255)
+#  key        :string(255)
+#  site_type  :integer
+#  created_at :datetime         not null
+#  updated_at :datetime         not null
+#
+
+class Site < ApplicationRecord
+  # add: 添加类链接
+  # personal: 个人名下类链接,
+  # common: 普通链接
+  enum site_type: { add: 0, personal: 1, common: 2 }
+
+  def self.set_default
+    
+  end
+end
diff --git a/app/views/settings/show.json.jbuilder b/app/views/settings/show.json.jbuilder
index 7de12345d..697e1dd5d 100644
--- a/app/views/settings/show.json.jbuilder
+++ b/app/views/settings/show.json.jbuilder
@@ -48,4 +48,15 @@ json.setting do
   json.old_projects_url @old_projects_url
 
 
+  json.add do
+    json.array! @add, :name, :url, :key
+  end
+
+  json.personal do
+    json.array! @personal
+  end
+
+  json.common do
+    json.array! @common
+  end
 end
diff --git a/config/routes.rb b/config/routes.rb
index 9e9e3d7a8..daef12bb4 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -23,7 +23,6 @@ Rails.application.routes.draw do
 
   resources :edu_settings
 
-  resources :edu_settings
   scope '/api' do
     namespace :ci  do
       resources :languages, only: [:index, :show] do
@@ -379,7 +378,7 @@ Rails.application.routes.draw do
         end
       end
 
-      resource :repositories, path: '/', only: [:show, :create, :edit] do 
+      resource :repositories, path: '/', only: [:show, :create, :edit] do
         member do
           get :files
           get :detail
diff --git a/db/migrate/20210322084619_create_sites.rb b/db/migrate/20210322084619_create_sites.rb
new file mode 100644
index 000000000..e05784ec9
--- /dev/null
+++ b/db/migrate/20210322084619_create_sites.rb
@@ -0,0 +1,12 @@
+class CreateSites < ActiveRecord::Migration[5.2]
+  def change
+    create_table :sites do |t|
+      t.string :name, comment: "中文名称"
+      t.string :url, comment: "具体链接"
+      t.string :key, comment: "标识"
+      t.integer :site_type, comment: "分类,按照分类编排链接"
+
+      t.timestamps
+    end
+  end
+end