commit 1279a85007604925892dc5b7fbd6d33beb4e4a9c
Author: Yo Vinchen <2982554722@qq.com>
Date: Sun Aug 28 17:57:54 2022 +0800
Initial commit
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..549e00a
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,33 @@
+HELP.md
+target/
+!.mvn/wrapper/maven-wrapper.jar
+!**/src/main/**/target/
+!**/src/test/**/target/
+
+### STS ###
+.apt_generated
+.classpath
+.factorypath
+.project
+.settings
+.springBeans
+.sts4-cache
+
+### IntelliJ IDEA ###
+.idea
+*.iws
+*.iml
+*.ipr
+
+### NetBeans ###
+/nbproject/private/
+/nbbuild/
+/dist/
+/nbdist/
+/.nb-gradle/
+build/
+!**/src/main/**/build/
+!**/src/test/**/build/
+
+### VS Code ###
+.vscode/
diff --git a/.mvn/wrapper/maven-wrapper.jar b/.mvn/wrapper/maven-wrapper.jar
new file mode 100644
index 0000000..c1dd12f
Binary files /dev/null and b/.mvn/wrapper/maven-wrapper.jar differ
diff --git a/.mvn/wrapper/maven-wrapper.properties b/.mvn/wrapper/maven-wrapper.properties
new file mode 100644
index 0000000..22f219d
--- /dev/null
+++ b/.mvn/wrapper/maven-wrapper.properties
@@ -0,0 +1,2 @@
+distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.8.5/apache-maven-3.8.5-bin.zip
+wrapperUrl=https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..be88613
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,71 @@
+
+
+ 4.0.0
+
+
+ org.springframework.boot
+ spring-boot-starter-parent
+ 2.3.7.RELEASE
+
+
+
+ com.offcn.edu
+ uxue-edu001
+ 0.0.1-SNAPSHOT
+ uxue-edu001
+ uxue-edu001
+
+
+ 1.8
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
+
+
+ com.baomidou
+ mybatis-plus-boot-starter
+ 3.0.5
+
+
+
+ mysql
+ mysql-connector-java
+
+
+
+ org.projectlombok
+ lombok
+
+
+
+ io.springfox
+ springfox-swagger2
+ 2.9.2
+
+
+ io.springfox
+ springfox-swagger-ui
+ 2.9.2
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/java/com/offcn/edu/UxueEdu001Application.java b/src/main/java/com/offcn/edu/UxueEdu001Application.java
new file mode 100644
index 0000000..79a445d
--- /dev/null
+++ b/src/main/java/com/offcn/edu/UxueEdu001Application.java
@@ -0,0 +1,15 @@
+package com.offcn.edu;
+
+import org.mybatis.spring.annotation.MapperScan;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+@SpringBootApplication
+@MapperScan("com.offcn.edu.dao")
+public class UxueEdu001Application {
+
+ public static void main(String[] args) {
+ SpringApplication.run(UxueEdu001Application.class, args);
+ }
+
+}
diff --git a/src/main/java/com/offcn/edu/config/SwaggerConfig.java b/src/main/java/com/offcn/edu/config/SwaggerConfig.java
new file mode 100644
index 0000000..8820745
--- /dev/null
+++ b/src/main/java/com/offcn/edu/config/SwaggerConfig.java
@@ -0,0 +1,35 @@
+package com.offcn.edu.config;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import springfox.documentation.builders.ApiInfoBuilder;
+import springfox.documentation.builders.PathSelectors;
+import springfox.documentation.builders.RequestHandlerSelectors;
+import springfox.documentation.service.ApiInfo;
+import springfox.documentation.spi.DocumentationType;
+import springfox.documentation.spring.web.plugins.Docket;
+import springfox.documentation.swagger2.annotations.EnableSwagger2;
+
+@Configuration
+@EnableSwagger2
+public class SwaggerConfig {
+ @Bean
+ public Docket createRestApi() {
+ return new Docket(DocumentationType.SWAGGER_2)
+ .apiInfo(apiInfo())
+ .select()
+ .apis(RequestHandlerSelectors.basePackage("com.offcn.edu.controller"))
+ .paths(PathSelectors.any())
+ .build();
+ }
+
+ private ApiInfo apiInfo() {
+ return new ApiInfoBuilder()
+ .title("优学网后台端接口文档")
+ .description("优学网")
+ .termsOfServiceUrl("http://www.ujiuye.com/")
+ .contact("Vinchen")
+ .version("1.0")
+ .build();
+ }
+}
diff --git a/src/main/java/com/offcn/edu/controller/CourseController.java b/src/main/java/com/offcn/edu/controller/CourseController.java
new file mode 100644
index 0000000..bcf46d0
--- /dev/null
+++ b/src/main/java/com/offcn/edu/controller/CourseController.java
@@ -0,0 +1,103 @@
+package com.offcn.edu.controller;
+
+
+import com.offcn.edu.pojo.Course;
+import com.offcn.edu.pojo.CourseUser;
+import com.offcn.edu.pojo.User;
+import com.offcn.edu.service.CourseService;
+import com.offcn.edu.service.CourseUserService;
+import com.offcn.edu.service.UserService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * 课程表 前端控制器
+ *
+ *
+ * @author Vinchen
+ * @since 2022-06-22
+ */
+@Api(tags = "课程操作接口")
+@CrossOrigin(origins = "*")
+@RestController
+@RequestMapping("/edu/course")
+public class CourseController {
+
+ @Autowired
+ private CourseService courseService;
+
+ @Autowired
+ private UserService userService;
+
+ @Autowired
+ private CourseUserService courseUserService;
+
+ //测试读取全部课程
+ @GetMapping("/")
+ public List findAll() {
+ return courseService.list(null);
+ }
+
+ //正式接口1:据题目分类编号,获取对应题目前八条集合
+ @ApiOperation(value = "据题目分类编号,获取给首页显示用的前8条对应题目集合")
+ @ApiImplicitParam(name = "typeId", value = "分类编号", required = true, paramType = "path")
+ @GetMapping("/items/{typeId}")
+ public List findCourseType(@PathVariable("typeId") Long typeId) {
+ return courseService.findCourseTypeTop8(typeId);
+ }
+
+
+ //正式接口2:搜索方法
+ @ApiOperation(value = "题目搜索接口")
+ @ApiImplicitParam(name = "keyword", value = "搜索关键字", paramType = "path", required = true)
+ @GetMapping("/search/{keyword}")
+ public List search(@PathVariable("keyword") String keyword) {
+ return courseService.searchCourseName(keyword);
+ }
+
+ //正式接口3:根据课程编号,获取对应课程信息+课程详情集合
+ @ApiOperation(value = "根据课程编号,获取对应课程信息+课程详情集合")
+ @ApiImplicitParam(name = "id", value = "课程编号", paramType = "path", required = true)
+ @GetMapping("/{id}")
+ public Map findCourseInfo(@PathVariable("id") Long id) {
+ return courseService.findCourseInfo(id);
+ }
+
+ //正式接口4:据题目分类编号,获取对应题目全部集合
+ @ApiOperation(value = "据题目分类编号,获取给首页显示用的全部对应题目集合")
+ @ApiImplicitParam(name = "typeId", value = "分类编号", required = true, paramType = "path")
+ @GetMapping("/itemsall/{typeId}")
+ public List findCourseAll(@PathVariable("typeId") Long typeId) {
+ return courseService.findCourseTypeAll(typeId);
+ }
+
+ //根据指定用户名,获取当前用户购买课程
+ @ApiOperation(value = "根据指定用户名,获取当前用户购买课程")
+ @ApiImplicitParam(name = "username", value = "用户名", required = true, paramType = "path")
+ @GetMapping("/user/{username}")
+ public List findCouseByUserName(@PathVariable("username") String username) {
+ List courseList = new ArrayList<>();
+ //调用用户服务,根据用户名获取用户对象
+ User user = userService.findUserByUserName(username);
+ if (user != null) {
+ Integer uid = user.getUid();
+ List courseUserList = courseUserService.findCourseUserByUid(uid);
+ //循环遍历集合
+ for (CourseUser courseUser : courseUserList) {
+ //根据课程编号,获取对应课程信息
+ Course course = courseService.getById(courseUser.getCid());
+ courseList.add(course);
+ }
+ }
+ return courseList;
+ }
+}
+
diff --git a/src/main/java/com/offcn/edu/controller/CourseUserController.java b/src/main/java/com/offcn/edu/controller/CourseUserController.java
new file mode 100644
index 0000000..8296853
--- /dev/null
+++ b/src/main/java/com/offcn/edu/controller/CourseUserController.java
@@ -0,0 +1,82 @@
+package com.offcn.edu.controller;
+
+
+import com.offcn.edu.pojo.Course;
+import com.offcn.edu.pojo.CourseUser;
+import com.offcn.edu.pojo.User;
+import com.offcn.edu.service.CourseService;
+import com.offcn.edu.service.CourseUserService;
+import com.offcn.edu.service.UserService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.CrossOrigin;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ *
+ * 前端控制器
+ *
+ *
+ * @author Vinchen
+ * @since 2022-06-22
+ */
+@Api(tags = "课程购买接口")
+@CrossOrigin(origins = "*")
+@RestController
+@RequestMapping("/edu/course-user")
+public class CourseUserController {
+
+ @Autowired
+ private UserService userService;
+ @Autowired
+ private CourseService courseService;
+
+ @Autowired
+ private CourseUserService courseUserService;
+
+
+ //课程购买接口
+ @ApiOperation(value = "课程购买接口")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "cid",value = "课程编号",required = true),
+ @ApiImplicitParam(name = "username",value = "用户名",required = true)
+ })
+ @PostMapping("/")
+ public String courseSale(Integer cid, String username) {
+
+ //根据课程编号查询课程信息
+ Course course = courseService.getById(cid);
+ if (course == null) {
+ return "null:";
+ }
+
+ //根据用户名,获取用户信息
+ User user = userService.findUserByUserName(username);
+ if (user == null) {
+ return "null";
+ }
+
+ //获取用户编号
+ Integer uid = user.getUid();
+ //调用用户课程服务,新增用户购物记录
+
+ //先验证该用户是否购买过该课程
+ CourseUser courseUser1 = courseUserService.findEqualByCidUid(cid, uid);
+ if (courseUser1!=null){
+ return "error";
+ }
+
+ CourseUser courseUser = new CourseUser();
+ courseUser.setCid(cid.intValue());
+ courseUser.setUid(uid);
+
+ courseUserService.save(courseUser);
+ return "success";
+ }
+}
+
diff --git a/src/main/java/com/offcn/edu/controller/CoursedetailController.java b/src/main/java/com/offcn/edu/controller/CoursedetailController.java
new file mode 100644
index 0000000..9eba204
--- /dev/null
+++ b/src/main/java/com/offcn/edu/controller/CoursedetailController.java
@@ -0,0 +1,22 @@
+package com.offcn.edu.controller;
+
+
+import org.springframework.web.bind.annotation.CrossOrigin;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ *
+ * 前端控制器
+ *
+ *
+ * @author Vinchen
+ * @since 2022-06-22
+ */
+@RestController
+@CrossOrigin(origins = "*")
+@RequestMapping("/edu/coursedetail")
+public class CoursedetailController {
+
+}
+
diff --git a/src/main/java/com/offcn/edu/controller/UserController.java b/src/main/java/com/offcn/edu/controller/UserController.java
new file mode 100644
index 0000000..6a9d38c
--- /dev/null
+++ b/src/main/java/com/offcn/edu/controller/UserController.java
@@ -0,0 +1,77 @@
+package com.offcn.edu.controller;
+
+
+import com.offcn.edu.pojo.User;
+import com.offcn.edu.service.UserService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.CrossOrigin;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Date;
+
+/**
+ *
+ * 用户表 前端控制器
+ *
+ *
+ * @author Vinchen
+ * @since 2022-06-22
+ */
+@Api(tags = "用户操作接口")
+@CrossOrigin(origins = "*")
+@RestController
+@RequestMapping("/edu/user")
+public class UserController {
+
+ @Autowired
+ private UserService userService;
+
+ //正式接口:用户注册
+ @ApiOperation(value = "用户注册接口")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "phone", value = "手机号", required = true),
+ @ApiImplicitParam(name = "password", value = "密码", required = true),
+ @ApiImplicitParam(name = "repassword", value = "重复密码", required = true)
+ })
+ @PostMapping("/")
+ public String register(String phone, String password, String repassword) {
+ //判断二次输入密码是否相同
+ if (password != null && repassword != null && password.equals(repassword)) {
+ //发起注册,创建用户对象
+ User user = new User();
+ user.setPhone(phone);
+ user.setUsername(phone);
+ user.setName(phone);
+ user.setPassword(password);
+ user.setCreatetime(new Date());
+ //调用用户服务,保存
+ userService.save(user);
+ return "成功";
+ } else {
+ return "失败";
+ }
+ }
+
+ //正式接口2:用户登录接口
+ @ApiOperation(value = "用户登录接口")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "phone", value = "手机号", required = true),
+ @ApiImplicitParam(name = "password", value = "密码", required = true)
+ })
+ @PostMapping("/login")
+ public User login(String phone, String password) {
+ User user = userService.login(phone, password);
+ if (user != null) {
+ return user;
+ } else {
+ return null;
+ }
+ }
+}
+
diff --git a/src/main/java/com/offcn/edu/dao/CourseMapper.java b/src/main/java/com/offcn/edu/dao/CourseMapper.java
new file mode 100644
index 0000000..1bbe065
--- /dev/null
+++ b/src/main/java/com/offcn/edu/dao/CourseMapper.java
@@ -0,0 +1,28 @@
+package com.offcn.edu.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.offcn.edu.pojo.Course;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ *
+ * 课程表 Mapper 接口
+ *
+ *
+ * @author Vinchen
+ * @since 2022-06-22
+ */
+public interface CourseMapper extends BaseMapper {
+
+ //定义一个方法,根据指定课程类型获取课程列表
+ List findCourseTypeTop8(@Param("typeId") Long typeId);
+
+ //定义搜索方法:根据课程名称:搜索关键字
+ List searchCourseName(@Param("keyword") String keyword);
+
+ //定义一个方法,根据指定课程类型全部课程列表
+ List findCourseTypeAll(@Param("typeId") Long typeId);
+
+}
diff --git a/src/main/java/com/offcn/edu/dao/CourseUserMapper.java b/src/main/java/com/offcn/edu/dao/CourseUserMapper.java
new file mode 100644
index 0000000..0b68fa2
--- /dev/null
+++ b/src/main/java/com/offcn/edu/dao/CourseUserMapper.java
@@ -0,0 +1,25 @@
+package com.offcn.edu.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.offcn.edu.pojo.CourseUser;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author Vinchen
+ * @since 2022-06-22
+ */
+public interface CourseUserMapper extends BaseMapper {
+
+ //查询用户是否购买过课程
+ CourseUser findEqualByCidUid(@Param("cid") Integer cid, @Param("uid") Integer uid);
+
+ //根据uid获取对应购买课程集合
+ List findCourseUserByUid(@Param("uid") Integer uid);
+
+}
diff --git a/src/main/java/com/offcn/edu/dao/CoursedetailMapper.java b/src/main/java/com/offcn/edu/dao/CoursedetailMapper.java
new file mode 100644
index 0000000..a547328
--- /dev/null
+++ b/src/main/java/com/offcn/edu/dao/CoursedetailMapper.java
@@ -0,0 +1,20 @@
+package com.offcn.edu.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.offcn.edu.pojo.Coursedetail;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author Vinchen
+ * @since 2022-06-22
+ */
+public interface CoursedetailMapper extends BaseMapper {
+ //根据课程编号 cid获取对应课程详情集合
+ List findAllByCidCoursedetails(@Param("cid") Long cid);
+}
diff --git a/src/main/java/com/offcn/edu/dao/UserMapper.java b/src/main/java/com/offcn/edu/dao/UserMapper.java
new file mode 100644
index 0000000..55dd6bd
--- /dev/null
+++ b/src/main/java/com/offcn/edu/dao/UserMapper.java
@@ -0,0 +1,23 @@
+package com.offcn.edu.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.offcn.edu.pojo.User;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ *
+ * 用户表 Mapper 接口
+ *
+ *
+ * @author Vinchen
+ * @since 2022-06-22
+ */
+public interface UserMapper extends BaseMapper {
+
+ //用户登录方法
+ User login(@Param("phone") String phone, @Param("password") String password);
+
+ //根据登录用户名,获取用户信息
+ User getUserByUsername(@Param("username") String username);
+
+}
diff --git a/src/main/java/com/offcn/edu/pojo/Course.java b/src/main/java/com/offcn/edu/pojo/Course.java
new file mode 100644
index 0000000..78d289e
--- /dev/null
+++ b/src/main/java/com/offcn/edu/pojo/Course.java
@@ -0,0 +1,67 @@
+package com.offcn.edu.pojo;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ *
+ * 课程表
+ *
+ *
+ * @author Vinchen
+ * @since 2022-06-22
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value="Course对象", description="课程表")
+public class Course implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty(value = "课程编号")
+ @TableId(value = "cid", type = IdType.AUTO)
+ private Integer cid;
+
+ @ApiModelProperty(value = "课程名称")
+ @TableField("courseName")
+ private String courseName;
+
+ @ApiModelProperty(value = "课程简介")
+ private String descs;
+
+ @ApiModelProperty(value = "课程类型")
+ @TableField("courseType")
+ private Integer courseType;
+
+ @ApiModelProperty(value = "课程图片地址")
+ @TableField("courseImage")
+ private String courseImage;
+
+ @ApiModelProperty(value = "课程视频地址")
+ @TableField("courseVideo")
+ private String courseVideo;
+
+ @ApiModelProperty(value = "价格")
+ @TableField("coursePrice")
+ private BigDecimal coursePrice;
+
+ @ApiModelProperty(value = "状态")
+ private Integer status;
+
+ @ApiModelProperty(value = "上传时间")
+ @TableField("createTime")
+ private Date createTime;
+
+
+}
diff --git a/src/main/java/com/offcn/edu/pojo/CourseUser.java b/src/main/java/com/offcn/edu/pojo/CourseUser.java
new file mode 100644
index 0000000..465abf4
--- /dev/null
+++ b/src/main/java/com/offcn/edu/pojo/CourseUser.java
@@ -0,0 +1,36 @@
+package com.offcn.edu.pojo;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+
+/**
+ *
+ *
+ *
+ *
+ * @author Vinchen
+ * @since 2022-06-22
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value="CourseUser对象", description="")
+public class CourseUser implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+
+ private Integer cid;
+
+ private Integer uid;
+
+
+}
diff --git a/src/main/java/com/offcn/edu/pojo/Coursedetail.java b/src/main/java/com/offcn/edu/pojo/Coursedetail.java
new file mode 100644
index 0000000..917554b
--- /dev/null
+++ b/src/main/java/com/offcn/edu/pojo/Coursedetail.java
@@ -0,0 +1,42 @@
+package com.offcn.edu.pojo;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+
+/**
+ *
+ *
+ *
+ *
+ * @author Vinchen
+ * @since 2022-06-22
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value="Coursedetail对象", description="")
+public class Coursedetail implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+
+ private String name;
+
+ private String type;
+
+ private String url;
+
+ private String startData;
+
+ private Integer cid;
+
+
+}
diff --git a/src/main/java/com/offcn/edu/pojo/User.java b/src/main/java/com/offcn/edu/pojo/User.java
new file mode 100644
index 0000000..3297bc0
--- /dev/null
+++ b/src/main/java/com/offcn/edu/pojo/User.java
@@ -0,0 +1,65 @@
+package com.offcn.edu.pojo;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ *
+ * 用户表
+ *
+ *
+ * @author Vinchen
+ * @since 2022-06-22
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value="User对象", description="用户表")
+public class User implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty(value = "学员编号")
+ @TableId(value = "uid", type = IdType.AUTO)
+ private Integer uid;
+
+ @ApiModelProperty(value = "真实姓名")
+ private String name;
+
+ @ApiModelProperty(value = "手机号")
+ private String phone;
+
+ @ApiModelProperty(value = "年龄")
+ private Integer age;
+
+ @ApiModelProperty(value = "性别")
+ private Integer sex;
+
+ @ApiModelProperty(value = "账号")
+ private String username;
+
+ @ApiModelProperty(value = "密码")
+ private String password;
+
+ @ApiModelProperty(value = "状态")
+ private Integer status;
+
+ @ApiModelProperty(value = "注册时间")
+ private Date createtime;
+
+ @ApiModelProperty(value = "角色")
+ private Integer role;
+
+ @ApiModelProperty(value = "头像")
+ private String picture;
+
+
+}
diff --git a/src/main/java/com/offcn/edu/service/CourseService.java b/src/main/java/com/offcn/edu/service/CourseService.java
new file mode 100644
index 0000000..f409c00
--- /dev/null
+++ b/src/main/java/com/offcn/edu/service/CourseService.java
@@ -0,0 +1,31 @@
+package com.offcn.edu.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.offcn.edu.pojo.Course;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * 课程表 服务类
+ *
+ *
+ * @author Vinchen
+ * @since 2022-06-22
+ */
+public interface CourseService extends IService {
+
+ //根据题目分类编号,获取对应题目前8条集合
+ List findCourseTypeTop8(Long typeId);
+
+ //根据课程名称:搜索关键字
+ List searchCourseName(String keyword);
+
+ //根据课程编号,获取课程信息和对应课程详情集合
+ Map findCourseInfo(Long id);
+
+ //根据题目分类编号,获取对应题目全部集合
+ List findCourseTypeAll(Long typeId);
+
+}
diff --git a/src/main/java/com/offcn/edu/service/CourseUserService.java b/src/main/java/com/offcn/edu/service/CourseUserService.java
new file mode 100644
index 0000000..1c8ae11
--- /dev/null
+++ b/src/main/java/com/offcn/edu/service/CourseUserService.java
@@ -0,0 +1,24 @@
+package com.offcn.edu.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.offcn.edu.pojo.CourseUser;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ *
+ * 服务类
+ *
+ *
+ * @author Vinchen
+ * @since 2022-06-22
+ */
+public interface CourseUserService extends IService {
+
+ //根据用户编号和课程编号,验证是否购买过该课程
+ CourseUser findEqualByCidUid(Integer cid,Integer uid);
+
+ List findCourseUserByUid(Integer uid);
+
+}
diff --git a/src/main/java/com/offcn/edu/service/CoursedetailService.java b/src/main/java/com/offcn/edu/service/CoursedetailService.java
new file mode 100644
index 0000000..b196798
--- /dev/null
+++ b/src/main/java/com/offcn/edu/service/CoursedetailService.java
@@ -0,0 +1,16 @@
+package com.offcn.edu.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.offcn.edu.pojo.Coursedetail;
+
+/**
+ *
+ * 服务类
+ *
+ *
+ * @author Vinchen
+ * @since 2022-06-22
+ */
+public interface CoursedetailService extends IService {
+
+}
diff --git a/src/main/java/com/offcn/edu/service/UserService.java b/src/main/java/com/offcn/edu/service/UserService.java
new file mode 100644
index 0000000..7ae93ad
--- /dev/null
+++ b/src/main/java/com/offcn/edu/service/UserService.java
@@ -0,0 +1,20 @@
+package com.offcn.edu.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.offcn.edu.pojo.User;
+
+/**
+ *
+ * 用户表 服务类
+ *
+ *
+ * @author Vinchen
+ * @since 2022-06-22
+ */
+public interface UserService extends IService {
+ //调用登录
+ User login(String phone,String password);
+
+ //根据username获取用户信息
+ User findUserByUserName(String username);
+}
diff --git a/src/main/java/com/offcn/edu/service/impl/CourseServiceImpl.java b/src/main/java/com/offcn/edu/service/impl/CourseServiceImpl.java
new file mode 100644
index 0000000..9e8aa12
--- /dev/null
+++ b/src/main/java/com/offcn/edu/service/impl/CourseServiceImpl.java
@@ -0,0 +1,60 @@
+package com.offcn.edu.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.offcn.edu.dao.CourseMapper;
+import com.offcn.edu.dao.CoursedetailMapper;
+import com.offcn.edu.pojo.Course;
+import com.offcn.edu.pojo.Coursedetail;
+import com.offcn.edu.service.CourseService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * 课程表 服务实现类
+ *
+ *
+ * @author Vinchen
+ * @since 2022-06-22
+ */
+@Service
+public class CourseServiceImpl extends ServiceImpl implements CourseService {
+
+ @Autowired
+ private CoursedetailMapper coursedetailMapper;
+
+ @Override
+ public List findCourseTypeTop8(Long typeId) {
+ return this.baseMapper.findCourseTypeTop8(typeId);
+ }
+
+ @Override
+ public List searchCourseName(String keyword) {
+ return this.baseMapper.searchCourseName(keyword);
+ }
+
+ @Override
+ public Map findCourseInfo(Long id) {
+ Map map=new HashMap<>();
+
+ //调用课程数据访问接口,根据课程id获取课程信息
+ Course course = this.baseMapper.selectById(id);
+ //根据课程编号,去查询对应课程详情集合数据
+ List coursedetailList = coursedetailMapper.findAllByCidCoursedetails(id);
+ //把获取到数据封装到map
+ map.put("course",course);
+ map.put("coursedetailList",coursedetailList);
+
+ return map;
+ }
+
+ @Override
+ public List findCourseTypeAll(Long typeId){
+ return this.baseMapper.findCourseTypeAll(typeId);
+ }
+
+}
diff --git a/src/main/java/com/offcn/edu/service/impl/CourseUserServiceImpl.java b/src/main/java/com/offcn/edu/service/impl/CourseUserServiceImpl.java
new file mode 100644
index 0000000..6d34c01
--- /dev/null
+++ b/src/main/java/com/offcn/edu/service/impl/CourseUserServiceImpl.java
@@ -0,0 +1,31 @@
+package com.offcn.edu.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.offcn.edu.dao.CourseUserMapper;
+import com.offcn.edu.pojo.CourseUser;
+import com.offcn.edu.service.CourseUserService;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ *
+ * 服务实现类
+ *
+ *
+ * @author Vinchen
+ * @since 2022-06-22
+ */
+@Service
+public class CourseUserServiceImpl extends ServiceImpl implements CourseUserService {
+
+ @Override
+ public CourseUser findEqualByCidUid(Integer cid,Integer uid){
+ return this.baseMapper.findEqualByCidUid(cid,uid);
+ }
+
+ @Override
+ public List findCourseUserByUid(Integer cid) {
+ return this.baseMapper.findCourseUserByUid(cid);
+ }
+}
diff --git a/src/main/java/com/offcn/edu/service/impl/CoursedetailServiceImpl.java b/src/main/java/com/offcn/edu/service/impl/CoursedetailServiceImpl.java
new file mode 100644
index 0000000..d5a62a2
--- /dev/null
+++ b/src/main/java/com/offcn/edu/service/impl/CoursedetailServiceImpl.java
@@ -0,0 +1,20 @@
+package com.offcn.edu.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.offcn.edu.dao.CoursedetailMapper;
+import com.offcn.edu.pojo.Coursedetail;
+import com.offcn.edu.service.CoursedetailService;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 服务实现类
+ *
+ *
+ * @author Vinchen
+ * @since 2022-06-22
+ */
+@Service
+public class CoursedetailServiceImpl extends ServiceImpl implements CoursedetailService {
+
+}
diff --git a/src/main/java/com/offcn/edu/service/impl/UserServiceImpl.java b/src/main/java/com/offcn/edu/service/impl/UserServiceImpl.java
new file mode 100644
index 0000000..388fae2
--- /dev/null
+++ b/src/main/java/com/offcn/edu/service/impl/UserServiceImpl.java
@@ -0,0 +1,31 @@
+package com.offcn.edu.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.offcn.edu.dao.UserMapper;
+import com.offcn.edu.pojo.User;
+import com.offcn.edu.service.UserService;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 用户表 服务实现类
+ *
+ *
+ * @author Vinchen
+ * @since 2022-06-22
+ */
+@Service
+public class UserServiceImpl extends ServiceImpl implements UserService {
+
+ @Override
+ public User login(String phone, String password) {
+ return this.baseMapper.login(phone, password);
+ }
+
+ @Override
+ public User findUserByUserName(String username) {
+ return this.baseMapper.getUserByUsername(username);
+ }
+
+
+}
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
new file mode 100644
index 0000000..b60ca24
--- /dev/null
+++ b/src/main/resources/application.yml
@@ -0,0 +1,20 @@
+server:
+ port: 8001
+spring:
+ application:
+ name: uxue-edu
+ datasource:
+ driver-class-name: com.mysql.cj.jdbc.Driver
+ url: jdbc:mysql://localhost:3306/cangzhou001?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=UTF-8
+ username: root
+ password: 8520
+ jackson:
+ time-zone: GMT%2B
+ date-format: yyyy-MM-dd HH:mm:ss
+mybatis-plus:
+ configuration:
+ log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
+ mapper-locations: classpath:mapper/*.xml #??mybatis????????
+ type-aliases-package: com.offcn.edu.pojo #????????
+
+
diff --git a/src/main/resources/mapper/CourseMapper.xml b/src/main/resources/mapper/CourseMapper.xml
new file mode 100644
index 0000000..b210c9b
--- /dev/null
+++ b/src/main/resources/mapper/CourseMapper.xml
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/main/resources/mapper/CourseUserMapper.xml b/src/main/resources/mapper/CourseUserMapper.xml
new file mode 100644
index 0000000..d720d2b
--- /dev/null
+++ b/src/main/resources/mapper/CourseUserMapper.xml
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
diff --git a/src/main/resources/mapper/CoursedetailMapper.xml b/src/main/resources/mapper/CoursedetailMapper.xml
new file mode 100644
index 0000000..e977050
--- /dev/null
+++ b/src/main/resources/mapper/CoursedetailMapper.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
diff --git a/src/main/resources/mapper/UserMapper.xml b/src/main/resources/mapper/UserMapper.xml
new file mode 100644
index 0000000..c19d3f8
--- /dev/null
+++ b/src/main/resources/mapper/UserMapper.xml
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
diff --git a/src/test/java/com/offcn/edu/UxueEdu001ApplicationTests.java b/src/test/java/com/offcn/edu/UxueEdu001ApplicationTests.java
new file mode 100644
index 0000000..5a6bdcc
--- /dev/null
+++ b/src/test/java/com/offcn/edu/UxueEdu001ApplicationTests.java
@@ -0,0 +1,71 @@
+package com.offcn.edu;
+
+import com.offcn.edu.dao.CourseMapper;
+import com.offcn.edu.dao.CoursedetailMapper;
+import com.offcn.edu.dao.UserMapper;
+import com.offcn.edu.pojo.Course;
+import com.offcn.edu.pojo.Coursedetail;
+import com.offcn.edu.pojo.User;
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+
+import java.util.List;
+
+@SpringBootTest
+class UxueEdu001ApplicationTests {
+
+ @Autowired
+ private CourseMapper courseMapper;
+
+ @Autowired
+ private CoursedetailMapper coursedetailMapper;
+
+ @Autowired
+ private UserMapper userMapper;
+
+ //测试首页展示方法
+ @Test
+ void testfindCourseType() {
+ List courseList = courseMapper.findCourseTypeTop8(2L);
+ for (Course course : courseList) {
+ System.out.println(course);
+ }
+ }
+
+ //测试课程搜索方法
+ @Test
+ public void testSearch(){
+ String keyword="Java";
+ List courseList = courseMapper.searchCourseName(keyword);
+ for (Course course : courseList) {
+ System.out.println(course);
+ }
+ }
+
+ //测试根据课程id获取课程信息
+ @Test
+ public void testGetCourseByID(){
+ Course course = courseMapper.selectById(1);
+ System.out.println(course);
+ }
+
+ //测试根据cid获取对应课程详情集合
+ @Test
+ public void testfindAllByCidCoursedetails(){
+ List coursedetailList = coursedetailMapper.findAllByCidCoursedetails(3L);
+ for (Coursedetail coursedetail : coursedetailList) {
+ System.out.println(coursedetail);
+ }
+ }
+
+ //测试登录
+ @Test
+ public void testLogin(){
+ User login = userMapper.login("13515823698", "123");
+ System.out.println(login);
+ }
+
+
+
+}