技术方案
## 授权方式
1. 小游戏授权
2. 短信验证码授权
## 授权接口验证方式
- client_id=mini
- client_secret=mini
- 加密方式auth=Base64.encode((client_id + ":" + client_secret).getBytes());
- 登录的请求头 Authorization=Basic auth(中间有空格)
- 登录成功后请求头 Authorization=Bearer auth
- token用户的唯一标识
## 第三方接口验证方式
- app_id=由后台配置
- secret=由后台配置
- 采用sha256的签名方式,请求参数值进行ascii码小到大排序,比如
```
{
"a","123456",
"b","bbbwwww",
"b","ccccdddd"
}
```
- String str = 123456 + bbbwwww + ccccdddd + secret;+号代表拼接,最后拼接secret
- String sign = sha256Utils.sign(str);
- sign样例:4a3222c0edeee3705e49bee8706ba8e770cfbec3fc82d9ca17440789e0507c1d
- 请求头带上,APP_ID=app_id
- 后台会根据app_id 拿到 secret进行签名验证.
## 积分表
```language
CREATE TABLE `kbankscorex_app`.`app_integral` (
`user_id` bigint NOT NULL DEFAULT 0 COMMENT '用户id',
`total_integral` bigint NULL DEFAULT NULL COMMENT '累计积分',
`integral` bigint NULL DEFAULT NULL COMMENT '剩余积分',
`convert_integral` bigint NULL DEFAULT NULL COMMENT '兑换积分//兑换积分+剩余积分=累计积分',
`create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
`update_time` datetime NULL DEFAULT NULL COMMENT '修改时间',
PRIMARY KEY (`user_id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
```
## 积分明细表
```language
CREATE TABLE `kbankscorex_app`.`app_integral_detail` (
`integral_detail_id` bigint NOT NULL COMMENT '积分明细id',
`user_id` bigint NOT NULL DEFAULT 0 COMMENT '用户id',
`integral_type` int NOT NULL COMMENT '积分类型 1兑换积分(扣减积分) 2获取积分(增加积分)',
`integral` int NOT NULL COMMENT '积分',
`channel` varchar(15) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '渠道来源 1-小游戏 2-h5',
`creat_time` datetime NOT NULL COMMENT '创建时间',
`create_id` bigint NULL DEFAULT NULL COMMENT '创建人id',
`create_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '创建人名称',
PRIMARY KEY (`integral_detail_id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
```
## 应用授权表
```language
CREATE TABLE `app_auth` (
`app_id` int NOT NULL COMMENT 'app_id',
`secret` varchar(255) COLLATE utf8mb4_general_ci NOT NULL COMMENT '秘钥',
`channel` varchar(15) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '渠道来源 1-小游戏 2-h5',
`ip_white_list` varchar(255) COLLATE utf8mb4_general_ci NOT NULL COMMENT 'ip白名单,多个,分割',
`host_white_list` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '域名白名单',
`enable` int NOT NULL DEFAULT '1' COMMENT '开关 1开 0关',
`create_time` datetime NOT NULL COMMENT '创建时间',
`update_time` datetime NOT NULL COMMENT '修改时间',
PRIMARY KEY (`app_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
```