# 会员管理模块移动端接口文档 > **模块名称**:business-member > **版本**:3.0.1 > **更新日期**:2026-01-24 > **基础路径**:`/mobile/模块名/类名` > **适用端**:APP、小程序、H5 --- ## 一、接口规范 ### 1.1 URL 格式规范 ``` /mobile/模块名/类名/操作 ``` **说明**: - **模块名**:业务模块标识,如 `member` - **类名**:实体类名(驼峰命名),如 `member`、`auth` - 完整路径示例:`/mobile/member/auth/loginByMobile` ### 1.2 请求规范 | 项目 | 规范 | |------|------| | **Content-Type** | `application/json;charset=UTF-8` | | **Authorization** | `Bearer {token}`(登录后必传) | | **X-Device-Id** | 设备唯一标识(建议传递) | | **X-Platform** | 平台标识:`APP`、`MINI`、`H5` | | **X-Version** | 客户端版本号 | ### 1.3 响应格式 ```json { "code": 200, "msg": "success", "data": {}, "requestId": "链路追踪ID" } ``` ### 1.4 状态码说明 | 状态码 | 说明 | |--------|------| | 200 | 成功 | | 400 | 参数错误 | | 401 | 未登录/Token过期 | | 403 | 无权限 | | 404 | 资源不存在 | | 500 | 服务器错误 | | 1001 | 验证码错误 | | 1002 | 验证码已过期 | | 1003 | 账号已被禁用 | | 1004 | 账号不存在 | | 1005 | 密码错误 | --- ## 二、登录认证接口(Auth) > **模块路径**:`/mobile/member/auth` ### 2.1 发送短信验证码 **接口地址**:`POST /mobile/member/auth/sendSmsCode` **请求参数**: ```json { "mobile": "13812345678", "scene": "LOGIN" } ``` | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | mobile | String | 是 | 手机号 | | scene | String | 是 | 场景:`LOGIN`-登录、`REGISTER`-注册、`RESET_PWD`-重置密码、`BIND`-绑定手机 | **响应示例**: ```json { "code": 200, "msg": "验证码已发送", "data": { "expireSeconds": 300 }, "requestId": "abc123" } ``` --- ### 2.2 手机验证码登录 **接口地址**:`POST /mobile/member/auth/loginByMobile` **请求参数**: ```json { "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` | **响应示例**: ```json { "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" } ``` --- ### 2.3 账号密码登录 **接口地址**:`POST /mobile/member/auth/loginByPassword` **请求参数**: ```json { "account": "13812345678", "password": "加密后的密码", "deviceId": "device_xxx", "platform": "APP" } ``` | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | account | String | 是 | 账号(手机号/邮箱) | | password | String | 是 | 密码(RSA加密后的密文) | | deviceId | String | 否 | 设备ID | | platform | String | 否 | 平台 | **响应示例**: ```json { "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" } ``` --- ### 2.4 微信登录(小程序) **接口地址**:`POST /mobile/member/auth/loginByWechatMini` **请求参数**: ```json { "code": "wx_code_xxx", "encryptedData": "加密数据", "iv": "初始向量", "inviteCode": "ABC123" } ``` | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | code | String | 是 | 微信登录code(wx.login获取) | | encryptedData | String | 否 | 加密用户数据(获取手机号时需要) | | iv | String | 否 | 加密初始向量 | | inviteCode | String | 否 | 邀请码 | **响应示例**: ```json { "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" } ``` --- ### 2.5 微信登录(APP) **接口地址**:`POST /mobile/member/auth/loginByWechatApp` **请求参数**: ```json { "code": "wx_oauth_code", "inviteCode": "ABC123" } ``` | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | code | String | 是 | 微信OAuth授权code | | inviteCode | String | 否 | 邀请码 | **响应示例**:同 2.4 --- ### 2.6 微信公众号登录 **接口地址**:`POST /mobile/member/auth/loginByWechatMp` **请求参数**: ```json { "code": "wx_oauth_code", "inviteCode": "ABC123" } ``` | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | code | String | 是 | 微信网页授权code | | inviteCode | String | 否 | 邀请码 | **响应示例**:同 2.4 --- ### 2.7 支付宝登录 **接口地址**:`POST /mobile/member/auth/loginByAlipay` **请求参数**: ```json { "authCode": "alipay_auth_code", "inviteCode": "ABC123" } ``` | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | authCode | String | 是 | 支付宝授权码 | | inviteCode | String | 否 | 邀请码 | **响应示例**: ```json { "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" } ``` --- ### 2.8 苹果登录(Sign in with Apple) **接口地址**:`POST /mobile/member/auth/loginByApple` **请求参数**: ```json { "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 --- ### 2.9 华为账号登录 **接口地址**:`POST /mobile/member/auth/loginByHuawei` **请求参数**: ```json { "authCode": "huawei_auth_code", "inviteCode": "ABC123" } ``` | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | authCode | String | 是 | 华为授权码 | | inviteCode | String | 否 | 邀请码 | **响应示例**:同 2.4 --- ### 2.10 QQ登录 **接口地址**:`POST /mobile/member/auth/loginByQQ` **请求参数**: ```json { "accessToken": "qq_access_token", "openId": "qq_openid", "inviteCode": "ABC123" } ``` | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | accessToken | String | 是 | QQ AccessToken | | openId | String | 是 | QQ OpenID | | inviteCode | String | 否 | 邀请码 | **响应示例**:同 2.4 --- ### 2.11 微博登录 **接口地址**:`POST /mobile/member/auth/loginByWeibo` **请求参数**: ```json { "accessToken": "weibo_access_token", "uid": "weibo_uid", "inviteCode": "ABC123" } ``` | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | accessToken | String | 是 | 微博AccessToken | | uid | String | 是 | 微博UID | | inviteCode | String | 否 | 邀请码 | **响应示例**:同 2.4 --- ### 2.12 抖音登录 **接口地址**:`POST /mobile/member/auth/loginByDouyin` **请求参数**: ```json { "code": "douyin_auth_code", "inviteCode": "ABC123" } ``` | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | code | String | 是 | 抖音授权码 | | inviteCode | String | 否 | 邀请码 | **响应示例**:同 2.4 --- ### 2.13 一键登录(本机号码) **接口地址**:`POST /mobile/member/auth/loginByOneClick` **请求参数**: ```json { "token": "运营商一键登录token", "operator": "CMCC", "inviteCode": "ABC123" } ``` | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | token | String | 是 | 运营商返回的token | | operator | String | 是 | 运营商:`CMCC`-移动、`CUCC`-联通、`CTCC`-电信 | | inviteCode | String | 否 | 邀请码 | **响应示例**:同 2.2 --- ### 2.14 刷新Token **接口地址**:`POST /mobile/member/userCenter/refreshToken` **请求参数**: ```json { "refreshToken": "refresh_token_xxx" } ``` | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | refreshToken | String | 是 | 刷新令牌 | **响应示例**: ```json { "code": 200, "msg": "刷新成功", "data": { "token": "new_access_token", "tokenType": "Bearer", "expiresIn": 604800, "refreshToken": "new_refresh_token" }, "requestId": "abc123" } ``` --- ### 2.15 退出登录 **接口地址**:`POST /mobile/member/userCenter/logout` **请求头**:需要 `Authorization` **响应示例**: ```json { "code": 200, "msg": "退出成功", "data": null, "requestId": "abc123" } ``` --- ### 2.16 注销账号 **接口地址**:`POST /mobile/member/userCenter/cancel` **请求头**:需要 `Authorization` **请求参数**: ```json { "smsCode": "123456", "reason": "不再使用" } ``` | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | smsCode | String | 是 | 短信验证码 | | reason | String | 否 | 注销原因 | **响应示例**: ```json { "code": 200, "msg": "账号已注销", "data": null, "requestId": "abc123" } ``` --- ### 2.17 绑定手机号 **接口地址**:`POST /mobile/member/auth/bindMobile` **请求头**:需要 `Authorization` **请求参数**: ```json { "mobile": "13812345678", "smsCode": "123456" } ``` | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | mobile | String | 是 | 手机号 | | smsCode | String | 是 | 短信验证码 | **响应示例**: ```json { "code": 200, "msg": "绑定成功", "data": { "mobile": "138****5678" }, "requestId": "abc123" } ``` --- ### 2.18 修改密码 **接口地址**:`POST /mobile/member/userCenter/changePassword` **请求头**:需要 `Authorization` **请求参数**: ```json { "oldPassword": "加密后的旧密码", "newPassword": "加密后的新密码" } ``` | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | oldPassword | String | 是 | 旧密码(RSA加密) | | newPassword | String | 是 | 新密码(RSA加密) | **响应示例**: ```json { "code": 200, "msg": "密码修改成功", "data": null, "requestId": "abc123" } ``` --- ### 2.19 重置密码(忘记密码) **接口地址**:`POST /mobile/member/auth/resetPassword` **请求参数**: ```json { "mobile": "13812345678", "smsCode": "123456", "newPassword": "加密后的新密码" } ``` | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | mobile | String | 是 | 手机号 | | smsCode | String | 是 | 短信验证码 | | newPassword | String | 是 | 新密码(RSA加密) | **响应示例**: ```json { "code": 200, "msg": "密码重置成功", "data": null, "requestId": "abc123" } ``` --- ### 2.20 获取加密公钥 **接口地址**:`GET /mobile/member/auth/publicKey` **响应示例**: ```json { "code": 200, "msg": "success", "data": { "publicKey": "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQ..." }, "requestId": "abc123" } ``` --- ## 三、会员信息接口(Member) > **模块路径**:`/mobile/member/member` ### 3.1 获取当前会员信息 **接口地址**:`GET /mobile/member/member/info` **请求头**:需要 `Authorization` **响应示例**: ```json { "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" } ``` --- ### 3.2 更新会员信息 **接口地址**:`POST /mobile/member/member/update` **请求头**:需要 `Authorization` **请求参数**: ```json { "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 | 否 | 区县 | **响应示例**: ```json { "code": 200, "msg": "更新成功", "data": null, "requestId": "abc123" } ``` --- ### 3.3 实名认证 **接口地址**:`POST /mobile/member/member/realNameAuth` **请求头**:需要 `Authorization` **请求参数**: ```json { "realName": "张三", "idCard": "加密后的身份证号" } ``` | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | realName | String | 是 | 真实姓名 | | idCard | String | 是 | 身份证号(RSA加密) | **响应示例**: ```json { "code": 200, "msg": "实名认证成功", "data": { "isRealName": 1 }, "requestId": "abc123" } ``` --- ### 3.4 获取会员等级详情 **接口地址**:`GET /mobile/member/member/levelInfo` **请求头**:需要 `Authorization` **响应示例**: ```json { "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" } ``` --- ### 3.5 获取邀请信息 **接口地址**:`GET /mobile/member/member/inviteInfo` **请求头**:需要 `Authorization` **响应示例**: ```json { "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" } ``` --- ### 3.6 获取邀请记录 **接口地址**:`POST /mobile/member/member/inviteList` **请求头**:需要 `Authorization` **请求参数**: ```json { "pageNo": 1, "pageSize": 10 } ``` **响应示例**: ```json { "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" } ``` --- ## 四、积分接口(Points) > **模块路径**:`/mobile/member/points` ### 4.1 获取积分概览 **接口地址**:`GET /mobile/member/points/summary` **请求头**:需要 `Authorization` **响应示例**: ```json { "code": 200, "msg": "success", "data": { "availablePoints": 1280, "frozenPoints": 100, "totalPoints": 5680, "usedPoints": 4200, "expiredPoints": 100, "expiringSoonPoints": 200, "expiringSoonDate": "2026-03-31" }, "requestId": "abc123" } ``` --- ### 4.2 获取积分流水 **接口地址**:`POST /mobile/member/points/list` **请求头**:需要 `Authorization` **请求参数**: ```json { "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 | 否 | 结束日期 | **响应示例**: ```json { "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" } ``` --- ### 4.3 签到 **接口地址**:`POST /mobile/member/points/signIn` **请求方式**:`POST`(无请求体或空 JSON `{}` 均可) **请求头**:需登录态(`access_token` / `Authorization` / `satoken`,与项目移动端鉴权一致) **业务说明**: - 同一会员同一自然日仅可成功签到一次;重复调用返回业务错误提示「今日已签到」。 - 基础积分 **10** 分/天;连续签到达到 **3 / 5 / 7** 天及以上时,当日在基础分上额外奖励 **10 / 50 / 90** 分(按满足的最高档只计一次额外分,与 `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 | 奖励说明文案 | **响应示例**: ```json { "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 时以前端统一拦截为准)。 --- ### 4.4 获取签到状态 **接口地址**:`GET /mobile/member/points/signInStatus` **请求头**:需登录态 **响应 `data` 字段**: | 字段 | 类型 | 说明 | |------|------|------| | todaySigned | bool | 当日是否已签到 | | continuousDays | int | 已签:含今日的连续天数;未签:截至昨日的连续天数 | | totalSignDays | int | 累计签到天数 | | monthSignDays | int[] | 本月已签到的日号(1–31),用于日历打点 | | signRules | array | 展示用规则:连续天数门槛 `day`、该档当日可获得总积分 `points`(含基础分) | **响应示例**: ```json { "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" } ``` --- ### 4.5 签到记录(分页) **接口地址**:`POST /mobile/member/points/signInRecord/list` **请求头**:需登录态 **请求体**(可空,缺省时按第 1 页、默认每页条数): ```json { "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 | 本次发放积分合计 | --- ## 五、优惠券接口(Coupon) > **模块路径**:`/mobile/member/coupon` ### 5.1 获取可领取优惠券列表 **接口地址**:`POST /mobile/member/coupon/available` **请求参数**: ```json { "pageNo": 1, "pageSize": 10 } ``` **响应示例**: ```json { "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" } ``` --- ### 5.2 领取优惠券 **接口地址**:`POST /mobile/member/coupon/receive` **请求头**:需要 `Authorization` **请求参数**: ```json { "templateId": "xxx" } ``` | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | templateId | String | 是 | 优惠券模板ID | **响应示例**: ```json { "code": 200, "msg": "领取成功", "data": { "couponId": "xxx", "couponSn": "COUPON202601240001", "couponName": "新人专享券", "validEndDate": "2026-03-31" }, "requestId": "abc123" } ``` --- ### 5.3 获取我的优惠券列表 **接口地址**:`POST /mobile/member/coupon/my` **请求头**:需要 `Authorization` **请求参数**: ```json { "pageNo": 1, "pageSize": 10, "status": 0 } ``` | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | pageNo | Integer | 否 | 页码 | | pageSize | Integer | 否 | 每页条数 | | status | Integer | 否 | 状态:0-未使用 1-已使用 2-已过期 | **响应示例**: ```json { "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" } ``` --- ### 5.4 获取优惠券详情 **接口地址**:`GET /mobile/member/coupon/detail` **请求头**:需要 `Authorization` **请求参数**: | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | couponId | String | 是 | 优惠券ID | **响应示例**: ```json { "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" } ``` --- ### 5.5 获取订单可用优惠券 **接口地址**:`POST /mobile/member/coupon/usable` **请求头**:需要 `Authorization` **请求参数**: ```json { "orderAmount": 200.00, "productIds": ["p001", "p002"], "categoryIds": ["c001"] } ``` | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | orderAmount | Number | 是 | 订单金额 | | productIds | Array | 否 | 商品ID列表 | | categoryIds | Array | 否 | 分类ID列表 | **响应示例**: ```json { "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" } ``` --- ### 5.6 积分兑换优惠券 **接口地址**:`POST /mobile/member/coupon/exchange` **请求头**:需要 `Authorization` **请求参数**: ```json { "templateId": "xxx" } ``` | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | templateId | String | 是 | 优惠券模板ID | **响应示例**: ```json { "code": 200, "msg": "兑换成功", "data": { "couponId": "xxx", "couponName": "50元无门槛券", "deductPoints": 500, "remainPoints": 780 }, "requestId": "abc123" } ``` --- ## 六、余额接口(Balance) > **模块路径**:`/mobile/member/balance` ### 6.1 获取余额概览 **接口地址**:`GET /mobile/member/balance/summary` **请求头**:需要 `Authorization` **响应示例**: ```json { "code": 200, "msg": "success", "data": { "balance": 150.00, "frozenBalance": 0.00, "totalRecharge": 500.00, "totalConsume": 350.00 }, "requestId": "abc123" } ``` --- ### 6.2 获取余额流水 **接口地址**:`POST /mobile/member/balance/list` **请求头**:需要 `Authorization` **请求参数**: ```json { "pageNo": 1, "pageSize": 10, "balanceType": 1 } ``` | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | pageNo | Integer | 否 | 页码 | | pageSize | Integer | 否 | 每页条数 | | balanceType | Integer | 否 | 变动类型:1-充值 2-消费 3-退款 | **响应示例**: ```json { "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" } ``` --- ### 6.3 余额充值下单 **接口地址**:`POST /mobile/member/balance/recharge` **请求头**:需要 `Authorization` **请求参数**: ```json { "amount": 100.00, "payChannel": "WECHAT" } ``` | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | amount | Number | 是 | 充值金额 | | payChannel | String | 是 | 支付渠道:`WECHAT`-微信 `ALIPAY`-支付宝 | **响应示例**: ```json { "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" } ``` --- ## 七、成长值接口(Growth) > **模块路径**:`/mobile/member/growth` ### 7.1 获取成长值流水 **接口地址**:`POST /mobile/member/growth/list` **请求头**:需要 `Authorization` **请求参数**: ```json { "pageNo": 1, "pageSize": 10 } ``` **响应示例**: ```json { "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" } ``` --- ## 八、消息通知接口(Message) > **模块路径**:`/mobile/member/message` ### 8.1 获取消息列表 **接口地址**:`POST /mobile/member/message/list` **请求头**:需要 `Authorization` **请求参数**: ```json { "pageNo": 1, "pageSize": 10, "msgType": "SYSTEM" } ``` | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | pageNo | Integer | 否 | 页码 | | pageSize | Integer | 否 | 每页条数 | | msgType | String | 否 | 消息类型:`SYSTEM`-系统 `ORDER`-订单 `ACTIVITY`-活动 | **响应示例**: ```json { "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" } ``` --- ### 8.2 获取未读消息数 **接口地址**:`GET /mobile/member/message/unreadCount` **请求头**:需要 `Authorization` **响应示例**: ```json { "code": 200, "msg": "success", "data": { "total": 5, "system": 2, "order": 3, "activity": 0 }, "requestId": "abc123" } ``` --- ### 8.3 标记消息已读 **接口地址**:`POST /mobile/member/message/read` **请求头**:需要 `Authorization` **请求参数**: ```json { "messageIds": ["id1", "id2"] } ``` **响应示例**: ```json { "code": 200, "msg": "标记成功", "data": null, "requestId": "abc123" } ``` --- ### 8.4 全部标记已读 **接口地址**:`POST /mobile/member/message/readAll` **请求头**:需要 `Authorization` **请求参数**: ```json { "msgType": "SYSTEM" } ``` | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | msgType | String | 否 | 消息类型,不传则全部标记 | **响应示例**: ```json { "code": 200, "msg": "全部标记已读", "data": null, "requestId": "abc123" } ``` --- ## 九、接口地址速查表 > **说明**:基础路径为 `/mobile`,完整示例:`/mobile/member/auth/loginByMobile` ### 9.1 登录认证(auth) | 操作 | 方法 | 接口地址 | |------|------|----------| | 发送验证码 | 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` | ### 9.2 会员信息(member) | 操作 | 方法 | 接口地址 | |------|------|----------| | 获取会员信息 | 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` | ### 9.3 积分(points) | 操作 | 方法 | 接口地址 | |------|------|----------| | 获取积分概览 | 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` | ### 9.4 优惠券(coupon) | 操作 | 方法 | 接口地址 | |------|------|----------| | 可领取优惠券列表 | 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` | ### 9.5 余额(balance) | 操作 | 方法 | 接口地址 | |------|------|----------| | 获取余额概览 | GET | `/mobile/member/balance/summary` | | 获取余额流水 | POST | `/mobile/member/balance/list` | | 余额充值下单 | POST | `/mobile/member/balance/recharge` | ### 9.6 成长值(growth) | 操作 | 方法 | 接口地址 | |------|------|----------| | 获取成长值流水 | POST | `/mobile/member/growth/list` | ### 9.7 消息通知(message) | 操作 | 方法 | 接口地址 | |------|------|----------| | 获取消息列表 | POST | `/mobile/member/message/list` | | 获取未读消息数 | GET | `/mobile/member/message/unreadCount` | | 标记消息已读 | POST | `/mobile/member/message/read` | | 全部标记已读 | POST | `/mobile/member/message/readAll` | --- ## 十、枚举值速查表 ### 10.1 登录方式(loginType) | 值 | 说明 | |----|------| | MOBILE | 手机验证码 | | PASSWORD | 账号密码 | | WECHAT_MINI | 微信小程序 | | WECHAT_APP | 微信APP | | WECHAT_MP | 微信公众号 | | ALIPAY | 支付宝 | | APPLE | 苹果登录 | | HUAWEI | 华为账号 | | QQ | QQ登录 | | WEIBO | 微博登录 | | DOUYIN | 抖音登录 | | ONE_CLICK | 一键登录 | ### 10.2 验证码场景(scene) | 值 | 说明 | |----|------| | LOGIN | 登录 | | REGISTER | 注册 | | RESET_PWD | 重置密码 | | BIND | 绑定手机 | ### 10.3 性别(gender) | 值 | 说明 | |----|------| | 0 | 未知 | | 1 | 男 | | 2 | 女 | ### 10.4 会员等级(levelCode) | 值 | 说明 | |----|------| | NORMAL | 普通会员 | | SILVER | 白银会员 | | GOLD | 黄金会员 | | PLATINUM | 铂金会员 | | DIAMOND | 钻石会员 | ### 10.5 积分类型(pointsType) | 值 | 说明 | |----|------| | 1 | 获取 | | 2 | 消费 | | 3 | 冻结 | | 4 | 解冻 | | 5 | 过期 | | 6 | 调整 | ### 10.6 优惠券状态(couponStatus) | 值 | 说明 | |----|------| | 0 | 未使用 | | 1 | 已使用 | | 2 | 已过期 | | 3 | 已冻结 | | 4 | 已作废 | ### 10.7 优惠券类型(couponType) | 值 | 说明 | |----|------| | 1 | 满减券 | | 2 | 折扣券 | | 3 | 无门槛券 | | 4 | 兑换券 | ### 10.8 余额变动类型(balanceType) | 值 | 说明 | |----|------| | 1 | 充值 | | 2 | 消费 | | 3 | 退款 | | 4 | 冻结 | | 5 | 解冻 | | 6 | 提现 | | 7 | 调整 | ### 10.9 支付渠道(payChannel) | 值 | 说明 | |----|------| | WECHAT | 微信支付 | | ALIPAY | 支付宝 | | BALANCE | 余额支付 | | BANK | 银行卡 | ### 10.10 消息类型(msgType) | 值 | 说明 | |----|------| | SYSTEM | 系统消息 | | ORDER | 订单消息 | | ACTIVITY | 活动消息 | | POINTS | 积分消息 | | COUPON | 优惠券消息 | ### 10.11 平台标识(platform) | 值 | 说明 | |----|------| | APP | 手机APP | | MINI | 微信小程序 | | H5 | H5网页 | --- ## 十一、更新日志 | 版本 | 日期 | 更新内容 | |------|------|----------| | 3.0.1 | 2026-01-24 | 初始版本,包含登录认证、会员信息、积分、优惠券、余额、成长值、消息通知接口 |