学成在线笔记+踩坑(1)——项目思路、架构、父工程和基础工程,Gogs使用

【黑马Java笔记+踩坑汇总】JavaSE+JavaWeb+SSM+SpringBoot+瑞吉外卖+SpringCloud+黑马旅游+谷粒商城+学成在线+牛客面试题

目录

简历-技术架构

项目预览

后台页面

课程管理

媒资管理页面上传视频

新增课程

课程管理页提交审核

审核员审核后发布课程

前台页面

主页 

验证码登录:

课程详情页

支付学习 

学习

Gogs代码托管平台

介绍 

使用gogs进行团队协作开发

工作时项目开发流程

安装gog

创建组织 

创建团队

创建成员账号 

创建仓库 

配置使用仓库的人员 

父工程 

创建父工程

创建基础工程

导入项目依赖项报错问题解决


简历-技术架构

 学习任何项目要想象自己是架构师,以架构师的思维思考问题,由面及点,有大局观。  

本项目包括了用户端、机构端、运营端。

核心模块:内容管理、媒资管理、课程搜索、订单支付、选课管理、认证授权等。

下图是项目的功能模块图:

学成在线笔记+踩坑(1)——项目思路、架构、父工程和基础工程,Gogs使用_第1张图片

课程发布业务流程: 

学成在线笔记+踩坑(1)——项目思路、架构、父工程和基础工程,Gogs使用_第2张图片学生选课业务流程:

学成在线笔记+踩坑(1)——项目思路、架构、父工程和基础工程,Gogs使用_第3张图片

学成在线笔记+踩坑(1)——项目思路、架构、父工程和基础工程,Gogs使用_第4张图片

各层职责说明如下:

名称

功能描述

用户层

用户层描述了本系统所支持的用户类型包括:pc用户、app用户、h5用户。pc用户通过浏览器访问系统、app用户通过android、ios手机访问系统,H5用户通过h5页面访问系统。

CDN

CDN全称Content Delivery Network,即内容分发网络,本系统所有静态资源全部通过CDN加速来提高访问速度。主要是项目中有视频耗费流量,需要将这些影响用户体验的东西分发到就近的服务器,提高访问速度。

负载均衡

系统的CDN层、UI层、服务层及数据层均设置了负载均衡服务,上图仅在UI层前边标注了负载均衡。 每一层的负载均衡会根据系统的需求来确定负载均衡器的类型,系统支持4层负载均衡+7层负载均衡结合的方式,4层负载均衡是指在网络传输层进行流程转发,根据IP和端口进行转发,7层负载均衡完成HTTP协议负载均衡及反向代理的功能,根据url进行请求转发。

UI层

UI层描述了系统向pc用户、app用户、h5用户提供的产品界面。根据系统功能模块特点确定了UI层包括如下产品界面类型: 1)面向pc用户的门户系统、学习中心系统、教学管理系统、系统管理中心。 2)面向h5用户的门户系统、学习中心系统。 3)面向app用户的门户系统、学习中心系统。

微服务层

微服务层将系统服务分类三类:业务服务、基础服务、第三方代理服务。 业务服务:主要为学成在线核心业务提供服务,并与数据层进行交互获得数据。 基础服务:主要管理学成在线系统运行所需的配置、日志、任务调度、短信等系统级别的服务。 第三方代理服务:系统接入第三方服务完成业务的对接,例如认证、支付、视频点播/直播、用户认证和授权。

数据层

数据层描述了系统的数据存储的内容类型,关系性数据库:持久化的业务数据使用MySQL。 消息队列:存储系统服务间通信的消息,本身提供消息存取服务,与微服务层的系统服务连接。 索引库:存储课程信息的索引信息,本身提供索引维护及搜索的服务,与微服务层的系统服务连接。 缓存:作为系统的缓存服务,作为微服务的缓存数据便于查询。 文件存储:提供系统静态资源文件的分布式存储服务,文件存储服务器作为CDN服务器的数据来源,CDN上的静态资源将最终在文件存储服务器上保存多份。

本项目包括了用户端、机构端、运营端。

核心模块包括:内容管理、媒资管理、课程搜索、订单支付、选课管理、认证授权等。

下图是项目的功能模块图:

项目预览

后台页面

课程管理

学成在线笔记+踩坑(1)——项目思路、架构、父工程和基础工程,Gogs使用_第5张图片

媒资管理页面上传视频

1、教学机构人员进入媒资管理列表查询自己上传的媒资文件。

点击“媒资管理”

学成在线笔记+踩坑(1)——项目思路、架构、父工程和基础工程,Gogs使用_第6张图片

进入媒资管理列表页面查询本机构上传的媒资文件。

学成在线笔记+踩坑(1)——项目思路、架构、父工程和基础工程,Gogs使用_第7张图片

2、教育机构用户在"媒资管理"页面中点击 "上传视频" 按钮。

学成在线笔记+踩坑(1)——项目思路、架构、父工程和基础工程,Gogs使用_第8张图片

点击“上传视频”打开上传页面

学成在线笔记+踩坑(1)——项目思路、架构、父工程和基础工程,Gogs使用_第9张图片

3、选择要上传的文件,自动执行文件上传。

学成在线笔记+踩坑(1)——项目思路、架构、父工程和基础工程,Gogs使用_第10张图片

4、视频上传成功会自动处理,处理完成可以预览视频。

学成在线笔记+踩坑(1)——项目思路、架构、父工程和基础工程,Gogs使用_第11张图片

新增课程

基本信息 

学成在线笔记+踩坑(1)——项目思路、架构、父工程和基础工程,Gogs使用_第12张图片课程大纲,添加视频展示已上传视频列表,可以搜索

学成在线笔记+踩坑(1)——项目思路、架构、父工程和基础工程,Gogs使用_第13张图片

课程管理页提交审核

 

审核员审核后发布课程

 学成在线笔记+踩坑(1)——项目思路、架构、父工程和基础工程,Gogs使用_第14张图片

前台页面

主页 

学成在线笔记+踩坑(1)——项目思路、架构、父工程和基础工程,Gogs使用_第15张图片

验证码登录:

学成在线笔记+踩坑(1)——项目思路、架构、父工程和基础工程,Gogs使用_第16张图片进入后台的入口:

学成在线笔记+踩坑(1)——项目思路、架构、父工程和基础工程,Gogs使用_第17张图片

课程详情页

展示课程介绍、机构、教学老师、目录、问答、笔记等: 

学成在线笔记+踩坑(1)——项目思路、架构、父工程和基础工程,Gogs使用_第18张图片

支付学习 

学成在线笔记+踩坑(1)——项目思路、架构、父工程和基础工程,Gogs使用_第19张图片

支付宝支付支持沙箱支付,方便开发,使用沙箱版支付宝扫码虚拟支付。 

学成在线笔记+踩坑(1)——项目思路、架构、父工程和基础工程,Gogs使用_第20张图片

学习

学成在线笔记+踩坑(1)——项目思路、架构、父工程和基础工程,Gogs使用_第21张图片

Gogs代码托管平台

介绍 

Gogs的官网地址:Gogs: A painless self-hosted Git service,本项目使用Gogs作为Git远程仓库。

git员工独立分支:git每天创建一个开发分支,练习,可以直白看见每天开发的内容,方便管理,通过签出切换分支。实际工作中不同员工各自独立的分支。

使用gogs进行团队协作开发

工作时项目开发流程

项目实战是模拟企业实际开发的场景,自己参考文档独立完成开发任务,项目实战可以有效的培养自己面对需求进行分析与开发的能力。

实战流程如下:

1、由组长将实战的初始代码提交至本组git仓库。

2、每位成员从此仓库clone项目。

3、小组共同讨论实战功能需求及接口。

4、根据自己小组的情况进行分工,每人至少写一个接口并测试通过、提交至仓库。

安装gog

windows启动gogs:

gogs.exe web

进入Gogs:http://localhost:10880/gogs/xuecheng-plus 

账号/密码:gogs/gogs

第一步填写数据库信息

输入虚拟机中的数据库地址和账号、密码,数据库名称为gogs_windows,需要提前在数据库中创建gogs_windows数据库

学成在线笔记+踩坑(1)——项目思路、架构、父工程和基础工程,Gogs使用_第22张图片

学成在线笔记+踩坑(1)——项目思路、架构、父工程和基础工程,Gogs使用_第23张图片

数据库已经提前创建好。

第二步应用基本设置:

仓库目录可以设置在gogs的安装目录下

域名为虚拟域名,组长和组员在自己的hosts文件中配置该域名及对应的组长电脑的IP地址。

学成在线笔记+踩坑(1)——项目思路、架构、父工程和基础工程,Gogs使用_第24张图片

hosts本地关联域名和ip地址:

配置的group1.xuecheng.com域名实际是不存在的,要本地配置:

打开hosts文件:

学成在线笔记+踩坑(1)——项目思路、架构、父工程和基础工程,Gogs使用_第25张图片

192.168.1.2是组长域名,配置后员工访问group1.xuecheng.com就会自动访问到组长域名。

Hosts是一个没有扩展名的系统文件,可以用记事本等工具打开,其作用就是将一些常用的网址域名与其对应的IP地址建立一个关联“数据库”,当用户在浏览器中输入一个需要登录的网址时,系统会首先自动从Hosts文件中寻找对应的IP地址,一旦找到,系统会立即打开对应网页,如果没有找到,则系统会再将网址提交DNS域名解析服务器进行IP地址的解析。

需要注意的是,Hosts文件配置的映射是静态的,如果网络上的计算机更改了请及时更新IP地址,否则将不能访问。

下边配置日志路径 ,日志路径可以设置在gogs的安装目录下

学成在线笔记+踩坑(1)——项目思路、架构、父工程和基础工程,Gogs使用_第26张图片

下边配置管理员账号和密码:gogs/gogs

学成在线笔记+踩坑(1)——项目思路、架构、父工程和基础工程,Gogs使用_第27张图片

输入完毕点击立即安装

安装完毕自动跳转http://group1.xuecheng.com:3000/

别忘了域名group1.xuecheng.com在hosts配置过

创建组织 

 1、首先创建一个组织

学成在线笔记+踩坑(1)——项目思路、架构、父工程和基础工程,Gogs使用_第28张图片

该组织通常以项目名命名,填写组织名称。

学成在线笔记+踩坑(1)——项目思路、架构、父工程和基础工程,Gogs使用_第29张图片

创建成功,进入管理面板修改组织信息

学成在线笔记+踩坑(1)——项目思路、架构、父工程和基础工程,Gogs使用_第30张图片

点击编辑,填写组织名称。

学成在线笔记+踩坑(1)——项目思路、架构、父工程和基础工程,Gogs使用_第31张图片

修改成功,进入首页点击组织名称

学成在线笔记+踩坑(1)——项目思路、架构、父工程和基础工程,Gogs使用_第32张图片

进入组织首页

学成在线笔记+踩坑(1)——项目思路、架构、父工程和基础工程,Gogs使用_第33张图片

创建团队

下边开始创建团队

学成在线笔记+踩坑(1)——项目思路、架构、父工程和基础工程,Gogs使用_第34张图片

假如创建研发团队,填写团队名称

学成在线笔记+踩坑(1)——项目思路、架构、父工程和基础工程,Gogs使用_第35张图片

选择权限等级,注意:这里即使选择了权限等级也需要在仓库管理中去管理协作者的权限。

 团队创建成功

学成在线笔记+踩坑(1)——项目思路、架构、父工程和基础工程,Gogs使用_第36张图片

创建成员账号 

团队创建成功下边开始创建成员账号 。

首先在用户管理中添加账号分配给成员。

学成在线笔记+踩坑(1)——项目思路、架构、父工程和基础工程,Gogs使用_第37张图片

然后在下边的界面 中向团队添加成员

学成在线笔记+踩坑(1)——项目思路、架构、父工程和基础工程,Gogs使用_第38张图片

创建仓库 

 团队和组织创建完成,下边创建仓库,进入组织,创建仓库。

学成在线笔记+踩坑(1)——项目思路、架构、父工程和基础工程,Gogs使用_第39张图片

填写仓库信息

学成在线笔记+踩坑(1)——项目思路、架构、父工程和基础工程,Gogs使用_第40张图片

创建成功,仓库地址:http://192.168.101.65:10880/xuecheng-plus-group1/xuecheng-plus-group1.git,如下

学成在线笔记+踩坑(1)——项目思路、架构、父工程和基础工程,Gogs使用_第41张图片

配置使用仓库的人员 

下边配置使用仓库的人员

点击“仓库设置”,

学成在线笔记+踩坑(1)——项目思路、架构、父工程和基础工程,Gogs使用_第42张图片

添加协作者,将团队成员的账号添加为协作者。

添加完成注意分配权限,如下图,通常测试人员为读取权限,开发人员为读写权限。

学成在线笔记+踩坑(1)——项目思路、架构、父工程和基础工程,Gogs使用_第43张图片

团队Leader需要将初始代码上传至Git仓库,团队成员通过Idea克隆一份项目代码,通过此仓库进行协作开发

父工程 

创建父工程

父工程(聚合和管理依赖包版本)、基础工程(提供基础类库和工具类库)、微服务工程(内容管理、搜索服务、消息服务等)



    4.0.0
    com.xuecheng
    xuecheng-plus-parent
    0.0.1-SNAPSHOT
    xuecheng-plus-parent
    xuecheng-plus-parent
    pom

    
        1.8
        UTF-8
        UTF-8
        2.3.7.RELEASE
        Hoxton.SR9
        1.3.1.Final
        2.2.6.RELEASE
        1.18.8
        4.0.1
        1.2.83
        1.2.8
        8.0.30
        3.4.1
        2.6
        8.4.3
        2.3.1
        1.5.20
        3.10
        4.8.1
        1.9.0.RELEASE
        7.12.1
    


    
        

            
                org.springframework.cloud
                spring-cloud-dependencies
                ${spring-cloud.version}
                pom
                import
            
            
                org.springframework.boot
                spring-boot-dependencies
                ${spring-boot.version}
                pom
                import
            
            
                com.alibaba.cloud
                spring-cloud-alibaba-dependencies
                ${spring-cloud-alibaba.version}
                pom
                import
            
            
            
                org.projectlombok
                lombok
                ${org.projectlombok.version}
            
            
            
                org.mapstruct
                mapstruct-jdk8
                ${org.mapstruct.version}
            
            
                org.mapstruct
                mapstruct-processor
                ${org.mapstruct.version}
            
            
                io.swagger
                swagger-annotations
                ${swagger-annotations.version}
            
            



            
                javax.servlet
                javax.servlet-api
                ${javax.servlet-api.version}
                provided
            
            
            
                com.alibaba
                fastjson
                ${fastjson.version}
            
            
            
                com.alibaba
                druid-spring-boot-starter
                ${druid-spring-boot-starter.version}
            

            
            
                mysql
                mysql-connector-java
                ${mysql-connector-java.version}
            
            
            
                com.baomidou
                mybatis-plus-boot-starter
                ${mybatis-plus-boot-starter.version}
            

            
            
                com.baomidou
                mybatis-plus-generator
                ${mybatis-plus-boot-starter.version}
            

            
            
                commons-lang
                commons-lang
                ${commons-lang.version}
            
            
            
                io.minio
                minio
                ${minio.version}
            
            
            
                com.google.guava
                guava
                25.0-jre
            
            
            
                com.xuxueli
                xxl-job-core
                ${xxl-job-core.version}
            
            
            
                org.springframework.boot
                spring-boot-starter-test
                ${spring-boot.version}
                test
                
                    
                        org.junit.vintage
                        junit-vintage-engine
                    
                
            
            
                com.squareup.okhttp3
                okhttp
                ${okhttp.version}
            

            
                org.apache.commons
                commons-lang3
                ${commons-lang3.version}
            
            
                com.spring4all
                swagger-spring-boot-starter
                ${swagger-spring-boot-starter.version}
            
            
                org.elasticsearch.client
                elasticsearch-rest-high-level-client
                ${elasticsearch.version}
            

            
                org.elasticsearch
                elasticsearch
                ${elasticsearch.version}
            
        

    

    
        ${project.name}
        
        
            
                src/main/resources
                true
                
                    **/*
                
            
            
                src/main/java
                
                    **/*.xml
                
            
        
        
            
                org.apache.maven.plugins
                maven-compiler-plugin
                3.8.1
                
                    
                    1.8
                    
                    1.8
                    
                    
                        
                            org.projectlombok
                            lombok
                            ${org.projectlombok.version}
                        
                    
                
            

            
            
                org.apache.maven.plugins
                maven-resources-plugin
                3.3.0
                
                    utf-8
                    
                    true
                
            
        
    


创建基础工程



    4.0.0
    
    
        com.xuecheng
        xuecheng-plus-parent
        0.0.1-SNAPSHOT

    
        ../xuecheng-plus-parent
    


    xuecheng-plus-base


    
        org.projectlombok
        lombok
    
    
        org.apache.commons
        commons-lang3
    
    
    
        com.alibaba
        fastjson
    

    
    
        javax.servlet
        javax.servlet-api
        provided
    

    
    
        commons-lang
        commons-lang
    
    
        commons-codec
        commons-codec
        1.11
    
    
        io.swagger
        swagger-annotations
    
    
        org.springframework
        spring-web
    
    
        org.springframework.boot
        spring-boot-starter-validation
    
    
        org.springframework.boot
        spring-boot-starter-log4j2
    
    
    
        com.j256.simplemagic
        simplemagic
        1.17
    
    
        org.apache.commons
        commons-lang3
    
    
        com.google.zxing
        core
        3.3.3
    

    
        com.google.zxing
        javase
        3.3.3
    
    
        com.fasterxml.jackson.module
        jackson-module-parameter-names
    
    
        com.fasterxml.jackson.datatype
        jackson-datatype-jdk8
    
    
        com.fasterxml.jackson.datatype
        jackson-datatype-jsr310
    



导入项目依赖项报错问题解决

如果一直卡在加载依赖,或者提示找不到依赖项,尝试点进设置,maven:

因为可能项目内设置的maven路径跟你本地设置的路径不同,导致依赖导入错误。

学成在线笔记+踩坑(1)——项目思路、架构、父工程和基础工程,Gogs使用_第44张图片

你可能感兴趣的:(java,架构,学成在线,spring,boot,spring,cloud)