ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/AgreementController.java
New file @@ -0,0 +1,20 @@ package com.ruoyi.system.controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; /** * <p> * 前端控制器 * </p> * * @author mitao * @since 2024-05-21 */ @RestController @RequestMapping("/agreement") public class AgreementController { } ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/CustomConfigController.java
New file @@ -0,0 +1,20 @@ package com.ruoyi.system.controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; /** * <p> * 系统配置 前端控制器 * </p> * * @author mitao * @since 2024-05-21 */ @RestController @RequestMapping("/custom-config") public class CustomConfigController { } ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/Agreement.java
New file @@ -0,0 +1,56 @@ package com.ruoyi.system.domain; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import java.io.Serializable; import java.time.LocalDateTime; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; /** * <p> * * </p> * * @author mitao * @since 2024-05-21 */ @Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) @TableName("t_agreement") @ApiModel(value = "Agreement对象", description = "") public class Agreement implements Serializable { private static final long serialVersionUID = 1L; @TableId(value = "id", type = IdType.AUTO) private Long id; @ApiModelProperty(value = "协议类型 1=用户协议 2=隐私协议") private Integer agreementType; @ApiModelProperty(value = "协议内容") private String agreementContent; @ApiModelProperty(value = "创建者") private String createBy; @ApiModelProperty(value = "创建时间") private LocalDateTime createTime; @ApiModelProperty(value = "更新者") private String updateBy; @ApiModelProperty(value = "更新时间") private LocalDateTime updateTime; @ApiModelProperty(value = "删除标志(0代表存在 1代表删除)") private Integer delFlag; } ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/CustomConfig.java
New file @@ -0,0 +1,57 @@ package com.ruoyi.system.domain; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import java.io.Serializable; import java.time.LocalDateTime; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; /** * <p> * 系统配置 * </p> * * @author mitao * @since 2024-05-21 */ @Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) @TableName("t_custom_config") @ApiModel(value = "CustomConfig对象", description = "系统配置") public class CustomConfig implements Serializable { private static final long serialVersionUID = 1L; @ApiModelProperty(value = "配置id") @TableId(value = "config_id", type = IdType.AUTO) private Integer configId; @ApiModelProperty(value = "删除标记") private Integer delFlag; @ApiModelProperty(value = "配置类型") private Integer configType; @ApiModelProperty(value = "配置键") private String configKey; @ApiModelProperty(value = "配置名") private String configName; @ApiModelProperty(value = "配置值") private String configValue; @ApiModelProperty(value = "创建时间") private LocalDateTime createTime; @ApiModelProperty(value = "更新时间") private LocalDateTime updateTime; } ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/listener/RedisListener.java
New file @@ -0,0 +1,89 @@ package com.ruoyi.system.listener; import com.ruoyi.common.core.utils.DateUtils; import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.system.api.constants.DelayTaskEnum; import java.util.Date; import lombok.extern.log4j.Log4j2; import org.springframework.data.redis.connection.Message; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.ValueOperations; import org.springframework.data.redis.listener.KeyExpirationEventMessageListener; import org.springframework.data.redis.listener.RedisMessageListenerContainer; import org.springframework.stereotype.Component; /** * @author mitao * @date 2024/5/22 */ @Log4j2 @Component public class RedisListener extends KeyExpirationEventMessageListener { private RedisTemplate<String, Object> redisTemplate; public RedisListener(RedisMessageListenerContainer listenerContainer, RedisTemplate redisTemplate) { super(listenerContainer); this.redisTemplate=redisTemplate; } @Override public void onMessage(Message message, byte[] pattern) { // 用户做自己的业务处理即可,注意message.toString()可以获取失效的key String expiredKey = message.toString(); log.info("RedisListener key={}", expiredKey); String time= DateUtils.dateTime(new Date()); try { if(StringUtils.isNotBlank(expiredKey)){ if(expiredKey.contains("-")){ String[] split = expiredKey.split("-"); String operation=split[0]; if(DelayTaskEnum.SECKILL_START_TASK.getCode().equals(operation)){ //自动开始任务 }else if(DelayTaskEnum.SECKILL_END_TASK.getCode().equals(operation)){ //自动结束任务 }else if(DelayTaskEnum.GROUP_PURCHASES_START_TASK.getCode().equals(operation)){ //自动开始任务 } else if(DelayTaskEnum.GROUP_PURCHASES_END_TASK.getCode().equals(operation)){ //自动结束任务 }else if(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode().equals(operation)){ //自动结束任务 } //删除失效的key redisTemplate.delete(expiredKey); } } }catch (Exception e){ e.printStackTrace(); } } public <T> T getAndSet(final String key, T value){ T oldValue=null; try { ValueOperations<String, Object> operations = redisTemplate.opsForValue(); oldValue =(T) operations.getAndSet(key, value); } catch (Exception e) { e.printStackTrace(); } return oldValue; } //延时任务表 private void autoStartActivity(String activityId){ log.info("autoStartActivity scheduler task is running :" + activityId); } private void autoEndActivity(String activityId){ log.info("autoEndActivity scheduler task is running :" + activityId); } private void autoCancelOrder(String orderId){ log.info("autoCancelOrder scheduler task is running :" + orderId); } } ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/AgreementMapper.java
New file @@ -0,0 +1,16 @@ package com.ruoyi.system.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.system.domain.Agreement; /** * <p> * Mapper 接口 * </p> * * @author mitao * @since 2024-05-21 */ public interface AgreementMapper extends BaseMapper<Agreement> { } ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/CustomConfigMapper.java
New file @@ -0,0 +1,16 @@ package com.ruoyi.system.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.system.domain.CustomConfig; /** * <p> * 系统配置 Mapper 接口 * </p> * * @author mitao * @since 2024-05-21 */ public interface CustomConfigMapper extends BaseMapper<CustomConfig> { } ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/DelayTaskMapper.java
New file @@ -0,0 +1,16 @@ package com.ruoyi.system.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.system.api.domain.DelayTask; /** * <p> * Mapper 接口 * </p> * * @author jqs * @since 2023-05-29 */ public interface DelayTaskMapper extends BaseMapper<DelayTask> { } ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/IAgreementService.java
New file @@ -0,0 +1,16 @@ package com.ruoyi.system.service; import com.ruoyi.system.domain.pojo.Agreement; import com.baomidou.mybatisplus.extension.service.IService; /** * <p> * 服务类 * </p> * * @author mitao * @since 2024-05-21 */ public interface IAgreementService extends IService<Agreement> { } ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ICustomConfigService.java
New file @@ -0,0 +1,16 @@ package com.ruoyi.system.service; import com.ruoyi.system.domain.pojo.CustomConfig; import com.baomidou.mybatisplus.extension.service.IService; /** * <p> * 系统配置 服务类 * </p> * * @author mitao * @since 2024-05-21 */ public interface ICustomConfigService extends IService<CustomConfig> { } ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/AgreementServiceImpl.java
New file @@ -0,0 +1,20 @@ package com.ruoyi.system.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.system.domain.Agreement; import com.ruoyi.system.mapper.AgreementMapper; import com.ruoyi.system.service.IAgreementService; import org.springframework.stereotype.Service; /** * <p> * 服务实现类 * </p> * * @author mitao * @since 2024-05-21 */ @Service public class AgreementServiceImpl extends ServiceImpl<AgreementMapper, Agreement> implements IAgreementService { } ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/CustomConfigServiceImpl.java
New file @@ -0,0 +1,20 @@ package com.ruoyi.system.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.system.domain.CustomConfig; import com.ruoyi.system.mapper.CustomConfigMapper; import com.ruoyi.system.service.ICustomConfigService; import org.springframework.stereotype.Service; /** * <p> * 系统配置 服务实现类 * </p> * * @author mitao * @since 2024-05-21 */ @Service public class CustomConfigServiceImpl extends ServiceImpl<CustomConfigMapper, CustomConfig> implements ICustomConfigService { } ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/AgreementMapper.xml
New file @@ -0,0 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.ruoyi.system.mapper.AgreementMapper"> </mapper> ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/CustomConfigMapper.xml
New file @@ -0,0 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.ruoyi.system.mapper.CustomConfigMapper"> </mapper>