предисловие
Я занимаюсь разработкой интернет-торговли уже более трех лет, оглядываясь назад, я мало что знаю обо всем бизнес-процессе, мне стыдно об этом говорить. Однако в среде интернет-электронной коммерции я более-менее контактирую с различными бизнесами, а вокруг много коллег и друзей, которые занимаются электронной коммерцией, а это все ресурсы. Итак, я решил разобраться во всем процессе и поделиться им с коллегами, друзьями и даже с вами.Я не могу говорить о том, насколько хорошие результаты, по крайней мере, везде, где у нас есть возможность сделать хорошо, мы будем однозначно нюанс.
Кроме того, чтобы удовлетворить техническое удовлетворение, которое мы можем не получить в нашей собственной работе, мы будем использовать стек технологий, который мы больше всего хотим использовать в процессе проектирования всей системы. Мы используем докер для достижения стека технологий, поэтому конечный результат: с одной стороны, мы освоили дело, а с другой стороны, получили техническое удовлетворение, а можно и то, и другое.
Наконец, ради времени, мы придумали идеюDo design No code. **[Только проектирование без кодирования]** Смысл этого предложения: В итоге мы спроектировали модель данных всей системы, интерфейсные документы, даже процесс взаимодействия, развертывание среды и т. д., но в итоге мы код не писал. правильно? Если да, то какой смысл писать код. Конечно, это не все, конечно, это будет реализовано в коде из соображений времени, может быть, наоборот, вы, в конце концов, это реализуете.
Во-вторых, это содержание определенно не является исчерпывающим или в крупномасштабном бизнесе есть более сложные места, и мы также надеемся узнать и поделиться своим опытом.
Сегодня начинаем первую частьПользовательская системадизайн. Этот документ разделен на следующие четыре модуля:
- Архитектурный дизайн
- дизайн модели данных
- Интерактивный дизайн
- дизайн интерфейса
Архитектурный дизайн
Простой взгляд на пользовательскую систему
Когда вы впервые соприкоснулись с интернет-продуктами, связанными с пользователями, это было в моих глазах.Пользовательская системаНе более, чем «войти» и «зарегистрироваться», «изменить информацию о пользователе» и так далее. Чтобы сделать это просто, нам просто нужна таблица для записи идентификационной информации пользователя: при регистрации (операция вставки) вставьте данные в таблицу; при входе в систему (операция выбора и обновления) судите по идентификатору пользователя (номер мобильного телефона, адрес электронной почты, и т. д.) Является ли пароль пользователя правильным; изменение информации о пользователе (операция select&update) заключается в непосредственном обновлении информации о пользователе (аватар, псевдоним и т. д.) этого uid.
На самом деле в этом дизайне нет ничего плохого, он очень простой, не так ли? Но с развитием бизнеса, с одной стороны, нам необходимо обеспечить унифицированное управление пользователями (высокая сплоченность), а с другой стороны, нам необходимо улучшить масштабируемость системы, поэтому то, что я хочу представить, это то, что я понимать.Что должна иметь базовая пользовательская система.
Что должна иметь базовая пользовательская система
Во-первых, мы снова абстрагируем исходную таблицу пользователей (извлекаем регистрацию пользователя, поля, зависящие от входа, сторонний вход) ->Таблица счетов, зачем это делать? С развитием бизнеса мы привыкли поддерживать только один продукт и, возможно, однажды разработаем новый продукт, чтобы мы могли поддерживать логику регистрации и входа в систему для всех продуктов нашей компании единообразно.Разные продукты поддерживают только информацию, связанную с продукт и пользователь, а именно Да (в зависимости от формы продукта). Как показано ниже:
На приведенном выше рисунке также упоминается стороннее управление логином/таблицей сотрудников/серверными полномочиями, которые являются основными необходимыми структурами для некоторых пользовательских систем.
Сторонний вход в систему: Сторонний вход также является разновидностью метода входа, и мы также абстрагируем его от части учетной записи, как показано на рисунке выше. Во-вторых, есть проблема с дизайном интерактивного режима, связанная со сторонним входом в систему, о чем будет сказано позже в интерактивном дизайне.
Сотрудник: Поскольку мы удалили приведенную выше таблицу учетных записей, серверная часть внутренней системы управления также может использовать логику входа в таблицу учетных записей унифицированным образом, так что вся компания достигла действительно высокой согласованности в отношении номеров учетных записей. .
Говоря о сотрудниках, наши различные внутренние системные фоны должны включать различное управление правами, поэтому здесь упоминается простой RBAC (управление правами на основе ролей) и будет упомянут конкретный дизайн логической модели данных.
окончательная архитектура
Поскольку формы бизнес-продуктов становятся все более и более сложными, при проектировании архитектуры нам необходимо анализироватьменяй и меняй:
- Изменения: все больше и больше продуктов персонализируются в соответствии с потребностями пользователей.
- То же: логика регистрации и входа
В конце концов, мы разделили первоначальных пользователей наСчетиПользователь, в то же время мы также хотим уточнить разницу между этими двумя понятиями здесь:
- Учетная запись: единственное место во всей системе, где создается uid, с согласованной логикой регистрации и входа в систему и не связанное с бизнес-требованиями продукта.
- Пользователи: персонализированная информация о спросе пользователей на различные продукты.
Окончательная схема архитектуры выглядит следующим образом:
- Часть 1: Аккаунт (сервисный уровень)
- Часть II: Пользователь (прикладной уровень, бесконечное горизонтальное расширение)
- Часть III: Сотрудники (прикладной уровень, система полномочий сотрудников)
дизайн модели данных
В соответствии с приведенной выше архитектурой мы можем легко спроектировать нашу модель данных (здесь предполагается, что в настоящее время у нас есть только одно приложение на стороне C):
账户 -> 1.账户表
用户 -> 2.用户表
员工 -> 3.员工表
В дополнение к приведенным выше трем таблицам нам также понадобится управление правами R (роль) B (базовый) A (доступ) C (управление). Все должны быть знакомы с управлением правами на основе ролей RBAC. Я не буду вдаваться в подробности. здесь просто RBAC сначала требует:
4.系统菜单表(菜单即权限),系统的uri路径
5.权限表(菜单即权限),具体的权限就是访问系统的菜单
6.角色表,一个角色具有哪些权限
7.员工和角色的关联表,一个员工属于哪个角色
Ну, простая таблица, задействованная в RBAC, в основном указана, но по моему опыту работы, управление полномочиями, реализованное всеми, часто только для определенной системы, поэтому для многих системных фонов это хаос, многократное построение колес, низкая эффективность управления полномочиями. . Таким образом, в приведенной выше архитектуре разрешения используются как служба для предоставления базовых возможностей службы для всей системы. И результат для этой цели мне просто нужно добавить еще одну таблицу:
8.后台管理系统表, 登记所有的后台管理系统(这样通过系统id和系统资源uri的id就可以全局构成唯一性,单纯的uri存在重复的可能性,用uri不用url的原因是域名存在变动的可能性)
Наконец, наша пользовательская система должна состоять из 8 вышеперечисленных таблиц. Эй, кажется, сторонний логин пропущен, давайте добавим его, это очень просто следующим образом:
9. 第三方用户登陆表,记录不同第三方的用户标示
Наконец, есть приведенные выше таблицы 9. Конкретная структура таблицы и sql следующие:
таблица sql
Модель аккаунта
-- 账户模型
CREATE TABLE `account_user` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '账号id',
`email` varchar(30) NOT NULL DEFAULT '' COMMENT '邮箱',
`phone` varchar(15) NOT NULL DEFAULT '' COMMENT '手机号',
`username` varchar(30) NOT NULL DEFAULT '' COMMENT '用户名',
`password` varchar(32) NOT NULL DEFAULT '' COMMENT '密码',
`create_at` int(11) NOT NULL DEFAULT '0' COMMENT '创建时间',
`create_ip_at` varchar(12) NOT NULL DEFAULT '' COMMENT '创建ip',
`last_login_at` int(11) NOT NULL DEFAULT '0' COMMENT '最后一次登陆时间',
`last_login_ip_at` varchar(12) NOT NULL DEFAULT '' COMMENT '最后一次登陆ip',
`login_times` int(11) NOT NULL DEFAULT '0' COMMENT '登录次数',
`status` tinyint(1) NOT NULL DEFAULT '0' COMMENT '状态 1:enable, 0:disable, -1:deleted',
PRIMARY KEY (`id`),
KEY `idx_email` (`email`),
KEY `idx_phone` (`phone`),
KEY `idx_username` (`username`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='账户';
-- 第三方账户
CREATE TABLE `account_platform` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增id',
`uid` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '账号id',
`platform_id` varchar(60) NOT NULL DEFAULT '' COMMENT '平台id',
`platform_token` varchar(60) NOT NULL DEFAULT '' COMMENT '平台access_token',
`type` tinyint(1) NOT NULL DEFAULT '0' COMMENT '平台类型 0:未知,1:facebook,2:google,3:wechat,4:qq,5:weibo,6:twitter',
`nickname` varchar(60) NOT NULL DEFAULT '' COMMENT '昵称',
`avatar` varchar(255) NOT NULL DEFAULT '' COMMENT '头像',
`create_at` int(11) NOT NULL DEFAULT '0' COMMENT '创建时间',
`update_at` int(11) NOT NULL DEFAULT '0' COMMENT '更新时间',
PRIMARY KEY (`id`),
KEY `idx_uid` (`uid`),
KEY `idx_platform_id` (`platform_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='第三方用户信息';
Пользовательская модель
-- 用户模型
CREATE TABLE `skr_member` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '用户id',
`uid` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '账号id',
`nickname` varchar(30) NOT NULL DEFAULT '' COMMENT '昵称',
`avatar` varchar(255) NOT NULL DEFAULT '' COMMENT '头像(相对路径)',
`gender` enum('male','female','unknow') NOT NULL DEFAULT 'unknow' COMMENT '性别',
`role` tinyint(1) unsigned NOT NULL DEFAULT '0' COMMENT '角色 0:普通用户 1:vip',
`create_at` int(11) NOT NULL DEFAULT '0' COMMENT '创建时间',
`update_at` int(11) NOT NULL DEFAULT '0' COMMENT '更新时间',
PRIMARY KEY (`id`),
KEY `idx_uid` (`uid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='账户信息';
модель сотрудника
-- 员工表
CREATE TABLE `staff_info` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '员工id',
`uid` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '账号id',
`email` varchar(30) NOT NULL DEFAULT '' COMMENT '员工邮箱',
`phone` varchar(15) NOT NULL DEFAULT '' COMMENT '员工手机号',
`name` varchar(30) NOT NULL DEFAULT '' COMMENT '员工姓名',
`nickname` varchar(30) NOT NULL DEFAULT '' COMMENT '员工昵称',
`avatar` varchar(255) NOT NULL DEFAULT '' COMMENT '员工头像(相对路径)',
`gender` enum('male','female','unknow') NOT NULL DEFAULT 'unknow' COMMENT '员工性别',
`create_at` int(11) NOT NULL DEFAULT '0' COMMENT '创建时间',
`update_at` int(11) NOT NULL DEFAULT '0' COMMENT '更新时间',
PRIMARY KEY (`id`),
KEY `idx_uid` (`uid`),
KEY `idx_email` (`email`),
KEY `idx_phone` (`phone`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='员工信息(这里列了大概的信息,多的可以垂直拆表)';
Модель управления системными правами
-- 权限管理: 系统map
CREATE TABLE `auth_ms` (
`id` smallint(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增id',
`ms_name` varchar(255) NOT NULL DEFAULT '0' COMMENT '系统名称',
`ms_desc` varchar(255) NOT NULL DEFAULT '0' COMMENT '系统描述',
`ms_domain` varchar(255) NOT NULL DEFAULT '0' COMMENT '系统域名',
`create_at` int(11) NOT NULL DEFAULT '0' COMMENT '创建时间',
`create_by` int(11) NOT NULL DEFAULT '0' COMMENT '创建人staff_id',
`update_at` int(11) NOT NULL DEFAULT '0' COMMENT '更新时间',
`update_by` int(11) NOT NULL DEFAULT '0' COMMENT '修改人staff_id',
`status` tinyint(1) NOT NULL DEFAULT '0' COMMENT '状态 1:enable, 0:disable, -1:deleted',
PRIMARY KEY (`id`),
KEY `idx_domain` (`domain`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='系统map(登记目前存在的后台系统信息)';
-- 权限管理: 系统menu
CREATE TABLE `auth_ms_menu` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增id',
`ms_id` smallint(11) unsigned NOT NULL DEFAULT '0' COMMENT '系统id',
`parent_id` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '父菜单id',
`menu_name` varchar(255) NOT NULL DEFAULT '0' COMMENT '菜单名称',
`menu_desc` varchar(255) NOT NULL DEFAULT '0' COMMENT '菜单描述',
`menu_uri` varchar(255) NOT NULL DEFAULT '0' COMMENT '菜单uri',
`create_at` int(11) NOT NULL DEFAULT '0' COMMENT '创建时间',
`is_show` enum('yes','no') NOT NULL DEFAULT 'no' COMMENT '是否展示菜单',
`create_by` int(11) NOT NULL DEFAULT '0' COMMENT '创建人staff_id',
`update_at` int(11) NOT NULL DEFAULT '0' COMMENT '更新时间',
`update_by` int(11) NOT NULL DEFAULT '0' COMMENT '修改人staff_id',
`status` tinyint(1) NOT NULL DEFAULT '0' COMMENT '状态 1:enable, 0:disable, -1:deleted',
PRIMARY KEY (`id`),
KEY `idx_ms_id` (`ms_id`),
KEY `idx_parent_id` (`parent_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='系统menu';
-- 权限管理: 系统权限
CREATE TABLE `auth_item` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增id',
`ms_id` tinyint(11) unsigned NOT NULL DEFAULT '0' COMMENT '系统id',
`menu_id` varchar(255) NOT NULL DEFAULT '0' COMMENT '页面/接口uri',
`create_at` int(11) NOT NULL DEFAULT '0' COMMENT '创建时间',
`create_by` int(11) NOT NULL DEFAULT '0' COMMENT '创建人staff_id',
`update_at` int(11) NOT NULL DEFAULT '0' COMMENT '更新时间',
`update_by` int(11) NOT NULL DEFAULT '0' COMMENT '修改人staff_id',
`status` tinyint(1) NOT NULL DEFAULT '0' COMMENT '状态 1:enable, 0:disable, -1:deleted',
PRIMARY KEY (`id`),
KEY `idx_ms_menu` (`ms_id`, `menu_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='系统权限';
-- 权限管理: 系统权限(权限的各个集合)
CREATE TABLE `auth_role` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增id',
`name` varchar(255) NOT NULL DEFAULT '0' COMMENT '角色名称',
`desc` varchar(255) NOT NULL DEFAULT '0' COMMENT '角色描述',
`auth_item_set` text COMMENT '权限集合 多个值,号隔开',
`create_at` int(11) NOT NULL DEFAULT '0' COMMENT '创建时间',
`create_by` int(11) NOT NULL DEFAULT '0' COMMENT '创建人staff_id',
`update_at` int(11) NOT NULL DEFAULT '0' COMMENT '更新时间',
`update_by` int(11) NOT NULL DEFAULT '0' COMMENT '修改人staff_id',
`status` tinyint(1) NOT NULL DEFAULT '0' COMMENT '状态 1:enable, 0:disable, -1:deleted',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='员工角色';
-- 权限管理: 角色与员工关系
CREATE TABLE `auth_role_staff` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增id',
`staff_id` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '员工id',
`role_set` text COMMENT '角色集合 多个值,号隔开',
`create_at` int(11) NOT NULL DEFAULT '0' COMMENT '创建时间',
`create_by` int(11) NOT NULL DEFAULT '0' COMMENT '创建人staff_id',
`update_at` int(11) NOT NULL DEFAULT '0' COMMENT '更新时间',
`update_by` int(11) NOT NULL DEFAULT '0' COMMENT '修改人staff_id',
`status` tinyint(1) NOT NULL DEFAULT '0' COMMENT '状态 1:enable, 0:disable, -1:deleted',
PRIMARY KEY (`id`),
KEY `idx_staff_id` (`staff_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='权限角色与员工关系';
Интерактивный дизайн
Дружеское напоминание: идет большая волна фотографий, здесь есть еще фотографии, если вам не ясно, вы можете нажать на большую картинку, чтобы просмотреть
регистр
После успешной регистрации есть как минимум два способа взаимодействия:
- Успешная регистрация -> перейти на страницу входа
- Успешная регистрация -> автоматический вход -> переход на домашнюю страницу приложения (или другие страницы)
Конкретный процесс взаимодействия выглядит следующим образом:
авторизоваться
Быстрый вход
Процесс быстрого входа в основном такой же, как и выше, за исключением того, что пароль подтверждения заменяется кодом подтверждения подтверждения.
сторонний логин
Взаимодействие стороннего логина на самом деле имеет следующие проблемы:
- Нужно ли мне привязывать номер мобильного телефона/адрес электронной почты после успешного входа в стороннюю учетную запись?
Потому что я обнаружил, что некоторые личные сообщения, чтобы улучшить простоту и скорость использования пользователями, часто генерируют uid сразу после успешного входа в стороннюю систему, без привязки учетной записи. После этого привязка аккаунта будет включать объединение аккаунтов, что очень хлопотно (при наличии кошелька и т.п.). Если мы выполним операцию привязки с самого начала, отношения между будущими учетными записями будут понятными и простыми в обслуживании, а сторонний вход фактически эквивалентен псевдониму обычной учетной записи. В конце концов, результатом этого является то, что таблица учетных записей account_user и сторонняя таблица информации о пользователях account_platformодин ко многимвсе ещеодин на одинОтношение.
- Если привязан, можно ли привязать зарегистрированный номер мобильного телефона/электронную почту?
Это хорошо, что, вообще говоря, выбор привязки в принципе правильный. Окончательная конкретная блок-схема выглядит следующим образом:
Схема интерактивного интерфейса выглядит следующим образом:
Фоновое управление разрешениями
Прежде всего, наша система управления фоном нуждается в громком названии.Поразмыслив некоторое время, компания использовала apollo, поэтому я собирался использовать mars, но вдруг земля, корень всего на земле, случилась. быть основой всего нашего бизнеса Система управления услугами, ха-ха, вот и все~Earth System
Earth SystemФункция управления правами системы в основном разделена на следующие четыре части:
- Управление системой (страница управления управлением)
- отредактируйте страницу
- страница со списком
- Страница меню
- отредактируйте страницу
- страница со списком
- Управление ролями (страница ролей)
- отредактируйте страницу
- страница со списком
- Управление персоналом и ассоциациями ролей (страница карты персонала ролей)
- отредактируйте страницу
- страница со списком
Конкретные взаимодействия заключаются в следующем:
дизайн интерфейса
Интерфейс прикладного уровня (внешний)
1. Регистрационный интерфейс
Параметры запроса:
поле | тип | Это обязательно | описывать |
---|---|---|---|
username | string | не требуется | учетная запись пользователя |
string | электронная почта/телефон альтернатива | Почтовый ящик пользователя | |
phone | string | электронная почта/телефон альтернатива | Номер мобильного телефона пользователя |
code | int | должен пройти | код верификации |
Первый режим взаимодействия (переход на целевую страницу) содержание ответа:
{
"code": "200",
"msg": "OK",
"result": []
}
Режим взаимодействия 2 (переход на главную страницу) содержание ответа:
{
"code": "200",
"msg": "OK",
"result": {
"s_token": "string, 用户会话标示",
"s_token_expire": "string, 用户会话标示过期时间,0不过期",
"username": "string, 用户名",
"nickname": "string, 用户昵称",
"avatar": "string, 用户头像",
"gender": "string, 用户性别,male:男,female:女,other:未知",
}
}
2. Интерфейс входа
Параметры запроса:
поле | тип | Это обязательно | описывать |
---|---|---|---|
username | string | Выберите одно из имени пользователя/электронной почты/телефона | учетная запись пользователя |
string | Выберите одно из имени пользователя/электронной почты/телефона | Почтовый ящик пользователя | |
phone | string | Выберите одно из имени пользователя/электронной почты/телефона | Номер мобильного телефона пользователя |
password | string | должен пройти | пароль |
Содержание ответа:
{
"code": "200",
"result": {
"s_token": "string, 用户会话标示",
"s_token_expire": "string, 用户会话标示过期时间,0不过期",
"nickname": "string, 用户昵称",
"username": "string, 用户名",
"avatar": "string, 用户头像",
"gender": "string, 用户性别,male:男,female:女,other:未知",
}
}
3. быстрый вход в интерфейсы
Параметры запроса:
поле | тип | Это обязательно | описывать |
---|---|---|---|
string | электронная почта/телефон альтернатива | Почтовый ящик пользователя | |
phone | string | электронная почта/телефон альтернатива | Номер мобильного телефона пользователя |
code | int | должен пройти | код верификации |
Содержание ответа:
{
"code": "200",
"result": {
"s_token": "string, 用户会话标示",
"s_token_expire": "string, 用户会话标示过期时间,0不过期",
"nickname": "string, 用户昵称",
"username": "string, 用户名",
"avatar": "string, 用户头像",
"gender": "string, 用户性别,male:男,female:女,other:未知",
}
}
4. Сторонний интерфейс входа в систему
Параметры запроса:
поле | тип | Это обязательно | описывать |
---|---|---|---|
type | string | должен пройти | Тип платформы 1: facebook, 2: google, 3: wechat, 4: qq, 5: weibo, 6: twitter. |
platform_id | string | должен пройти | Идентификатор пользователя сторонней платформы |
platform_token | string | должен пройти | Токены сторонних платформ |
Содержание ответа:
{
"code": "200",
"result": {
"s_token": "string, 用户会话标示",
"s_token_expire": "string, 用户会话标示过期时间,0不过期",
"username": "string, 用户名",
"nickname": "string, 用户昵称",
"avatar": "string, 用户头像",
"gender": "string, 用户性别,male:男,female:女,other:未知",
}
}
5. Интерфейс модификации пользовательской информации
Параметры запроса:
поле | тип | Это обязательно | описывать |
---|---|---|---|
username | string | не требуется | учетная запись пользователя |
nickname | string | не требуется | Никнейм |
avatar | string | не требуется | адрес аватара |
gender | string | не требуется | Пол пользователя, мужской: мужской, женский: женский, другое: неизвестно |
Содержание ответа:
{
"code": "200",
"result": {
"username": "string, 用户名",
"nickname": "string, 用户昵称",
"avatar": "string, 用户头像",
"gender": "string, 用户性别,male:男,female:女,other:未知",
}
}
6. Проверка статуса входа пользователя
Параметры запроса:
поле | тип | Это обязательно | описывать |
---|---|---|---|
s_token | string | должен пройти | Идентификатор сеанса пользователя |
Содержание ответа:
{
"code": "200",
"result": {
"s_token_expire": "string, 用户会话标示过期时间,0不过期, -1登陆失效",
}
}
Сервисный интерфейс (базовый сервис, внутренний)
Услуги по работе с аккаунтом:
- регистр
Параметры запроса:
поле | тип | Это обязательно | описывать |
---|---|---|---|
username | string | не требуется | учетная запись пользователя |
string | электронная почта/телефон альтернатива | Почтовый ящик пользователя | |
phone | string | электронная почта/телефон альтернатива | Номер мобильного телефона пользователя |
Первый режим взаимодействия (переход на целевую страницу) содержание ответа:
{
"code": "200",
"msg": "OK",
"result": {
"uid": "string, 账户ID"
}
}
- авторизоваться
Параметры запроса:
поле | тип | Это обязательно | описывать |
---|---|---|---|
username | string | не требуется | учетная запись пользователя |
string | электронная почта/телефон альтернатива | Почтовый ящик пользователя | |
phone | string | электронная почта/телефон альтернатива | Номер мобильного телефона пользователя |
password | string | должен пройти | пароль |
Содержание ответа:
{
"code": "200",
"msg": "OK",
"result": {
"uid": "string, 账户ID"
}
}
- Войти в систему с
Параметры запроса:
поле | тип | Это обязательно | описывать |
---|---|---|---|
type | string | должен пройти | Тип платформы 1: facebook, 2: google, 3: wechat, 4: qq, 5: weibo, 6: twitter. |
platform_id | string | должен пройти | Идентификатор пользователя сторонней платформы |
platform_token | string | должен пройти | Токены сторонних платформ |
Содержание ответа:
{
"code": "200",
"result": {
"uid": "string, 账户ID",
"nickname": "string, 用户昵称",
"avatar": "string, 用户头像",
}
}
Служба разрешений
- получить системное меню
Параметры запроса:
поле | тип | Это обязательно | описывать |
---|---|---|---|
ms_id | string | должен пройти | Идентификатор системы |
Содержание ответа:
{
"code": "200",
"msg": "OK",
"result": {
"ms_name": "string, 系统名称",
"ms_desc": "string, 系统描述",
"ms_domain": "string, 系统域名",
"list": [
{
"parent_id": "string, 父菜单ID",
"menu_id": "string, 菜单ID",
"menu_name": "string, 菜单ID",
"menu_desc": "string, 菜单描述",
"menu_uri": "string, 菜单uri",
"child" : [
{
"parent_id": "string, 父菜单ID",
"menu_id": "string, 菜单ID",
"menu_name": "string, 菜单ID",
"menu_desc": "string, 菜单描述",
"menu_uri": "string, 菜单uri",
"child" : []
}
]
}
]
}
}
- проверка разрешений
Параметры запроса:
поле | тип | Это обязательно | описывать |
---|---|---|---|
menu_id | string | должен пройти | идентификатор меню |
Содержание ответа:
{
"code": "200",
"msg": "OK",
"result": []
}
Эпилог
Если в тексте есть что-то неправильное или несовершенное, я надеюсь, что вы будете больше комментировать, учиться друг у друга и улучшать друг друга~
адрес проекта:GitHub.com/payee-shop/лошадь…
Краткое представление участников проекта skr-shop
В произвольном порядке, в лексикографическом порядке
Никнейм | Введение | личный блог |
---|---|---|
AStraw | Дипломированный предприниматель, в настоящее время занимается внутренними исследованиями и разработками торгового центра в Xiaomi Technology Overseas Mall Group. | -------- |
Даю | PHP сторонний проект агрегации платежей, используемый большинством людей в КитаеPaymentАвтор, предприниматель, в настоящее время занимается внутренними исследованиями и разработками торгового центра в Xiaomi Technology Overseas Mall Group. | Дайу Ток |
lwhcv | Работал в Baidu/Rong 360, а сейчас занимается внутренними исследованиями и разработками торгового центра в Xiaomi Technology Overseas Mall Group. | -------- |
TIGERB | PHP-фреймворкEasyPHPАвтор имеет опыт работы в раундах A/B/C стартапов электронной коммерции и в настоящее время занимается внутренними исследованиями и разработками торгового центра в Xiaomi Technology Overseas Mall Group. | TIGERB.cn |