# Front Design For GeSong System ## Content ### Before ### Front(User) #### 1. Index Page #### 2. Search Page #### 3. History Page #### 4. List Page #### 5. Confirm Page ### Back(Admin) #### 1. Access Page #### 2. Audit Page #### 3. List Page #### 4. System Page ### Public #### 1. System Interface ## Before #### All template use WebApi to deal the operate #### Recommand Vue.js, but you still can use jQuery(Ajax) :D #### All Response Code (Int) ##### `10000` `Success` `Successfully requested` ##### `20000` `No enough times` `No enough times to song` ##### `30000` `Forbidden` `Wrong Access (For User)` ## Front (User) ### Index Page #### The index page use the root path ("/"), #### Server will response a 301 code to jump to search page ("/search") ### Search Page #### The search page use the path "/search" #### A user have to log in to use the search function #### WebApi Interface Detail: ##### Path: `/api/search` ##### Method: `POST` ##### Args: ###### `keyword` `string` `keyword of the song` ###### `token` `string` `user token` ##### Response Format: `Json` ##### Json Args: ###### `code` `int` `response code` ###### `content` `list` `list of songs` ##### List of Songs Args(content): ###### `pid` `int` `platform id` ###### `id` `int` `song id(platform)` ###### `name` `string` `name of song` ###### `artists` `list` `list of artists` ###### `album` `dict` `album of this song` ###### `url` `string` `the media url of this song (source platform or system cache)` ##### List of Artists Args: ###### `id` `int` `artist id(platform)` ###### `name` `string` `name of this artist` ###### `cover` `string` `image url of this aritist` ##### Album Args: ###### `id` `int` `album id(platform)` ###### `name` `string` `name of this album` ###### `cover` `string` `image url of this album` ### History Page #### The history page use the path "/history" #### Anybody can directly get the history of songs #### WebApi Interface Detail: ##### Path: `/api/history` ##### Method: `GET` ##### Args: `Nothing` ##### Response Format: `Json` ##### Json Args: ###### `code` `int` `response code` ###### `content` `list` `list of history songs` ##### List of Songs Args(content): ###### `pid` `int` `platform id` ###### `id` `int` `song id(platform)` ###### `name` `string` `name of song` ###### `artists` `list` `list of artists` ###### `album` `dict` `album of this song` ###### `url` `string` `the media url of this song (system cache)` ##### List of Artists Args: ###### `id` `int` `artist id(platform)` ###### `name` `string` `name of this artist` ###### `cover` `string` `image url of this aritist` ##### Album Args: ###### `id` `int` `album id(platform)` ###### `name` `string` `name of this album` ###### `cover` `string` `image url of this album` ### List Page #### The list page use the path "/list" #### Anybody can directly get the list of whitelist and blacklist #### WebApi Interface Detail: ##### Path: `/api/list` ##### Method: `GET` ##### Args: `Nothing` ##### Response Format: `Json` ##### Json Args: ###### `code` `int` `response code` ###### `content` `dict` `dict of list, included whitelist and blacklist` ##### Content Dict(content): ###### `white` `list` `songs list of whitelist` ###### `black` `list` `songs list of blacklist` ##### List of Songs Args: ###### `pid` `int` `platform id` ###### `id` `int` `song id(platform)` ###### `name` `string` `name of song` ###### `artists` `list` `list of artists` ###### `album` `dict` `album of this song` ##### List of Artists Args: ###### `id` `int` `artist id(platform)` ###### `name` `string` `name of this artist` ###### `cover` `string` `image url of this aritist` ##### Album Args: ###### `id` `int` `album id(platform)` ###### `name` `string` `name of this album` ###### `cover` `string` `image url of this album` ### Confirm Page #### The confirm page use the path "/confirm" #### This page only use for the twice confirm #### Located from the search page #### Read the parameter from url on front code (Javascript) #### Get Parameter: ##### `platform` `int` `platform id` ##### `id` `int` `id of the song` #### Then use the id and platform id to requests the song detail #### WebApi Interface Detail: ##### Path: `/api/detail` ##### Method: `POST` ##### Args: ###### `platform` `int` `id of the platform` ###### `id` `int` `id of the song` ###### `token` `string` `user token` ##### Response Format: `Json` ##### Json Args: ###### `code` `int` `response code` ###### `content` `list` `list of songs` ##### List of Songs Args(content): ###### `pid` `int` `platform id` ###### `id` `int` `song id(platform)` ###### `name` `string` `name of song` ###### `artists` `list` `list of artists` ###### `album` `dict` `album of this song` ###### `url` `string` `the media url of this song (source platform or system cache)` ##### List of Artists Args: ###### `id` `int` `artist id(platform)` ###### `name` `string` `name of this artist` ###### `cover` `string` `image url of this aritist` ##### Album Args: ###### `id` `int` `album id(platform)` ###### `name` `string` `name of this album` ###### `cover` `string` `image url of this album` #### After user clicking the confirm button, send request to this interface #### WebApi Interface Detail: ##### Path: `/api/detail` ##### Method: `POST` ##### Args: ###### `platform` `int` `id of the platform` ###### `id` `int` `id of the song` ###### `date` `string` `YYYY-MM-DD` ###### `token` `string` `user token` ##### Response Format: `Json` ##### Json Args: ###### `code` `int` `response code` ## Back (Admin) ### Access Page #### The access page use the path "/admin/access" #### Only Admin can request this interface #### Get list of user: #### WebApi Interface Detail: ##### Path: `/api/userlist` ##### Method: `POST` ##### Args: ###### `token` `string` `user(admin operator) token` ##### Response Format: `Json` ##### Json Args: ###### `code` `int` `response code` ###### `content` `list` `list of all users` ##### List of all users (content): ###### `uid` `int` `user id` ###### `nickname` `string` `user's nickname` ###### `name` `string` `user's real name (if realname auth passed)` #### Request for change operate: #### WebApi Interface Detail: ##### Path: `/api/admin/access` ##### Method: `POST` ##### Args: ###### `token` `string` `user(admin operator) token` ###### `uid` `int` `user's id to change access` ###### `operate` `string` `admin or user, destination` ##### Response Format: `Json` ##### Json Args: ###### `code` `int` `response code` ### Audit Page #### The audit page use the path "/admin/audit/song" for song audit #### Only Admin can request this interface #### Get list of songs that songed by users #### WebApi Interface Detail: ##### Path: `/api/auditlist/song` ##### Method: `POST` ##### Args: ###### `token` `string` `user(admin operator) token` ##### Response Format: `Json` ##### Json Args: ###### `code` `int` `response code` ###### `content` `list` `list of all users` ##### List of songs that users songed (content): ###### `sid` `int` `id of this song(v.) event` ###### `uid` `int` `user id` ###### `nickname` `string` `user's nickname` ###### `name` `string` `user's real name (if realname auth passed)` ###### `platform` `int` `platform of the song` ###### `id` `int` `id of the song` ###### `name` `string` `name of song` ###### `artists` `list` `list of artists` ###### `album` `dict` `album of this song` ###### `url` `string` `the media url of this song (source platform or system cache)` #### Request for audit operate: #### WebApi Interface Detail: ##### Path: `/api/admin/listaudit` ##### Method: `POST` ##### Args: ###### `token` `string` `user(admin operator) token` ###### `sid` `int` `id of this song(v.) event` ###### `operate` `string` `pass, abort or ignore` ##### Response Format: `Json` ##### Json Args: ###### `code` `int` `response code` #### The audit page use the path "/admin/audit/auth" for real name auth audit #### Only Admin can request this interface #### Get list of user's real name auth. #### WebApi Interface Detail: ##### Path: `/api/auditlist/real` ##### Method: `POST` ##### Args: ###### `token` `string` `user(admin operator) token` ##### Response Format: `Json` ##### Json Args: ###### `code` `int` `response code` ###### `content` `list` `list of all real name auth requests` ##### List of real name auth requests (content): ###### `uid` `int` `id of the user` ###### `img` `string` `the url of the real name auth img` ###### `name` `string` `real name of the user` #### Request for audit operate: #### WebApi Interface Detail: ##### Path: `/api/admin/realaudit` ##### Method: `POST` ##### Argv: ###### `token` `string` `user(admin operator) token` ###### `uid` `int` `id of the user that you audit` ###### `operate` `string` `pass or abort` ##### Response Format: `Json` ##### Json Args: ###### `code` `int` `response code` ### List Page #### The list manage page use the path "/admin/list" #### Only Admin can request this interface #### Requests the public interface to get the list of blacklist songs and whitelist songs ##### `/api/list` #### Request for list operate: #### WebApi Interface Detail: ##### Path: `/api/admin/list` ##### Method: `POST` ##### Args: ###### `token` `string` `user(admin operator) token` ###### `sid` `int` `id of this song(v.) event` ###### `operate` `string` `white, black, remove` ##### Response Format: `Json` ##### Json Args: ###### `code` `int` `response code` ### System Page #### The system control page use the path "/admin/system" #### Only Admin can request this interface #### Options: ##### `notice` `string` `System Notice` ##### `switcher` `bool` `Main switcher for the song function` ##### `igTime` `bool` ``Main switcher to ignore the time limit` ##### `timeRule` `list` `the timeRule setting` #### timeRule look like: ``` [[6, "16:00:00", "23:59:59"], [0, "00:00:00", "8:00:00"]]``` #### 6 stand for Sat., and 0 stand for Sun. #### I dont know how to design the form, everything depends on you guys :D #### Get the setting now use the public interface: "System Interface" #### Save the setting operate: #### WebApi Interface Detail: ##### Path: `/api/admin/system` ##### Method: `POST` ##### Args: ###### `token` `string` `user(admin operator) token` ###### `OPTION` `TYPE` `NOTICE` ###### ```See the detail in options``` ##### Response Format: `Json` ##### Json Args: ###### `code` `int` `response code` ## Public ### System Interface #### Anybody can directly request this interface #### Get system setting ##### WebApi Interface Detail: ##### Path: `/api/system` ##### Method: `GET` ##### Args: `Nothing` ##### Response Format: `Json` ##### Json Args: ###### `code` `int` `response code` ###### `content` `dict` `dict of list, included whitelist and blacklist` ##### Content Dict(content): ##### `notice` `string` `System Notice` ##### `switcher` `bool` `Main switcher for the song function` ##### `igTime` `bool` ``Main switcher to ignore the time limit` ##### `timeRule` `list` `the timeRule setting` #### List of time rule: ##### `0` `Index` `Index` ##### `1` `HH:MM:SS` `begin time` ##### `2` `HH:MM:SS` `end time`