From c84cf56f6d2181f766bf1d17dabc46511473ebb8 Mon Sep 17 00:00:00 2001
From: cloudroam <cloudroam>
Date: 星期四, 05 九月 2024 14:38:01 +0800
Subject: [PATCH] fix:合伙人加价-过滤掉加价为0或者为空的信息
---
src/main/java/com/mzl/flower/service/payment/OrderService.java | 93 +++++++++++++++++++++++++++++++---------------
1 files changed, 63 insertions(+), 30 deletions(-)
diff --git a/src/main/java/com/mzl/flower/service/payment/OrderService.java b/src/main/java/com/mzl/flower/service/payment/OrderService.java
index 75609cc..71d5a97 100644
--- a/src/main/java/com/mzl/flower/service/payment/OrderService.java
+++ b/src/main/java/com/mzl/flower/service/payment/OrderService.java
@@ -40,6 +40,7 @@
import com.mzl.flower.mapper.system.UserWechatMapper;
import com.mzl.flower.mapper.warehouse.WarehouseLocationMapper;
import com.mzl.flower.service.BaseService;
+import com.mzl.flower.service.coupon.CouponRecordService;
import com.mzl.flower.service.flower.FlowerService;
import com.mzl.flower.service.menber.MemberGrowthRecordService;
import com.mzl.flower.service.point.CustomerPointService;
@@ -151,47 +152,74 @@
@Autowired
private PointGoodsService pointGoodsService;
+ @Autowired
+ private RedisLockService lockService;
+
+ @Autowired
+ private CouponRecordService couponRecordService;
+
public void changeFlower2Cart(CartSaveDTO dto) {
String userId = SecurityUtils.getUserId();
- Cart c = cartMapper.selectOne(new QueryWrapper<Cart>()
- .eq("create_by", userId).eq("flower_id", dto.getId()));
- if (c == null) {
- if (dto.getNum() <= 0) {
- throw new ValidationException("数量不能小于等于0,请刷新页面重试");
- }
- c = new Cart();
- c.setFlowerId(dto.getId());
- c.setNum(dto.getNum());
- c.create(userId);
+ String key = userId + "_" + dto.getId();
+ boolean lock = lockService.getObjectLock(RedisLockService.LOCK_KEY_CART_, key);
+ if(!lock){
+ return;
+ }
- cartMapper.insert(c);
- } else {
- c.setNum(c.getNum() + dto.getNum());
- c.update(userId);
- if (c.getNum() <= 0) {
- cartMapper.deleteById(c.getId());
+ try {
+ Cart c = cartMapper.selectOne(new QueryWrapper<Cart>()
+ .eq("create_by", userId).eq("flower_id", dto.getId()));
+ if (c == null) {
+ if (dto.getNum() <= 0) {
+ throw new ValidationException("数量不能小于等于0,请刷新页面重试");
+ }
+ c = new Cart();
+ c.setFlowerId(dto.getId());
+ c.setNum(dto.getNum());
+ c.create(userId);
+
+ cartMapper.insert(c);
} else {
- cartMapper.updateById(c);
+ c.setNum(c.getNum() + dto.getNum());
+ c.update(userId);
+ if (c.getNum() <= 0) {
+ cartMapper.deleteById(c.getId());
+ } else {
+ cartMapper.updateById(c);
+ }
}
+ } finally {
+ lockService.releaseObjectLock(RedisLockService.LOCK_KEY_CART_, key);
}
}
public void saveFlower2Cart(CartSaveDTO dto) {
String userId = SecurityUtils.getUserId();
- Cart c = cartMapper.selectOne(new QueryWrapper<Cart>()
- .eq("create_by", userId).eq("flower_id", dto.getId()));
- if (c == null) {
- c = new Cart();
- c.setFlowerId(dto.getId());
- c.setNum(dto.getNum());
- c.create(userId);
- cartMapper.insert(c);
- } else {
- c.setNum(dto.getNum());
- c.update(userId);
+ String key = userId + "_" + dto.getId();
+ boolean lock = lockService.getObjectLock(RedisLockService.LOCK_KEY_CART_, key);
+ if(!lock){
+ return;
+ }
- cartMapper.updateById(c);
+ try {
+ Cart c = cartMapper.selectOne(new QueryWrapper<Cart>()
+ .eq("create_by", userId).eq("flower_id", dto.getId()));
+ if (c == null) {
+ c = new Cart();
+ c.setFlowerId(dto.getId());
+ c.setNum(dto.getNum());
+ c.create(userId);
+
+ cartMapper.insert(c);
+ } else {
+ c.setNum(dto.getNum());
+ c.update(userId);
+
+ cartMapper.updateById(c);
+ }
+ } finally {
+ lockService.releaseObjectLock(RedisLockService.LOCK_KEY_CART_, key);
}
}
@@ -536,7 +564,9 @@
private CouponRecordDO useCouponRecord(String orderId, BigDecimal amount, String couponRecordId){
if(StringUtils.isNotEmpty(couponRecordId)){
- //TODO 优惠券使用和验证,如果不符合使用条件需要抛出异常。需调用优惠券使用方法
+ //优惠券使用和验证,如果不符合使用条件需要抛出异常。需调用优惠券使用方法
+ couponRecordService.useCoupon(couponRecordId, orderId, amount);
+ return couponRecordService.getCouponRecordById(couponRecordId);
}
return null;
@@ -958,6 +988,9 @@
if(checkList != null && checkList.size() > 0){
for(OrderItemCheck c : checkList){
+ if(Constants.CHECK_TYPE.replace.name().equals(c.getType())){
+ continue;
+ }
totalAmount = totalAmount.subtract(getAmount(c.getDeductAmount()));
}
}
--
Gitblit v1.9.3