gongzuming
2024-09-19 b61182b5c602d0bb4af7c68cb51dbfa1eb5a755f
src/main/java/com/mzl/flower/service/point/PointGoodsService.java
@@ -19,6 +19,7 @@
import com.mzl.flower.mapper.point.PointGoodsRecordMapper;
import com.mzl.flower.service.BaseService;
import com.mzl.flower.service.payment.RedisLockService;
import com.mzl.flower.utils.DateUtils;
import com.mzl.flower.utils.UUIDGenerator;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
@@ -26,6 +27,7 @@
import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;
@Service
@@ -141,7 +143,7 @@
            if(!Constants.POINT_GOODS_STATUS.A.name().equals(p.getStatus())){
                throw new ValidationException("商品未上架");
            }
            if(p.getStock()< dto.getNum()){
            if(p.getStock() <=0 || p.getStock()< dto.getNum()){
                throw new ValidationException("商品库存不足");
            }
            CustomerPoint cp = customerPointMapper.selectOne(new LambdaQueryWrapper<CustomerPoint>()
@@ -163,6 +165,9 @@
            record.setCover(p.getCover());
            record.setRedeemCode(UUIDGenerator.getUUID());
            record.setStatus(Constants.POINT_GOODS_RECORD_STATUS.A.name());//未使用
            LocalDate expireDate = LocalDate.now().plusYears(1);
            String expireDateStr = DateUtils.toString(expireDate,"yyyy-MM-dd");
            record.setExpireTime(DateUtils.dateToLocalDateTime(expireDateStr,false));
            record.create(SecurityUtils.getUserId());
            pointGoodsRecordMapper.insert(record);
@@ -185,8 +190,6 @@
            //更新库存
            p.setStock(p.getStock()- dto.getNum());
            pointGoodsMapper.updateById(p);
        }catch (Exception e){
            throw new ValidationException("兑换失败");
        }finally {
            lockService.releaseObjectLock(key,"");
        }
@@ -215,6 +218,7 @@
        record.setOrderId(orderId);
        pointGoodsRecordMapper.updateById(record);
    }
    public void revertExchangeGoods(Long recordId) {
        PointGoodsRecord record = pointGoodsRecordMapper.selectById(recordId);
        if(record == null){
@@ -223,7 +227,7 @@
        if(!Constants.POINT_GOODS_RECORD_STATUS.U.name().equals(record.getStatus())){
            throw new ValidationException("兑换券未使用或过期");
        }
        if(!SecurityUtils.getUserId().equals(record.getUserId())){
        if(SecurityUtils.getUserId() != null && !SecurityUtils.getUserId().equals(record.getUserId())){
            throw new ValidationException("兑换券不属于当前用户");
        }
        record.setStatus(Constants.POINT_GOODS_RECORD_STATUS.A.name());