diff --git a/sql/yshop2.1升级sql.txt b/sql/yshop2.1升级sql.txt index f1c5dd19..4b99ab42 100644 --- a/sql/yshop2.1升级sql.txt +++ b/sql/yshop2.1升级sql.txt @@ -25,4 +25,5 @@ ALTER TABLE `yx_store_seckill` ADD COLUMN `time_id` int(10) UNSIGNED NULL DEFAULT 0 COMMENT '时间段id' AFTER `start_time_date` ALTER TABLE `yx_store_category` -ADD COLUMN `is_del` tinyint(1) UNSIGNED NULL DEFAULT 0 COMMENT '删除状态' AFTER `add_time` \ No newline at end of file +ADD COLUMN `is_del` tinyint(1) UNSIGNED NULL DEFAULT 0 COMMENT '删除状态' AFTER `add_time` + diff --git a/sql/数据库说明.txt b/sql/数据库说明.txt index a3953b9c..efa0c8cf 100644 --- a/sql/数据库说明.txt +++ b/sql/数据库说明.txt @@ -1,3 +1,5 @@ 新项目 直接导入yshop2.1.sql即可 2.0升级到2.1,直接把yshop2.1升级sql.txt里面sql语句运行即可 +2.0.1:yx_cache表修改为yx_wechat_menu表 + diff --git a/yshop-api/src/main/java/co/yixiang/config/RedisListenerConfig.java b/yshop-api/src/main/java/co/yixiang/config/RedisListenerConfig.java index f74b2e5a..549b5679 100644 --- a/yshop-api/src/main/java/co/yixiang/config/RedisListenerConfig.java +++ b/yshop-api/src/main/java/co/yixiang/config/RedisListenerConfig.java @@ -10,6 +10,7 @@ package co.yixiang.config; import cn.hutool.core.util.StrUtil; import co.yixiang.listener.RedisKeyExpirationListener; +import co.yixiang.modules.activity.service.YxStorePinkService; import co.yixiang.modules.order.service.YxStoreOrderService; import lombok.AllArgsConstructor; import org.springframework.context.annotation.Bean; @@ -32,6 +33,7 @@ public class RedisListenerConfig { private final RedisTemplate redisTemplate; private final RedisConfigProperties redisConfigProperties; private final YxStoreOrderService storeOrderService; + private final YxStorePinkService storePinkService; @Bean RedisMessageListenerContainer container(RedisConnectionFactory factory) { @@ -39,7 +41,7 @@ public class RedisListenerConfig { RedisMessageListenerContainer container = new RedisMessageListenerContainer(); container.setConnectionFactory(factory); container.addMessageListener(new RedisKeyExpirationListener(redisTemplate,redisConfigProperties - ,storeOrderService), new PatternTopic(topic)); + ,storeOrderService,storePinkService), new PatternTopic(topic)); return container; } } diff --git a/yshop-api/src/main/java/co/yixiang/listener/RedisKeyExpirationListener.java b/yshop-api/src/main/java/co/yixiang/listener/RedisKeyExpirationListener.java index 8c1b57a7..ef0f2f4c 100644 --- a/yshop-api/src/main/java/co/yixiang/listener/RedisKeyExpirationListener.java +++ b/yshop-api/src/main/java/co/yixiang/listener/RedisKeyExpirationListener.java @@ -11,9 +11,12 @@ package co.yixiang.listener; import cn.hutool.core.util.StrUtil; import co.yixiang.constant.ShopConstants; import co.yixiang.config.RedisConfigProperties; +import co.yixiang.modules.activity.entity.YxStorePink; +import co.yixiang.modules.activity.service.YxStorePinkService; import co.yixiang.modules.order.entity.YxStoreOrder; import co.yixiang.modules.order.service.YxStoreOrderService; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import lombok.extern.slf4j.Slf4j; import org.springframework.data.redis.connection.Message; import org.springframework.data.redis.connection.MessageListener; @@ -33,13 +36,16 @@ public class RedisKeyExpirationListener implements MessageListener { private RedisTemplate redisTemplate; private RedisConfigProperties redisConfigProperties; private YxStoreOrderService storeOrderService; + private YxStorePinkService storePinkService; public RedisKeyExpirationListener(RedisTemplate redisTemplate, RedisConfigProperties redisConfigProperties, - YxStoreOrderService storeOrderService){ + YxStoreOrderService storeOrderService, + YxStorePinkService storePinkService){ this.redisTemplate = redisTemplate; this.redisConfigProperties = redisConfigProperties; this.storeOrderService = storeOrderService; + this.storePinkService = storePinkService; } @Override public void onMessage(Message message, byte[] bytes) { @@ -75,6 +81,21 @@ public class RedisKeyExpirationListener implements MessageListener { log.info("订单id:{},自动收货成功",body); } } + + //拼团过期取消 + if(body.contains(ShopConstants.REDIS_PINK_CANCEL_KEY)) { + body = body.replace(ShopConstants.REDIS_PINK_CANCEL_KEY, ""); + log.info("body:{}",body); + String pinkId = body; + YxStorePink storePink = storePinkService.getOne(Wrappers.lambdaQuery() + .eq(YxStorePink::getId,pinkId) + .eq(YxStorePink::getStatus,1).eq(YxStorePink::getIsRefund,0)); + //取消拼团 + if(storePink != null){ + storePinkService.removePink(storePink.getUid(),storePink.getCid(),storePink.getId()); + log.info("拼团订单id:{},未在规定时间完成取消成功",body); + } + } } } diff --git a/yshop-api/src/main/java/co/yixiang/modules/activity/service/impl/YxStorePinkServiceImpl.java b/yshop-api/src/main/java/co/yixiang/modules/activity/service/impl/YxStorePinkServiceImpl.java index c074e195..f92b1437 100644 --- a/yshop-api/src/main/java/co/yixiang/modules/activity/service/impl/YxStorePinkServiceImpl.java +++ b/yshop-api/src/main/java/co/yixiang/modules/activity/service/impl/YxStorePinkServiceImpl.java @@ -10,8 +10,10 @@ package co.yixiang.modules.activity.service.impl; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; import co.yixiang.common.service.impl.BaseServiceImpl; import co.yixiang.common.web.vo.Paging; +import co.yixiang.constant.ShopConstants; import co.yixiang.exception.ErrorRequestException; import co.yixiang.modules.activity.entity.YxStorePink; import co.yixiang.modules.activity.mapper.YxStoreCombinationMapper; @@ -35,16 +37,19 @@ import co.yixiang.utils.OrderUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.OrderItem; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import lombok.AllArgsConstructor; import lombok.Setter; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.io.Serializable; import java.util.*; +import java.util.concurrent.TimeUnit; /** @@ -72,6 +77,9 @@ public class YxStorePinkServiceImpl extends BaseServiceImpl redisTemplate; + @Autowired private StorePinkMap pinkMap; @@ -487,6 +495,9 @@ public class YxStorePinkServiceImpl extends BaseServiceImpllambdaQuery() + .eq(YxStorePink::getOrderId,order.getOrderId())); + if(pinkCount > 0) return; if(ObjectUtil.isNotNull(combinationQueryVo)){ YxStorePink storePink = new YxStorePink(); storePink.setUid(order.getUid()); @@ -501,10 +512,11 @@ public class YxStorePinkServiceImpl extends BaseServiceImpl 0){ if(getIsPinkUid(order.getPinkId(),order.getUid()) > 0) return; storePink.setKId(order.getPinkId()); @@ -532,6 +544,12 @@ public class YxStorePinkServiceImpl extends BaseServiceImpllambdaQuery() + .eq(YxUserBill::getUid,uid) + .eq(YxUserBill::getType, BillDetailEnum.TYPE_2.getValue()) + .eq(YxUserBill::getCategory,BillDetailEnum.CATEGORY_1.getValue())); List listT = new ArrayList<>(); for (String str : list) { BillOrderDTO billOrderDTO = new BillOrderDTO(); diff --git a/yshop-common/src/main/java/co/yixiang/constant/ShopConstants.java b/yshop-common/src/main/java/co/yixiang/constant/ShopConstants.java index dd6bdc11..c8df8fac 100644 --- a/yshop-common/src/main/java/co/yixiang/constant/ShopConstants.java +++ b/yshop-common/src/main/java/co/yixiang/constant/ShopConstants.java @@ -24,6 +24,11 @@ public interface ShopConstants { */ String REDIS_ORDER_OUTTIME_UNCONFIRM = "order:unconfirm:"; + /** + * redis拼团key + */ + String REDIS_PINK_CANCEL_KEY = "pink:cancel:"; + /** * 微信支付service */