217 lines
5.4 KiB
JavaScript
217 lines
5.4 KiB
JavaScript
/**
|
|
* 早安电台 — 后端 API 接口封装
|
|
* 统一调用 request.js,对外暴露业务方法
|
|
*/
|
|
const { get, post } = require('./request')
|
|
|
|
// ======================== 登录相关 ========================
|
|
|
|
/** 小程序登录 (wx.login code → token + user) */
|
|
function miniLogin(code) {
|
|
return get('/auth/miniLogin', { code })
|
|
}
|
|
|
|
/** 获取位置信息 */
|
|
function getLocation(longitude, latitude) {
|
|
return get('/auth/getLocation', { longitude, latitude })
|
|
}
|
|
|
|
/** 获取天气 */
|
|
function getWeather(adcode) {
|
|
return get('/auth/getWeather', { adcode })
|
|
}
|
|
|
|
/** 获取手机号 */
|
|
function getPhone(code, openId) {
|
|
return get('/auth/getPhone', { code, openId })
|
|
}
|
|
|
|
// ======================== 分类管理 ========================
|
|
|
|
/** 获取分类列表(全量) */
|
|
function getCategoryList() {
|
|
return get('/radio/category/list')
|
|
}
|
|
|
|
/** 获取分类树 */
|
|
function getCategoryTree() {
|
|
return get('/radio/category/tree')
|
|
}
|
|
|
|
// ======================== 频道管理 ========================
|
|
|
|
/** 获取频道列表(分页) */
|
|
function getChannelList(params) {
|
|
return post('/radio/channel/list', {
|
|
current: params.current || 1,
|
|
pageSize: params.pageSize || 50,
|
|
categoryId: params.categoryId || '',
|
|
status: 1 // 仅上架
|
|
})
|
|
}
|
|
|
|
/** 获取免费频道列表 */
|
|
function getFreeChannelList(params) {
|
|
return post('/radio/channel/freeList', {
|
|
current: (params && params.current) || 1,
|
|
pageSize: (params && params.pageSize) || 20,
|
|
keyword: (params && params.keyword) || ''
|
|
})
|
|
}
|
|
|
|
/** 获取频道详情 */
|
|
function getChannelDetail(id) {
|
|
return get('/radio/channel/detail', { id })
|
|
}
|
|
|
|
// ======================== 节目管理 ========================
|
|
|
|
/** 获取节目列表(分页,需传 channelId) */
|
|
function getProgramList(params) {
|
|
return post('/radio/program/list', {
|
|
channelId: params.channelId,
|
|
current: params.current || 1,
|
|
pageSize: params.pageSize || 50,
|
|
status: 1
|
|
})
|
|
}
|
|
|
|
/** 获取节目详情 */
|
|
function getProgramDetail(id) {
|
|
return get('/radio/program/detail', { id })
|
|
}
|
|
|
|
// ======================== 订阅管理 ========================
|
|
|
|
/** 获取我的订阅列表 */
|
|
function getSubscriptionList(params) {
|
|
return post('/radio/subscription/list', {
|
|
current: (params && params.current) || 1,
|
|
pageSize: (params && params.pageSize) || 50
|
|
})
|
|
}
|
|
|
|
/** 检查是否可以订阅 */
|
|
function canSubscribe(channelId) {
|
|
return post('/radio/subscription/can-subscribe', { channelId })
|
|
}
|
|
|
|
/** 订阅频道 */
|
|
function subscribe(channelId) {
|
|
return post('/radio/subscription/subscribe', { channelId })
|
|
}
|
|
|
|
/** 退订频道 */
|
|
function unsubscribe(channelId) {
|
|
return post('/radio/subscription/unsubscribe', { channelId })
|
|
}
|
|
|
|
// ======================== 收听历史 ========================
|
|
|
|
/** 添加收听历史 */
|
|
function addHistory(params) {
|
|
return post('/radio/history/add', {
|
|
programId: params.programId,
|
|
progress: params.progress || 0,
|
|
duration: params.duration || 0
|
|
})
|
|
}
|
|
|
|
/** 获取收听历史列表 */
|
|
function getHistoryList(params) {
|
|
return post('/radio/history/list', {
|
|
current: (params && params.current) || 1,
|
|
pageSize: (params && params.pageSize) || 20
|
|
})
|
|
}
|
|
|
|
// ======================== 收藏 ========================
|
|
|
|
/** 添加收藏 */
|
|
function addFavorite(programId) {
|
|
return post('/radio/favorite/add', { programId })
|
|
}
|
|
|
|
/** 取消收藏 */
|
|
function removeFavorite(programId) {
|
|
return post('/radio/favorite/remove', { programId })
|
|
}
|
|
|
|
/** 获取收藏列表 */
|
|
function getFavoriteList(params) {
|
|
return post('/radio/favorite/list', {
|
|
current: (params && params.current) || 1,
|
|
pageSize: (params && params.pageSize) || 20
|
|
})
|
|
}
|
|
|
|
// ======================== 点赞 / 评论 ========================
|
|
|
|
/** 切换点赞 */
|
|
function toggleLike(programId) {
|
|
return post('/radio/like/toggle', { programId })
|
|
}
|
|
|
|
/** 获取当前登录用户 */
|
|
function getUserInfo() {
|
|
return get('/user/info')
|
|
}
|
|
|
|
/** 付费订阅频道(传入方案 monthly/quarterly/annual 和价格) */
|
|
function subscribeChannel(params) {
|
|
return post('/radio/subscription/pay', params)
|
|
}
|
|
|
|
/**
|
|
* 主动查询微信支付状态
|
|
* @param {string} outTradeNo 商户订单号(上游返回)
|
|
* @returns {Promise<boolean>} true = 支付成功
|
|
*/
|
|
function queryPayStatus(outTradeNo) {
|
|
return get('/pay/query', { outTradeNo })
|
|
.then(function (res) {
|
|
// 后端返回 bool 或 { data: bool }
|
|
if (typeof res === 'boolean') return res
|
|
if (typeof res.data === 'boolean') return res.data
|
|
return res.code === 200 && !!res.data
|
|
})
|
|
}
|
|
|
|
|
|
/**
|
|
* 频道解锁(唇起微信支付骄支付单)
|
|
* @param {string} channelId
|
|
* @param {string} type '1'=包月 '2'=包季 '3'=包年
|
|
*/
|
|
function unlockChannel(channelId, type) {
|
|
return post('/radio/subscription/unlock', { channelId, type })
|
|
}
|
|
|
|
module.exports = {
|
|
miniLogin,
|
|
getLocation,
|
|
getWeather,
|
|
getPhone,
|
|
getCategoryList,
|
|
getCategoryTree,
|
|
getChannelList,
|
|
getFreeChannelList,
|
|
getChannelDetail,
|
|
getProgramList,
|
|
getProgramDetail,
|
|
getSubscriptionList,
|
|
canSubscribe,
|
|
subscribe,
|
|
unsubscribe,
|
|
addHistory,
|
|
getHistoryList,
|
|
addFavorite,
|
|
removeFavorite,
|
|
getFavoriteList,
|
|
toggleLike,
|
|
getUserInfo,
|
|
subscribeChannel,
|
|
unlockChannel,
|
|
queryPayStatus
|
|
}
|