feat: Multi-user system with PostgreSQL - WIP temporary save
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
import request from '@/utils/request'
|
||||
import request, { ANALYSIS_TIMEOUT } from '@/utils/request'
|
||||
|
||||
const marketApi = {
|
||||
// Watchlist
|
||||
@@ -11,6 +11,7 @@ const marketApi = {
|
||||
CreateAnalysisTask: '/api/analysis/createTask',
|
||||
GetAnalysisTaskStatus: '/api/analysis/getTaskStatus',
|
||||
GetAnalysisHistoryList: '/api/analysis/getHistoryList',
|
||||
DeleteAnalysisTask: '/api/analysis/deleteTask',
|
||||
ReflectAnalysis: '/api/analysis/reflect',
|
||||
// AI chat (optional)
|
||||
ChatMessage: '/api/ai/chat/message',
|
||||
@@ -34,8 +35,8 @@ const marketApi = {
|
||||
export function getWatchlist (parameter) {
|
||||
return request({
|
||||
url: marketApi.GetWatchlist,
|
||||
method: 'post',
|
||||
data: parameter
|
||||
method: 'get',
|
||||
params: parameter
|
||||
})
|
||||
}
|
||||
|
||||
@@ -73,8 +74,10 @@ export function removeWatchlist (parameter) {
|
||||
export function getWatchlistPrices (parameter) {
|
||||
return request({
|
||||
url: marketApi.GetWatchlistPrices,
|
||||
method: 'post',
|
||||
data: parameter
|
||||
method: 'get',
|
||||
params: {
|
||||
watchlist: JSON.stringify(parameter.watchlist || [])
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
@@ -99,8 +102,8 @@ export function chatMessage (parameter) {
|
||||
export function getChatHistory (parameter) {
|
||||
return request({
|
||||
url: marketApi.GetChatHistory,
|
||||
method: 'post',
|
||||
data: parameter
|
||||
method: 'get',
|
||||
params: parameter
|
||||
})
|
||||
}
|
||||
|
||||
@@ -126,7 +129,8 @@ export function multiAnalysis (parameter) {
|
||||
return request({
|
||||
url: marketApi.MultiAnalysis,
|
||||
method: 'post',
|
||||
data: parameter
|
||||
data: parameter,
|
||||
timeout: ANALYSIS_TIMEOUT // Extended timeout for AI analysis
|
||||
})
|
||||
}
|
||||
|
||||
@@ -151,8 +155,8 @@ export function createAnalysisTask (parameter) {
|
||||
export function getAnalysisTaskStatus (parameter) {
|
||||
return request({
|
||||
url: marketApi.GetAnalysisTaskStatus,
|
||||
method: 'post',
|
||||
data: parameter
|
||||
method: 'get',
|
||||
params: parameter
|
||||
})
|
||||
}
|
||||
|
||||
@@ -164,6 +168,19 @@ export function getAnalysisTaskStatus (parameter) {
|
||||
export function getAnalysisHistoryList (parameter) {
|
||||
return request({
|
||||
url: marketApi.GetAnalysisHistoryList,
|
||||
method: 'get',
|
||||
params: parameter
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete analysis task
|
||||
* @param parameter { task_id: number }
|
||||
* @returns {*}
|
||||
*/
|
||||
export function deleteAnalysisTask (parameter) {
|
||||
return request({
|
||||
url: marketApi.DeleteAnalysisTask,
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
@@ -200,8 +217,7 @@ export function getConfig () {
|
||||
export function getMenuFooterConfig () {
|
||||
return request({
|
||||
url: marketApi.GetMenuFooterConfig,
|
||||
method: 'post',
|
||||
data: {}
|
||||
method: 'get'
|
||||
})
|
||||
}
|
||||
|
||||
@@ -224,8 +240,8 @@ export function getMarketTypes () {
|
||||
export function searchSymbols (parameter) {
|
||||
return request({
|
||||
url: marketApi.SearchSymbols,
|
||||
method: 'post',
|
||||
data: parameter
|
||||
method: 'get',
|
||||
params: parameter
|
||||
})
|
||||
}
|
||||
|
||||
@@ -237,7 +253,7 @@ export function searchSymbols (parameter) {
|
||||
export function getHotSymbols (parameter) {
|
||||
return request({
|
||||
url: marketApi.GetHotSymbols,
|
||||
method: 'post',
|
||||
data: parameter
|
||||
method: 'get',
|
||||
params: parameter
|
||||
})
|
||||
}
|
||||
|
||||
@@ -0,0 +1,126 @@
|
||||
/**
|
||||
* User Management API
|
||||
*/
|
||||
import request from '@/utils/request'
|
||||
|
||||
// ==================== Admin APIs ====================
|
||||
|
||||
/**
|
||||
* Get user list (admin only)
|
||||
* @param {Object} params - { page, page_size }
|
||||
*/
|
||||
export function getUserList (params) {
|
||||
return request({
|
||||
url: '/api/users/list',
|
||||
method: 'get',
|
||||
params
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* Get user detail (admin only)
|
||||
* @param {Number} id - User ID
|
||||
*/
|
||||
export function getUserDetail (id) {
|
||||
return request({
|
||||
url: '/api/users/detail',
|
||||
method: 'get',
|
||||
params: { id }
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* Create new user (admin only)
|
||||
* @param {Object} data - { username, password, email, nickname, role }
|
||||
*/
|
||||
export function createUser (data) {
|
||||
return request({
|
||||
url: '/api/users/create',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* Update user (admin only)
|
||||
* @param {Number} id - User ID
|
||||
* @param {Object} data - { email, nickname, role, status }
|
||||
*/
|
||||
export function updateUser (id, data) {
|
||||
return request({
|
||||
url: '/api/users/update',
|
||||
method: 'put',
|
||||
params: { id },
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete user (admin only)
|
||||
* @param {Number} id - User ID
|
||||
*/
|
||||
export function deleteUser (id) {
|
||||
return request({
|
||||
url: '/api/users/delete',
|
||||
method: 'delete',
|
||||
params: { id }
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* Reset user password (admin only)
|
||||
* @param {Object} data - { user_id, new_password }
|
||||
*/
|
||||
export function resetUserPassword (data) {
|
||||
return request({
|
||||
url: '/api/users/reset-password',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* Get available roles
|
||||
*/
|
||||
export function getRoles () {
|
||||
return request({
|
||||
url: '/api/users/roles',
|
||||
method: 'get'
|
||||
})
|
||||
}
|
||||
|
||||
// ==================== Self-Service APIs ====================
|
||||
|
||||
/**
|
||||
* Get current user profile
|
||||
*/
|
||||
export function getProfile () {
|
||||
return request({
|
||||
url: '/api/users/profile',
|
||||
method: 'get'
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* Update current user profile
|
||||
* @param {Object} data - { nickname, email, avatar }
|
||||
*/
|
||||
export function updateProfile (data) {
|
||||
return request({
|
||||
url: '/api/users/profile/update',
|
||||
method: 'put',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* Change current user password
|
||||
* @param {Object} data - { old_password, new_password }
|
||||
*/
|
||||
export function changePassword (data) {
|
||||
return request({
|
||||
url: '/api/users/change-password',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
Reference in New Issue
Block a user