| | |
| | | import cn.lili.modules.lmk.domain.entity.StoreCoupon; |
| | | import cn.lili.modules.lmk.domain.entity.StoreCouponSingle; |
| | | import cn.lili.modules.lmk.enums.general.PrizeStatusEnum; |
| | | import cn.lili.modules.lmk.enums.general.StoreCouponStausEnum; |
| | | import cn.lili.modules.lmk.service.StoreCouponService; |
| | | import cn.lili.modules.lmk.service.StoreCouponSingleService; |
| | | import cn.lili.modules.order.order.entity.enums.ClaimStatusEnum; |
| | |
| | | import cn.lili.rocketmq.RocketmqSendCallbackBuilder; |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import cn.lili.modules.lmk.domain.entity.StoreCouponClaimRecord; |
| | | import cn.lili.modules.lmk.mapper.StoreCouponClaimRecordMapper; |
| | |
| | | storeCouponSingle.setClaimUserName(nickName); |
| | | storeCouponSingleService.updateById(storeCouponSingle); |
| | | //校验是否在单品卷类领取过 |
| | | |
| | | LambdaQueryWrapper<StoreCoupon> storeCoupQuery = Wrappers.<StoreCoupon>lambdaQuery() |
| | | .eq(StoreCoupon::getId, storeCouponSingle.getStoreCoupRef()).last("FOR UPDATE"); |
| | | StoreCoupon storeCoupon = storeCouponService.getOne(storeCoupQuery); |
| | | if (storeCoupon == null) { |
| | | throw new ServiceException("当前店铺优惠卷不存在"); |
| | | } |
| | | if (!StoreCouponStausEnum.ENABLE.name().equals(storeCoupon.getStatus())) { |
| | | throw new ServiceException("当前店铺优惠卷状态异常"); |
| | | } |
| | | //领取对应的优惠卷写入记录 |
| | | memberCouponService.receiveCoupon(storeCouponSingle.getCouponId(),userId , nickName); |
| | | StoreCouponClaimRecord storeCouponClaimRecord = new StoreCouponClaimRecord(); |
| | | storeCouponClaimRecord.setCouponId(storeCouponSingle.getCouponId()); |
| | | storeCouponClaimRecord.setCouponName(storeCouponSingle.getCouponName()); |
| | | storeCouponClaimRecord.setStoreId(storeCouponSingle.getStoreId()); |
| | | storeCouponClaimRecord.setStoreName(storeCouponSingle.getStoreName()); |
| | | storeCouponClaimRecord.setUserId(userId); |
| | | StoreCouponClaimRecord storeCouponClaimRecord = getStoreCouponClaimRecord(storeCouponSingle, userId); |
| | | this.save(storeCouponClaimRecord); |
| | | LambdaUpdateWrapper<StoreCoupon> updateStoreCoupon = Wrappers.<StoreCoupon>lambdaUpdate().eq(StoreCoupon::getId, storeCoupon.getId()) |
| | | .set(StoreCoupon::getCouponClaimNum, storeCoupon.getCouponClaimNum() + 1) |
| | | .gt(StoreCoupon::getCouponClaimNum, storeCoupon.getCouponClaimNum() + 1); |
| | | boolean update = storeCouponService.update(updateStoreCoupon); |
| | | if (!update) { |
| | | throw new ServiceException("更新失败"); |
| | | } |
| | | //领取成功返回优惠卷id用于跳转购物使用 |
| | | return Result.ok().data(storeCouponSingle.getCouponId()); |
| | | |
| | |
| | | |
| | | } |
| | | } |
| | | |
| | | private static StoreCouponClaimRecord getStoreCouponClaimRecord(StoreCouponSingle storeCouponSingle, String userId) { |
| | | StoreCouponClaimRecord storeCouponClaimRecord = new StoreCouponClaimRecord(); |
| | | storeCouponClaimRecord.setCouponId(storeCouponSingle.getCouponId()); |
| | | storeCouponClaimRecord.setCouponName(storeCouponSingle.getCouponName()); |
| | | storeCouponClaimRecord.setStoreId(storeCouponSingle.getStoreId()); |
| | | storeCouponClaimRecord.setStoreName(storeCouponSingle.getStoreName()); |
| | | storeCouponClaimRecord.setUserId(userId); |
| | | storeCouponClaimRecord.setStoreCouponId(storeCouponSingle.getStoreCoupRef()); |
| | | return storeCouponClaimRecord; |
| | | } |
| | | } |