소스 검색

用户完成了一半的订单退款

LiRong 4 주 전
부모
커밋
e654a7d2cb
17개의 변경된 파일843개의 추가작업 그리고 18개의 파일을 삭제
  1. 1 0
      leromro-common/src/main/java/com/leromro/common/core/domain/BaseEntity.java
  2. 16 16
      leromro-core/src/main/java/com/leromro/core/controller/AddressController.java
  3. 139 0
      leromro-core/src/main/java/com/leromro/core/controller/OrderRefundController.java
  4. 3 0
      leromro-core/src/main/java/com/leromro/core/controller/volunteerOrderController.java
  5. 5 0
      leromro-core/src/main/java/com/leromro/core/domain/Address.java
  6. 5 0
      leromro-core/src/main/java/com/leromro/core/domain/MainOrders.java
  7. 110 0
      leromro-core/src/main/java/com/leromro/core/domain/OrderRefund.java
  8. 25 0
      leromro-core/src/main/java/com/leromro/core/domain/vo/OrderRefundVO.java
  9. 67 0
      leromro-core/src/main/java/com/leromro/core/mapper/OrderRefundMapper.java
  10. 2 0
      leromro-core/src/main/java/com/leromro/core/mapper/VolunteerReservationTimeMapper.java
  11. 67 0
      leromro-core/src/main/java/com/leromro/core/service/IOrderRefundService.java
  12. 185 0
      leromro-core/src/main/java/com/leromro/core/service/impl/OrderRefundServiceImpl.java
  13. 4 1
      leromro-core/src/main/java/com/leromro/core/service/impl/SecondOrdersServiceImpl.java
  14. 5 1
      leromro-core/src/main/resources/mapper/core/AddressMapper.xml
  15. 200 0
      leromro-core/src/main/resources/mapper/core/OrderRefundMapper.xml
  16. 9 0
      leromro-core/src/main/resources/mapper/core/VolunteerReservationTimeMapper.xml
  17. 0 0
      leromro-system/src/main/resources/mapper/system/IOrderRefundService.xml

+ 1 - 0
leromro-common/src/main/java/com/leromro/common/core/domain/BaseEntity.java

@@ -10,6 +10,7 @@ import com.baomidou.mybatisplus.annotation.TableField;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.fasterxml.jackson.annotation.JsonInclude;
+import lombok.Builder;
 
 /**
  * Entity基类

+ 16 - 16
leromro-core/src/main/java/com/leromro/core/controller/AddressController.java

@@ -69,28 +69,14 @@ public class AddressController extends BaseController
      */
     @ApiOperation("查询默认地址")
 /*    @PreAuthorize("@ss.hasPermi('core:address:list')")*/
+
+    @Log(title = "查询默认地址")
     @GetMapping("/selectDefaultAddress")
     public R<Address> selectDefaultAddress()
     {
         return addressService.selectDefalutAddress();
     }
 
-
-
-    /**
-     * 导出受服务地址列表
-     */
-    /*@ApiOperation("导出受服务地址列表")
-*//*    @PreAuthorize("@ss.hasPermi('core:address:export')")*//*
-    @Log(title = "受服务地址", businessType = BusinessType.EXPORT)
-    @PostMapping("/export")
-    public void export(HttpServletResponse response, Address address)
-    {
-        List<Address> list = addressService.selectAddressList(address);
-        ExcelUtil<Address> util = new ExcelUtil<Address>(Address.class);
-        util.exportExcel(response, list, "受服务地址数据");
-    }*/
-
     /**
      * 获取受服务地址详细信息
      */
@@ -137,4 +123,18 @@ public class AddressController extends BaseController
     {
         return R.ok(addressService.deleteAddressByAddressIds(addressIds));
     }
+
+    /**
+     * 导出受服务地址列表
+     */
+    /*@ApiOperation("导出受服务地址列表")
+     *//*    @PreAuthorize("@ss.hasPermi('core:address:export')")*//*
+    @Log(title = "受服务地址", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, Address address)
+    {
+        List<Address> list = addressService.selectAddressList(address);
+        ExcelUtil<Address> util = new ExcelUtil<Address>(Address.class);
+        util.exportExcel(response, list, "受服务地址数据");
+    }*/
 }

+ 139 - 0
leromro-core/src/main/java/com/leromro/core/controller/OrderRefundController.java

@@ -0,0 +1,139 @@
+package com.leromro.core.controller;
+
+import java.util.List;
+
+import com.leromro.core.domain.vo.OrderRefundVO;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import com.leromro.common.core.domain.R;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.leromro.common.annotation.Log;
+import com.leromro.common.core.controller.BaseController;
+import com.leromro.common.core.domain.AjaxResult;
+import com.leromro.common.enums.BusinessType;
+import com.leromro.core.domain.OrderRefund;
+import com.leromro.core.service.IOrderRefundService;
+import com.leromro.common.core.page.TableDataInfo;
+
+/**
+ * 订单取消/退款Controller
+ * 
+ * @author ruoyi
+ * @date 2025-04-21
+ */
+@RestController
+@Api(tags = "订单取消/退款")
+@RequestMapping("/core/users/refund")
+public class OrderRefundController extends BaseController
+{
+    @Autowired
+    private IOrderRefundService lOrderRefundService;
+
+    /**
+     * 查询订单取消/退款列表
+     */
+    @ApiOperation("查询订单取消/退款列表")
+    /*@PreAuthorize("@ss.hasPermi('core:refund:list')")*/
+    @GetMapping("/list")
+    public TableDataInfo<OrderRefund> list(OrderRefund orderRefund)
+    {
+        startPage();
+        List<OrderRefund> list = lOrderRefundService.selectLOrderRefundList(orderRefund);
+        return getDataTable(list);
+    }
+
+
+    /**
+     * 导出订单取消/退款列表
+     */
+    /*@ApiOperation("导出订单取消/退款列表")
+    @PreAuthorize("@ss.hasPermi('core:refund:export')")
+    @Log(title = "订单取消/退款", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, OrderRefund orderRefund)
+    {
+        List<OrderRefund> list = lOrderRefundService.selectLOrderRefundList(orderRefund);
+        ExcelUtil<OrderRefund> util = new ExcelUtil<OrderRefund>(OrderRefund.class);
+        util.exportExcel(response, list, "订单取消/退款数据");
+    }*/
+
+    /**
+     * 获取订单取消/退款详细信息
+     */
+    @ApiOperation("获取订单取消/退款详细信息")
+    /*@PreAuthorize("@ss.hasPermi('core:refund:query')")*/
+    @GetMapping(value = "/refundInfo/{orderRefundId}")
+    public R<OrderRefund> getInfo(@PathVariable("orderRefundId") Long orderRefundId)
+    {
+        return R.ok(lOrderRefundService.selectLOrderRefundByOrderRefundId(orderRefundId));
+    }
+
+    /**
+     * 获取订单取消/退款详细信息
+     */
+    @ApiOperation("订单取消/退款信息 回显 ")
+    /*@PreAuthorize("@ss.hasPermi('core:refund:query')")*/
+    @GetMapping(value = "/orderInfo/{mainOrderId}")
+    public R<OrderRefundVO> getRefundIdInfo(@PathVariable("mainOrderId") Long mainOrderId)
+    {
+        return R.ok(lOrderRefundService.selectOrderRefundByMainOrderId(mainOrderId));
+    }
+
+    /**
+     * 新增订单取消/退款
+     */
+    @ApiOperation("新增订单取消/退款")
+/*    @PreAuthorize("@ss.hasPermi('core:refund:add')")*/
+    @Log(title = "订单取消/退款", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody OrderRefund orderRefund)
+    {
+        return toAjax(lOrderRefundService.insertLOrderRefund(orderRefund));
+    }
+
+    /**
+     * 修改订单取消/退款
+     */
+    @ApiOperation("修改订单取消/退款")
+   /* @PreAuthorize("@ss.hasPermi('core:refund:edit')")*/
+    @Log(title = "订单取消/退款", businessType = BusinessType.UPDATE)
+    @PutMapping("/updateRefund")
+    public AjaxResult edit(@RequestBody OrderRefund orderRefund)
+    {
+        return toAjax(lOrderRefundService.updateLOrderRefund(orderRefund));
+    }
+
+    /**
+     * 删除订单取消/退款
+     */
+    @ApiOperation("删除订单取消/退款")
+   /* @PreAuthorize("@ss.hasPermi('core:refund:remove')")*/
+    @Log(title = "订单取消/退款", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{orderRefundIds}")
+    public R<Integer> remove(@PathVariable Long[] orderRefundIds)
+    {
+        return R.ok(lOrderRefundService.deleteLOrderRefundByOrderRefundIds(orderRefundIds));
+    }
+    /**
+     * 审批通过订单退款 以及后续流程。
+     */
+    @ApiOperation("订单退款审批接口")
+   /* @PreAuthorize("@ss.hasPermi('core:refund:remove')")*/
+    @Log(title = "订单退款 审批", businessType = BusinessType.UPDATE)
+	@PostMapping("/checkOrderRefund")
+    public AjaxResult checkOrderRefund(@RequestBody OrderRefund orderRefund)
+    {
+        lOrderRefundService.checkOrderRefund(orderRefund);
+        return AjaxResult.success();
+    }
+
+
+}

+ 3 - 0
leromro-core/src/main/java/com/leromro/core/controller/volunteerOrderController.java

@@ -15,7 +15,9 @@ import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
+import java.math.BigDecimal;
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * 订单主Controller
@@ -34,6 +36,7 @@ public class volunteerOrderController {
     public R<List<VolunteerOrdersVO>> selectVolunteerList(Long orderStatus) {
         Long userId = SecurityUtils.getUserId();
         List<VolunteerOrdersVO> list = secondOrderService.selectOrderList(userId, orderStatus);
+        list.forEach(volunteerOrdersVO -> volunteerOrdersVO.setServiceOnePrice(volunteerOrdersVO.getServiceOnePrice().multiply(new BigDecimal("0.85"))));
         return R.ok(list);
     }
 

+ 5 - 0
leromro-core/src/main/java/com/leromro/core/domain/Address.java

@@ -46,6 +46,11 @@ public class Address extends BaseEntity
     @ApiModelProperty("收货人姓名")
     private String name;
 
+    /** 收货人姓名 */
+    @TableField("sex")
+    @ApiModelProperty("收货人性别")
+    private Integer sex;
+
     /** 年龄 */
     @TableField("age")
     @ApiModelProperty("年龄")

+ 5 - 0
leromro-core/src/main/java/com/leromro/core/domain/MainOrders.java

@@ -113,6 +113,11 @@ public class MainOrders extends BaseEntity
     @ApiModelProperty("订单支付方式:0 未支付,1余额 ,2微信,3支付宝")
     private Integer paymentMethod;
 
+    /** 志愿者id */
+    @Excel(name = "外部支付单号")
+    @ApiModelProperty("外部支付单号")
+    private Long transactionId;
+
     /** 志愿者id */
     @Excel(name = "志愿者id")
     @ApiModelProperty("志愿者id")

+ 110 - 0
leromro-core/src/main/java/com/leromro/core/domain/OrderRefund.java

@@ -0,0 +1,110 @@
+package com.leromro.core.domain;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableField;
+import lombok.*;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import com.leromro.common.core.domain.BaseEntity;
+
+import java.math.BigDecimal;
+
+/**
+ * 订单取消/退款对象 l_order_refund
+ *
+ * @author ruoyi
+ * @date 2025-04-21
+ */
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+@TableName("l_order_refund")
+@EqualsAndHashCode(callSuper = true)
+@ApiModel(value = "LOrderRefund", description = "订单取消/退款")
+public class OrderRefund extends BaseEntity {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    @TableField("order_refund_id")
+    @ApiModelProperty("主键")
+    private Long orderRefundId;
+
+    /**
+     * 主订单号
+     */
+    @TableField("main_order_id")
+    @ApiModelProperty("主订单号")
+    private String mainOrderId;
+    /**
+     * 主订单号
+     */
+    @TableField("user_id")
+    @ApiModelProperty("用户id")
+    private Long userId;
+    /**
+     * 主订单号
+     */
+    @TableField("volunteer_id")
+    @ApiModelProperty("主订单号")
+    private String volunteerId;
+    /**
+     * 申请的退款金额
+     */
+    @TableField("refund_apply_amount")
+    @ApiModelProperty("申请的退款金额")
+    private BigDecimal refundApplyAmount;
+
+    /**
+     * 可退款金额
+     */
+    @TableField("refund_amount")
+    @ApiModelProperty("可退款金额")
+    private BigDecimal refundAmount;
+
+    /**
+     * 退款原因文字
+     */
+    @TableField("refund_reason")
+    @ApiModelProperty("退款原因文字")
+    private String refundReason;
+
+    /**
+     * 退款原因图片
+     */
+    @TableField("refund_picture")
+    @ApiModelProperty("退款原因图片")
+    private String refundPicture;
+
+    /**
+     * 驳回原因
+     */
+    @TableField("rejection_reason")
+    @ApiModelProperty("驳回原因")
+    private String rejectionReason;
+
+    /**
+     * 驳回图片
+     */
+    @TableField("rejection_picture")
+    @ApiModelProperty("驳回图片")
+    private String rejectionPicture;
+
+    /**
+     * 状态:0 处理中 1已退款 2已驳回
+     */
+    @TableField("status")
+    @ApiModelProperty("状态:0 处理中 1已退款 2已驳回 ")
+    private Integer status;
+
+    /**
+     * 0 余额 1微信 2支付宝
+     */
+    @TableField("refund_type")
+    @ApiModelProperty(" 0 余额 1微信 2支付宝")
+    private Integer refundType;
+
+
+}

+ 25 - 0
leromro-core/src/main/java/com/leromro/core/domain/vo/OrderRefundVO.java

@@ -0,0 +1,25 @@
+package com.leromro.core.domain.vo;
+
+import com.leromro.core.domain.MainOrders;
+import com.leromro.core.domain.SecondOrder;
+import lombok.*;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.List;
+
+
+@Getter
+@Setter
+public class OrderRefundVO extends MainOrders {
+    /** 剩余次数的总金额 */
+    private BigDecimal refundAmount;
+    /** 志愿者姓名 */
+    private String volunteerName;
+    /** 志愿者图片 */
+    private String volunteerPicture;
+    /** 剩余次数的总金额 */
+    private List<SecondOrder> SecondOrder;
+
+
+}

+ 67 - 0
leromro-core/src/main/java/com/leromro/core/mapper/OrderRefundMapper.java

@@ -0,0 +1,67 @@
+package com.leromro.core.mapper;
+
+import java.util.List;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.leromro.core.domain.OrderRefund;
+import com.leromro.core.domain.vo.OrderRefundVO;
+
+/**
+ * 订单取消/退款Mapper接口
+ * 
+ * @author ruoyi
+ * @date 2025-04-21
+ */
+public interface OrderRefundMapper extends BaseMapper<OrderRefund>
+{
+    /**
+     * 查询订单取消/退款
+     * 
+     * @param orderRefundId 订单取消/退款主键
+     * @return 订单取消/退款
+     */
+    public OrderRefund selectLOrderRefundByOrderRefundId(Long orderRefundId);
+
+    /**
+     * 查询订单取消/退款列表
+     * 
+     * @param orderRefund 订单取消/退款
+     * @return 订单取消/退款集合
+     */
+    public List<OrderRefund> selectLOrderRefundList(OrderRefund orderRefund);
+
+    /**
+     * 新增订单取消/退款
+     * 
+     * @param orderRefund 订单取消/退款
+     * @return 结果
+     */
+    public int insertLOrderRefund(OrderRefund orderRefund);
+
+    /**
+     * 修改订单取消/退款
+     * 
+     * @param orderRefund 订单取消/退款
+     * @return 结果
+     */
+    public int updateLOrderRefund(OrderRefund orderRefund);
+
+    /**
+     * 删除订单取消/退款
+     * 
+     * @param orderRefundId 订单取消/退款主键
+     * @return 结果
+     */
+    public int deleteLOrderRefundByOrderRefundId(Long orderRefundId);
+
+    /**
+     * 批量删除订单取消/退款
+     * 
+     * @param orderRefundIds 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteLOrderRefundByOrderRefundIds(Long[] orderRefundIds);
+
+    OrderRefundVO selectOrderRefundInfoByMainOrderId(Long mainOrderId);
+
+    void updateList(List<OrderRefund> orderRefundList);
+}

+ 2 - 0
leromro-core/src/main/java/com/leromro/core/mapper/VolunteerReservationTimeMapper.java

@@ -61,4 +61,6 @@ public interface VolunteerReservationTimeMapper extends BaseMapper<VolunteerRese
     public int deleteVolunteerReservationTimeByVolunteerReservationTimeIds(Long[] volunteerReservationTimeIds);
 
     int insertVolunteerReservationTimeList(List<VolunteerReservationTime> reservationTimes);
+
+    void deleteVolunteerReservationTimeList(List<VolunteerReservationTime> volunteerReservationTimeList);
 }

+ 67 - 0
leromro-core/src/main/java/com/leromro/core/service/IOrderRefundService.java

@@ -0,0 +1,67 @@
+package com.leromro.core.service;
+
+import java.util.List;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.leromro.core.domain.OrderRefund;
+import com.leromro.core.domain.vo.OrderRefundVO;
+
+/**
+ * 订单取消/退款Service接口
+ * 
+ * @author ruoyi
+ * @date 2025-04-21
+ */
+public interface IOrderRefundService extends IService<OrderRefund>
+{
+    /**
+     * 查询订单取消/退款
+     * 
+     * @param orderRefundId 订单取消/退款主键
+     * @return 订单取消/退款
+     */
+    public OrderRefund selectLOrderRefundByOrderRefundId(Long orderRefundId);
+
+    /**
+     * 查询订单取消/退款列表
+     * 
+     * @param orderRefund 订单取消/退款
+     * @return 订单取消/退款集合
+     */
+    public List<OrderRefund> selectLOrderRefundList(OrderRefund orderRefund);
+
+    /**
+     * 新增订单取消/退款
+     * 
+     * @param orderRefund 订单取消/退款
+     * @return 结果
+     */
+    public Boolean insertLOrderRefund(OrderRefund orderRefund);
+
+    /**
+     * 修改订单取消/退款
+     * 
+     * @param orderRefund 订单取消/退款
+     * @return 结果
+     */
+    public Boolean updateLOrderRefund(OrderRefund orderRefund);
+
+    /**
+     * 批量删除订单取消/退款
+     * 
+     * @param orderRefundIds 需要删除的订单取消/退款主键集合
+     * @return 结果
+     */
+    public int deleteLOrderRefundByOrderRefundIds(Long[] orderRefundIds);
+
+    /**
+     * 删除订单取消/退款信息
+     * 
+     * @param orderRefundId 订单取消/退款主键
+     * @return 结果
+     */
+    public int deleteLOrderRefundByOrderRefundId(Long orderRefundId);
+
+    OrderRefundVO selectOrderRefundByMainOrderId(Long mainOrderId);
+
+    void checkOrderRefund(OrderRefund orderRefund);
+}

+ 185 - 0
leromro-core/src/main/java/com/leromro/core/service/impl/OrderRefundServiceImpl.java

@@ -0,0 +1,185 @@
+package com.leromro.core.service.impl;
+
+import java.math.BigDecimal;
+import java.time.LocalDate;
+import java.util.List;
+import java.util.stream.Collectors;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.Update;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.leromro.core.domain.*;
+import com.leromro.core.domain.vo.OrderRefundVO;
+import com.leromro.core.mapper.*;
+import com.leromro.core.utils.DateTimeUtil;
+import org.apache.commons.math3.stat.inference.OneWayAnova;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.leromro.core.service.IOrderRefundService;
+import org.springframework.transaction.annotation.Transactional;
+
+/**
+ * 订单取消/退款Service业务层处理
+ * 
+ * @author ruoyi
+ * @date 2025-04-21
+ */
+
+@Service
+public class OrderRefundServiceImpl extends ServiceImpl<OrderRefundMapper, OrderRefund> implements IOrderRefundService
+{
+    @Autowired
+    private OrderRefundMapper lOrderRefundMapper;
+    @Autowired
+    private SecondOrdersMapper secondOrdersMapper;
+    @Autowired
+    private PlatformFinanceMapper platformFinanceMapper;
+    @Autowired
+    private ClientAccountMapper clientAccountMapper;
+    @Autowired
+    private VolunteerReservationTimeMapper reservationTimeMapper;
+    @Autowired
+    private VolunteerWorkDateMapper workDateMapper;
+    @Autowired
+    private MainOrdersMapper mainOrdersMapper;
+
+    /**
+     * 查询订单取消/退款
+     * 
+     * @param orderRefundId 订单取消/退款主键
+     * @return 订单取消/退款
+     */
+    @Override
+    public OrderRefund selectLOrderRefundByOrderRefundId(Long orderRefundId)
+    {
+        return lOrderRefundMapper.selectLOrderRefundByOrderRefundId(orderRefundId);
+    }
+
+    /**
+     * 查询订单取消/退款列表
+     * 
+     * @param orderRefund 订单取消/退款
+     * @return 订单取消/退款
+     */
+    @Override
+    public List<OrderRefund> selectLOrderRefundList(OrderRefund orderRefund)
+    {
+        return lOrderRefundMapper.selectLOrderRefundList(orderRefund);
+    }
+
+    /**
+     * 新增订单取消/退款
+     * 
+     * @param orderRefund 订单取消/退款
+     * @return 结果
+     */
+    @Override
+    public Boolean insertLOrderRefund(OrderRefund orderRefund)
+    {
+        //如果订单,一次都没完成,那就直接不用审批,直接退。
+        orderRefund.setStatus(0);
+        return this.save(orderRefund);
+    }
+
+    /**
+     * 修改订单取消/退款
+     * 
+     * @param orderRefund 订单取消/退款
+     * @return 结果
+     */
+    @Override
+    public Boolean updateLOrderRefund(OrderRefund orderRefund)
+    {
+        return this.updateById(orderRefund);
+    }
+
+    /**
+     * 批量删除订单取消/退款
+     * 
+     * @param orderRefundIds 需要删除的订单取消/退款主键
+     * @return 结果
+     */
+    @Override
+    public int deleteLOrderRefundByOrderRefundIds(Long[] orderRefundIds)
+    {
+        return lOrderRefundMapper.deleteLOrderRefundByOrderRefundIds(orderRefundIds);
+    }
+
+    /**
+     * 删除订单取消/退款信息
+     * 
+     * @param orderRefundId 订单取消/退款主键
+     * @return 结果
+     */
+    @Override
+    public int deleteLOrderRefundByOrderRefundId(Long orderRefundId)
+    {
+        return lOrderRefundMapper.deleteLOrderRefundByOrderRefundId(orderRefundId);
+    }
+
+    /**
+     * @param mainOrderId
+     * @return
+     */
+    @Override
+    public OrderRefundVO selectOrderRefundByMainOrderId(Long mainOrderId) {
+        //根据mainID 取出
+        OrderRefundVO refundVO = lOrderRefundMapper.selectOrderRefundInfoByMainOrderId(mainOrderId);
+        refundVO.setRefundAmount(refundVO.getServiceOnePrice().multiply(new BigDecimal(refundVO.getTotalTimes()-refundVO.getFinishTimes())));
+
+        QueryWrapper<SecondOrder> mainOrderQueryWrapper = new QueryWrapper<SecondOrder>().eq("main_order_id", mainOrderId).eq("order_status",0);
+        List<SecondOrder> secondOrderList = secondOrdersMapper.selectList(mainOrderQueryWrapper);
+        refundVO.setSecondOrder(secondOrderList);
+        return refundVO;
+    }
+
+    /**
+     * @param
+     */
+    @Override
+    @Transactional
+    public void checkOrderRefund(OrderRefund orderRefund) {
+        //只能单独审核
+        //更改状态 更改更新时间,更改审批状态、退款钱数、原因、图片。
+        orderRefund.setUpdateTime(DateTimeUtil.getNowTime());
+        lOrderRefundMapper.updateLOrderRefund(orderRefund);
+        //小订单修改状态,并且
+        QueryWrapper<SecondOrder> secondOrderQueryWrapper = new QueryWrapper<SecondOrder>().eq("main_order_id", orderRefund.getMainOrderId()).eq("order_status",0);
+        List<SecondOrder> secondOrderList = secondOrdersMapper.selectList(secondOrderQueryWrapper);
+        List<String> secondOrderIdList = secondOrderList.stream().map(SecondOrder::getSecondOrderId).collect(Collectors.toList());
+        UpdateWrapper<SecondOrder> secondOrderUpdateWrapper = new UpdateWrapper<SecondOrder>().in("second_order_id", secondOrderIdList).eq("order_status",0).set("order_status", 3);
+        secondOrdersMapper.update(null,secondOrderUpdateWrapper);
+        //根据小订单,删除志愿者预约时间表
+        List<VolunteerReservationTime> volunteerReservationTimeList = secondOrderList.stream().map(secondOrder -> {
+            new VolunteerReservationTime();
+            return VolunteerReservationTime.builder().volunteerId(secondOrder.getVolunteerId()).reservationDate(secondOrder.getWorkDate()).reservationTime(secondOrder.getWorkStartTime()).build();
+        }).collect(Collectors.toList());
+        reservationTimeMapper.deleteVolunteerReservationTimeList(volunteerReservationTimeList);
+        //修改志愿者工作日的预约状态。 1先把志愿者预约状态全部设置为0 然后在查哪一天有预约,然后再把有的设置为1
+        UpdateWrapper<VolunteerWorkDate> volunteerWorkDateUpdateWrapper = new UpdateWrapper<VolunteerWorkDate>().eq("volunteer_id", orderRefund.getVolunteerId()).set("has_reservation", 0);
+        workDateMapper.update(null,volunteerWorkDateUpdateWrapper);
+        QueryWrapper<VolunteerReservationTime> reservationTimeQueryWrapper = new QueryWrapper<VolunteerReservationTime>().eq("volunteer_id", orderRefund.getVolunteerId());
+        List<VolunteerReservationTime> reservationTimes = reservationTimeMapper.selectList(reservationTimeQueryWrapper);
+        List<LocalDate> reservationDate = reservationTimes.stream().map(VolunteerReservationTime::getReservationDate).collect(Collectors.toList());
+        UpdateWrapper<VolunteerWorkDate> volunteerWorkDateUpdateWrapper1 = new UpdateWrapper<VolunteerWorkDate>().eq("volunteer_id", orderRefund.getVolunteerId()).in("work_date", reservationDate).set("has_reservation", 0);
+        workDateMapper.update(null,volunteerWorkDateUpdateWrapper1);
+        //恢复余额,以及向平台流水表更改,减少其中的流水;
+        List<PlatformFinance> platformFinanceList = secondOrderList.stream().map(secondOrder -> {
+            new PlatformFinance();
+            return PlatformFinance.builder()
+                    .changeMoney(secondOrder.getServiceOnePrice()).changeType(0).moneyType(1).sourceType(2).secondOrderId(secondOrder.getSecondOrderId()).volunteerId(secondOrder.getVolunteerId())
+                    .build();
+        }).collect(Collectors.toList());
+        platformFinanceMapper.insertPlatformFinanceList(platformFinanceList);
+        //恢复用户余额,用户账户表增加钱数
+        UpdateWrapper<ClientAccount> clientAccountUpdateWrapper = new UpdateWrapper<ClientAccount>().eq("user_id", orderRefund.getUserId()).setSql("balance = balance + " + orderRefund.getRefundAmount());
+        clientAccountMapper.update(null,clientAccountUpdateWrapper);
+        //主订单修改状态
+        UpdateWrapper<MainOrders> mainOrdersMapperUpdateWrapper = new UpdateWrapper<MainOrders>().eq("main_order_id", orderRefund.getMainOrderId()).set("order_status", 7);
+        mainOrdersMapper.update(null,mainOrdersMapperUpdateWrapper);
+
+
+
+    }
+}

+ 4 - 1
leromro-core/src/main/java/com/leromro/core/service/impl/SecondOrdersServiceImpl.java

@@ -89,8 +89,11 @@ public class SecondOrdersServiceImpl extends ServiceImpl<SecondOrdersMapper, Sec
         String mainOrderId = secondOrderInfo.getMainOrderId();
         QueryWrapper<MainOrders> mainOrdersQueryWrapper = new QueryWrapper<MainOrders>().eq("main_order_id", mainOrderId);
         Long totalTimes = mainOrdersMapper.selectList(mainOrdersQueryWrapper).get(0).getTotalTimes();
-        UpdateWrapper<MainOrders> mainOrdersUpdateWrapper = new UpdateWrapper<MainOrders>().eq("main_order_id", mainOrderId).set("order_status", 4);
+        UpdateWrapper<MainOrders> mainOrdersUpdateWrapper = new UpdateWrapper<MainOrders>().eq("main_order_id", mainOrderId).setSql("finish_times = finish_times + 1");
         if (secondOrderInfo.getWorkNumber().equals(totalTimes)){
+            mainOrdersUpdateWrapper.set("order_status", 4);
+            mainOrdersMapper.update(null,mainOrdersUpdateWrapper);
+        }else {
             mainOrdersMapper.update(null,mainOrdersUpdateWrapper);
         }
         return AjaxResult.success();

+ 5 - 1
leromro-core/src/main/resources/mapper/core/AddressMapper.xml

@@ -9,6 +9,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="userId"    column="user_id"    />
         <result property="telephone"    column="telephone"    />
         <result property="name"    column="name"    />
+        <result property="sex"    column="sex"    />
         <result property="age"    column="age"    />
         <result property="isContagion"    column="is_contagion"    />
         <result property="haveContagion"    column="have_contagion"    />
@@ -30,7 +31,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </resultMap>
 
     <sql id="selectAddressVo">
-        select address_id, user_id, telephone, name, age, is_contagion, have_contagion, province_code, province_name, city_code, city_name, district_code, district_name, address, is_default, is_delete, label, create_time, create_by, update_time, update_by, remark from l_address
+        select address_id, user_id, telephone, name,sex, age, is_contagion, have_contagion, province_code, province_name, city_code, city_name, district_code, district_name, address, is_default, is_delete, label, create_time, create_by, update_time, update_by, remark from l_address
     </sql>
 
     <select id="selectAddressList" parameterType="Address" resultMap="AddressResult">
@@ -66,6 +67,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="userId != null">user_id,</if>
             <if test="telephone != null">telephone,</if>
             <if test="name != null">name,</if>
+            <if test="sex != null">sex,</if>
             <if test="age != null">age,</if>
             <if test="isContagion != null">is_contagion,</if>
             <if test="haveContagion != null">have_contagion,</if>
@@ -89,6 +91,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="userId != null">#{userId},</if>
             <if test="telephone != null">#{telephone},</if>
             <if test="name != null">#{name},</if>
+            <if test="sex != null">#{sex},</if>
             <if test="age != null">#{age},</if>
             <if test="isContagion != null">#{isContagion},</if>
             <if test="haveContagion != null">#{haveContagion},</if>
@@ -116,6 +119,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="userId != null">user_id = #{userId},</if>
             <if test="telephone != null">telephone = #{telephone},</if>
             <if test="name != null">name = #{name},</if>
+            <if test="sex != null">sex = #{sex},</if>
             <if test="age != null">age = #{age},</if>
             <if test="isContagion != null">is_contagion = #{isContagion},</if>
             <if test="haveContagion != null">have_contagion = #{haveContagion},</if>

+ 200 - 0
leromro-core/src/main/resources/mapper/core/OrderRefundMapper.xml

@@ -0,0 +1,200 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.leromro.core.mapper.OrderRefundMapper">
+    
+    <resultMap type="OrderRefund" id="LOrderRefundResult">
+        <result property="orderRefundId"    column="order_refund_id"    />
+        <result property="mainOrderId"    column="main_order_id"    />
+        <result property="userId"    column="user_id"    />
+        <result property="volunteerId"    column="volunteer_id"    />
+        <result property="refundApplyAmount"    column="refund_apply_amount"    />
+        <result property="refundAmount"    column="refund_amount"    />
+        <result property="refundReason"    column="refund_reason"    />
+        <result property="refundPicture"    column="refund_picture"    />
+        <result property="rejectionReason"    column="rejection_reason"    />
+        <result property="rejectionPicture"    column="rejection_picture"    />
+        <result property="status"    column="status"    />
+        <result property="refundType"    column="refund_type"    />
+        <result property="createTime"    column="create_time"    />
+        <result property="createBy"    column="create_by"    />
+        <result property="updateTime"    column="update_time"    />
+        <result property="updateBy"    column="update_by"    />
+        <result property="remark"    column="remark"    />
+    </resultMap>
+
+    <sql id="selectLOrderRefundVo">
+        select order_refund_id,
+               main_order_id,
+               user_id,
+               volunteer_id,
+               refund_apply_amount,
+               refund_amount,
+               refund_reason,
+               refund_picture,
+               rejection_reason,
+               rejection_picture,
+               status,
+               refund_type,
+               create_time,
+               create_by,
+               update_time,
+               update_by,
+               remark
+        from l_order_refund
+    </sql>
+
+    <select id="selectLOrderRefundList" parameterType="OrderRefund" resultMap="LOrderRefundResult">
+        <include refid="selectLOrderRefundVo"/>
+        <where>  
+            <if test="orderRefundId != null "> and order_refund_id = #{orderRefundId}</if>
+            <if test="mainOrderId != null  and mianOrderId != ''"> and main_order_id = #{mainOrderId}</if>
+            <if test="userId != null  and userId != ''"> and user_id = #{userId}</if>
+            <if test="volunteerId != null  and volunteerId != ''"> and volunteer_id = #{volunteerId}</if>
+            <if test="refundApplyAmount != null "> and refund_apply_amount = #{refundApplyAmount}</if>
+            <if test="refundAmount != null "> and refund_amount = #{refundAmount}</if>
+            <if test="refundReason != null  and refundReason != ''"> and refund_reason = #{refundReason}</if>
+            <if test="refundPicture != null  and refundPicture != ''"> and refund_picture = #{refundPicture}</if>
+            <if test="rejectionReason != null  and rejectionReason != ''"> and rejection_reason = #{rejectionReason}</if>
+            <if test="rejectionPicture != null  and rejectionPicture != ''"> and rejection_picture = #{rejectionPicture}</if>
+            <if test="status != null "> and status = #{status}</if>
+            <if test="refundType != null "> and refund_type = #{refundType}</if>
+        </where>
+    </select>
+    
+    <select id="selectLOrderRefundByOrderRefundId" parameterType="Long" resultMap="LOrderRefundResult">
+        <include refid="selectLOrderRefundVo"/>
+        where order_refund_id = #{orderRefundId}
+    </select>
+    <select id="selectOrderRefundInfoByMainOrderId" resultType="com.leromro.core.domain.vo.OrderRefundVO"
+            parameterType="java.lang.Long">
+        select lmo.service_one_price,
+               lmo.service_total_price,
+               lmo.finish_times,
+               lmo.total_times,
+               lmo.create_time,
+               lmo.payment_method,
+               lmo.transaction_id,
+               lmo.service_category,
+               lmo.service_type,
+               lmo.service_subject,
+               lmo.volunteer_id,
+               lmo.user_id,
+               lvi.volunteer_picture as volunteerPicture,
+               lvi.name as volunteerName
+        from l_main_orders lmo
+                 left join l_volunteer_info lvi
+                           on lmo.volunteer_id = lvi.volunteer_id and lmo.service_category = lvi.service_category
+        where main_order_id = #{mainOrderId}
+    </select>
+
+    <insert id="insertLOrderRefund" parameterType="OrderRefund">
+        insert into l_order_refund
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="orderRefundId != null">order_refund_id,</if>
+            <if test="mainOrderId != null">main_order_id,</if>
+            <if test="userId != null">user_id,</if>
+            <if test="volunteerId != null">volunteer_id,</if>
+            <if test="refundApplyAmount != null">refund_apply_amount,</if>
+            <if test="refundAmount != null">refund_amount,</if>
+            <if test="refundReason != null">refund_reason,</if>
+            <if test="refundPicture != null">refund_picture,</if>
+            <if test="rejectionReason != null">rejection_reason,</if>
+            <if test="rejectionPicture != null">rejection_picture,</if>
+            <if test="status != null">status,</if>
+            <if test="refundType != null">refund_type,</if>
+            <if test="createTime != null">create_time,</if>
+            <if test="createBy != null">create_by,</if>
+            <if test="updateTime != null">update_time,</if>
+            <if test="updateBy != null">update_by,</if>
+            <if test="remark != null">remark,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="orderRefundId != null">#{orderRefundId},</if>
+            <if test="mainOrderId != null">#{mainOrderId},</if>
+            <if test="userId != null">#{userId},</if>
+            <if test="volunteerId != null">#{volunteerId},</if>
+            <if test="refundApplyAmount != null">#{refundApplyAmount},</if>
+            <if test="refundAmount != null">#{refundAmount},</if>
+            <if test="refundReason != null">#{refundReason},</if>
+            <if test="refundPicture != null">#{refundPicture},</if>
+            <if test="rejectionReason != null">#{rejectionReason},</if>
+            <if test="rejectionPicture != null">#{rejectionPicture},</if>
+            <if test="status != null">#{status},</if>
+            <if test="refundType != null">#{refundType},</if>
+            <if test="createTime != null">#{createTime},</if>
+            <if test="createBy != null">#{createBy},</if>
+            <if test="updateTime != null">#{updateTime},</if>
+            <if test="updateBy != null">#{updateBy},</if>
+            <if test="remark != null">#{remark},</if>
+         </trim>
+    </insert>
+
+    <update id="updateLOrderRefund" parameterType="OrderRefund">
+        update l_order_refund
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="mainOrderId != null">main_order_id = #{mainOrderId},</if>
+            <if test="userId != null">user_id = #{userId},</if>
+            <if test="volunteerId != null">volunteer_id = #{volunteerId},</if>
+            <if test="refundApplyAmount != null">refund_apply_amount = #{refundApplyAmount},</if>
+            <if test="refundAmount != null">refund_amount = #{refundAmount},</if>
+            <if test="refundReason != null">refund_reason = #{refundReason},</if>
+            <if test="refundPicture != null">refund_picture = #{refundPicture},</if>
+            <if test="rejectionReason != null">rejection_reason = #{rejectionReason},</if>
+            <if test="rejectionPicture != null">rejection_picture = #{rejectionPicture},</if>
+            <if test="status != null">status = #{status},</if>
+            <if test="refundType != null">refund_type = #{refundType},</if>
+            <if test="createTime != null">create_time = #{createTime},</if>
+            <if test="createBy != null">create_by = #{createBy},</if>
+            <if test="updateTime != null">update_time = #{updateTime},</if>
+            <if test="updateBy != null">update_by = #{updateBy},</if>
+            <if test="remark != null">remark = #{remark},</if>
+        </trim>
+        where order_refund_id = #{orderRefundId}
+    </update>
+    <update id="updateList" parameterType="java.util.List">
+        update l_order_refund
+        <trim prefix="SET" suffixOverrides=",">
+            refund_amount =
+            <foreach collection="list" item="item" open="case order_refund_id" close="end,">
+                when #{item.orderRefundId} then #{item.refundAmount}
+            </foreach>
+            rejection_reason =
+            <foreach collection="list" item="item" open="case order_refund_id" close="end,">
+                when #{item.orderRefundId} then #{item.rejectionReason}
+            </foreach>
+            rejection_picture =
+            <foreach collection="list" item="item" open="case order_refund_id" close="end,">
+                when #{item.orderRefundId} then #{item.rejectionPicture}
+            </foreach>
+            status =
+            <foreach collection="list" item="item" open="case order_refund_id" close="end,">
+                when #{item.orderRefundId} then #{item.status}
+            </foreach>
+            update_time =
+            <foreach collection="list" item="item" open="case order_refund_id" close="end,">
+                when #{item.orderRefundId} then #{item.updateTime}
+            </foreach>
+            update_by =
+            <foreach collection="list" item="item" open="case order_refund_id" close="end,">
+                when #{item.orderRefundId} then #{item.updateBy}
+            </foreach>
+        </trim>
+        where order_refund_id in
+        <foreach collection="list" item="item" open="(" separator="," close=")">
+            #{item.orderRefundId}
+        </foreach>
+    </update>
+
+    <delete id="deleteLOrderRefundByOrderRefundId" parameterType="Long">
+        delete from l_order_refund where order_refund_id = #{orderRefundId}
+    </delete>
+
+    <delete id="deleteLOrderRefundByOrderRefundIds" parameterType="String">
+        delete from l_order_refund where order_refund_id in 
+        <foreach item="orderRefundId" collection="array" open="(" separator="," close=")">
+            #{orderRefundId}
+        </foreach>
+    </delete>
+</mapper>

+ 9 - 0
leromro-core/src/main/resources/mapper/core/VolunteerReservationTimeMapper.xml

@@ -107,4 +107,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             #{volunteerReservationTimeId}
         </foreach>
     </delete>
+    <delete id="deleteVolunteerReservationTimeList"
+            parameterType="java.util.List">
+        delete from l_volunteer_reservation_time where
+        <foreach collection="list" item="item" open="(" separator="or" close=")">
+            volunteer_id = #{item.volunteerId} and
+            reservation_date = #{item.reservationDate} and
+            reservation_time = #{item.reservationTime}
+        </foreach>
+    </delete>
 </mapper>

leromro-system/src/main/resources/mapper/system/IClientAccountService.xml → leromro-system/src/main/resources/mapper/system/IOrderRefundService.xml