Cui Zhi Feng
2024-09-03 2ee5067c3a0e160490f5cdefbb0b10600511336b
添加购物车 重复bug
已修改2个文件
25 ■■■■■ 文件已修改
src/main/java/com/mzl/flower/service/payment/OrderService.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mzl/flower/service/payment/RedisLockService.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mzl/flower/service/payment/OrderService.java
@@ -131,8 +131,18 @@
    @Autowired
    private OrderItemCheckMapper orderItemCheckMapper;
    @Autowired
    private RedisLockService lockService;
    public void changeFlower2Cart(CartSaveDTO dto) {
        String userId = SecurityUtils.getUserId();
        String key = userId + "_" + dto.getId();
        boolean lock = lockService.getObjectLock(RedisLockService.LOCK_KEY_CART_, key);
        if(!lock){
            return;
        }
        try {
        Cart c = cartMapper.selectOne(new QueryWrapper<Cart>()
                .eq("create_by", userId).eq("flower_id", dto.getId()));
        if (c == null) {
@@ -154,10 +164,21 @@
                cartMapper.updateById(c);
            }
        }
        } finally {
            lockService.releaseObjectLock(RedisLockService.LOCK_KEY_CART_, key);
        }
    }
    public void saveFlower2Cart(CartSaveDTO dto) {
        String userId = SecurityUtils.getUserId();
        String key = userId + "_" + dto.getId();
        boolean lock = lockService.getObjectLock(RedisLockService.LOCK_KEY_CART_, key);
        if(!lock){
            return;
        }
        try {
        Cart c = cartMapper.selectOne(new QueryWrapper<Cart>()
                .eq("create_by", userId).eq("flower_id", dto.getId()));
        if (c == null) {
@@ -173,6 +194,9 @@
            cartMapper.updateById(c);
        }
        } finally {
            lockService.releaseObjectLock(RedisLockService.LOCK_KEY_CART_, key);
        }
    }
    public void deleteFlower4Cart(Long flowerId) {
src/main/java/com/mzl/flower/service/payment/RedisLockService.java
@@ -16,6 +16,7 @@
    private RedisTemplate<String, String> redisTemplate;
    public static final String LOCK_KEY_PAYMENT_NOTIFY_ = "LOCK_KEY_PAYMENT_NOTIFY_";
    public static final String LOCK_KEY_CART_ = "LOCK_KEY_CART_";
    public boolean getObjectLock(String key, String objectId){
        String kk = key + objectId;