Sfoglia il codice sorgente

更新了志愿者的字段,以及下单根据服务市场创建多个预约时间

LiRong 4 settimane fa
parent
commit
239174d349

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

@@ -93,10 +93,10 @@ public class OrderRefundController extends BaseController
     @ApiOperation("新增订单取消/退款")
 /*    @PreAuthorize("@ss.hasPermi('core:refund:add')")*/
     @Log(title = "订单取消/退款", businessType = BusinessType.INSERT)
-    @PostMapping
+    @PostMapping("/newOrderRefund")
     public AjaxResult add(@RequestBody OrderRefund orderRefund)
     {
-        return toAjax(lOrderRefundService.insertLOrderRefund(orderRefund));
+        return lOrderRefundService.insertLOrderRefund(orderRefund);
     }
 
     /**

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

@@ -13,6 +13,7 @@ import com.leromro.core.domain.vo.SecondOrderInfoVO;
 import com.leromro.core.domain.vo.VolunteerOrderStatisticsVO;
 import com.leromro.core.domain.vo.VolunteerOrdersVO;
 import com.leromro.core.service.IAddressService;
+import com.leromro.core.service.IMainOrderService;
 import com.leromro.core.service.ISecondOrderService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -35,6 +36,8 @@ public class volunteerOrderController extends BaseController {
     private ISecondOrderService secondOrderService;
     @Autowired
     private IAddressService addressService;
+    @Autowired
+    private IMainOrderService mainOrderService;
     @ApiOperation("志愿者查询小订单列表")
     @GetMapping("/volunteerOrderList")
     public R<List<VolunteerOrdersVO>> selectVolunteerList(Long orderStatus) {
@@ -62,6 +65,8 @@ public class volunteerOrderController extends BaseController {
         UpdateWrapper<SecondOrder> updateWrapper = new UpdateWrapper<>();
         updateWrapper.eq("second_order_id",secondOrderId).set("order_status",1);
         secondOrderService.update(updateWrapper);
+        //订单开始 根据secondOrderId修改主订单状态 修改为3
+        mainOrderService.startService(secondOrderId);
         return AjaxResult.success();
     }
     @ApiOperation(value = "志愿者滑动,结束订单并上传图片", notes = "传入seconderOrderId,以及图片拼接在一起的字符串 json对象参数")

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

@@ -48,8 +48,8 @@ public class OrderRefund extends BaseEntity {
      * 主订单号
      */
     @TableField("volunteer_id")
-    @ApiModelProperty("主订单号")
-    private String volunteerId;
+    @ApiModelProperty("志愿者id")
+    private Long volunteerId;
     /**
      * 申请的退款金额
      */

+ 2 - 0
leromro-core/src/main/java/com/leromro/core/domain/SecondOrder.java

@@ -15,6 +15,8 @@ import io.swagger.annotations.ApiModelProperty;
 import com.leromro.common.annotation.Excel;
 import com.leromro.common.core.domain.BaseEntity;
 
+import javax.validation.constraints.NotNull;
+
 /**
  * 志愿者的订单对象 l_volunteer_order
  * 

+ 9 - 0
leromro-core/src/main/java/com/leromro/core/domain/VolunteerInfo.java

@@ -4,9 +4,12 @@ import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
+
+import java.math.BigDecimal;
 import java.time.LocalDateTime;
 import java.io.Serializable;
 
+import com.leromro.common.annotation.Excel;
 import com.leromro.common.annotation.Sensitive;
 import com.leromro.common.core.domain.BaseEntity;
 import com.leromro.common.enums.DesensitizedType;
@@ -125,4 +128,10 @@ public class VolunteerInfo extends BaseEntity {
 
     @ApiModelProperty("业务层级名称")
     private String businessTierName;
+
+    @ApiModelProperty("业务价格")
+    private BigDecimal businessPrice;
+
+    @ApiModelProperty("业务时长(整数分钟)")
+    private Integer businessDuration;
 }

+ 2 - 0
leromro-core/src/main/java/com/leromro/core/domain/vo/VolunteerInfoVO.java

@@ -4,6 +4,8 @@ import com.leromro.core.domain.VolunteerInfo;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
+import java.math.BigDecimal;
+
 /**
  * 小程序用户列表试图
  */

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

@@ -14,4 +14,6 @@ public interface MainOrdersMapper extends BaseMapper<MainOrders> {
      List<MainOrdersVO> selectByUserId(@Param("orderStatus") Integer orderStatus, @Param("userId") Long userId);
 
     List<webMainOrderListVO> webMainOrderList(MainOrdersVO mainOrdersVO);
+
+    void startService(String secondOrderId);
 }

+ 2 - 0
leromro-core/src/main/java/com/leromro/core/service/IMainOrderService.java

@@ -18,4 +18,6 @@ public interface IMainOrderService extends IService<MainOrders> {
 
 
     List<webMainOrderListVO> webMainOrderList(MainOrdersVO mainOrdersVO);
+
+    void startService(String secondOrderId);
 }

+ 2 - 1
leromro-core/src/main/java/com/leromro/core/service/IOrderRefundService.java

@@ -2,6 +2,7 @@ package com.leromro.core.service;
 
 import java.util.List;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.leromro.common.core.domain.AjaxResult;
 import com.leromro.core.domain.OrderRefund;
 import com.leromro.core.domain.vo.OrderRefundVO;
 
@@ -35,7 +36,7 @@ public interface IOrderRefundService extends IService<OrderRefund>
      * @param orderRefund 订单取消/退款
      * @return 结果
      */
-    public Boolean insertLOrderRefund(OrderRefund orderRefund);
+    public AjaxResult insertLOrderRefund(OrderRefund orderRefund);
 
     /**
      * 修改订单取消/退款

+ 32 - 5
leromro-core/src/main/java/com/leromro/core/service/impl/MainOrderServiceImpl.java

@@ -1,6 +1,7 @@
 package com.leromro.core.service.impl;
 
 import cn.hutool.core.lang.Snowflake;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.leromro.common.utils.SecurityUtils;
@@ -34,6 +35,8 @@ public class MainOrderServiceImpl extends ServiceImpl<MainOrdersMapper, MainOrde
     @Autowired
     private VolunteerReservationTimeServiceImpl volunteerReservationTimeService;
     @Autowired
+    private VolunteerInfoMapper volunteerInfoMapper;
+    @Autowired
     private Snowflake snowflake;
     @Autowired
     private PlatformFinanceMapper platformFinanceMapper;
@@ -60,6 +63,12 @@ public class MainOrderServiceImpl extends ServiceImpl<MainOrdersMapper, MainOrde
         MainOrders orders = orderRequest.getOrders();
         List<VolunteerWorkDate> workDateList = orderRequest.getWorkDateList();
         Long userId = SecurityUtils.getUserId();
+        //获取志愿者信息,同时服务时长和价格也都在志愿者id中进行获取
+        VolunteerInfo info = volunteerInfoMapper.selectOne(new LambdaQueryWrapper<VolunteerInfo>()
+                .eq(VolunteerInfo::getVolunteerInfoId, orders.getVolunteerInfoId()));
+        BigDecimal serviceOnePrice = info.getBusinessPrice();
+        Integer businessDurationMin = info.getBusinessDuration();
+
         // 查看余额够不够  修改用户余额表
         BigDecimal totalPrice = orders.getServiceTotalPrice();
         ClientAccount clientAccount = clientAccountMapper.selectBalanceByuserID(userId);
@@ -80,6 +89,8 @@ public class MainOrderServiceImpl extends ServiceImpl<MainOrdersMapper, MainOrde
         orders.setPaymentMethod(0);
         orders.setUserId(userId);
         orders.setCreateTime(DateTimeUtil.getNowTime());
+        orders.setServiceOnePrice(serviceOnePrice);
+        orders.setServiceDuration(businessDurationMin);
 //        mainOrdersMapper.insertMainOrders(orders);
         this.save(orders);
 
@@ -125,11 +136,19 @@ public class MainOrderServiceImpl extends ServiceImpl<MainOrdersMapper, MainOrde
             platformFinance1.setSecondOrderId(String.valueOf(secondOrderIdL));
             platformFinanceList.add(platformFinance1);
             //向志愿者预约时间表中添加数据
-            VolunteerReservationTime reservationTime1 = new VolunteerReservationTime();
-            BeanUtils.copyProperties(reservationTime,reservationTime1);
-            reservationTime1.setReservationDate(workDate.getWorkDate());
-            reservationTime1.setReservationTime(workDate.getWorkStartTime());
-            reservationTimes.add(reservationTime1);
+            int parts = businessDurationMin/30;
+            if (businessDurationMin % 30!=0){
+                parts++;
+            }
+            LocalTime workStartTime = workDate.getWorkStartTime();
+            for (int i = 0; i < parts; i++) {
+                VolunteerReservationTime reservationTime1 = new VolunteerReservationTime();
+                BeanUtils.copyProperties(reservationTime,reservationTime1);
+                reservationTime1.setReservationDate(workDate.getWorkDate());
+                reservationTime1.setReservationTime(workStartTime);
+                reservationTimes.add(reservationTime1);
+                workStartTime = workStartTime.plusMinutes(30);
+            }
             number++;
             workDate.setVolunteerId(orders.getVolunteerId());
             LocalTime workEndTime = workDate.getWorkStartTime().plus(Duration.ofHours(orders.getServiceDuration()));
@@ -156,5 +175,13 @@ public class MainOrderServiceImpl extends ServiceImpl<MainOrdersMapper, MainOrde
         return vos;
     }
 
+    /**
+     * @param secondOrderId
+     */
+    @Override
+    public void startService(String secondOrderId) {
+        mainOrdersMapper.startService(secondOrderId);
+    }
+
 
 }

+ 117 - 50
leromro-core/src/main/java/com/leromro/core/service/impl/OrderRefundServiceImpl.java

@@ -9,11 +9,14 @@ 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.common.core.domain.AjaxResult;
+import com.leromro.common.utils.SecurityUtils;
 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.hibernate.validator.internal.constraintvalidators.bv.time.futureorpresent.FutureOrPresentValidatorForReadableInstant;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.leromro.core.service.IOrderRefundService;
@@ -21,14 +24,13 @@ import org.springframework.transaction.annotation.Transactional;
 
 /**
  * 订单取消/退款Service业务层处理
- * 
+ *
  * @author ruoyi
  * @date 2025-04-21
  */
 
 @Service
-public class OrderRefundServiceImpl extends ServiceImpl<OrderRefundMapper, OrderRefund> implements IOrderRefundService
-{
+public class OrderRefundServiceImpl extends ServiceImpl<OrderRefundMapper, OrderRefund> implements IOrderRefundService {
     @Autowired
     private OrderRefundMapper lOrderRefundMapper;
     @Autowired
@@ -46,88 +48,143 @@ public class OrderRefundServiceImpl extends ServiceImpl<OrderRefundMapper, Order
 
     /**
      * 查询订单取消/退款
-     * 
+     *
      * @param orderRefundId 订单取消/退款主键
      * @return 订单取消/退款
      */
     @Override
-    public OrderRefund selectLOrderRefundByOrderRefundId(Long orderRefundId)
-    {
+    public OrderRefund selectLOrderRefundByOrderRefundId(Long orderRefundId) {
         return lOrderRefundMapper.selectLOrderRefundByOrderRefundId(orderRefundId);
     }
 
     /**
      * 查询订单取消/退款列表
-     * 
+     *
      * @param orderRefund 订单取消/退款
      * @return 订单取消/退款
      */
     @Override
-    public List<OrderRefund> selectLOrderRefundList(OrderRefund orderRefund)
-    {
+    public List<OrderRefund> selectLOrderRefundList(OrderRefund orderRefund) {
         return lOrderRefundMapper.selectLOrderRefundList(orderRefund);
     }
 
     /**
      * 新增订单取消/退款
-     * 
+     *
      * @param orderRefund 订单取消/退款
      * @return 结果
      */
     @Override
-    public Boolean insertLOrderRefund(OrderRefund orderRefund)
-    {
+    @Transactional
+    public AjaxResult insertLOrderRefund(OrderRefund orderRefund) {
         //如果订单,一次都没完成,那就直接不用审批,直接退。
         String mainOrderId = orderRefund.getMainOrderId();
+        //先查订单
+        QueryWrapper<MainOrders> mainOrdersQueryWrapper = new QueryWrapper<MainOrders>().eq("main_order_id", mainOrderId);
+        MainOrders mainOrders = mainOrdersMapper.selectOne(mainOrdersQueryWrapper);
+        BigDecimal totalPrice = mainOrders.getServiceTotalPrice();
+        orderRefund.setUserId(SecurityUtils.getUserId());
+        orderRefund.setVolunteerId(mainOrders.getVolunteerId());
+        //如果这个订单状态为0 可以直接退款
+        if (mainOrders.getOrderStatus() == 1) {
+            //查询小订单表
+            QueryWrapper<SecondOrder> secondOrderQueryWrapper = new QueryWrapper<SecondOrder>().eq("main_order_id", mainOrderId);
+            List<SecondOrder> secondOrderList = secondOrdersMapper.selectList(secondOrderQueryWrapper);
+            //修改志愿者工作时间表
+            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);
+            //修改状态已取消,用主订单Id
+            UpdateWrapper<MainOrders> mainOrderUpdateWrapper = new UpdateWrapper<MainOrders>().eq("main_order_id", mainOrderId).set("order_status", 6);
+            mainOrdersMapper.update(null, mainOrderUpdateWrapper);
+            //修改,用户账户表 把钱数加上
+            UpdateWrapper<ClientAccount> clientAccountUpdateWrapper = new UpdateWrapper<ClientAccount>().eq("user_id", mainOrders.getUserId()).setSql("balance = balance + " + totalPrice);
+            clientAccountMapper.update(null,clientAccountUpdateWrapper);
+            //平台资金流水表,扣减调总价。
+            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<SecondOrder> secondOrderUpdateWrapper = new UpdateWrapper<SecondOrder>().eq("main_order_id", mainOrderId).set("order_status", 3);
+            secondOrdersMapper.update(null,secondOrderUpdateWrapper);
+            //志愿者预约时间表 还有 修改志愿者工作日的预约状态。
+            //先把志愿者预约状态全部设置为0
+            UpdateWrapper<VolunteerWorkDate> volunteerWorkDateUpdateWrapper1 = new UpdateWrapper<VolunteerWorkDate>().eq("volunteer_id", mainOrders.getVolunteerId()).set("has_reservation", 0);
+            workDateMapper.update(null, volunteerWorkDateUpdateWrapper1);
+            //然后在查哪一天有预约,然后再把有的设置为1
+            QueryWrapper<VolunteerReservationTime> reservationTimeQueryWrapper = new QueryWrapper<VolunteerReservationTime>().eq("volunteer_id", mainOrders.getVolunteerId());
+            List<VolunteerReservationTime> reservationTimes = reservationTimeMapper.selectList(reservationTimeQueryWrapper);
+            if (!reservationTimes.isEmpty()){
+                List<LocalDate> reservationDate = reservationTimes.stream().map(VolunteerReservationTime::getReservationDate).collect(Collectors.toList());
+                UpdateWrapper<VolunteerWorkDate> volunteerWorkDateUpdateWrapper12 = new UpdateWrapper<VolunteerWorkDate>().eq("volunteer_id", mainOrders.getVolunteerId()).in("work_date", reservationDate).set("has_reservation", 1);
+                workDateMapper.update(null, volunteerWorkDateUpdateWrapper12);
+            }
+            //在退款记录标中生成数据,状态为 已退款
+            orderRefund.setStatus(2);
+            orderRefund.setRefundAmount(totalPrice);
+            this.save(orderRefund);
+            return AjaxResult.success("钱款将在三个工作日内返回到您的钱包中");
+        } else if (mainOrders.getOrderStatus() == 3 ) {
+            orderRefund.setStatus(0);
+            orderRefund.setRefundAmount(mainOrders.getServiceOnePrice().multiply(new BigDecimal(mainOrders.getTotalTimes() - mainOrders.getFinishTimes())));
+            this.save(orderRefund);
+            return AjaxResult.success("已提交申请");
+        } else if (mainOrders.getOrderStatus() == 4 || mainOrders.getOrderStatus() == 8) {
+            return AjaxResult.success("订单已全部完成,不可退款");
+        }else if (mainOrders.getOrderStatus() == 5) {
+            return AjaxResult.success("订单退款申请正在审核中");
+        }else if (mainOrders.getOrderStatus() == 6 || mainOrders.getOrderStatus() == 7) {
+            return AjaxResult.success("订单已退款或部分退款,不可重复退款");
+        }else if (mainOrders.getOrderStatus() == 0|| mainOrders.getOrderStatus() == 2) {
+            return AjaxResult.success("订单未支付或支付失败,不可取消");
+        }else{
+            return AjaxResult.success("请联系管理员或检查订单状态");
+        }
 
-        //修改,用户账户表
-        //修改,用主订单表
-        //修改,小订单表
-        //平台资金流水表
-        //志愿者预约时间表
-        //志愿者排版日期表
-
-        orderRefund.setStatus(0);
-        return this.save(orderRefund);
     }
 
     /**
      * 修改订单取消/退款
-     * 
+     *
      * @param orderRefund 订单取消/退款
      * @return 结果
      */
     @Override
-    public Boolean updateLOrderRefund(OrderRefund orderRefund)
-    {
+    public Boolean updateLOrderRefund(OrderRefund orderRefund) {
         return this.updateById(orderRefund);
     }
 
     /**
      * 批量删除订单取消/退款
-     * 
+     *
      * @param orderRefundIds 需要删除的订单取消/退款主键
      * @return 结果
      */
     @Override
-    public int deleteLOrderRefundByOrderRefundIds(Long[] orderRefundIds)
-    {
+    public int deleteLOrderRefundByOrderRefundIds(Long[] orderRefundIds) {
         return lOrderRefundMapper.deleteLOrderRefundByOrderRefundIds(orderRefundIds);
     }
 
     /**
      * 删除订单取消/退款信息
-     * 
+     *
      * @param orderRefundId 订单取消/退款主键
      * @return 结果
      */
     @Override
-    public int deleteLOrderRefundByOrderRefundId(Long orderRefundId)
-    {
+    public int deleteLOrderRefundByOrderRefundId(Long orderRefundId) {
         return lOrderRefundMapper.deleteLOrderRefundByOrderRefundId(orderRefundId);
     }
 
     /**
+     * 用户点击退款回显
+     *
      * @param mainOrderId
      * @return
      */
@@ -135,10 +192,10 @@ public class OrderRefundServiceImpl extends ServiceImpl<OrderRefundMapper, Order
     public OrderRefundVO selectOrderRefundByMainOrderId(Long mainOrderId) {
         //根据mainID 取出
         OrderRefundVO refundVO = lOrderRefundMapper.selectOrderRefundInfoByMainOrderId(mainOrderId);
-        refundVO.setRefundAmount(refundVO.getServiceOnePrice().multiply(new BigDecimal(refundVO.getTotalTimes()-refundVO.getFinishTimes())));
+        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);
+        QueryWrapper<SecondOrder> secondOrderQueryWrapper = new QueryWrapper<SecondOrder>().eq("main_order_id", mainOrderId).eq("order_status", 0);
+        List<SecondOrder> secondOrderList = secondOrdersMapper.selectList(secondOrderQueryWrapper);
         refundVO.setSecondOrder(secondOrderList);
         return refundVO;
     }
@@ -150,15 +207,20 @@ public class OrderRefundServiceImpl extends ServiceImpl<OrderRefundMapper, Order
     @Transactional
     public void checkOrderRefund(OrderRefund orderRefund) {
         //只能单独审核
+        if (orderRefund.getStatus() == 2){
         //更改状态 更改更新时间,更改审批状态、退款钱数、原因、图片。
-        orderRefund.setUpdateTime(DateTimeUtil.getNowTime());
+            orderRefund.setUpdateTime(DateTimeUtil.getNowTime());
         lOrderRefundMapper.updateLOrderRefund(orderRefund);
+        String mainOrderId = orderRefund.getMainOrderId();
+        //先查订单
+        QueryWrapper<MainOrders> mainOrdersQueryWrapper = new QueryWrapper<MainOrders>().eq("main_order_id", mainOrderId);
+        MainOrders mainOrders = mainOrdersMapper.selectOne(mainOrdersQueryWrapper);
         //小订单修改状态,并且
-        QueryWrapper<SecondOrder> secondOrderQueryWrapper = new QueryWrapper<SecondOrder>().eq("main_order_id", orderRefund.getMainOrderId()).eq("order_status",0);
+        QueryWrapper<SecondOrder> secondOrderQueryWrapper = new QueryWrapper<SecondOrder>().eq("main_order_id", mainOrderId).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);
+        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();
@@ -166,14 +228,16 @@ public class OrderRefundServiceImpl extends ServiceImpl<OrderRefundMapper, Order
         }).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());
+        UpdateWrapper<VolunteerWorkDate> volunteerWorkDateUpdateWrapper = new UpdateWrapper<VolunteerWorkDate>().eq("volunteer_id", mainOrders.getVolunteerId()).set("has_reservation", 0);
+        workDateMapper.update(null, volunteerWorkDateUpdateWrapper);
+        QueryWrapper<VolunteerReservationTime> reservationTimeQueryWrapper = new QueryWrapper<VolunteerReservationTime>().eq("volunteer_id", mainOrders.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);
-        //恢复余额,以及向平台流水表更改,减少其中的流水;
+        if (!reservationTimes.isEmpty()){
+            List<LocalDate> reservationDate = reservationTimes.stream().map(VolunteerReservationTime::getReservationDate).collect(Collectors.toList());
+            UpdateWrapper<VolunteerWorkDate> volunteerWorkDateUpdateWrapper1 = new UpdateWrapper<VolunteerWorkDate>().eq("volunteer_id", mainOrders.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()
@@ -182,13 +246,16 @@ public class OrderRefundServiceImpl extends ServiceImpl<OrderRefundMapper, Order
         }).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<ClientAccount> clientAccountUpdateWrapper = new UpdateWrapper<ClientAccount>().eq("user_id", mainOrders.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);
-
-
+        UpdateWrapper<MainOrders> mainOrdersMapperUpdateWrapper = new UpdateWrapper<MainOrders>().eq("main_order_id", mainOrderId).set("order_status", 7);
+        mainOrdersMapper.update(null, mainOrdersMapperUpdateWrapper);
+        }else if (orderRefund.getStatus() == 3){
+            orderRefund.setRefundAmount(BigDecimal.valueOf(0));
+            orderRefund.setUpdateTime(DateTimeUtil.getNowTime());
+            lOrderRefundMapper.updateLOrderRefund(orderRefund);
+        }
 
     }
 }

+ 3 - 2
leromro-core/src/main/java/com/leromro/core/service/impl/VolunteerInfoServiceImpl.java

@@ -168,14 +168,15 @@ public class VolunteerInfoServiceImpl extends ServiceImpl<VolunteerInfoMapper, V
         }
         VolunteerInfoDetailVO vo = BeanUtil.copyProperties(info, VolunteerInfoDetailVO.class);
         //实时查询当前业务的服务费和服务时长
-        BusinessPrice price = businessPriceService.getOne(new LambdaQueryWrapper<BusinessPrice>()
+        //这里可以去掉了,价格和服务时长都在志愿者信息中直接返回了
+       /* BusinessPrice price = businessPriceService.getOne(new LambdaQueryWrapper<BusinessPrice>()
                 .eq(BusinessPrice::getBusinessManagementId, info.getBusinessManagementId()));
         if (ObjectUtil.isNull(price) || ObjectUtil.isNull(price.getBusinessPrice())){
             throw new ServiceException("服务价格获取异常,请稍后再试");
         }
 
         vo.setBusinessPrice(price.getBusinessPrice());
-        vo.setBusinessDuration(price.getBusinessDuration());
+        vo.setBusinessDuration(price.getBusinessDuration());*/
         return vo;
     }
 }

+ 3 - 0
leromro-core/src/main/resources/mapper/core/MainOrdersMapper.xml

@@ -119,6 +119,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="isDelete != null">#{isDelete},</if>
          </trim>
     </insert>
+    <update id="startService" parameterType="java.lang.String">
+        update l_main_orders set order_status = 3 where main_order_id = (select main_order_id from l_second_order where second_order_id = #{secondOrderId});
+    </update>
     <select id="selectByUserId" resultType="com.leromro.core.domain.vo.MainOrdersVO">
         select
         lmo.*,lvi.name ,lvi.skill_describe,lvi.business_tier_name from  l_main_orders lmo left join l_volunteer_info lvi on lmo.volunteer_id = lvi.volunteer_id

+ 1 - 12
leromro-core/src/main/resources/mapper/core/OrderRefundMapper.xml

@@ -69,18 +69,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </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,
+        select lmo.*,
                lvi.volunteer_picture as volunteerPicture,
                lvi.name as volunteerName
         from l_main_orders lmo

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

@@ -181,7 +181,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
       </delete>-->
 
     <select id="selectVolunteerOrder" resultType="com.leromro.core.domain.vo.VolunteerOrdersVO">
-        select lso.second_order_id ,lso.score ,lso.remark ,lso.second_order_id ,lso.order_status as orderStatus,lso.service_one_price as serviceOnePrice,la.user_id,
+        select lso.second_order_id ,lso.work_date,lso.work_start_time,lso.work_end_time,lso.service_duration,lso.score ,lso.remark ,lso.second_order_id ,lso.order_status as orderStatus,lso.service_one_price as serviceOnePrice,la.user_id,
         la.address as address ,la.name as name,(select avatar from sys_user su where su.user_id = la.user_id ) as avatar
         from l_second_order lso left join l_address la on lso.address_id = la.address_id
         <where>