修改了课程模块接口,添加了课程订单模块

This commit is contained in:
2025-06-24 13:31:54 +08:00
parent 95d30cc5f6
commit f871d61650
9 changed files with 570 additions and 5 deletions

View File

@ -116,6 +116,25 @@ public class CourseController {
} }
/**
* 小程序端用户根据id查看课程基本信息
* @param commonRequest 课程id
* @return 课程基本信息
*/
@PostMapping("generate/qrcode")
@Operation(summary = "小程序端用户根据id查看课程基本信息", description = "参数课程id权限管理员方法名miniQueryCourseBaseInfo")
@RequiresPermission(mustRole = UserConstant.DEFAULT_ROLE)
@SysLog(title = "课程管理", content = "小程序端用户根据id查看课程基本信息")
public BaseResponse<CourseCardVO> miniQueryCourseBaseInfo(@Valid @RequestBody CommonRequest commonRequest) {
Long id = commonRequest.getId();
Course course = courseService.getById(id);
CourseCardVO courseCardVO = commonService.copyProperties(course, CourseCardVO.class);
return ResultUtils.success(courseCardVO);
}
/** /**
* web端管理员添加课程 * web端管理员添加课程
* @param courseAddRequest 课程添加请求体 * @param courseAddRequest 课程添加请求体

View File

@ -0,0 +1,145 @@
package com.greenorange.promotion.controller.course;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.greenorange.promotion.annotation.RequiresPermission;
import com.greenorange.promotion.annotation.SysLog;
import com.greenorange.promotion.common.BaseResponse;
import com.greenorange.promotion.common.ResultUtils;
import com.greenorange.promotion.constant.UserConstant;
import com.greenorange.promotion.model.dto.CommonBatchRequest;
import com.greenorange.promotion.model.dto.courseOrder.CourseOrderAddRequest;
import com.greenorange.promotion.model.dto.courseOrder.CourseOrderQueryRequest;
import com.greenorange.promotion.model.dto.courseOrder.CourseOrderUpdateRequest;
import com.greenorange.promotion.model.entity.CourseOrder;
import com.greenorange.promotion.model.vo.courseOrder.CourseOrderVO;
import com.greenorange.promotion.service.common.CommonService;
import com.greenorange.promotion.service.course.CourseOrderService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.greenorange.promotion.model.dto.CommonRequest;
import jakarta.validation.Valid;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
* 课程订单 控制器
*/
@RestController
@RequestMapping("courseOrder")
@Slf4j
@Tag(name = "课程订单模块")
public class CourseOrderController {
@Resource
private CourseOrderService courseOrderService;
@Resource
private CommonService commonService;
/**
* web端管理员添加课程订单
* @param courseOrderAddRequest 课程订单添加请求体
* @return 是否添加成功
*/
@PostMapping("add")
@Operation(summary = "web端管理员添加课程订单", description = "参数课程订单添加请求体权限管理员方法名addCourseOrder")
@RequiresPermission(mustRole = UserConstant.ADMIN_ROLE)
@SysLog(title = "课程订单管理", content = "web端管理员添加课程订单")
public BaseResponse<Long> addCourseOrder(@Valid @RequestBody CourseOrderAddRequest courseOrderAddRequest) {
CourseOrder courseOrder = commonService.copyProperties(courseOrderAddRequest, CourseOrder.class);
courseOrderService.save(courseOrder);
return ResultUtils.success(courseOrder.getId());
}
/**
* web端管理员根据id修改课程订单信息
* @param courseOrderUpdateRequest 课程订单更新请求体
* @return 是否更新成功
*/
@PostMapping("update")
@Operation(summary = "web端管理员根据id修改课程订单", description = "参数课程订单更新请求体权限管理员方法名updateCourseOrder")
@RequiresPermission(mustRole = UserConstant.ADMIN_ROLE)
@SysLog(title = "课程订单管理", content = "web端管理员根据id修改课程订单信息")
public BaseResponse<Boolean> updateCourseOrder(@Valid @RequestBody CourseOrderUpdateRequest courseOrderUpdateRequest) {
CourseOrder courseOrder = commonService.copyProperties(courseOrderUpdateRequest, CourseOrder.class);
courseOrderService.updateById(courseOrder);
return ResultUtils.success(true);
}
/**
* web端管理员根据id删除课程订单
* @param commonRequest 课程订单删除请求体
* @return 是否删除成功
*/
@PostMapping("delete")
@Operation(summary = "web端管理员根据id删除课程订单", description = "参数课程订单删除请求体权限管理员方法名delCourseOrder")
@RequiresPermission(mustRole = UserConstant.ADMIN_ROLE)
@SysLog(title = "课程订单管理", content = "web端管理员根据id删除课程订单")
public BaseResponse<Boolean> delCourseOrder(@Valid @RequestBody CommonRequest commonRequest) {
Long id = commonRequest.getId();
courseOrderService.removeById(id);
return ResultUtils.success(true);
}
/**
* web端管理员批量删除课程订单
* @param commonBatchRequest 课程订单批量删除请求体
* @return 是否删除成功
*/
@PostMapping("delBatch")
@Operation(summary = "web端管理员批量删除课程订单", description = "参数课程订单批量删除请求体权限管理员方法名delBatchCourseOrder")
@RequiresPermission(mustRole = UserConstant.ADMIN_ROLE)
@SysLog(title = "课程订单管理", content = "web端管理员批量删除课程订单")
public BaseResponse<Boolean> delBatchCourseOrder(@Valid @RequestBody CommonBatchRequest commonBatchRequest) {
List<Long> ids = commonBatchRequest.getIds();
courseOrderService.removeByIds(ids);
return ResultUtils.success(true);
}
/**
* web端管理员根据id查询课程订单
* @param commonRequest 课程订单查询请求体
* @return 课程订单信息
*/
@PostMapping("queryById")
@Operation(summary = "web端管理员根据id查询课程订单", description = "参数课程订单查询请求体权限管理员方法名queryCourseOrderById")
@RequiresPermission(mustRole = UserConstant.ADMIN_ROLE)
@SysLog(title = "课程订单管理", content = "web端管理员根据id查询课程订单")
public BaseResponse<CourseOrderVO> queryCourseOrderById(@Valid @RequestBody CommonRequest commonRequest) {
Long id = commonRequest.getId();
CourseOrder courseOrder = courseOrderService.getById(id);
CourseOrderVO courseOrderVO = commonService.copyProperties(courseOrder, CourseOrderVO.class);
return ResultUtils.success(courseOrderVO);
}
// /**
// * Web端管理员分页查询课程订单
// * @param courseOrderQueryRequest 课程订单查询请求体
// * @return 课程订单列表
// */
// @PostMapping("page")
// @Operation(summary = "Web端管理员分页查询课程订单", description = "参数课程订单查询请求体权限管理员方法名listCourseOrderByPage")
// @RequiresPermission(mustRole = UserConstant.ADMIN_ROLE)
// @SysLog(title = "课程订单管理", content = "Web端管理员分页查询课程订单")
// public BaseResponse<Page<CourseOrderVO>> listCourseOrderByPage(@Valid @RequestBody CourseOrderQueryRequest courseOrderQueryRequest) {
// long current = courseOrderQueryRequest.getCurrent();
// long pageSize = courseOrderQueryRequest.getPageSize();
// QueryWrapper<CourseOrder> queryWrapper = courseOrderService.getQueryWrapper(courseOrderQueryRequest);
// Page<CourseOrder> page = courseOrderService.page(new Page<>(current, pageSize), queryWrapper);
// List<CourseOrder> courseOrderList = page.getRecords();
// List<CourseOrderVO> courseOrderVOList = commonService.convertList(courseOrderList, CourseOrderVO.class);
// Page<CourseOrderVO> voPage = new Page<>(current, pageSize);
// voPage.setRecords(courseOrderVOList);
// voPage.setPages(page.getPages());
// voPage.setTotal(page.getTotal());
// return ResultUtils.success(voPage);
// }
}

View File

@ -27,13 +27,13 @@ public class Generator {
// 作者 // 作者
private static final String AUTHOR = "chenxinzhi"; private static final String AUTHOR = "chenxinzhi";
// 表注释 // 表注释
private static final String TABLE_COMMENT = "课程章节"; private static final String TABLE_COMMENT = "课程订单";
// 实体类名 // 实体类名
private static final String ENTITY_NAME = "CourseChapter"; private static final String ENTITY_NAME = "CourseOrder";
// 表名 // 表名
private static final String TABLE_NAME = "course_chapter"; private static final String TABLE_NAME = "course_order";
// 实体类属性名 // 实体类属性名
private static final String ENTITY_NAME_LOWER = "courseChapter"; private static final String ENTITY_NAME_LOWER = "courseOrder";
// 父包名 // 父包名
private static final String PARENT_PATH = "com.greenorange.promotion"; private static final String PARENT_PATH = "com.greenorange.promotion";

View File

@ -0,0 +1,101 @@
package com.greenorange.promotion.model.dto.courseOrder;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.Min;
import lombok.Data;
import java.math.BigDecimal;
import java.io.Serial;
import java.io.Serializable;
/**
* 课程订单添加请求体
*/
@Data
@Schema(description = "课程订单添加请求体", requiredProperties = {
"orderNumber",
"courseId",
"name",
"type",
"image",
"originPrice",
"discountPrice",
"totalAmount",
"transactionNumber",
"orderStatus",
})
public class CourseOrderAddRequest implements Serializable {
/**
* 订单号
*/
@NotBlank(message = "订单号不能为空")
@Schema(description = "订单号", example = "202506241339232334d234234243")
private String orderNumber;
/**
* 课程ID
*/
@Min(value = 1L, message = "课程ID ID不能小于1")
@Schema(description = "课程ID", example = "1")
private Long courseId;
/**
* 课程名称
*/
@NotBlank(message = "课程名称不能为空")
@Schema(description = "课程名称", example = "")
private String name;
/**
* 课程类别
*/
@NotBlank(message = "课程类别不能为空")
@Schema(description = "课程类别", example = "")
private String type;
/**
* 课程封面图片URL
*/
@NotBlank(message = "课程封面图片URL不能为空")
@Schema(description = "课程封面图片URL", example = "")
private String image;
/**
* 课程原价
*/
@Schema(description = "课程原价", example = "")
private BigDecimal originPrice;
/**
* 实际成交价格
*/
@Schema(description = "实际成交价格", example = "")
private BigDecimal discountPrice;
/**
* 订单总金额
*/
@Schema(description = "订单总金额", example = "")
private BigDecimal totalAmount;
/**
* 支付交易号
*/
@NotBlank(message = "支付交易号不能为空")
@Schema(description = "支付交易号", example = "")
private String transactionNumber;
/**
* 订单状态
*/
@NotBlank(message = "订单状态不能为空")
@Schema(description = "订单状态", example = "")
private String orderStatus;
@Serial
private static final long serialVersionUID = 1L;
}

View File

@ -0,0 +1,98 @@
package com.greenorange.promotion.model.dto.courseOrder;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.Min;
import lombok.Data;
import java.math.BigDecimal;
import java.io.Serial;
import java.io.Serializable;
import com.greenorange.promotion.common.PageRequest;
/**
* 课程订单查询请求体,继承自分页请求 PageRequest
*/
@Data
@Schema(description = "课程订单查询请求体", requiredProperties = {"current", "pageSize"})
public class CourseOrderQueryRequest extends PageRequest implements Serializable {
/**
* 订单ID
*/
@Min(value = 1L, message = "订单ID ID不能小于1")
@Schema(description = "订单ID", example = "")
private Long id;
/**
* 订单号
*/
@NotBlank(message = "订单号不能为空")
@Schema(description = "订单号", example = "")
private String orderNumber;
/**
* 课程ID
*/
@Min(value = 1L, message = "课程ID ID不能小于1")
@Schema(description = "课程ID", example = "")
private Long courseId;
/**
* 课程名称
*/
@NotBlank(message = "课程名称不能为空")
@Schema(description = "课程名称", example = "")
private String name;
/**
* 课程类别
*/
@NotBlank(message = "课程类别不能为空")
@Schema(description = "课程类别", example = "")
private String type;
/**
* 课程封面图片URL
*/
@NotBlank(message = "课程封面图片URL不能为空")
@Schema(description = "课程封面图片URL", example = "")
private String image;
/**
* 课程原价
*/
@Schema(description = "课程原价", example = "")
private BigDecimal originPrice;
/**
* 实际成交价格
*/
@Schema(description = "实际成交价格", example = "")
private BigDecimal discountPrice;
/**
* 订单总金额
*/
@Schema(description = "订单总金额", example = "")
private BigDecimal totalAmount;
/**
* 支付交易号
*/
@NotBlank(message = "支付交易号不能为空")
@Schema(description = "支付交易号", example = "")
private String transactionNumber;
/**
* 订单状态
*/
@NotBlank(message = "订单状态不能为空")
@Schema(description = "订单状态", example = "")
private String orderStatus;
@Serial
private static final long serialVersionUID = 1L;
}

View File

@ -0,0 +1,108 @@
package com.greenorange.promotion.model.dto.courseOrder;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.Min;
import lombok.Data;
import java.math.BigDecimal;
import java.io.Serial;
import java.io.Serializable;
/**
* 课程订单更新请求体
*/
@Data
@Schema(description = "课程订单更新请求体", requiredProperties = {
"id",
"orderNumber",
"courseId",
"name",
"type",
"image",
"originPrice",
"discountPrice",
"totalAmount",
"transactionNumber",
"orderStatus",
})
public class CourseOrderUpdateRequest implements Serializable {
/**
* 订单ID
*/
@Min(value = 1L, message = "订单ID ID不能小于1")
@Schema(description = "订单ID", example = "")
private Long id;
/**
* 订单号
*/
@NotBlank(message = "订单号不能为空")
@Schema(description = "订单号", example = "")
private String orderNumber;
/**
* 课程ID
*/
@Min(value = 1L, message = "课程ID ID不能小于1")
@Schema(description = "课程ID", example = "")
private Long courseId;
/**
* 课程名称
*/
@NotBlank(message = "课程名称不能为空")
@Schema(description = "课程名称", example = "")
private String name;
/**
* 课程类别
*/
@NotBlank(message = "课程类别不能为空")
@Schema(description = "课程类别", example = "")
private String type;
/**
* 课程封面图片URL
*/
@NotBlank(message = "课程封面图片URL不能为空")
@Schema(description = "课程封面图片URL", example = "")
private String image;
/**
* 课程原价
*/
@Schema(description = "课程原价", example = "")
private BigDecimal originPrice;
/**
* 实际成交价格
*/
@Schema(description = "实际成交价格", example = "")
private BigDecimal discountPrice;
/**
* 订单总金额
*/
@Schema(description = "订单总金额", example = "")
private BigDecimal totalAmount;
/**
* 支付交易号
*/
@NotBlank(message = "支付交易号不能为空")
@Schema(description = "支付交易号", example = "")
private String transactionNumber;
/**
* 订单状态
*/
@NotBlank(message = "订单状态不能为空")
@Schema(description = "订单状态", example = "")
private String orderStatus;
@Serial
private static final long serialVersionUID = 1L;
}

View File

@ -35,6 +35,12 @@ public class CourseCardVO implements Serializable {
@Schema(description = "课程图片URL", example = "324IEHJDE") @Schema(description = "课程图片URL", example = "324IEHJDE")
private String image; private String image;
/**
* 课程原价
*/
@Schema(description = "课程原价", example = "3499")
private BigDecimal originPrice;
/** /**
* 折扣价格 * 折扣价格
*/ */

View File

@ -0,0 +1,86 @@
package com.greenorange.promotion.model.vo.courseOrder;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* 课程订单 视图对象
*/
@Data
@Schema(description = "课程订单 视图对象")
public class CourseOrderVO implements Serializable {
/**
* 课程订单ID
*/
@Schema(description = "课程订单ID", example = "1")
private Long id;
/**
* 订单号
*/
@Schema(description = "订单号", example = "")
private String orderNumber;
/**
* 课程ID
*/
@Schema(description = "课程ID", example = "")
private Long courseId;
/**
* 课程名称
*/
@Schema(description = "课程名称", example = "")
private String name;
/**
* 课程类别
*/
@Schema(description = "课程类别", example = "")
private String type;
/**
* 课程封面图片URL
*/
@Schema(description = "课程封面图片URL", example = "")
private String image;
/**
* 课程原价
*/
@Schema(description = "课程原价", example = "")
private BigDecimal originPrice;
/**
* 实际成交价格
*/
@Schema(description = "实际成交价格", example = "")
private BigDecimal discountPrice;
/**
* 订单总金额
*/
@Schema(description = "订单总金额", example = "")
private BigDecimal totalAmount;
/**
* 支付交易号
*/
@Schema(description = "支付交易号", example = "")
private String transactionNumber;
/**
* 订单状态
*/
@Schema(description = "订单状态", example = "")
private String orderStatus;
@Serial
private static final long serialVersionUID = 1L;
}

View File

@ -204,9 +204,11 @@ public class WechatGetQrcodeServiceImpl implements WechatGetQrcodeService {
if (accessToken == null) { if (accessToken == null) {
accessToken = this.getAccessToken().getAccess_token(); accessToken = this.getAccessToken().getAccess_token();
} }
String invitationCode = courseQrcodeAddRequest.getInvitationCode();
Long id = courseQrcodeAddRequest.getId();
Map<String, Object> param = new HashMap<>(); Map<String, Object> param = new HashMap<>();
param.put("page", "pages/loginModule/register/register"); param.put("page", "pages/loginModule/register/register");
param.put("scene", "invitationCode=" + courseQrcodeAddRequest.getInvitationCode()); param.put("scene", "invitationCode=" + invitationCode + "&courseId=" + id);
param.put("width", 430); param.put("width", 430);
param.put("check_path", false); param.put("check_path", false);
param.put("env_version", "develop"); param.put("env_version", "develop");