|
@@ -18,6 +18,7 @@ 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.BeanUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import com.leromro.core.service.IOrderRefundService;
|
|
@@ -46,6 +47,8 @@ public class OrderRefundServiceImpl extends ServiceImpl<OrderRefundMapper, Order
|
|
|
private VolunteerWorkDateMapper workDateMapper;
|
|
|
@Autowired
|
|
|
private MainOrdersMapper mainOrdersMapper;
|
|
|
+ @Autowired
|
|
|
+ private ClientAccountChangeMapper clientAccountChangeMapper;
|
|
|
|
|
|
/**
|
|
|
* 查询订单取消/退款
|
|
@@ -91,6 +94,25 @@ public class OrderRefundServiceImpl extends ServiceImpl<OrderRefundMapper, Order
|
|
|
//查询小订单表
|
|
|
QueryWrapper<SecondOrder> secondOrderQueryWrapper = new QueryWrapper<SecondOrder>().eq("main_order_id", mainOrderId);
|
|
|
List<SecondOrder> secondOrderList = secondOrdersMapper.selectList(secondOrderQueryWrapper);
|
|
|
+ //通过支付方式来判断是余额还是微信 1 是余额 2是微信
|
|
|
+ if (mainOrders.getPaymentMethod().equals("1")){
|
|
|
+ //修改,用户账户表 把钱数加上
|
|
|
+ UpdateWrapper<ClientAccount> clientAccountUpdateWrapper = new UpdateWrapper<ClientAccount>().eq("user_id", mainOrders.getUserId()).setSql("balance = balance + " + totalPrice);
|
|
|
+ clientAccountMapper.update(null, clientAccountUpdateWrapper);
|
|
|
+ //查询用户账余额账户
|
|
|
+ BigDecimal Oldbalance = clientAccountMapper.selectBalanceByuserID(mainOrders.getUserId()).getBalance();
|
|
|
+ BigDecimal newBalance = Oldbalance.add(totalPrice);
|
|
|
+ //由于钱是退到钱包的,所以,向钱包变更记录中添加一条数据
|
|
|
+ ClientAccountChange clientAccountChange = ClientAccountChange.builder().userId(mainOrders.getUserId()).changeType("1").sourceType("2").changeMoney(totalPrice).beforeBalance(totalPrice).afterBalance(newBalance).mainOrderId(mainOrderId).build();
|
|
|
+ clientAccountChange.setCreateTime(DateTimeUtil.getNowTime1());
|
|
|
+ clientAccountChangeMapper.insert(clientAccountChange);
|
|
|
+
|
|
|
+ }else if (mainOrders.getPaymentMethod().equals("2")){
|
|
|
+ // 微信 支付
|
|
|
+
|
|
|
+ }else {
|
|
|
+ throw new RuntimeException("该支付方式还未开通退款功能");
|
|
|
+ }
|
|
|
//修改志愿者工作时间表
|
|
|
List<VolunteerReservationTime> volunteerReservationTimeList = secondOrderList.stream().map(secondOrder -> {
|
|
|
new VolunteerReservationTime();
|
|
@@ -98,11 +120,9 @@ public class OrderRefundServiceImpl extends ServiceImpl<OrderRefundMapper, Order
|
|
|
}).collect(Collectors.toList());
|
|
|
reservationTimeMapper.deleteVolunteerReservationTimeList(volunteerReservationTimeList);
|
|
|
//修改状态已取消,用主订单Id
|
|
|
- UpdateWrapper<MainOrders> mainOrderUpdateWrapper = new UpdateWrapper<MainOrders>().eq("main_order_id", mainOrderId).set("order_status", 6);
|
|
|
+ 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();
|
|
@@ -112,8 +132,8 @@ public class OrderRefundServiceImpl extends ServiceImpl<OrderRefundMapper, Order
|
|
|
}).collect(Collectors.toList());
|
|
|
platformFinanceMapper.insertPlatformFinanceList(platformFinanceList);
|
|
|
//修改,小订单表
|
|
|
- UpdateWrapper<SecondOrder> secondOrderUpdateWrapper = new UpdateWrapper<SecondOrder>().eq("main_order_id", mainOrderId).set("order_status", 2);
|
|
|
- secondOrdersMapper.update(null,secondOrderUpdateWrapper);
|
|
|
+ UpdateWrapper<SecondOrder> secondOrderUpdateWrapper = new UpdateWrapper<SecondOrder>().eq("main_order_id", mainOrderId).set("order_status", "6");
|
|
|
+ secondOrdersMapper.update(null, secondOrderUpdateWrapper);
|
|
|
//志愿者预约时间表 还有 修改志愿者工作日的预约状态。
|
|
|
//先把志愿者预约状态全部设置为0
|
|
|
UpdateWrapper<VolunteerWorkDate> volunteerWorkDateUpdateWrapper1 = new UpdateWrapper<VolunteerWorkDate>().eq("volunteer_id", mainOrders.getVolunteerId()).set("has_reservation", 0);
|
|
@@ -121,7 +141,7 @@ public class OrderRefundServiceImpl extends ServiceImpl<OrderRefundMapper, Order
|
|
|
//然后在查哪一天有预约,然后再把有的设置为1
|
|
|
QueryWrapper<VolunteerReservationTime> reservationTimeQueryWrapper = new QueryWrapper<VolunteerReservationTime>().eq("volunteer_id", mainOrders.getVolunteerId());
|
|
|
List<VolunteerReservationTime> reservationTimes = reservationTimeMapper.selectList(reservationTimeQueryWrapper);
|
|
|
- if (!reservationTimes.isEmpty()){
|
|
|
+ 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);
|
|
@@ -136,18 +156,18 @@ public class OrderRefundServiceImpl extends ServiceImpl<OrderRefundMapper, Order
|
|
|
orderRefund.setStatus("0");
|
|
|
orderRefund.setRefundAmount(mainOrders.getServiceOnePrice().multiply(new BigDecimal(mainOrders.getTotalTimes() - mainOrders.getFinishTimes())));
|
|
|
this.save(orderRefund);
|
|
|
- UpdateWrapper<MainOrders> mainOrderUpdateWrapper = new UpdateWrapper<MainOrders>().eq("main_order_id", mainOrderId).set("order_status", 5);
|
|
|
+ UpdateWrapper<MainOrders> mainOrderUpdateWrapper = new UpdateWrapper<MainOrders>().eq("main_order_id", mainOrderId).set("order_status", "5");
|
|
|
mainOrdersMapper.update(null, mainOrderUpdateWrapper);
|
|
|
return AjaxResult.success("已提交申请");
|
|
|
} else if (mainOrders.getOrderStatus().equals("4") || mainOrders.getOrderStatus().equals("8")) {
|
|
|
return AjaxResult.success("订单已全部完成,不可退款");
|
|
|
- }else if (mainOrders.getOrderStatus().equals("5")) {
|
|
|
+ } else if (mainOrders.getOrderStatus().equals("5")) {
|
|
|
return AjaxResult.success("订单退款申请正在审核中");
|
|
|
- }else if (mainOrders.getOrderStatus().equals("6") || mainOrders.getOrderStatus().equals("7")) {
|
|
|
+ } else if (mainOrders.getOrderStatus().equals("6") || mainOrders.getOrderStatus().equals("7")) {
|
|
|
return AjaxResult.success("订单已退款或部分退款,不可重复退款");
|
|
|
- }else if (mainOrders.getOrderStatus().equals("0") || mainOrders.getOrderStatus().equals("2")) {
|
|
|
+ } else if (mainOrders.getOrderStatus().equals("0") || mainOrders.getOrderStatus().equals("2")) {
|
|
|
return AjaxResult.success("订单未支付或支付失败,不可取消");
|
|
|
- }else{
|
|
|
+ } else {
|
|
|
return AjaxResult.success("请联系管理员或检查订单状态");
|
|
|
}
|
|
|
|
|
@@ -198,7 +218,7 @@ public class OrderRefundServiceImpl extends ServiceImpl<OrderRefundMapper, Order
|
|
|
OrderRefundVO refundVO = lOrderRefundMapper.selectOrderRefundInfoByMainOrderId(mainOrderId);
|
|
|
refundVO.setRefundAmount(refundVO.getServiceOnePrice().multiply(new BigDecimal(refundVO.getTotalTimes() - refundVO.getFinishTimes())));
|
|
|
|
|
|
- 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);
|
|
|
refundVO.setSecondOrder(secondOrderList);
|
|
|
return refundVO;
|
|
@@ -215,58 +235,76 @@ public class OrderRefundServiceImpl extends ServiceImpl<OrderRefundMapper, Order
|
|
|
//先查订单
|
|
|
OrderRefund orderRefund = lOrderRefundMapper.selectById(orderRefund1.getOrderRefundId());
|
|
|
//orderRefund.setStatus(orderRefund1.getStatus());
|
|
|
-
|
|
|
+ BeanUtils.copyProperties(orderRefund1, orderRefund);
|
|
|
Long mainOrderId = orderRefund.getMainOrderId();
|
|
|
QueryWrapper<MainOrders> mainOrdersQueryWrapper = new QueryWrapper<MainOrders>().eq("main_order_id", mainOrderId);
|
|
|
MainOrders mainOrders = mainOrdersMapper.selectOne(mainOrdersQueryWrapper);
|
|
|
- if (orderRefund.getStatus().equals("2")){
|
|
|
- //更改状态 更改更新时间,更改审批状态、退款钱数、原因、图片。
|
|
|
+ if (orderRefund.getStatus().equals("2")) {
|
|
|
+ if (mainOrders.getPaymentMethod().equals("1")) {
|
|
|
+ //查询用户账余额账户
|
|
|
+ BigDecimal Oldbalance = clientAccountMapper.selectBalanceByuserID(mainOrders.getUserId()).getBalance();
|
|
|
+ BigDecimal newBalance = Oldbalance.add(orderRefund.getRefundAmount());
|
|
|
+ //向用户余额表中添加一条数据
|
|
|
+ ClientAccountChange clientAccountChange = ClientAccountChange.builder().userId(mainOrders.getUserId()).changeType("1").sourceType("2").changeMoney(orderRefund.getRefundAmount()).beforeBalance(Oldbalance).afterBalance(newBalance).mainOrderId(mainOrderId).build();
|
|
|
+ clientAccountChange.setCreateTime(DateTimeUtil.getNowTime1());
|
|
|
+ clientAccountChangeMapper.insert(clientAccountChange);
|
|
|
+ //恢复用户余额,用户账户表增加钱数
|
|
|
+ UpdateWrapper<ClientAccount> clientAccountUpdateWrapper = new UpdateWrapper<ClientAccount>().eq("user_id", mainOrders.getUserId()).setSql("balance = balance + " + orderRefund.getRefundAmount());
|
|
|
+ clientAccountMapper.update(null, clientAccountUpdateWrapper);
|
|
|
+ } else if (mainOrders.getPaymentMethod().equals("2")) {
|
|
|
+ //微信退款
|
|
|
+ }else {
|
|
|
+ throw new RuntimeException("该支付方式还未开通退款功能");
|
|
|
+ }
|
|
|
+ //更改状态 更改更新时间,更改审批状态、退款钱数、原因、图片。
|
|
|
orderRefund.setUpdateTime(DateTimeUtil.getNowTime());
|
|
|
- lOrderRefundMapper.updateLOrderRefund(orderRefund);
|
|
|
- //小订单修改状态,并且
|
|
|
- QueryWrapper<SecondOrder> secondOrderQueryWrapper = new QueryWrapper<SecondOrder>().eq("main_order_id", mainOrderId).eq("order_status", 1);
|
|
|
- List<SecondOrder> secondOrderList = secondOrdersMapper.selectList(secondOrderQueryWrapper);
|
|
|
- List<Long> secondOrderIdList = secondOrderList.stream().map(SecondOrder::getSecondOrderId).collect(Collectors.toList());
|
|
|
- UpdateWrapper<SecondOrder> secondOrderUpdateWrapper = new UpdateWrapper<SecondOrder>().in("second_order_id", secondOrderIdList).eq("order_status", 1).set("order_status", 6);
|
|
|
- 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", 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);
|
|
|
- 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()
|
|
|
- .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", mainOrders.getUserId()).setSql("balance = balance + " + orderRefund.getRefundAmount());
|
|
|
- clientAccountMapper.update(null, clientAccountUpdateWrapper);
|
|
|
- //主订单修改状态
|
|
|
- UpdateWrapper<MainOrders> mainOrdersMapperUpdateWrapper = new UpdateWrapper<MainOrders>().eq("main_order_id", mainOrderId).set("order_status", 7);
|
|
|
- mainOrdersMapper.update(null, mainOrdersMapperUpdateWrapper);
|
|
|
- }else if (orderRefund.getStatus().equals("3")){
|
|
|
+ lOrderRefundMapper.updateLOrderRefund(orderRefund);
|
|
|
+ //小订单修改状态,并且
|
|
|
+ QueryWrapper<SecondOrder> secondOrderQueryWrapper = new QueryWrapper<SecondOrder>().eq("main_order_id", mainOrderId).eq("order_status", "1");
|
|
|
+ List<SecondOrder> secondOrderList = secondOrdersMapper.selectList(secondOrderQueryWrapper);
|
|
|
+ List<Long> secondOrderIdList = secondOrderList.stream().map(SecondOrder::getSecondOrderId).collect(Collectors.toList());
|
|
|
+ UpdateWrapper<SecondOrder> secondOrderUpdateWrapper = new UpdateWrapper<SecondOrder>().in("second_order_id", secondOrderIdList).set("order_status", "6");
|
|
|
+ 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", 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);
|
|
|
+ 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()
|
|
|
+ .changeMoney(secondOrder.getServiceOnePrice()).changeType(0).moneyType(1).sourceType(2).secondOrderId(secondOrder.getSecondOrderId()).volunteerId(secondOrder.getVolunteerId())
|
|
|
+ .build();
|
|
|
+ }).collect(Collectors.toList());
|
|
|
+ platformFinanceMapper.insertPlatformFinanceList(platformFinanceList);
|
|
|
+
|
|
|
+ //主订单修改状态
|
|
|
+ UpdateWrapper<MainOrders> mainOrdersMapperUpdateWrapper = new UpdateWrapper<MainOrders>().eq("main_order_id", mainOrderId).set("order_status", 7);
|
|
|
+ mainOrdersMapper.update(null, mainOrdersMapperUpdateWrapper);
|
|
|
+
|
|
|
+
|
|
|
+ } else if (orderRefund.getStatus().equals("3")) {
|
|
|
+ //不通过
|
|
|
+ orderRefund.setRefundApplyAmount(orderRefund.getRefundAmount());
|
|
|
orderRefund.setRefundAmount(BigDecimal.valueOf(0));
|
|
|
orderRefund.setUpdateTime(DateTimeUtil.getNowTime());
|
|
|
//主订单修改状态 返回之前的状态
|
|
|
- if(mainOrders.getTotalTimes()==mainOrders.getFinishTimes()){
|
|
|
+ if (mainOrders.getTotalTimes() == mainOrders.getFinishTimes()) {
|
|
|
UpdateWrapper<MainOrders> mainOrdersMapperUpdateWrapper = new UpdateWrapper<MainOrders>().eq("main_order_id", mainOrderId).set("order_status", 4);
|
|
|
mainOrdersMapper.update(null, mainOrdersMapperUpdateWrapper);
|
|
|
- }else {
|
|
|
+ } else {
|
|
|
UpdateWrapper<MainOrders> mainOrdersMapperUpdateWrapper = new UpdateWrapper<MainOrders>().eq("main_order_id", mainOrderId).set("order_status", 3);
|
|
|
mainOrdersMapper.update(null, mainOrdersMapperUpdateWrapper);
|
|
|
}
|
|
@@ -281,6 +319,6 @@ public class OrderRefundServiceImpl extends ServiceImpl<OrderRefundMapper, Order
|
|
|
*/
|
|
|
@Override
|
|
|
public List<WebOrderRefundVO> selectWebOrderRefundList(MainOrders mainOrders) {
|
|
|
- return lOrderRefundMapper.selectWebOrderRefundList(mainOrders);
|
|
|
+ return lOrderRefundMapper.selectWebOrderRefundList(mainOrders);
|
|
|
}
|
|
|
}
|