# 项目功能介绍

image-20240604195007739

# 项目导入

首先执行 hmdp.sql 脚本

其中的表有:

  • tb_user:用户表
  • tb_user_info:用户详情表
  • tb_shop:商户信息表
  • tb_shop_type:商户类型表
  • tb_blog:用户日记表(达人探店日记)
  • tb_follow:用户关注表
  • tb_voucher:优惠券表
  • tb_voucher_order:优惠券的订单表

[!NOTE]

Mysql 的版本采用 5.7 及以上版本

在我们导入的过程中遇到错误停止,刷新数据库表发现只导入了三张表,( 遇到这种情况建议将SQL语句拿出来单独跑,这样出错会有错误提示信息 ),发现原来是 begin_timeend_time 设置默认值错误,建表语句如下

1
2
3
4
5
6
7
8
9
10
11
DROP TABLE IF EXISTS `tb_seckill_voucher`;
CREATE TABLE `tb_seckill_voucher` (
`voucher_id` bigint(20) UNSIGNED NOT NULL COMMENT '关联的优惠券的id',
`stock` int(8) NOT NULL COMMENT '库存',
`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`begin_time` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '生效时间',
`end_time` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '失效时间',
`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`voucher_id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '秒杀优惠券表,与优惠券是一对一关系' ROW_FORMAT = Compact;

mysql ⽇期时间设置默认 0000-00-0000:00:00 出错。
DEFAULT ‘0000-00-00 00:00:00’(零时间戳),这不满足 sql_mode 中的 NO_ZERO_DATE 而报错。
sql_mode 有两种,一种是空值,一种是严格模式,会给出很多默认设置。在 MySQL5.7 之后默认使用严格模式。
NO_ZERO_DATE:若设置该值,MySQL 数据库不允许插入零日期,插入零日期会抛出错误而不是警告。
在命令行中设置 sql_mode:

1
SET SESSION sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';

[!CAUTION]

实际操作后无效~

# 导入 sql 的目前解决方案:

timestamp 类型的取值范围:1970-01-01 00:00:00 到 2037-12-31 23:59:59

1
2
3
`begin_time` timestamp NOT NULL DEFAULT '1970-01-02 00:00:00' COMMENT '生效时间',
`end_time` timestamp NOT NULL DEFAULT '2037-12-31 00:00:00' COMMENT '失效时间',

重跑 sql 文件后执行成功!

# 后端项目导入

在 idea 中直接导入后端项目:

  1. 修改 application.yaml 文件的配置为自己的配置,server port 如果要修改的话,前端 nginx.conf 文件中的映射端口也要修改,主要修改数据库和 redis 的配置信息。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    server:
    port: 8081
    spring:
    application:
    name: hmdp
    datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://127.0.0.1:3306/hmdp?useSSL=false&serverTimezone=UTC
    username: root
    password: asasas11
    redis:
    host: 127.0.0.1
    port: 6379
    password: asasas11
    lettuce:
    pool:
    max-active: 10
    max-idle: 10
    min-idle: 1
    time-between-eviction-runs: 10s
    jackson:
    default-property-inclusion: non_null # JSON处理时忽略非空字段
    mybatis-plus:
    type-aliases-package: com.hmdp.entity # 别名扫描包
    logging:
    level:
    com.hmdp: debug
    pattern:
    dateformat: mm:ss.SSS

  2. 找到 RedissonConfig 文件,修改 redis 相关信息。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    @Configuration
    public class RedissonConfig {

    @Bean
    public RedissonClient redissonClient(){
    // 配置
    Config config = new Config();
    config.useSingleServer().setAddress("redis://127.0.0.1:6379").setPassword("asasas11");
    // 创建RedissonClient对象
    return Redisson.create(config);
    }
    }

  3. 确保相关依赖成功导入后,启动项目,测试 http://localhost:8081/shop-type/list,是否成功返回 json 数据信息。

    <img src="image-20240604200933777.png" alt="image-20240604200933777" style="zoom:50%;" />

至此,后端项目成功导入

# 前端项目导入

mac 用户如果未安装 nginx,首先安装 nginx

mac 用户安装 nginx 教程

1
https://blog.csdn.net/qq_45695853/article/details/131695755

安装完毕后,找到 nginx 安装目录 /opt/homebrew/Cellar/nginx/1.25.4, 将前端项目下的 html 文件复制过去

1
open /opt/homebrew/Cellar/nginx/1.25.4

image-20240604202033907

在其 html 目录下复制粘贴 hmdp

image-20240604202207381

修改 nginx 的 config 文件

找到 /opt/homebrew/etc/nginx 下的 nginx.conf, 并将 hmdp 里面的 nginx.conf 复制粘贴过来,替换掉原来的

1
open /opt/homebrew/etc/nginx

image-20240604202423113

这里有一个问题

1
2
open /opt/homebrew/var/www/
open /opt/homebrew/Cellar/nginx/1.25.4

这两个文件夹下我都放置了前端项目,但是删了其中任何一个都会出现 404 错误

在 nginx.conf 文件中,以下这些地方可以修改反向代理到后端的端口

image-20240604204954547

mac brew 启动服务时报错 “Bootstrap failed: 5: Input/output error”

https://juejin.cn/post/7149804799314100260

Mac 环境下安装 nginx 并本地部署项目

https://blog.csdn.net/qq_45695853/article/details/131695755