feat(订单): 添加订单模式字段并实现会员模式逻辑
添加订单模式字段(mode)用于区分不同业务场景 实现会员模式(模式3)的特殊处理逻辑,包括: - 订单提交时设置商品价格为格口价格 - 订单完成时更新格口租赁状态 - 退货审批时自动审批会员模式订单
This commit is contained in:
parent
bab1a171bf
commit
04fd224005
|
@ -290,15 +290,22 @@ public class ReturnApprovalApplicationService {
|
||||||
orderGoodsModel.setStatus(2); // 6表示已完成退货
|
orderGoodsModel.setStatus(2); // 6表示已完成退货
|
||||||
orderGoodsModel.updateById();
|
orderGoodsModel.updateById();
|
||||||
|
|
||||||
// 更新商品库存
|
if (orderGoodsModel.getMode()!= null && orderGoodsModel.getMode().equals(3)) {
|
||||||
GoodsModel goodsModel = goodsModelFactory.loadById(orderGoodsModel.getGoodsId());
|
// 模式为3,需要更新柜子格口状态
|
||||||
goodsModel.setStock(goodsModel.getStock() + orderGoodsModel.getQuantity());
|
CabinetCellEntity cell = cabinetCellService.getById(orderGoodsModel.getCellId());
|
||||||
goodsModel.updateById();
|
cell.setIsRented(0);
|
||||||
|
cell.updateById();
|
||||||
|
} else {
|
||||||
|
// 更新商品库存
|
||||||
|
GoodsModel goodsModel = goodsModelFactory.loadById(orderGoodsModel.getGoodsId());
|
||||||
|
goodsModel.setStock(goodsModel.getStock() + orderGoodsModel.getQuantity());
|
||||||
|
goodsModel.updateById();
|
||||||
|
|
||||||
// 更新格口库存
|
// 更新格口库存
|
||||||
CabinetCellModel cabinetCellModel = cabinetCellModelFactory.loadById(orderGoodsModel.getCellId());
|
CabinetCellModel cabinetCellModel = cabinetCellModelFactory.loadById(orderGoodsModel.getCellId());
|
||||||
cabinetCellModel.setStock(cabinetCellModel.getStock() + orderGoodsModel.getQuantity());
|
cabinetCellModel.setStock(cabinetCellModel.getStock() + orderGoodsModel.getQuantity());
|
||||||
cabinetCellModel.updateById();
|
cabinetCellModel.updateById();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -729,9 +736,7 @@ public class ReturnApprovalApplicationService {
|
||||||
orderGoodsModel.setStatus(5);
|
orderGoodsModel.setStatus(5);
|
||||||
orderGoodsModel.updateById();
|
orderGoodsModel.updateById();
|
||||||
|
|
||||||
GoodsModel goodsModel = goodsModelFactory.loadById(orderGoods.getGoodsId());
|
if (orderGoods.getMode() != null && orderGoods.getMode().equals(3)) {
|
||||||
// 如果商品免审批,则自动审批
|
|
||||||
if (goodsModel.getAutoApproval().equals(1)) {
|
|
||||||
UpdateReturnApprovalCommand approveCommand = new UpdateReturnApprovalCommand();
|
UpdateReturnApprovalCommand approveCommand = new UpdateReturnApprovalCommand();
|
||||||
approveCommand.setCorpid(command.getCorpid());
|
approveCommand.setCorpid(command.getCorpid());
|
||||||
approveCommand.setApprovalId(returnApprovalModel.getApprovalId());
|
approveCommand.setApprovalId(returnApprovalModel.getApprovalId());
|
||||||
|
@ -739,6 +744,18 @@ public class ReturnApprovalApplicationService {
|
||||||
approveCommand.setAuditName("自动审批");
|
approveCommand.setAuditName("自动审批");
|
||||||
approveCommand.setAuditRemark("自动审批");
|
approveCommand.setAuditRemark("自动审批");
|
||||||
approveApproval(approveCommand);
|
approveApproval(approveCommand);
|
||||||
|
} else {
|
||||||
|
GoodsModel goodsModel = goodsModelFactory.loadById(orderGoods.getGoodsId());
|
||||||
|
// 如果商品免审批,则自动审批
|
||||||
|
if (goodsModel.getAutoApproval().equals(1)) {
|
||||||
|
UpdateReturnApprovalCommand approveCommand = new UpdateReturnApprovalCommand();
|
||||||
|
approveCommand.setCorpid(command.getCorpid());
|
||||||
|
approveCommand.setApprovalId(returnApprovalModel.getApprovalId());
|
||||||
|
approveCommand.setReturnAmount(orderGoods.getTotalAmount());
|
||||||
|
approveCommand.setAuditName("自动审批");
|
||||||
|
approveCommand.setAuditRemark("自动审批");
|
||||||
|
approveApproval(approveCommand);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 发送审核消息
|
// 发送审核消息
|
||||||
|
|
|
@ -182,6 +182,7 @@ public class OrderApplicationService {
|
||||||
orderModel.setUserid(command.getQyUserid());
|
orderModel.setUserid(command.getQyUserid());
|
||||||
orderModel.setName(command.getName());
|
orderModel.setName(command.getName());
|
||||||
orderModel.setIsDeductStock(0);
|
orderModel.setIsDeductStock(0);
|
||||||
|
orderModel.setMode(command.getMode());
|
||||||
orderModel.insert();
|
orderModel.insert();
|
||||||
|
|
||||||
goodsList.forEach(goods -> {
|
goodsList.forEach(goods -> {
|
||||||
|
@ -326,12 +327,18 @@ public class OrderApplicationService {
|
||||||
goodsModel.setUpdateTime(new Date());
|
goodsModel.setUpdateTime(new Date());
|
||||||
goodsModel.setDeleted(false);
|
goodsModel.setDeleted(false);
|
||||||
|
|
||||||
// 计算商品金额并验证库存
|
|
||||||
goodsModel.calculateTotal();
|
|
||||||
goodsModel.validateQuantity();
|
|
||||||
CabinetCellEntity cabinetCellEntity = cabinetCellService.getById(goodsModel.getCellId());
|
CabinetCellEntity cabinetCellEntity = cabinetCellService.getById(goodsModel.getCellId());
|
||||||
if (cabinetCellEntity == null || cabinetCellEntity.getStock() < goodsModel.getQuantity()) {
|
|
||||||
throw new ApiException(ErrorCode.FAILED, "柜子库存不足");
|
if (orderModel.getMode() != null && orderModel.getMode().equals(3)) {
|
||||||
|
goodsModel.setPrice(cabinetCellEntity.getCellPrice());
|
||||||
|
goodsModel.setTotalAmount(cabinetCellEntity.getCellPrice());
|
||||||
|
} else {
|
||||||
|
// 计算商品金额并验证库存
|
||||||
|
goodsModel.calculateTotal();
|
||||||
|
goodsModel.validateQuantity();
|
||||||
|
if (cabinetCellEntity == null || cabinetCellEntity.getStock() < goodsModel.getQuantity()) {
|
||||||
|
throw new ApiException(ErrorCode.FAILED, "柜子库存不足");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 保存订单商品
|
// 保存订单商品
|
||||||
|
|
|
@ -31,6 +31,9 @@ public class SubmitOrderCommand {
|
||||||
@ApiModelProperty("联系电话")
|
@ApiModelProperty("联系电话")
|
||||||
private String mobile;
|
private String mobile;
|
||||||
|
|
||||||
|
@ApiModelProperty("运行模式(0-支付模式 1-审批模式 2-借还模式 3-会员模式 4-耗材模式)")
|
||||||
|
private Integer mode;
|
||||||
|
|
||||||
@ApiModelProperty("企业微信用户ID或汇邦云用户ID")
|
@ApiModelProperty("企业微信用户ID或汇邦云用户ID")
|
||||||
private String qyUserid;
|
private String qyUserid;
|
||||||
|
|
||||||
|
|
|
@ -10,6 +10,7 @@ import com.agileboot.domain.cabinet.cell.db.CabinetCellService;
|
||||||
import com.agileboot.domain.shop.goods.db.ShopGoodsEntity;
|
import com.agileboot.domain.shop.goods.db.ShopGoodsEntity;
|
||||||
import com.agileboot.domain.shop.goods.db.ShopGoodsService;
|
import com.agileboot.domain.shop.goods.db.ShopGoodsService;
|
||||||
import com.agileboot.domain.shop.order.db.ShopOrderEntity;
|
import com.agileboot.domain.shop.order.db.ShopOrderEntity;
|
||||||
|
import com.agileboot.domain.shop.order.db.ShopOrderGoodsEntity;
|
||||||
import com.agileboot.domain.shop.order.db.ShopOrderGoodsService;
|
import com.agileboot.domain.shop.order.db.ShopOrderGoodsService;
|
||||||
import com.agileboot.domain.shop.order.db.ShopOrderService;
|
import com.agileboot.domain.shop.order.db.ShopOrderService;
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
|
@ -98,10 +99,19 @@ public class OrderModel extends ShopOrderEntity {
|
||||||
this.updateById();
|
this.updateById();
|
||||||
|
|
||||||
if (!isDeductStock) {
|
if (!isDeductStock) {
|
||||||
orderGoodsService.selectByOrderId(this.getOrderId()).forEach(orderGoods -> {
|
List<ShopOrderGoodsEntity> orderGoodsList = orderGoodsService.selectByOrderId(this.getOrderId());
|
||||||
// 扣减库存
|
if (this.getMode() != null && this.getMode().equals(3)) {
|
||||||
deductGoodsStock(orderGoods.getGoodsId(), orderGoods.getQuantity(), orderGoods.getCellId());
|
for (ShopOrderGoodsEntity orderGoods : orderGoodsList) {
|
||||||
});
|
CabinetCellEntity cell = cabinetCellService.getById(orderGoods.getCellId());
|
||||||
|
cell.setIsRented(1);
|
||||||
|
cell.updateById();
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
orderGoodsList.forEach(orderGoods -> {
|
||||||
|
// 扣减库存
|
||||||
|
deductGoodsStock(orderGoods.getGoodsId(), orderGoods.getQuantity(), orderGoods.getCellId());
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue