师傅端派单接口
This commit is contained in:
parent
297e441c75
commit
05d4c03cd6
|
|
@ -2,6 +2,7 @@ package com.ghy.web.controller.order;
|
|||
|
||||
import com.ghy.common.core.controller.BaseController;
|
||||
import com.ghy.common.core.domain.AjaxResult;
|
||||
import com.ghy.common.enums.FinancialDetailType;
|
||||
import com.ghy.common.enums.OrderStatus;
|
||||
import com.ghy.common.enums.PayStatus;
|
||||
import com.ghy.common.utils.StringUtils;
|
||||
|
|
@ -124,7 +125,7 @@ public class OrderController extends BaseController {
|
|||
Assert.notNull(acceptWorker, "查询接单师傅信息失败");
|
||||
// 校验接单师傅和派单师傅是不是同一个Team
|
||||
boolean checkInTeam = workerService.checkInTeam(assignWorker.getWorkerId(), acceptWorker.getWorkerId());
|
||||
Assert.isTrue(checkInTeam, "找不到接单师傅信息");
|
||||
Assert.isTrue(checkInTeam, "接单师傅不在本团队");
|
||||
|
||||
// 创建子订单
|
||||
OrderDetail od = new OrderDetail();
|
||||
|
|
@ -134,7 +135,7 @@ public class OrderController extends BaseController {
|
|||
od.setOrderMasterCode(om.getCode());
|
||||
od.setCustomerId(om.getCustomerId());
|
||||
od.setOrderType(om.getOrderType());
|
||||
od.setOrderStatus(om.getOrderStatus());
|
||||
od.setOrderStatus(OrderStatus.PLAIN.code());
|
||||
od.setWorkerId(request.getWorkerId());
|
||||
od.setRevTime(new Date());
|
||||
orderDetailService.insertOrderDetail(od);
|
||||
|
|
@ -144,49 +145,49 @@ public class OrderController extends BaseController {
|
|||
OrderGoods orderGoods = new OrderGoods();
|
||||
orderGoods.setGoodsStandardId(goods.getGoodsStandardId());
|
||||
orderGoods.setGoodsNum(goods.getNum());
|
||||
orderGoods.setOrderId(od.getId());
|
||||
orderGoods.setOrderDetailId(od.getId());
|
||||
orderGoods.setServerGoodsNum(0);
|
||||
orderGoodsService.insertOrderGoods(orderGoods);
|
||||
});
|
||||
|
||||
String leaderTeamMoney = assignWorker.getLeaderTeamMoney();
|
||||
String leaderTeamRate = assignWorker.getLeaderTeamRate();
|
||||
|
||||
// 派单师傅的钱
|
||||
BigDecimal assignWorkerMoney;
|
||||
// 接单师傅的钱
|
||||
BigDecimal acceptWorkerMoney;
|
||||
BigDecimal assignWorkerMoney = BigDecimal.ZERO;
|
||||
// 固定抽成
|
||||
if (StringUtils.isNotBlank(leaderTeamMoney)) {
|
||||
assignWorkerMoney = new BigDecimal(leaderTeamMoney);
|
||||
} else if (StringUtils.isNotBlank(leaderTeamRate)) {
|
||||
assignWorkerMoney = assignWorkerMoney.add(new BigDecimal(leaderTeamMoney));
|
||||
}
|
||||
// 比例抽成
|
||||
if (StringUtils.isNotBlank(leaderTeamRate)) {
|
||||
BigDecimal rate = new BigDecimal(leaderTeamRate);
|
||||
assignWorkerMoney = rate.multiply(fm.getPayMoney());
|
||||
} else {
|
||||
assignWorkerMoney = BigDecimal.ZERO;
|
||||
assignWorkerMoney = rate.multiply(request.getTotalPay()).add(assignWorkerMoney);
|
||||
}
|
||||
|
||||
// 如果派单师傅的抽成金额>0 则为派单师傅生成子财务单
|
||||
if (BigDecimal.ZERO.compareTo(assignWorkerMoney) < 0) {
|
||||
FinancialDetail fd = new FinancialDetail(fm.getDeptId(), financialDetailService.createCode(), fm.getId(),
|
||||
fm.getCode(), od.getId(), od.getCode(), assignWorkerMoney, 1, assignWorker.getWorkerId(),
|
||||
fm.getCode(), od.getId(), od.getCode(), assignWorkerMoney, FinancialDetailType.WORKER_FEE.getCode(), assignWorker.getWorkerId(),
|
||||
fm.getPayType(), fm.getPayStatus(), fm.getPayTime());
|
||||
financialDetailService.insertFinancialDetail(fd);
|
||||
}
|
||||
|
||||
// 接单师傅的钱
|
||||
BigDecimal acceptWorkerMoney;
|
||||
|
||||
// 减掉派单师傅的抽成
|
||||
acceptWorkerMoney = fm.getPayMoney().subtract(assignWorkerMoney);
|
||||
List<FinancialDetail> fds = financialDetailService.selectFinancialDetailList(new FinancialDetail(fm.getId()));
|
||||
// 减掉所有的平台和分销抽成
|
||||
for (FinancialDetail fd : fds) {
|
||||
acceptWorkerMoney = acceptWorkerMoney.subtract(fd.getPayMoney());
|
||||
}
|
||||
acceptWorkerMoney = request.getTotalPay().subtract(assignWorkerMoney);
|
||||
Assert.isTrue(BigDecimal.ZERO.compareTo(acceptWorkerMoney) < 0, "订单计算出错 请联系管理员");
|
||||
|
||||
//为接单师傅生成子财务单
|
||||
FinancialDetail fd = new FinancialDetail(fm.getDeptId(), financialDetailService.createCode(), fm.getId(),
|
||||
fm.getCode(), od.getId(), od.getCode(), acceptWorkerMoney, 1, acceptWorker.getWorkerId(),
|
||||
fm.getCode(), od.getId(), od.getCode(), acceptWorkerMoney, FinancialDetailType.ORDER_FEE.getCode(), acceptWorker.getWorkerId(),
|
||||
fm.getPayType(), fm.getPayStatus(), fm.getPayTime());
|
||||
financialDetailService.insertFinancialDetail(fd);
|
||||
|
||||
// TODO 检查是否商品全部消耗完成,如果完成则还要给派单师傅生成一条财务细单,并更新orderMaster的状态。
|
||||
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ package com.ghy.order.request;
|
|||
import com.ghy.goods.request.AppGoodsRequest;
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
|
|
@ -19,6 +20,9 @@ public class AppOrderAssignRequest {
|
|||
// 接受分配的师傅ID
|
||||
private Long workerId;
|
||||
|
||||
// 价格
|
||||
private BigDecimal totalPay;
|
||||
|
||||
// 分配的商品及数量
|
||||
private List<AppGoodsRequest> goodsList;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue