From 8e578a9542243afbe34c5d5509662462146f02f5 Mon Sep 17 00:00:00 2001 From: chen-xin-zhi <3588068430@qq.com> Date: Tue, 1 Jul 2025 08:47:27 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=90=E8=AF=BE=E7=A8=8B=E9=80=80?= =?UTF-8?q?=E6=AC=BE=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../promotion/constant/CommonConstant.java | 2 +- .../promotion/constant/SystemConstant.java | 16 +++- .../course/CourseOrderController.java | 6 +- .../promotion/generator/Generator.java | 10 +- .../listener/OrderStatusListener.java | 2 +- .../promotion/mapper/RefundRecordMapper.java | 18 ++++ .../model/dto/course/CourseAddRequest.java | 2 +- .../refundRecord/RefundRecordAddRequest.java | 86 +++++++++++++++++ .../RefundRecordQueryRequest.java | 30 ++++++ .../RefundRecordUpdateRequest.java | 93 +++++++++++++++++++ .../promotion/model/entity/RefundRecord.java | 87 +++++++++++++++++ .../model/vo/refundRecord/RefundRecordVO.java | 80 ++++++++++++++++ .../service/refund/RefundRecordService.java | 20 ++++ .../refund/impl/RefundRecordServiceImpl.java | 40 ++++++++ .../wechat/impl/WechatPayServiceImpl.java | 25 ++++- src/main/resources/application-dev.yml | 8 +- .../resources/mapper/RefundRecordMapper.xml | 28 ++++++ 17 files changed, 538 insertions(+), 15 deletions(-) create mode 100644 src/main/java/com/greenorange/promotion/mapper/RefundRecordMapper.java create mode 100644 src/main/java/com/greenorange/promotion/model/dto/refundRecord/RefundRecordAddRequest.java create mode 100644 src/main/java/com/greenorange/promotion/model/dto/refundRecord/RefundRecordQueryRequest.java create mode 100644 src/main/java/com/greenorange/promotion/model/dto/refundRecord/RefundRecordUpdateRequest.java create mode 100644 src/main/java/com/greenorange/promotion/model/entity/RefundRecord.java create mode 100644 src/main/java/com/greenorange/promotion/model/vo/refundRecord/RefundRecordVO.java create mode 100644 src/main/java/com/greenorange/promotion/service/refund/RefundRecordService.java create mode 100644 src/main/java/com/greenorange/promotion/service/refund/impl/RefundRecordServiceImpl.java create mode 100644 src/main/resources/mapper/RefundRecordMapper.xml diff --git a/src/main/java/com/greenorange/promotion/constant/CommonConstant.java b/src/main/java/com/greenorange/promotion/constant/CommonConstant.java index bde8e23..3f1fb6a 100644 --- a/src/main/java/com/greenorange/promotion/constant/CommonConstant.java +++ b/src/main/java/com/greenorange/promotion/constant/CommonConstant.java @@ -14,5 +14,5 @@ public interface CommonConstant { * 降序 */ String SORT_ORDER_DESC = " descend"; - + } \ No newline at end of file diff --git a/src/main/java/com/greenorange/promotion/constant/SystemConstant.java b/src/main/java/com/greenorange/promotion/constant/SystemConstant.java index 8ebfe0f..72e496b 100644 --- a/src/main/java/com/greenorange/promotion/constant/SystemConstant.java +++ b/src/main/java/com/greenorange/promotion/constant/SystemConstant.java @@ -1,5 +1,7 @@ package com.greenorange.promotion.constant; +import java.math.BigDecimal; + public interface SystemConstant { /** @@ -11,6 +13,18 @@ public interface SystemConstant { /** * 文件公共前缀 */ - String FILE_COMMON_PREFIX = "http://27.30.77.229:9091/file/download/"; + String FILE_COMMON_PREFIX = "http://160.202.242.36:9091/file/download/"; + + + /** + * 一级抽成比例 + */ + BigDecimal FIRST_LEVEL_COMMISSION_RATE = new BigDecimal("0.02"); + + + /** + * 二级抽成比例 + */ + BigDecimal SECOND_LEVEL_COMMISSION_RATE = new BigDecimal("0.03"); } diff --git a/src/main/java/com/greenorange/promotion/controller/course/CourseOrderController.java b/src/main/java/com/greenorange/promotion/controller/course/CourseOrderController.java index 33d89b1..5f9d765 100644 --- a/src/main/java/com/greenorange/promotion/controller/course/CourseOrderController.java +++ b/src/main/java/com/greenorange/promotion/controller/course/CourseOrderController.java @@ -20,6 +20,7 @@ import com.greenorange.promotion.model.dto.courseOrder.CourseOrderUpdateRequest; import com.greenorange.promotion.model.entity.Course; import com.greenorange.promotion.model.entity.CourseOrder; import com.greenorange.promotion.model.vo.course.CourseCardVO; +import com.greenorange.promotion.model.vo.course.CourseVO; import com.greenorange.promotion.model.vo.courseOrder.CourseOrderCardVO; import com.greenorange.promotion.model.vo.courseOrder.CourseOrderVO; import com.greenorange.promotion.service.common.CommonService; @@ -73,7 +74,10 @@ public class CourseOrderController { Long courseId = courseOrderAddRequest.getCourseId(); Course course = courseService.getById(courseId); ThrowUtils.throwIf(course == null, ErrorCode.OPERATION_ERROR, "该课程不存在"); - CourseOrder courseOrder = commonService.copyProperties(course, CourseOrder.class); + CourseVO courseVO = commonService.copyProperties(course, CourseVO.class); + CourseOrder courseOrder = commonService.copyProperties(courseVO, CourseOrder.class); + courseOrder.setId(null); + courseOrder.setCourseId(courseId); courseOrder.setOrderNumber(OrderNumberUtils.generateOrderId()); courseOrder.setTotalAmount(course.getDiscountPrice()); courseOrder.setUserId(userId); diff --git a/src/main/java/com/greenorange/promotion/generator/Generator.java b/src/main/java/com/greenorange/promotion/generator/Generator.java index 6cd7e31..b461d92 100644 --- a/src/main/java/com/greenorange/promotion/generator/Generator.java +++ b/src/main/java/com/greenorange/promotion/generator/Generator.java @@ -15,7 +15,7 @@ import java.util.*; public class Generator { // 数据源配置 - private static final String DATASOURCE_URL = "jdbc:mysql://27.30.77.229:3306/qingcheng_dev?serverTimezone=Asia/Shanghai"; + private static final String DATASOURCE_URL = "jdbc:mysql://160.202.242.36:3306/qingcheng_dev?serverTimezone=Asia/Shanghai"; private static final String USERNAME = "qingcheng"; private static final String PASSWORD = "Qc@8ls2jf"; @@ -27,13 +27,13 @@ public class Generator { // 作者 private static final String AUTHOR = "chenxinzhi"; // 表注释 - private static final String TABLE_COMMENT = "晋升申请"; + private static final String TABLE_COMMENT = "退款记录"; // 实体类名 - private static final String ENTITY_NAME = "AdvancementApply"; + private static final String ENTITY_NAME = "RefundRecord"; // 表名 - private static final String TABLE_NAME = "advancement_apply"; + private static final String TABLE_NAME = "refund_record"; // 实体类属性名 - private static final String ENTITY_NAME_LOWER = "advancementApply"; + private static final String ENTITY_NAME_LOWER = "refundRecord"; // 父包名 private static final String PARENT_PATH = "com.greenorange.promotion"; diff --git a/src/main/java/com/greenorange/promotion/listener/OrderStatusListener.java b/src/main/java/com/greenorange/promotion/listener/OrderStatusListener.java index 6223f56..9693014 100644 --- a/src/main/java/com/greenorange/promotion/listener/OrderStatusListener.java +++ b/src/main/java/com/greenorange/promotion/listener/OrderStatusListener.java @@ -59,7 +59,7 @@ public class OrderStatusListener { LambdaUpdateWrapper lambdaUpdateWrapper = new LambdaUpdateWrapper<>(); lambdaUpdateWrapper.eq(CourseOrder::getId, orderId) .set(CourseOrder::getOrderStatus, OrderStatusConstant.CLOSED); - courseOrderService.updateById(courseOrder); + courseOrderService.update(lambdaUpdateWrapper); } diff --git a/src/main/java/com/greenorange/promotion/mapper/RefundRecordMapper.java b/src/main/java/com/greenorange/promotion/mapper/RefundRecordMapper.java new file mode 100644 index 0000000..bca4b10 --- /dev/null +++ b/src/main/java/com/greenorange/promotion/mapper/RefundRecordMapper.java @@ -0,0 +1,18 @@ +package com.greenorange.promotion.mapper; + +import com.greenorange.promotion.model.entity.RefundRecord; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** +* @author 35880 +* @description 针对表【refund_record(退款记录表)】的数据库操作Mapper +* @createDate 2025-07-01 08:18:44 +* @Entity com.greenorange.promotion.model.entity.RefundRecord +*/ +public interface RefundRecordMapper extends BaseMapper { + +} + + + + diff --git a/src/main/java/com/greenorange/promotion/model/dto/course/CourseAddRequest.java b/src/main/java/com/greenorange/promotion/model/dto/course/CourseAddRequest.java index fd5786a..10fea39 100644 --- a/src/main/java/com/greenorange/promotion/model/dto/course/CourseAddRequest.java +++ b/src/main/java/com/greenorange/promotion/model/dto/course/CourseAddRequest.java @@ -37,7 +37,7 @@ public class CourseAddRequest implements Serializable { */ @NotBlank(message = "课程类别不能为空") @EnumValue(enumClass = CourseTypeEnum.class) - @Schema(description = "课程类别[考公,财经]", example = "自媒体") + @Schema(description = "课程类别[考公,财经]", example = "财经") private String type; /** diff --git a/src/main/java/com/greenorange/promotion/model/dto/refundRecord/RefundRecordAddRequest.java b/src/main/java/com/greenorange/promotion/model/dto/refundRecord/RefundRecordAddRequest.java new file mode 100644 index 0000000..c91c1c6 --- /dev/null +++ b/src/main/java/com/greenorange/promotion/model/dto/refundRecord/RefundRecordAddRequest.java @@ -0,0 +1,86 @@ +package com.greenorange.promotion.model.dto.refundRecord; + +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 = { + "outTradeNo", + "outRefundNo", + "name", + "type", + "image", + "totalAmount", + "refundAmount", + "userId", +}) +public class RefundRecordAddRequest implements Serializable { + + /** + * 订单号 + */ + @NotBlank(message = "订单号不能为空") + @Schema(description = "订单号", example = "") + private String outTradeNo; + + /** + * 退款单号 + */ + @NotBlank(message = "退款单号不能为空") + @Schema(description = "退款单号", example = "") + private String outRefundNo; + + /** + * 课程名称 + */ + @NotBlank(message = "课程名称不能为空") + @Schema(description = "课程名称", example = "") + private String name; + + /** + * 课程类别 + */ + @NotBlank(message = "课程类别不能为空") + @Schema(description = "课程类别", example = "") + private String type; + + /** + * 课程图片 + */ + @NotBlank(message = "课程图片不能为空") + @Schema(description = "课程图片", example = "") + private String image; + + /** + * 订单价格 + */ + @Schema(description = "订单价格", example = "") + private BigDecimal totalAmount; + + /** + * 退款金额 + */ + @Schema(description = "退款金额", example = "") + private BigDecimal refundAmount; + + /** + * 用户id + */ + @Min(value = 1L, message = "用户id ID不能小于1") + @Schema(description = "用户id", example = "") + private Long userId; + + + @Serial + private static final long serialVersionUID = 1L; +} + diff --git a/src/main/java/com/greenorange/promotion/model/dto/refundRecord/RefundRecordQueryRequest.java b/src/main/java/com/greenorange/promotion/model/dto/refundRecord/RefundRecordQueryRequest.java new file mode 100644 index 0000000..846513f --- /dev/null +++ b/src/main/java/com/greenorange/promotion/model/dto/refundRecord/RefundRecordQueryRequest.java @@ -0,0 +1,30 @@ +package com.greenorange.promotion.model.dto.refundRecord; + +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 RefundRecordQueryRequest extends PageRequest implements Serializable { + + /** + * 退款单号 + */ + @Schema(description = "退款单号", example = "42250701082233444328323233") + private String outRefundNo; + + + @Serial + private static final long serialVersionUID = 1L; +} + diff --git a/src/main/java/com/greenorange/promotion/model/dto/refundRecord/RefundRecordUpdateRequest.java b/src/main/java/com/greenorange/promotion/model/dto/refundRecord/RefundRecordUpdateRequest.java new file mode 100644 index 0000000..77a8443 --- /dev/null +++ b/src/main/java/com/greenorange/promotion/model/dto/refundRecord/RefundRecordUpdateRequest.java @@ -0,0 +1,93 @@ +package com.greenorange.promotion.model.dto.refundRecord; + +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", + "outRefundNo", + "name", + "type", + "image", + "totalAmount", + "refundAmount", + "userId", +}) +public class RefundRecordUpdateRequest 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; + + /** + * 退款单号 + */ + @NotBlank(message = "退款单号不能为空") + @Schema(description = "退款单号", example = "") + private String outRefundNo; + + /** + * 课程名称 + */ + @NotBlank(message = "课程名称不能为空") + @Schema(description = "课程名称", example = "") + private String name; + + /** + * 课程类别 + */ + @NotBlank(message = "课程类别不能为空") + @Schema(description = "课程类别", example = "") + private String type; + + /** + * 课程图片 + */ + @NotBlank(message = "课程图片不能为空") + @Schema(description = "课程图片", example = "") + private String image; + + /** + * 订单价格 + */ + @Schema(description = "订单价格", example = "") + private BigDecimal totalAmount; + + /** + * 退款金额 + */ + @Schema(description = "退款金额", example = "") + private BigDecimal refundAmount; + + /** + * 用户id + */ + @Min(value = 1L, message = "用户id ID不能小于1") + @Schema(description = "用户id", example = "") + private Long userId; + + + @Serial + private static final long serialVersionUID = 1L; +} \ No newline at end of file diff --git a/src/main/java/com/greenorange/promotion/model/entity/RefundRecord.java b/src/main/java/com/greenorange/promotion/model/entity/RefundRecord.java new file mode 100644 index 0000000..a33d01e --- /dev/null +++ b/src/main/java/com/greenorange/promotion/model/entity/RefundRecord.java @@ -0,0 +1,87 @@ +package com.greenorange.promotion.model.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +import jakarta.validation.constraints.NotBlank; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 退款记录表 + * @TableName refund_record + */ +@TableName(value ="refund_record") +@Data +public class RefundRecord implements Serializable { + /** + * 退款记录id + */ + @TableId(type = IdType.AUTO) + private Long id; + + /** + * 订单号 + */ + private String outTradeNo; + + /** + * 退款单号 + */ + private String outRefundNo; + + /** + * 课程名称 + */ + private String name; + + /** + * 课程类别 + */ + private String type; + + /** + * 课程图片 + */ + private String image; + + /** + * 订单价格 + */ + private BigDecimal totalAmount; + + /** + * 退款金额 + */ + private BigDecimal refundAmount; + + /** + * 用户id + */ + private Long userId; + + /** + * 是否删除 + */ + private Integer isDelete; + + /** + * 创建时间 + */ + private Date createTime; + + /** + * 更新时间 + */ + private Date updateTime; + + @TableField(exist = false) + private static final long serialVersionUID = 1L; +} \ No newline at end of file diff --git a/src/main/java/com/greenorange/promotion/model/vo/refundRecord/RefundRecordVO.java b/src/main/java/com/greenorange/promotion/model/vo/refundRecord/RefundRecordVO.java new file mode 100644 index 0000000..c5fb230 --- /dev/null +++ b/src/main/java/com/greenorange/promotion/model/vo/refundRecord/RefundRecordVO.java @@ -0,0 +1,80 @@ +package com.greenorange.promotion.model.vo.refundRecord; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +/** + * 退款记录 视图对象 + */ +@Data +@Schema(description = "退款记录 视图对象") +public class RefundRecordVO implements Serializable { + + /** + * 退款记录ID + */ + @Schema(description = "退款记录ID", example = "1") + private Long id; + + /** + * 订单号 + */ + @Schema(description = "订单号", example = "202507011522234822953432323") + private String outTradeNo; + + /** + * 退款单号 + */ + @Schema(description = "退款单号", example = "402507011522234822953432323") + private String outRefundNo; + + /** + * 课程名称 + */ + @Schema(description = "课程名称", example = "数据分析工程师训练营") + private String name; + + /** + * 课程类别 + */ + @Schema(description = "课程类别", example = "财经") + private String type; + + /** + * 课程图片 + */ + @Schema(description = "课程图片", example = "32DE33ND") + private String image; + + /** + * 订单价格 + */ + @Schema(description = "订单价格", example = "50.00") + private BigDecimal totalAmount; + + /** + * 退款金额 + */ + @Schema(description = "退款金额", example = "40.00") + private BigDecimal refundAmount; + + /** + * 用户id + */ + @Schema(description = "用户id", example = "1") + private Long userId; + + /** + * 创建时间 + */ + @Schema(description = "创建时间", example = "2025-07-01 15:22:23") + private Date createTime; + + @Serial + private static final long serialVersionUID = 1L; +} diff --git a/src/main/java/com/greenorange/promotion/service/refund/RefundRecordService.java b/src/main/java/com/greenorange/promotion/service/refund/RefundRecordService.java new file mode 100644 index 0000000..60d9be8 --- /dev/null +++ b/src/main/java/com/greenorange/promotion/service/refund/RefundRecordService.java @@ -0,0 +1,20 @@ +package com.greenorange.promotion.service.refund; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.greenorange.promotion.model.dto.refundRecord.RefundRecordQueryRequest; +import com.greenorange.promotion.model.entity.RefundRecord; +import com.baomidou.mybatisplus.extension.service.IService; + +/** +* @author 35880 +* @description 针对表【refund_record(退款记录表)】的数据库操作Service +* @createDate 2025-07-01 08:18:44 +*/ +public interface RefundRecordService extends IService { + + + /** + * 获取查询条件 + */ + QueryWrapper getQueryWrapper(RefundRecordQueryRequest refundRecordQueryRequest); +} diff --git a/src/main/java/com/greenorange/promotion/service/refund/impl/RefundRecordServiceImpl.java b/src/main/java/com/greenorange/promotion/service/refund/impl/RefundRecordServiceImpl.java new file mode 100644 index 0000000..fbbddfe --- /dev/null +++ b/src/main/java/com/greenorange/promotion/service/refund/impl/RefundRecordServiceImpl.java @@ -0,0 +1,40 @@ +package com.greenorange.promotion.service.refund.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.greenorange.promotion.constant.CommonConstant; +import com.greenorange.promotion.model.dto.refundRecord.RefundRecordQueryRequest; +import com.greenorange.promotion.model.entity.RefundRecord; +import com.greenorange.promotion.service.refund.RefundRecordService; +import com.greenorange.promotion.mapper.RefundRecordMapper; +import com.greenorange.promotion.utils.SqlUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; + +/** +* @author 35880 +* @description 针对表【refund_record(退款记录表)】的数据库操作Service实现 +* @createDate 2025-07-01 08:18:44 +*/ +@Service +public class RefundRecordServiceImpl extends ServiceImpl + implements RefundRecordService{ + + /** + * 获取查询条件 + */ + @Override + public QueryWrapper getQueryWrapper(RefundRecordQueryRequest refundRecordQueryRequest) { + String outRefundNo = refundRecordQueryRequest.getOutRefundNo(); + String sortField = refundRecordQueryRequest.getSortField(); + String sortOrder = refundRecordQueryRequest.getSortOrder(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(StringUtils.isNotBlank(outRefundNo), "outRefundNo", outRefundNo); + queryWrapper.orderBy(SqlUtils.validSortField(sortField), sortOrder.equals(CommonConstant.SORT_ORDER_DESC), sortField); + return queryWrapper; + } +} + + + + diff --git a/src/main/java/com/greenorange/promotion/service/wechat/impl/WechatPayServiceImpl.java b/src/main/java/com/greenorange/promotion/service/wechat/impl/WechatPayServiceImpl.java index 515f40a..d06539c 100644 --- a/src/main/java/com/greenorange/promotion/service/wechat/impl/WechatPayServiceImpl.java +++ b/src/main/java/com/greenorange/promotion/service/wechat/impl/WechatPayServiceImpl.java @@ -10,8 +10,11 @@ import com.greenorange.promotion.constant.OrderStatusConstant; import com.greenorange.promotion.exception.ThrowUtils; import com.greenorange.promotion.model.entity.Course; import com.greenorange.promotion.model.entity.CourseOrder; +import com.greenorange.promotion.model.entity.RefundRecord; +import com.greenorange.promotion.service.common.CommonService; import com.greenorange.promotion.service.course.CourseOrderService; import com.greenorange.promotion.service.course.CourseService; +import com.greenorange.promotion.service.refund.RefundRecordService; import com.greenorange.promotion.service.wechat.WechatPayService; import com.greenorange.promotion.utils.RefundUtils; import com.wechat.pay.java.core.notification.NotificationParser; @@ -53,6 +56,14 @@ public class WechatPayServiceImpl implements WechatPayService { private CourseService courseService; + @Resource + private CommonService commonService; + + + @Resource + private RefundRecordService refundRecordService; + + /** * 请求参数 */ @@ -152,7 +163,18 @@ public class WechatPayServiceImpl implements WechatPayService { amountReq.setCurrency("CNY"); createRequest.setAmount(amountReq); - //TODO 生成退款记录 + // 生成退款记录 + Course course = courseService.getById(courseOrder.getCourseId()); + RefundRecord refundRecord = commonService.copyProperties(course, RefundRecord.class); + refundRecord.setId(null); + refundRecord.setOutTradeNo(orderNumber); + refundRecord.setOutRefundNo(outRefundNo); + refundRecord.setTotalAmount(courseOrder.getTotalAmount().movePointRight(2)); + refundRecord.setRefundAmount(refundAmount.movePointRight(2)); + refundRecord.setUserId(courseOrder.getUserId()); + refundRecord.setCreateTime(null); + refundRecord.setUpdateTime(null); + refundRecordService.save(refundRecord); // 申请退款 System.out.println("退款请求:" + createRequest); @@ -189,6 +211,7 @@ public class WechatPayServiceImpl implements WechatPayService { courseService.updateById(course); } + // TODO 修改课程推广待提成状态 System.out.println("---------------------------微信退款回调(结束)-------------------------------"); return true; } diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index 624945b..7193913 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -83,12 +83,12 @@ wx: appId: wx61b63e27bddf4ea2 #商户号 merchantId: 1700326544 - # #商户API私钥 - # privateKeyPath: apiclient_key.pem + #商户API私钥 + privateKeyPath: apiclient_key.pem #商户证书序列号 merchantSerialNumber: 6DC8953AB741D309920DA650B92F837BE38A2757 - # #商户APIv3密钥 - # apiV3Key: fbemuj4Xql7CYlQJAoTEPYxvPSNgYT2t + #商户APIv3密钥 + apiV3Key: fbemuj4Xql7CYlQJAoTEPYxvPSNgYT2t #通知地址 notifyUrl: https://winning-mouse-internally.ngrok-free.app #微信服务器地址 diff --git a/src/main/resources/mapper/RefundRecordMapper.xml b/src/main/resources/mapper/RefundRecordMapper.xml new file mode 100644 index 0000000..0b5df77 --- /dev/null +++ b/src/main/resources/mapper/RefundRecordMapper.xml @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + id,orderNumber,outRefundNo, + name,type,image, + totalAmount,refundAmount,userId, + isDelete,createTime,updateTime + +