更改扣款顺序,添加菜品接口
This commit is contained in:
		| @ -13,7 +13,6 @@ import cn.iocoder.yudao.module.member.service.diningplates.DiningPlatesService; | ||||
| import cn.iocoder.yudao.module.member.service.order.OrderService; | ||||
| import cn.iocoder.yudao.module.member.service.user.MemberUserService; | ||||
| import lombok.extern.slf4j.Slf4j; | ||||
| import org.apache.commons.lang3.StringUtils; | ||||
| import org.springframework.data.redis.core.StringRedisTemplate; | ||||
| import org.springframework.stereotype.Component; | ||||
| import org.springframework.transaction.annotation.Transactional; | ||||
| @ -71,7 +70,7 @@ public class BalanceDeductionJob implements JobHandler { | ||||
|             toPay.forEach(dishOrderDO -> { | ||||
|                 //新的总价 | ||||
|                 String s = stringRedisTemplate.opsForValue().get(dishOrderDO.getDiningPlatesNum() + "-" + dishOrderDO.getStoreId()); | ||||
|                 BigDecimal total = new BigDecimal(StrUtil.isBlank(s)?"0":s); | ||||
|                 BigDecimal total = new BigDecimal(StrUtil.isBlank(s) ? "0" : s); | ||||
|                 //BigDecimal total = new BigDecimal(0.01); | ||||
|                 Long userId = dishOrderDO.getUserId(); | ||||
|                 CardDO cardDO = new CardDO(); | ||||
| @ -89,12 +88,12 @@ public class BalanceDeductionJob implements JobHandler { | ||||
|                 dishOrderDO.setReductionState(reductionAmount.compareTo(BigDecimal.ZERO) > 0 ? "1" : "0"); | ||||
|  | ||||
|                 //计算减免后的总价 | ||||
|                 if(total.compareTo(reductionAmount)<0){ | ||||
|                 if (total.compareTo(reductionAmount) < 0) { | ||||
|                     total = BigDecimal.ZERO; | ||||
|                 }else { | ||||
|                 } else { | ||||
|                     total = total.subtract(reductionAmount); | ||||
|                 } | ||||
|                  | ||||
|  | ||||
|                 BigDecimal wxAmount = oldCardDO.getWxAmount(); | ||||
|                 BigDecimal giftAmount = oldCardDO.getGiftAmount(); | ||||
|                 BigDecimal cashAmount = oldCardDO.getCashAmount(); | ||||
| @ -119,26 +118,25 @@ public class BalanceDeductionJob implements JobHandler { | ||||
|                 } else { | ||||
|                     dishOrderDO.setOrderStatus(DishOrderDO.COMPLETE); | ||||
|                     //计算金额 | ||||
|                     if (total.compareTo(wxAmount) <= 0) { | ||||
|                         cardDO.setWxAmount(wxAmount.subtract(total).setScale(2, BigDecimal.ROUND_HALF_UP)); | ||||
|                         dishOrderDO.setWxAmount(total); | ||||
|                     if (total.compareTo(cashAmount) <= 0) { | ||||
|                         cardDO.setCashAmount(cashAmount.subtract(total).setScale(2, BigDecimal.ROUND_HALF_UP)); | ||||
|                         dishOrderDO.setCashAmount(total); | ||||
|                     } else { | ||||
|                         cardDO.setWxAmount(BigDecimal.ZERO); | ||||
|                         dishOrderDO.setWxAmount(wxAmount); | ||||
|                         BigDecimal total1 = total.subtract(wxAmount).setScale(2, BigDecimal.ROUND_HALF_UP); | ||||
|                         if (total1.compareTo(cashAmount) <= 0) { | ||||
|                             cardDO.setCashAmount(cashAmount.subtract(total1).setScale(2, BigDecimal.ROUND_HALF_UP)); | ||||
|                             dishOrderDO.setCashAmount(total1); | ||||
|                         cardDO.setCashAmount(BigDecimal.ZERO); | ||||
|                         dishOrderDO.setCashAmount(cashAmount); | ||||
|                         BigDecimal total1 = total.subtract(cashAmount).setScale(2, BigDecimal.ROUND_HALF_UP); | ||||
|                         if (total1.compareTo(giftAmount) <= 0) { | ||||
|                             cardDO.setGiftAmount(giftAmount.subtract(total1).setScale(2, BigDecimal.ROUND_HALF_UP)); | ||||
|                             dishOrderDO.setGiftAmount(total1); | ||||
|                         } else { | ||||
|                             cardDO.setCashAmount(BigDecimal.ZERO); | ||||
|                             dishOrderDO.setCashAmount(cashAmount); | ||||
|                             BigDecimal total2 = total1.subtract(cashAmount).setScale(2, BigDecimal.ROUND_HALF_UP); | ||||
|                             cardDO.setGiftAmount(BigDecimal.ZERO); | ||||
|                             dishOrderDO.setGiftAmount(giftAmount); | ||||
|                             BigDecimal total2 = total1.subtract(giftAmount).setScale(2, BigDecimal.ROUND_HALF_UP); | ||||
|  | ||||
|                             cardDO.setGiftAmount(giftAmount.subtract(total2).setScale(2, BigDecimal.ROUND_HALF_UP)); | ||||
|                             dishOrderDO.setGiftAmount(total2); | ||||
|                             cardDO.setWxAmount(wxAmount.subtract(total2).setScale(2, BigDecimal.ROUND_HALF_UP)); | ||||
|                             dishOrderDO.setWxAmount(total2); | ||||
|                         } | ||||
|                     } | ||||
|  | ||||
|                 } | ||||
|  | ||||
|                 cardDO.setUserId(userId); | ||||
| @ -149,7 +147,7 @@ public class BalanceDeductionJob implements JobHandler { | ||||
|  | ||||
|                 dishOrderDO.setTotalMoney(total); | ||||
|                 dishOrderDO.setUpdateTime(LocalDateTime.now()); | ||||
|                 stringRedisTemplate.delete(dishOrderDO.getDiningPlatesNum()+ "-" + dishOrderDO.getStoreId()); | ||||
|                 stringRedisTemplate.delete(dishOrderDO.getDiningPlatesNum() + "-" + dishOrderDO.getStoreId()); | ||||
|             }); | ||||
|             //取消批量,防止同一人订餐少扣款 | ||||
|             //cardService.insertBatch(list); | ||||
| @ -164,4 +162,29 @@ public class BalanceDeductionJob implements JobHandler { | ||||
|         return String.format("扣款定时任务扣款数量 %s 个", size); | ||||
|     } | ||||
|  | ||||
|  | ||||
|     public void test() { | ||||
|         //计算金额 | ||||
|         //if (total.compareTo(wxAmount) <= 0) { | ||||
|         //    cardDO.setWxAmount(wxAmount.subtract(total).setScale(2, BigDecimal.ROUND_HALF_UP)); | ||||
|         //    dishOrderDO.setWxAmount(total); | ||||
|         //} else { | ||||
|         //    cardDO.setWxAmount(BigDecimal.ZERO); | ||||
|         //    dishOrderDO.setWxAmount(wxAmount); | ||||
|         //    BigDecimal total1 = total.subtract(wxAmount).setScale(2, BigDecimal.ROUND_HALF_UP); | ||||
|         //    if (total1.compareTo(cashAmount) <= 0) { | ||||
|         //        cardDO.setCashAmount(cashAmount.subtract(total1).setScale(2, BigDecimal.ROUND_HALF_UP)); | ||||
|         //        dishOrderDO.setCashAmount(total1); | ||||
|         //    } else { | ||||
|         //        cardDO.setCashAmount(BigDecimal.ZERO); | ||||
|         //        dishOrderDO.setCashAmount(cashAmount); | ||||
|         //        BigDecimal total2 = total1.subtract(cashAmount).setScale(2, BigDecimal.ROUND_HALF_UP); | ||||
|         // | ||||
|         //        cardDO.setGiftAmount(giftAmount.subtract(total2).setScale(2, BigDecimal.ROUND_HALF_UP)); | ||||
|         //        dishOrderDO.setGiftAmount(total2); | ||||
|         //    } | ||||
|         //} | ||||
|         //计算金 | ||||
|     } | ||||
|  | ||||
| } | ||||
|  | ||||
| @ -200,17 +200,17 @@ public class StoreOrderServiceImpl implements StoreOrderService { | ||||
|         cardDO.setMoney(money.subtract(total).setScale(2, BigDecimal.ROUND_HALF_UP)); | ||||
|  | ||||
|         //计算金额 | ||||
|         if (total.compareTo(wxAmount) <= 0) { | ||||
|             cardDO.setWxAmount(wxAmount.subtract(total).setScale(2, BigDecimal.ROUND_HALF_UP)); | ||||
|         if (total.compareTo(cashAmount) <= 0) { | ||||
|             cardDO.setCashAmount(cashAmount.subtract(total).setScale(2, BigDecimal.ROUND_HALF_UP)); | ||||
|         } else { | ||||
|             cardDO.setWxAmount(BigDecimal.ZERO); | ||||
|             BigDecimal total1 = total.subtract(wxAmount).setScale(2, BigDecimal.ROUND_HALF_UP); | ||||
|             if (total1.compareTo(cashAmount) <= 0) { | ||||
|                 cardDO.setCashAmount(cashAmount.subtract(total1).setScale(2, BigDecimal.ROUND_HALF_UP)); | ||||
|             cardDO.setCashAmount(BigDecimal.ZERO); | ||||
|             BigDecimal total1 = total.subtract(cashAmount).setScale(2, BigDecimal.ROUND_HALF_UP); | ||||
|             if (total1.compareTo(giftAmount) <= 0) { | ||||
|                 cardDO.setGiftAmount(giftAmount.subtract(total1).setScale(2, BigDecimal.ROUND_HALF_UP)); | ||||
|             } else { | ||||
|                 cardDO.setCashAmount(BigDecimal.ZERO); | ||||
|                 BigDecimal total2 = total1.subtract(cashAmount).setScale(2, BigDecimal.ROUND_HALF_UP); | ||||
|                 cardDO.setGiftAmount(giftAmount.subtract(total2).setScale(2, BigDecimal.ROUND_HALF_UP)); | ||||
|                 cardDO.setGiftAmount(BigDecimal.ZERO); | ||||
|                 BigDecimal total2 = total1.subtract(giftAmount).setScale(2, BigDecimal.ROUND_HALF_UP); | ||||
|                 cardDO.setWxAmount(wxAmount.subtract(total2).setScale(2, BigDecimal.ROUND_HALF_UP)); | ||||
|             } | ||||
|         } | ||||
|  | ||||
| @ -221,4 +221,21 @@ public class StoreOrderServiceImpl implements StoreOrderService { | ||||
|  | ||||
|         return cardDO.getMoney(); | ||||
|     } | ||||
|  | ||||
|     public void test(){ | ||||
|         //计算金额 | ||||
|         //if (total.compareTo(wxAmount) <= 0) { | ||||
|         //    cardDO.setWxAmount(wxAmount.subtract(total).setScale(2, BigDecimal.ROUND_HALF_UP)); | ||||
|         //} else { | ||||
|         //    cardDO.setWxAmount(BigDecimal.ZERO); | ||||
|         //    BigDecimal total1 = total.subtract(wxAmount).setScale(2, BigDecimal.ROUND_HALF_UP); | ||||
|         //    if (total1.compareTo(cashAmount) <= 0) { | ||||
|         //        cardDO.setCashAmount(cashAmount.subtract(total1).setScale(2, BigDecimal.ROUND_HALF_UP)); | ||||
|         //    } else { | ||||
|         //        cardDO.setCashAmount(BigDecimal.ZERO); | ||||
|         //        BigDecimal total2 = total1.subtract(cashAmount).setScale(2, BigDecimal.ROUND_HALF_UP); | ||||
|         //        cardDO.setGiftAmount(giftAmount.subtract(total2).setScale(2, BigDecimal.ROUND_HALF_UP)); | ||||
|         //    } | ||||
|         //} | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user
	 zengtao01
					zengtao01