更改扣款顺序,添加菜品接口
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