目录
介绍
第三方登录,主要介绍一个系统兼容多个移动端应用来设计
手机号唯一,识别多平台多小程序业务场景,多个平台共用一个手机号,手机号唯一
用户id |
手机号 |
应用appId |
应用unionId |
100 |
15010086100 |
123456 |
123456890 |
123457 |
123457890 |
表结构关系表示如下:
主表必要字段
主键ID |
手机号 |
邮箱 |
用户昵称 |
头像 |
性别 |
备注 |
删除状态 |
创建时间 |
12345 |
150****1000 |
用户12345 |
||||||
12346 |
150****1001 |
用户12346 |
附表必要字段
用户ID |
来源平台 |
APPID |
unionId |
openId |
删除状态 |
创建时间 |
12345 |
1 |
123456 |
123456890 |
12345681 |
||
1 |
123457 |
123457890 |
12345781 |
来源平台字段:1、微信小程序、2、微信公众号、3、网页H5 4、支付宝,9、其他
业务流程
业务实现流程
数据库脚本
postgresql数据库脚本
用户表
C端用户主表
-- 新增第三方C端用户表:C端用户主表
DROP TABLE IF EXISTS "pig"."sys_third_user";
CREATE TABLE "pig"."sys_third_user" (
"id" serial8 primary key,
"phone" varchar(255) COLLATE "pg_catalog"."default",
"email" varchar(255) COLLATE "pg_catalog"."default",
"nickname" varchar(255) COLLATE "pg_catalog"."default",
"avatar" varchar(500) COLLATE "pg_catalog"."default",
"gender" int4 DEFAULT 0,
"remark" text COLLATE "pg_catalog"."default",
"platform" int4 DEFAULT 0,
"lock_flag" char(1) COLLATE "pg_catalog"."default" DEFAULT '0'::bpchar,
"del_flag" char(1) COLLATE "pg_catalog"."default" DEFAULT '0'::bpchar,
"create_time" timestamp(6),
"update_time" timestamp(6)
);
COMMENT ON COLUMN "pig"."sys_third_user"."id" IS 'ID';
COMMENT ON COLUMN "pig"."sys_third_user"."phone" IS '手机号';
COMMENT ON COLUMN "pig"."sys_third_user"."email" IS '邮箱';
COMMENT ON COLUMN "pig"."sys_third_user"."nickname" IS '用户昵称';
COMMENT ON COLUMN "pig"."sys_third_user"."avatar" IS '头像地址';
COMMENT ON COLUMN "pig"."sys_third_user"."gender" IS '性别:0未知,1男,2女';
COMMENT ON COLUMN "pig"."sys_third_user"."remark" IS '备注信息';
COMMENT ON COLUMN "pig"."sys_third_user"."platform" IS '对接平台:1智慧工地,2智慧农业';
COMMENT ON COLUMN "pig"."sys_third_user"."lock_flag" IS '0-正常,9-锁定';
COMMENT ON COLUMN "pig"."sys_third_user"."del_flag" IS '0-正常,1-删除';
COMMENT ON COLUMN "pig"."sys_third_user"."create_time" IS '创建时间(只读)';
COMMENT ON COLUMN "pig"."sys_third_user"."update_time" IS '更新时间';
COMMENT ON TABLE "pig"."sys_third_user" IS 'C端个人用户表';
CREATE INDEX IF NOT EXISTS idx_sys_third_user_phone ON "pig"."sys_third_user" (phone, del_flag);
用户应用表
C端用户应用关联表
-- 新增第三方C端用户附表:C端用户主表的附表
DROP TABLE IF EXISTS "pig"."sys_third_user_app";
CREATE TABLE "pig"."sys_third_user_app" (
"id" serial8 primary key,
"user_id" int8,
"origin" int4 DEFAULT 0,
"platform" int4 DEFAULT 0,
"app_id" varchar(255) COLLATE "pg_catalog"."default",
"union_id" varchar(255) COLLATE "pg_catalog"."default",
"open_id" varchar(255) COLLATE "pg_catalog"."default",
"remark" text COLLATE "pg_catalog"."default",
"del_flag" char(1) COLLATE "pg_catalog"."default" DEFAULT '0'::bpchar,
"create_time" timestamp(6),
"update_time" timestamp(6)
);
COMMENT ON COLUMN "pig"."sys_third_user_app"."id" IS 'ID';
COMMENT ON COLUMN "pig"."sys_third_user_app"."user_id" IS '用户id';
COMMENT ON COLUMN "pig"."sys_third_user_app"."origin" IS '应用平台来源:1、微信小程序、2、微信公众号、3、网页H5 4、支付宝,9、其他';
COMMENT ON COLUMN "pig"."sys_third_user_app"."platform" IS '对接平台:对接平台:1智慧工地,2智慧农业';
COMMENT ON COLUMN "pig"."sys_third_user_app"."app_id" IS '应用appId';
COMMENT ON COLUMN "pig"."sys_third_user_app"."union_id" IS '用户的unionId';
COMMENT ON COLUMN "pig"."sys_third_user_app"."open_id" IS '用户的openId';
COMMENT ON COLUMN "pig"."sys_third_user_app"."remark" IS '备注信息';
COMMENT ON COLUMN "pig"."sys_third_user_app"."del_flag" IS '0-正常,1-删除';
COMMENT ON COLUMN "pig"."sys_third_user_app"."create_time" IS '创建时间(只读)';
COMMENT ON COLUMN "pig"."sys_third_user_app"."update_time" IS '更新时间';
COMMENT ON TABLE "pig"."sys_third_user_app" IS 'C端个人用户表附表';
CREATE INDEX IF NOT EXISTS idx_sys_third_user_app_user_id ON "pig"."sys_third_user_app" (user_id, del_flag);
代码实现
前端注册登录参数
{
"loginWay": 2,
"phone": "15010089100",
"nickname": "AE86100",
"avatar": "",
"gender": 1,
"origin": 1,
"platform": 2,
"appId": "wx7656607fe455999",
"unionId": "oIZP66apYo_q3zmvBbH2CgAzv6H1",
"openId": "onLIm4y_qedXy7JPgyC8-iEhOkc1",
"remark": "remark",
"code": "123456"
}
Controller
接口入参对象:ThirdUserDTO.java
package com.pig4cloud.pig.admin.api.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
/**
* @author: 可乐加糖
* @createTime: 2023年05月18日 13:59
* @description: -小程序获取手机号
*/
@Data
@Schema(description = "C段用户注册")
public class ThirdUserDTO implements Serializable {
@Schema(description ="ID")
private Long id;
@Schema(description ="手机号")
private String phone;
@Schema(description ="邮箱")
private String email;
/**
* 国际区号码
*/
@Schema(description ="国际区号码")
private String dialCode;