86 lines
2.3 KiB
TypeScript
86 lines
2.3 KiB
TypeScript
/**
|
|
* 会员模块接口
|
|
* 包含: 会员状态查询、会员信息、续费等
|
|
*/
|
|
import request from '../utils/request'
|
|
import type { MemberType } from './types'
|
|
|
|
/** 会员信息 */
|
|
export interface MemberInfo {
|
|
/** 会员ID */
|
|
memberId: string
|
|
/** 会员类型 */
|
|
memberType: MemberType
|
|
/** 会员等级名称(如"普通会员"/"高级会员") */
|
|
memberLevel: string
|
|
/** 用户/单位名称 */
|
|
name: string
|
|
/** 手机号 */
|
|
phone: string
|
|
/** 是否已支付 */
|
|
isPaid: boolean
|
|
/** 是否已过期 */
|
|
isExpired: boolean
|
|
/** 开通日期 */
|
|
startDate: string
|
|
/** 到期日期 */
|
|
expireDate: string
|
|
/** 有效期描述 (如 "1年") */
|
|
validPeriod: string
|
|
/** 会员费金额 */
|
|
amount: number
|
|
}
|
|
|
|
/** 会员状态(用于登录后判断跳转) */
|
|
export interface MemberStatus {
|
|
isPaid: boolean
|
|
isExpired: boolean
|
|
memberId: string
|
|
memberType: MemberType
|
|
memberLevel: string
|
|
amount: number
|
|
validPeriod: string
|
|
expireDate: string
|
|
}
|
|
|
|
/** 续费参数 */
|
|
export interface RenewParams {
|
|
memberId: string
|
|
/** 续费时长(月) */
|
|
duration?: number
|
|
}
|
|
|
|
/** 发票抬头提交参数 (接口体) */
|
|
export interface InvoiceTitleDTO {
|
|
/** 发票抬头 (个人姓名 或 单位全称) */
|
|
invoiceTitle?: string
|
|
/** 纳税人识别号 (单位发票填写) */
|
|
invoiceTaxNo?: string
|
|
}
|
|
|
|
/** 获取当前登录会员的信息 */
|
|
export const getCurrentMember = () => request.get<MemberInfo>('/member/current')
|
|
|
|
/** 查询会员状态 */
|
|
export const getMemberStatus = () => request.get<MemberStatus>('/member/status')
|
|
|
|
/** 通过会员ID查询会员信息 */
|
|
export const getMemberById = (memberId: string) =>
|
|
request.get<MemberInfo>(`/member/${memberId}`)
|
|
|
|
/** 申请续费,返回新订单ID */
|
|
export const renewMember = (data: RenewParams) =>
|
|
request.post<{ orderId: string; amount: number }>('/member/renew', data)
|
|
|
|
/**
|
|
* 提交会员发票抬头
|
|
* @url PUT /api/v1/wechat/official-account/members/{memberId}/invoice-title
|
|
* @param memberId 路径参数(后端命名 memberId,实际传入登录接口返回的 userId)
|
|
* @param data { invoiceTitle, invoiceTaxNo }
|
|
* @returns boolean (data 字段,true 表示提交成功)
|
|
*/
|
|
export const submitInvoiceTitle = (
|
|
memberId: string,
|
|
data: InvoiceTitleDTO,
|
|
) => request.put<boolean>(`/members/${memberId}/invoice-title`, data)
|