模块名称:business-member
版本:3.0.1
更新日期:2026-01-24
基础路径:/mobile/模块名/类名
适用端:APP、小程序、H5
/mobile/模块名/类名/操作
说明:
membermember、auth/mobile/member/auth/loginByMobile| 项目 | 规范 |
|---|---|
| Content-Type | application/json;charset=UTF-8 |
| Authorization | Bearer {token}(登录后必传) |
| X-Device-Id | 设备唯一标识(建议传递) |
| X-Platform | 平台标识:APP、MINI、H5 |
| X-Version | 客户端版本号 |
{
"code": 200,
"msg": "success",
"data": {},
"requestId": "链路追踪ID"
}
| 状态码 | 说明 |
|---|---|
| 200 | 成功 |
| 400 | 参数错误 |
| 401 | 未登录/Token过期 |
| 403 | 无权限 |
| 404 | 资源不存在 |
| 500 | 服务器错误 |
| 1001 | 验证码错误 |
| 1002 | 验证码已过期 |
| 1003 | 账号已被禁用 |
| 1004 | 账号不存在 |
| 1005 | 密码错误 |
模块路径:
/mobile/member/auth
接口地址:POST /mobile/member/auth/sendSmsCode
请求参数:
{
"mobile": "13812345678",
"scene": "LOGIN"
}
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| mobile | String | 是 | 手机号 |
| scene | String | 是 | 场景:LOGIN-登录、REGISTER-注册、RESET_PWD-重置密码、BIND-绑定手机 |
响应示例:
{
"code": 200,
"msg": "验证码已发送",
"data": {
"expireSeconds": 300
},
"requestId": "abc123"
}
接口地址:POST /mobile/member/auth/loginByMobile
请求参数:
{
"mobile": "13812345678",
"smsCode": "123456",
"inviteCode": "ABC123",
"deviceId": "device_xxx",
"platform": "APP"
}
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| mobile | String | 是 | 手机号 |
| smsCode | String | 是 | 短信验证码 |
| inviteCode | String | 否 | 邀请码(新用户首次登录时可传) |
| deviceId | String | 否 | 设备ID |
| platform | String | 否 | 平台:APP、MINI、H5 |
响应示例:
{
"code": 200,
"msg": "登录成功",
"data": {
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"tokenType": "Bearer",
"expiresIn": 604800,
"refreshToken": "refresh_token_xxx",
"isNewUser": false,
"memberId": "1234567890",
"memberNo": "M202601240001",
"nickname": "用户昵称",
"avatar": "https://xxx.com/avatar.jpg",
"mobile": "138****5678"
},
"requestId": "abc123"
}
接口地址:POST /mobile/member/auth/loginByPassword
请求参数:
{
"account": "13812345678",
"password": "加密后的密码",
"deviceId": "device_xxx",
"platform": "APP"
}
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| account | String | 是 | 账号(手机号/邮箱) |
| password | String | 是 | 密码(RSA加密后的密文) |
| deviceId | String | 否 | 设备ID |
| platform | String | 否 | 平台 |
响应示例:
{
"code": 200,
"msg": "登录成功",
"data": {
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"tokenType": "Bearer",
"expiresIn": 604800,
"refreshToken": "refresh_token_xxx",
"memberId": "1234567890",
"memberNo": "M202601240001",
"nickname": "用户昵称",
"avatar": "https://xxx.com/avatar.jpg",
"mobile": "138****5678"
},
"requestId": "abc123"
}
接口地址:POST /mobile/member/auth/loginByWechatMini
请求参数:
{
"code": "wx_code_xxx",
"encryptedData": "加密数据",
"iv": "初始向量",
"inviteCode": "ABC123"
}
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| code | String | 是 | 微信登录code(wx.login获取) |
| encryptedData | String | 否 | 加密用户数据(获取手机号时需要) |
| iv | String | 否 | 加密初始向量 |
| inviteCode | String | 否 | 邀请码 |
响应示例:
{
"code": 200,
"msg": "登录成功",
"data": {
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"tokenType": "Bearer",
"expiresIn": 604800,
"refreshToken": "refresh_token_xxx",
"isNewUser": true,
"needBindMobile": true,
"memberId": "1234567890",
"memberNo": "M202601240001",
"nickname": "微信用户",
"avatar": "https://xxx.com/avatar.jpg",
"openid": "oXXXX"
},
"requestId": "abc123"
}
接口地址:POST /mobile/member/auth/loginByWechatApp
请求参数:
{
"code": "wx_oauth_code",
"inviteCode": "ABC123"
}
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| code | String | 是 | 微信OAuth授权code |
| inviteCode | String | 否 | 邀请码 |
响应示例:同 2.4
接口地址:POST /mobile/member/auth/loginByWechatMp
请求参数:
{
"code": "wx_oauth_code",
"inviteCode": "ABC123"
}
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| code | String | 是 | 微信网页授权code |
| inviteCode | String | 否 | 邀请码 |
响应示例:同 2.4
接口地址:POST /mobile/member/auth/loginByAlipay
请求参数:
{
"authCode": "alipay_auth_code",
"inviteCode": "ABC123"
}
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| authCode | String | 是 | 支付宝授权码 |
| inviteCode | String | 否 | 邀请码 |
响应示例:
{
"code": 200,
"msg": "登录成功",
"data": {
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"tokenType": "Bearer",
"expiresIn": 604800,
"isNewUser": false,
"needBindMobile": false,
"memberId": "1234567890",
"nickname": "支付宝用户",
"avatar": "https://xxx.com/avatar.jpg"
},
"requestId": "abc123"
}
接口地址:POST /mobile/member/auth/loginByApple
请求参数:
{
"identityToken": "apple_identity_token",
"authorizationCode": "apple_auth_code",
"fullName": {
"familyName": "张",
"givenName": "三"
},
"inviteCode": "ABC123"
}
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| identityToken | String | 是 | Apple Identity Token |
| authorizationCode | String | 是 | Apple Authorization Code |
| fullName | Object | 否 | 用户姓名(首次授权时返回) |
| inviteCode | String | 否 | 邀请码 |
响应示例:同 2.4
接口地址:POST /mobile/member/auth/loginByHuawei
请求参数:
{
"authCode": "huawei_auth_code",
"inviteCode": "ABC123"
}
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| authCode | String | 是 | 华为授权码 |
| inviteCode | String | 否 | 邀请码 |
响应示例:同 2.4
接口地址:POST /mobile/member/auth/loginByQQ
请求参数:
{
"accessToken": "qq_access_token",
"openId": "qq_openid",
"inviteCode": "ABC123"
}
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| accessToken | String | 是 | QQ AccessToken |
| openId | String | 是 | QQ OpenID |
| inviteCode | String | 否 | 邀请码 |
响应示例:同 2.4
接口地址:POST /mobile/member/auth/loginByWeibo
请求参数:
{
"accessToken": "weibo_access_token",
"uid": "weibo_uid",
"inviteCode": "ABC123"
}
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| accessToken | String | 是 | 微博AccessToken |
| uid | String | 是 | 微博UID |
| inviteCode | String | 否 | 邀请码 |
响应示例:同 2.4
接口地址:POST /mobile/member/auth/loginByDouyin
请求参数:
{
"code": "douyin_auth_code",
"inviteCode": "ABC123"
}
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| code | String | 是 | 抖音授权码 |
| inviteCode | String | 否 | 邀请码 |
响应示例:同 2.4
接口地址:POST /mobile/member/auth/loginByOneClick
请求参数:
{
"token": "运营商一键登录token",
"operator": "CMCC",
"inviteCode": "ABC123"
}
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| token | String | 是 | 运营商返回的token |
| operator | String | 是 | 运营商:CMCC-移动、CUCC-联通、CTCC-电信 |
| inviteCode | String | 否 | 邀请码 |
响应示例:同 2.2
接口地址:POST /mobile/member/userCenter/refreshToken
请求参数:
{
"refreshToken": "refresh_token_xxx"
}
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| refreshToken | String | 是 | 刷新令牌 |
响应示例:
{
"code": 200,
"msg": "刷新成功",
"data": {
"token": "new_access_token",
"tokenType": "Bearer",
"expiresIn": 604800,
"refreshToken": "new_refresh_token"
},
"requestId": "abc123"
}
接口地址:POST /mobile/member/userCenter/logout
请求头:需要 Authorization
响应示例:
{
"code": 200,
"msg": "退出成功",
"data": null,
"requestId": "abc123"
}
接口地址:POST /mobile/member/userCenter/cancel
请求头:需要 Authorization
请求参数:
{
"smsCode": "123456",
"reason": "不再使用"
}
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| smsCode | String | 是 | 短信验证码 |
| reason | String | 否 | 注销原因 |
响应示例:
{
"code": 200,
"msg": "账号已注销",
"data": null,
"requestId": "abc123"
}
接口地址:POST /mobile/member/auth/bindMobile
请求头:需要 Authorization
请求参数:
{
"mobile": "13812345678",
"smsCode": "123456"
}
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| mobile | String | 是 | 手机号 |
| smsCode | String | 是 | 短信验证码 |
响应示例:
{
"code": 200,
"msg": "绑定成功",
"data": {
"mobile": "138****5678"
},
"requestId": "abc123"
}
接口地址:POST /mobile/member/userCenter/changePassword
请求头:需要 Authorization
请求参数:
{
"oldPassword": "加密后的旧密码",
"newPassword": "加密后的新密码"
}
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| oldPassword | String | 是 | 旧密码(RSA加密) |
| newPassword | String | 是 | 新密码(RSA加密) |
响应示例:
{
"code": 200,
"msg": "密码修改成功",
"data": null,
"requestId": "abc123"
}
接口地址:POST /mobile/member/auth/resetPassword
请求参数:
{
"mobile": "13812345678",
"smsCode": "123456",
"newPassword": "加密后的新密码"
}
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| mobile | String | 是 | 手机号 |
| smsCode | String | 是 | 短信验证码 |
| newPassword | String | 是 | 新密码(RSA加密) |
响应示例:
{
"code": 200,
"msg": "密码重置成功",
"data": null,
"requestId": "abc123"
}
接口地址:GET /mobile/member/auth/publicKey
响应示例:
{
"code": 200,
"msg": "success",
"data": {
"publicKey": "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQ..."
},
"requestId": "abc123"
}
模块路径:
/mobile/member/member
接口地址:GET /mobile/member/member/info
请求头:需要 Authorization
响应示例:
{
"code": 200,
"msg": "success",
"data": {
"memberId": "1234567890",
"memberNo": "M202601240001",
"nickname": "用户昵称",
"realName": "张三",
"avatar": "https://xxx.com/avatar.jpg",
"gender": 1,
"mobile": "138****5678",
"email": "test@example.com",
"birthday": "1990-01-15",
"province": "广东省",
"city": "深圳市",
"district": "南山区",
"levelCode": "GOLD",
"levelName": "黄金会员",
"levelIcon": "https://xxx.com/gold.png",
"growthValue": 5680,
"nextLevelName": "铂金会员",
"nextLevelGrowth": 20000,
"availablePoints": 1280,
"balance": 150.00,
"couponCount": 5,
"isRealName": 1,
"isCompleteProfile": 1,
"inviteCode": "ABC123",
"inviteCount": 12,
"registerDate": "2026-01-15 10:30:00"
},
"requestId": "abc123"
}
接口地址:POST /mobile/member/member/update
请求头:需要 Authorization
请求参数:
{
"nickname": "新昵称",
"avatar": "https://xxx.com/new_avatar.jpg",
"gender": 1,
"birthday": "1990-01-15",
"province": "广东省",
"city": "深圳市",
"district": "南山区"
}
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| nickname | String | 否 | 昵称 |
| avatar | String | 否 | 头像URL |
| gender | Integer | 否 | 性别:0-未知 1-男 2-女 |
| birthday | String | 否 | 生日(yyyy-MM-dd) |
| province | String | 否 | 省份 |
| city | String | 否 | 城市 |
| district | String | 否 | 区县 |
响应示例:
{
"code": 200,
"msg": "更新成功",
"data": null,
"requestId": "abc123"
}
接口地址:POST /mobile/member/member/realNameAuth
请求头:需要 Authorization
请求参数:
{
"realName": "张三",
"idCard": "加密后的身份证号"
}
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| realName | String | 是 | 真实姓名 |
| idCard | String | 是 | 身份证号(RSA加密) |
响应示例:
{
"code": 200,
"msg": "实名认证成功",
"data": {
"isRealName": 1
},
"requestId": "abc123"
}
接口地址:GET /mobile/member/member/levelInfo
请求头:需要 Authorization
响应示例:
{
"code": 200,
"msg": "success",
"data": {
"currentLevel": {
"levelCode": "GOLD",
"levelName": "黄金会员",
"levelIcon": "https://xxx.com/gold.png",
"discountRate": 0.95,
"pointsRate": 1.5,
"privileges": ["95折优惠", "1.5倍积分", "生日200积分"]
},
"growthValue": 5680,
"nextLevel": {
"levelCode": "PLATINUM",
"levelName": "铂金会员",
"levelIcon": "https://xxx.com/platinum.png",
"minGrowthValue": 20000,
"remainGrowth": 14320
},
"allLevels": [
{
"levelCode": "NORMAL",
"levelName": "普通会员",
"minGrowthValue": 0
},
{
"levelCode": "SILVER",
"levelName": "白银会员",
"minGrowthValue": 1000
},
{
"levelCode": "GOLD",
"levelName": "黄金会员",
"minGrowthValue": 5000
},
{
"levelCode": "PLATINUM",
"levelName": "铂金会员",
"minGrowthValue": 20000
},
{
"levelCode": "DIAMOND",
"levelName": "钻石会员",
"minGrowthValue": 50000
}
]
},
"requestId": "abc123"
}
接口地址:GET /mobile/member/member/inviteInfo
请求头:需要 Authorization
响应示例:
{
"code": 200,
"msg": "success",
"data": {
"inviteCode": "ABC123",
"inviteUrl": "https://xxx.com/invite?code=ABC123",
"inviteQrCode": "https://xxx.com/qrcode/ABC123.png",
"inviteCount": 12,
"inviteRewardPoints": 1200,
"inviteRules": [
"邀请好友注册成功,双方各获100积分",
"被邀请人首单消费后,邀请人额外获200积分"
]
},
"requestId": "abc123"
}
接口地址:POST /mobile/member/member/inviteList
请求头:需要 Authorization
请求参数:
{
"pageNo": 1,
"pageSize": 10
}
响应示例:
{
"code": 200,
"msg": "success",
"data": {
"pageNo": 1,
"pageSize": 10,
"totalCount": 12,
"totalPage": 2,
"list": [
{
"memberId": "xxx",
"nickname": "被邀请人1",
"avatar": "https://xxx.com/avatar1.jpg",
"registerDate": "2026-01-20 15:30:00",
"rewardPoints": 100,
"hasFirstOrder": true
}
]
},
"requestId": "abc123"
}
模块路径:
/mobile/member/points
接口地址:GET /mobile/member/points/summary
请求头:需要 Authorization
响应示例:
{
"code": 200,
"msg": "success",
"data": {
"availablePoints": 1280,
"frozenPoints": 100,
"totalPoints": 5680,
"usedPoints": 4200,
"expiredPoints": 100,
"expiringSoonPoints": 200,
"expiringSoonDate": "2026-03-31"
},
"requestId": "abc123"
}
接口地址:POST /mobile/member/points/list
请求头:需要 Authorization
请求参数:
{
"pageNo": 1,
"pageSize": 10,
"pointsType": 1,
"startDate": "2026-01-01",
"endDate": "2026-01-31"
}
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| pageNo | Integer | 否 | 页码 |
| pageSize | Integer | 否 | 每页条数 |
| pointsType | Integer | 否 | 积分类型:1-获取 2-消费 |
| startDate | String | 否 | 开始日期 |
| endDate | String | 否 | 结束日期 |
响应示例:
{
"code": 200,
"msg": "success",
"data": {
"pageNo": 1,
"pageSize": 10,
"totalCount": 56,
"totalPage": 6,
"list": [
{
"id": "xxx",
"pointsType": 1,
"pointsTypeName": "获取",
"points": 100,
"bizType": "CONSUME",
"bizTypeName": "消费获取",
"bizDesc": "订单消费获得积分",
"createDate": "2026-01-24 10:30:00"
}
]
},
"requestId": "abc123"
}
接口地址:POST /mobile/member/points/signIn
请求方式:POST(无请求体或空 JSON {} 均可)
请求头:需登录态(access_token / Authorization / satoken,与项目移动端鉴权一致)
业务说明:
MemberSignInStreakBonusEnum 一致)。app_member_sign_in_record(member_id + sign_date 唯一),并通过 MemberService.addPoints 增加可用积分(biz_type = SIGN_IN)。响应 data 字段:
| 字段 | 类型 | 说明 |
|---|---|---|
| points | int | 本次发放积分合计(基础+额外) |
| continuousDays | int | 当前连续签到天数(含今日) |
| totalSignDays | int | 历史累计签到天数(含今日) |
| todaySigned | bool | 成功后为 true |
| extraReward | object | 额外奖励;无额外分时 hasExtra 为 false |
| extraReward.extraPoints | int | 额外积分(不含基础 10 分) |
| extraReward.reason | string | 奖励说明文案 |
响应示例:
{
"code": 200,
"msg": "签到成功",
"data": {
"points": 60,
"continuousDays": 5,
"totalSignDays": 30,
"todaySigned": true,
"extraReward": {
"hasExtra": true,
"extraPoints": 50,
"reason": "连续签到5天额外奖励"
}
},
"requestId": "abc123"
}
常见错误:msg 为「今日已签到」「会员不存在」等(HTTP 200,code 非 200 时以前端统一拦截为准)。
接口地址:GET /mobile/member/points/signInStatus
请求头:需登录态
响应 data 字段:
| 字段 | 类型 | 说明 |
|---|---|---|
| todaySigned | bool | 当日是否已签到 |
| continuousDays | int | 已签:含今日的连续天数;未签:截至昨日的连续天数 |
| totalSignDays | int | 累计签到天数 |
| monthSignDays | int[] | 本月已签到的日号(1–31),用于日历打点 |
| signRules | array | 展示用规则:连续天数门槛 day、该档当日可获得总积分 points(含基础分) |
响应示例:
{
"code": 200,
"msg": "success",
"data": {
"todaySigned": false,
"continuousDays": 4,
"totalSignDays": 29,
"monthSignDays": [1, 2, 3, 5, 8, 10, 15, 20, 21, 22, 23],
"signRules": [
{"day": 1, "points": 10},
{"day": 3, "points": 20},
{"day": 5, "points": 60},
{"day": 7, "points": 100}
]
},
"requestId": "abc123"
}
接口地址:POST /mobile/member/points/signInRecord/list
请求头:需登录态
请求体(可空,缺省时按第 1 页、默认每页条数):
{
"pageNo": 1,
"pageSize": 20
}
说明:仅返回当前登录会员的签到记录,按签到自然日倒序;请求体中的 memberId 若传入也会被忽略,以 Token 解析出的会员为准。
响应 data 字段(分页结构同框架 PageRespVO):
| 字段 | 类型 | 说明 |
|---|---|---|
| total | long | 总条数 |
| pageNo | long | 当前页 |
| pageSize | long | 每页条数 |
| records | array | 列表项 |
records[] 单项:
| 字段 | 类型 | 说明 |
|---|---|---|
| id | string | 记录主键 |
| signDate | string | 签到自然日(yyyy-MM-dd) |
| continuousDays | int | 截至当次连续签到天数 |
| basePoints | int | 基础积分 |
| bonusPoints | int | 连续签到额外积分 |
| totalPoints | int | 本次发放积分合计 |
模块路径:
/mobile/member/coupon
接口地址:POST /mobile/member/coupon/available
请求参数:
{
"pageNo": 1,
"pageSize": 10
}
响应示例:
{
"code": 200,
"msg": "success",
"data": {
"pageNo": 1,
"pageSize": 10,
"totalCount": 5,
"list": [
{
"templateId": "xxx",
"couponName": "新人专享券",
"couponType": 1,
"couponTypeName": "满减券",
"discountType": 1,
"discountValue": 20.00,
"minConsumeAmount": 100.00,
"validStartDate": "2026-01-01",
"validEndDate": "2026-03-31",
"remainCount": 100,
"isReceived": false,
"perMemberLimit": 1,
"receivedCount": 0
}
]
},
"requestId": "abc123"
}
接口地址:POST /mobile/member/coupon/receive
请求头:需要 Authorization
请求参数:
{
"templateId": "xxx"
}
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| templateId | String | 是 | 优惠券模板ID |
响应示例:
{
"code": 200,
"msg": "领取成功",
"data": {
"couponId": "xxx",
"couponSn": "COUPON202601240001",
"couponName": "新人专享券",
"validEndDate": "2026-03-31"
},
"requestId": "abc123"
}
接口地址:POST /mobile/member/coupon/my
请求头:需要 Authorization
请求参数:
{
"pageNo": 1,
"pageSize": 10,
"status": 0
}
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| pageNo | Integer | 否 | 页码 |
| pageSize | Integer | 否 | 每页条数 |
| status | Integer | 否 | 状态:0-未使用 1-已使用 2-已过期 |
响应示例:
{
"code": 200,
"msg": "success",
"data": {
"pageNo": 1,
"pageSize": 10,
"totalCount": 5,
"list": [
{
"couponId": "xxx",
"couponSn": "COUPON202601240001",
"couponName": "满100减20",
"couponType": 1,
"couponTypeName": "满减券",
"discountType": 1,
"discountValue": 20.00,
"minConsumeAmount": 100.00,
"validStartDate": "2026-01-01",
"validEndDate": "2026-03-31",
"status": 0,
"statusName": "未使用",
"useScope": 1,
"useScopeName": "全场通用"
}
]
},
"requestId": "abc123"
}
接口地址:GET /mobile/member/coupon/detail
请求头:需要 Authorization
请求参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| couponId | String | 是 | 优惠券ID |
响应示例:
{
"code": 200,
"msg": "success",
"data": {
"couponId": "xxx",
"couponSn": "COUPON202601240001",
"couponName": "满100减20",
"couponType": 1,
"discountValue": 20.00,
"minConsumeAmount": 100.00,
"validStartDate": "2026-01-01",
"validEndDate": "2026-03-31",
"status": 0,
"useScope": 1,
"description": "全场通用,不可与其他优惠叠加使用",
"usePlatforms": ["APP", "MINI", "H5"]
},
"requestId": "abc123"
}
接口地址:POST /mobile/member/coupon/usable
请求头:需要 Authorization
请求参数:
{
"orderAmount": 200.00,
"productIds": ["p001", "p002"],
"categoryIds": ["c001"]
}
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| orderAmount | Number | 是 | 订单金额 |
| productIds | Array | 否 | 商品ID列表 |
| categoryIds | Array | 否 | 分类ID列表 |
响应示例:
{
"code": 200,
"msg": "success",
"data": {
"usableCoupons": [
{
"couponId": "xxx",
"couponName": "满100减20",
"discountValue": 20.00,
"minConsumeAmount": 100.00,
"validEndDate": "2026-03-31"
}
],
"unusableCoupons": [
{
"couponId": "yyy",
"couponName": "满500减100",
"discountValue": 100.00,
"minConsumeAmount": 500.00,
"reason": "订单金额未满500元"
}
]
},
"requestId": "abc123"
}
接口地址:POST /mobile/member/coupon/exchange
请求头:需要 Authorization
请求参数:
{
"templateId": "xxx"
}
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| templateId | String | 是 | 优惠券模板ID |
响应示例:
{
"code": 200,
"msg": "兑换成功",
"data": {
"couponId": "xxx",
"couponName": "50元无门槛券",
"deductPoints": 500,
"remainPoints": 780
},
"requestId": "abc123"
}
模块路径:
/mobile/member/balance
接口地址:GET /mobile/member/balance/summary
请求头:需要 Authorization
响应示例:
{
"code": 200,
"msg": "success",
"data": {
"balance": 150.00,
"frozenBalance": 0.00,
"totalRecharge": 500.00,
"totalConsume": 350.00
},
"requestId": "abc123"
}
接口地址:POST /mobile/member/balance/list
请求头:需要 Authorization
请求参数:
{
"pageNo": 1,
"pageSize": 10,
"balanceType": 1
}
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| pageNo | Integer | 否 | 页码 |
| pageSize | Integer | 否 | 每页条数 |
| balanceType | Integer | 否 | 变动类型:1-充值 2-消费 3-退款 |
响应示例:
{
"code": 200,
"msg": "success",
"data": {
"pageNo": 1,
"pageSize": 10,
"totalCount": 20,
"list": [
{
"id": "xxx",
"balanceType": 1,
"balanceTypeName": "充值",
"amount": 100.00,
"afterBalance": 150.00,
"bizDesc": "余额充值",
"createDate": "2026-01-24 10:30:00"
}
]
},
"requestId": "abc123"
}
接口地址:POST /mobile/member/balance/recharge
请求头:需要 Authorization
请求参数:
{
"amount": 100.00,
"payChannel": "WECHAT"
}
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| amount | Number | 是 | 充值金额 |
| payChannel | String | 是 | 支付渠道:WECHAT-微信 ALIPAY-支付宝 |
响应示例:
{
"code": 200,
"msg": "下单成功",
"data": {
"orderId": "xxx",
"orderNo": "R202601240001",
"amount": 100.00,
"payParams": {
"appId": "wx123456",
"timeStamp": "1706083200",
"nonceStr": "xxx",
"package": "prepay_id=xxx",
"signType": "RSA",
"paySign": "xxx"
}
},
"requestId": "abc123"
}
模块路径:
/mobile/member/growth
接口地址:POST /mobile/member/growth/list
请求头:需要 Authorization
请求参数:
{
"pageNo": 1,
"pageSize": 10
}
响应示例:
{
"code": 200,
"msg": "success",
"data": {
"pageNo": 1,
"pageSize": 10,
"totalCount": 30,
"list": [
{
"id": "xxx",
"growthType": 1,
"growthTypeName": "获取",
"growthValue": 100,
"bizType": "CONSUME",
"bizTypeName": "消费",
"bizDesc": "订单消费获得成长值",
"isUpgrade": false,
"createDate": "2026-01-24 10:30:00"
}
]
},
"requestId": "abc123"
}
模块路径:
/mobile/member/message
接口地址:POST /mobile/member/message/list
请求头:需要 Authorization
请求参数:
{
"pageNo": 1,
"pageSize": 10,
"msgType": "SYSTEM"
}
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| pageNo | Integer | 否 | 页码 |
| pageSize | Integer | 否 | 每页条数 |
| msgType | String | 否 | 消息类型:SYSTEM-系统 ORDER-订单 ACTIVITY-活动 |
响应示例:
{
"code": 200,
"msg": "success",
"data": {
"pageNo": 1,
"pageSize": 10,
"totalCount": 15,
"list": [
{
"id": "xxx",
"title": "积分到账通知",
"content": "您获得100积分奖励",
"msgType": "SYSTEM",
"isRead": false,
"createDate": "2026-01-24 10:30:00"
}
]
},
"requestId": "abc123"
}
接口地址:GET /mobile/member/message/unreadCount
请求头:需要 Authorization
响应示例:
{
"code": 200,
"msg": "success",
"data": {
"total": 5,
"system": 2,
"order": 3,
"activity": 0
},
"requestId": "abc123"
}
接口地址:POST /mobile/member/message/read
请求头:需要 Authorization
请求参数:
{
"messageIds": ["id1", "id2"]
}
响应示例:
{
"code": 200,
"msg": "标记成功",
"data": null,
"requestId": "abc123"
}
接口地址:POST /mobile/member/message/readAll
请求头:需要 Authorization
请求参数:
{
"msgType": "SYSTEM"
}
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| msgType | String | 否 | 消息类型,不传则全部标记 |
响应示例:
{
"code": 200,
"msg": "全部标记已读",
"data": null,
"requestId": "abc123"
}
说明:基础路径为
/mobile,完整示例:/mobile/member/auth/loginByMobile
| 操作 | 方法 | 接口地址 |
|---|---|---|
| 发送验证码 | POST | /mobile/member/auth/sendSmsCode |
| 手机验证码登录 | POST | /mobile/member/auth/loginByMobile |
| 账号密码登录 | POST | /mobile/member/auth/loginByPassword |
| 微信小程序登录 | POST | /mobile/member/auth/loginByWechatMini |
| 微信APP登录 | POST | /mobile/member/auth/loginByWechatApp |
| 微信公众号登录 | POST | /mobile/member/auth/loginByWechatMp |
| 支付宝登录 | POST | /mobile/member/auth/loginByAlipay |
| 苹果登录 | POST | /mobile/member/auth/loginByApple |
| 华为登录 | POST | /mobile/member/auth/loginByHuawei |
| QQ登录 | POST | /mobile/member/auth/loginByQQ |
| 微博登录 | POST | /mobile/member/auth/loginByWeibo |
| 抖音登录 | POST | /mobile/member/auth/loginByDouyin |
| 一键登录 | POST | /mobile/member/auth/loginByOneClick |
| 刷新Token | POST | /mobile/member/userCenter/refreshToken |
| 退出登录 | POST | /mobile/member/userCenter/logout |
| 注销账号 | POST | /mobile/member/userCenter/cancel |
| 绑定手机号 | POST | /mobile/member/auth/bindMobile |
| 修改密码 | POST | /mobile/member/userCenter/changePassword |
| 重置密码 | POST | /mobile/member/auth/resetPassword |
| 获取加密公钥 | GET | /mobile/member/auth/publicKey |
| 操作 | 方法 | 接口地址 |
|---|---|---|
| 获取会员信息 | GET | /mobile/member/member/info |
| 更新会员信息 | POST | /mobile/member/member/update |
| 实名认证 | POST | /mobile/member/member/realNameAuth |
| 获取等级详情 | GET | /mobile/member/member/levelInfo |
| 获取邀请信息 | GET | /mobile/member/member/inviteInfo |
| 获取邀请记录 | POST | /mobile/member/member/inviteList |
| 操作 | 方法 | 接口地址 |
|---|---|---|
| 获取积分概览 | GET | /mobile/member/points/summary |
| 获取积分流水 | POST | /mobile/member/points/list |
| 签到 | POST | /mobile/member/points/signIn |
| 获取签到状态 | GET | /mobile/member/points/signInStatus |
| 签到记录(分页) | POST | /mobile/member/points/signInRecord/list |
| 操作 | 方法 | 接口地址 |
|---|---|---|
| 可领取优惠券列表 | POST | /mobile/member/coupon/available |
| 领取优惠券 | POST | /mobile/member/coupon/receive |
| 我的优惠券列表 | POST | /mobile/member/coupon/my |
| 优惠券详情 | GET | /mobile/member/coupon/detail?couponId=xxx |
| 订单可用优惠券 | POST | /mobile/member/coupon/usable |
| 积分兑换优惠券 | POST | /mobile/member/coupon/exchange |
| 操作 | 方法 | 接口地址 |
|---|---|---|
| 获取余额概览 | GET | /mobile/member/balance/summary |
| 获取余额流水 | POST | /mobile/member/balance/list |
| 余额充值下单 | POST | /mobile/member/balance/recharge |
| 操作 | 方法 | 接口地址 |
|---|---|---|
| 获取成长值流水 | POST | /mobile/member/growth/list |
| 操作 | 方法 | 接口地址 |
|---|---|---|
| 获取消息列表 | POST | /mobile/member/message/list |
| 获取未读消息数 | GET | /mobile/member/message/unreadCount |
| 标记消息已读 | POST | /mobile/member/message/read |
| 全部标记已读 | POST | /mobile/member/message/readAll |
| 值 | 说明 |
|---|---|
| MOBILE | 手机验证码 |
| PASSWORD | 账号密码 |
| WECHAT_MINI | 微信小程序 |
| WECHAT_APP | 微信APP |
| WECHAT_MP | 微信公众号 |
| ALIPAY | 支付宝 |
| APPLE | 苹果登录 |
| HUAWEI | 华为账号 |
| QQ登录 | |
| 微博登录 | |
| DOUYIN | 抖音登录 |
| ONE_CLICK | 一键登录 |
| 值 | 说明 |
|---|---|
| LOGIN | 登录 |
| REGISTER | 注册 |
| RESET_PWD | 重置密码 |
| BIND | 绑定手机 |
| 值 | 说明 |
|---|---|
| 0 | 未知 |
| 1 | 男 |
| 2 | 女 |
| 值 | 说明 |
|---|---|
| NORMAL | 普通会员 |
| SILVER | 白银会员 |
| GOLD | 黄金会员 |
| PLATINUM | 铂金会员 |
| DIAMOND | 钻石会员 |
| 值 | 说明 |
|---|---|
| 1 | 获取 |
| 2 | 消费 |
| 3 | 冻结 |
| 4 | 解冻 |
| 5 | 过期 |
| 6 | 调整 |
| 值 | 说明 |
|---|---|
| 0 | 未使用 |
| 1 | 已使用 |
| 2 | 已过期 |
| 3 | 已冻结 |
| 4 | 已作废 |
| 值 | 说明 |
|---|---|
| 1 | 满减券 |
| 2 | 折扣券 |
| 3 | 无门槛券 |
| 4 | 兑换券 |
| 值 | 说明 |
|---|---|
| 1 | 充值 |
| 2 | 消费 |
| 3 | 退款 |
| 4 | 冻结 |
| 5 | 解冻 |
| 6 | 提现 |
| 7 | 调整 |
| 值 | 说明 |
|---|---|
| 微信支付 | |
| ALIPAY | 支付宝 |
| BALANCE | 余额支付 |
| BANK | 银行卡 |
| 值 | 说明 |
|---|---|
| SYSTEM | 系统消息 |
| ORDER | 订单消息 |
| ACTIVITY | 活动消息 |
| POINTS | 积分消息 |
| COUPON | 优惠券消息 |
| 值 | 说明 |
|---|---|
| APP | 手机APP |
| MINI | 微信小程序 |
| H5 | H5网页 |
| 版本 | 日期 | 更新内容 |
|---|---|---|
| 3.0.1 | 2026-01-24 | 初始版本,包含登录认证、会员信息、积分、优惠券、余额、成长值、消息通知接口 |