271 lines
6.7 KiB
JavaScript
271 lines
6.7 KiB
JavaScript
|
|
import { get, post } from '../_utils/request';
|
|||
|
|
import { config } from '../../config/index';
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 积分相关API服务
|
|||
|
|
*/
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 获取用户积分
|
|||
|
|
*/
|
|||
|
|
export function getUserPoints() {
|
|||
|
|
if (config.useMock) {
|
|||
|
|
console.log('[积分API] Mock - 获取用户积分');
|
|||
|
|
return Promise.resolve(mockData.userPoints);
|
|||
|
|
}
|
|||
|
|
console.log('[积分API] 获取用户积分');
|
|||
|
|
return get('/points');
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 获取积分概览
|
|||
|
|
*/
|
|||
|
|
export function getPointsOverview() {
|
|||
|
|
if (config.useMock) {
|
|||
|
|
console.log('[积分API] Mock - 获取积分概览');
|
|||
|
|
return Promise.resolve(mockData.pointsOverview);
|
|||
|
|
}
|
|||
|
|
console.log('[积分API] 获取积分概览');
|
|||
|
|
return get('/points/overview');
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 获取积分历史记录
|
|||
|
|
* @param {Object} params - 查询参数
|
|||
|
|
* @param {number} params.page - 页码
|
|||
|
|
* @param {number} params.pageSize - 每页数量
|
|||
|
|
* @param {string} params.type - 积分类型 (earn/spend)
|
|||
|
|
*/
|
|||
|
|
export function getPointsHistory(params = {}) {
|
|||
|
|
if (config.useMock) {
|
|||
|
|
console.log('[积分API] Mock - 获取积分历史记录', params);
|
|||
|
|
return Promise.resolve(mockData.pointsHistory);
|
|||
|
|
}
|
|||
|
|
console.log('[积分API] 获取积分历史记录', params);
|
|||
|
|
return get('/points/history', params);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 获取积分规则
|
|||
|
|
*/
|
|||
|
|
export function getPointsRules() {
|
|||
|
|
if (config.useMock) {
|
|||
|
|
console.log('[积分API] Mock - 获取积分规则');
|
|||
|
|
return Promise.resolve(mockData.pointsRules);
|
|||
|
|
}
|
|||
|
|
console.log('[积分API] 获取积分规则');
|
|||
|
|
return get('/points/rules');
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 获取积分兑换商品列表
|
|||
|
|
* @param {Object} params - 查询参数
|
|||
|
|
* @param {number} params.page - 页码
|
|||
|
|
* @param {number} params.pageSize - 每页数量
|
|||
|
|
*/
|
|||
|
|
export function getPointsExchangeList(params = {}) {
|
|||
|
|
if (config.useMock) {
|
|||
|
|
console.log('[积分API] Mock - 获取积分兑换商品列表', params);
|
|||
|
|
return Promise.resolve(mockData.exchangeList);
|
|||
|
|
}
|
|||
|
|
console.log('[积分API] 获取积分兑换商品列表', params);
|
|||
|
|
return get('/points/exchange', params);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 积分兑换
|
|||
|
|
* @param {number} exchangeId - 兑换商品ID
|
|||
|
|
* @param {number} quantity - 兑换数量
|
|||
|
|
*/
|
|||
|
|
export function exchangePoints(exchangeId, quantity = 1) {
|
|||
|
|
if (config.useMock) {
|
|||
|
|
console.log('[积分API] Mock - 积分兑换', { exchangeId, quantity });
|
|||
|
|
return Promise.resolve({
|
|||
|
|
code: 200,
|
|||
|
|
message: '兑换成功',
|
|||
|
|
data: {
|
|||
|
|
exchange_id: exchangeId,
|
|||
|
|
quantity: quantity,
|
|||
|
|
points_used: 500 * quantity
|
|||
|
|
}
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
console.log('[积分API] 积分兑换', { exchangeId, quantity });
|
|||
|
|
return post('/points/exchange', { exchange_id: exchangeId, quantity });
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 获取用户兑换记录
|
|||
|
|
* @param {Object} params - 查询参数
|
|||
|
|
* @param {number} params.page - 页码
|
|||
|
|
* @param {number} params.pageSize - 每页数量
|
|||
|
|
*/
|
|||
|
|
export function getUserExchangeRecords(params = {}) {
|
|||
|
|
if (config.useMock) {
|
|||
|
|
console.log('[积分API] Mock - 获取用户兑换记录', params);
|
|||
|
|
return Promise.resolve(mockData.exchangeRecords);
|
|||
|
|
}
|
|||
|
|
console.log('[积分API] 获取用户兑换记录', params);
|
|||
|
|
return get('/points/exchange/records', params);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
export function dailyCheckin() {
|
|||
|
|
if (config.useMock) {
|
|||
|
|
console.log('[积分API] Mock - 每日签到');
|
|||
|
|
return Promise.resolve({ code: 200, message: '今日登录积分已发放', data: { awarded: true } });
|
|||
|
|
}
|
|||
|
|
console.log('[积分API] 每日签到');
|
|||
|
|
return post('/points/daily-checkin');
|
|||
|
|
}
|
|||
|
|
// Mock数据 - 用于开发测试
|
|||
|
|
const mockData = {
|
|||
|
|
userPoints: {
|
|||
|
|
code: 200,
|
|||
|
|
message: '操作成功',
|
|||
|
|
data: {
|
|||
|
|
total_points: 1250,
|
|||
|
|
available_points: 1250,
|
|||
|
|
frozen_points: 0
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
pointsOverview: {
|
|||
|
|
code: 200,
|
|||
|
|
message: '操作成功',
|
|||
|
|
data: {
|
|||
|
|
total_points: 1250,
|
|||
|
|
available_points: 1250,
|
|||
|
|
frozen_points: 0,
|
|||
|
|
total_earned: 2500,
|
|||
|
|
total_spent: 1250,
|
|||
|
|
this_month_earned: 300,
|
|||
|
|
this_month_spent: 150
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
pointsHistory: {
|
|||
|
|
code: 200,
|
|||
|
|
message: '操作成功',
|
|||
|
|
data: {
|
|||
|
|
list: [
|
|||
|
|
{
|
|||
|
|
id: 1,
|
|||
|
|
type: 'earn',
|
|||
|
|
points: 100,
|
|||
|
|
description: '购物获得积分',
|
|||
|
|
source: 'order',
|
|||
|
|
created_at: '2024-01-15T10:30:00Z'
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
id: 2,
|
|||
|
|
type: 'spend',
|
|||
|
|
points: -50,
|
|||
|
|
description: '兑换优惠券',
|
|||
|
|
source: 'exchange',
|
|||
|
|
created_at: '2024-01-14T15:20:00Z'
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
id: 3,
|
|||
|
|
type: 'earn',
|
|||
|
|
points: 20,
|
|||
|
|
description: '每日签到',
|
|||
|
|
source: 'checkin',
|
|||
|
|
created_at: '2024-01-14T09:00:00Z'
|
|||
|
|
}
|
|||
|
|
],
|
|||
|
|
total: 3,
|
|||
|
|
page: 1,
|
|||
|
|
page_size: 10
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
pointsRules: {
|
|||
|
|
code: 200,
|
|||
|
|
message: '操作成功',
|
|||
|
|
data: [
|
|||
|
|
{
|
|||
|
|
id: 1,
|
|||
|
|
title: '购物获得积分', // 修改字段名为title,与后端一致
|
|||
|
|
description: '每消费1元获得1积分',
|
|||
|
|
points: 1,
|
|||
|
|
type: 'order'
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
id: 2,
|
|||
|
|
title: '每日签到', // 修改字段名为title,与后端一致
|
|||
|
|
description: '每日签到获得20积分',
|
|||
|
|
points: 20,
|
|||
|
|
type: 'checkin'
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
id: 3,
|
|||
|
|
title: '邀请好友', // 修改字段名为title,与后端一致
|
|||
|
|
description: '成功邀请好友注册获得100积分',
|
|||
|
|
points: 100,
|
|||
|
|
type: 'invite'
|
|||
|
|
}
|
|||
|
|
]
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
exchangeList: {
|
|||
|
|
code: 200,
|
|||
|
|
message: '操作成功',
|
|||
|
|
data: [
|
|||
|
|
{
|
|||
|
|
id: 1,
|
|||
|
|
name: '10元优惠券',
|
|||
|
|
description: '满100元可用',
|
|||
|
|
points: 500, // 修改字段名为points,与后端一致
|
|||
|
|
stock: 100,
|
|||
|
|
image: 'https://via.placeholder.com/200x200',
|
|||
|
|
type: 'coupon'
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
id: 2,
|
|||
|
|
name: '20元优惠券',
|
|||
|
|
description: '满200元可用',
|
|||
|
|
points: 1000, // 修改字段名为points,与后端一致
|
|||
|
|
stock: 50,
|
|||
|
|
image: 'https://via.placeholder.com/200x200',
|
|||
|
|
type: 'coupon'
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
id: 3,
|
|||
|
|
name: '精美礼品',
|
|||
|
|
description: '限量版纪念品',
|
|||
|
|
points: 2000, // 修改字段名为points,与后端一致
|
|||
|
|
stock: 10,
|
|||
|
|
image: 'https://via.placeholder.com/200x200',
|
|||
|
|
type: 'gift'
|
|||
|
|
}
|
|||
|
|
]
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
exchangeRecords: {
|
|||
|
|
code: 200,
|
|||
|
|
message: '操作成功',
|
|||
|
|
data: {
|
|||
|
|
list: [
|
|||
|
|
{
|
|||
|
|
id: 1,
|
|||
|
|
exchange_item_name: '10元优惠券',
|
|||
|
|
points_used: 500,
|
|||
|
|
quantity: 1,
|
|||
|
|
status: 'completed',
|
|||
|
|
created_at: '2024-01-14T15:20:00Z'
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
id: 2,
|
|||
|
|
exchange_item_name: '精美礼品',
|
|||
|
|
points_used: 2000,
|
|||
|
|
quantity: 1,
|
|||
|
|
status: 'processing',
|
|||
|
|
created_at: '2024-01-13T10:30:00Z'
|
|||
|
|
}
|
|||
|
|
],
|
|||
|
|
total: 2,
|
|||
|
|
page: 1,
|
|||
|
|
page_size: 10
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
};
|