Bläddra i källkod

feat(order): 添加退款订单分页查询功能

- 新增退款订单分页查询接口 refundOrderPageList
- 添加退款订单分页表单 RefundOrderPageForm 和响应对象 RefundOrderPageVO
- 在 AppOrderMapper 中增加退款订单分页查询方法及 XML 实现
- 在 AppOrderServiceImpl 中实现 refundOrderPageList 业务逻辑- 为 AppOrderRefundsInfo 实体添加退款类型字段 type
- 在退款接口中增加退款类型参数,完善退款逻辑校验
- 修复部分退款相关代码注释问题,增强退款安全性校验
wzq 1 vecka sedan
förälder
incheckning
b0167a34b1
12 ändrade filer med 243 tillägg och 39 borttagningar
  1. 6 1
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/form/RefundOrderForm.java
  2. 2 1
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/service/WeChatPayService.java
  3. 35 35
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/service/impl/OrderServiceImpl.java
  4. 9 0
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/controller/AppOrderController.java
  5. 5 0
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/entity/AppOrderRefundsInfo.java
  6. 36 0
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/form/RefundOrderPageForm.java
  7. 4 0
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/mapper/AppOrderMapper.java
  8. 23 0
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/mapper/xml/AppOrderMapper.xml
  9. 5 0
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/service/IAppOrderService.java
  10. 30 2
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/service/impl/AppOrderServiceImpl.java
  11. 36 0
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/vo/RefundOrderPageVO.java
  12. 52 0
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/vo/RefundOrderProInfo.java

+ 6 - 1
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/form/RefundOrderForm.java

@@ -23,5 +23,10 @@ public class RefundOrderForm implements Serializable {
     /**
      * 退款原因
      */
-    private String reason;
+    private String reason = "无";
+
+    /**
+     * 退款类型:1-买家申请 2-商家申请
+     */
+    private Integer type;
 }

+ 2 - 1
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/service/WeChatPayService.java

@@ -430,7 +430,7 @@ public class WeChatPayService {
      * @param refundAmount
      * @param reason
      */
-    public void refundOrder(AppOrder appOrder, List<AppOrderProInfo> appOrderProInfoList, BigDecimal refundAmount, String reason) {
+    public void refundOrder(AppOrder appOrder, List<AppOrderProInfo> appOrderProInfoList, BigDecimal refundAmount, String reason,Integer type) {
 
         log.info("进入退款接口------>");
         log.info("执行操作的 原支付交易对应的商户订单号:{}", appOrder.getOrderCode());
@@ -449,6 +449,7 @@ public class WeChatPayService {
         appOrderRefundsInfo.setTransactionId(appOrder.getTransactionId());
         appOrderRefundsInfo.setReason(reason);
         appOrderRefundsInfo.setAmount(refundAmount);
+        appOrderRefundsInfo.setType(type);
         appOrderRefundsInfo.setCreateTime(new Date());
 
         JSONObject params = new JSONObject();

+ 35 - 35
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/service/impl/OrderServiceImpl.java

@@ -1858,40 +1858,40 @@ public class OrderServiceImpl extends ServiceImpl<AppOrderMapper, AppOrder> impl
         List<String> refundOrderProInfoIds = new ArrayList<>(Arrays.asList(refundOrderForm.getOrderProInfoIds().split(",")));
         List<AppOrderProInfo> appOrderProInfoList = new ArrayList<>();
         if (ObjectUtil.isNotEmpty(appOrder)) {
-//            if (appOrder.getProfitSharingStatus() > CommonConstant.NUMBER_0) {
-//                throw new JeecgBootException("当前订单无法进行退款,请联系客服处理!");
-//            }
-//            if(!Objects.equals(appOrder.getOrderType(), CommonConstant.ORDER_PRO_INFO_TYPE_1) && !appOrder.getOrderType().equals(CommonConstant.ORDER_PRO_INFO_TYPE_2)){
-//                throw new JeecgBootException("当前订单类型不支持退款!");
-//            }
-//            if (Objects.equals(appOrder.getOrderStatus(), CommonConstant.ORDER_STATUS_2)) {
-//                throw new JeecgBootException("订单商品已使用,无法进行退款!");
-//            }
-//            //通过订单查询门店退款规则,判断是否可以进行退款
-//            String s = appOrder.getProductIds().split(",")[0];
-//            String priceRuleId = s.split("\\|")[0];
-//            AppSitePriceRules appSitePriceRules =
-//                    appSitePriceRulesMapper.selectOne(Wrappers.<AppSitePriceRules>lambdaQuery().eq(AppSitePriceRules::getId, priceRuleId).last("limit 1"));
-//            String sitePlaceId = appSitePriceRules.getSitePlaceId();
-//            AppSitePlace appSitePlace = appSitePlaceMapper.selectById(sitePlaceId);
-//            if (Objects.equals(appOrder.getOrderType(), CommonConstant.ORDER_PRO_INFO_TYPE_2) && Objects.equals(appSitePlace.getRefundType(),
-//                    CommonConstant.NUMBER_2)) {
-//                throw new JeecgBootException("当前门店不支持退款!");
-//            }
-//            if (Objects.equals(appSitePlace.getRefundType(), CommonConstant.NUMBER_1)) {
-//
-//                for (String refundOrderProInfoId : refundOrderProInfoIds) {
-//                    AppOrderProInfo appOrderProInfo = appOrderProInfoMapper.selectById(refundOrderProInfoId);
-//                    String productId = appOrderProInfo.getProductId();
-//                    AppSitePriceRules sitePriceRules = appSitePriceRulesMapper.selectById(productId);
-//                    Instant originalInstant  = sitePriceRules.getStartTime().toInstant();
-//                    Instant time = originalInstant.minusSeconds(appSitePlace.getEarlyRefundTime() * 60);
-//                    Instant now = Instant.now();
-//                    if (!now.isBefore(time)) {
-//                        throw new JeecgBootException("商品:"+ appOrderProInfo.getProductName() +" 已超过可退时间,无法进行退款!");
-//                    }
-//                }
-//            }
+            if (appOrder.getProfitSharingStatus() > CommonConstant.NUMBER_0) {
+                throw new JeecgBootException("当前订单无法进行退款,请联系客服处理!");
+            }
+            if(!Objects.equals(appOrder.getOrderType(), CommonConstant.ORDER_PRO_INFO_TYPE_1) && !appOrder.getOrderType().equals(CommonConstant.ORDER_PRO_INFO_TYPE_2)){
+                throw new JeecgBootException("当前订单类型不支持退款!");
+            }
+            if (Objects.equals(appOrder.getOrderStatus(), CommonConstant.ORDER_STATUS_2)) {
+                throw new JeecgBootException("订单商品已使用,无法进行退款!");
+            }
+            //通过订单查询门店退款规则,判断是否可以进行退款
+            String s = appOrder.getProductIds().split(",")[0];
+            String priceRuleId = s.split("\\|")[0];
+            AppSitePriceRules appSitePriceRules =
+                    appSitePriceRulesMapper.selectOne(Wrappers.<AppSitePriceRules>lambdaQuery().eq(AppSitePriceRules::getId, priceRuleId).last("limit 1"));
+            String sitePlaceId = appSitePriceRules.getSitePlaceId();
+            AppSitePlace appSitePlace = appSitePlaceMapper.selectById(sitePlaceId);
+            if (Objects.equals(appOrder.getOrderType(), CommonConstant.ORDER_PRO_INFO_TYPE_2) && Objects.equals(appSitePlace.getRefundType(),
+                    CommonConstant.NUMBER_2)) {
+                throw new JeecgBootException("当前门店不支持退款!");
+            }
+            if (Objects.equals(appSitePlace.getRefundType(), CommonConstant.NUMBER_1)) {
+
+                for (String refundOrderProInfoId : refundOrderProInfoIds) {
+                    AppOrderProInfo appOrderProInfo = appOrderProInfoMapper.selectById(refundOrderProInfoId);
+                    String productId = appOrderProInfo.getProductId();
+                    AppSitePriceRules sitePriceRules = appSitePriceRulesMapper.selectById(productId);
+                    Instant originalInstant  = sitePriceRules.getStartTime().toInstant();
+                    Instant time = originalInstant.minusSeconds(appSitePlace.getEarlyRefundTime() * 60);
+                    Instant now = Instant.now();
+                    if (!now.isBefore(time)) {
+                        throw new JeecgBootException("商品:"+ appOrderProInfo.getProductName() +" 已超过可退时间,无法进行退款!");
+                    }
+                }
+            }
 
             //退款金额统计(不为保险的子订单)
             for (String refundOrderProInfoId : refundOrderProInfoIds) {
@@ -1901,7 +1901,7 @@ public class OrderServiceImpl extends ServiceImpl<AppOrderMapper, AppOrder> impl
             }
         }
         //调用退款逻辑
-        weChatPayService.refundOrder(appOrder,appOrderProInfoList,refundAmount, refundOrderForm.getReason());
+        weChatPayService.refundOrder(appOrder,appOrderProInfoList,refundAmount, refundOrderForm.getReason(),refundOrderForm.getType());
 
         return "申请成功,预计在3个工作日内处理!";
     }

+ 9 - 0
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/controller/AppOrderController.java

@@ -17,10 +17,12 @@ import org.jeecg.modules.pay.config.WeChatProfitSharingService;
 import org.jeecg.modules.system.app.dto.ExportConditionDTO;
 import org.jeecg.modules.system.app.entity.AppOrder;
 import org.jeecg.modules.system.app.form.AppOrderPageForm;
+import org.jeecg.modules.system.app.form.RefundOrderPageForm;
 import org.jeecg.modules.system.app.service.IAppOrderService;
 import org.jeecg.modules.system.app.vo.AppOrderInfoVO;
 import org.jeecg.modules.system.app.vo.ExportConditionVO;
 import org.jeecg.modules.system.app.vo.OrderPageVO;
+import org.jeecg.modules.system.app.vo.RefundOrderPageVO;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpHeaders;
 import org.springframework.http.HttpStatus;
@@ -286,4 +288,11 @@ public class AppOrderController extends JeecgController<AppOrder, IAppOrderServi
             return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build();
         }
     }
+
+    @Operation(summary="退款管理-分页列表查询")
+    @PostMapping(value = "/refundOrderPageList")
+    public Result<IPage<RefundOrderPageVO>> refundOrderPageList(@RequestBody RefundOrderPageForm refundOrderPageForm) {
+        IPage<RefundOrderPageVO> page = appOrderService.refundOrderPageList(refundOrderPageForm);
+        return Result.OK(page);
+    }
 }

+ 5 - 0
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/entity/AppOrderRefundsInfo.java

@@ -53,6 +53,11 @@ public class AppOrderRefundsInfo implements Serializable {
     @Schema(description = "orderCode")
     private String orderCode;
 
+    /**
+     * 退款类型:1-买家申请 2-商家申请
+     */
+    @Schema(description = "退款类型:1-买家申请 2-商家申请")
+    private Integer type;
 
     /**
      * 商户退款单号

+ 36 - 0
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/form/RefundOrderPageForm.java

@@ -0,0 +1,36 @@
+package org.jeecg.modules.system.app.form;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+import org.jeecg.modules.app.dto.PageDTO;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.Date;
+
+@Data
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@AllArgsConstructor
+@NoArgsConstructor
+@Schema(description="退款订单分页表单对象")
+public class RefundOrderPageForm extends PageDTO implements Serializable {
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    @Schema(description = "订单编号")
+    private String orderCode;
+
+//    @Schema(description = "商户退款单号")
+//    private String outRefundNo;
+
+    @Schema(description = "开始时间")
+    private Date startTime;
+
+    @Schema(description = "结束时间")
+    private Date endTime;
+}

+ 4 - 0
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/mapper/AppOrderMapper.java

@@ -13,7 +13,9 @@ import org.jeecg.modules.quartz.vo.JobReservationSiteVo;
 import org.jeecg.modules.system.app.dto.AppGameRuleDTO;
 import org.jeecg.modules.system.app.entity.AppOrder;
 import org.jeecg.modules.system.app.form.AppOrderPageForm;
+import org.jeecg.modules.system.app.form.RefundOrderPageForm;
 import org.jeecg.modules.system.app.vo.OrderPageVO;
+import org.jeecg.modules.system.app.vo.RefundOrderPageVO;
 import org.jeecg.modules.system.app.vo.statistics.FindByShopSumVO;
 
 import java.time.LocalDate;
@@ -63,4 +65,6 @@ public interface AppOrderMapper extends BaseMapper<AppOrder> {
     List<FindByShopSumVO> findByShopSumList(@Param("orgCode")String orgCode,@Param("startTime") LocalDateTime startTime,@Param("endTime") LocalDateTime endTime);
 
     Long findByProductIds(@Param("productIds") List<AppGameRuleDTO> productIds);
+
+    IPage<RefundOrderPageVO> refundOrderPageList(IPage<RefundOrderPageVO> page,@Param("refundOrderPageForm") RefundOrderPageForm refundOrderPageForm);
 }

+ 23 - 0
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/mapper/xml/AppOrderMapper.xml

@@ -204,4 +204,27 @@
             #{productId.id}
         </foreach>
     </select>
+    <select id="refundOrderPageList" resultType="org.jeecg.modules.system.app.vo.RefundOrderPageVO">
+        SELECT
+            o.id AS orderId,
+            o.order_code,
+            o.order_status,
+            o.after_sale_status,
+            o.create_time
+        FROM
+            nm_order o
+        <where>
+            o.del_flag = 0 AND o.order_status = 1 AND o.after_sale_status > 0
+            <if test="refundOrderPageForm.orderCode != null and refundOrderPageForm.orderCode !=''">
+                and o.order_code LIKE CONCAT('%',#{appOrderPageForm.orderCode},'%')
+            </if>
+            <if test="refundOrderPageForm.startTime != null">
+                and DATE_FORMAT(o.create_time,'%Y-%m-%d %H:%i:%s') <![CDATA[ >= ]]> #{refundOrderPageForm.startTime}
+            </if>
+            <if test="refundOrderPageForm.endTime != null">
+                and DATE_FORMAT(o.create_time,'%Y-%m-%d %H:%i:%s') <![CDATA[ <= ]]> #{refundOrderPageForm.endTime}
+            </if>
+        </where>
+        order by o.create_time DESC
+    </select>
 </mapper>

+ 5 - 0
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/service/IAppOrderService.java

@@ -1,5 +1,6 @@
 package org.jeecg.modules.system.app.service;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
 import org.jeecg.modules.app.vo.ScanCodeQueryOrderVO;
@@ -10,9 +11,11 @@ import org.jeecg.modules.system.app.dto.ExportConditionDTO;
 import org.jeecg.modules.system.app.entity.AppGame;
 import org.jeecg.modules.system.app.entity.AppOrder;
 import org.jeecg.modules.system.app.form.AppOrderPageForm;
+import org.jeecg.modules.system.app.form.RefundOrderPageForm;
 import org.jeecg.modules.system.app.vo.AppOrderInfoVO;
 import org.jeecg.modules.system.app.vo.ExportConditionVO;
 import org.jeecg.modules.system.app.vo.OrderPageVO;
+import org.jeecg.modules.system.app.vo.RefundOrderPageVO;
 
 import java.io.File;
 import java.io.FileOutputStream;
@@ -96,4 +99,6 @@ public interface IAppOrderService extends IService<AppOrder> {
      * return   {@link }
      **/
     byte[] exportCondition(ExportConditionDTO exportConditionDTO) throws IOException;
+
+    IPage<RefundOrderPageVO> refundOrderPageList(RefundOrderPageForm refundOrderPageForm);
 }

+ 30 - 2
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/service/impl/AppOrderServiceImpl.java

@@ -1,9 +1,11 @@
 package org.jeecg.modules.system.app.service.impl;
 
+import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.fastjson2.JSONArray;
 import com.alibaba.fastjson2.JSONObject;
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -25,6 +27,7 @@ import org.jeecg.modules.system.app.dto.IsinUserInfoDTO;
 import org.jeecg.modules.system.app.dto.VerificationRecordDTO;
 import org.jeecg.modules.system.app.entity.*;
 import org.jeecg.modules.system.app.form.AppOrderPageForm;
+import org.jeecg.modules.system.app.form.RefundOrderPageForm;
 import org.jeecg.modules.system.app.mapper.*;
 import org.jeecg.modules.system.app.service.IAppOrderService;
 import org.jeecg.modules.system.app.vo.*;
@@ -91,13 +94,15 @@ public class AppOrderServiceImpl extends ServiceImpl<AppOrderMapper, AppOrder> i
 
     @Resource
     private AppCoursesMapper appCoursesMapper;
-    @Resource
-    private AppCoursesPriceRulesMapper appCoursesPriceRulesMapper;
+
     @Resource
     private AppCategoryMapper appCategoryMapper;
     @Resource
     private SysDepartMapper sysDepartMapper;
 
+    @Resource
+    private AppOrderRefundsInfoMapper appOrderRefundsInfoMapper;
+
 
     @Override
     @Transactional(rollbackFor = Exception.class)
@@ -500,6 +505,29 @@ public class AppOrderServiceImpl extends ServiceImpl<AppOrderMapper, AppOrder> i
         return generateExcel(list);
     }
 
+    @Override
+    public IPage<RefundOrderPageVO> refundOrderPageList(RefundOrderPageForm refundOrderPageForm) {
+        IPage<RefundOrderPageVO> page = new Page<>(refundOrderPageForm.getPageNo(), refundOrderPageForm.getPageSize());
+        IPage<RefundOrderPageVO> pages = baseMapper.refundOrderPageList(page, refundOrderPageForm);
+        List<RefundOrderPageVO> records = pages.getRecords();
+        for (RefundOrderPageVO record : records) {
+            List<AppOrderProInfo> orderProInfoList = appOrderProInfoMapper.selectList(Wrappers.<AppOrderProInfo>lambdaQuery().eq(AppOrderProInfo::getOrderId, record.getOrderId()).gt(AppOrderProInfo::getAfterSaleStatus, 0));
+            List<RefundOrderProInfo> refundOrderProInfoList = new ArrayList<>();
+            for (AppOrderProInfo appOrderProInfo : orderProInfoList) {
+                RefundOrderProInfo refundOrderProInfo = new RefundOrderProInfo();
+                BeanUtil.copyProperties(appOrderProInfo, refundOrderProInfo);
+
+                //根据子订单查询退款记录,查询退款编号
+                AppOrderRefundsInfo appOrderRefundsInfo = appOrderRefundsInfoMapper.selectOne(Wrappers.<AppOrderRefundsInfo>lambdaQuery().eq(AppOrderRefundsInfo::getOrderProInfoId,
+                        appOrderProInfo.getId()));
+                refundOrderProInfo.setAppOrderRefundsInfo(appOrderRefundsInfo);
+                refundOrderProInfoList.add(refundOrderProInfo);
+            }
+            record.setRefundOrderProInfoList(refundOrderProInfoList);
+        }
+        return pages;
+    }
+
     // 修改 generateExcel 方法返回字节数组
     private byte[] generateExcel(List<Map<String, Object>> dataList) throws IOException {
         Workbook workbook = null;

+ 36 - 0
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/vo/RefundOrderPageVO.java

@@ -0,0 +1,36 @@
+package org.jeecg.modules.system.app.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.List;
+
+@Data
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@AllArgsConstructor
+@NoArgsConstructor
+@Schema(description="退款订单分页列表响应对象")
+public class RefundOrderPageVO implements Serializable {
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    @Schema(description = "订单ID")
+    private String orderId;
+
+    @Schema(description = "订单号")
+    private String orderCode;
+
+    @Schema(description = "订单状态 0-待付款 1-待使用 2-已使用 3-已到期 4-已取消 5-退款中 6已退款")
+    private Integer orderStatus;
+
+    private List<RefundOrderProInfo> refundOrderProInfoList;
+}

+ 52 - 0
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/vo/RefundOrderProInfo.java

@@ -0,0 +1,52 @@
+package org.jeecg.modules.system.app.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+import org.jeecg.modules.system.app.entity.AppOrderRefundsInfo;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+@Data
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@AllArgsConstructor
+@NoArgsConstructor
+@Schema(description="退款订单列表响应对象")
+public class RefundOrderProInfo implements Serializable {
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    @Schema(description = "id")
+    private String id;
+
+    @Schema(description = "商品图片")
+    private String productImage;
+
+    @Schema(description = "商品名称")
+    private String productName;
+
+    @Schema(description = "券号")
+    private String ticketNo;
+
+    @Schema(description = "原价/元")
+    private BigDecimal originalPrice;
+
+    @Schema(description = "实际价格/元")
+    private BigDecimal price;
+
+    @Schema(description = "0-待付款 1-待使用 2-已使用 3-已到期 4-已取消 5-退款中 6已退款")
+    private Integer orderStatus;
+
+    @Schema(description = "售后状态:0-暂无售后 1-待退款 2-已退款 3-失败/异常")
+    private Integer afterSaleStatus;
+
+    @Schema(description = "订单退款记录信息")
+    private AppOrderRefundsInfo appOrderRefundsInfo;
+}