package cn.iocoder.yudao.module.research.dal.redis; import cn.hutool.core.date.DatePattern; import cn.hutool.core.date.DateUtil; import jakarta.annotation.Resource; import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.stereotype.Repository; import java.time.Duration; import java.time.LocalDateTime; /** * Research 编号 Redis DAO * * @author 超级管理员 */ @Repository public class ResearchNoRedisDAO { /** * 课题指南 {@link cn.iocoder.yudao.module.research.dal.dataobject.guideline.ResearchGuidelineDO} */ public static final String GUIDELINE_NO_PREFIX = "GL"; /** * 课题申报书 {@link cn.iocoder.yudao.module.research.dal.dataobject.application.ResearchApplicationDO} */ public static final String APPLICATION_NO_PREFIX = "SB"; /** * 立项编号(课题申报书审批通过后生成) */ public static final String PROJECT_NO_PREFIX = "LX"; @Resource private StringRedisTemplate stringRedisTemplate; 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); } }