Files
2025-11-17 14:11:46 +08:00

271 lines
6.7 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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