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
|
||
}
|
||
}
|
||
}; |