Files
fitness-coach/miniprogram/services/exercise.js
wm b3b58e66fb feat: init fitness-coach (backend + miniprogram)
- backend: NestJS service with exercise/plan data
- miniprogram: WeChat mini program client
- exclude node_modules, dist, runtime data-store, local env
2026-07-22 00:35:40 +08:00

63 lines
1.6 KiB
JavaScript
Raw 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.

// 业务服务层:直接映射后端 REST 接口字段,不做多余转换。
const { request } = require('../utils/request');
// 将参数对象序列化为 query string跳过空值
function buildQuery(params) {
const qs = Object.keys(params || {})
.filter(k => params[k] !== '' && params[k] !== undefined && params[k] !== null)
.map(k => encodeURIComponent(k) + '=' + encodeURIComponent(params[k]))
.join('&');
return qs ? '?' + qs : '';
}
// 1) 动作列表(支持多维筛选与排序)
function listExercises(params = {}) {
return request({ url: '/api/exercises' + buildQuery(params) });
}
// 2) 动作详情
function getExercise(id) {
return request({ url: '/api/exercises/' + encodeURIComponent(id) });
}
// 3) 分类维度枚举
function getCategories(type) {
return request({ url: '/api/categories/' + encodeURIComponent(type) });
}
// 4) 智能推荐
function recommend(params = {}) {
return request({ url: '/api/recommend' + buildQuery(params) });
}
// 5) 训练组合列表
function listCollections() {
return request({ url: '/api/collections' });
}
// 5) 训练组合下的动作
function getCollectionExercises(slug, params = {}) {
return request({ url: '/api/collections/' + encodeURIComponent(slug) + '/exercises' + buildQuery(params) });
}
// 6) 搜索
function search(q) {
return request({ url: '/api/search?q=' + encodeURIComponent(q) });
}
// 7) 统计概览
function getStats() {
return request({ url: '/api/stats' });
}
module.exports = {
listExercises,
getExercise,
getCategories,
recommend,
listCollections,
getCollectionExercises,
search,
getStats
};