CouponReceiveServiceImpl.java 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. package com.ylx.massage.service.impl;
  2. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  3. import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
  4. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  5. import com.ylx.massage.domain.Coupon;
  6. import com.ylx.massage.domain.vo.CouponReceiveVo;
  7. import com.ylx.massage.mapper.CouponReceiveMapper;
  8. import com.ylx.massage.domain.CouponReceive;
  9. import com.ylx.massage.service.CouponReceiveService;
  10. import com.ylx.massage.service.CouponService;
  11. import com.ylx.massage.utils.DateTimeUtils;
  12. import org.springframework.stereotype.Service;
  13. import org.springframework.transaction.annotation.Transactional;
  14. import javax.annotation.Resource;
  15. import java.util.Date;
  16. import java.util.List;
  17. import java.util.stream.Collectors;
  18. /**
  19. * 优惠券领取表(CouponReceive)表服务实现类
  20. *
  21. * @author makejava
  22. * @since 2024-05-14 11:25:45
  23. */
  24. @Service("couponReceiveService")
  25. public class CouponReceiveServiceImpl extends ServiceImpl<CouponReceiveMapper, CouponReceive> implements CouponReceiveService {
  26. @Resource
  27. private CouponService couponService;
  28. @Resource
  29. private CouponReceiveMapper couponReceiveMapper;
  30. @Override
  31. public Coupon submit(CouponReceive couponReceive) {
  32. LambdaQueryWrapper<CouponReceive> queryWrapper = new LambdaQueryWrapper<>();
  33. Coupon coupon = couponService.getById(couponReceive.getCouponId());
  34. if (coupon == null) {
  35. return null;
  36. }
  37. queryWrapper.eq(CouponReceive::getOpenid, couponReceive.getOpenid()).eq(CouponReceive::getCouponId, couponReceive.getCouponId());
  38. //限制没人只能领x张
  39. List<CouponReceive> one = this.list(queryWrapper);
  40. if (coupon.getUserLimit() <= one.size()) {
  41. return null;
  42. }
  43. couponReceive.setExpirationTime(DateTimeUtils.addDays(new Date(), coupon.getTermDays()));
  44. this.save(couponReceive);
  45. return coupon;
  46. }
  47. @Override
  48. public List<CouponReceiveVo> getByOpenId(String openid) {
  49. return couponReceiveMapper.getByOpenId(openid);
  50. }
  51. @Override
  52. @Transactional(rollbackFor = Exception.class)
  53. public void removeCoupons(List<CouponReceiveVo> coupons) {
  54. boolean b = this.removeByIds(coupons.stream().map(CouponReceiveVo::getId).collect(Collectors.toList()));
  55. //使用数量+1
  56. coupons.forEach(coup -> {
  57. UpdateWrapper<Coupon> wrapper = new UpdateWrapper<>();
  58. wrapper.lambda().eq(Coupon::getId, coup.getCouponId());
  59. wrapper.setSql(" used_num = used_num + " + 1);
  60. couponService.update(wrapper);
  61. });
  62. }
  63. }