feat: 黄精粉前端功能集成 + 个人中心/资产/公排页面优化 + 去除admin copyright

主要改动:
- 个人中心: 去除HjfMemberBadge徽章, 会员等级改显示vip_name,
  "我的资产"/"公排查询"导航项改为与member-points一致风格
- 我的资产页面: 去除HjfMemberBadge, 美化卡片圆角和阴影
- 公排查询页面: 美化顶部渐变和订单卡片样式
- Admin登录页和后台布局: 彻底删除footer copyright信息
- 新增黄精粉业务页面/组件/API/Mock数据(Phase 1)
- 新增PHP环境配置文档和启动脚本

Made-with: Cursor
This commit is contained in:
apple
2026-03-13 00:49:22 +08:00
parent 21f9cc2c0a
commit f6227c0253
70 changed files with 23359 additions and 1176 deletions

View File

@@ -0,0 +1,113 @@
/**
* 会员管理模块 - Admin API
* @module api/hjfMember
* @description 会员列表、会员配置、设置不考核、设置会员等级等管理端接口
*/
import request from '@/plugins/request';
import { MOCK_MEMBER_LIST, MOCK_MEMBER_CONFIG } from '@/utils/hjfMockData.js';
/** @type {boolean} Phase 1 使用 MockPhase 4 集成时改为 false */
const USE_MOCK = true;
/**
* Mock 包装:返回与 request 相同形状的 Promisestatus + data
* @param {Object} data - 要返回的响应体
* @param {number} [delay=200] - 模拟网络延迟ms
* @returns {Promise<{ status: number, data: Object }>}
*/
function mockResponse(data, delay = 200) {
return new Promise(resolve => {
setTimeout(() => {
resolve({ status: 200, data: JSON.parse(JSON.stringify(data)) });
}, delay);
});
}
/**
* 会员列表(分页 + 等级/不考核筛选)
* @param {Object} [data] - 查询参数,如 page、limit、keyword、member_level、no_assess 等
* @returns {Promise<{ status: number, data: { list: Array, count: number, page: number, limit: number } }>}
*/
export function memberList(data) {
if (USE_MOCK) return mockResponse(MOCK_MEMBER_LIST);
return request({ url: 'hjf/member/list', method: 'get', params: data });
}
/**
* 会员配置(获取等级门槛、直推/伞下奖励等)
* @returns {Promise<{ status: number, data: Object }>}
*/
export function memberConfig() {
if (USE_MOCK) return mockResponse(MOCK_MEMBER_CONFIG);
return request({ url: 'hjf/member/config', method: 'get' });
}
/**
* 获取会员配置(新接口,供 memberConfig 页面使用)
* @returns {Promise<{ status: number, data: { levels: Array } }>}
*/
export function memberConfigGetApi() {
if (USE_MOCK) return mockResponse(MOCK_MEMBER_CONFIG);
return request({ url: 'hjf/member/config', method: 'get' });
}
/**
* 保存会员配置
* @param {{ levels: Array }} data - 包含各等级配置的对象
* @returns {Promise<{ status: number, data: Object }>}
*/
export function memberConfigSaveApi(data) {
if (USE_MOCK) return mockResponse({ success: true });
return request({ url: 'hjf/member/config', method: 'put', data });
}
/**
* 设置不考核
* @param {number} uid - 用户 ID
* @param {number} status - 不考核状态0 正常考核1 不考核
* @returns {Promise<{ status: number, data: Object }>}
*/
export function memberSetNoAssess(uid, status) {
if (USE_MOCK) return mockResponse({ success: true });
return request({
url: `hjf/member/${uid}/no_assess`,
method: 'put',
data: { status }
});
}
/**
* 设置会员等级
* @param {number} uid - 用户 ID
* @param {number} level - 会员等级0 普通 1 创客 2 云店 3 服务商 4 分公司
* @returns {Promise<{ status: number, data: Object }>}
*/
export function memberSetLevel(uid, level) {
if (USE_MOCK) return mockResponse({ success: true });
return request({
url: `hjf/member/level/${uid}`,
method: 'put',
data: { level }
});
}
/**
* 会员列表(分页 + 等级/关键字筛选)—— memberLevel 页面专用别名
* @param {Object} [params] - 查询参数page、limit、keyword、member_level 等
* @returns {Promise<{ status: number, data: { list: Array, count: number } }>}
*/
export function memberListApi(params) {
if (USE_MOCK) return mockResponse(MOCK_MEMBER_LIST);
return request({ url: 'hjf/member/list', method: 'get', params });
}
/**
* 手动调整会员等级
* @param {{ uid: number, level: number }} data - 用户 ID 与目标等级
* @returns {Promise<{ status: number, data: Object }>}
*/
export function memberLevelUpdateApi(data) {
if (USE_MOCK) return mockResponse({ success: true });
return request({ url: `hjf/member/level/${data.uid}`, method: 'put', data: { level: data.level } });
}

View File

@@ -0,0 +1,17 @@
import request from '@/plugins/request';
import { MOCK_POINTS_RELEASE_LOG } from '@/utils/hjfMockData.js';
const USE_MOCK = true;
function mockResponse(data, delay = 200) {
return new Promise(resolve => {
setTimeout(() => {
resolve({ status: 200, data: JSON.parse(JSON.stringify(data)) });
}, delay);
});
}
export function pointsReleaseLogApi(data) {
if (USE_MOCK) return mockResponse(MOCK_POINTS_RELEASE_LOG);
return request({ url: 'hjf/points/release_log', method: 'get', params: data });
}

View File

@@ -0,0 +1,80 @@
/**
* 公排模块 - Admin API
* @module api/hjfQueue
* @description 公排订单列表、公排配置、公排财务明细等管理端接口
*/
import request from '@/plugins/request';
import {
MOCK_QUEUE_ORDER_LIST,
MOCK_QUEUE_CONFIG,
MOCK_QUEUE_FINANCE
} from '@/utils/hjfMockData.js';
/** @type {boolean} Phase 1 使用 MockPhase 4 集成时改为 false */
const USE_MOCK = true;
/**
* Mock 包装:返回与 request 相同形状的 Promisestatus + data
* @param {Object} data - 要返回的响应体
* @param {number} [delay=200] - 模拟网络延迟ms
* @returns {Promise<{ status: number, data: Object }>}
*/
function mockResponse(data, delay = 200) {
return new Promise(resolve => {
setTimeout(() => {
resolve({ status: 200, data: JSON.parse(JSON.stringify(data)) });
}, delay);
});
}
/**
* 公排订单列表(分页 + 筛选)
* @param {Object} [data] - 查询参数,如 page、limit、keyword、status、date_range 等
* @returns {Promise<{ status: number, data: { list: Array, count: number, page: number, limit: number } }>}
*/
export function queueOrderList(data) {
if (USE_MOCK) return mockResponse(MOCK_QUEUE_ORDER_LIST);
return request({ url: 'hjf/queue/order_list', method: 'get', params: data });
}
/** @alias queueOrderList */
export const queueOrderListApi = queueOrderList;
/**
* 公排配置(获取)
* @returns {Promise<{ status: number, data: { trigger_multiple: number, refund_cycle: number, enabled: boolean, release_rate: number, withdraw_fee_rate: number } }>}
*/
export function queueConfig() {
if (USE_MOCK) return mockResponse(MOCK_QUEUE_CONFIG);
return request({ url: 'hjf/queue/config', method: 'get' });
}
/** @alias queueConfig */
export const queueConfigGetApi = queueConfig;
/**
* 公排配置(保存)
* @param {Object} data - 配置数据,包含 trigger_multiple、refund_cycle、enabled 等字段
* @returns {Promise<{ status: number, data: Object }>}
*/
export function queueConfigSave(data) {
if (USE_MOCK) return mockResponse({ message: 'ok' }, 300);
return request({ url: 'hjf/queue/config', method: 'put', data });
}
/** @alias queueConfigSave */
export const queueConfigSaveApi = queueConfigSave;
/**
* 公排财务明细(退款流水列表,分页)
* @param {Object} [data] - 查询参数,如 page、limit、date_range 等
* @returns {Promise<{ status: number, data: { list: Array, count: number, total_refund: string, page: number, limit: number } }>}
*/
export function queueFinanceList(data) {
if (USE_MOCK) return mockResponse(MOCK_QUEUE_FINANCE);
return request({ url: 'hjf/queue/finance', method: 'get', params: data });
}
/** @alias queueFinanceList */
export const queueFinanceListApi = queueFinanceList;