模块说明
user 是会员体系总入口,覆盖:注册 / 账号密码登录 / 手机验证码登录 / 登出 / 登录态检查、找回密码(邮件)、资料维护(编辑、改密、头像、通用文件上传)、第三方账号(SNS)、省市区数据、联系人地址簿、微信小程序专用能力(手机号获取、微信登录、微信支付)与工作端会员列表。
鉴权级别:模块默认必须登录;注册/登录/找回密码/登录态检查等少数动作公开;会员中心首页可选登录;工作端必须员工身份。
接口一览
注册与登录
| 方法 | URL | 鉴权 | 说明 |
|---|---|---|---|
| GET | /api/user |
可选 | 会员中心首页 |
| GET | /api/user/register |
公开 | 注册表单数据 |
| POST | /api/user/register_post |
公开 | 注册提交(成功后自动登录) |
| POST | /api/user/login_post |
公开 | 账号密码登录 |
| POST | /api/user/login_phone_post |
公开 | 手机验证码登录 |
| POST | /api/user/logout |
必须 | 退出登录(吊销当前 token) |
| POST | /api/user/check_login_state |
公开 | 登录态检查 |
| GET | /api/user/password_reset |
公开 | 找回密码表单 |
| POST | /api/user/password_reset_post |
公开 | 找回密码提交(发邮件) |
资料维护
| 方法 | URL | 鉴权 | 说明 |
|---|---|---|---|
| GET | /api/user/edit |
必须 | 资料编辑表单 |
| POST | /api/user/edit_post |
必须 | 保存资料 |
| GET | /api/user/password |
必须 | 修改密码表单 |
| POST | /api/user/password_post |
必须 | 修改密码 |
| POST | /api/user/upload_avatar |
必须 | 上传头像(multipart) |
| POST | /api/user/filebox |
必须 | 通用文件上传(multipart) |
| POST | /api/user/filedel |
必须 | 删除已上传文件 |
第三方账号与地区
| 方法 | URL | 鉴权 | 说明 |
|---|---|---|---|
| POST | /api/user/sns |
必须 | 第三方账号管理(查看/解绑) |
| POST | /api/user/sns_link |
公开 | 第三方登录引导页 |
| POST | /api/user/area |
必须 | 省市区数据 |
联系人地址簿
| 方法 | URL | 鉴权 | 说明 |
|---|---|---|---|
| GET | /api/user/contact |
必须 | 地址簿列表 |
| GET | /api/user/contact/create |
必须 | 新增表单 |
| POST | /api/user/contact/store |
必须 | 新增提交 |
| GET | /api/user/contact/edit |
必须 | 编辑表单 |
| POST | /api/user/contact/update |
必须 | 编辑提交 |
| POST | /api/user/contact/destroy |
必须 | 删除地址 |
| POST | /api/user/contact/set |
必须 | 设为默认地址 |
| POST | /api/user/contact/list_json |
必须 | 联系地址 JSON 列表 |
| POST | /api/user/contact/info |
必须 | 单个联系人信息 |
微信能力(小程序专用)
| 方法 | URL | 鉴权 | 说明 |
|---|---|---|---|
| GET | /api/user/weixin/get_phone |
公开 | 微信手机号解密(小程序) |
| GET | /api/user/weixin/login |
公开 | 微信小程序登录 |
| POST | /api/user/weixin/pay |
必须 | 微信小程序支付 |
工作端(work_required)
| 方法 | URL | 鉴权 | 说明 |
|---|---|---|---|
| GET | /api/user/work |
员工 | 工作端会员列表 |
登录与注册
账号密码登录 POST /api/user/login_post
| 参数 | 必填 | 说明 |
|---|---|---|
username |
是 | 用户名(邮箱或手机号) |
password |
是 | 密码 |
成功响应(注册提交同结构):
{
"code": "OK",
"message": "",
"data": {
"user": { "user_id": 3, "token": "64位hex令牌", "...": "会员数据" },
"dou": { "auth": { "is_work": false } }
},
"errors": {},
"request_id": "9f2a5c8e1b3d7f40"
}
data.user.token即后续Authorization: Bearer <token>凭证;- 凭据错误/账号锁定等 →
422,errors含字段级原因。
手机验证码登录 POST /api/user/login_phone_post
| 参数 | 必填 | 说明 |
|---|---|---|
mobile |
是 | 手机号 |
verification |
是 | 用户输入的验证码 |
verification_data |
是 | captcha/verification 返回的验证数据(JSON 字符串) |
promotion_user_sn |
否 | 推广人编号 |
限流 5 次/60 秒(超限
429)。
注册 GET /api/user/register + POST /api/user/register_post
表单数据返回:captcha_token、storage_captcha_token(验证码流程)、promotion_user_sn、sns_token、login_mode、mail_username、sms_accessKeyId(决定展示邮箱或短信验证区)。
提交字段:email 或 mobile(二选一)、password + password_confirmation(confirmed 校验)、verification + verification_data(站点开启验证时)、promotion_user_sn(可选)、sns(可选,第三方绑定 JSON)。成功后自动登录(同登录响应结构,另带 dou.auth.is_work)。
找回密码 POST /api/user/password_reset_post
参数 email;向该邮箱发送重置链接。
| 场景 | 响应 |
|---|---|
| 邮箱不存在 | 404 NOT_FOUND(errors.email) |
| 邮件发送失败 | 500 SERVER_ERROR |
| 成功 | 200,message 提示邮件已发送 |
登录态与登出
POST /api/user/check_login_state:检查 Bearer token 是否有效;返回login_state(有效success,无效fail);公开接口;POST /api/user/logout:吊销当前 token(需登录),返回空数据。
资料维护
编辑资料 GET /api/user/edit + POST /api/user/edit_post
编辑表单返回 title + user_info(含站点自定义字段 defined)。
保存字段:nickname、contact、phone(必填,非法字符校验)、sex、defined(自定义字段,\r\n 自动转逗号);site.language=en_us 时改采 first_name / last_name / country / province。昵称重复 → 422(errors.nickname)。
修改密码 POST /api/user/password_post
| 参数 | 必填 | 说明 |
|---|---|---|
old_password |
是 | 原密码 |
password |
是 | 新密码 |
password_confirmation |
是 | 确认新密码 |
成功返回 data.relogin=true(提示客户端重新登录);旧密码错误 → 422(errors)。
头像与通用文件上传
-
上传头像
POST /api/user/upload_avatar:multipart,文件字段avatar;成功返回file_url(自动压缩到宽 200); -
通用文件上传
POST /api/user/filebox(multipart):参数 必填 说明 module是 归属模块(如 share、aftersale、health)type是 业务类型 item_id二选一 业务主键(编辑场景);与 draft_token二者其一draft_token二选一 草稿令牌(创建场景) folder否 yes时按日期分目录img_width否 压缩宽度(默认 site.img_width)boxfield是 文件字段( type=content时支持多文件)返回:普通单图
img_list(owned 模式最多保留 3 张);type=content返回html片段; -
删除文件
POST /api/user/filedel:参数number;返回删除后的img_list。
第三方账号与地区
POST /api/user/sns:参数remove(要解绑的平台 slug);返回title、plugin_list(已绑定平台列表)、成功解绑时remove=true;POST /api/user/sns_link:返回引导页title(公开);POST /api/user/area:参数type(init/province/city/district,默认province)+id/parent/current;init返回contact(带地区回显的联系人),其余返回area_list;地区模块未启用时返回空对象。
联系人地址簿
- 列表
GET /api/user/contact:参数page;返回contact_list、pager; - 新增
POST /api/user/contact/store:name、phone、address必填(中文站点phone走手机号校验;开启地区功能时province/city必填);成功返回contact_id; - 编辑
GET /api/user/contact/edit?id=+POST /api/user/contact/update:字段同新增;成功返回contact_id; - 删除
POST /api/user/contact/destroy?id=:失败422; - 设默认
POST /api/user/contact/set?id=:成功提示; - JSON 列表
POST /api/user/contact/list_json:参数contact_id(当前选中,可选);返回contact_list(结算选择地址场景); - 联系人信息
POST /api/user/contact/info:参数contact_id;返回contact。
微信能力(小程序专用)
以下接口为微信小程序生态专用,依赖小程序 AppID/密钥配置;通用客户端(Vue 等)不适用,PC 端微信登录走独立插件与 OAuth 流程。
-
获取手机号
GET /api/user/weixin/get_phone?code=:服务端解密返回phone; -
微信登录
GET /api/user/weixin/login:参数 必填 说明 code是 wx.login获取的临时凭证act否 preload时仅探测绑定状态(返回phone_exist: yes/no),默认正常登录phone否 手机号(用于关联既有账号) promotion_user_sn否 推广人编号(自动建号时登记分销关系) 成功返回
user.user_id+user.token(+dou.auth.is_work); -
微信支付
POST /api/user/weixin/pay:参数order_sn;仅pending状态订单可发起;返回微信 JSAPI 支付参数;状态不符 →422。
工作端会员列表 GET /api/user/work
员工权限(user 模块);参数 page;每页数量取站点配置 pagination.service(默认 10)。返回 user_list,每项含:user_id、level_name、vip、user(格式化会员数据)、mobile、email、user_sn、contact、phone、point、money_total、sex、login_count、last_login、created_at。
注意事项
- 验证码体系:注册与手机登录依赖
captcha模块两段式流程(captcha/token拿令牌 →captcha/verification发码并拿verification_data);详见「鉴权与会话」篇; - 限流:登录/注册/找回密码/验证码均有限流,超限
429+Retry-After; - 文件上传三形态:
draft_token(创建场景草稿)/item_id(编辑场景 owned,最多 3 张)/type=content(多文件富文本 HTML); - 修改密码成功后
token仍有效但业务建议重新登录(relogin提示); dou.auth布尔组(is_login/is_vip/is_work/is_distribution)是客户端权限态渲染的推荐依据。