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); + } + + + +}