支付宝支付 第七集:产品数据接口的定义和测试
一、目录结构
二、代码
-
数据库SQL脚本(使用查询-新建查询)
/* Navicat MySQL Data Transfer Source Server : localhost Source Server Version : 50733 Source Host : localhost:3306 Source Database : kuangstudy-db Target Server Type : MYSQL Target Server Version : 50733 File Encoding : 65001 Date: 2021-04-01 19:48:54 */ SET FOREIGN_KEY_CHECKS=0; -- ---------------------------- -- Table structure for kss_courses -- ---------------------------- DROP TABLE IF EXISTS `kss_courses`; CREATE TABLE `kss_courses` ( `courseid` varchar(32) NOT NULL COMMENT '课程唯一id', `title` varchar(100) DEFAULT NULL COMMENT '课程标题', `intro` varchar(500) DEFAULT NULL COMMENT '课程简短介绍', `img` varchar(300) DEFAULT NULL COMMENT '课程封面地址', `price` decimal(10,2) DEFAULT NULL COMMENT '课程的活动价', `status` int(1) DEFAULT NULL COMMENT '状态:已发布/未发布', `create_time` datetime DEFAULT NULL COMMENT '创建时间', `update_time` datetime DEFAULT NULL COMMENT '更新时间', PRIMARY KEY (`courseid`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- ---------------------------- -- Records of kss_courses -- ---------------------------- INSERT INTO `kss_courses` VALUES ('1317503462556848129', '预科阶段', '学习编程之前你要了解的知识!', '/assert/course/c1/02.jpg', '0.01', '1', '2020-10-18 00:31:18', '2021-04-01 10:56:38'); INSERT INTO `kss_courses` VALUES ('1317503769349214209', '入门环境搭建', '工欲善其事,必先利其器!', '/assert/course/c1/03.jpg', '0.01', '1', '2020-10-18 00:32:31', '2021-04-01 10:53:10'); INSERT INTO `kss_courses` VALUES ('1317504142650658818', '基础语法学习', '基础决定你未来的高度!', '/assert/course/c1/04.jpg', '0.01', '1', '2020-10-18 00:34:00', '2021-04-01 10:54:18'); INSERT INTO `kss_courses` VALUES ('1317504447027105793', '流程控制学习', '程序的本质就是这些!', '/assert/course/c1/05.jpg', '0.01', '1', '2020-10-18 00:35:13', '2021-04-01 10:56:03'); INSERT INTO `kss_courses` VALUES ('1317504610634321921', '方法详解', '封装的思想!', '/assert/course/c1/06.jpg', '0.01', '1', '2020-10-18 00:35:52', '2021-04-01 10:55:04'); INSERT INTO `kss_courses` VALUES ('1317504817342205954', '数组详解', '最简单的数据结构!', '/assert/course/c1/07.jpg', '0.01', '1', '2020-10-18 00:35:52', '2020-10-18 00:35:52'); INSERT INTO `kss_courses` VALUES ('1317504988834713602', '面向对象编程', 'Java的精髓OOP!', '/assert/course/c1/08.jpg', '0.01', '1', '2020-10-18 00:35:52', '2020-10-18 00:35:52'); INSERT INTO `kss_courses` VALUES ('1377518279077142529', '第三方支付课程-支付宝', '第三方支付课程-支付宝', '/assert/course/c10/07.jpg', '0.01', '1', '2020-10-18 00:18:08', '2021-04-01 10:54:25'); -- ---------------------------- -- Table structure for kss_order_detail -- ---------------------------- DROP TABLE IF EXISTS `kss_order_detail`; CREATE TABLE `kss_order_detail` ( `id` bigint(20) NOT NULL, `courseid` varchar(20) DEFAULT NULL, `coursetitle` varchar(255) DEFAULT NULL, `courseimg` varchar(255) DEFAULT NULL, `userid` varchar(32) DEFAULT NULL, `ordernumber` varchar(100) DEFAULT NULL, `tradeno` varchar(100) DEFAULT NULL, `create_time` datetime DEFAULT NULL, `update_time` datetime DEFAULT NULL, `username` varchar(100) DEFAULT NULL, `price` varchar(10) DEFAULT NULL, `paymethod` varchar(10) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- ---------------------------- -- Records of kss_order_detail -- ---------------------------- INSERT INTO `kss_order_detail` VALUES ('1377561070331342849', '1317503462556848129', '预科阶段', '/assert/course/c1/02.jpg', '1', '2021040117565301', '2021040122001474081439646913', '2021-04-01 17:58:48', '2021-04-01 17:58:48', '飞哥', '0.01', '1'); INSERT INTO `kss_order_detail` VALUES ('1377561833455484929', '1317503769349214209', '入门环境搭建', '/assert/course/c1/03.jpg', '1', '2021040118015901', '2021040122001474081440101072', '2021-04-01 18:01:50', '2021-04-01 18:01:50', '飞哥', '0.01', '1'); INSERT INTO `kss_order_detail` VALUES ('1377562728612233218', '1317503769349214209', '入门环境搭建', '/assert/course/c1/03.jpg', '1', '2021040118053301', '2021040122001474081440405818', '2021-04-01 18:05:23', '2021-04-01 18:05:23', '飞哥', '0.01', '1'); INSERT INTO `kss_order_detail` VALUES ('1377564997252657153', '1317504142650658818', '基础语法学习', '/assert/course/c1/04.jpg', '1', '2021040118134201', '2021040122001474081440148822', '2021-04-01 18:14:24', '2021-04-01 18:14:24', '飞哥', '0.01', '1');
-
增加依赖
<!--mysql--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.17</version> </dependency> <!--mybatis-plus--> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.4.0</version> </dependency>
-
在application-dev.xml 配置数据的链接相关信息
# 数据库连接 spring: datasource: type: com.zaxxer.hikari.HikariDataSource driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://127.0.0.1:3306/kuangstudy-db?serverTimezone=GMT%2b8&useUnicode=true&characterEncoding=utf-8&useSSL=false username: root password: root hikari: connection-timeout: 60000 validation-timeout: 3000 idle-timeout: 60000 login-timeout: 5 max-lifetime: 60000 maximum-pool-size: 400 minimum-idle: 100 read-only: false # 日志管理 logging: level: root: info
-
application.properties
#基本配置 server.port=8989 spring.freemarker.suffix=.html spring.profiles.active=dev #数据库连接时配置 spring.jackson.date-format=yyyy-MM-dd HH:mm:ss spring.jackson.time-zone=GMT+8 spring.jackson.locale=zh_CN spring.jackson.generator.write-numbers-as-strings=true spring.jackson.generator.write-bigdecimal-as-plain=true spring.jackson.servlet.content-type=text/html spring.jackson.servlet.multipart.max-file-size=2MB spring.jackson.servlet.multipart.max-request-size=2MB spring.jackson.mvc.servlet.load-on-startup=1 spring.jackson.session.store-type=redis spring.jackson.session.timeout=1800 spring.jackson.main.allow-bean-definition-overriding=true #配置静态资源访问路径 spring.web.resources.static-locations=classpath:/
-
ProductCourse.java
package com.dzy.alipay.entity; import com.baomidou.mybatisplus.annotation.*; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import lombok.ToString; import lombok.experimental.Accessors; import java.math.BigDecimal; import java.util.Date; @Data @ToString @AllArgsConstructor @NoArgsConstructor @Accessors(chain = true) @TableName("kss_courses") public class ProductCourse { // 课程ID @TableId(type = IdType.ASSIGN_ID) private Long courseid; // 课程标题 private String title; // 课程介绍 private String intro; // 课程封面 private String img; // 课程价格 private BigDecimal price; // 课程状态 private Integer status; // 课程创建时间 @TableField(fill = FieldFill.INSERT) private Date createTime; // 课程更新时间 @TableField(fill = FieldFill.INSERT_UPDATE) private Date updateTime; }
-
ProductCourseMapper.java
package com.dzy.alipay.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.dzy.alipay.entity.ProductCourse; import org.springframework.stereotype.Repository; @Repository public interface ProductCourseMapper extends BaseMapper<ProductCourse> { }
-
ProductCourseService.java
package com.dzy.alipay.service.course; import com.baomidou.mybatisplus.extension.service.IService; import com.dzy.alipay.entity.ProductCourse; public interface ProductCourseService extends IService<ProductCourse> { }
-
ProductCourseServiceImpl.java
package com.dzy.alipay.service.course; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.dzy.alipay.entity.ProductCourse; import com.dzy.alipay.mapper.ProductCourseMapper; import org.springframework.stereotype.Service; @Service public class ProductCourseServiceImpl extends ServiceImpl<ProductCourseMapper,ProductCourse> implements ProductCourseService { }
-
CourseController.java
package com.dzy.alipay.web.course; import com.dzy.alipay.entity.ProductCourse; import com.dzy.alipay.service.course.ProductCourseService; import com.dzy.alipay.vo.R; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.ResponseBody; import java.util.List; @Controller public class CourseController { private final ProductCourseService productCourseService; public CourseController(ProductCourseService productCourseService) { this.productCourseService = productCourseService; } @GetMapping("/api/course/list") @ResponseBody public R main() { List<ProductCourse> courseList = productCourseService.list(); return R.ok().data("courseList", courseList); } }