1.内容管理
1.1内容管理是什么?(面试)
内容管理系统(content management system ),是协助组织和个人,借助信息技术,实现内容的创建、储存、分享、应用、检索,并在企业个人、组织、业务、战略等诸方面产生价值的过程 。能够支撑内容管理的一种工具或一套工具的软件系统。 不同的项目对内容的定位不同,比如:新闻媒体对新闻信息的管理,公司管理对公司内部数据内容管理、物流对订单内容管理等。
总结:CMS, 使用计算机技术来管理行业内相关数据
本项目作为一个大型的在线教育平台,其内容管理主要对课程相关内容进行管理,从课程数据的录入、课程审批、课程内容发布等内容性的业务需求数据进行管理。
1.2内容管理数据模型
1.2业务介绍(面试)
教育机构通过内容管理,可以添加课程内容,添加课程计划,添加课程教师信息。 
1、课程内容:包括课程的基本信息和课程营销。
2、课程计划:包括课程授课的主体大纲和关联的大纲的资料。
3、课程教师:包括课程授课的教师信息(课程不讲解,留作课程作业)。
1.3业务流程(面试)
1.3.1课程内容管理
1.教育机构用户在门户管理界面中的课程管理链接进入课程管理界面。
2.在管理界面中可以对课程进行列表查询和管理。
3.添加课程时选在课程的类型。
4.选择课程类型后,添加课程基本信息和课程营销数据。
总结:教育机构从在线平台通过门户管理界面进入课程管理界面,在管理界面中查询、管理、添加课程信息。
1.3.2课程计划管理
- 对课程基本信息保存后,填写课程计划,如果课程有课程计划需要将其查询出来。
2 对新课程没有课程计划,需要填写课程计划大章节。
3 在课程计划大章节下填写课程小章节。
总结:填写完基本信息后,填写课程计划,若有则查询,若无则填写课程大章节、小章节。1.3.3课程教师管理
- 保存课程计划,对课程的教师进行管理,如果课程有教师信息需要查询出来,并对课程的教师进行管理
2.接口开发规范
2.1接口路径规范
2.1.1.HTTP 请求方式规范
- GET 请求(SELECT):从服务器取出资源(一项或多项)
- POST请求(CREATE):在服务器新建一个资源
- PUT 请求(UPDATE):在服务器更新资源(客户端提供改变后的完整资源)
-
2.1.2.HTTP 请求地址
由于 HTTP 请求路径使用 Restful 风格,URI 中尽量避免使用动词,单词之间可以以中划线”-“分割
2.2接口数据规范
2.2.1.HTTP 服务端接收参数的封装
Controller接收前端的参数种类:
查询操作
- 分页类和多个条件参数分页数据要使用 PageRequestParam 实体类,并通过 QueryString 的方式进行传入参数。条件查询对象封装到以 Query*Model 类中,并且条件查询数据要通过请求体以传递 json 格式来进行传递。请求方式有 Get 请求改为 Post请求。
其他操作
响应数据格式为:Json
- 对于CRUD操作,通常返回直接数据
3.前后端开发步骤(面试)
1.需求分析
2.接口定义
3.服务端和前端并行开发
4.前后端集成测试
后端重点:
- 功能的业务流程和分析
- 后端接口定义
- 后端微服务的开发
- 后端接口的测试
- 前后端集成测试
4.DTO
4.1PO、DTO是什么?
PO:对于数据库中的表来说,开发工程中会定义一个类来描述这张表的结构,这个类一般称之为 PO(persistent Object)持久对象。
DTO(Data Transfer Object,数据传送对象) 是一个普通的Java类,它封装了要传送的数据。当前端需要读取服务器端的数据的时候,服务器端将数据封装在DTO中,这样前端就可以获得它需要的所有数据。
意义:由于 DTO 中的属性都是前端所需要的。相比 PO 来说,属性会精简,这样在转换 Json 时,效率会好。
DTO 中的属性名称可以定义和 PO 属性名称不一致,这样前端工程获得 DTO 对象中的数据,其属性名称不一致,从而提高了应用的安全性。
5.nacos的配置隔离和公共配置
5.1nacos中的环境
●Namespace:代表不同环境,如开发、测试、生产环境。
●Group:代表某项目,如XX医疗项目、XX电商项目
●DataId:每个项目下往往有若干个工程,每个配置集(DataId)是一个工程的主配置文件
●profile: 在同一个环境下有不同的配置
创建内容:
①.在项目中我们需要创建出多个 Namespace 环境
②.指定组的名称
③.根据spring.application.name来指定Data Id 值
5.1.1.在开发环境创建groupid
5.1.2.公共配置
mp全局配置
#驼峰下划线转换mybatis-plus.global-config.db-column-underline = true#实体扫描,多个package用逗号或者分号分隔mybatis-plus.typeAliasesPackage = com.xuecheng.*.entity#字段策略 0:"忽略判断",1:"非 NULL 判断"),2:"非空判断"mybatis-plus.global-config.field-strategy=2#全局地开启或关闭配置文件中的所有映射器已经配置的任何缓存,开发时不需要开启。mybatis-plus.configuration.cache-enabled = false#映射文件mapper文件存储位置mybatis-plus.mapper-locations = classpath:com.xuecheng.*.mapper/*.xml#主键类型 0:"数据库ID自增", 1:"用户输入ID",2:"全局唯一ID (数字类型唯一ID)", 3:"全局唯一ID UUID";mybatis-plus.global-config.id-type = 0#刷新mapper 调试神器mybatis-plus.global-config.refresh-mapper = true

spring-http-config.properties 配置
#srpingboot http 配置信息spring.http.encoding.enabled = truespring.http.encoding.charset = UTF-8spring.http.encoding.force = trueserver.use-forward-headers = trueserver.servlet.context-path = /server.port=8888

spring-druid-config.properties 配置
#spring druid 配置信息spring.datasource.driver-class-name = com.mysql.jdbc.Driverspring.datasource.url = jdbc:mysql://ip:3306/xc_content?userUnicode=true&useSSL=false&characterEncoding=utf8spring.datasource.password = rootspring.datasource.username = root#初始化连接池的的连接数据量spring.datasource.druid.initial-size = 5#连接池最小连接数spring.datasource.druid.min-idle = 5#获取连接等待超时时间spring.datasource.druid.max-wait = 60000# 要启用PreparedStatementCache,必须配置大于0,当大于0时,poolPreparedStatements自动触发修改为true。spring.datasource.druid.max-pool-prepared-statement-per-connection-size = 20#连接池中最大激活连接数spring.datasource.druid.max-active = 20

在 Nacos 的 dev 命名空间 下 content-service-dev.properties 添加配置信息
#spring http 配置信息server.servlet.context-path = /contentserver.port=63040#spring druid 配置信息spring.datasource.url = jdbc:mysql://192.168.94.129:3306/xc_content?userUnicode=true&useSSL=false&characterEncoding=utf8
5.2工程引入配置
1.导入依赖
<!-- spring cloud nacos --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId></dependency><!-- druid 配置 --><dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId></dependency>
2.创建 bootstrap.yml 文件
#微服务配置spring:application:name: content-servicejackson:date-format: yyyy-MM-dd HH:mm:sstime-zone: GMT+8cloud:nacos:discovery:server-addr: 192.168.94.129:8848 #注册中心nacos地址namespace: 修改为nacos dev 环境的id值 #dev环境的namespace配置group: ${dev.group}config:server-addr: 192.168.94.129:8848 #配置中心nacos地址namespace: 修改为nacos dev 环境的id值 #dev环境的namespace配置file-extension: properties #文件的后缀名称group: ${dev.group}shared-configs:- dataId: mp-config.propertiesgroup: ${dev.group}- dataId: spring-http-config.propertiesgroup: ${dev.group}- dataId: spring-druid-config.propertiesgroup: ${dev.group}profiles:active: dev #开启开发环境配置#配置开发组的名称dev:group: xc-group# 日志文件配置路径logging:config: classpath:log4j2-dev.xml# swagger 文档配置swagger:title: "学成在线内容管理系统"description: "内容系统管理系统对课程相关信息进行业务管理数据"base-package: com.xuechengenabled: trueversion: 1.0.0
3.启动类添加注解驱动
@RefreshScope //开启动态刷新@EnableDiscoveryClient //开启注册中心@EnableSwagger2Doc //开启swagger@SpringBootApplicationpublic class ContentApplication {public static void main(String[] args) {SpringApplication.run(ContentApplication.class, args);}}

