UserCouponServiceImpl.java 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. package com.example.demo.coupon.service.impl;
  2. import cn.hutool.core.util.IdUtil;
  3. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  4. import com.example.demo.common.utils.TokenUtils;
  5. import com.example.demo.coupon.dao.CouponMapper;
  6. import com.example.demo.coupon.domain.Coupon;
  7. import com.example.demo.coupon.domain.UserCoupon;
  8. import com.example.demo.coupon.dto.UserCouponDto;
  9. import com.example.demo.coupon.service.UserCouponService;
  10. import com.example.demo.coupon.dao.UserCouponMapper;
  11. import com.example.demo.user.vo.ResultVo;
  12. import org.springframework.beans.factory.annotation.Autowired;
  13. import org.springframework.stereotype.Service;
  14. import java.util.Calendar;
  15. import java.util.Date;
  16. /**
  17. * @author 徐乐
  18. * @description 针对表【user_coupon(用户优惠券记录表)】的数据库操作Service实现
  19. * @createDate 2025-06-17 18:40:22
  20. */
  21. @Service
  22. public class UserCouponServiceImpl extends ServiceImpl<UserCouponMapper, UserCoupon>
  23. implements UserCouponService{
  24. @Autowired
  25. private CouponMapper couponMapper;
  26. @Autowired
  27. private UserCouponMapper userCouponMapper;
  28. @Override
  29. public ResultVo userGetCoupon(UserCouponDto dto, String token) {
  30. Long userId = TokenUtils.getUserId(token);
  31. if (userId==null){
  32. return ResultVo.error(101,"请先登录");
  33. }
  34. UserCoupon userCoupon = new UserCoupon();
  35. userCoupon.setId(IdUtil.getSnowflake().nextId());
  36. userCoupon.setUserId(userId);
  37. Coupon coupon = couponMapper.selectById(dto.getCouponId());
  38. userCoupon.setCouponId(coupon.getId());
  39. userCoupon.setCouponName(coupon.getCouponName());
  40. userCoupon.setAmount(coupon.getAmount());
  41. coupon.setRemainCount(coupon.getRemainCount()-1);
  42. userCoupon.setObtainTime(new Date());
  43. userCoupon.setUseTime(null);
  44. // 处理 endTime:基于 startTime 延长 7 天
  45. Date startTime = userCoupon.getObtainTime();
  46. Calendar calendar = Calendar.getInstance();
  47. calendar.setTime(startTime);
  48. // 关键:Calendar.DAY_OF_MONTH 代表日期字段,加 7 天
  49. calendar.add(Calendar.DAY_OF_MONTH, 7);
  50. Date endTime = calendar.getTime();
  51. userCoupon.setExpireTime(endTime);
  52. userCouponMapper.insert(userCoupon);
  53. couponMapper.updateById(coupon);
  54. return ResultVo.success("用户领取优惠券成功");
  55. }
  56. }