师傅端派单接口

This commit is contained in:
kuang.yifei@iwhalecloud.com 2022-06-10 18:06:26 +08:00
parent 297e441c75
commit 05d4c03cd6
2 changed files with 24 additions and 19 deletions

View File

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

View File

@ -3,6 +3,7 @@ package com.ghy.order.request;
import com.ghy.goods.request.AppGoodsRequest; import com.ghy.goods.request.AppGoodsRequest;
import lombok.Data; import lombok.Data;
import java.math.BigDecimal;
import java.util.List; import java.util.List;
/** /**
@ -19,6 +20,9 @@ public class AppOrderAssignRequest {
// 接受分配的师傅ID // 接受分配的师傅ID
private Long workerId; private Long workerId;
// 价格
private BigDecimal totalPay;
// 分配的商品及数量 // 分配的商品及数量
private List<AppGoodsRequest> goodsList; private List<AppGoodsRequest> goodsList;
} }