提交 bcc350db 作者: zhenjie

购物车多商家商品下单

上级 de8e5ad1
......@@ -21,6 +21,4 @@ public interface UserAddressDao {
UserAddressDO selectById(Integer userAddressId);
List<UserAddressDO> selectList(UserAddressDO userAddressDO);
void batchAddOrderExpress(List<UavOrderExpressDO> expressDOS);
}
......@@ -18,4 +18,6 @@ public interface UavOrderExpressDao {
int updateUavOrderExpressDO(UavOrderExpressDO uavOrderExpressDO);
List<UavOrderExpressDO> listNoReceive();
void batchAddOrderExpress(List<UavOrderExpressDO> expressDOS);
}
......@@ -81,8 +81,8 @@ public class UavCartServiceImpl implements UavCartService {
// 同步商品信息,价格及是否展示
// 根据规格查询商品信息
buildUavCartCompany(uavCartQO.getOrderType(), uavCartCompanyDTOS);
List<UavCartCompanyDTO> collect = uavCartCompanyDTOS.stream().filter(i -> CollectionUtils.isNotEmpty(i.getUavCartDOS())).collect(Collectors.toList());
return ResultBody.success(PageResult.buildPage(pageNo, uavCartQO.getPageSize(), list.size(), collect));
uavCartCompanyDTOS.removeIf(i -> CollectionUtils.isEmpty(i.getUavCartDOS()));
return ResultBody.success(PageResult.buildPage(pageNo, uavCartQO.getPageSize(), list.size(), uavCartCompanyDTOS));
}
@Override
......@@ -96,9 +96,7 @@ public class UavCartServiceImpl implements UavCartService {
}
// 最新规格信息
List<UavCartDTO> uavCartDTOS = pmsAppApi.listPriceStock(priceStockQOS);
if (CollectionUtils.isEmpty(uavCartDTOS)) {
return;
}
// 更新最新的规格信息
for (UavCartCompanyDTO uavCartCompanyDTO : uavCartCompanyDTOS) {
uavCartCompanyDTO.setCompanyName(uavCartCompanyDTO.getUavCartDOS().get(0).getCompanyName());
......@@ -120,15 +118,17 @@ public class UavCartServiceImpl implements UavCartService {
// 找不到或被删除则置为失效
if (!flag || uavCartDTO.getDeleted().equals(1)) {
uavCartDTO.setShelfStatus(0);
uavCartDTO.setDeleted(1);
}
}
for (UavCartCompanyDTO cartCompanyDTO : uavCartCompanyDTOS) {
if (UavOrderType.PAY.getCode().equals(orderType)) {
cartCompanyDTO.setUavCartDOS(cartCompanyDTO.getUavCartDOS().stream().filter( item -> item.getPriceShow().equals(1)).collect(Collectors.toList()));
}else {
cartCompanyDTO.setUavCartDOS(cartCompanyDTO.getUavCartDOS().stream().filter( item -> item.getPriceShow().equals(0)).collect(Collectors.toList()));
}
}
// for (UavCartCompanyDTO cartCompanyDTO : uavCartCompanyDTOS) {
// List<UavCartDTO> cartDOS = cartCompanyDTO.getUavCartDOS();
// if (UavOrderType.PAY.getCode().equals(orderType)) {
// cartDOS.removeIf(i -> i.getPriceShow() != null && i.getPriceShow().equals(0));
// }else {
// cartDOS.removeIf(i -> i.getPriceShow() != null && i.getPriceShow().equals(1));
// }
// }
}
}
}
......@@ -659,20 +659,14 @@ public class UavOrderServiceImpl implements UavOrderService {
if (orderByCartQO.getOrderType().equals(UavOrderType.SIGN.getCode()) && orderByCartQO.getCartCompanyDTOS().size() > 1) {
return ResultBody.error("意向订单仅限下单个商家的商品");
}
// 正常订单可以抵扣云享金和余额、意向订单不能扣
if (orderByCartQO.getOrderType().equals(UavOrderType.PAY.getCode())){
}else {
}
// 购物车id
List<Integer> cartIds = new ArrayList<>();
// 云享金、余额扣除相关
ResultBody<PayWalletDTO> payResInfo = userAppApi.getCurrentUserPayWalletInfo(currentAccount.getToken());
if (!payResInfo.getCode().equals(ResultEnum.SUCCESS.getResultCode()) || payResInfo.getResult() == null){
if (!payResInfo.getCode().equals(ResultEnum.SUCCESS.getResultCode()) || payResInfo.getResult() == null) {
return payResInfo;
}
PayWalletDTO payWalletDTO = payResInfo.getResult();
// 购物车id
List<Integer> cartIds = new ArrayList<>();
// 可以多商家多商品,为每个商家生成一个订单
List<UavOrderDO> orders = new ArrayList<UavOrderDO>();
BigDecimal allOtherAmount = BigDecimal.ZERO;
......@@ -698,36 +692,46 @@ public class UavOrderServiceImpl implements UavOrderService {
UavOrderSkuDO uavOrderSkuDO = new UavOrderSkuDO(uavCartDTO);
skuDOS.add(uavOrderSkuDO);
orderAmount = orderAmount.add(uavCartDTO.getSalePrice().multiply(BigDecimal.valueOf(uavCartDTO.getOrderNum())));
if (uavCartDTO.getShelfStatus().equals(0)) {
return ResultBody.error("所选规格无效");
}
}
}else {
return ResultBody.error("所选规格无效");
}
otherAmount = otherAmount.add(orderAmount);
// 抵扣云享金
if (companyDTO.getDeductShareAmount().equals(1) && payWalletDTO.getCashAmt().compareTo(BigDecimal.ZERO) > 0) {
if (payWalletDTO.getCashAmt().compareTo(otherAmount) > 0) {
shareAmount = shareAmount.add(otherAmount);
}else {
shareAmount = shareAmount.add(payWalletDTO.getCashAmt());
// 正常订单可以抵扣云享金和余额、意向订单不能扣
if (orderByCartQO.getOrderType().equals(UavOrderType.PAY.getCode())){
// 抵扣云享金
if (companyDTO.getDeductShareAmount().equals(1) && payWalletDTO.getCashAmt().compareTo(BigDecimal.ZERO) > 0) {
if (payWalletDTO.getCashAmt().compareTo(otherAmount) > 0) {
shareAmount = shareAmount.add(otherAmount);
}else {
shareAmount = shareAmount.add(payWalletDTO.getCashAmt());
}
otherAmount = otherAmount.subtract(shareAmount);
allShareAmount = allShareAmount.add(shareAmount);
payWalletDTO.setCashAmt(payWalletDTO.getCashAmt().subtract(shareAmount));
}
otherAmount = otherAmount.subtract(shareAmount);
allShareAmount = allShareAmount.add(shareAmount);
payWalletDTO.setCashAmt(payWalletDTO.getCashAmt().subtract(shareAmount));
}
// 抵扣余额
if (companyDTO.getDeductSalaryAmount().equals(1) && payWalletDTO.getSalaryAmt().compareTo(BigDecimal.ZERO) > 0
&& otherAmount.compareTo(BigDecimal.ZERO) > 0) {
if (otherAmount.compareTo(payWalletDTO.getSalaryAmt()) > 0) {
salaryAmount = salaryAmount.add(payWalletDTO.getSalaryAmt());
// 抵扣余额
if (companyDTO.getDeductSalaryAmount().equals(1) && payWalletDTO.getSalaryAmt().compareTo(BigDecimal.ZERO) > 0
&& otherAmount.compareTo(BigDecimal.ZERO) > 0) {
if (otherAmount.compareTo(payWalletDTO.getSalaryAmt()) > 0) {
salaryAmount = salaryAmount.add(payWalletDTO.getSalaryAmt());
}else {
salaryAmount = salaryAmount.add(otherAmount);
}
otherAmount = otherAmount.subtract(salaryAmount);
allSalaryAmount = allSalaryAmount.add(salaryAmount);
payWalletDTO.setSalaryAmt(payWalletDTO.getSalaryAmt().subtract(salaryAmount));
}
if (otherAmount.compareTo(BigDecimal.ZERO) == 0) {
statusCode = UavOrderStatus.WAITING_DELIVER_GOODS.getCode();
}else {
salaryAmount = salaryAmount.add(otherAmount);
statusCode = UavOrderStatus.PAYING.getCode();
}
otherAmount = otherAmount.subtract(salaryAmount);
allSalaryAmount = allSalaryAmount.add(salaryAmount);
payWalletDTO.setSalaryAmt(payWalletDTO.getSalaryAmt().subtract(salaryAmount));
}
if (otherAmount.compareTo(BigDecimal.ZERO) == 0) {
statusCode = UavOrderStatus.WAITING_DELIVER_GOODS.getCode();
}else {
statusCode = UavOrderStatus.PAYING.getCode();
statusCode = UavOrderStatus.CONFIRM.getCode();
}
// 设置订单状态
uavOrderDO.setStatusCode(statusCode);
......@@ -747,7 +751,9 @@ public class UavOrderServiceImpl implements UavOrderService {
allOtherAmount = allOtherAmount.add(otherAmount);
}
// 抵扣余额
this.deductWallet(allShareAmount, allSalaryAmount, currentAccount);
if (allShareAmount.compareTo(BigDecimal.ZERO) > 0 || allSalaryAmount.compareTo(BigDecimal.ZERO) > 0) {
this.deductWallet(allShareAmount, allSalaryAmount, currentAccount);
}
// 添加订单信息
uavOrderDao.batchAddOrder(orders);
// 全部规格信息
......@@ -758,6 +764,7 @@ public class UavOrderServiceImpl implements UavOrderService {
allSkuDOS.add(skuDO);
}
}
log.info("allSkuDOS:{}", JSONObject.toJSONString(allSkuDOS));
// 批量添加规格
uavOrderDao.addOrderSku(allSkuDOS);
// 多个添加收货地址
......@@ -769,7 +776,7 @@ public class UavOrderServiceImpl implements UavOrderService {
expressDOS.add(uavOrderExpressDO);
}
// 批量添加收货地址
userAddressDao.batchAddOrderExpress(expressDOS);
uavOrderExpressDao.batchAddOrderExpress(expressDOS);
// 批量标识购物车
uavCartService.batchRemove(cartIds);
return ResultBody.success();
......
......@@ -26,14 +26,6 @@
values (#{userAccountId}, #{takeName}, #{takePhone}, #{takeRegion}, #{takeAddress},#{type},#{flag},#{districtCode})
</insert>
<insert id="batchAddOrderExpress">
insert into user_address(user_account_id, take_name, take_phone, take_region, take_address,`type`,flag,district_code)
values
<foreach item="item" collection="list" separator=",">
(#{item.userAccountId}, #{item.takeName}, #{item.takePhone}, #{item.takeRegion}, #{item.takeAddress},#{item.type},#{item.flag},#{item.districtCode})
</foreach>
</insert>
<!-- 通过主键修改数据 -->
<update id="update" parameterType="com.mmc.oms.entity.mall.UserAddressDO">
update user_address
......
......@@ -13,6 +13,14 @@
values (#{uavOrderId}, #{sendExpNo}, #{sendExpCode}, #{takeName}, #{takePhone}, #{takeRegion}, #{takeAddress}, NOW())
</insert>
<insert id="batchAddOrderExpress">
insert into uav_order_express(uav_order_id, send_exp_no, send_exp_code, take_name, take_phone, take_region, take_address, create_time)
values
<foreach item="item" collection="list" separator=",">
(#{item.uavOrderId}, #{item.sendExpNo}, #{item.sendExpCode}, #{item.takeName}, #{item.takePhone}, #{item.takeRegion}, #{item.takeAddress}, NOW())
</foreach>
</insert>
<update id="updateUavOrderExpressDO" parameterType="com.mmc.oms.entity.uav.UavOrderExpressDO">
update uav_order_express
<set>
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论