pom.xml
@@ -36,6 +36,7 @@ <poi.version>4.1.2</poi.version> <transmittable-thread-local.version>2.14.2</transmittable-thread-local.version> <zxing.version>3.2.1</zxing.version> <easyexcel.version>4.0.2</easyexcel.version> </properties> <!-- 依赖声明 --> @@ -212,7 +213,11 @@ <artifactId>ruoyi-api-system</artifactId> <version>${ruoyi.version}</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId> <version>${easyexcel.version}</version> </dependency> </dependencies> </dependencyManagement> @@ -232,6 +237,7 @@ <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-bootstrap</artifactId> </dependency> </dependencies> <build> ruoyi-auth/pom.xml
@@ -89,6 +89,12 @@ <groupId>com.ruoyi</groupId> <artifactId>ruoyi-common-swagger</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <build> ruoyi-auth/src/main/resources/bootstrap.yml
@@ -17,13 +17,14 @@ nacos: discovery: # 服务注册地址 server-addr: 127.0.0.1:8858 server-addr: 127.0.0.1:8848 service: ${spring.application.name} group: DEFAULT_GROUP namespace: 689e0f09-d102-460c-ac5c-5ea50a3174be ip: 192.168.110.188 config: # 配置中心地址 server-addr: 127.0.0.1:8858 server-addr: 127.0.0.1:8848 namespace: 689e0f09-d102-460c-ac5c-5ea50a3174be group: DEFAULT_GROUP name: ${spring.application.name} ruoyi-auth/src/test/java/com/ruoyi/auth/UserTokenTest.java
New file @@ -0,0 +1,20 @@ package com.ruoyi.auth; import lombok.extern.slf4j.Slf4j; import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; /** * @author mitao * @date 2024/8/15 */ @Slf4j @SpringBootTest public class UserTokenTest { @Test public void test() { } } ruoyi-common/ruoyi-common-core/pom.xml
@@ -132,7 +132,11 @@ <version>2.8.0</version> </dependency> <!-- https://mvnrepository.com/artifact/com.alibaba/easyexcel --> <dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId> </dependency> </dependencies> </project> ruoyi-gateway/src/main/resources/bootstrap.yml
@@ -17,13 +17,14 @@ nacos: discovery: # 服务注册地址 server-addr: 127.0.0.1:8858 server-addr: 127.0.0.1:8848 service: ${spring.application.name} group: DEFAULT_GROUP namespace: 689e0f09-d102-460c-ac5c-5ea50a3174be ip: 192.168.110.188 config: # 配置中心地址 server-addr: 127.0.0.1:8858 server-addr: 127.0.0.1:8848 namespace: 689e0f09-d102-460c-ac5c-5ea50a3174be group: DEFAULT_GROUP name: ${spring.application.name} @@ -42,7 +43,7 @@ datasource: ds1: nacos: server-addr: 127.0.0.1:8858 server-addr: 127.0.0.1:8848 dataId: sentinel-ruoyi-gateway groupId: DEFAULT_GROUP data-type: json ruoyi-modules/ruoyi-article/pom.xml
@@ -101,17 +101,6 @@ <version>1.2.47</version> </dependency> <dependency> <groupId>cn.afterturn</groupId> <artifactId>easypoi-spring-boot-starter</artifactId> <version>4.0.0</version> <exclusions> <exclusion> <artifactId>guava</artifactId> <groupId>com.google.guava</groupId> </exclusion> </exclusions> </dependency> <!-- 分布式事务 --> <dependency> <groupId>com.ruoyi</groupId> ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/controller/management/MgtSensitiveWordsController.java
@@ -1,23 +1,31 @@ package com.ruoyi.article.controller.management; import com.alibaba.excel.EasyExcel; import com.ruoyi.article.controller.management.dto.MgtSensitiveWordsDTO; import com.ruoyi.article.controller.management.dto.MgtSensitiveWordsQuery; import com.ruoyi.article.controller.management.vo.MgtSensitiveWordsVO; import com.ruoyi.article.service.ISensitiveWordsService; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.utils.page.CollUtils; import com.ruoyi.common.core.utils.page.PageDTO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import java.io.IOException; import java.net.URLEncoder; import javax.servlet.http.HttpServletResponse; import lombok.RequiredArgsConstructor; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.DeleteMapping; 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; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestPart; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; /** * <p> @@ -72,4 +80,46 @@ sensitiveWordsService.removeById(id); return R.ok(); } /** * 下载导入模板 * * @param response */ @ApiOperation("下载导入模板") @GetMapping("/exportTemplate") public void exportSensitiveWordsTemplate(HttpServletResponse response) { // 这里注意 有同学反应使用swagger 会导致各种问题,请直接用浏览器或者用postman response.setContentType( "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); response.setCharacterEncoding("utf-8"); // 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系 try { String fileName = URLEncoder.encode("敏感词导入模板", "UTF-8").replaceAll("\\+", "%20"); response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); EasyExcel.write(response.getOutputStream(), MgtSensitiveWordsDTO.class) .sheet("敏感词导入模板") .doWrite(CollUtils.emptyList()); } catch (Exception e) { throw new RuntimeException(e); } } /** * 敏感词导入 * * @param file 导入文件 * @return */ @ApiOperation("敏感词导入") @PostMapping("/importSensitiveWords") public R<?> importSensitiveWords(@RequestPart("file") MultipartFile file) { try { sensitiveWordsService.importSensitiveWords(file); } catch (IOException e) { throw new RuntimeException(e); } return R.ok(); } } ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/controller/management/dto/MgtSensitiveWordsDTO.java
@@ -1,5 +1,6 @@ package com.ruoyi.article.controller.management.dto; import com.alibaba.excel.annotation.ExcelProperty; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import java.io.Serializable; @@ -18,5 +19,6 @@ @ApiModelProperty(value = "敏感词") @NotBlank(message = "敏感词不能为空") @ExcelProperty("敏感词") private String word; } ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/controller/management/vo/MgtArticleVO.java
@@ -75,4 +75,7 @@ @ApiModelProperty(value = "是否被举报") private Boolean reported; @ApiModelProperty(value = "资讯评论查看状态 1:未查看 2:已查看") private Integer readStatus; } ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/domain/Article.java
@@ -102,4 +102,7 @@ @ApiModelProperty(value = "是否被举报") private Boolean reported; @ApiModelProperty(value = "资讯评论查看状态 1:未查看 2:已查看") private Integer readStatus; } ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/listener/SensitiveWordsListener.java
New file @@ -0,0 +1,70 @@ package com.ruoyi.article.listener; import com.alibaba.excel.context.AnalysisContext; import com.alibaba.excel.read.listener.ReadListener; import com.alibaba.excel.util.ListUtils; import com.alibaba.fastjson2.JSON; import com.ruoyi.article.controller.management.dto.MgtSensitiveWordsDTO; import com.ruoyi.article.domain.SensitiveWords; import com.ruoyi.article.service.ISensitiveWordsService; import com.ruoyi.common.core.utils.page.BeanUtils; import java.util.List; import lombok.extern.slf4j.Slf4j; /** * @author mitao * @date 2024/9/11 */ @Slf4j public class SensitiveWordsListener implements ReadListener<MgtSensitiveWordsDTO> { /** * 每隔100条存储数据库,实际使用中可以100条,然后清理list ,方便内存回收 */ private static final int BATCH_COUNT = 100; /** * 缓存的数据 */ private List<MgtSensitiveWordsDTO> cachedDataList = ListUtils.newArrayListWithExpectedSize( BATCH_COUNT); private ISensitiveWordsService sensitiveWordsService; /** * 如果使用了spring,请使用这个构造方法。每次创建Listener的时候需要把spring管理的类传进来 * * @param sensitiveWordsService */ public SensitiveWordsListener(ISensitiveWordsService sensitiveWordsService) { this.sensitiveWordsService = sensitiveWordsService; } @Override public void invoke(MgtSensitiveWordsDTO data, AnalysisContext analysisContext) { log.info("解析到一条数据:{}", JSON.toJSONString(data)); cachedDataList.add(data); // 达到BATCH_COUNT了,需要去存储一次数据库,防止数据几万条数据在内存,容易OOM if (cachedDataList.size() >= BATCH_COUNT) { saveData(); // 存储完成清理 list cachedDataList = ListUtils.newArrayListWithExpectedSize(BATCH_COUNT); } } private void saveData() { log.info("{}条数据,开始存储数据库!", cachedDataList.size()); // 拷贝数据 List<SensitiveWords> sensitiveWords = BeanUtils.copyList(cachedDataList, SensitiveWords.class); // 批量存入数据库 sensitiveWordsService.saveBatch(sensitiveWords); } @Override public void doAfterAllAnalysed(AnalysisContext analysisContext) { // 这里也要保存数据,确保最后遗留的数据也存储到数据库 saveData(); log.info("所有数据解析完成!"); } } ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/service/ISensitiveWordsService.java
@@ -8,8 +8,10 @@ import com.ruoyi.common.core.utils.page.PageDTO; import com.ruoyi.system.api.domain.dto.judgeSensitiveWordsDTO; import com.ruoyi.system.api.domain.vo.judgeSensitiveWordsVO; import java.io.IOException; import java.util.List; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.multipart.MultipartFile; /** * <p> @@ -38,4 +40,12 @@ * @param dto 敏感词数据传输对象 */ void saveSensitiveWords(MgtSensitiveWordsDTO dto); /** * 敏感词导入 * * @param file 导入文件 * @return */ void importSensitiveWords(MultipartFile file) throws IOException; } ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/service/impl/ArticleCommentsServiceImpl.java
@@ -69,6 +69,7 @@ } Article byId = articleMapper.selectById(articleCommentsDTO.getArticleId()); byId.setCommentCount(byId.getCommentCount()+1); byId.setReadStatus(byId.getReadStatus() == 2 ? 1 : 2); articleMapper.updateById(byId); this.saveOrUpdate(articleComments); } @@ -91,6 +92,7 @@ * @return PageDTO<MgtArticleCommentsVO> */ @Override @Transactional(rollbackFor = Exception.class) public PageDTO<MgtArticleCommentsVO> getArticleCommentsPage(MgtArticleCommentsQuery query) { PageDTO<MgtArticleCommentsVO> result; Set<Long> memberIdSet = null; @@ -131,7 +133,10 @@ }); result = pageVO; } // 修改查看评论状态 Article article = articleMapper.selectById(query.getArticleId()); article.setReadStatus(2); articleMapper.updateById(article); return result; } ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/service/impl/SensitiveWordsServiceImpl.java
@@ -1,5 +1,6 @@ package com.ruoyi.article.service.impl; import com.alibaba.excel.EasyExcel; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -8,6 +9,7 @@ import com.ruoyi.article.controller.management.dto.MgtSensitiveWordsQuery; import com.ruoyi.article.controller.management.vo.MgtSensitiveWordsVO; import com.ruoyi.article.domain.SensitiveWords; import com.ruoyi.article.listener.SensitiveWordsListener; import com.ruoyi.article.mapper.SensitiveWordsMapper; import com.ruoyi.article.service.ISensitiveWordsService; import com.ruoyi.common.core.utils.StringUtils; @@ -16,10 +18,12 @@ import com.ruoyi.common.core.utils.page.PageDTO; import com.ruoyi.system.api.domain.dto.judgeSensitiveWordsDTO; import com.ruoyi.system.api.domain.vo.judgeSensitiveWordsVO; import java.io.IOException; import java.util.ArrayList; import java.util.List; import java.util.regex.Pattern; import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; /** * <p> @@ -93,4 +97,16 @@ public void saveSensitiveWords(MgtSensitiveWordsDTO dto) { this.save(BeanUtils.copyBean(dto, SensitiveWords.class)); } /** * 敏感词导入 * * @param file 导入文件 * @return */ @Override public void importSensitiveWords(MultipartFile file) throws IOException { EasyExcel.read(file.getInputStream(), MgtSensitiveWordsDTO.class, new SensitiveWordsListener(this)).sheet().doRead(); } } ruoyi-modules/ruoyi-article/src/main/resources/bootstrap.yml
@@ -17,13 +17,14 @@ nacos: discovery: # 服务注册地址 server-addr: 192.168.110.188:8858 server-addr: 192.168.110.188:8848 service: ${spring.application.name} group: DEFAULT_GROUP namespace: 689e0f09-d102-460c-ac5c-5ea50a3174be ip: 192.168.110.188 config: # 配置中心地址 server-addr: 192.168.110.188:8858 server-addr: 192.168.110.188:8848 namespace: 689e0f09-d102-460c-ac5c-5ea50a3174be group: DEFAULT_GROUP name: ${spring.application.name} ruoyi-modules/ruoyi-auction/pom.xml
@@ -114,17 +114,7 @@ <artifactId>alipay-sdk-java</artifactId> <version>4.39.95.ALL</version> </dependency> <dependency> <groupId>cn.afterturn</groupId> <artifactId>easypoi-spring-boot-starter</artifactId> <version>4.0.0</version> <exclusions> <exclusion> <artifactId>guava</artifactId> <groupId>com.google.guava</groupId> </exclusion> </exclusions> </dependency> <!-- 分布式事务 --> <dependency> <groupId>com.ruoyi</groupId> ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/controller/management/dto/MgtAuctionGoodsDTO.java
@@ -6,7 +6,6 @@ import io.swagger.annotations.ApiModelProperty; import java.math.BigDecimal; import java.time.LocalDateTime; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; import lombok.Data; @@ -57,10 +56,8 @@ private String description; @ApiModelProperty(value = "分享标题") @NotBlank(message = "分享标题不能为空") private String shareTitle; @ApiModelProperty(value = "分享图片") @NotBlank(message = "分享图片不能为空") private String sharePic; } ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/controller/management/dto/MgtAuctionSalesroomDTO.java
@@ -58,11 +58,9 @@ private String clientCoverPic; @ApiModelProperty(value = "分享标题") @NotBlank(message = "分享标题不能为空") private String shareTitle; @ApiModelProperty(value = "分享图片") @NotBlank(message = "分享图片不能为空") private String sharePic; @Valid ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionGoodsServiceImpl.java
@@ -557,12 +557,19 @@ auctionGoodsinfoVO.setMinimumMarkupAmount(byId.getMinimumMarkupAmount()); auctionGoodsinfoVO.setSpec(goodsSkuOne.getSpec()); auctionGoodsinfoVO.setSpecUnit(goodsSkuOne.getSpecUnit()); auctionGoodsinfoVO.setShareTitle(goodsSkuOne.getShareTitle()); auctionGoodsinfoVO.setDetail(goodsSkuOne.getDetail()); auctionGoodsinfoVO.setBond(byId.getBond()); auctionGoodsinfoVO.setYears(goodsSkuOne.getYears()); auctionGoodsinfoVO.setSharePic(byId.getSharePic()); auctionGoodsinfoVO.setShareTitle(byId.getShareTitle()); if (StringUtils.isNotBlank(byId.getShareTitle())) { auctionGoodsinfoVO.setShareTitle(byId.getShareTitle()); } else { auctionGoodsinfoVO.setShareTitle(goodsSkuOne.getSkuName()); } if (StringUtils.isNotBlank(byId.getSharePic())) { auctionGoodsinfoVO.setSharePic(byId.getSharePic()); } else { auctionGoodsinfoVO.setSharePic(goodsSkuOne.getCoverPic()); } LambdaQueryWrapper<AuctionBidRecord> wrapper1= Wrappers.lambdaQuery(); wrapper1.eq(AuctionBidRecord::getAuctionType,1); wrapper1.eq(AuctionBidRecord::getTargetId,byId.getId()); ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionSalesroomServiceImpl.java
@@ -467,8 +467,17 @@ memberAuctionSalesroomInfoVO.setEndTime(byId.getEndTime()); memberAuctionSalesroomInfoVO.setType(byId.getType()); memberAuctionSalesroomInfoVO.setDescription(byId.getDescription()); memberAuctionSalesroomInfoVO.setSharePic(byId.getSharePic()); memberAuctionSalesroomInfoVO.setShareTitle(byId.getShareTitle()); if (StringUtils.isNotBlank(byId.getShareTitle())) { memberAuctionSalesroomInfoVO.setShareTitle(byId.getShareTitle()); } else { memberAuctionSalesroomInfoVO.setShareTitle(byId.getSalesroomName()); } if (StringUtils.isNotBlank(byId.getSharePic())) { memberAuctionSalesroomInfoVO.setSharePic(byId.getSharePic()); } else { memberAuctionSalesroomInfoVO.setSharePic(byId.getCoverPic()); } memberAuctionSalesroomInfoVO.setStartTime(byId.getStartTime()); memberAuctionSalesroomInfoVO.setStatus(byId.getStatus()); memberAuctionSalesroomInfoVO.setCoverPic(byId.getCoverPic()); @@ -1674,8 +1683,7 @@ map.put("message_type", "start"); map.put("type", "1"); String msg = objectMapper.writeValueAsString(map); sysUserClient.pushByClientType(WebsocketMessageDTO.builder().message(msg) .clientType(ClientTypeEnum.AUCTIONEER).build(), SecurityConstants.INNER); sysUserClient.pushAll(msg, SecurityConstants.INNER); } @Override @@ -1738,8 +1746,7 @@ map.put("message_type", "end"); map.put("type", "1"); String msg = objectMapper.writeValueAsString(map); sysUserClient.pushByClientType(WebsocketMessageDTO.builder().message(msg) .clientType(ClientTypeEnum.AUCTIONEER).build(), SecurityConstants.INNER); sysUserClient.pushAll(msg, SecurityConstants.INNER); } @Override ruoyi-modules/ruoyi-auction/src/main/resources/bootstrap.yml
@@ -17,13 +17,14 @@ nacos: discovery: # 服务注册地址 server-addr: 192.168.110.188:8858 server-addr: 192.168.110.188:8848 service: ${spring.application.name} group: DEFAULT_GROUP namespace: 689e0f09-d102-460c-ac5c-5ea50a3174be ip: 192.168.110.188 config: # 配置中心地址 server-addr: 192.168.110.188:8858 server-addr: 192.168.110.188:8848 namespace: 689e0f09-d102-460c-ac5c-5ea50a3174be group: DEFAULT_GROUP name: ${spring.application.name} ruoyi-modules/ruoyi-file/src/main/resources/bootstrap.yml
@@ -23,13 +23,14 @@ nacos: discovery: # 服务注册地址 server-addr: 127.0.0.1:8858 server-addr: 127.0.0.1:8848 service: ${spring.application.name} group: DEFAULT_GROUP namespace: 689e0f09-d102-460c-ac5c-5ea50a3174be ip: 192.168.110.188 config: # 配置中心地址 server-addr: 127.0.0.1:8858 server-addr: 127.0.0.1:8848 namespace: 689e0f09-d102-460c-ac5c-5ea50a3174be group: DEFAULT_GROUP name: ${spring.application.name} ruoyi-modules/ruoyi-goods/pom.xml
@@ -112,18 +112,6 @@ <version>4.39.95.ALL</version> </dependency> <dependency> <groupId>cn.afterturn</groupId> <artifactId>easypoi-spring-boot-starter</artifactId> <version>4.0.0</version> <exclusions> <exclusion> <artifactId>guava</artifactId> <groupId>com.google.guava</groupId> </exclusion> </exclusions> </dependency> <!-- 分布式事务 --> <dependency> <groupId>com.ruoyi</groupId> ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/management/dto/GoodsGroupPurchaseDTO.java
@@ -24,11 +24,9 @@ private Long goodsSkuId; @ApiModelProperty(value = "分享标题") @NotBlank(message = "分享标题不能为空") private String shareTitle; @ApiModelProperty(value = "分享图片") @NotBlank(message = "分享图片不能为空") private String sharePic; @ApiModelProperty(value = "团购价格") ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/management/dto/GoodsSeckillUpd.java
@@ -5,7 +5,6 @@ import io.swagger.annotations.ApiModelProperty; import java.io.Serializable; import java.time.LocalDateTime; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; import lombok.Data; import lombok.EqualsAndHashCode; @@ -41,11 +40,9 @@ private Integer limitNumber; @ApiModelProperty(value = "分享标题") @NotBlank(message = "分享标题不能为空") private String shareTitle; @ApiModelProperty(value = "分享图片") @NotBlank(message = "分享图片不能为空") private String sharePic; @ApiModelProperty(value = "秒杀开始时间", notes = "传 2024-05-21 18:18:49 不可传:2024-05-21T18:18:49 ") ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/management/dto/GoodsSkuDTO.java
@@ -76,11 +76,11 @@ private String album; @ApiModelProperty(value = "分享标题") @NotBlank(message = "分享标题不能为空") // @NotBlank(message = "分享标题不能为空") private String shareTitle; @ApiModelProperty(value = "分享图片") @NotBlank(message = "分享图片不能为空") // @NotBlank(message = "分享图片不能为空") private String sharePic; @ApiModelProperty(value = "商品信息") @@ -89,7 +89,6 @@ private List<GoodsInfoTitleValueDTO> goodsInfoTitleValueDTOList; @ApiModelProperty(value = "商品描述") @NotBlank(message = "商品描述不能为空") private String description; @ApiModelProperty(value = "商品说明") ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/mapper/GoodsSeckillMapper.java
@@ -22,4 +22,6 @@ void updateListingStatusBatch(@Param("listingStatus") Integer listingStatus, @Param("goodsSeckillList") List<GoodsSeckill> goodsSeckillList); void updSeckillStatus(); } ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/IGoodsSeckillService.java
@@ -78,4 +78,9 @@ PageDTO<HomeGoodsSeckillVO> getHomeGoodsSeckillVOList(HomeGoodsSkuDTO homeGoodsSkuDTO); HomeGoodsSeckillInfoVO getHomeGoodsSeckillInfo(@RequestBody HomeGoodsSkuDTO homeGoodsSkuDTO); /** * 结束异常的秒杀 */ void updSeckillStatus(); } ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsGroupPurchaseServiceImpl.java
@@ -401,12 +401,20 @@ goodsGroupPurchaseInfoVO.setYears(String.valueOf(byId.getYears().getYear())); goodsGroupPurchaseInfoVO.setCoverPic(byId.getCoverPic()); goodsGroupPurchaseInfoVO.setPrice(byId.getPrice()); goodsGroupPurchaseInfoVO.setShareTitle(one.getShareTitle()); if (StringUtils.isNotBlank(one.getShareTitle())) { goodsGroupPurchaseInfoVO.setShareTitle(one.getShareTitle()); } else { goodsGroupPurchaseInfoVO.setShareTitle(byId.getSkuName()); } if (StringUtils.isNotBlank(one.getSharePic())) { goodsGroupPurchaseInfoVO.setSharePic(one.getSharePic()); } else { goodsGroupPurchaseInfoVO.setSharePic(byId.getCoverPic()); } goodsGroupPurchaseInfoVO.setGroupStatus(one.getGroupStatus()); goodsGroupPurchaseInfoVO.setStartStatus(one.getStartStatus()); goodsGroupPurchaseInfoVO.setStartTime(one.getStartTime()); goodsGroupPurchaseInfoVO.setEndTime(one.getEndTime()); goodsGroupPurchaseInfoVO.setSharePic(one.getSharePic()); goodsGroupPurchaseInfoVO.setGroupPurchasePrice(one.getGroupPurchasePrice()); goodsGroupPurchaseInfoVO.setGroupSize(one.getGroupSize()); goodsGroupPurchaseInfoVO.setLimitNumber(one.getLimitNumber()); ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsSeckillServiceImpl.java
@@ -476,6 +476,16 @@ homeGoodsSeckillInfoVO.setCoverPic(data6.getCoverPic()); homeGoodsSeckillInfoVO.setAlbum(data6.getAlbum()); homeGoodsSeckillInfoVO.setShareTitle(byId.getShareTitle()); if (StringUtils.isNotBlank(byId.getShareTitle())) { homeGoodsSeckillInfoVO.setShareTitle(byId.getShareTitle()); } else { homeGoodsSeckillInfoVO.setShareTitle(data6.getSkuName()); } if (StringUtils.isNotBlank(byId.getSharePic())) { homeGoodsSeckillInfoVO.setSharePic(byId.getSharePic()); } else { homeGoodsSeckillInfoVO.setSharePic(data6.getCoverPic()); } homeGoodsSeckillInfoVO.setSeckillPrice(byId.getSeckillPrice()); homeGoodsSeckillInfoVO.setDescription(data6.getDescription()); homeGoodsSeckillInfoVO.setDetail(data6.getDetail()); @@ -512,4 +522,12 @@ return homeGoodsSeckillInfoVO; } /** * 结束异常的秒杀 */ @Override public void updSeckillStatus() { baseMapper.updSeckillStatus(); } } ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsSkuServiceImpl.java
@@ -476,9 +476,17 @@ homeGoodsSkuInfoVO.setDescription(byId.getDescription()); homeGoodsSkuInfoVO.setStock(byId.getStock()); homeGoodsSkuInfoVO.setDetail(byId.getDetail()); homeGoodsSkuInfoVO.setShareTitle(byId.getShareTitle()); homeGoodsSkuInfoVO.setSharePic(byId.getSharePic()); if (StringUtils.isBlank(byId.getShareTitle())) { homeGoodsSkuInfoVO.setShareTitle(byId.getSkuName()); } else { homeGoodsSkuInfoVO.setShareTitle(byId.getShareTitle()); } if (StringUtils.isBlank(byId.getSharePic())) { homeGoodsSkuInfoVO.setSharePic(byId.getCoverPic()); } else { homeGoodsSkuInfoVO.setSharePic(byId.getSharePic()); } LambdaQueryWrapper<GoodsGroupPurchase> queryWrapper1 =new LambdaQueryWrapper<>(); queryWrapper1.eq(GoodsGroupPurchase::getListingStatus, ListingStatusEnum.ON_SHELVES) ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/task/GoodsScheduler.java
@@ -49,4 +49,11 @@ asyncMethodService.groupPurchaseScheduleTask(groupPurchaseList); } } // 每天凌晨执行 @Scheduled(cron = "0 0 0 * * ?") private void timingTaskEnd() { log.info(">>>>>>>>>>>>>>>>>>>>结束异常秒杀任务<<<<<<<<<<<<<<<<<<<<"); goodsSeckillService.updSeckillStatus(); } } ruoyi-modules/ruoyi-goods/src/main/resources/bootstrap.yml
@@ -17,13 +17,14 @@ nacos: discovery: # 服务注册地址 server-addr: 127.0.0.1:8858 server-addr: 127.0.0.1:8848 service: ${spring.application.name} group: DEFAULT_GROUP namespace: 689e0f09-d102-460c-ac5c-5ea50a3174be ip: 192.168.110.188 config: # 配置中心地址 server-addr: 127.0.0.1:8858 server-addr: 127.0.0.1:8848 namespace: 689e0f09-d102-460c-ac5c-5ea50a3174be group: DEFAULT_GROUP name: ${spring.application.name} ruoyi-modules/ruoyi-goods/src/main/resources/mapper/goods/GoodsSeckillMapper.xml
@@ -13,6 +13,7 @@ </if> </where> </update> <select id="getGoodsSeckillPage" resultType="com.ruoyi.goods.controller.management.vo.GoodsSeckillVO"> SELECT @@ -39,4 +40,11 @@ </where> ORDER BY gs.create_time DESC </select> <update id="updSeckillStatus"> UPDATE t_goods_seckill SET start_status = 2 WHERE del_flag = 0 AND start_status != 2 AND end_time < CURTIME() </update> </mapper> ruoyi-modules/ruoyi-member/pom.xml
@@ -125,18 +125,6 @@ <version>4.39.95.ALL</version> </dependency> <dependency> <groupId>cn.afterturn</groupId> <artifactId>easypoi-spring-boot-starter</artifactId> <version>4.0.0</version> <exclusions> <exclusion> <artifactId>guava</artifactId> <groupId>com.google.guava</groupId> </exclusion> </exclusions> </dependency> <!-- 分布式事务 --> <dependency> <groupId>com.ruoyi</groupId> ruoyi-modules/ruoyi-member/src/main/resources/bootstrap.yml
@@ -17,13 +17,14 @@ nacos: discovery: # 服务注册地址 server-addr: 127.0.0.1:8858 server-addr: 127.0.0.1:8848 service: ${spring.application.name} group: DEFAULT_GROUP namespace: 689e0f09-d102-460c-ac5c-5ea50a3174be ip: 192.168.110.188 config: # 配置中心地址 server-addr: 127.0.0.1:8858 server-addr: 127.0.0.1:8848 namespace: 689e0f09-d102-460c-ac5c-5ea50a3174be group: DEFAULT_GROUP name: ${spring.application.name} ruoyi-modules/ruoyi-order/pom.xml
@@ -154,18 +154,6 @@ <version>1.1.9</version> </dependency> <dependency> <groupId>cn.afterturn</groupId> <artifactId>easypoi-spring-boot-starter</artifactId> <version>4.0.0</version> <exclusions> <exclusion> <artifactId>guava</artifactId> <groupId>com.google.guava</groupId> </exclusion> </exclusions> </dependency> <!-- 分布式事务 --> <dependency> <groupId>com.ruoyi</groupId> ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/management/MgtBusinessDataController.java
@@ -7,6 +7,7 @@ import com.ruoyi.order.service.impl.MgtBusinessDataService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import javax.servlet.http.HttpServletResponse; import lombok.RequiredArgsConstructor; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.GetMapping; @@ -50,4 +51,17 @@ public R<MgtOrderStaticsChartVO> getChart() { return R.ok(mgtBusinessDataService.getChart()); } /** * 业务数据导出 * * @param query * @param response */ @ApiOperation("导出业务数据统计") @PostMapping("/export") public void exportBusinessData(@Validated @RequestBody MgtOrderStaticsQuery query, HttpServletResponse response) { mgtBusinessDataService.exportBusinessData(query, response); } } ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/management/vo/MgtOrderStaticsVO.java
@@ -1,5 +1,6 @@ package com.ruoyi.order.controller.management.vo; import com.alibaba.excel.annotation.ExcelProperty; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import java.io.Serializable; @@ -16,44 +17,58 @@ private static final long serialVersionUID = -6511810306263817540L; @ApiModelProperty("商城订单统计-订单总数") @ExcelProperty("商城订单统计-订单总数") private Long mallOrderTotalCount; @ApiModelProperty("商城订单统计-商城订单") @ExcelProperty("商城订单统计-商城订单") private Long mallOrderCount; @ApiModelProperty("商城订单统计-秒杀订单") @ExcelProperty("商城订单统计-秒杀订单") private Long seckillOrderCount; @ApiModelProperty("商城订单统计-团购订单") @ExcelProperty("商城订单统计-团购订单") private Long groupPurchaseOrderCount; @ApiModelProperty("商城订单统计-订单总金额") @ExcelProperty("商城订单统计-订单总金额") private BigDecimal mallOrderTotalAmount; @ApiModelProperty("商城订单统计-商城总金额") @ExcelProperty("商城订单统计-商城总金额") private BigDecimal mallTotalAmount; @ApiModelProperty("商城订单统计-秒杀总金额") @ExcelProperty("商城订单统计-秒杀总金额") private BigDecimal seckillTotalAmount; @ApiModelProperty("商城订单统计-团购总金额") @ExcelProperty("商城订单统计-团购总金额") private BigDecimal groupPurchaseTotalAmount; @ApiModelProperty("拍卖订单统计-订单总数") @ExcelProperty("拍卖订单统计-订单总数") private Long auctionOrderTotalCount; @ApiModelProperty("拍卖订单统计-拍卖商品订单") @ExcelProperty("拍卖订单统计-拍卖商品订单") private Long auctionGoodsOrderCount; @ApiModelProperty("拍卖订单统计-拍卖场订单") @ExcelProperty("拍卖订单统计-拍卖场订单") private Long auctionSalesroomOrderCount; @ApiModelProperty("拍卖订单统计-订单总金额") @ExcelProperty("拍卖订单统计-订单总金额") private BigDecimal auctionOrderTotalAmount; @ApiModelProperty("拍卖订单统计-拍卖商品总金额") @ExcelProperty("拍卖订单统计-拍卖商品总金额") private BigDecimal auctionGoodsTotalAmount; @ApiModelProperty("拍卖订单统计-拍卖场总金额") @ExcelProperty("拍卖订单统计-拍卖场总金额") private BigDecimal auctionSalesroomTotalAmount; } ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/MgtBusinessDataService.java
@@ -1,5 +1,7 @@ package com.ruoyi.order.service.impl; import com.alibaba.excel.EasyExcel; import com.google.common.collect.Lists; import com.ruoyi.common.core.enums.AuctionOrderTypeEnum; import com.ruoyi.common.core.enums.OrderFromEnum; import com.ruoyi.common.core.enums.OrderTypeEnum; @@ -15,6 +17,7 @@ import com.ruoyi.order.service.IOrderService; import com.ruoyi.system.api.domain.Order; import java.math.BigDecimal; import java.net.URLEncoder; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; @@ -29,6 +32,7 @@ import java.util.concurrent.Executors; import java.util.stream.Collectors; import java.util.stream.Stream; import javax.servlet.http.HttpServletResponse; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.jetbrains.annotations.NotNull; @@ -57,94 +61,99 @@ LocalDateTime startTime = timeByTimeType.get(0); LocalDateTime endTime = timeByTimeType.get(1); List<Order> orderList = orderService.getStaticsOrderList(startTime, endTime); if (orderList.isEmpty()) { throw new ServiceException("暂无数据"); } MgtOrderStaticsVO mgtOrderStaticsVO = new MgtOrderStaticsVO(); /* ***************************************商城订单统计*************************************** */ // 商城订单统计-订单总数 long mallOrderTotalCount = orderList.stream() .filter(order -> !order.getOrderFrom().equals(OrderFromEnum.AUCTION_ORDERS)) .count(); // 商城订单统计-商城订单 long mallOrderCount = orderList.stream() .filter(order -> order.getOrderFrom().equals(OrderFromEnum.COMMODITY_ORDER)) .count(); // 商城订单统计-秒杀订单 long seckillOrderCount = orderList.stream() .filter(order -> order.getOrderFrom().equals(OrderFromEnum.SNAP_ORDERS)) .count(); // 商城订单统计-团购订单 long groupPurchaseOrderCount = orderList.stream() .filter(order -> order.getOrderFrom().equals(OrderFromEnum.GROUP_PURCHASE_ORDERS)) .count(); // 商城订单统计-订单总金额 BigDecimal mallOrderTotalAmount = orderList.stream() .filter(order -> !order.getOrderFrom().equals(OrderFromEnum.AUCTION_ORDERS)) .map(Order::getTotalAmount).reduce(BigDecimal::add).orElse(BigDecimal.ZERO); // 商城订单统计 - 商城总金额 BigDecimal mallTotalAmount = orderList.stream() .filter(order -> order.getOrderFrom().equals(OrderFromEnum.COMMODITY_ORDER)) .map(Order::getTotalAmount).reduce(BigDecimal::add).orElse(BigDecimal.ZERO); // 商城订单统计-秒杀总金额 BigDecimal seckillTotalAmount = orderList.stream() .filter(order -> order.getOrderFrom().equals(OrderFromEnum.SNAP_ORDERS)) .map(Order::getTotalAmount).reduce(BigDecimal::add).orElse(BigDecimal.ZERO); if (CollUtils.isNotEmpty(orderList)) { /* ***************************************商城订单统计*************************************** */ // 商城订单统计-订单总数 long mallOrderTotalCount = orderList.stream() .filter(order -> !order.getOrderFrom().equals(OrderFromEnum.AUCTION_ORDERS)) .count(); // 商城订单统计-商城订单 long mallOrderCount = orderList.stream() .filter(order -> order.getOrderFrom().equals(OrderFromEnum.COMMODITY_ORDER)) .count(); // 商城订单统计-秒杀订单 long seckillOrderCount = orderList.stream() .filter(order -> order.getOrderFrom().equals(OrderFromEnum.SNAP_ORDERS)) .count(); // 商城订单统计-团购订单 long groupPurchaseOrderCount = orderList.stream() .filter(order -> order.getOrderFrom() .equals(OrderFromEnum.GROUP_PURCHASE_ORDERS)) .count(); // 商城订单统计-订单总金额 BigDecimal mallOrderTotalAmount = orderList.stream() .filter(order -> !order.getOrderFrom().equals(OrderFromEnum.AUCTION_ORDERS)) .map(Order::getTotalAmount).reduce(BigDecimal::add).orElse(BigDecimal.ZERO); // 商城订单统计 - 商城总金额 BigDecimal mallTotalAmount = orderList.stream() .filter(order -> order.getOrderFrom().equals(OrderFromEnum.COMMODITY_ORDER)) .map(Order::getTotalAmount).reduce(BigDecimal::add).orElse(BigDecimal.ZERO); // 商城订单统计-秒杀总金额 BigDecimal seckillTotalAmount = orderList.stream() .filter(order -> order.getOrderFrom().equals(OrderFromEnum.SNAP_ORDERS)) .map(Order::getTotalAmount).reduce(BigDecimal::add).orElse(BigDecimal.ZERO); // 商城订单统计-团购总金额 BigDecimal groupPurchaseTotalAmount = orderList.stream() .filter(order -> order.getOrderFrom().equals(OrderFromEnum.GROUP_PURCHASE_ORDERS)) .map(Order::getTotalAmount).reduce(BigDecimal::add).orElse(BigDecimal.ZERO); // 商城订单统计-团购总金额 BigDecimal groupPurchaseTotalAmount = orderList.stream() .filter(order -> order.getOrderFrom() .equals(OrderFromEnum.GROUP_PURCHASE_ORDERS)) .map(Order::getTotalAmount).reduce(BigDecimal::add).orElse(BigDecimal.ZERO); mgtOrderStaticsVO.setMallOrderTotalCount(mallOrderTotalCount); mgtOrderStaticsVO.setMallOrderCount(mallOrderCount); mgtOrderStaticsVO.setSeckillOrderCount(seckillOrderCount); mgtOrderStaticsVO.setGroupPurchaseOrderCount(groupPurchaseOrderCount); mgtOrderStaticsVO.setMallOrderTotalCount(mallOrderTotalCount); mgtOrderStaticsVO.setMallOrderCount(mallOrderCount); mgtOrderStaticsVO.setSeckillOrderCount(seckillOrderCount); mgtOrderStaticsVO.setGroupPurchaseOrderCount(groupPurchaseOrderCount); mgtOrderStaticsVO.setMallOrderTotalAmount(mallOrderTotalAmount); mgtOrderStaticsVO.setMallTotalAmount(mallTotalAmount); mgtOrderStaticsVO.setSeckillTotalAmount(seckillTotalAmount); mgtOrderStaticsVO.setGroupPurchaseTotalAmount(groupPurchaseTotalAmount); mgtOrderStaticsVO.setMallOrderTotalAmount(mallOrderTotalAmount); mgtOrderStaticsVO.setMallTotalAmount(mallTotalAmount); mgtOrderStaticsVO.setSeckillTotalAmount(seckillTotalAmount); mgtOrderStaticsVO.setGroupPurchaseTotalAmount(groupPurchaseTotalAmount); /* ***************************************拍卖订单统计*************************************** */ // 拍卖订单统计-订单总数 long auctionOrderTotalCount = orderList.stream() .filter(order -> order.getOrderFrom().equals(OrderFromEnum.AUCTION_ORDERS)) .count(); // 拍卖订单统计-拍卖商品订单 long auctionGoodsOrderCount = orderList.stream() .filter(order -> order.getOrderFrom().equals(OrderFromEnum.AUCTION_ORDERS) && order.getAuctionOrderType().equals(AuctionOrderTypeEnum.REGULAR_ITEMS)) .count(); // 拍卖订单统计-拍卖场订单 long auctionSalesroomOrderCount = orderList.stream() .filter(order -> order.getOrderFrom().equals(OrderFromEnum.AUCTION_ORDERS) && order.getAuctionOrderType().equals(AuctionOrderTypeEnum.AUCTION_ITEMS)) .count(); // 拍卖订单统计-订单总金额 BigDecimal auctionOrderTotalAmount = orderList.stream() .filter(order -> order.getOrderFrom().equals(OrderFromEnum.AUCTION_ORDERS)) .map(Order::getTotalAmount) .reduce(BigDecimal::add).orElse(BigDecimal.ZERO); // 拍卖订单统计-拍卖商品总金额 BigDecimal auctionGoodsTotalAmount = orderList.stream() .filter(order -> order.getOrderFrom().equals(OrderFromEnum.AUCTION_ORDERS) && order.getAuctionOrderType().equals(AuctionOrderTypeEnum.REGULAR_ITEMS) ) .map(Order::getTotalAmount).reduce(BigDecimal::add).orElse(BigDecimal.ZERO); // 拍卖订单统计-拍卖场总金额 BigDecimal auctionSalesroomTotalAmount = orderList.stream() .filter(order -> order.getOrderFrom().equals(OrderFromEnum.AUCTION_ORDERS) && order.getAuctionOrderType().equals(AuctionOrderTypeEnum.AUCTION_ITEMS)) .map(Order::getTotalAmount).reduce(BigDecimal::add).orElse(BigDecimal.ZERO); /* ***************************************拍卖订单统计*************************************** */ // 拍卖订单统计-订单总数 long auctionOrderTotalCount = orderList.stream() .filter(order -> order.getOrderFrom().equals(OrderFromEnum.AUCTION_ORDERS)) .count(); // 拍卖订单统计-拍卖商品订单 long auctionGoodsOrderCount = orderList.stream() .filter(order -> order.getOrderFrom().equals(OrderFromEnum.AUCTION_ORDERS) && order.getAuctionOrderType() .equals(AuctionOrderTypeEnum.REGULAR_ITEMS)) .count(); // 拍卖订单统计-拍卖场订单 long auctionSalesroomOrderCount = orderList.stream() .filter(order -> order.getOrderFrom().equals(OrderFromEnum.AUCTION_ORDERS) && order.getAuctionOrderType() .equals(AuctionOrderTypeEnum.AUCTION_ITEMS)) .count(); // 拍卖订单统计-订单总金额 BigDecimal auctionOrderTotalAmount = orderList.stream() .filter(order -> order.getOrderFrom().equals(OrderFromEnum.AUCTION_ORDERS)) .map(Order::getTotalAmount) .reduce(BigDecimal::add).orElse(BigDecimal.ZERO); // 拍卖订单统计-拍卖商品总金额 BigDecimal auctionGoodsTotalAmount = orderList.stream() .filter(order -> order.getOrderFrom().equals(OrderFromEnum.AUCTION_ORDERS) && order.getAuctionOrderType() .equals(AuctionOrderTypeEnum.REGULAR_ITEMS) ) .map(Order::getTotalAmount).reduce(BigDecimal::add).orElse(BigDecimal.ZERO); // 拍卖订单统计-拍卖场总金额 BigDecimal auctionSalesroomTotalAmount = orderList.stream() .filter(order -> order.getOrderFrom().equals(OrderFromEnum.AUCTION_ORDERS) && order.getAuctionOrderType() .equals(AuctionOrderTypeEnum.AUCTION_ITEMS)) .map(Order::getTotalAmount).reduce(BigDecimal::add).orElse(BigDecimal.ZERO); mgtOrderStaticsVO.setAuctionOrderTotalCount(auctionOrderTotalCount); mgtOrderStaticsVO.setAuctionGoodsOrderCount(auctionGoodsOrderCount); mgtOrderStaticsVO.setAuctionSalesroomOrderCount(auctionSalesroomOrderCount); mgtOrderStaticsVO.setAuctionOrderTotalCount(auctionOrderTotalCount); mgtOrderStaticsVO.setAuctionGoodsOrderCount(auctionGoodsOrderCount); mgtOrderStaticsVO.setAuctionSalesroomOrderCount(auctionSalesroomOrderCount); mgtOrderStaticsVO.setAuctionOrderTotalAmount(auctionOrderTotalAmount); mgtOrderStaticsVO.setAuctionGoodsTotalAmount(auctionGoodsTotalAmount); mgtOrderStaticsVO.setAuctionSalesroomTotalAmount(auctionSalesroomTotalAmount); mgtOrderStaticsVO.setAuctionOrderTotalAmount(auctionOrderTotalAmount); mgtOrderStaticsVO.setAuctionGoodsTotalAmount(auctionGoodsTotalAmount); mgtOrderStaticsVO.setAuctionSalesroomTotalAmount(auctionSalesroomTotalAmount); } return mgtOrderStaticsVO; } @@ -310,4 +319,29 @@ .limit(numOfDaysBetween + 1) // 加1是因为包含结束日期 .collect(Collectors.toList()); } /** * 业务数据导出 * * @param query * @param response */ public void exportBusinessData(MgtOrderStaticsQuery query, HttpServletResponse response) { MgtOrderStaticsVO overview = getOverview(query); // 这里注意 有同学反应使用swagger 会导致各种问题,请直接用浏览器或者用postman response.setContentType( "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); response.setCharacterEncoding("utf-8"); // 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系 try { String fileName = URLEncoder.encode("业务数据", "UTF-8").replaceAll("\\+", "%20"); response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); EasyExcel.write(response.getOutputStream(), MgtOrderStaticsVO.class) .sheet("业务数据") .doWrite(Lists.newArrayList(overview)); } catch (Exception e) { throw new RuntimeException(e); } } } ruoyi-modules/ruoyi-order/src/main/resources/bootstrap.yml
@@ -17,13 +17,14 @@ nacos: discovery: # 服务注册地址 server-addr: 127.0.0.1:8858 server-addr: 127.0.0.1:8848 service: ${spring.application.name} group: DEFAULT_GROUP namespace: 689e0f09-d102-460c-ac5c-5ea50a3174be ip: 192.168.110.188 config: # 配置中心地址 server-addr: 127.0.0.1:8858 server-addr: 127.0.0.1:8848 namespace: 689e0f09-d102-460c-ac5c-5ea50a3174be group: DEFAULT_GROUP name: ${spring.application.name} ruoyi-modules/ruoyi-promotion/src/main/resources/bootstrap.yml
@@ -17,14 +17,14 @@ nacos: discovery: # 服务注册地址 server-addr: 127.0.0.1:8858 server-addr: 127.0.0.1:8848 service: ${spring.application.name} group: DEFAULT_GROUP namespace: 689e0f09-d102-460c-ac5c-5ea50a3174be ip: 192.168.110.188 config: # 配置中心地址 server-addr: 127.0.0.1:8858 server-addr: 127.0.0.1:8848 namespace: 689e0f09-d102-460c-ac5c-5ea50a3174be group: DEFAULT_GROUP name: ${spring.application.name} ruoyi-modules/ruoyi-seata-demo/pom.xml
@@ -97,17 +97,6 @@ <version>1.2.47</version> </dependency> <dependency> <groupId>cn.afterturn</groupId> <artifactId>easypoi-spring-boot-starter</artifactId> <version>4.0.0</version> <exclusions> <exclusion> <artifactId>guava</artifactId> <groupId>com.google.guava</groupId> </exclusion> </exclusions> </dependency> <!-- 分布式事务 --> <dependency> <groupId>com.ruoyi</groupId> ruoyi-modules/ruoyi-seata-demo/src/main/resources/bootstrap.yml
@@ -17,13 +17,13 @@ nacos: discovery: # 服务注册地址 server-addr: 192.168.110.188:8858 server-addr: 192.168.110.188:8848 service: ${spring.application.name} group: DEFAULT_GROUP namespace: 689e0f09-d102-460c-ac5c-5ea50a3174be config: # 配置中心地址 server-addr: 192.168.110.188:8858 server-addr: 192.168.110.188:8848 namespace: 689e0f09-d102-460c-ac5c-5ea50a3174be group: DEFAULT_GROUP name: ${spring.application.name} ruoyi-modules/ruoyi-system/src/main/resources/bootstrap.yml
@@ -17,13 +17,13 @@ nacos: discovery: # 服务注册地址 server-addr: 192.168.110.188:8858 server-addr: 192.168.110.188:8848 service: ${spring.application.name} group: DEFAULT_GROUP namespace: 689e0f09-d102-460c-ac5c-5ea50a3174be config: # 配置中心地址 server-addr: 192.168.110.188:8858 server-addr: 192.168.110.188:8848 namespace: 689e0f09-d102-460c-ac5c-5ea50a3174be group: DEFAULT_GROUP name: ${spring.application.name}