peng
1 天以前 9b9e43adee86384abdcbc50af29c7ba68b818fb7
framework/src/main/java/cn/lili/modules/lmk/service/impl/StoreCouponServiceImpl.java
@@ -3,6 +3,7 @@
import cn.lili.common.exception.ServiceException;
import cn.lili.modules.lmk.domain.entity.CouponVirtual;
import cn.lili.modules.lmk.domain.entity.StoreCouponSingle;
import cn.lili.modules.lmk.domain.query.StoreCouponSingleQuery;
import cn.lili.modules.lmk.enums.general.GenerateCouponStausEnum;
import cn.lili.modules.lmk.enums.general.StoreCouponStausEnum;
import cn.lili.modules.lmk.service.StoreCouponSingleService;
@@ -15,6 +16,7 @@
import cn.lili.modules.lmk.mapper.StoreCouponMapper;
import cn.lili.modules.lmk.service.StoreCouponService;
import cn.lili.base.Result;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import cn.lili.modules.lmk.domain.form.StoreCouponForm;
@@ -33,6 +35,7 @@
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
/**
@@ -108,8 +111,12 @@
     */
    @Override
    public Result page(StoreCouponQuery query) {
        IPage<StoreCouponVO> page = PageUtil.getPage(query, StoreCouponVO.class);
        baseMapper.getPage(page, query);
        IPage<StoreCoupon> page = PageUtil.getPage(query, StoreCoupon.class);
        LambdaQueryWrapper<StoreCoupon> wrapper = Wrappers.lambdaQuery();
        wrapper.eq(Objects.nonNull(query.getStoreId()), StoreCoupon::getStoreId, query.getStoreId());
        wrapper.eq(StringUtils.isNotBlank(query.getStatus()), StoreCoupon::getStatus, query.getStatus());
        wrapper.eq(StringUtils.isNotBlank(query.getGenerateStatus()), StoreCoupon::getGenerateStatus, query.getGenerateStatus());
        this.page(page, wrapper);
        return Result.ok().data(page.getRecords()).total(page.getTotal());
    }
@@ -159,7 +166,7 @@
    public Result addStoreCoupon(StoreCouponForm storeCoupon) {
        StoreCoupon entity = StoreCouponForm.getEntityByForm(storeCoupon, null);
        entity.setStatus(StoreCouponStausEnum.ENABLE.name());
        entity.setCouponClaimNum(storeCoupon.getCouponNum());
        entity.setCouponClaimNum(0);
        entity.setGenerateStatus(GenerateCouponStausEnum.NOT_GENERATE.name());
        Coupon coupon = couponService.getById(entity.getCouponId());
        Integer publishNum = coupon.getPublishNum();
@@ -212,8 +219,20 @@
                        redissonLock.unlock();
                    }
                }
                @Override
                public void afterCompletion(int status) {
                    // 确保即使在事务回滚的情况下也能释放锁
                    if (redissonLock.isHeldByCurrentThread()) {
                        redissonLock.unlock();
                    }
                }
            });
        }
    }
    @Override
    public Result getPageByStoreCoupon(StoreCouponSingleQuery query){
        return storeCouponSingleService.pageByRefId(query);
    }
    private static StoreCouponSingle getStoreCouponSingle(StoreCoupon storeCoupon, int i) {
@@ -227,4 +246,22 @@
        storeCouponSingle.setCouponNo(String.format("%08d", i));
        return storeCouponSingle;
    }
    @Override
    public Result changeStatus(String id) {
        StoreCoupon storeCoupon = this.getById(id);
        if (storeCoupon == null) {
            throw new ServiceException("当前店铺优惠卷不存在");
        }
        String status = storeCoupon.getStatus();
        if (StoreCouponStausEnum.ENABLE.name().equals(status)) {
            storeCoupon.setStatus(StoreCouponStausEnum.DISABLE.name());
        }else if (StoreCouponStausEnum.DISABLE.name().equals(status)) {
            storeCoupon.setStatus(StoreCouponStausEnum.ENABLE.name());
        }else {
            throw new ServiceException("当前店铺优惠卷状态异常无法修改");
        }
        this.updateById(storeCoupon);
        return Result.ok();
    }
}