|
@@ -7,6 +7,7 @@ import java.util.ArrayList;
|
|
import java.util.List;
|
|
import java.util.List;
|
|
import java.util.stream.Collectors;
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
+import cn.hutool.core.util.ObjectUtil;
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.update.Update;
|
|
import com.baomidou.mybatisplus.core.conditions.update.Update;
|
|
@@ -23,10 +24,15 @@ import com.leromro.common.core.domain.entity.SysUser;
|
|
import com.leromro.common.exception.ServiceException;
|
|
import com.leromro.common.exception.ServiceException;
|
|
import com.leromro.common.utils.SecurityUtils;
|
|
import com.leromro.common.utils.SecurityUtils;
|
|
import com.leromro.core.domain.*;
|
|
import com.leromro.core.domain.*;
|
|
|
|
+import com.leromro.core.domain.dto.ConversationMsgDTO;
|
|
import com.leromro.core.domain.vo.OrderRefundVO;
|
|
import com.leromro.core.domain.vo.OrderRefundVO;
|
|
import com.leromro.core.domain.vo.WebOrderRefundVO;
|
|
import com.leromro.core.domain.vo.WebOrderRefundVO;
|
|
import com.leromro.core.mapper.*;
|
|
import com.leromro.core.mapper.*;
|
|
|
|
+import com.leromro.core.service.IConversationRecordService;
|
|
|
|
+import com.leromro.core.service.IVolunteerInfoService;
|
|
import com.leromro.core.utils.DateTimeUtil;
|
|
import com.leromro.core.utils.DateTimeUtil;
|
|
|
|
+import com.leromro.core.utils.SendSmsUtil;
|
|
|
|
+import com.leromro.framework.config.ConstantsConfig;
|
|
import com.leromro.system.mapper.SysUserMapper;
|
|
import com.leromro.system.mapper.SysUserMapper;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import org.apache.commons.math3.stat.inference.OneWayAnova;
|
|
import org.apache.commons.math3.stat.inference.OneWayAnova;
|
|
@@ -70,6 +76,10 @@ public class OrderRefundServiceImpl extends ServiceImpl<OrderRefundMapper, Order
|
|
private WxPayService wxMiniPayRefundService;
|
|
private WxPayService wxMiniPayRefundService;
|
|
@Autowired
|
|
@Autowired
|
|
private SysUserMapper sysUserMapper;
|
|
private SysUserMapper sysUserMapper;
|
|
|
|
+ @Autowired
|
|
|
|
+ private IVolunteerInfoService volunteerInfoService;
|
|
|
|
+ @Autowired
|
|
|
|
+ private IConversationRecordService conversationRecordService;
|
|
|
|
|
|
/**
|
|
/**
|
|
* 查询订单取消/退款
|
|
* 查询订单取消/退款
|
|
@@ -174,11 +184,15 @@ public class OrderRefundServiceImpl extends ServiceImpl<OrderRefundMapper, Order
|
|
orderRefund.setStatus("1".equals(paymentMethod)?"2":"1");
|
|
orderRefund.setStatus("1".equals(paymentMethod)?"2":"1");
|
|
orderRefund.setRefundAmount(totalPrice);
|
|
orderRefund.setRefundAmount(totalPrice);
|
|
this.save(orderRefund);
|
|
this.save(orderRefund);
|
|
|
|
+ //如果余额支付,则退款完成,直接发送平台消息和短信通知
|
|
|
|
+ if (mainOrders.getPaymentMethod().equals("1")) {
|
|
|
|
+ sendMsgAndSms(mainOrders);
|
|
|
|
+ }
|
|
return AjaxResult.success("钱款将在三个工作日内返回到您的钱包中");
|
|
return AjaxResult.success("钱款将在三个工作日内返回到您的钱包中");
|
|
} else if (mainOrders.getOrderStatus().equals("3")) {
|
|
} else if (mainOrders.getOrderStatus().equals("3")) {
|
|
List<SecondOrder> secondOrderList = secondOrdersMapper.selectList(new LambdaQueryWrapper<SecondOrder>().eq(SecondOrder::getMainOrderId, mainOrderId).eq(SecondOrder::getOrderStatus, "1"));
|
|
List<SecondOrder> secondOrderList = secondOrdersMapper.selectList(new LambdaQueryWrapper<SecondOrder>().eq(SecondOrder::getMainOrderId, mainOrderId).eq(SecondOrder::getOrderStatus, "1"));
|
|
//小订单已开始或者部分小订单已完成
|
|
//小订单已开始或者部分小订单已完成
|
|
- if (mainOrders.getTotalTimes() - secondOrderList.size() <= 0){
|
|
|
|
|
|
+ if (secondOrderList.size() <= 0){
|
|
throw new RuntimeException("订单已全部开始,不可退款");
|
|
throw new RuntimeException("订单已全部开始,不可退款");
|
|
}
|
|
}
|
|
orderRefund.setStatus("0");
|
|
orderRefund.setStatus("0");
|
|
@@ -245,11 +259,13 @@ public class OrderRefundServiceImpl extends ServiceImpl<OrderRefundMapper, Order
|
|
//根据mainID 取出
|
|
//根据mainID 取出
|
|
MainOrders mainOrder = mainOrdersMapper.selectOne(new LambdaQueryWrapper<MainOrders>().eq(MainOrders::getMainOrderId, mainOrderId));
|
|
MainOrders mainOrder = mainOrdersMapper.selectOne(new LambdaQueryWrapper<MainOrders>().eq(MainOrders::getMainOrderId, mainOrderId));
|
|
OrderRefundVO refundVO = lOrderRefundMapper.selectOrderRefundInfoByMainOrderId(mainOrderId);
|
|
OrderRefundVO refundVO = lOrderRefundMapper.selectOrderRefundInfoByMainOrderId(mainOrderId);
|
|
-
|
|
|
|
QueryWrapper<SecondOrder> secondOrderQueryWrapper = new QueryWrapper<SecondOrder>().eq("main_order_id", mainOrderId).eq("order_status", "1");
|
|
QueryWrapper<SecondOrder> secondOrderQueryWrapper = new QueryWrapper<SecondOrder>().eq("main_order_id", mainOrderId).eq("order_status", "1");
|
|
List<SecondOrder> secondOrderList = secondOrdersMapper.selectList(secondOrderQueryWrapper);
|
|
List<SecondOrder> secondOrderList = secondOrdersMapper.selectList(secondOrderQueryWrapper);
|
|
-
|
|
|
|
- refundVO.setRefundAmount(refundVO.getServiceOnePrice().multiply(BigDecimal.valueOf(mainOrder.getSingleQuantity())).multiply(new BigDecimal(refundVO.getTotalTimes() - secondOrderList.size())));
|
|
|
|
|
|
+ if (secondOrderList.size() <= 0){
|
|
|
|
+ throw new RuntimeException("订单全部开始,不可退款");
|
|
|
|
+ }
|
|
|
|
+ BigDecimal bigDecimal = refundVO.getServiceOnePrice().multiply(BigDecimal.valueOf(mainOrder.getSingleQuantity())).multiply(new BigDecimal(secondOrderList.size()));
|
|
|
|
+ refundVO.setRefundAmount(bigDecimal);
|
|
refundVO.setSecondOrder(secondOrderList);
|
|
refundVO.setSecondOrder(secondOrderList);
|
|
return refundVO;
|
|
return refundVO;
|
|
}
|
|
}
|
|
@@ -331,7 +347,10 @@ public class OrderRefundServiceImpl extends ServiceImpl<OrderRefundMapper, Order
|
|
mainOrders.setOrderStatus("7");
|
|
mainOrders.setOrderStatus("7");
|
|
//调用方法来修改主、小订单的状态
|
|
//调用方法来修改主、小订单的状态
|
|
updateMainOrderAndSeconderStatus(mainOrders,"6");
|
|
updateMainOrderAndSeconderStatus(mainOrders,"6");
|
|
-
|
|
|
|
|
|
+ //如果余额支付,则退款完成,直接发送平台消息和短信通知
|
|
|
|
+ if (mainOrders.getPaymentMethod().equals("1")) {
|
|
|
|
+ sendMsgAndSms(mainOrders);
|
|
|
|
+ }
|
|
|
|
|
|
} else if (orderRefund.getStatus().equals("3")) {
|
|
} else if (orderRefund.getStatus().equals("3")) {
|
|
//不通过
|
|
//不通过
|
|
@@ -360,6 +379,20 @@ public class OrderRefundServiceImpl extends ServiceImpl<OrderRefundMapper, Order
|
|
return lOrderRefundMapper.selectWebOrderRefundList(new ListPermission(OrderRefund.class, CommonConstants.CHECK_PROVINCE_CITY_DISTRICT) ,mainOrders);
|
|
return lOrderRefundMapper.selectWebOrderRefundList(new ListPermission(OrderRefund.class, CommonConstants.CHECK_PROVINCE_CITY_DISTRICT) ,mainOrders);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
+ * 退款成功,推送消息和短信
|
|
|
|
+ */
|
|
|
|
+ public void sendMsgAndSms(MainOrders mainOrders) {
|
|
|
|
+ conversationRecordService.sendSystemMsg(ConversationMsgDTO.builder()
|
|
|
|
+ .system(2).volunteerId(mainOrders.getVolunteerId())
|
|
|
|
+ .msgContent("您有订单被顾客取消,请及时查看")
|
|
|
|
+ .build());
|
|
|
|
+ VolunteerInfo info = volunteerInfoService.getById(mainOrders.getVolunteerInfoId());
|
|
|
|
+ if (ObjectUtil.isNotNull(info)) {
|
|
|
|
+ SendSmsUtil.send(info.getPhonenumber(), "", ConstantsConfig.SMS_TEMPLATE_TYPE_VOLUNTEER_ORDER_CANCELLED.getValue());
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
//修改志愿者的工作时间
|
|
//修改志愿者的工作时间
|
|
public void updateVolunteerWorkDateAndTime(List<SecondOrder> secondOrderList, MainOrders mainOrders) {
|
|
public void updateVolunteerWorkDateAndTime(List<SecondOrder> secondOrderList, MainOrders mainOrders) {
|
|
//修改志愿者工作时间表
|
|
//修改志愿者工作时间表
|