import request from "@/utils/request.js" /** * 微信小程序登录 * @param {object} params - 登录参数 { code: string } */ export function login(params) { return request.post('/member/auth/miniapp/login', params) } /** * 发送短信验证码 * @param {object} params - { phone: string } */ export function sendCode(params) { return request.post('/auth/phone/send-code', params) } /** * 手机号验证码登录 * @param {object} params - { phone: string, code: string } */ export function loginWithPhone(params) { return request.post('/auth/phone/code-login', params) } /** * 手机号一键登录 * @param {object} params - { accessToken: string, openid: string, nickname?: string, avatar?: string } */ export function oneClickLogin(params) { return request.post('/auth/phone/one-click-login', params) } /** * 退出登录 */ export function logout() { return request.post('/member/auth/logout') } /** * 获取签到二维码 * @param {object} options - 请求选项 { cache: boolean, cacheTime: number } */ export function getQRCode(options = { cache: true, cacheTime: 5 * 60 * 1000 }) { return request.get('/checkIn/qrcode', {}, options) } /** * 扫码签到 * @param {object} params - { qrcode: string, memberId: number } */ export function checkIn(params) { return request.post('/checkIn/scan', params) } /** * 获取签到记录(分页) * @param {object} params - { page: number, size: number } * @param {object} options - 请求选项 */ export function getCheckInRecords(params = {}, options = {}) { const { page = 0, size = 5 } = params return request.post('/checkIn/page', { page, size }, options) } /** * 获取用户未读消息数量 * @param {number} userId - 用户ID * @param {object} options - 请求选项 */ export function getUnreadMessageCount(userId, options = {}) { return request.get(`/messages/user/${userId}/unread`, {}, options) } // ========== 消息相关API ========== /** * 获取用户消息列表(支持分页) * @param {number} userId - 用户ID * @param {object} params - 查询参数 * @param {number} params.page - 页码(从0开始) * @param {number} params.size - 每页条数 * @param {object} options - 请求选项 * @returns {Promise} 消息列表 */ export function getUserMessages(userId, params = {}, options = {}) { const { page = 0, size = 10 } = params return request.get(`/messages/user/${userId}/page`, { page, size }, options) } /** * 获取未读消息列表(支持分页) * @param {number} userId - 用户ID * @param {object} params - 查询参数 * @param {number} params.page - 页码(从0开始) * @param {number} params.size - 每页条数 * @param {object} options - 请求选项 * @returns {Promise} 未读消息列表 */ export function getUnreadMessages(userId, params = {}, options = {}) { const { page = 0, size = 10 } = params return request.get(`/messages/user/${userId}/unread/page`, { page, size }, options) } /** * 标记消息为已读 * @param {number|string} id - 消息ID * @param {object} options - 请求选项 * @returns {Promise} 操作结果 */ export function markMessageAsRead(id, options = {}) { return request.put(`/messages/${id}/read`, {}, options) } /** * 标记所有消息为已读 * @param {number} userId - 用户ID * @param {object} options - 请求选项 * @returns {Promise} 操作结果 */ export function markAllMessagesAsRead(userId, options = {}) { return request.put(`/messages/user/${userId}/read`, {}, options) } /** * 删除消息 * @param {number|string} id - 消息ID * @param {object} options - 请求选项 * @returns {Promise} 操作结果 */ export function deleteMessage(id, options = {}) { return request.delete(`/messages/${id}`, {}, options) } /** * 获取用户信息(基础信息缓存) * @param {object} options - 请求选项 { cache: boolean, cacheTime: number } */ export function getUserInfo(options = { cache: true, cacheTime: 30 * 60 * 1000 }) { return request.get('/member/info', {}, options) } /** * 获取会员详细信息(包含会员卡、积分等) * @param {object} options - 请求选项 { cache: boolean } */ export function getMemberDetail(options = { cache: false }) { return request.get('/member/info', {}, options) } /** * 获取签到统计 * @param {object} params - 查询参数 { startDate: string, endDate: string } * @param {object} options - 请求选项 { cache: boolean } */ export function getCheckInStats(params = {}, options = { cache: false }) { return request.get('/checkIn/statistics', params, options) } /** * 更新用户信息 * @param {object} params - 用户信息参数 */ export function updateUserInfo(params) { return request.put('/member/info', params) } /** * 购买会员卡 * @param {object} params - 购买参数 * @param {number} params.memberId - 会员ID * @param {number} params.memberCardId - 会员卡类型ID * @param {number} [params.sourceOrderId] - 来源订单ID */ export function purchaseMemberCard(params) { return request.post('/member-card-records/purchase', params) } /** * 获取我的会员卡列表 * @param {number} memberId - 会员ID * @param {object} options - 请求选项 { cache: boolean } */ export function getMyMemberCards(memberId, options = { cache: false }) { return request.get(`/member-card-records/my-cards/${memberId}`, {}, options) } /** * 获取会员的所有会员卡(支持状态筛选) * @param {number} memberId - 会员ID * @param {string} status - 状态筛选:all-全部, active-有效, expired-已失效 * @param {object} options - 请求选项 */ export function getMyMemberCardsWithStatus(memberId, status = 'all', options = { cache: false }) { return request.get(`/member-card-records/my-cards-with-status/${memberId}`, { status }, options) } /** * 获取会员的主要有效会员卡(只返回一条) * 优先返回临期卡,其次返回普通有效卡 * @param {number} memberId - 会员ID * @param {object} options - 请求选项 { cache: boolean } */ export function getPrimaryMemberCard(memberId, options = { cache: false }) { return request.get(`/member-card-records/primary/${memberId}`, {}, options) } /** * 获取会员卡交易/流水记录(按会员ID) * @param {number} memberId - 会员ID * @param {object} options - 请求选项 { cache: boolean } */ export function getMemberCardTransactions(memberId, options = { cache: false }) { return request.get(`/member-card-transactions/member/${memberId}`, {}, options) } /** * 获取会员卡交易/流水记录(按会员卡记录ID) * @param {number} recordId - 会员卡记录ID * @param {object} options - 请求选项 { cache: boolean } */ export function getMemberCardTransactionsByRecordId(recordId, options = { cache: false }) { return request.get(`/member-card-transactions/record/${recordId}`, {}, options) } /** * 获取当前有效的会员卡列表 * @param {object} options - 请求选项 { cache: boolean } */ export function getActiveMemberCards(options = { cache: false }) { return request.get('/member-cards/active', {}, options) } /** * 根据ID获取会员卡详情 * @param {number} cardId - 会员卡ID * @param {object} options - 请求选项 { cache: boolean } */ export function getMemberCardById(cardId, options = { cache: false }) { return request.get(`/member-cards/${cardId}`, {}, options) } // ========== 支付密码相关API ========== /** * 检查会员是否已设置支付密码 * @param {number} memberId - 会员ID * @param {object} options - 请求选项 */ export function checkPayPasswordSet(memberId, options = {}) { return request.get(`/pay-password/check/${memberId}`, {}, options) } /** * 设置支付密码 * @param {number} memberId - 会员ID * @param {string} password - 支付密码 * @param {object} options - 请求选项 */ export function setPayPassword(memberId, password, options = {}) { return request.post(`/pay-password/set/${memberId}`, { password }, options) } /** * 验证支付密码 * @param {number} memberId - 会员ID * @param {string} password - 支付密码 * @param {object} options - 请求选项 */ export function verifyPayPassword(memberId, password, options = {}) { return request.post(`/pay-password/verify/${memberId}`, { password }, options) } /** * 重置支付密码 * @param {number} memberId - 会员ID * @param {string} oldPassword - 旧密码 * @param {string} newPassword - 新密码 * @param {object} options - 请求选项 */ export function resetPayPassword(memberId, oldPassword, newPassword, options = {}) { return request.post(`/pay-password/reset/${memberId}`, { oldPassword, newPassword }, options) } // ========== 储值卡相关API ========== /** * 获取储值卡信息(包含余额、消费记录等) * @param {number} memberId - 会员ID * @param {object} options - 请求选项 */ export function getStoredCardInfo(memberId, options = {}) { return request.get(`/stored-card/${memberId}`, {}, options) } /** * 获取储值卡余额 * @param {number} memberId - 会员ID * @param {object} options - 请求选项 */ export function getStoredCardBalance(memberId, options = {}) { return request.get(`/stored-card/${memberId}/balance`, {}, options) } /** * 储值卡支付(验证密码并扣减余额) * @param {number} memberId - 会员ID * @param {string} password - 支付密码 * @param {number} amount - 支付金额 * @param {object} options - 请求选项 */ export function payWithStoredCard(memberId, password, amount, options = {}) { return request.post(`/stored-card/pay/${memberId}`, { password, amount }, options) } /** * 查询储值卡充值记录 * @param {number} memberId - 会员ID * @param {number} page - 页码 * @param {number} size - 每页数量 */ export function getStoredCardRechargeRecords(memberId, page = 1, size = 20, options = {}) { return request.get(`/stored-card/${memberId}/recharges?page=${page}&size=${size}`, {}, options) } // ========== 系统配置相关API ========== /** * 根据配置键获取配置值 * @param {string} configKey - 配置键 * @param {object} options - 请求选项 */ export function getConfigByKey(configKey, options = {}) { return request.get(`/config/key/${configKey}`, {}, options) } // ========== 支付相关API ========== /** * 创建支付订单 * @param {object} params - 支付参数 * @param {number} params.memberId - 会员ID * @param {string} params.orderType - 订单类型 (MEMBER_CARD-会员卡, GROUP_COURSE-团课, GOODS-商品) * @param {string} params.goodsDesc - 商品描述 * @param {string} params.transAmt - 交易金额(单位:分) * @param {string} params.tradeType - 交易类型 (WECHAT-微信, ALIPAY-支付宝) * @param {string} [params.remark] - 备注 * @param {string} [params.acctId] - 账户号 * @param {string} [params.timeExpire] - 过期时间 (yyyyMMddHHmmss) * @param {string} [params.delayAcctFlag] - 延迟入账标识 * @param {number} [params.feeFlag] - 手续费标识 * @param {string} [params.limitPayType] - 禁用支付方式 * @param {string} [params.channelNo] - 渠道号 * @param {string} [params.payScene] - 支付场景 * @param {string} [params.notifyUrl] - 回调通知URL */ export function createPayment(params) { return request.post('/payment/create', params) } /** * 创建扫码支付订单 * @param {object} params - 支付参数 */ export function createQrCodePayment(params) { return request.post('/payment/qrcode/create', params) } /** * 查询支付状态(本地数据库) * @param {string} orderId - 订单ID */ export function getPaymentStatus(orderId) { return request.get(`/payment/${orderId}`, {}) } /** * 查询汇付官方支付状态 * @param {string} outOrdId - 商户订单号 * @param {string} hfSeqId - 汇付全局流水号(可选) */ export function queryHuifuTradeByOrderId(outOrdId, hfSeqId = null) { let url = `/payment/huifu/query?outOrdId=${outOrdId}` if (hfSeqId) { url += `&hfSeqId=${hfSeqId}` } return request.get(url, {}) } /** * 查询待支付订单 * @param {number} memberId - 会员ID * @param {string} orderType - 订单类型 */ export function getPendingOrder(memberId, orderType) { return request.get(`/payment/pending/${memberId}?orderType=${orderType}`, {}) } /** * 关闭订单 * @param {string} orderId - 订单ID */ export function closeOrder(orderId) { return request.post(`/payment/${orderId}/close`, {}) } /** * 申请退款 * @param {string} orderId - 订单ID * @param {string} refundAmt - 退款金额(单位:分) */ export function refundPayment(orderId, refundAmt) { return request.post(`/payment/${orderId}/refund`, { refundAmt }) } // ========== 课程相关API ========== /** * 获取推荐课程列表 * @param {object} options - 请求选项 { cache: boolean, cacheTime: number } */ export function getRecommendCourses(options = { cache: true, cacheTime: 10 * 60 * 1000 }) { return request.get('/course/recommend', {}, options) } /** * 获取课程详情 * @param {number} id - 课程ID * @param {object} options - 请求选项 { cache: boolean, cacheTime: number } */ export function getCourseDetail(id, options = { cache: true, cacheTime: 15 * 60 * 1000 }) { return request.get(`/course/${id}`, {}, options) } /** * 获取团课列表(分页) * @param {object} params - 查询参数 { page: number, size: number, sort: string, order: string, keyword: string } * @param {object} options - 请求选项 { cache: boolean, cacheTime: number } */ export function getGroupCoursePage(params = {}, options = { cache: true, cacheTime: 5 * 60 * 1000 }) { const { page = 0, size = 10, sort = 'id', order = 'asc', keyword } = params return request.post('/groupCourse/page', { page, size, sort, order, keyword }, options) } // ========== 团课预约相关API ========== /** * 预约团课 * @param {object} params - 预约参数 * @param {number} params.courseId - 团课ID * @param {number} params.memberId - 会员ID * @param {number} params.memberCardRecordId - 会员卡记录ID */ export function bookGroupCourse(params) { return request.post('/groupCourse/book', params) } /** * 取消预约 * @param {number} bookingId - 预约ID */ export function cancelBooking(bookingId) { return request.delete(`/groupCourse/book/${bookingId}`, {}) } /** * 团课签到 * @param {number} memberId - 会员ID * @param {number} courseId - 团课ID */ export function signinGroupCourse(memberId, courseId) { return request.post(`/groupCourse/signin/${memberId}`, { courseId }) } /** * 查询会员预约记录 * @param {number} memberId - 会员ID */ export function getMemberBookings(memberId, options = { cache: false }) { return request.get(`/groupCourse/bookings/member/${memberId}`, {}, options) } /** * 查询课程预约记录 * @param {number} courseId - 团课ID */ export function getCourseBookings(courseId, options = { cache: false }) { return request.get(`/groupCourse/bookings/course/${courseId}`, {}, options) } // ========== 轮播图相关API ========== /** * 获取启用的轮播图列表 * @param {object} options - 请求选项 { cache: boolean, cacheTime: number } */ export function getActiveBanners(options = { cache: true, cacheTime: 10 * 60 * 1000 }) { return request.get('/banner/active', {}, options) } export default { login, sendCode, loginWithPhone, oneClickLogin, logout, getQRCode, checkIn, getCheckInRecords, getCheckInStats, getUnreadMessageCount, getUserMessages, getUnreadMessages, markMessageAsRead, markAllMessagesAsRead, deleteMessage, getUserInfo, getMemberDetail, updateUserInfo, purchaseMemberCard, getMyMemberCards, getMyMemberCardsWithStatus, getPrimaryMemberCard, getStoredCardInfo, getStoredCardBalance, payWithStoredCard, getStoredCardRechargeRecords, createPayment, createQrCodePayment, getPaymentStatus, refundPayment, getRecommendCourses, getCourseDetail, getGroupCoursePage, bookGroupCourse, cancelBooking, signinGroupCourse, getMemberBookings, getCourseBookings, getActiveBanners }