From d748680ee3f8204524772e43eda15075242fe87a Mon Sep 17 00:00:00 2001 From: Tankaikai Date: Wed, 2 Apr 2025 13:04:05 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E5=8F=B0=E6=A1=8C=E7=BB=9F=E8=AE=A1?= =?UTF-8?q?=E6=8A=A5=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/TableSummaryController.java | 9 ++-- .../order/service/TableSummaryService.java | 3 ++ .../czg/order/vo/TableSummaryExportVo.java | 29 +++++++--- .../mapper/ShopTableOrderStatisticMapper.java | 3 ++ .../service/impl/TableSummaryServiceImpl.java | 53 +++++++++++++++++++ .../mapper/ShopTableOrderStatisticMapper.xml | 48 +++++++++++++++++ 6 files changed, 136 insertions(+), 9 deletions(-) diff --git a/cash-api/order-server/src/main/java/com/czg/controller/admin/TableSummaryController.java b/cash-api/order-server/src/main/java/com/czg/controller/admin/TableSummaryController.java index c697956e..cfb0c782 100644 --- a/cash-api/order-server/src/main/java/com/czg/controller/admin/TableSummaryController.java +++ b/cash-api/order-server/src/main/java/com/czg/controller/admin/TableSummaryController.java @@ -1,8 +1,11 @@ package com.czg.controller.admin; +import com.czg.handel.ExcelMergeHandler; +import com.czg.handel.TableRefundCellHandel; import com.czg.log.annotation.OperationLog; import com.czg.order.param.TableSummaryParam; import com.czg.order.service.TableSummaryService; +import com.czg.order.vo.TableSummaryExportVo; import com.czg.order.vo.TableSummaryInfoVo; import com.czg.resp.CzgResult; import com.czg.sa.StpKit; @@ -42,14 +45,14 @@ public class TableSummaryController { /** * 导出 */ - @ResponseExcel(name = "台桌统计") + @ResponseExcel(name = "台桌统计", writeHandler = {ExcelMergeHandler.class, TableRefundCellHandel.class}) @GetMapping("export") @OperationLog("导出") //@SaAdminCheckPermission("tableSummary:export") - public List summaryExport(TableSummaryParam param) { + public List summaryExport(TableSummaryParam param) { Long shopId = StpKit.USER.getShopId(0L); param.setShopId(shopId); - return tableSummaryService.summaryList(param); + return tableSummaryService.summaryExportList(param); } } diff --git a/cash-common/cash-common-service/src/main/java/com/czg/order/service/TableSummaryService.java b/cash-common/cash-common-service/src/main/java/com/czg/order/service/TableSummaryService.java index 002bfa67..0296178a 100644 --- a/cash-common/cash-common-service/src/main/java/com/czg/order/service/TableSummaryService.java +++ b/cash-common/cash-common-service/src/main/java/com/czg/order/service/TableSummaryService.java @@ -1,6 +1,7 @@ package com.czg.order.service; import com.czg.order.param.TableSummaryParam; +import com.czg.order.vo.TableSummaryExportVo; import com.czg.order.vo.TableSummaryInfoVo; import java.util.List; @@ -15,5 +16,7 @@ public interface TableSummaryService { List summaryList(TableSummaryParam param); + List summaryExportList(TableSummaryParam param); + } diff --git a/cash-common/cash-common-service/src/main/java/com/czg/order/vo/TableSummaryExportVo.java b/cash-common/cash-common-service/src/main/java/com/czg/order/vo/TableSummaryExportVo.java index 79418572..83e1eaf9 100644 --- a/cash-common/cash-common-service/src/main/java/com/czg/order/vo/TableSummaryExportVo.java +++ b/cash-common/cash-common-service/src/main/java/com/czg/order/vo/TableSummaryExportVo.java @@ -18,7 +18,6 @@ import java.math.BigDecimal; * @since 2025-03-07 16:22 */ @Data -@ColumnWidth(30) public class TableSummaryExportVo implements Serializable { @Serial @@ -31,70 +30,88 @@ public class TableSummaryExportVo implements Serializable { @ExcelIgnore @JSONField(serialize = false) private Long lineNum; + /** + * 台桌+日期 + */ + @ExcelIgnore + private String tableConcatDate; /** * 台桌 */ @ExcelProperty("台桌") + @ColumnWidth(10) private String tableName; /** * 日期 */ @ExcelProperty("日期") - private String date; + @ColumnWidth(10) + private String createDate; /** * 商品分类 */ @ExcelProperty("商品分类") + @ColumnWidth(15) private String categoryName; /** * 商品名称 */ @ExcelProperty("商品名称") + @ColumnWidth(30) private String productName; /** * 单位 */ @ExcelProperty("单位") + @ColumnWidth(8) private String unitName; /** * 商品规格 */ @ExcelProperty("商品规格") - private String specName; + @ColumnWidth(20) + private String skuName; /** * 销量 */ @ExcelProperty("销量") - private BigDecimal salesNum; + @ColumnWidth(10) + private BigDecimal num; /** * 单价 */ @ExcelProperty("单价") - private BigDecimal price; + @ColumnWidth(10) + private BigDecimal unitPrice; /** * 金额 */ @ExcelProperty("金额") + @ColumnWidth(10) private BigDecimal amount; /** * 销售额 */ @ExcelProperty("销售额") + @ColumnWidth(10) private BigDecimal salesAmount; /** * 总销售额 */ @ExcelProperty("总销售额") + @ColumnWidth(15) private BigDecimal totalSalesAmount; /** * 退单量 */ @ExcelProperty("退单量") - private Integer refundNum; + @ColumnWidth(10) + private BigDecimal refundNum; /** * 退单额 */ @ExcelProperty("退单额") + @ColumnWidth(10) private BigDecimal refundAmount; } diff --git a/cash-service/order-service/src/main/java/com/czg/service/order/mapper/ShopTableOrderStatisticMapper.java b/cash-service/order-service/src/main/java/com/czg/service/order/mapper/ShopTableOrderStatisticMapper.java index cb9d665c..14f16ccd 100644 --- a/cash-service/order-service/src/main/java/com/czg/service/order/mapper/ShopTableOrderStatisticMapper.java +++ b/cash-service/order-service/src/main/java/com/czg/service/order/mapper/ShopTableOrderStatisticMapper.java @@ -2,6 +2,7 @@ package com.czg.service.order.mapper; import com.czg.order.entity.ShopTableOrderStatistic; import com.czg.order.param.TableSummaryParam; +import com.czg.order.vo.TableSummaryExportVo; import com.czg.order.vo.TableSummaryInfoVo; import com.mybatisflex.core.BaseMapper; @@ -23,4 +24,6 @@ public interface ShopTableOrderStatisticMapper extends BaseMapper findSummaryList(TableSummaryParam param); List findSummaryList2(TableSummaryParam param); + + List findSummaryExportList(TableSummaryParam param); } diff --git a/cash-service/order-service/src/main/java/com/czg/service/order/service/impl/TableSummaryServiceImpl.java b/cash-service/order-service/src/main/java/com/czg/service/order/service/impl/TableSummaryServiceImpl.java index 6a6c8fdd..9d0ed855 100644 --- a/cash-service/order-service/src/main/java/com/czg/service/order/service/impl/TableSummaryServiceImpl.java +++ b/cash-service/order-service/src/main/java/com/czg/service/order/service/impl/TableSummaryServiceImpl.java @@ -1,13 +1,20 @@ package com.czg.service.order.service.impl; +import cn.hutool.core.collection.CollUtil; import com.czg.order.param.TableSummaryParam; import com.czg.order.service.TableSummaryService; +import com.czg.order.vo.TableSummaryExportVo; import com.czg.order.vo.TableSummaryInfoVo; import com.czg.service.order.mapper.ShopTableOrderStatisticMapper; import jakarta.annotation.Resource; import org.springframework.stereotype.Service; +import java.math.BigDecimal; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; /** * 台桌统计Service实现类 @@ -26,4 +33,50 @@ public class TableSummaryServiceImpl implements TableSummaryService { return shopTableOrderStatisticMapper.findSummaryList2(param); } + @Override + public List summaryExportList(TableSummaryParam param) { + if (param.getBeginDate() == null && param.getEndDate() == null) { + // 获取当前日期 + LocalDate currentDate = LocalDate.now(); + // 计算 30 天前的日期 + LocalDate startDate = currentDate.minusDays(30); + + // 定义日期格式 + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + + // 格式化日期 + String formattedStartDate = startDate.format(formatter); + String formattedEndDate = currentDate.format(formatter); + + param.setBeginDate(formattedStartDate + " 00:00:00"); + param.setEndDate(formattedEndDate + " 23:59:59"); + } + List list = shopTableOrderStatisticMapper.findSummaryExportList(param); + if (CollUtil.isEmpty(list)) { + return List.of(); + } + Map totalSalesAmountMap = list.stream().collect( + Collectors.groupingBy( + TableSummaryExportVo::getTableName, Collectors.reducing(BigDecimal.ZERO, + TableSummaryExportVo::getAmount, + BigDecimal::add) + ) + ); + Map salesAmountMap = list.stream().collect( + Collectors.groupingBy( + TableSummaryExportVo::getTableConcatDate, Collectors.reducing(BigDecimal.ZERO, + TableSummaryExportVo::getAmount, + BigDecimal::add) + ) + ); + list.parallelStream().forEach(data -> { + data.setSalesAmount(salesAmountMap.get(data.getTableConcatDate())); + data.setTotalSalesAmount(totalSalesAmountMap.get(data.getTableName())); + }); + // 追加个空行用于处理表格样式 + TableSummaryExportVo nullVo = new TableSummaryExportVo(); + list.add(nullVo); + return list; + } + } diff --git a/cash-service/order-service/src/main/resources/mapper/ShopTableOrderStatisticMapper.xml b/cash-service/order-service/src/main/resources/mapper/ShopTableOrderStatisticMapper.xml index 93efb660..1c30389a 100644 --- a/cash-service/order-service/src/main/resources/mapper/ShopTableOrderStatisticMapper.xml +++ b/cash-service/order-service/src/main/resources/mapper/ShopTableOrderStatisticMapper.xml @@ -63,6 +63,8 @@ LEFT JOIN tb_shop_table_area t3 ON t2.area_id = t3.id where t1.shop_id = #{shopId} and t1.table_code is not null + and t2.table_code is not null + and t2.table_code != '' and t2.name is not null and t1.paid_time is not null @@ -74,4 +76,50 @@ GROUP BY t1.table_code order by count( t1.id ) desc,sum( t1.pay_amount ) desc + From 84b7ac9e395658d72b2bbd3ff9195f3390bf7e95 Mon Sep 17 00:00:00 2001 From: Tankaikai Date: Wed, 2 Apr 2025 13:25:56 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E5=8F=B0=E6=A1=8C=E7=BB=9F=E8=AE=A1?= =?UTF-8?q?=E6=8A=A5=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/application.yml | 4 +- .../com/czg/controller/NotifyController.java | 31 ++-- .../com/czg/handel/ExcelMergeHandler.java | 151 ++++++++++++++++++ .../com/czg/handel/TableRefundCellHandel.java | 55 +++++++ .../main/java/com/czg/task/StatisticTask.java | 4 +- .../src/main/resources/application.yml | 2 + .../main/java/com/czg/ProductApplication.java | 1 + .../src/main/resources/application.yml | 7 +- .../test/java/com/czg/service/DemoTest.java | 23 +++ .../src/main/resources/application.yml | 2 + .../java/com/czg/config/SaTokenConfigure.java | 10 +- .../impl/ShopOrderStatisticServiceImpl.java | 62 ++++--- 12 files changed, 314 insertions(+), 38 deletions(-) create mode 100644 cash-api/order-server/src/main/java/com/czg/handel/ExcelMergeHandler.java create mode 100644 cash-api/order-server/src/main/java/com/czg/handel/TableRefundCellHandel.java diff --git a/cash-api/account-server/src/main/resources/application.yml b/cash-api/account-server/src/main/resources/application.yml index cad80f8d..403ca595 100644 --- a/cash-api/account-server/src/main/resources/application.yml +++ b/cash-api/account-server/src/main/resources/application.yml @@ -1,7 +1,7 @@ server: port: 9100 -# servlet: -# context-path: /admin + servlet: + context-path: /account spring: application: diff --git a/cash-api/order-server/src/main/java/com/czg/controller/NotifyController.java b/cash-api/order-server/src/main/java/com/czg/controller/NotifyController.java index ab2857f5..1420a12d 100644 --- a/cash-api/order-server/src/main/java/com/czg/controller/NotifyController.java +++ b/cash-api/order-server/src/main/java/com/czg/controller/NotifyController.java @@ -2,17 +2,17 @@ package com.czg.controller; import com.alibaba.fastjson2.JSONObject; import com.czg.CzgPayUtils; +import com.czg.account.service.MemberPointsService; import com.czg.entity.CzgBaseRespParams; import com.czg.mq.PrintMqListener; import com.czg.order.service.OrderInfoService; +import com.czg.order.service.ShopOrderStatisticService; import com.czg.task.StatisticTask; import com.czg.utils.AssertUtil; import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RestController; +import org.apache.dubbo.config.annotation.DubboReference; +import org.springframework.web.bind.annotation.*; /** * @author ww @@ -30,18 +30,26 @@ public class NotifyController { @Resource private StatisticTask statisticTask; + @DubboReference + private MemberPointsService pointsService; - @RequestMapping("/payCallBack") - public String notifyCallBack(@RequestBody CzgBaseRespParams respParams){ - JSONObject czg = CzgPayUtils.getCzg(respParams); - AssertUtil.isNull(czg, "支付回调数据为空"); - log.info("支付回调数据为:{}", czg); - orderInfoService.payCallBackOrder(czg.getString("mchOrderNo"), czg); + @Resource + private ShopOrderStatisticService shopOrderStatisticService; + + + @GetMapping("/payCallBack") + public String notifyCallBack() { + + shopOrderStatisticService.statistic(); + //JSONObject czg = CzgPayUtils.getCzg(respParams); + //AssertUtil.isNull(czg, "支付回调数据为空"); + //log.info("支付回调数据为:{}", czg); + //orderInfoService.payCallBackOrder(czg.getString("mchOrderNo"), czg); return SUCCESS; } @RequestMapping("/refundCallBack") - public String refundCallBack(@RequestBody CzgBaseRespParams respParams){ + public String refundCallBack(@RequestBody CzgBaseRespParams respParams) { JSONObject czg = CzgPayUtils.getCzg(respParams); AssertUtil.isNull(czg, "退款回调数据为空"); log.info("退款回调数据为:{}", czg); @@ -51,6 +59,7 @@ public class NotifyController { @Resource private PrintMqListener printMqListener; + @RequestMapping("/test") public void test(@RequestParam String id) { printMqListener.orderPrint(id); diff --git a/cash-api/order-server/src/main/java/com/czg/handel/ExcelMergeHandler.java b/cash-api/order-server/src/main/java/com/czg/handel/ExcelMergeHandler.java new file mode 100644 index 00000000..a865665e --- /dev/null +++ b/cash-api/order-server/src/main/java/com/czg/handel/ExcelMergeHandler.java @@ -0,0 +1,151 @@ +package com.czg.handel; + +import cn.idev.excel.metadata.Head; +import cn.idev.excel.metadata.data.WriteCellData; +import cn.idev.excel.write.handler.CellWriteHandler; +import cn.idev.excel.write.metadata.holder.WriteSheetHolder; +import cn.idev.excel.write.metadata.holder.WriteTableHolder; +import org.apache.poi.ss.usermodel.*; +import org.apache.poi.ss.util.CellRangeAddress; + +import java.util.List; + + +/** + * @author tankaikai + * @since 2025-04-01 18:41 + */ +public class ExcelMergeHandler implements CellWriteHandler { + // 要合并的列索引数组 + private int[] mergeColumnIndex = {0, 1, 2, 9, 10}; + // 合并开始的行索引 + private int mergeRowIndex = 1; + + public ExcelMergeHandler() { + + } + + /** + * 构造函数 + * + * @param mergeRowIndex 合并开始的行索引 + * @param mergeColumnIndex 要合并的列索引数组 + */ + public ExcelMergeHandler(int mergeRowIndex, int[] mergeColumnIndex) { + this.mergeRowIndex = mergeRowIndex; + this.mergeColumnIndex = mergeColumnIndex; + } + + @Override + public void afterCellDispose(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, List> cellDataList, Cell cell, Head head, Integer relativeRowIndex, Boolean isHead) { + // 当前行索引 + int curRowIndex = cell.getRowIndex(); + // 当前列索引 + int curColIndex = cell.getColumnIndex(); + + // 如果当前行大于合并开始行且当前列在需要合并的列中 + if (curRowIndex > mergeRowIndex && isMergeColumn(curColIndex)) { + // 进行合并操作 + mergeWithPrevRow(writeSheetHolder, cell, curRowIndex, curColIndex); + } + } + + /** + * 检查当前列是否在需要合并的列中 + * + * @param curColIndex 当前列索引 + * @return 如果是需要合并的列返回true,否则返回false + */ + private boolean isMergeColumn(int curColIndex) { + for (int columnIndex : mergeColumnIndex) { + if (curColIndex == columnIndex) { + return true; + } + } + return false; + } + + /** + * 当前单元格向上合并 + * + * @param writeSheetHolder 当前工作表持有者 + * @param cell 当前单元格 + * @param curRowIndex 当前行索引 + * @param curColIndex 当前列索引 + */ + private void mergeWithPrevRow(WriteSheetHolder writeSheetHolder, Cell cell, int curRowIndex, int curColIndex) { + // 获取当前单元格的数据 + Object curData = getCellData(cell); + // 获取前一个单元格的数据 + Cell preCell = cell.getSheet().getRow(curRowIndex - 1).getCell(curColIndex); + Object preData = getCellData(preCell); + + // 判断当前单元格和前一个单元格的数据以及主键是否相同 + if (curData.equals(preData) && isSamePrimaryKey(cell, curRowIndex)) { + // 获取工作表 + Sheet sheet = writeSheetHolder.getSheet(); + // 合并单元格 + mergeCells(sheet, curRowIndex, curColIndex); + CellStyle style = preCell.getCellStyle(); + // 设置水平居中 + style.setAlignment(HorizontalAlignment.CENTER); + // 设置垂直居中 + style.setVerticalAlignment(VerticalAlignment.CENTER); + preCell.setCellStyle(style); + } + } + + /** + * 获取单元格的数据 + * + * @param cell 单元格 + * @return 单元格数据 + */ + private Object getCellData(Cell cell) { + return cell.getCellType() == CellType.STRING ? cell.getStringCellValue() : cell.getNumericCellValue(); + } + + /** + * 判断当前单元格和前一个单元格的主键是否相同 + * + * @param cell 当前单元格 + * @param curRowIndex 当前行索引 + * @return 如果主键相同返回true,否则返回false + */ + private boolean isSamePrimaryKey(Cell cell, int curRowIndex) { + String currentPrimaryKey = cell.getRow().getCell(0).getStringCellValue(); + String previousPrimaryKey = cell.getSheet().getRow(curRowIndex - 1).getCell(0).getStringCellValue(); + return currentPrimaryKey.equals(previousPrimaryKey); + } + + /** + * 合并单元格 + * + * @param sheet 工作表 + * @param curRowIndex 当前行索引 + * @param curColIndex 当前列索引 + */ + private void mergeCells(Sheet sheet, int curRowIndex, int curColIndex) { + // 获取已合并的区域 + List mergeRegions = sheet.getMergedRegions(); + boolean isMerged = false; + + // 检查前一个单元格是否已经被合并 + for (int i = 0; i < mergeRegions.size() && !isMerged; i++) { + CellRangeAddress cellRangeAddr = mergeRegions.get(i); + if (cellRangeAddr.isInRange(curRowIndex - 1, curColIndex)) { + sheet.removeMergedRegion(i); + cellRangeAddr.setLastRow(curRowIndex); + sheet.addMergedRegion(cellRangeAddr); + isMerged = true; + } + } + + // 如果前一个单元格未被合并,则新增合并区域 + if (!isMerged) { + CellRangeAddress cellRangeAddress = new CellRangeAddress(curRowIndex - 1, curRowIndex, curColIndex, curColIndex); + sheet.addMergedRegion(cellRangeAddress); + } + } +} + diff --git a/cash-api/order-server/src/main/java/com/czg/handel/TableRefundCellHandel.java b/cash-api/order-server/src/main/java/com/czg/handel/TableRefundCellHandel.java new file mode 100644 index 00000000..04e17fb7 --- /dev/null +++ b/cash-api/order-server/src/main/java/com/czg/handel/TableRefundCellHandel.java @@ -0,0 +1,55 @@ +package com.czg.handel; + +import cn.hutool.core.util.ArrayUtil; +import cn.idev.excel.metadata.Head; +import cn.idev.excel.metadata.data.WriteCellData; +import cn.idev.excel.write.handler.CellWriteHandler; +import cn.idev.excel.write.metadata.holder.WriteSheetHolder; +import cn.idev.excel.write.metadata.holder.WriteTableHolder; +import org.apache.poi.ss.usermodel.*; + +import java.util.List; + +/** + * 台桌统计退单单元格处理器 + * + * @author tankaikai + * @since 2025-04-02 09:50 + */ +public class TableRefundCellHandel implements CellWriteHandler { + // 要处理的列索引数组 + private int[] yellowColumnIndex = {11, 12}; + + public TableRefundCellHandel() { + + } + + @Override + public void afterCellDispose(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, List> cellDataList, Cell cell, Head head, Integer relativeRowIndex, Boolean isHead) { + // 当前行索引 + int curRowIndex = cell.getRowIndex(); + // 当前列索引 + int curColIndex = cell.getColumnIndex(); + if (curRowIndex == 0) { + return; + } + // 如果是指定要处理的列,则要进行加黄操作 + if (ArrayUtil.contains(yellowColumnIndex, curColIndex)) { + Cell preCell = cell.getSheet().getRow(curRowIndex - 1).getCell(curColIndex); + if (preCell.getCellType() == CellType.NUMERIC) { + if (preCell.getNumericCellValue() < 0) { + //System.out.println("设置黄色背景:" + curRowIndex + "行," + curColIndex + "列" + preCell.getNumericCellValue()); + CellStyle style = preCell.getSheet().getWorkbook().createCellStyle(); + style.cloneStyleFrom(preCell.getCellStyle()); + style.setFillPattern(FillPatternType.SOLID_FOREGROUND); + style.setFillForegroundColor(IndexedColors.YELLOW.getIndex()); + // 设置水平居中 + style.setAlignment(HorizontalAlignment.CENTER); + // 设置垂直居中 + style.setVerticalAlignment(VerticalAlignment.CENTER); + preCell.setCellStyle(style); + } + } + } + } +} diff --git a/cash-api/order-server/src/main/java/com/czg/task/StatisticTask.java b/cash-api/order-server/src/main/java/com/czg/task/StatisticTask.java index e387fe68..fef8334c 100644 --- a/cash-api/order-server/src/main/java/com/czg/task/StatisticTask.java +++ b/cash-api/order-server/src/main/java/com/czg/task/StatisticTask.java @@ -27,8 +27,8 @@ public class StatisticTask { long start = System.currentTimeMillis(); log.info("定时任务执行,开始统计数据"); shopOrderStatisticService.statistic(); - shopProdStatisticService.statistic(); - shopTableOrderStatisticService.statistic(); + //shopProdStatisticService.statistic(); + //shopTableOrderStatisticService.statistic(); log.info("定时任务执行完毕,耗时:{}ms", start - System.currentTimeMillis()); } } diff --git a/cash-api/order-server/src/main/resources/application.yml b/cash-api/order-server/src/main/resources/application.yml index aad8910e..516f3d32 100644 --- a/cash-api/order-server/src/main/resources/application.yml +++ b/cash-api/order-server/src/main/resources/application.yml @@ -1,5 +1,7 @@ server: port: 9200 + servlet: + context-path: /order spring: application: diff --git a/cash-api/product-server/src/main/java/com/czg/ProductApplication.java b/cash-api/product-server/src/main/java/com/czg/ProductApplication.java index 2a249f20..ad8c9c62 100644 --- a/cash-api/product-server/src/main/java/com/czg/ProductApplication.java +++ b/cash-api/product-server/src/main/java/com/czg/ProductApplication.java @@ -18,6 +18,7 @@ import org.springframework.transaction.annotation.EnableTransactionManagement; public class ProductApplication { public static void main(String[] args) { + SpringApplication.run(ProductApplication.class, args); } diff --git a/cash-api/product-server/src/main/resources/application.yml b/cash-api/product-server/src/main/resources/application.yml index 5adfc6bc..f6c8d284 100644 --- a/cash-api/product-server/src/main/resources/application.yml +++ b/cash-api/product-server/src/main/resources/application.yml @@ -1,5 +1,7 @@ server: port: 9300 + servlet: + context-path: /product spring: application: @@ -14,6 +16,7 @@ wx: operationMsgTmpId: wFdoUG-dUT7bDRHq8bMJD9CF5TjyH9x_uJQgQByZqHg warnMsgTmpId: C08OUr80x6wGmUN1zpFhSQ3Sv7VF5vksdZigiEx2pD0 + logging: config: classpath:logback.xml @@ -28,4 +31,6 @@ pagehelper: helper-dialect: mysql support-methods-arguments: true - +dubbo: + consumer: + check: false diff --git a/cash-api/product-server/src/test/java/com/czg/service/DemoTest.java b/cash-api/product-server/src/test/java/com/czg/service/DemoTest.java index f1e74b96..556f823c 100644 --- a/cash-api/product-server/src/test/java/com/czg/service/DemoTest.java +++ b/cash-api/product-server/src/test/java/com/czg/service/DemoTest.java @@ -18,4 +18,27 @@ public class DemoTest { System.out.println(password); } + + public static void main(String[] args) { + //System.out.println(StrUtil.sub("下架商品:情人节固",0,20)); + /*Map data = new HashMap() {{ + put("thing19", new HashMap() {{ + put("value", "张三"); + }}); + put("thing8", new HashMap() {{ + put("value", "财务票据"); + }}); + put("time21", new HashMap() {{ + put("value", DateUtil.format(DateUtil.date(), "yyyy-MM-dd HH:mm:ss")); + }}); + }}; + + JSONObject req = new JSONObject(); + req.put("template_id", "wFdoUG-dUT7bDRHq8bMJD9CF5TjyH9x_uJQgQByZqHg"); + req.put("touser", "ojC-S6iKBL7sHUb-E0UYq-Q1J4AA"); + req.put("data", data); + String accessToken = "90_zBsyBkkK9cYx3GpbydWV97yPr-2WkRYqc2ESQKLGbr_IxqWgb3t9MZO-9jFNUlJoQCYyKyR1-tHOh_e5GKYPWdSY9wGSzEvC_uNM_MaHHbG1IiI0A0nzDrJmDNgEXBbAJAVOS"; + String post = HttpUtil.post("https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=".concat(accessToken), req.toString()); + System.out.println(post);*/ + } } diff --git a/cash-api/system-server/src/main/resources/application.yml b/cash-api/system-server/src/main/resources/application.yml index 414d20b9..cb8965a5 100644 --- a/cash-api/system-server/src/main/resources/application.yml +++ b/cash-api/system-server/src/main/resources/application.yml @@ -1,5 +1,7 @@ server: port: 9400 + servlet: + context-path: /system spring: application: diff --git a/cash-common/cash-common-sa-token/src/main/java/com/czg/config/SaTokenConfigure.java b/cash-common/cash-common-sa-token/src/main/java/com/czg/config/SaTokenConfigure.java index c07aac7f..cf58f951 100644 --- a/cash-common/cash-common-sa-token/src/main/java/com/czg/config/SaTokenConfigure.java +++ b/cash-common/cash-common-sa-token/src/main/java/com/czg/config/SaTokenConfigure.java @@ -61,15 +61,17 @@ public class SaTokenConfigure implements WebMvcConfigurer { SaRouter.match("/user/**").notMatch("/user/login", "/user/test", "/user/geo/**", "/user/home/**", "/user/home/**", "/user/dict/**", "/user/openId") .notMatch("/pay/**") - .notMatch("/notify/**") + .notMatch("/order/notify/**") + .notMatch("/user/product/**") .check(r -> MyStpLogic.CLIENT_LOGIC.checkLogin()) .setHit(true) // .match("/**") .notMatch("/user/**") .notMatch("/pay/**") - .notMatch("/notify/**") - .notMatch("/admin/auth/**") - .notMatch("/admin/shopMsgPush/subscribe/**") + .notMatch("/order/notify/**") + .notMatch("/account/admin/auth/**") + .notMatch("/user/product/**") + .notMatch("/account/admin/shopMsgPush/subscribe/**") .check(r -> MyStpLogic.ADMIN_LOGIC.checkLogin()); })).addPathPatterns("/**"); diff --git a/cash-service/order-service/src/main/java/com/czg/service/order/service/impl/ShopOrderStatisticServiceImpl.java b/cash-service/order-service/src/main/java/com/czg/service/order/service/impl/ShopOrderStatisticServiceImpl.java index 7d59aed8..9be41ded 100644 --- a/cash-service/order-service/src/main/java/com/czg/service/order/service/impl/ShopOrderStatisticServiceImpl.java +++ b/cash-service/order-service/src/main/java/com/czg/service/order/service/impl/ShopOrderStatisticServiceImpl.java @@ -1,8 +1,7 @@ package com.czg.service.order.service.impl; import cn.hutool.core.collection.CollUtil; -import cn.hutool.core.date.DateTime; -import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.NumberUtil; import com.czg.order.entity.ShopOrderStatistic; import com.czg.order.param.DataSummaryTradeParam; import com.czg.order.service.DataSummaryService; @@ -12,9 +11,11 @@ import com.mybatisflex.spring.service.impl.ServiceImpl; import jakarta.annotation.Resource; import org.springframework.stereotype.Service; +import java.math.BigDecimal; import java.time.LocalDate; import java.time.LocalDateTime; import java.util.List; +import java.util.stream.Stream; /** * 服务层实现。 @@ -30,27 +31,52 @@ public class ShopOrderStatisticServiceImpl extends ServiceImpl shopIdList = dataSummaryService.getShopIdList(); if (CollUtil.isEmpty(shopIdList)) { return; } - shopIdList.parallelStream().forEach(shopId -> { - DataSummaryTradeParam param = new DataSummaryTradeParam(); - param.setShopId(shopId); - param.setBeginDate(startOfDay.toStringDefaultTimeZone()); - param.setEndDate(endOfDay.toStringDefaultTimeZone()); - ShopOrderStatistic statistic = dataSummaryService.getTradeData(param); - statistic.setShopId(shopId); - statistic.setCreateDay(LocalDate.now()); - statistic.setUpdateTime(LocalDateTime.now()); - saveOrUpdate(statistic); + + LocalDate startDate = LocalDate.of(2024, 3, 12); + LocalDate endDate = LocalDate.of(2025, 3, 25); + + // 生成日期流 + Stream dateStream = startDate.datesUntil(endDate); + + // 遍历日期流 + dateStream.forEach(date -> { + String cur = date.toString(); + String a = cur + " 00:00:00"; + String b = cur + " 23:59:59"; + shopIdList.parallelStream().forEach(shopId -> { + DataSummaryTradeParam param = new DataSummaryTradeParam(); + param.setShopId(shopId); + param.setBeginDate(a); + param.setEndDate(b); + ShopOrderStatistic statistic = dataSummaryService.getTradeData(param); + if (NumberUtil.isGreater(statistic.getSaleAmount(), BigDecimal.ZERO)) { + statistic.setShopId(shopId); + statistic.setCreateDay(LocalDate.now()); + statistic.setUpdateTime(LocalDateTime.now()); + saveOrUpdate(statistic); + } + }); }); + } + public static void main(String[] args) { + LocalDate startDate = LocalDate.of(2024, 3, 12); + LocalDate endDate = LocalDate.of(2025, 3, 25); + + // 生成日期流 + Stream dateStream = startDate.datesUntil(endDate); + + // 遍历日期流 + dateStream.forEach(date -> { + String cur = date.toString(); + String a = cur + "00:00:00"; + String b = cur + "23:59:59"; + System.out.println(date.toString()); + }); + } } From 7986f023bac3f3c536240345ae540d255778d52f Mon Sep 17 00:00:00 2001 From: wangw <1594593906@qq.com> Date: Wed, 2 Apr 2025 13:29:44 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E9=80=9A=E8=BF=87=E5=8F=B0=E6=A1=8C?= =?UTF-8?q?=E5=90=8D=E7=A7=B0=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/czg/service/order/service/impl/OrderInfoServiceImpl.java | 1 + 1 file changed, 1 insertion(+) diff --git a/cash-service/order-service/src/main/java/com/czg/service/order/service/impl/OrderInfoServiceImpl.java b/cash-service/order-service/src/main/java/com/czg/service/order/service/impl/OrderInfoServiceImpl.java index 7605ca9a..6069f13a 100644 --- a/cash-service/order-service/src/main/java/com/czg/service/order/service/impl/OrderInfoServiceImpl.java +++ b/cash-service/order-service/src/main/java/com/czg/service/order/service/impl/OrderInfoServiceImpl.java @@ -122,6 +122,7 @@ public class OrderInfoServiceImpl extends ServiceImpl