风险申明
- 本项目仅供学习和研究使用,不鼓励用于商业用途。对于因使用本项目而导致的任何损失,我们不承担任何责任
开发作者
枫度柚子
项目简介
涉及技术栈
后端前端
主要功能
待定验证成功待定application/octet-stream立即充值+确认下单我的订单去支付关闭待定
细节简讲解
Vue3前端整体实现效果展示
注册
登录
主界面
立即充值
二维码支付
我的订单
我的兑换码
兑换码兑换
Java支付宝当面付对接
支付宝的当面付对接
开通支付宝当面付
经营类目营业执照店铺招牌 等待审核应用名称应用图标当面付接口加签方式支付宝开放平台开发助手即密钥生成工具应用公钥设置应用网关提交审核
Java后端如何实现
引入maven依赖
当面付逻辑预下单参考
支付宝官方支付回调(扫码支付)
Go后端如何实现
引入mod
核心配置
具体细节可以参考源码
Java支付迁移至Go支付当面付中台
迁移Go中台应该注意的点
Go中台Base64 ==> 解码 ==> RSA解密 ==> 反序列化 ==> 验签 ==> 进行支付宝调用POST http://127.0.0.1:36259/api/alipay/face2face/pay注意:Java前台请求参数封装=>>验签处理==>转JSON==>RSA加密=>Base64加码==>调用Go支付中台POST /api/chat_pay/alipay/face2face_pay
商品订单表设计
open_ai_chat数据库文档
| 表名 | 说明 |
|---|---|
| Chat聊天兑换表 | |
| Chat聊天记录表 | |
| Chat订单信息表 | |
| Chat超时订单失败记录表 | |
| Chat订单历史记录表 | |
| Chat订单明细表 | |
| Chat商品表 | |
| chat聊天室表 | |
| Chat敏感词表 | |
| Chat用户表 | |
| Chat用户绑定关系表 | |
| Chat用户邮箱绑定表 | |
| Chat用户聊天兑换记录表 | |
| Chat用户登录日志表 | |
| Sys系统邮箱发送日志表 | |
| Sys系统邮箱验证码表 |
说明: Chat聊天兑换表
数据列:
| 序号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
|---|---|---|---|---|---|---|---|---|
| 1 | id | bigint | 20 | 0 | N | Y | ID | |
| 2 | product_id | bigint | 20 | 0 | N | N | 商品id#chat_product | |
| 3 | name | varchar | 30 | 0 | N | N | 名称 | |
| 4 | code | varchar | 100 | 0 | N | N | 通兑码 | |
| 5 | reward_use_times | int | 10 | 0 | N | N | 0 | 奖励次数 |
| 6 | price | decimal | 11 | 2 | N | N | 0.00 | 面值 |
| 7 | is_used | bit | 1 | 0 | N | N | 0 | 是否使用,false否,true是 |
| 8 | is_occupied | bit | 1 | 0 | N | N | 0 | 是否被占用:0否1是 |
| 9 | status | bit | 1 | 0 | N | N | 0 | 状态1:启用2:停用 |
| 10 | is_deleted | int | 10 | 0 | N | N | 0 | 是否删除0否1是 |
| 11 | activation_time | datetime | 19 | 0 | Y | N | 激活时间 | |
| 12 | expires_days | int | 10 | 0 | Y | N | 0 | 多少天后过期 |
| 13 | create_time | datetime | 19 | 0 | N | N | 创建时间 | |
| 14 | update_time | datetime | 19 | 0 | N | N | 更新时间 |
说明: Chat聊天记录表
数据列:
| 序号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
|---|---|---|---|---|---|---|---|---|
| 1 | id | bigint | 20 | 0 | N | Y | ID | |
| 2 | user_id | bigint | 20 | 0 | N | N | 用户id#chat_user | |
| 3 | message_id | varchar | 255 | 0 | N | N | 消息id | |
| 4 | parent_message_id | varchar | 255 | 0 | Y | N | 父级消息id | |
| 5 | parent_answer_message_id | varchar | 255 | 0 | Y | N | 父级回答消息id | |
| 6 | parent_question_message_id | varchar | 255 | 0 | Y | N | 父级问题消息id | |
| 7 | context_count | bigint | 20 | 0 | N | N | 上下文数量 | |
| 8 | question_context_count | bigint | 20 | 0 | N | N | 问题上下文数量 | |
| 9 | message_type | int | 10 | 0 | N | N | 消息类型枚举 | |
| 10 | chat_room_id | bigint | 20 | 0 | N | N | 聊天室id#chat_room | |
| 11 | conversation_id | varchar | 255 | 0 | Y | N | 对话id | |
| 12 | api_type | varchar | 20 | 0 | N | N | API类型 | |
| 13 | model_name | varchar | 50 | 0 | Y | N | 模型名称 | |
| 14 | api_key | varchar | 255 | 0 | Y | N | ApiKey | |
| 15 | content | varchar | 5000 | 0 | N | N | 消息内容 | |
| 16 | original_data | text | 65535 | 0 | Y | N | 消息的原始数据 | |
| 17 | response_error_data | text | 65535 | 0 | Y | N | 错误响应数据 | |
| 18 | prompt_tokens | bigint | 20 | 0 | Y | N | 输入消息的tokens | |
| 19 | completion_tokens | bigint | 20 | 0 | Y | N | 输出消息的tokens | |
| 20 | total_tokens | bigint | 20 | 0 | Y | N | 累计Tokens | |
| 21 | ip | varchar | 255 | 0 | Y | N | ip | |
| 22 | status | int | 10 | 0 | N | N | 聊天信息状态 | |
| 23 | is_hide | bit | 1 | 0 | N | N | 0 | 是否被隐藏 |
| 24 | create_time | datetime | 19 | 0 | N | N | 创建时间 | |
| 25 | update_time | datetime | 19 | 0 | N | N | 更新时间 |
表名: chat_order
说明: Chat订单信息表
数据列:
| 序号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
|---|---|---|---|---|---|---|---|---|
| 1 | id | bigint | 20 | 0 | N | Y | ID | |
| 2 | user_id | bigint | 20 | 0 | N | N | 用户id#chat_user | |
| 3 | total_amount | decimal | 11 | 2 | N | N | 订单总金额 | |
| 4 | pay_amount | decimal | 11 | 2 | N | N | 应付金额 | |
| 5 | status | tinyint | 4 | 0 | N | N | 0 | 订单状态(0:待付款1:待确认2:已完成3:无效订单4已关闭 |
| 6 | type | tinyint | 4 | 0 | N | N | 0 | 订单类型(0:正常订单1:秒杀订单) |
| 7 | remark | varchar | 500 | 0 | Y | N | 备注 | |
| 8 | pay_time | datetime | 19 | 0 | Y | N | 支付时间 | |
| 9 | is_deleted | int | 10 | 0 | N | N | 0 | 是否删除0否1是 |
| 10 | create_time | datetime | 19 | 0 | N | N | 创建时间 | |
| 11 | update_time | datetime | 19 | 0 | N | N | 更新时间 |
说明: Chat超时订单失败记录表
数据列:
| 序号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
|---|---|---|---|---|---|---|---|---|
| 1 | id | bigint | 20 | 0 | N | Y | 主键 | |
| 2 | error_message | text | 65535 | 0 | N | N | 错误信息 | |
| 3 | message_payload | longtext | 2147483647 | 0 | N | N | 消息内容json | |
| 4 | retry_count | int | 10 | 0 | N | N | 0 | 重试次数 |
| 5 | create_time | datetime | 19 | 0 | N | N | 创建时间 |
说明: Chat订单历史记录表
数据列:
| 序号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
|---|---|---|---|---|---|---|---|---|
| 1 | id | bigint | 20 | 0 | N | Y | ID | |
| 2 | user_id | bigint | 20 | 0 | N | N | 用户id#chat_user | |
| 3 | order_id | bigint | 20 | 0 | N | N | 订单id#chat_order | |
| 4 | order_status | tinyint | 4 | 0 | N | N | 0 | 订单状态0:待付款1:待确认2:已完成3:无效订单4:已关闭#chat_order |
| 5 | pay_status | tinyint | 4 | 0 | N | N | 0 | 支付状态0:支付中(0:待付款1:待确认)1:支付成功(2:已完成)2:支付失败(3:无效订单)3:支付关闭 |
| 6 | total_amount | decimal | 11 | 2 | N | N | 0.00 | 订单总金额 |
| 7 | pay_amount | decimal | 11 | 2 | N | N | 应付金额 | |
| 8 | pay_account | varchar | 30 | 0 | Y | N | 支付账户 | |
| 9 | pay_qr_code | varchar | 255 | 0 | Y | N | 支付二维码链接 | |
| 10 | is_deleted | int | 10 | 0 | N | N | 0 | 是否删除0否1是 |
| 11 | create_time | datetime | 19 | 0 | N | N | 创建时间 | |
| 12 | update_time | datetime | 19 | 0 | N | N | 更新时间 | |
| 13 | remark | varchar | 500 | 0 | Y | N | 备注 |
说明: Chat订单明细表
数据列:
| 序号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
|---|---|---|---|---|---|---|---|---|
| 1 | id | bigint | 20 | 0 | N | Y | ID | |
| 2 | order_id | bigint | 20 | 0 | N | N | 订单id#chat_order | |
| 3 | product_id | bigint | 20 | 0 | N | N | 商品id#chat_product | |
| 4 | exchange_num | int | 10 | 0 | N | N | 兑换码数量 | |
| 5 | product_name | varchar | 200 | 0 | N | N | 商品名称#chat_product | |
| 6 | product_price | decimal | 11 | 2 | N | N | 商品价格#chat_product | |
| 7 | is_deleted | int | 10 | 0 | N | N | 0 | 是否删除0否1是 |
| 8 | create_time | datetime | 19 | 0 | N | N | 创建时间 | |
| 9 | update_time | datetime | 19 | 0 | N | N | 更新时间 |
说明: Chat商品表
数据列:
| 序号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
|---|---|---|---|---|---|---|---|---|
| 1 | id | bigint | 20 | 0 | N | Y | ID | |
| 2 | name | varchar | 30 | 0 | N | N | 名称 | |
| 3 | reward_use_times | int | 10 | 0 | N | N | 0 | 奖励次数 |
| 4 | price | decimal | 11 | 2 | N | N | 0.00 | 价格 |
| 5 | description | varchar | 64 | 0 | N | N | 描述 | |
| 6 | sale | int | 10 | 0 | N | N | 0 | 销量 |
| 7 | stock | int | 10 | 0 | N | N | 0 | 库存 |
| 8 | status | bit | 1 | 0 | N | N | 0 | 状态1:启用2:停用 |
| 9 | is_deleted | int | 10 | 0 | N | N | 0 | 是否删除0否1是 |
| 10 | create_time | datetime | 19 | 0 | N | N | 创建时间 | |
| 11 | update_time | datetime | 19 | 0 | N | N | 更新时间 |
表名: chat_room
说明: chat聊天室表
数据列:
| 序号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
|---|---|---|---|---|---|---|---|---|
| 1 | id | bigint | 20 | 0 | N | Y | ID | |
| 2 | user_id | bigint | 20 | 0 | N | N | 用户id#chat_user | |
| 3 | ip | varchar | 255 | 0 | Y | N | ip | |
| 4 | conversation_id | varchar | 255 | 0 | Y | N | 对话id | |
| 5 | first_chat_message_id | bigint | 20 | 0 | N | N | 第一条消息主键 | |
| 6 | first_message_id | varchar | 255 | 0 | N | N | 第一条消息id | |
| 7 | title | varchar | 5000 | 0 | N | N | 对话标题 | |
| 8 | api_type | varchar | 20 | 0 | N | N | API类型 | |
| 9 | create_time | datetime | 19 | 0 | N | N | 创建时间 | |
| 10 | update_time | datetime | 19 | 0 | N | N | 更新时间 |
说明: Chat敏感词表
数据列:
| 序号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
|---|---|---|---|---|---|---|---|---|
| 1 | id | bigint | 20 | 0 | N | Y | ID | |
| 2 | word | varchar | 255 | 0 | N | N | 敏感词 | |
| 3 | status | int | 10 | 0 | N | N | 状态1启用2停用 | |
| 4 | is_deleted | int | 10 | 0 | Y | N | 0 | 是否删除0否1是 |
| 5 | create_time | datetime | 19 | 0 | N | N | 创建时间 | |
| 6 | update_time | datetime | 19 | 0 | N | N | 更新时间 |
表名: chat_user
说明: Chat用户表
数据列:
| 序号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
|---|---|---|---|---|---|---|---|---|
| 1 | id | bigint | 20 | 0 | N | Y | 用户ID | |
| 2 | nickname | varchar | 16 | 0 | N | N | 用户昵称 | |
| 3 | description | varchar | 64 | 0 | Y | N | 描述 | |
| 4 | avatar_version | int | 10 | 0 | N | N | 头像版本 | |
| 5 | last_login_ip | varchar | 64 | 0 | Y | N | 上一次登录IP | |
| 6 | create_time | datetime | 19 | 0 | N | N | 创建时间 | |
| 7 | update_time | datetime | 19 | 0 | N | N | 更新时间 | |
| 8 | can_conversation_times | int | 10 | 0 | Y | N | 0 | 可聊天次数 |
说明: Chat用户绑定关系表
数据列:
| 序号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
|---|---|---|---|---|---|---|---|---|
| 1 | id | bigint | 20 | 0 | N | Y | ID | |
| 2 | binding_type | varchar | 16 | 0 | N | N | 绑定类型 | |
| 3 | user_binding_email_id | bigint | 20 | 0 | N | N | 额外信息表的用户ID#chat_user_binding_email | |
| 4 | user_id | bigint | 20 | 0 | N | N | 基础用户表的ID#chat_user | |
| 5 | create_time | datetime | 19 | 0 | N | N | 创建时间 | |
| 6 | update_time | datetime | 19 | 0 | N | N | 更新时间 |
说明: Chat用户邮箱绑定表
数据列:
| 序号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
|---|---|---|---|---|---|---|---|---|
| 1 | id | bigint | 20 | 0 | N | Y | ID | |
| 2 | username | varchar | 64 | 0 | N | N | 用户名 | |
| 3 | password | varchar | 128 | 0 | N | N | 密码 | |
| 4 | verified | tinyint | 4 | 0 | N | N | 0 | 是否验证过,false否true是 |
| 5 | create_time | datetime | 19 | 0 | N | N | 创建时间 | |
| 6 | update_time | datetime | 19 | 0 | N | N | 更新时间 |
说明: Chat用户聊天兑换记录表
数据列:
| 序号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
|---|---|---|---|---|---|---|---|---|
| 1 | id | bigint | 20 | 0 | N | Y | ID | |
| 2 | user_id | bigint | 20 | 0 | N | N | 用户id#chat_user | |
| 3 | exchange_id | bigint | 20 | 0 | N | N | 兑换id#chat_exchange | |
| 4 | code | varchar | 100 | 0 | N | N | 通兑码#chat_exchange | |
| 5 | create_time | datetime | 19 | 0 | N | N | 创建时间 |
说明: Chat用户登录日志表
数据列:
| 序号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
|---|---|---|---|---|---|---|---|---|
| 1 | id | bigint | 20 | 0 | N | Y | ID | |
| 2 | user_id | bigint | 20 | 0 | N | N | 登录的基础用户ID#chat_user | |
| 3 | login_type | varchar | 32 | 0 | N | N | 登录方式(注册方式),邮箱登录,手机登录等等 | |
| 4 | user_binding_email_id | bigint | 20 | 0 | N | N | 登录信息ID与login_type有关联,邮箱登录时关联#chat_user_binding_email | |
| 5 | login_ip | varchar | 32 | 0 | N | N | 登录的IP地址 | |
| 6 | login_status | bit | 1 | 0 | N | N | 登录状态,1登录成功,0登录失败 | |
| 7 | message | varchar | 64 | 0 | N | N | 登录后返回的消息 | |
| 8 | create_time | datetime | 19 | 0 | N | N | 创建时间 |
说明: Sys系统邮箱发送日志表
数据列:
| 序号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
|---|---|---|---|---|---|---|---|---|
| 1 | id | bigint | 20 | 0 | N | Y | ID | |
| 2 | from_email_address | varchar | 64 | 0 | N | N | 发件人邮箱 | |
| 3 | to_email_address | varchar | 64 | 0 | N | N | 收件人邮箱 | |
| 4 | biz_type | int | 10 | 0 | N | N | 业务类型(10:用户注册验证码认证11:用户找回密码验证码认证12:兑换码购买) | |
| 5 | request_ip | varchar | 255 | 0 | N | N | 请求ip | |
| 6 | content | text | 65535 | 0 | N | N | 发送内容 | |
| 7 | message_id | varchar | 128 | 0 | N | N | 消息id | |
| 8 | status | tinyint | 4 | 0 | N | N | 发送状态,1成功,0失败 | |
| 9 | message | varchar | 1024 | 0 | N | N | 发送后的消息,用于记录成功/失败的信息,成功默认为success | |
| 10 | create_time | datetime | 19 | 0 | N | N | 创建时间 | |
| 11 | update_time | datetime | 19 | 0 | N | N | 更新时间 |
说明: Sys系统邮箱验证码表
数据列:
| 序号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
|---|---|---|---|---|---|---|---|---|
| 1 | id | bigint | 20 | 0 | N | Y | ID | |
| 2 | to_email_address | varchar | 64 | 0 | N | N | 验证码接收邮箱地址 | |
| 3 | verify_code | varchar | 32 | 0 | N | N | 验证码唯一 | |
| 4 | is_used | bit | 1 | 0 | N | Y | 是否使用,false否,true是 | |
| 5 | verify_ip | varchar | 100 | 0 | N | N | 核销IP,方便识别一些机器人账号 | |
| 6 | expire_at | datetime | 19 | 0 | N | N | 验证码过期时间 | |
| 7 | biz_type | tinyint | 4 | 0 | N | N | 当前邮箱业务 | |
| 8 | create_time | datetime | 19 | 0 | N | N | 创建时间 | |
| 9 | update_time | datetime | 19 | 0 | N | N | 更新时间 |
Java商品下单以及超时订单详解
超时订单预备工作
rabbitmq-plugins enable rabbitmq_delayed_message_exchangerabbitmq-plugins enable rabbitmq_shovel rabbitmq_shovel_management
Java后台处理
引入Maven依赖
配置yaml
对应Bean注册
需要注意的地方
- 具体如何使用cloud stream可以参考官网的例子,或者此项目里面的代码
- 注意:
- Cloud stream4 和之前的写法是有很大区别的,生产者代码可以一份,通过绑定交换机来进行传输信息,但是消费者可能有多个bean,这里最好指定好对应的bean名称与yaml配置里的保持一致
Go中台支付订单回调详解
POST应用网关
Chat商品下单整个流程操作详解
校验当前用户是否存在未支付的订单,如果存在就提示先支付或者取消订单校验合法性,校验库存就从Redis缓存中进行,扣减库存也是从这里面进行预扣减计算总金额组装订单组装历史订单组装订单项下单数据落库编程式事务事务成功Redis库存扣减发送延迟队列,超时时间进行处理