Project1_04_Docker+SpringBoot+Vue===>邮箱注册登录+短信注册登录+alipay支付

一、项目环境

  1. 前端页面:Vue
  2. Project SDK:JDK1.8
  3. 服务器: 阿里云

二、项目演示

  1. 项目源码:shoppingProject01_pub : version4.0
  2. 项目参考:Project03不良人_前后端分离旅游项目实战不良人_Docker全家桶狂神说_支付宝支付对接
  3. 项目运行注意事项:同Project03
  4. 项目运行过程:
    项目网址:shoppingProject01_dev【若无法访问是我在维护】

三、主要模块说明

1 支付宝支付模块说明:

1.1 主要信息获取途径:
为了实现alipay功能,需要信息如下:
[a] APPID;[b] 商家私钥;[c] 支付宝公钥;[d] 支付回调地址;[e] 网关地址。
(1) 笔者采用支付宝沙箱测试获得信息[a]~[c]、[e];
(2) 为了实现有效地址[d],笔者将项目在服务器部署,同时整合了狂神说团队的接口;
(3) 为了模拟买家支付过程,笔者通过支付宝沙箱平台在手机上下载了虚拟支付宝。

1.2 数据库中主要整合过程说明:
(1) 数据库中有三张表:uesrinfo、iteminfo和orderinfo,其中userinfo用来存储用户登录信息;iteminfo用来存储商品信息;对于选中的指定商品,orderinfo用来在用户扫码支付后,存储关于该商品的订单信息。

1.3 代码中主要整合过程说明:
(1) 加依赖引配置请见源码。
(2) 从controller聊起:

在 ItemController 中,
1)如下代码段

    // 支付单件商品
    @GetMapping("payForItem")
    public byte[] alipay(String itemid) {
//        log.info("itemid=====>"+itemid);
        PayVo payVo = new PayVo();
        payVo.setItemid(itemid);
        payVo.setUserId("1");
        return alipayService.alipay(payVo);
    }

将指定的商品id保存在payVo实例化对象中,而后调用Service层alipayService。
2)而后的代码段

    public String notify_url(HttpServletRequest request) throws Exception {
        // 1: 调用支付回调
        boolean result = alipayCallback(request);
        if (result) {
            return "success"; // 请不要修改或删除
        } else {
            // 验证失败
            return "fail";
        }
    }

用来接收支付宝的回调信息(回调的主要目的就是在数据库中存储订单信息)。
3) 在往下的alipayCallback方法中,引用了service层 payCommonService 实例化对象,该对象基于设计模式思想清爽地将用户分级(普通用户、VIP用户)再进行订单保存。

在 OrderController 中,如下代码段:

    @PostMapping("/alipay/callback")
    public R listenerCallback(@RequestBody PayVo payVo){
        String userid = "1";
        String itemid = payVo.getItemid();
        Integer count = orderService.findOrderCount(userid,itemid);
        return count > 0 ?R.ok():R.error();
    }

目的是为了告知扫码支付的用户,指定的商品是否已被其购买(依据在订单表中查找某条数据是否存在的思维)。

(3) 在service层,AlipayServiceImpl文件用于支付二维码的生成。

2 基于Docker的服务器部署说明:
Step1:阿里云服务器中Docker的安装与启动:

# docker安装
curl -fsSL get.docker.com -o get-docker.sh
sudo sh get-docker.sh --mirror Aliyun
# docker启动
systemctl status | start | stop | restart docker
# 配置docker安装自启动
systemctl enable docker
# 建立docker组,并使用root用户
sudo groupadd docker
sudo usermod -aG docker $USER
# 重启docker服务
systemctl restart docker  # 如果后续docker运行出了问题,可能重启会解决
# docker镜像加速,请参考不良人docker全家桶视频

Step2:Idea远程操作Docker如图1所示
在这里插入图片描述

图1 Idea远程连接服务器

Step3:通过MobaXterm远程连接服务器,
mkdir login03demo
cd login03demo

将项目打成jar包(Maven->package),构建关于该jar包的Dockerfile文件:

FROM openjdk:8-jre
WORKDIR /app
ADD myproject3-0.0.1-SNAPSHOT.jar login03code.jar
EXPOSE 8989
ENTRYPOINT ["java","-jar"]
CMD ["login03code.jar"]

在 login03demo 文件夹下,执行如下命令

docker build -t login03test:01 .  # 在分号前后分别是镜像名和版本号
docker images                     # 可见,jar包以被构建成镜像

而后执行如下命令:

docker build -t login03test:01 .  # 在分号前后分别是镜像名和版本号
docker images                     # 可见,jar包以被构建成镜像
cd ~
mkdir login03
cd login03

在 login03 文件夹下,执行如下命令:

touch docker-compose.yml

编写docker-compose.yml文件(docker-compose是为了整合SpringBoot和MySQL)

version: "3.2"

services:
  mysql:                                        # 服务名
    image: mysql:5.7                            # 相当于 run --name
    container_name: mysql                       # 使用哪个镜像, 相当于 run image
    ports:                                      # 用来完成host与容器端口的映射关系, 相当于 run -p
      - "3306:3306"
    volumes:                                    # 完成宿主机与容器中目录数据卷共享, 相当于 run -v
      - mysqldata:/var/lib/mysql                # 使用自定义路径映射
      - mysqlconf:/etc/mysql                    # 使用自定义路径映射
    environment:
      - MYSQL_ROOT_PASSWORD=1472
    networks:                                   # 代表当前服务使用哪个网桥, 相当于 run -network
      - login03


  login03test:
    image: login03test:01
    container_name: login03test
    ports:
      - "8989:8989"
    networks:
      - login03


volumes:                                        # 声明上面服务所使用的自动创建的卷名
  mysqldata:                                    # 声明指定的卷名 compose自动创建该卷名,但是会在之前加入项目名
  mysqlconf:

networks:                                       # 定义服务用到的桥
  login03:                                      # 定义上面的服务用到的网桥名称 默认创建的是bridge

最后,在 login03 文件夹下指定

docker-compose up

即可在服务器上运行本项目。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值