Files
ai_dianshang/miniprogram/services/points/index.js

271 lines
6.7 KiB
JavaScript
Raw Normal View History

2025-11-17 14:11:46 +08:00
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
}
}
};