springboot vue 开源 会员收银系统 (12)购物车关联服务人员 订单计算提成
前言
完整版演示 http://120.26.95.195/
开发版演示 http://120.26.95.195:8889/
在之前的开发进程中,我们完成订单的挂单和取单功能,今天我们完成购物车关联服务人员,用户计算门店服务人员的提成。
1.商品关联服务人员
服务人员可以选择 一个 或者 多个
当选择多个时候 会按照 实际支付金额进行平均分 例:某个商品 X 会员折后价 X 数量 为总业绩 单个服务人员业绩 除以 服务人员个数
商品的提成 常见的有 按照固定金额 或者 按一定的比例
结算时根据设置的提成方式进行计算
关键代码
//该条目有服务人员
List<ServerVo> serverList = productDetail.getServerList();
if(CollectionUtil.isNotEmpty(serverList)) {
//如果是固定金额 固定金额除以人数 获取固定金额
//如果是比例 计算出比例后提成 获取固定金额
//业绩和提成均平均分
//总提成
BigDecimal totalPushMoney = BigDecimal.ZERO;
//总业绩 为订单实付金额
BigDecimal totalGradeMoney = sellDetail.getTotalRealAmount();
//固定金额的话
if (product.getPushType().equals(PUSH_FIXED)) {
totalPushMoney = BigDecimalUtil.mul(product.getPushAmount(),new BigDecimal(sellDetail.getCount()));
}
//按比例
if (product.getPushType().equals(PUSH_SCALE)) {
//提成额 先转换为百分数
BigDecimal pushPercent = BigDecimalUtil.div(product.getPushPercent(), new BigDecimal("100"));
//折后价*百分数
totalPushMoney = BigDecimalUtil.mul(totalGradeMoney, pushPercent);
}
//平均分
BigDecimal pushMoney = BigDecimalUtil.div(totalPushMoney, new BigDecimal(serverList.size()));
BigDecimal gradeMoney = BigDecimalUtil.div(totalGradeMoney, new BigDecimal(serverList.size()));
//设置服务人员
serverList.stream().forEach(server -> {
SellDetailServer sellDetailServer = new SellDetailServer();
sellDetailServer.setSellId(sell.getSellId());
sellDetailServer.setSellDetailId(sellDetail.getSellDetailId());
sellDetailServer.setServerId(server.getServerId());
sellDetailServer.setServerName(server.getServerName());
sellDetailServer.setServerPushMoney(pushMoney);
sellDetailServer.setServerGrade(gradeMoney);
sellDetailServerService.save(sellDetailServer);
});
2.卡项的提成
卡项的提成跟 商品类似 仅计算 比例分成即可
续卡时查询当时开卡的 提成比例 计入即可
订单查询时将细单对应的服务人员查出
服务人员业绩提成完成,后续我们完成订单的多维度统计功能。
代码地址
https://gitee.com/ddeatrr/memberShop