From 8bfb27fe120fabff001a2dbe966396eb2ee98472 Mon Sep 17 00:00:00 2001 From: mitao <2763622819@qq.com> Date: 星期四, 23 五月 2024 17:21:54 +0800 Subject: [PATCH] Merge branch 'dev-mitao' --- ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/GoodsSeckillController.java | 33 ++ ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/MemberInvoiceOrderServiceImpl.java | 20 + ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/feignClient/GoodsSkuClient.java | 14 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/GoodsGroupPurchaseController.java | 22 + ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/pojo/MemberPoints.java | 58 +++ ruoyi-common/ruoyi-common-redis/src/main/java/com/ruoyi/common/redis/configure/RedisConfig.java | 25 + ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/MemberInvoiceOrder.java | 50 +++ ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/MemberInvoiceMapper.xml | 5 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/IGoodsSeckillService.java | 14 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/RuoYiSystemApplication.java | 8 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/MemberInvoiceServiceImpl.java | 20 + ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ICustomConfigService.java | 2 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/constants/DelayTaskEnum.java | 8 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsGroupPurchaseServiceImpl.java | 18 + ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/mapper/MemberInvoiceRiseMapper.java | 16 + ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/MemberPointsController.java | 20 + ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/MemberInvoiceController.java | 20 + ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/IGoodsSkuService.java | 2 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/MemberInvoiceRiseController.java | 20 + ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/MemberInvoiceRiseMapper.xml | 5 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/mapper/MemberPointsMapper.java | 16 + ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/MemberPointsMapper.xml | 5 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/listener/RedisListener.java | 53 ++ ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/mapper/MemberInvoiceOrderMapper.java | 16 + ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/IMemberInvoiceOrderService.java | 16 + ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/CacheConstants.java | 5 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsSkuServiceImpl.java | 2 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/IMemberInvoiceService.java | 16 + ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/mapper/MemberInvoiceMapper.java | 16 + ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsSeckillServiceImpl.java | 47 +++ ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/MemberInvoiceRiseServiceImpl.java | 20 + ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/MemberInvoiceOrderController.java | 20 + ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/MemberInvoiceRise.java | 86 +++++ ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/MemberPointsServiceImpl.java | 21 + ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/IGoodsGroupPurchaseService.java | 4 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/IMemberPointsService.java | 16 + ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/IMemberInvoiceRiseService.java | 16 + ruoyi-common/ruoyi-common-redis/pom.xml | 8 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/GoodsSkuFactory.java | 28 + ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/MemberInvoice.java | 71 ++++ ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/MemberInvoiceOrderMapper.xml | 5 41 files changed, 830 insertions(+), 37 deletions(-) diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/constants/DelayTaskEnum.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/constants/DelayTaskEnum.java index fcdc58a..5e0e3b2 100644 --- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/constants/DelayTaskEnum.java +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/constants/DelayTaskEnum.java @@ -10,10 +10,10 @@ public enum DelayTaskEnum { ORDER_AUTOMATIC_CANCEL("订单延时任务-自动关闭", "超时订单自动关闭"), - SECKILL_START_TASK("秒杀商品延时任务", "定时开始任务"), - SECKILL_END_TASK("秒杀商品延时任务", "定时结束任务"), - GROUP_PURCHASES_START_TASK("团购商品延时任务", "定时开始任务"), - GROUP_PURCHASES_END_TASK("团购商品延时任务", "定时结束任务"), + SECKILL_START_TASK("秒杀商品延时任务", "秒杀商品定时开始任务"), + SECKILL_END_TASK("秒杀商品延时任务", "秒杀商品定时结束任务"), + GROUP_PURCHASES_START_TASK("团购商品延时任务", "团购商品定时开始任务"), + GROUP_PURCHASES_END_TASK("团购商品延时任务", "团购商品定时结束任务"), ; String name; diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/GoodsSkuFactory.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/GoodsSkuFactory.java index 66a5648..3ef7909 100644 --- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/GoodsSkuFactory.java +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/GoodsSkuFactory.java @@ -1,20 +1,13 @@ package com.ruoyi.system.api.factory; import com.ruoyi.common.core.domain.R; -import com.ruoyi.system.api.RemoteFileService; -import com.ruoyi.system.api.RemoteLogService; -import com.ruoyi.system.api.domain.*; +import com.ruoyi.system.api.domain.GoodsSku; import com.ruoyi.system.api.feignClient.GoodsSkuClient; -import com.ruoyi.system.api.feignClient.SysUserClient; -import com.ruoyi.system.api.model.*; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.cloud.openfeign.FallbackFactory; import org.springframework.stereotype.Component; import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.multipart.MultipartFile; - -import java.util.List; @Component public class GoodsSkuFactory implements FallbackFactory<GoodsSkuClient> { @@ -32,6 +25,25 @@ return R.fail("更新商品失败:" + cause.getMessage()); } + @Override + public R<?> startSeckill(Long seckillId) { + return R.fail("开始秒杀失败:" + cause.getMessage()); + } + + @Override + public R<?> endSeckill(Long seckillId) { + return R.fail("结束秒杀失败:" + cause.getMessage()); + } + + @Override + public R<?> startGroupPurchase(Long groupPurchaseId) { + return R.fail("开始团购失败:" + cause.getMessage()); + } + + @Override + public R<?> endGroupPurchase(Long groupPurchaseId) { + return R.fail("结束团购失败:" + cause.getMessage()); + } }; } } diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/feignClient/GoodsSkuClient.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/feignClient/GoodsSkuClient.java index d0011ef..6913caa 100644 --- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/feignClient/GoodsSkuClient.java +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/feignClient/GoodsSkuClient.java @@ -1,15 +1,16 @@ package com.ruoyi.system.api.feignClient; -import com.ruoyi.common.core.constant.ServiceNameConstants;; +import com.ruoyi.common.core.constant.ServiceNameConstants; import com.ruoyi.common.core.domain.R; import com.ruoyi.system.api.domain.GoodsSku; import com.ruoyi.system.api.factory.GoodsSkuFactory; -import com.ruoyi.system.api.factory.SysUserFallbackFactory; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; + +; @FeignClient(contextId = "GoodsSkuClient", value = ServiceNameConstants.RUOYI_GOODS, fallbackFactory = GoodsSkuFactory.class) public interface GoodsSkuClient { @@ -22,6 +23,15 @@ @PostMapping("/goods-sku/updateGoodsSkuOne") R<Boolean> updateGoodsSkuOne(@RequestBody GoodsSku goodsSku); + @GetMapping("/goods-seckill/start/{seckillId}") + R<?> startSeckill(@PathVariable("seckillId") Long seckillId); + @GetMapping("/goods-seckill/end/{seckillId}") + R<?> endSeckill(@PathVariable("seckillId") Long seckillId); + @GetMapping("/goods-group-purchase/start/{groupPurchaseId}") + R<?> startGroupPurchase(@PathVariable("groupPurchaseId") Long groupPurchaseId); + + @GetMapping("/goods-group-purchase/end/{groupPurchaseId}") + R<?> endGroupPurchase(@PathVariable("groupPurchaseId") Long groupPurchaseId); } diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/CacheConstants.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/CacheConstants.java index c33b1f9..928405a 100644 --- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/CacheConstants.java +++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/CacheConstants.java @@ -70,4 +70,9 @@ * 省市区列表key */ public static final String CITY_LIST = "city_list"; + + /** + * 秒杀活动商品key前缀 + */ + public static final String SECKILL_GOODS = "seckill_goods:"; } diff --git a/ruoyi-common/ruoyi-common-redis/pom.xml b/ruoyi-common/ruoyi-common-redis/pom.xml index 97c986b..529a141 100644 --- a/ruoyi-common/ruoyi-common-redis/pom.xml +++ b/ruoyi-common/ruoyi-common-redis/pom.xml @@ -28,6 +28,12 @@ <groupId>com.ruoyi</groupId> <artifactId>ruoyi-common-core</artifactId> </dependency> - + <!-- redis分布式锁框架 --> + <dependency> + <groupId>org.redisson</groupId> + <artifactId>redisson</artifactId> + <version>3.19.3</version> + </dependency> + </dependencies> </project> \ No newline at end of file diff --git a/ruoyi-common/ruoyi-common-redis/src/main/java/com/ruoyi/common/redis/configure/RedisConfig.java b/ruoyi-common/ruoyi-common-redis/src/main/java/com/ruoyi/common/redis/configure/RedisConfig.java index 6e1ec8a..326a791 100644 --- a/ruoyi-common/ruoyi-common-redis/src/main/java/com/ruoyi/common/redis/configure/RedisConfig.java +++ b/ruoyi-common/ruoyi-common-redis/src/main/java/com/ruoyi/common/redis/configure/RedisConfig.java @@ -1,5 +1,9 @@ package com.ruoyi.common.redis.configure; +import java.io.IOException; +import org.redisson.Redisson; +import org.redisson.api.RedissonClient; +import org.redisson.config.Config; import org.springframework.boot.autoconfigure.AutoConfigureBefore; import org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration; import org.springframework.cache.annotation.CachingConfigurerSupport; @@ -8,6 +12,7 @@ import org.springframework.context.annotation.Configuration; import org.springframework.data.redis.connection.RedisConnectionFactory; import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.data.redis.listener.RedisMessageListenerContainer; import org.springframework.data.redis.serializer.StringRedisSerializer; /** @@ -40,4 +45,24 @@ template.afterPropertiesSet(); return template; } + + //Redis监听容器 + @Bean + public RedisMessageListenerContainer container(RedisConnectionFactory connectionFactory) { + RedisMessageListenerContainer container = new RedisMessageListenerContainer(); + container.setConnectionFactory(connectionFactory); + return container; + } + + @Bean(destroyMethod = "shutdown") // 服务停止后调用 shutdown 方法。 + public RedissonClient redisson() throws IOException { + // 1.创建配置 + Config config = new Config(); + // 集群模式 + // config.useClusterServers().addNodeAddress("127.0.0.1:7004", "127.0.0.1:7001"); + // 2.根据 Config 创建出 RedissonClient 示例。 + config.useSingleServer().setAddress("redis://192.168.110.188:6379").setPassword("123456"); + return Redisson.create(config); + } + } diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/GoodsGroupPurchaseController.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/GoodsGroupPurchaseController.java index d263ca4..fd93cb6 100644 --- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/GoodsGroupPurchaseController.java +++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/GoodsGroupPurchaseController.java @@ -1,8 +1,13 @@ package com.ruoyi.goods.controller; +import com.ruoyi.common.core.domain.R; +import com.ruoyi.goods.service.IGoodsGroupPurchaseService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; - import org.springframework.web.bind.annotation.RestController; /** @@ -13,8 +18,23 @@ * @author mitao * @since 2024-05-16 */ +@Slf4j @RestController +@RequiredArgsConstructor @RequestMapping("/goods-group-purchase") public class GoodsGroupPurchaseController { + private final IGoodsGroupPurchaseService goodsGroupPurchaseService; + + @GetMapping("/start/{groupPurchaseId}") + R<?> startGroupPurchase(@PathVariable("groupPurchaseId") Long groupPurchaseId) { + goodsGroupPurchaseService.startGroupPurchase(groupPurchaseId); + return R.ok(); + } + + @GetMapping("/end/{groupPurchaseId}") + R<?> endGroupPurchase(@PathVariable("groupPurchaseId") Long groupPurchaseId) { + goodsGroupPurchaseService.endGroupPurchase(groupPurchaseId); + return R.ok(); + } } diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/GoodsSeckillController.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/GoodsSeckillController.java index c021ac0..cc8b068 100644 --- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/GoodsSeckillController.java +++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/GoodsSeckillController.java @@ -1,8 +1,13 @@ package com.ruoyi.goods.controller; +import com.ruoyi.common.core.domain.R; +import com.ruoyi.goods.service.IGoodsSeckillService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; - import org.springframework.web.bind.annotation.RestController; /** @@ -13,8 +18,34 @@ * @author mitao * @since 2024-05-16 */ +@Slf4j @RestController +@RequiredArgsConstructor @RequestMapping("/goods-seckill") public class GoodsSeckillController { + private final IGoodsSeckillService goodsSeckillService; + + /** + * 开始秒杀 + * + * @param seckillId 秒杀id + */ + @GetMapping("/start/{seckillId}") + R<?> startSeckill(@PathVariable("seckillId") Long seckillId) { + goodsSeckillService.startSeckill(seckillId); + return R.ok(); + } + + /** + * 结束秒杀 + * + * @param seckillId 秒杀id + */ + @GetMapping("/end/{seckillId}") + R<?> endSeckill(@PathVariable("seckillId") Long seckillId) { + goodsSeckillService.endSeckill(seckillId); + return R.ok(); + } + } diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/IGoodsGroupPurchaseService.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/IGoodsGroupPurchaseService.java index eebd533..e70c423 100644 --- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/IGoodsGroupPurchaseService.java +++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/IGoodsGroupPurchaseService.java @@ -47,4 +47,8 @@ * @param dto 商品上下架状态对象 */ void updStatus(ListStatusDTO dto); + + void startGroupPurchase(Long groupPurchaseId); + + void endGroupPurchase(Long groupPurchaseId); } diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/IGoodsSeckillService.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/IGoodsSeckillService.java index 71ffec0..95d6508 100644 --- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/IGoodsSeckillService.java +++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/IGoodsSeckillService.java @@ -55,4 +55,18 @@ * @return GoodsSeckillVO 商品秒杀视图对象 */ GoodsSeckillVO getDetail(Long id); + + /** + * 开始秒杀 + * + * @param seckillId 秒杀id + */ + void startSeckill(Long seckillId); + + /** + * 结束秒杀 + * + * @param seckillId 秒杀id + */ + void endSeckill(Long seckillId); } diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/IGoodsSkuService.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/IGoodsSkuService.java index 94cf0d9..b14f61a 100644 --- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/IGoodsSkuService.java +++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/IGoodsSkuService.java @@ -41,6 +41,6 @@ * @param dto 数据传输对象,包含需要更新的SKU的ID和新的上架状态。 其中,ID用于指定要更新的具体SKU,listingStatus用于指定新的上架状态。 * @return 无返回值。 */ - void updStatus(ListStatusDTO dto) throws Exception; + void updStatus(ListStatusDTO dto); } diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsGroupPurchaseServiceImpl.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsGroupPurchaseServiceImpl.java index 905f7d9..cba8dcc 100644 --- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsGroupPurchaseServiceImpl.java +++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsGroupPurchaseServiceImpl.java @@ -17,6 +17,7 @@ import com.ruoyi.system.api.domain.dto.ListStatusDTO; import com.ruoyi.system.api.feignClient.OrderClient; import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; /** @@ -27,6 +28,7 @@ * @author mitao * @since 2024-05-16 */ +@Slf4j @Service @RequiredArgsConstructor public class GoodsGroupPurchaseServiceImpl extends ServiceImpl<GoodsGroupPurchaseMapper, GoodsGroupPurchase> implements IGoodsGroupPurchaseService { @@ -106,4 +108,20 @@ groupPurchase.setListingStatus(dto.getListingStatus()); this.updateById(groupPurchase); } + + @Override + public void startGroupPurchase(Long groupPurchaseId) { + log.info(">>>>>>>>>>>>>>>>>>>>团购商品开始团购<<<<<<<<<<<<<<<<<<<<"); + GoodsGroupPurchase groupPurchase = this.getById(groupPurchaseId); + if (StringUtils.isNotNull(groupPurchase)) { + this.lambdaUpdate().set(GoodsGroupPurchase::getStartStatus, StartStatusEnum.STARTED) + .eq(GoodsGroupPurchase::getId, groupPurchaseId).update(); + //TODO 通知小程勋 + } + } + + @Override + public void endGroupPurchase(Long groupPurchaseId) { + + } } diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsSeckillServiceImpl.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsSeckillServiceImpl.java index e39abe7..6511b81 100644 --- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsSeckillServiceImpl.java +++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsSeckillServiceImpl.java @@ -2,10 +2,12 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ruoyi.common.core.constant.CacheConstants; import com.ruoyi.common.core.enums.StartStatusEnum; import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.core.utils.page.BeanUtils; import com.ruoyi.common.core.utils.page.PageDTO; +import com.ruoyi.common.redis.service.RedisService; import com.ruoyi.goods.controller.management.DTO.GoodsSeckillDTO; import com.ruoyi.goods.controller.management.DTO.GoodsSeckillQuery; import com.ruoyi.goods.controller.management.DTO.GoodsSeckillUpd; @@ -39,7 +41,7 @@ private final IGoodsSkuService goodsSkuService; private final OrderClient orderClient; - + private final RedisService redisService; @Override @Transactional(rollbackFor = Exception.class) public void addGoodsSeckill(GoodsSeckillDTO dto) { @@ -117,4 +119,47 @@ vo.setNumberOfPurchasedMembers(num); return vo; } + + /** + * 开始秒杀 + * + * @param seckillId 秒杀id + */ + @Override + public void startSeckill(Long seckillId) { + log.info(">>>>>>>>>>>>>>>>>>>>{}秒杀开始<<<<<<<<<<<<<<<<<<<<", seckillId); + GoodsSeckill goodsSeckill = this.getById(seckillId); + //秒杀商品不能为空且状态为未开始 + if (StringUtils.isNotNull(goodsSeckill) + && goodsSeckill.getStartStatus().equals(StartStatusEnum.NOT_STARTED)) { + //开始秒杀 + this.lambdaUpdate().set(GoodsSeckill::getStartStatus, StartStatusEnum.STARTED) + .eq(GoodsSeckill::getId, seckillId).update(); +// 将秒杀商品放入缓存 + redisService.setCacheObject( + CacheConstants.SECKILL_GOODS + goodsSeckill.getId(), + goodsSeckill.getSeckillStock()); + } + //TODO websocket 推送秒杀开始消息 + } + + /** + * 结束秒杀 + * + * @param seckillId 秒杀id + */ + @Override + public void endSeckill(Long seckillId) { + log.info(">>>>>>>>>>>>>>>>>>>>{}秒杀结束<<<<<<<<<<<<<<<<<<<<", seckillId); + GoodsSeckill goodsSeckill = this.getById(seckillId); + if (StringUtils.isNotNull(goodsSeckill) + && goodsSeckill.getStartStatus().equals(StartStatusEnum.STARTED)) { + //结束秒杀 + this.lambdaUpdate().set(GoodsSeckill::getStartStatus, StartStatusEnum.ENDED) + .eq(GoodsSeckill::getId, seckillId).update(); +// 将秒杀商品从缓存中移除 + redisService.deleteObject(CacheConstants.SECKILL_GOODS + goodsSeckill.getId()); + } + //TODO websocket 推送秒杀结束消息 + } } diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsSkuServiceImpl.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsSkuServiceImpl.java index 41eaf12..2627617 100644 --- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsSkuServiceImpl.java +++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsSkuServiceImpl.java @@ -161,7 +161,7 @@ */ @Override @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRES_NEW) - public void updStatus(ListStatusDTO dto) throws Exception { + public void updStatus(ListStatusDTO dto) { this.lambdaUpdate() .eq(GoodsSku::getId, dto.getId()) .set(GoodsSku::getListingStatus, dto.getListingStatus()) diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/MemberPointsController.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/MemberPointsController.java new file mode 100644 index 0000000..ae278ff --- /dev/null +++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/MemberPointsController.java @@ -0,0 +1,20 @@ +package com.ruoyi.member.controller; + + +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.web.bind.annotation.RestController; + +/** + * <p> + * 会员积分表 前端控制器 + * </p> + * + * @author mitao + * @since 2024-05-23 + */ +@RestController +@RequestMapping("/member-points") +public class MemberPointsController { + +} diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/pojo/MemberPoints.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/pojo/MemberPoints.java new file mode 100644 index 0000000..27260ef --- /dev/null +++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/pojo/MemberPoints.java @@ -0,0 +1,58 @@ +package com.ruoyi.member.domain.pojo; + +import com.baomidou.mybatisplus.annotation.FieldFill; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableLogic; +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-23 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("t_member_points") +@ApiModel(value = "MemberPoints对象", description = "会员积分表") +public class MemberPoints implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "积分") + private Integer points; + + @ApiModelProperty(value = "积分类型 1支付订单") + private Integer pointsType; + + @ApiModelProperty(value = "积分状态 1是加积分,2 是减积分") + private Integer pointsStatus; + + @ApiModelProperty(value = "会员id") + private Long memberId; + + @ApiModelProperty(value = "创建时间") + @TableField(value = "create_time", fill = FieldFill.INSERT) + private LocalDateTime createTime; + + @ApiModelProperty(value = "删除标志(0代表存在 1代表删除)") + @TableLogic + private Integer delFlag; + + +} diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/mapper/MemberPointsMapper.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/mapper/MemberPointsMapper.java new file mode 100644 index 0000000..be4e640 --- /dev/null +++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/mapper/MemberPointsMapper.java @@ -0,0 +1,16 @@ +package com.ruoyi.member.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.ruoyi.member.domain.pojo.MemberPoints; + +/** + * <p> + * 会员积分表 Mapper 接口 + * </p> + * + * @author mitao + * @since 2024-05-23 + */ +public interface MemberPointsMapper extends BaseMapper<MemberPoints> { + +} diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/IMemberPointsService.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/IMemberPointsService.java new file mode 100644 index 0000000..86bfe4a --- /dev/null +++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/IMemberPointsService.java @@ -0,0 +1,16 @@ +package com.ruoyi.member.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.ruoyi.member.domain.pojo.MemberPoints; + +/** + * <p> + * 会员积分表 服务类 + * </p> + * + * @author mitao + * @since 2024-05-23 + */ +public interface IMemberPointsService extends IService<MemberPoints> { + +} diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/MemberPointsServiceImpl.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/MemberPointsServiceImpl.java new file mode 100644 index 0000000..b9cd29c --- /dev/null +++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/MemberPointsServiceImpl.java @@ -0,0 +1,21 @@ +package com.ruoyi.member.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ruoyi.member.domain.pojo.MemberPoints; +import com.ruoyi.member.mapper.MemberPointsMapper; +import com.ruoyi.member.service.IMemberPointsService; +import org.springframework.stereotype.Service; + +/** + * <p> + * 会员积分表 服务实现类 + * </p> + * + * @author mitao + * @since 2024-05-23 + */ +@Service +public class MemberPointsServiceImpl extends + ServiceImpl<MemberPointsMapper, MemberPoints> implements IMemberPointsService { + +} diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/MemberInvoiceController.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/MemberInvoiceController.java new file mode 100644 index 0000000..400c2e8 --- /dev/null +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/MemberInvoiceController.java @@ -0,0 +1,20 @@ +package com.ruoyi.order.controller; + + +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.web.bind.annotation.RestController; + +/** + * <p> + * 我的发票 前端控制器 + * </p> + * + * @author mitao + * @since 2024-05-23 + */ +@RestController +@RequestMapping("/member-invoice") +public class MemberInvoiceController { + +} diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/MemberInvoiceOrderController.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/MemberInvoiceOrderController.java new file mode 100644 index 0000000..3637751 --- /dev/null +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/MemberInvoiceOrderController.java @@ -0,0 +1,20 @@ +package com.ruoyi.order.controller; + + +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.web.bind.annotation.RestController; + +/** + * <p> + * 开票和订单关联 前端控制器 + * </p> + * + * @author mitao + * @since 2024-05-23 + */ +@RestController +@RequestMapping("/member-invoice-order") +public class MemberInvoiceOrderController { + +} diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/MemberInvoiceRiseController.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/MemberInvoiceRiseController.java new file mode 100644 index 0000000..25d4763 --- /dev/null +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/MemberInvoiceRiseController.java @@ -0,0 +1,20 @@ +package com.ruoyi.order.controller; + + +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.web.bind.annotation.RestController; + +/** + * <p> + * 我的发票抬头 前端控制器 + * </p> + * + * @author mitao + * @since 2024-05-23 + */ +@RestController +@RequestMapping("/member-invoice-rise") +public class MemberInvoiceRiseController { + +} diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/MemberInvoice.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/MemberInvoice.java new file mode 100644 index 0000000..5b9d253 --- /dev/null +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/MemberInvoice.java @@ -0,0 +1,71 @@ +package com.ruoyi.order.domain.pojo; + +import com.baomidou.mybatisplus.annotation.FieldFill; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.Serializable; +import java.math.BigDecimal; +import java.time.LocalDateTime; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * <p> + * 我的发票 + * </p> + * + * @author mitao + * @since 2024-05-23 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("t_member_invoice") +@ApiModel(value = "MemberInvoice对象", description = "我的发票") +public class MemberInvoice implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "创建者") + @TableField(value = "create_by", fill = FieldFill.INSERT) + private String createBy; + + @ApiModelProperty(value = "创建时间") + @TableField(value = "create_time", fill = FieldFill.INSERT) + private LocalDateTime createTime; + + @ApiModelProperty(value = "更新者") + @TableField(value = "update_by", fill = FieldFill.INSERT_UPDATE) + private String updateBy; + + @ApiModelProperty(value = "更新时间") + @TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE) + private LocalDateTime updateTime; + + @ApiModelProperty(value = "删除标志(0代表存在 1代表删除)") + @TableLogic + private Integer delFlag; + + @ApiModelProperty(value = "发票金额") + private BigDecimal invoiceMoney; + + @ApiModelProperty(value = "开票状态 1待审核,2 已开票,3 拒绝") + private Integer invoiceStatus; + + @ApiModelProperty(value = "拒绝原因") + private String remark; + + @ApiModelProperty(value = "会员id") + private Long memberId; + + +} diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/MemberInvoiceOrder.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/MemberInvoiceOrder.java new file mode 100644 index 0000000..c5bc230 --- /dev/null +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/MemberInvoiceOrder.java @@ -0,0 +1,50 @@ +package com.ruoyi.order.domain.pojo; + +import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * <p> + * 开票和订单关联 + * </p> + * + * @author mitao + * @since 2024-05-23 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("t_member_invoice_order") +@ApiModel(value="MemberInvoiceOrder对象", description="开票和订单关联") +public class MemberInvoiceOrder implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "开票id") + private Integer invoiceId; + + @ApiModelProperty(value = "订单名称") + private String orderName; + + @ApiModelProperty(value = "订单编号") + private String orderNo; + + @ApiModelProperty(value = "订单金额") + private BigDecimal orderMoney; + + @ApiModelProperty(value = "订单id") + private Integer orderId; + + +} diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/MemberInvoiceRise.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/MemberInvoiceRise.java new file mode 100644 index 0000000..9a6aab4 --- /dev/null +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/MemberInvoiceRise.java @@ -0,0 +1,86 @@ +package com.ruoyi.order.domain.pojo; + +import com.baomidou.mybatisplus.annotation.FieldFill; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +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-23 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("t_member_invoice_rise") +@ApiModel(value = "MemberInvoiceRise对象", description = "我的发票抬头") +public class MemberInvoiceRise implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "发票类型 1 普通,2 专票") + private Integer invoiceType; + + @ApiModelProperty(value = "抬头类型 1 企业单位,2 个人/非企业单位") + private Integer riseType; + + @ApiModelProperty(value = "公司名称") + private String corporationName; + + @ApiModelProperty(value = "公司税号") + private String corporationId; + + @ApiModelProperty(value = "公司地址") + private String corporationAddress; + + @ApiModelProperty(value = "公司电话") + private String corporationPhone; + + @ApiModelProperty(value = "公司开户行") + private String corporationOpen; + + @ApiModelProperty(value = "公司账号") + private String corporationAccount; + + @ApiModelProperty(value = "创建者") + @TableField(value = "create_by", fill = FieldFill.INSERT) + private String createBy; + + @ApiModelProperty(value = "创建时间") + @TableField(value = "create_time", fill = FieldFill.INSERT) + private LocalDateTime createTime; + + @ApiModelProperty(value = "更新者") + @TableField(value = "update_by", fill = FieldFill.INSERT_UPDATE) + private String updateBy; + + @ApiModelProperty(value = "更新时间") + @TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE) + private LocalDateTime updateTime; + + @ApiModelProperty(value = "删除标志(0代表存在 1代表删除)") + private Integer delFlag; + + @ApiModelProperty(value = "1是其他,2 是默认") + private Integer isDefault; + + @ApiModelProperty(value = "会员id") + private Long memberId; + + +} diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/mapper/MemberInvoiceMapper.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/mapper/MemberInvoiceMapper.java new file mode 100644 index 0000000..986ae27 --- /dev/null +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/mapper/MemberInvoiceMapper.java @@ -0,0 +1,16 @@ +package com.ruoyi.order.mapper; + +import com.ruoyi.order.domain.pojo.MemberInvoice; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * <p> + * 我的发票 Mapper 接口 + * </p> + * + * @author mitao + * @since 2024-05-23 + */ +public interface MemberInvoiceMapper extends BaseMapper<MemberInvoice> { + +} diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/mapper/MemberInvoiceOrderMapper.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/mapper/MemberInvoiceOrderMapper.java new file mode 100644 index 0000000..6fbff89 --- /dev/null +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/mapper/MemberInvoiceOrderMapper.java @@ -0,0 +1,16 @@ +package com.ruoyi.order.mapper; + +import com.ruoyi.order.domain.pojo.MemberInvoiceOrder; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * <p> + * 开票和订单关联 Mapper 接口 + * </p> + * + * @author mitao + * @since 2024-05-23 + */ +public interface MemberInvoiceOrderMapper extends BaseMapper<MemberInvoiceOrder> { + +} diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/mapper/MemberInvoiceRiseMapper.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/mapper/MemberInvoiceRiseMapper.java new file mode 100644 index 0000000..992c1be --- /dev/null +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/mapper/MemberInvoiceRiseMapper.java @@ -0,0 +1,16 @@ +package com.ruoyi.order.mapper; + +import com.ruoyi.order.domain.pojo.MemberInvoiceRise; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * <p> + * 我的发票抬头 Mapper 接口 + * </p> + * + * @author mitao + * @since 2024-05-23 + */ +public interface MemberInvoiceRiseMapper extends BaseMapper<MemberInvoiceRise> { + +} diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/IMemberInvoiceOrderService.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/IMemberInvoiceOrderService.java new file mode 100644 index 0000000..1eaa677 --- /dev/null +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/IMemberInvoiceOrderService.java @@ -0,0 +1,16 @@ +package com.ruoyi.order.service; + +import com.ruoyi.order.domain.pojo.MemberInvoiceOrder; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + * <p> + * 开票和订单关联 服务类 + * </p> + * + * @author mitao + * @since 2024-05-23 + */ +public interface IMemberInvoiceOrderService extends IService<MemberInvoiceOrder> { + +} diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/IMemberInvoiceRiseService.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/IMemberInvoiceRiseService.java new file mode 100644 index 0000000..8bd6d11 --- /dev/null +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/IMemberInvoiceRiseService.java @@ -0,0 +1,16 @@ +package com.ruoyi.order.service; + +import com.ruoyi.order.domain.pojo.MemberInvoiceRise; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + * <p> + * 我的发票抬头 服务类 + * </p> + * + * @author mitao + * @since 2024-05-23 + */ +public interface IMemberInvoiceRiseService extends IService<MemberInvoiceRise> { + +} diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/IMemberInvoiceService.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/IMemberInvoiceService.java new file mode 100644 index 0000000..580cc3b --- /dev/null +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/IMemberInvoiceService.java @@ -0,0 +1,16 @@ +package com.ruoyi.order.service; + +import com.ruoyi.order.domain.pojo.MemberInvoice; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + * <p> + * 我的发票 服务类 + * </p> + * + * @author mitao + * @since 2024-05-23 + */ +public interface IMemberInvoiceService extends IService<MemberInvoice> { + +} diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/MemberInvoiceOrderServiceImpl.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/MemberInvoiceOrderServiceImpl.java new file mode 100644 index 0000000..1991492 --- /dev/null +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/MemberInvoiceOrderServiceImpl.java @@ -0,0 +1,20 @@ +package com.ruoyi.order.service.impl; + +import com.ruoyi.order.domain.pojo.MemberInvoiceOrder; +import com.ruoyi.order.mapper.MemberInvoiceOrderMapper; +import com.ruoyi.order.service.IMemberInvoiceOrderService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + * <p> + * 开票和订单关联 服务实现类 + * </p> + * + * @author mitao + * @since 2024-05-23 + */ +@Service +public class MemberInvoiceOrderServiceImpl extends ServiceImpl<MemberInvoiceOrderMapper, MemberInvoiceOrder> implements IMemberInvoiceOrderService { + +} diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/MemberInvoiceRiseServiceImpl.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/MemberInvoiceRiseServiceImpl.java new file mode 100644 index 0000000..24139ac --- /dev/null +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/MemberInvoiceRiseServiceImpl.java @@ -0,0 +1,20 @@ +package com.ruoyi.order.service.impl; + +import com.ruoyi.order.domain.pojo.MemberInvoiceRise; +import com.ruoyi.order.mapper.MemberInvoiceRiseMapper; +import com.ruoyi.order.service.IMemberInvoiceRiseService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + * <p> + * 我的发票抬头 服务实现类 + * </p> + * + * @author mitao + * @since 2024-05-23 + */ +@Service +public class MemberInvoiceRiseServiceImpl extends ServiceImpl<MemberInvoiceRiseMapper, MemberInvoiceRise> implements IMemberInvoiceRiseService { + +} diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/MemberInvoiceServiceImpl.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/MemberInvoiceServiceImpl.java new file mode 100644 index 0000000..8ba8136 --- /dev/null +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/MemberInvoiceServiceImpl.java @@ -0,0 +1,20 @@ +package com.ruoyi.order.service.impl; + +import com.ruoyi.order.domain.pojo.MemberInvoice; +import com.ruoyi.order.mapper.MemberInvoiceMapper; +import com.ruoyi.order.service.IMemberInvoiceService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + * <p> + * 我的发票 服务实现类 + * </p> + * + * @author mitao + * @since 2024-05-23 + */ +@Service +public class MemberInvoiceServiceImpl extends ServiceImpl<MemberInvoiceMapper, MemberInvoice> implements IMemberInvoiceService { + +} diff --git a/ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/MemberInvoiceMapper.xml b/ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/MemberInvoiceMapper.xml new file mode 100644 index 0000000..8d6514c --- /dev/null +++ b/ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/MemberInvoiceMapper.xml @@ -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.order.mapper.MemberInvoiceMapper"> + +</mapper> diff --git a/ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/MemberInvoiceOrderMapper.xml b/ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/MemberInvoiceOrderMapper.xml new file mode 100644 index 0000000..6a02bc7 --- /dev/null +++ b/ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/MemberInvoiceOrderMapper.xml @@ -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.order.mapper.MemberInvoiceOrderMapper"> + +</mapper> diff --git a/ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/MemberInvoiceRiseMapper.xml b/ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/MemberInvoiceRiseMapper.xml new file mode 100644 index 0000000..46343c2 --- /dev/null +++ b/ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/MemberInvoiceRiseMapper.xml @@ -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.order.mapper.MemberInvoiceRiseMapper"> + +</mapper> diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/RuoYiSystemApplication.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/RuoYiSystemApplication.java index 722a87a..fc5d736 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/RuoYiSystemApplication.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/RuoYiSystemApplication.java @@ -1,17 +1,19 @@ package com.ruoyi.system; -import org.mybatis.spring.annotation.MapperScan; -import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.SpringBootApplication; import com.ruoyi.common.security.annotation.EnableCustomConfig; import com.ruoyi.common.security.annotation.EnableRyFeignClients; import com.ruoyi.common.swagger.annotation.EnableCustomSwagger2; +import org.mybatis.spring.annotation.MapperScan; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.scheduling.annotation.EnableAsync; /** * 系统模块 * * @author ruoyi */ +@EnableAsync @EnableCustomConfig @MapperScan({"com.ruoyi.system.mapper"}) @EnableCustomSwagger2 diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/listener/RedisListener.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/listener/RedisListener.java index 2062fef..0421920 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/listener/RedisListener.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/listener/RedisListener.java @@ -4,13 +4,16 @@ import com.ruoyi.common.core.utils.DateUtils; import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.system.api.constants.DelayTaskEnum; +import com.ruoyi.system.api.feignClient.GoodsSkuClient; import java.util.Date; -import lombok.extern.log4j.Log4j2; +import javax.annotation.Resource; +import lombok.extern.slf4j.Slf4j; 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.scheduling.annotation.Async; import org.springframework.stereotype.Component; @@ -18,12 +21,13 @@ * @author mitao * @date 2024/5/22 */ -@Log4j2 +@Slf4j @Component public class RedisListener extends KeyExpirationEventMessageListener { private RedisTemplate<String, Object> redisTemplate; - + @Resource + private GoodsSkuClient goodsSkuClient; public RedisListener(RedisMessageListenerContainer listenerContainer, RedisTemplate redisTemplate) { super(listenerContainer); @@ -41,17 +45,23 @@ if(expiredKey.contains("-")){ String[] split = expiredKey.split("-"); String operation=split[0]; + Long id = Long.valueOf(split[1]); if(DelayTaskEnum.SECKILL_START_TASK.getCode().equals(operation)){ - //自动开始任务 + //自动开始秒杀任务 + autoStartSeckill(id); }else if(DelayTaskEnum.SECKILL_END_TASK.getCode().equals(operation)){ - //自动结束任务 + //自动结束秒杀任务 + autoEndSeckill(id); }else if(DelayTaskEnum.GROUP_PURCHASES_START_TASK.getCode().equals(operation)){ - //自动开始任务 + //自动开始团购任务 + autoStartGroupPurchase(id); } else if(DelayTaskEnum.GROUP_PURCHASES_END_TASK.getCode().equals(operation)){ - //自动结束任务 + //自动结束团购任务 + autoEndGroupPurchase(id); }else if(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode().equals(operation)){ - //自动结束任务 + //自动取消订单 + autoCancelOrder(id); } //删除失效的key redisTemplate.delete(expiredKey); @@ -74,16 +84,33 @@ } //延时任务表 + @Async + public void autoStartSeckill(Long seckillId) { + log.info("autoStartSeckill scheduler task is running :" + seckillId); + goodsSkuClient.startSeckill(seckillId); - 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); + @Async + public void autoEndSeckill(Long seckillId) { + log.info("autoEndSeckill scheduler task is running :" + seckillId); + goodsSkuClient.endSeckill(seckillId); } - private void autoCancelOrder(String orderId){ + @Async + public void autoStartGroupPurchase(Long GroupPurchaseId) { + log.info("autoStartGroupPurchase scheduler task is running :" + GroupPurchaseId); + goodsSkuClient.startGroupPurchase(GroupPurchaseId); + } + + @Async + public void autoEndGroupPurchase(Long GroupPurchaseId) { + log.info("autoEndGroupPurchase scheduler task is running :" + GroupPurchaseId); + goodsSkuClient.endGroupPurchase(GroupPurchaseId); + } + + @Async + public void autoCancelOrder(Long orderId) { log.info("autoCancelOrder scheduler task is running :" + orderId); } } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ICustomConfigService.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ICustomConfigService.java index cba13ff..99ac2e5 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ICustomConfigService.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ICustomConfigService.java @@ -1,7 +1,7 @@ package com.ruoyi.system.service; -import com.ruoyi.system.domain.pojo.CustomConfig; import com.baomidou.mybatisplus.extension.service.IService; +import com.ruoyi.system.domain.CustomConfig; /** * <p> diff --git a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/MemberPointsMapper.xml b/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/MemberPointsMapper.xml new file mode 100644 index 0000000..029ad7c --- /dev/null +++ b/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/MemberPointsMapper.xml @@ -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.member.mapper.MemberPointsMapper"> + +</mapper> -- Gitblit v1.7.1