package com.example.demo.coupon.service.impl; import cn.hutool.core.util.IdUtil; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.example.demo.common.utils.TokenUtils; import com.example.demo.coupon.dao.CouponMapper; import com.example.demo.coupon.domain.Coupon; import com.example.demo.coupon.domain.UserCoupon; import com.example.demo.coupon.dto.UserCouponDto; import com.example.demo.coupon.service.UserCouponService; import com.example.demo.coupon.dao.UserCouponMapper; import com.example.demo.user.vo.ResultVo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.Calendar; import java.util.Date; /** * @author 徐乐 * @description 针对表【user_coupon(用户优惠券记录表)】的数据库操作Service实现 * @createDate 2025-06-17 18:40:22 */ @Service public class UserCouponServiceImpl extends ServiceImpl implements UserCouponService{ @Autowired private CouponMapper couponMapper; @Autowired private UserCouponMapper userCouponMapper; @Override public ResultVo userGetCoupon(UserCouponDto dto, String token) { Long userId = TokenUtils.getUserId(token); if (userId==null){ return ResultVo.error(101,"请先登录"); } UserCoupon userCoupon = new UserCoupon(); userCoupon.setId(IdUtil.getSnowflake().nextId()); userCoupon.setUserId(userId); Coupon coupon = couponMapper.selectById(dto.getCouponId()); userCoupon.setCouponId(coupon.getId()); userCoupon.setCouponName(coupon.getCouponName()); userCoupon.setAmount(coupon.getAmount()); coupon.setRemainCount(coupon.getRemainCount()-1); userCoupon.setObtainTime(new Date()); userCoupon.setUseTime(null); // 处理 endTime:基于 startTime 延长 7 天 Date startTime = userCoupon.getObtainTime(); Calendar calendar = Calendar.getInstance(); calendar.setTime(startTime); // 关键:Calendar.DAY_OF_MONTH 代表日期字段,加 7 天 calendar.add(Calendar.DAY_OF_MONTH, 7); Date endTime = calendar.getTime(); userCoupon.setExpireTime(endTime); userCouponMapper.insert(userCoupon); couponMapper.updateById(coupon); return ResultVo.success("用户领取优惠券成功"); } }