package cn.iocoder.yudao.module.aftersales.dal.redis.no; import cn.hutool.core.date.DatePattern; import cn.hutool.core.date.DateUtil; import cn.iocoder.yudao.module.aftersales.dal.redis.RedisKeyConstants; import jakarta.annotation.Resource; import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.stereotype.Repository; import java.time.Duration; import java.time.LocalDateTime; /** * 售后模块单号 Redis DAO */ @Repository public class AfterSaleNoRedisDAO { /** * 售后工单 {@link cn.iocoder.yudao.module.aftersales.dal.dataobject.ticket.AfterSaleTicketDO} */ public static final String TICKET_NO_PREFIX = "AS"; /** * 退货申请 {@link cn.iocoder.yudao.module.aftersales.dal.dataobject.returnobj.AfterSaleReturnDO} */ public static final String RETURN_NO_PREFIX = "RT"; @Resource private StringRedisTemplate stringRedisTemplate; /** * 生成序号,使用当前日期,格式为 {PREFIX} + yyyyMMdd + 6 位自增 * * @param prefix 前缀 * @return 序号 */ public String generate(String prefix) { String noPrefix = prefix + DateUtil.format(LocalDateTime.now(), DatePattern.PURE_DATE_PATTERN); String key = RedisKeyConstants.NO + noPrefix; Long no = stringRedisTemplate.opsForValue().increment(key); stringRedisTemplate.expire(key, Duration.ofDays(1L)); return noPrefix + String.format("%06d", no); } }