单师傅全额退款逻辑

This commit is contained in:
clunt 2022-10-22 09:08:26 +08:00
parent 73e9017b7b
commit 1a29d4d327
1 changed files with 76 additions and 4 deletions

View File

@ -26,9 +26,11 @@ import com.ghy.order.request.OrderProcessRequest;
import com.ghy.order.service.*;
import com.ghy.payment.domain.FinancialChangeRecord;
import com.ghy.payment.domain.FinancialDetail;
import com.ghy.payment.domain.FinancialMaster;
import com.ghy.payment.domain.OrderTimeoutRecord;
import com.ghy.payment.service.FinancialChangeRecordService;
import com.ghy.payment.service.FinancialDetailService;
import com.ghy.payment.service.FinancialMasterService;
import com.ghy.payment.service.OrderFineRecordService;
import com.ghy.system.domain.SysArea;
import com.ghy.system.service.ISysAreaService;
@ -99,6 +101,8 @@ public class OrderDetailController extends BaseController {
private IWorkerCertificationService workerCertificationService;
@Autowired
private IOrderAssessLabelService orderAssessLabelService;
@Autowired
private FinancialMasterService financialMasterService;
@RequiresPermissions("order:detail:view")
@GetMapping()
@ -123,6 +127,7 @@ public class OrderDetailController extends BaseController {
OrderDetail detail = orderDetailService.selectById(request.getId());
// 主单信息
OrderMaster orderMaster = orderMasterService.selectById(detail.getOrderMasterId());
FinancialMaster financialMaster = financialMasterService.selectByOrderMasterId(orderMaster.getId());
// 初始化属性
OrderListResponse orderListResponse = new OrderListResponse();
List<OrderStandard> standardList = new ArrayList<>();
@ -192,7 +197,18 @@ public class OrderDetailController extends BaseController {
orderStandard.setWaitServerNum(orderStandard.getStandardNum() - orderStandard.getServerNum());
standardList.add(orderStandard);
}
if(this.checkIsOnlyServer(orderMaster.getId(), detail.getWorkerId())){
BigDecimal workerFee = financialMaster.getPayMoney();
List<FinancialDetail> financialDetailList = financialDetailService.selectByFinancialMasterId(financialMaster.getId());
for (FinancialDetail param : financialDetailList) {
if (!detail.getWorkerId().equals(param.getPayeeId())) {
workerFee = workerFee.subtract(param.getPayMoney());
}
}
orderListResponse.setPayMoney(workerFee);
}else {
orderListResponse.setPayMoney(detailPayMoney);
}
// 编辑返回属性
orderListResponse.setOrderDetailId(detail.getId());
orderListResponse.setOrderDetailCode(detail.getCode());
@ -202,7 +218,6 @@ public class OrderDetailController extends BaseController {
orderListResponse.setGoodsLogoUrl(goods.getGoodsImgUrl());
orderListResponse.setDiscountMoney(financialDetail.getDiscountMoney());
orderListResponse.setTotalMoney(financialDetail.getTotalMoney());
orderListResponse.setPayMoney(detailPayMoney);
orderListResponse.setWorkerName(workerName);
orderListResponse.setWorkerPhone(worker == null ? "" : worker.getPhone());
orderListResponse.setMasterWorkerName(masterWorkerName);
@ -244,6 +259,7 @@ public class OrderDetailController extends BaseController {
// 主单信息
OrderMaster orderMaster = orderMasterService.selectById(detail.getOrderMasterId());
FinancialMaster financialMaster = financialMasterService.selectByOrderMasterId(orderMaster.getId());
// 初始化属性
OrderListResponse orderListResponse = new OrderListResponse();
List<OrderStandard> standardList = new ArrayList<>();
@ -299,6 +315,19 @@ public class OrderDetailController extends BaseController {
OrderTimeoutRecord orderTimeoutRecord = orderFineRecordService.selectByDetailIdAndStatus(detail.getId(), detail.getOrderStatus());
Boolean isOverTime = orderTimeoutRecord == null ? false : true;
if(this.checkIsOnlyServer(orderMaster.getId(), detail.getWorkerId())){
BigDecimal workerFee = financialMaster.getPayMoney();
List<FinancialDetail> financialDetailList = financialDetailService.selectByFinancialMasterId(financialMaster.getId());
for (FinancialDetail param : financialDetailList) {
if (!detail.getWorkerId().equals(param.getPayeeId())) {
workerFee = workerFee.subtract(param.getPayMoney());
}
}
orderListResponse.setPayMoney(workerFee);
}else {
orderListResponse.setPayMoney(detailPayMoney);
}
// 编辑返回属性
orderListResponse.setOrderDetailId(detail.getId());
orderListResponse.setOrderDetailCode(detail.getCode());
@ -308,7 +337,6 @@ public class OrderDetailController extends BaseController {
orderListResponse.setGoodsLogoUrl(goods.getGoodsImgUrl());
orderListResponse.setDiscountMoney(financialDetail.getDiscountMoney());
orderListResponse.setTotalMoney(financialDetail.getTotalMoney());
orderListResponse.setPayMoney(detailPayMoney);
orderListResponse.setWorkerName(workerName);
orderListResponse.setWorkerPhone(worker == null ? "" : worker.getPhone());
orderListResponse.setCustomerName(customerAddress.getName());
@ -335,6 +363,7 @@ public class OrderDetailController extends BaseController {
@PostMapping("/after/list")
@ResponseBody
public TableDataInfo afterServiceList(@RequestBody OrderDetail orderDetail) {
FinancialMaster financialMaster = financialMasterService.selectByOrderMasterId(orderDetail.getOrderMasterId());
AfterServiceRecord afterServiceRecord = new AfterServiceRecord();
afterServiceRecord.setExcludeAfterServiceFinished(Boolean.TRUE);
List<AfterServiceRecord> afterServiceRecordList = afterServiceRecordService.selectAfterServiceRecordList(afterServiceRecord);
@ -413,6 +442,20 @@ public class OrderDetailController extends BaseController {
OrderTimeoutRecord orderTimeoutRecord = orderFineRecordService.selectByDetailIdAndStatus(detail.getId(), detail.getOrderStatus());
Boolean isOverTime = orderTimeoutRecord == null ? false : true;
if(this.checkIsOnlyServer(orderMaster.getId(), detail.getWorkerId())){
BigDecimal workerFee = financialMaster.getPayMoney();
List<FinancialDetail> financialDetailList = financialDetailService.selectByFinancialMasterId(financialMaster.getId());
for (FinancialDetail param : financialDetailList) {
if (!detail.getWorkerId().equals(param.getPayeeId())) {
workerFee = workerFee.subtract(param.getPayMoney());
}
}
orderListResponse.setPayMoney(workerFee);
}else {
orderListResponse.setPayMoney(detailPayMoney);
}
// 编辑返回属性
orderListResponse.setOrderDetailId(detail.getId());
orderListResponse.setOrderDetailCode(detail.getCode());
@ -422,7 +465,6 @@ public class OrderDetailController extends BaseController {
orderListResponse.setGoodsLogoUrl(goods.getGoodsImgUrl());
orderListResponse.setDiscountMoney(financialDetail.getDiscountMoney());
orderListResponse.setTotalMoney(financialDetail.getTotalMoney());
orderListResponse.setPayMoney(detailPayMoney);
orderListResponse.setWorkerName(workerName);
orderListResponse.setWorkerPhone(worker == null ? "" : worker.getPhone());
orderListResponse.setCustomerName(customerAddress.getName());
@ -648,4 +690,34 @@ public class OrderDetailController extends BaseController {
return AjaxResult.error("查询改价失败!");
}
}
private boolean checkIsOnlyServer(Long orderMasterId, Long workId){
// 找出原单的数量
List<OrderGoods> orderGoodsList = orderGoodsService.selectByOrderMasterId(orderMasterId);
// 找出原单关联的细单的商品数量
List<OrderDetail> orderDetailList = orderDetailService.selectByOrderMasterId(orderMasterId);
for (OrderDetail detail : orderDetailList){
// 非一个师傅接单
if(!workId.equals(detail.getWorkerId())){
return false;
}
// 子单数量
List<OrderGoods> orderDetailGoodsList = orderGoodsService.selectByOrderDetailId(detail.getId());
// 计算剩余未分配的商品数量
for (OrderGoods detailGoods : orderDetailGoodsList) {
for(OrderGoods masterGoods : orderGoodsList){
if(Objects.equals(masterGoods.getGoodsStandardId(), detailGoods.getGoodsStandardId())){
masterGoods.setGoodsNum(masterGoods.getGoodsNum() - detailGoods.getGoodsNum());
}
}
}
}
// 有单派完.
for (OrderGoods orderGoods : orderGoodsList) {
if (orderGoods.getGoodsNum() > 0) {
return false;
}
}
return true;
}
}