GithubHelp home page GithubHelp logo

starry-xin / hotspot Goto Github PK

View Code? Open in Web Editor NEW

This project forked from big-sisters-of-anping/hotspot

1.0 1.0 0.0 737 KB

Hotspot后端

Java 56.05% JavaScript 24.32% Shell 0.35% HTML 13.80% Python 5.48%

hotspot's Introduction

Hotspot

1. 项目描述

本项目是Hotspot微信小程序的后端代码,也包括微信小程序内嵌的网页资源代码。

后端开发涉及如下技术:

  • 使用 SpringBoot 作为后台开发框架

  • 使用 Maven 来构建项目以及管理依赖

  • 使用 MyBatis 作为持久层框架

  • 使用 MySQL 作为数据库管理系统

  • 使用 Swagger 来可视化接口,帮助前后端协同开发

  • 使用 Nginx 来部署微信小程序内嵌的静态网站(可选)

    使用Nginx部署而不是直接利用SpringBoot部署,是为了更好地在开发时实现前后端分离

微信小程序内嵌网页的开发涉及如下技术:

  • 使用 BootStrap 作为前端框架
  • 使用 jQuery 来简化 JavaScript 开发
  • 使用 Google Chart 来在网页中可视化统计数据

2. 部署

2.1 部署流程

  1. 环境依赖

    1. 安装 MySQL

    2. 安装 JDK

      java -version # 检查是否安装成功
    3. 安装 Python3(预约决策算法所需)

    4. 安装 Nginx (可选)

  2. 数据库建立:

    1. 开启 MySQL 服务

      # CentOS下
      systemctl start mysqld.service
    2. 根据 MySQL 用户名和密码的设置更改 application-*.yml 配置文件中的jdbc配置

    3. 执行 src/main/resources/databaseGeneratedSQL.sql 中的所有语句,来创建项目所需的数据库表

  3. 运行后台服务:

    1. 在本地使用 Maven 打包项目,并将 target 文件夹下生成的jar包传到服务器
    2. order.py 上传到jar包同级文件夹中
    3. 在服务器上运行jar包,并将日志输出到 nohup.out
    nohup java -jar xxxx.jar &
  4. (可选)为了更好地前后端分离开发,使用 Nginx 部署静态网站(响应微信小程序前端内嵌的HTML):

    1. src/main/resources/static 中的文件上传到服务器上
    2. 在 Nginx 配置文件中将 80 端口的站点目录(即 root 字段)配置成 static 文件夹路径
    3. 重新启动 Nginx
  5. 检查端口:

    netstat -ntlp
    • 此时,只有当以下端口都处于 LISTEN 状态时,以上步骤才都已经顺利完成
      • 3306: mysql —— 若未 LISTEN,检查步骤1是否成功执行
      • 8080: 本项目 —— 若未 LISTEN,检查步骤2是否成功执行
      • 80(可选): HTTP( Nginx 代理)—— 若未 LISTEN,检查步骤3是否成功执行
    • 注意:
      • 若服务器上已经监听了这几个端口,但其他机器依旧不能访问这几个端口
        • 检查是否在服务器租赁商的云服务平台上为你的服务器添加了这几个端口的安全组规则
        • 检查防火墙设置
      • 你也可以用Nginx为需要监听的端口配置统一的代理端口。
  6. 检查是否部署成功:

    • 为了方便前后端协同开发,项目中配置了Swagger;访问项目的Swagger主页,若主页成功加载并且接口能够成功执行,则部署完成

3. 项目结构

.
├── pom.xml	; maven配置文件
├── order.py	; 预约决策算法
└── src	;主要的开发文件夹
   ├── main
   │   ├── java
   │   │   └── com
   │   │       └── example
   │   │           └── demo
   │   │               ├── DemoApplication.java	;工程启动类
   │   │               ├── config	;配置信息文件夹
   │   │               │   ├── dao	;数据访问配置
   │   │               │   │   ├── DataSourceConfiguration.java	;jdbc连接配置
   │   │               │   │   └── SessionFactoryConfiguration.java	;MyBatis配置
   │   │               │   ├── service	;具体的服务类配置
   │   │               │   │   ├── CorsConfig.java	;跨域服务配置(用于浏览器访问时)
   │   │               │   │   └── TransactionManagementConfiguration.java	;数据库事务配置
   │   │               │   └── swagger	;Swagger配置
   │   │               │       └── SwaggerConfig.java
   │   │               ├── controller	;前端控制器文件夹
   │   │               │   ├── NoticeController.java
   │   │               │   ├── OrderController.java
   │   │               │   ├── SearchController.java
   │   │               │   ├── SpotController.java
   │   │               │   ├── UserController.java
   │   │               │   ├── WishController.java
   │   │               │   ├── annotation		;自定义注解
   │   │               │   │   └── TokenLimit.java	;TokenLimit注解
   │   │               │   └── interceptor	;拦截器
   │   │               │       ├── TokenInterceptor.java	;Token拦截器
   │   │               │       └── WebMVCConfig.java		;拦截器配置
   │   │               ├── dao	;数据访问层文件夹
   │   │               │   ├── NoticeDao.java
   │   │               │   ├── OrderDao.java
   │   │               │   ├── SpotDao.java
   │   │               │   ├── UserDao.java
   │   │               │   └── WishDao.java
   │   │               ├── entity	;实体类文件夹
   │   │               │   ├── Notice.java
   │   │               │   ├── Order.java
   │   │               │   ├── Spot.java
   │   │               │   ├── SpotOrderTime.java
   │   │               │   ├── SpotWishTime.java
   │   │               │   ├── User.java
   │   │               │   └── Wish.java
   │   │               ├── handler	;全局处理类文件夹
   │   │               │   └── GlobalExceptionHandler.java	;全局异常处理类
   │   │               ├── service	;数据服务层文件夹
   │   │               │   ├── NoticeService.java
   │   │               │   ├── OrderService.java
   │   │               │   ├── SearchService.java
   │   │               │   ├── SpotService.java
   │   │               │   ├── UserService.java
   │   │               │   ├── WishService.java
   │   │               │   └── impl	;数据服务的实现类文件夹
   │   │               │       ├── NoticeServiceImpl.java
   │   │               │       ├── OrderScheduleTask.java	;每晚23:00调用预约决策算法
   │   │               │       ├── OrderServiceImpl.java
   │   │               │       ├── SearchServiceImpl.java
   │   │               │       ├── SpotServiceImpl.java
   │   │               │       ├── UserServiceImpl.java
   │   │               │       └── WishServiceImpl.java
   │   │               └── util	;工具类
   │   │                   ├── CookieUtil.java	;Cookie解析类
   │   │                   └── TokenUtil.java		;Token管理及检查类(在TokenInterceptor中使用)
   │   └── resources	;资源文件夹
   │       ├── application-*.yml	;不同开发环境对应一个配置文件
   │       ├── application.yml		;指定当前使用的配置
   │       ├── mapper	;MyBatis映射文件(对应../java/com/example/demo/dao中的每个数据访问接口)
   │       │   ├── NoticeDao.xml
   │       │   ├── OrderDao.xml
   │       │   ├── SpotDao.xml
   │       │   ├── UserDao.xml
   │       │   └── WishDao.xml
   │       ├── mybatis-config.xml	;MyBatis配置
   │       ├── static	;静态文件(为了更快地加载html界面,一些依赖下载到了本地)
   │       │   ├── html
   │       │   │   └── orderStatistic.html ;预约统计界面
   │       │   ├── bootstrap-datetimepicker-master	;Bootstrap的datetimepicker依赖包
   │       │   ├── bootstrap-3.3.7-dist	;Bootstrap依赖包
   │       │   └── jquery	;jquery依赖包
   │       └── databaseGeneratedSQL.sql	;项目对应的数据库生成语句
   └── test ;测试文件文件夹

hotspot's People

Contributors

fatyue avatar

Stargazers

Stella Tian avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.