Browse Source

ADD recommand projects api

tags/v1.0.0
Jasder 5 years ago
parent
commit
c6a7719d4d
4 changed files with 71 additions and 5 deletions
  1. +59
    -0
      README.md
  2. +6
    -2
      app/controllers/projects_controller.rb
  3. +2
    -0
      app/models/project.rb
  4. +4
    -3
      config/routes.rb

+ 59
- 0
README.md View File

@@ -1364,6 +1364,65 @@ http://localhost:3000/api/projects | jq
```
---

#### 推荐项目
```
GET api/projects/recommend
```
*示例*
```
curl -X GET \
http://localhost:3000/api/projects/recommend | jq
```

*返回参数说明:*

|参数名|类型|说明|
|-|-|-|
|total_count |int |项目总条数 |
|id |string |项目id |
|name |string|项目名称|
|description |string|项目简介|
|visits |int|流量数|
|forked_count |int|被fork的数量|
|praises_count |int|star数量|
|is_public |boolean|是否公开, true:公开,false:未公开|
|mirror_url |string|镜像url|
|last_update_time|int|最后更新时间,为UNIX格式的时间戳|
|author |object|项目创建者|
|-- name |string|用户名,也是用户标识|
|category |object|项目类别|
|-- id |int|项目类型id|
|-- name |string|项目类型名称|
|language |object|项目语言|
|-- id |int|项目语言id|
|-- name |string|项目语言名称|


返回值
```
[
{
"id": 20,
"repo_id": null,
"identifier": "PNAekinmH",
"name": "FNILL",
"visits": 13567,
"author": {
"name": "王一达",
"login": "wangyida",
"image_url": "avatars/User/b"
},
"category": {
"id": 8,
"name": "其他"
}
},
...
]

```
---

### 获取分支列表
```
GET /api/:namespace_id/:id/branches


+ 6
- 2
app/controllers/projects_controller.rb View File

@@ -2,8 +2,8 @@ class ProjectsController < ApplicationController
include ApplicationHelper
include OperateProjectAbilityAble
include ProjectsHelper
before_action :require_login, except: %i[index branches group_type_list simple show fork_users praise_users watch_users]
before_action :load_project, except: %i[index group_type_list migrate create]
before_action :require_login, except: %i[index branches group_type_list simple show fork_users praise_users watch_users recommend]
before_action :load_project, except: %i[index group_type_list migrate create recommend]
before_action :authorizate_user_can_edit_project!, only: %i[update]
before_action :project_public?, only: %i[fork_users praise_users watch_users]

@@ -103,6 +103,10 @@ class ProjectsController < ApplicationController
json_response(@project)
end

def recommend
@projects = Project.recommend.includes(:repository, :project_category, owner: :user_extension).limit(5)
end


private
def project_params


+ 2
- 0
app/models/project.rb View File

@@ -36,6 +36,8 @@ class Project < ApplicationRecord
after_save :check_project_members
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)}
scope :recommend, -> { visible.project_statics_select.where(recommend: true) }
def self.search_project(search)


+ 4
- 3
config/routes.rb View File

@@ -11,7 +11,7 @@ Rails.application.routes.draw do
get 'attachments/entries/get_file', to: 'attachments#get_file'
get 'attachments/download/:id', to: 'attachments#show'
get 'attachments/download/:id/:filename', to: 'attachments#show'
get 'auth/qq/callback', to: 'oauth/qq#create'
get 'auth/failure', to: 'oauth/base#auth_failure'
get 'auth/cas/callback', to: 'oauth/cas#create'
@@ -19,7 +19,7 @@ Rails.application.routes.draw do
get 'oauth/bind', to: 'oauth/educoder#bind'
get 'oauth/register', to: 'oauth#register'
post 'oauth/auto_register', to: 'oauth#auto_register'
resources :edu_settings
scope '/api' do
@@ -33,7 +33,7 @@ Rails.application.routes.draw do
resources :compose_projects, only: [:create, :destroy]
end
resources :attachments do
member do
member do
post :preview_attachment
end
collection do
@@ -89,6 +89,7 @@ Rails.application.routes.draw do
collection do
post :migrate
get :group_type_list
get :recommend
end
end


Loading…
Cancel
Save